]> git.sur5r.net Git - freertos/commitdiff
Add SAM4L demo.
authorrichardbarry <richardbarry@1d2547de-c912-0410-9cb9-b8ca96c0e9e2>
Sun, 7 Apr 2013 18:49:53 +0000 (18:49 +0000)
committerrichardbarry <richardbarry@1d2547de-c912-0410-9cb9-b8ca96c0e9e2>
Sun, 7 Apr 2013 18:49:53 +0000 (18:49 +0000)
git-svn-id: https://svn.code.sf.net/p/freertos/code/trunk@1850 1d2547de-c912-0410-9cb9-b8ca96c0e9e2

71 files changed:
FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/FreeRTOS_Demo.atsln [new file with mode: 0644]
FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/FreeRTOS_Demo.cproj [new file with mode: 0644]
FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/jlink.config [new file with mode: 0644]
FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/ParTest.c [new file with mode: 0644]
FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/SAM4L_low_power_tick_management.c [new file with mode: 0644]
FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/asf.h [new file with mode: 0644]
FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/asf/common/boards/board.h [new file with mode: 0644]
FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/asf/common/services/clock/dfll.h [new file with mode: 0644]
FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/asf/common/services/clock/genclk.h [new file with mode: 0644]
FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/asf/common/services/clock/osc.h [new file with mode: 0644]
FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/asf/common/services/clock/pll.h [new file with mode: 0644]
FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/asf/common/services/clock/sam4l/dfll.c [new file with mode: 0644]
FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/asf/common/services/clock/sam4l/dfll.h [new file with mode: 0644]
FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/asf/common/services/clock/sam4l/genclk.h [new file with mode: 0644]
FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/asf/common/services/clock/sam4l/osc.c [new file with mode: 0644]
FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/asf/common/services/clock/sam4l/osc.h [new file with mode: 0644]
FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/asf/common/services/clock/sam4l/pll.c [new file with mode: 0644]
FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/asf/common/services/clock/sam4l/pll.h [new file with mode: 0644]
FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/asf/common/services/clock/sam4l/sysclk.c [new file with mode: 0644]
FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/asf/common/services/clock/sam4l/sysclk.h [new file with mode: 0644]
FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/asf/common/services/clock/sysclk.h [new file with mode: 0644]
FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/asf/common/services/ioport/ioport.h [new file with mode: 0644]
FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/asf/common/services/ioport/sam/ioport_gpio.h [new file with mode: 0644]
FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/asf/common/services/sleepmgr/sam4l/sleepmgr.c [new file with mode: 0644]
FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/asf/common/services/sleepmgr/sam4l/sleepmgr.h [new file with mode: 0644]
FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/asf/common/services/sleepmgr/sleepmgr.h [new file with mode: 0644]
FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/asf/common/utils/interrupt.h [new file with mode: 0644]
FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/asf/common/utils/interrupt/interrupt_sam_nvic.c [new file with mode: 0644]
FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/asf/common/utils/interrupt/interrupt_sam_nvic.h [new file with mode: 0644]
FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/asf/common/utils/parts.h [new file with mode: 0644]
FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/asf/sam/boards/sam4l_ek/init.c [new file with mode: 0644]
FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/asf/sam/boards/sam4l_ek/sam4l_ek.h [new file with mode: 0644]
FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/asf/sam/drivers/ast/ast.c [new file with mode: 0644]
FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/asf/sam/drivers/ast/ast.h [new file with mode: 0644]
FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/asf/sam/drivers/bpm/bpm.c [new file with mode: 0644]
FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/asf/sam/drivers/bpm/bpm.h [new file with mode: 0644]
FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/asf/sam/drivers/bpm/sleep.h [new file with mode: 0644]
FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/asf/sam/drivers/flashcalw/flashcalw.c [new file with mode: 0644]
FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/asf/sam/drivers/flashcalw/flashcalw.h [new file with mode: 0644]
FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/asf/sam/utils/cmsis/sam4l/include/sam4l.h [new file with mode: 0644]
FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/asf/sam/utils/cmsis/sam4l/include/sam4l_patch_asf.h [new file with mode: 0644]
FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/asf/sam/utils/cmsis/sam4l/source/templates/exceptions.c [new file with mode: 0644]
FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/asf/sam/utils/cmsis/sam4l/source/templates/exceptions.h [new file with mode: 0644]
FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/asf/sam/utils/cmsis/sam4l/source/templates/gcc/startup_sam4l.c [new file with mode: 0644]
FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/asf/sam/utils/cmsis/sam4l/source/templates/system_sam4l.h [new file with mode: 0644]
FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/asf/sam/utils/compiler.h [new file with mode: 0644]
FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/asf/sam/utils/header_files/io.h [new file with mode: 0644]
FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/asf/sam/utils/linker_scripts/sam4l/sam4l4/gcc/flash.ld [new file with mode: 0644]
FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/asf/sam/utils/make/Makefile.in [new file with mode: 0644]
FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/asf/sam/utils/preprocessor/mrepeat.h [new file with mode: 0644]
FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/asf/sam/utils/preprocessor/preprocessor.h [new file with mode: 0644]
FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/asf/sam/utils/preprocessor/stringz.h [new file with mode: 0644]
FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/asf/sam/utils/preprocessor/tpaste.h [new file with mode: 0644]
FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/asf/sam/utils/status_codes.h [new file with mode: 0644]
FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/asf/sam/utils/syscalls/gcc/syscalls.c [new file with mode: 0644]
FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/asf/thirdparty/CMSIS/CMSIS END USER LICENCE AGREEMENT.pdf [new file with mode: 0644]
FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/asf/thirdparty/CMSIS/Include/arm_math.h [new file with mode: 0644]
FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/asf/thirdparty/CMSIS/Include/core_cm4.h [new file with mode: 0644]
FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/asf/thirdparty/CMSIS/Include/core_cm4_simd.h [new file with mode: 0644]
FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/asf/thirdparty/CMSIS/Include/core_cmFunc.h [new file with mode: 0644]
FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/asf/thirdparty/CMSIS/Include/core_cmInstr.h [new file with mode: 0644]
FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/asf/thirdparty/CMSIS/README.txt [new file with mode: 0644]
FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/config/FreeRTOSConfig.h [new file with mode: 0644]
FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/config/conf_ast.h [new file with mode: 0644]
FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/config/conf_board.h [new file with mode: 0644]
FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/config/conf_clock.h [new file with mode: 0644]
FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/config/conf_example.h [new file with mode: 0644]
FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/config/conf_sleepmgr.h [new file with mode: 0644]
FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/main.c [new file with mode: 0644]
FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/main_full.c [new file with mode: 0644]
FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/main_low_power.c [new file with mode: 0644]

diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/FreeRTOS_Demo.atsln b/FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/FreeRTOS_Demo.atsln
new file mode 100644 (file)
index 0000000..4419bd0
--- /dev/null
@@ -0,0 +1,20 @@
+\r
+Microsoft Visual Studio Solution File, Format Version 11.00\r
+# Atmel Studio Solution File, Format Version 11.00\r
+Project("{54F91283-7BC4-4236-8FF9-10F437C3AD48}") = "FreeRTOS_Demo", ".\FreeRTOS_Demo.cproj", "{DFC77570-BC67-4EE7-8143-C34E75167169}"\r
+EndProject\r
+Global\r
+       GlobalSection(SolutionConfigurationPlatforms) = preSolution\r
+               Debug|ARM = Debug|ARM\r
+               Release|ARM = Release|ARM\r
+       EndGlobalSection\r
+       GlobalSection(ProjectConfigurationPlatforms) = postSolution\r
+               {DFC77570-BC67-4EE7-8143-C34E75167169}.Debug|ARM.ActiveCfg = Debug|ARM\r
+               {DFC77570-BC67-4EE7-8143-C34E75167169}.Debug|ARM.Build.0 = Debug|ARM\r
+               {DFC77570-BC67-4EE7-8143-C34E75167169}.Release|ARM.ActiveCfg = Release|ARM\r
+               {DFC77570-BC67-4EE7-8143-C34E75167169}.Release|ARM.Build.0 = Release|ARM\r
+       EndGlobalSection\r
+       GlobalSection(SolutionProperties) = preSolution\r
+               HideSolutionNode = FALSE\r
+       EndGlobalSection\r
+EndGlobal\r
diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/FreeRTOS_Demo.cproj b/FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/FreeRTOS_Demo.cproj
new file mode 100644 (file)
index 0000000..c553fcd
--- /dev/null
@@ -0,0 +1,868 @@
+<?xml version="1.0" encoding="utf-8"?>\r
+<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
+  <PropertyGroup>\r
+    <SchemaVersion>2.0</SchemaVersion>\r
+    <ProjectVersion>6.0</ProjectVersion>\r
+    <ToolchainName>com.Atmel.ARMGCC</ToolchainName>\r
+    <ProjectGuid>{dfc77570-bc67-4ee7-8143-c34e75167169}</ProjectGuid>\r
+    <avrdevice>ATSAM4LC4C</avrdevice>\r
+    <avrdeviceseries>sam4l</avrdeviceseries>\r
+    <OutputType>Executable</OutputType>\r
+    <Language>C</Language>\r
+    <OutputFileName>$(MSBuildProjectName)</OutputFileName>\r
+    <OutputFileExtension>.elf</OutputFileExtension>\r
+    <OutputDirectory>$(MSBuildProjectDirectory)\$(Configuration)</OutputDirectory>\r
+    <AssemblyName>FreeRTOS_Demo</AssemblyName>\r
+    <Name>FreeRTOS_Demo</Name>\r
+    <RootNamespace>FreeRTOS_Demo</RootNamespace>\r
+    <ToolchainFlavour>Native</ToolchainFlavour>\r
+    <KeepTimersRunning>true</KeepTimersRunning>\r
+    <OverrideVtor>false</OverrideVtor>\r
+    <OverrideVtorValue />\r
+    <eraseonlaunchrule>1</eraseonlaunchrule>\r
+    <AsfVersion>3.5.1</AsfVersion>\r
+    <AsfFrameworkConfig>\r
+      <framework-data>\r
+        <options>\r
+          <option id="common.boards" value="Add" config="" content-id="Atmel.ASF" />\r
+          <option id="common.services.basic.clock" value="Add" config="" content-id="Atmel.ASF" />\r
+          <option id="common.services.ioport" value="Add" config="" content-id="Atmel.ASF" />\r
+          <option id="common.services.basic.sleepmgr" value="Add" config="" content-id="Atmel.ASF" />\r
+          <option id="sam.drivers.ast" value="Add" config="" content-id="Atmel.ASF" />\r
+          <option id="sam.drivers.bpm" value="Add" config="" content-id="Atmel.ASF" />\r
+        </options>\r
+        <configurations>\r
+          <configuration key="config.compiler.armgcc.create_aux" value="no" default="no" content-id="Atmel.ASF" />\r
+          <configuration key="config.compiler.iarewarm.create_aux" value="no" default="no" content-id="Atmel.ASF" />\r
+          <configuration key="config.compiler.as5_arm.create_aux" value="no" default="no" content-id="Atmel.ASF" />\r
+        </configurations>\r
+        <files>\r
+          <file path="src/asf/common/boards/board.h" framework="" version="3.5.1" source="common/boards/board.h" changed="False" content-id="Atmel.ASF" />\r
+          <file path="src/asf/common/services/clock/dfll.h" framework="" version="3.5.1" source="common/services/clock/dfll.h" changed="False" content-id="Atmel.ASF" />\r
+          <file path="src/asf/common/services/clock/genclk.h" framework="" version="3.5.1" source="common/services/clock/genclk.h" changed="False" content-id="Atmel.ASF" />\r
+          <file path="src/asf/common/services/clock/osc.h" framework="" version="3.5.1" source="common/services/clock/osc.h" changed="False" content-id="Atmel.ASF" />\r
+          <file path="src/asf/common/services/clock/pll.h" framework="" version="3.5.1" source="common/services/clock/pll.h" changed="False" content-id="Atmel.ASF" />\r
+          <file path="src/asf/common/services/clock/sam4l/dfll.c" framework="" version="3.5.1" source="common/services/clock/sam4l/dfll.c" changed="False" content-id="Atmel.ASF" />\r
+          <file path="src/asf/common/services/clock/sam4l/dfll.h" framework="" version="3.5.1" source="common/services/clock/sam4l/dfll.h" changed="False" content-id="Atmel.ASF" />\r
+          <file path="src/asf/common/services/clock/sam4l/genclk.h" framework="" version="3.5.1" source="common/services/clock/sam4l/genclk.h" changed="False" content-id="Atmel.ASF" />\r
+          <file path="src/asf/common/services/clock/sam4l/osc.c" framework="" version="3.5.1" source="common/services/clock/sam4l/osc.c" changed="False" content-id="Atmel.ASF" />\r
+          <file path="src/asf/common/services/clock/sam4l/osc.h" framework="" version="3.5.1" source="common/services/clock/sam4l/osc.h" changed="False" content-id="Atmel.ASF" />\r
+          <file path="src/asf/common/services/clock/sam4l/pll.c" framework="" version="3.5.1" source="common/services/clock/sam4l/pll.c" changed="False" content-id="Atmel.ASF" />\r
+          <file path="src/asf/common/services/clock/sam4l/pll.h" framework="" version="3.5.1" source="common/services/clock/sam4l/pll.h" changed="False" content-id="Atmel.ASF" />\r
+          <file path="src/asf/common/services/clock/sam4l/sysclk.c" framework="" version="3.5.1" source="common/services/clock/sam4l/sysclk.c" changed="False" content-id="Atmel.ASF" />\r
+          <file path="src/asf/common/services/clock/sam4l/sysclk.h" framework="" version="3.5.1" source="common/services/clock/sam4l/sysclk.h" changed="False" content-id="Atmel.ASF" />\r
+          <file path="src/asf/common/services/clock/sysclk.h" framework="" version="3.5.1" source="common/services/clock/sysclk.h" changed="False" content-id="Atmel.ASF" />\r
+          <file path="src/asf/common/services/ioport/ioport.h" framework="" version="3.5.1" source="common/services/ioport/ioport.h" changed="False" content-id="Atmel.ASF" />\r
+          <file path="src/asf/common/services/ioport/sam/ioport_gpio.h" framework="" version="3.5.1" source="common/services/ioport/sam/ioport_gpio.h" changed="False" content-id="Atmel.ASF" />\r
+          <file path="src/asf/common/services/sleepmgr/sam4l/sleepmgr.c" framework="" version="3.5.1" source="common/services/sleepmgr/sam4l/sleepmgr.c" changed="False" content-id="Atmel.ASF" />\r
+          <file path="src/asf/common/services/sleepmgr/sam4l/sleepmgr.h" framework="" version="3.5.1" source="common/services/sleepmgr/sam4l/sleepmgr.h" changed="False" content-id="Atmel.ASF" />\r
+          <file path="src/asf/common/services/sleepmgr/sleepmgr.h" framework="" version="3.5.1" source="common/services/sleepmgr/sleepmgr.h" changed="False" content-id="Atmel.ASF" />\r
+          <file path="src/asf/common/utils/interrupt.h" framework="" version="3.5.1" source="common/utils/interrupt.h" changed="False" content-id="Atmel.ASF" />\r
+          <file path="src/asf/common/utils/interrupt/interrupt_sam_nvic.c" framework="" version="3.5.1" source="common/utils/interrupt/interrupt_sam_nvic.c" changed="False" content-id="Atmel.ASF" />\r
+          <file path="src/asf/common/utils/interrupt/interrupt_sam_nvic.h" framework="" version="3.5.1" source="common/utils/interrupt/interrupt_sam_nvic.h" changed="False" content-id="Atmel.ASF" />\r
+          <file path="src/asf/common/utils/parts.h" framework="" version="3.5.1" source="common/utils/parts.h" changed="False" content-id="Atmel.ASF" />\r
+          <file path="src/asf/sam/boards/sam4l_ek/init.c" framework="" version="3.5.1" source="sam/boards/sam4l_ek/init.c" changed="False" content-id="Atmel.ASF" />\r
+          <file path="src/asf/sam/boards/sam4l_ek/sam4l_ek.h" framework="" version="3.5.1" source="sam/boards/sam4l_ek/sam4l_ek.h" changed="False" content-id="Atmel.ASF" />\r
+          <file path="src/asf/sam/drivers/bpm/bpm.c" framework="" version="3.5.1" source="sam/drivers/bpm/bpm.c" changed="False" content-id="Atmel.ASF" />\r
+          <file path="src/asf/sam/drivers/bpm/bpm.h" framework="" version="3.5.1" source="sam/drivers/bpm/bpm.h" changed="False" content-id="Atmel.ASF" />\r
+          <file path="src/asf/sam/drivers/bpm/sleep.h" framework="" version="3.5.1" source="sam/drivers/bpm/sleep.h" changed="False" content-id="Atmel.ASF" />\r
+          <file path="src/asf/sam/drivers/flashcalw/flashcalw.c" framework="" version="3.5.1" source="sam/drivers/flashcalw/flashcalw.c" changed="False" content-id="Atmel.ASF" />\r
+          <file path="src/asf/sam/drivers/flashcalw/flashcalw.h" framework="" version="3.5.1" source="sam/drivers/flashcalw/flashcalw.h" changed="False" content-id="Atmel.ASF" />\r
+          <file path="src/lcdca_example.c" framework="" version="3.5.1" source="sam/drivers/lcdca/example/lcdca_example.c" changed="False" content-id="Atmel.ASF" />\r
+          <file path="src/config/conf_board.h" framework="" version="3.5.1" source="sam/drivers/lcdca/example/sam4lc4c_sam4l_ek/conf_board.h" changed="False" content-id="Atmel.ASF" />\r
+          <file path="src/config/conf_clock.h" framework="" version="3.5.1" source="sam/drivers/lcdca/example/sam4lc4c_sam4l_ek/conf_clock.h" changed="False" content-id="Atmel.ASF" />\r
+          <file path="src/config/conf_example.h" framework="" version="3.5.1" source="sam/drivers/lcdca/example/sam4lc4c_sam4l_ek/conf_example.h" changed="False" content-id="Atmel.ASF" />\r
+          <file path="src/config/conf_sleepmgr.h" framework="" version="3.5.1" source="sam/drivers/lcdca/example/sam4lc4c_sam4l_ek/conf_sleepmgr.h" changed="False" content-id="Atmel.ASF" />\r
+          <file path="src/asf/sam/utils/cmsis/sam4l/include/sam4l.h" framework="" version="3.5.1" source="sam/utils/cmsis/sam4l/include/sam4l.h" changed="False" content-id="Atmel.ASF" />\r
+          <file path="src/asf/sam/utils/cmsis/sam4l/include/sam4l_patch_asf.h" framework="" version="3.5.1" source="sam/utils/cmsis/sam4l/include/sam4l_patch_asf.h" changed="False" content-id="Atmel.ASF" />\r
+          <file path="src/asf/sam/utils/cmsis/sam4l/source/templates/exceptions.c" framework="" version="3.5.1" source="sam/utils/cmsis/sam4l/source/templates/exceptions.c" changed="False" content-id="Atmel.ASF" />\r
+          <file path="src/asf/sam/utils/cmsis/sam4l/source/templates/exceptions.h" framework="" version="3.5.1" source="sam/utils/cmsis/sam4l/source/templates/exceptions.h" changed="False" content-id="Atmel.ASF" />\r
+          <file path="src/asf/sam/utils/cmsis/sam4l/source/templates/gcc/startup_sam4l.c" framework="" version="3.5.1" source="sam/utils/cmsis/sam4l/source/templates/gcc/startup_sam4l.c" changed="False" content-id="Atmel.ASF" />\r
+          <file path="src/asf/sam/utils/cmsis/sam4l/source/templates/system_sam4l.h" framework="" version="3.5.1" source="sam/utils/cmsis/sam4l/source/templates/system_sam4l.h" changed="False" content-id="Atmel.ASF" />\r
+          <file path="src/asf/sam/utils/compiler.h" framework="" version="3.5.1" source="sam/utils/compiler.h" changed="False" content-id="Atmel.ASF" />\r
+          <file path="src/asf/sam/utils/header_files/io.h" framework="" version="3.5.1" source="sam/utils/header_files/io.h" changed="False" content-id="Atmel.ASF" />\r
+          <file path="src/asf/sam/utils/linker_scripts/sam4l/sam4l4/gcc/flash.ld" framework="" version="3.5.1" source="sam/utils/linker_scripts/sam4l/sam4l4/gcc/flash.ld" changed="False" content-id="Atmel.ASF" />\r
+          <file path="src/asf/sam/utils/make/Makefile.in" framework="" version="3.5.1" source="sam/utils/make/Makefile.in" changed="False" content-id="Atmel.ASF" />\r
+          <file path="src/asf/sam/utils/preprocessor/mrepeat.h" framework="" version="3.5.1" source="sam/utils/preprocessor/mrepeat.h" changed="False" content-id="Atmel.ASF" />\r
+          <file path="src/asf/sam/utils/preprocessor/preprocessor.h" framework="" version="3.5.1" source="sam/utils/preprocessor/preprocessor.h" changed="False" content-id="Atmel.ASF" />\r
+          <file path="src/asf/sam/utils/preprocessor/stringz.h" framework="" version="3.5.1" source="sam/utils/preprocessor/stringz.h" changed="False" content-id="Atmel.ASF" />\r
+          <file path="src/asf/sam/utils/preprocessor/tpaste.h" framework="" version="3.5.1" source="sam/utils/preprocessor/tpaste.h" changed="False" content-id="Atmel.ASF" />\r
+          <file path="src/asf/sam/utils/status_codes.h" framework="" version="3.5.1" source="sam/utils/status_codes.h" changed="False" content-id="Atmel.ASF" />\r
+          <file path="src/asf/sam/utils/syscalls/gcc/syscalls.c" framework="" version="3.5.1" source="sam/utils/syscalls/gcc/syscalls.c" changed="False" content-id="Atmel.ASF" />\r
+          <file path="src/asf/thirdparty/CMSIS/CMSIS END USER LICENCE AGREEMENT.pdf" framework="" version="3.5.1" source="thirdparty/CMSIS/CMSIS END USER LICENCE AGREEMENT.pdf" changed="False" content-id="Atmel.ASF" />\r
+          <file path="src/asf/thirdparty/CMSIS/Include/arm_math.h" framework="" version="3.5.1" source="thirdparty/CMSIS/Include/arm_math.h" changed="False" content-id="Atmel.ASF" />\r
+          <file path="src/asf/thirdparty/CMSIS/Include/core_cm4.h" framework="" version="3.5.1" source="thirdparty/CMSIS/Include/core_cm4.h" changed="False" content-id="Atmel.ASF" />\r
+          <file path="src/asf/thirdparty/CMSIS/Include/core_cm4_simd.h" framework="" version="3.5.1" source="thirdparty/CMSIS/Include/core_cm4_simd.h" changed="False" content-id="Atmel.ASF" />\r
+          <file path="src/asf/thirdparty/CMSIS/Include/core_cmFunc.h" framework="" version="3.5.1" source="thirdparty/CMSIS/Include/core_cmFunc.h" changed="False" content-id="Atmel.ASF" />\r
+          <file path="src/asf/thirdparty/CMSIS/Include/core_cmInstr.h" framework="" version="3.5.1" source="thirdparty/CMSIS/Include/core_cmInstr.h" changed="False" content-id="Atmel.ASF" />\r
+          <file path="src/asf/thirdparty/CMSIS/Lib/GCC/libarm_cortexM4l_math.a" framework="" version="3.5.1" source="thirdparty/CMSIS/Lib/GCC/libarm_cortexM4l_math.a" changed="False" content-id="Atmel.ASF" />\r
+          <file path="src/asf/thirdparty/CMSIS/README.txt" framework="" version="3.5.1" source="thirdparty/CMSIS/README.txt" changed="False" content-id="Atmel.ASF" />\r
+          <file path="src/asf/thirdparty/CMSIS/license.txt" framework="" version="3.5.1" source="thirdparty/CMSIS/license.txt" changed="False" content-id="Atmel.ASF" />\r
+          <file path="src/asf/thirdparty/freertos/freertos-7.3.0/source/timers.c" framework="" version="" source="thirdparty\freertos\freertos-7.3.0\source\timers.c" changed="False" content-id="Atmel.ASF" />\r
+          <file path="src/asf/thirdparty/freertos/freertos-7.3.0/source/tasks.c" framework="" version="" source="thirdparty\freertos\freertos-7.3.0\source\tasks.c" changed="False" content-id="Atmel.ASF" />\r
+          <file path="src/asf/thirdparty/freertos/freertos-7.3.0/source/queue.c" framework="" version="" source="thirdparty\freertos\freertos-7.3.0\source\queue.c" changed="False" content-id="Atmel.ASF" />\r
+          <file path="src/asf/thirdparty/freertos/freertos-7.3.0/source/list.c" framework="" version="" source="thirdparty\freertos\freertos-7.3.0\source\list.c" changed="False" content-id="Atmel.ASF" />\r
+          <file path="src/asf/thirdparty/freertos/freertos-7.3.0/source/FreeRTOS_CLI.c" framework="" version="" source="thirdparty\freertos\freertos-7.3.0\source\FreeRTOS_CLI.c" changed="False" content-id="Atmel.ASF" />\r
+          <file path="src/asf/thirdparty/freertos/freertos-7.3.0/source/portable/memmang/heap_4.c" framework="" version="" source="thirdparty\freertos\freertos-7.3.0\source\portable\memmang\heap_4.c" changed="False" content-id="Atmel.ASF" />\r
+          <file path="src/asf/thirdparty/freertos/freertos-7.3.0/source/portable/gcc/arm_cm3/port.c" framework="" version="" source="thirdparty\freertos\freertos-7.3.0\source\portable\gcc\arm_cm3\port.c" changed="False" content-id="Atmel.ASF" />\r
+          <file path="src/asf/thirdparty/freertos/freertos-7.3.0/readme.txt" framework="" version="" source="thirdparty\freertos\freertos-7.3.0\readme.txt" changed="False" content-id="Atmel.ASF" />\r
+          <file path="src/asf/thirdparty/freertos/freertos-7.3.0/ATMEL-disclaimer.txt" framework="" version="" source="thirdparty\freertos\freertos-7.3.0\ATMEL-disclaimer.txt" changed="False" content-id="Atmel.ASF" />\r
+          <file path="src/asf/thirdparty/freertos/freertos-7.3.0/source/include/mpu_wrappers.h" framework="" version="" source="thirdparty\freertos\freertos-7.3.0\source\include\mpu_wrappers.h" changed="False" content-id="Atmel.ASF" />\r
+          <file path="src/asf/thirdparty/freertos/freertos-7.3.0/source/include/semphr.h" framework="" version="" source="thirdparty\freertos\freertos-7.3.0\source\include\semphr.h" changed="False" content-id="Atmel.ASF" />\r
+          <file path="src/asf/thirdparty/freertos/freertos-7.3.0/source/include/FreeRTOS.h" framework="" version="" source="thirdparty\freertos\freertos-7.3.0\source\include\FreeRTOS.h" changed="False" content-id="Atmel.ASF" />\r
+          <file path="src/asf/thirdparty/freertos/freertos-7.3.0/source/include/portable.h" framework="" version="" source="thirdparty\freertos\freertos-7.3.0\source\include\portable.h" changed="False" content-id="Atmel.ASF" />\r
+          <file path="src/asf/thirdparty/freertos/freertos-7.3.0/source/include/queue.h" framework="" version="" source="thirdparty\freertos\freertos-7.3.0\source\include\queue.h" changed="False" content-id="Atmel.ASF" />\r
+          <file path="src/asf/thirdparty/freertos/freertos-7.3.0/source/include/list.h" framework="" version="" source="thirdparty\freertos\freertos-7.3.0\source\include\list.h" changed="False" content-id="Atmel.ASF" />\r
+          <file path="src/asf/thirdparty/freertos/freertos-7.3.0/source/include/timers.h" framework="" version="" source="thirdparty\freertos\freertos-7.3.0\source\include\timers.h" changed="False" content-id="Atmel.ASF" />\r
+          <file path="src/asf/thirdparty/freertos/freertos-7.3.0/source/include/StackMacros.h" framework="" version="" source="thirdparty\freertos\freertos-7.3.0\source\include\StackMacros.h" changed="False" content-id="Atmel.ASF" />\r
+          <file path="src/asf/thirdparty/freertos/freertos-7.3.0/source/include/projdefs.h" framework="" version="" source="thirdparty\freertos\freertos-7.3.0\source\include\projdefs.h" changed="False" content-id="Atmel.ASF" />\r
+          <file path="src/asf/thirdparty/freertos/freertos-7.3.0/source/include/task.h" framework="" version="" source="thirdparty\freertos\freertos-7.3.0\source\include\task.h" changed="False" content-id="Atmel.ASF" />\r
+          <file path="src/asf/thirdparty/freertos/freertos-7.3.0/source/portable/gcc/arm_cm3/portmacro.h" framework="" version="" source="thirdparty\freertos\freertos-7.3.0\source\portable\gcc\arm_cm3\portmacro.h" changed="False" content-id="Atmel.ASF" />\r
+          <file path="src/asf/thirdparty/freertos/freertos-7.3.0/source/include/FreeRTOS_CLI.h" framework="" version="" source="thirdparty\freertos\freertos-7.3.0\source\include\FreeRTOS_CLI.h" changed="False" content-id="Atmel.ASF" />\r
+          <file path="src/asf/thirdparty/freertos/freertos-7.3.0/source/include/croutine.h" framework="" version="" source="thirdparty\freertos\freertos-7.3.0\source\include\croutine.h" changed="False" content-id="Atmel.ASF" />\r
+          <file path="src/asf/sam/drivers/ast/ast.c" framework="" version="" source="sam\drivers\ast\ast.c" changed="False" content-id="Atmel.ASF" />\r
+          <file path="src/asf/sam/drivers/ast/ast.h" framework="" version="" source="sam\drivers\ast\ast.h" changed="False" content-id="Atmel.ASF" />\r
+          <file path="src/config/conf_ast.h" framework="" version="" source="sam\drivers\ast\module_config\conf_ast.h" changed="False" content-id="Atmel.ASF" />\r
+        </files>\r
+        <documentation help="http://asf.atmel.com/docs/3.5.1/sam.drivers.lcdca.example.sam4l_ek/html/index.html" />\r
+      </framework-data>\r
+    </AsfFrameworkConfig>\r
+    <avrtoolinterface>SWD</avrtoolinterface>\r
+    <avrtool>com.atmel.avrdbg.tool.samice</avrtool>\r
+    <com_atmel_avrdbg_tool_samice>\r
+      <ToolType>com.atmel.avrdbg.tool.samice</ToolType>\r
+      <ToolName>J-Link-OB-SAM3U128</ToolName>\r
+      <ToolNumber>000480008423</ToolNumber>\r
+      <KeepTimersRunning>true</KeepTimersRunning>\r
+      <OverrideVtor>false</OverrideVtor>\r
+      <OverrideVtorValue>\r
+      </OverrideVtorValue>\r
+      <Channel>\r
+        <host>127.0.0.1</host>\r
+        <port>4788</port>\r
+        <ssl>False</ssl>\r
+      </Channel>\r
+      <ToolOptions>\r
+        <InterfaceName>SWD</InterfaceName>\r
+        <InterfaceProperties>\r
+          <JtagDbgClock>4000000</JtagDbgClock>\r
+          <JtagProgClock>1000000</JtagProgClock>\r
+          <IspClock>150000</IspClock>\r
+          <JtagInChain>false</JtagInChain>\r
+          <JtagEnableExtResetOnStartSession>false</JtagEnableExtResetOnStartSession>\r
+          <JtagDevicesBefore>0</JtagDevicesBefore>\r
+          <JtagDevicesAfter>0</JtagDevicesAfter>\r
+          <JtagInstrBitsBefore>0</JtagInstrBitsBefore>\r
+          <JtagInstrBitsAfter>0</JtagInstrBitsAfter>\r
+          <SwdClock>4000000</SwdClock>\r
+        </InterfaceProperties>\r
+      </ToolOptions>\r
+    </com_atmel_avrdbg_tool_samice>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition=" '$(Configuration)' == 'Release' ">\r
+    <ToolchainSettings>\r
+      <ArmGcc>\r
+        <armgcc.common.general.symbols>__ATSAM4LC4C__</armgcc.common.general.symbols>\r
+        <armgcc.common.outputfiles.hex>True</armgcc.common.outputfiles.hex>\r
+        <armgcc.common.outputfiles.lss>True</armgcc.common.outputfiles.lss>\r
+        <armgcc.common.outputfiles.eep>True</armgcc.common.outputfiles.eep>\r
+        <armgcc.common.outputfiles.bin>True</armgcc.common.outputfiles.bin>\r
+        <armgcc.common.outputfiles.srec>True</armgcc.common.outputfiles.srec>\r
+        <armgcc.compiler.symbols.DefSymbols>\r
+          <ListValues>\r
+            <Value>BOARD=SAM4L_EK</Value>\r
+            <Value>ARM_MATH_CM4=true</Value>\r
+            <Value>__ATSAM4LC4C__</Value>\r
+          </ListValues>\r
+        </armgcc.compiler.symbols.DefSymbols>\r
+        <armgcc.compiler.directories.DefaultIncludePath>False</armgcc.compiler.directories.DefaultIncludePath>\r
+        <armgcc.compiler.directories.IncludePaths>\r
+          <ListValues>\r
+            <Value>../src/asf/sam/utils/preprocessor</Value>\r
+            <Value>../src/asf/sam/drivers/lcdca/example/sam4lc4c_sam4l_ek</Value>\r
+            <Value>../src/asf/sam/utils/cmsis/sam4l/include</Value>\r
+            <Value>../src/asf/common/services/sleepmgr</Value>\r
+            <Value>../src/asf/sam/utils</Value>\r
+            <Value>../src/asf/common/boards</Value>\r
+            <Value>../src/asf/sam/drivers/flashcalw</Value>\r
+            <Value>../src/asf/sam/boards</Value>\r
+            <Value>../src/asf/common/services/clock</Value>\r
+            <Value>../src/asf/sam/drivers/bpm</Value>\r
+            <Value>../src/asf/thirdparty/CMSIS/Include</Value>\r
+            <Value>../src/asf/sam/boards/sam4l_ek</Value>\r
+            <Value>../src/asf/sam/utils/header_files</Value>\r
+            <Value>../src/asf/common/services/ioport</Value>\r
+            <Value>../src/asf/sam/utils/cmsis/sam4l/source/templates</Value>\r
+            <Value>../src/asf/common/utils</Value>\r
+            <Value>../src/asf/thirdparty/CMSIS/Lib/GCC</Value>\r
+            <Value>../src</Value>\r
+            <Value>../src/config</Value>\r
+            <Value>../src/asf/sam/drivers/ast</Value>\r
+          </ListValues>\r
+        </armgcc.compiler.directories.IncludePaths>\r
+        <armgcc.compiler.optimization.level>Optimize for size (-Os)</armgcc.compiler.optimization.level>\r
+        <armgcc.compiler.optimization.OtherFlags>-fdata-sections</armgcc.compiler.optimization.OtherFlags>\r
+        <armgcc.compiler.optimization.PrepareFunctionsForGarbageCollection>True</armgcc.compiler.optimization.PrepareFunctionsForGarbageCollection>\r
+        <armgcc.compiler.warnings.AllWarnings>True</armgcc.compiler.warnings.AllWarnings>\r
+        <armgcc.linker.libraries.Libraries>\r
+          <ListValues>\r
+            <Value>arm_cortexM4l_math</Value>\r
+            <Value>m</Value>\r
+          </ListValues>\r
+        </armgcc.linker.libraries.Libraries>\r
+        <armgcc.linker.libraries.LibrarySearchPaths>\r
+          <ListValues>\r
+            <Value>../cmsis/linkerScripts</Value>\r
+            <Value>../src/asf/thirdparty/CMSIS/Lib/GCC</Value>\r
+          </ListValues>\r
+        </armgcc.linker.libraries.LibrarySearchPaths>\r
+        <armgcc.linker.optimization.GarbageCollectUnusedSections>True</armgcc.linker.optimization.GarbageCollectUnusedSections>\r
+        <armgcc.linker.miscellaneous.LinkerFlags>-T../src/asf/sam/utils/linker_scripts/sam4l/sam4l4/gcc/flash.ld -Wl,--cref -Wl,--entry=Reset_Handler -mthumb</armgcc.linker.miscellaneous.LinkerFlags>\r
+        <armgcc.assembler.general.IncludePaths>\r
+          <ListValues>\r
+            <Value>../src/asf/sam/utils/preprocessor</Value>\r
+            <Value>../src/asf/sam/drivers/lcdca/example/sam4lc4c_sam4l_ek</Value>\r
+            <Value>../src/asf/sam/utils/cmsis/sam4l/include</Value>\r
+            <Value>../src/asf/common/services/sleepmgr</Value>\r
+            <Value>../src/asf/sam/utils</Value>\r
+            <Value>../src/asf/common/boards</Value>\r
+            <Value>../src/asf/sam/drivers/flashcalw</Value>\r
+            <Value>../src/asf/sam/boards</Value>\r
+            <Value>../src/asf/common/services/clock</Value>\r
+            <Value>../src/asf/sam/drivers/bpm</Value>\r
+            <Value>../src/asf/thirdparty/CMSIS/Include</Value>\r
+            <Value>../src/asf/sam/boards/sam4l_ek</Value>\r
+            <Value>../src/asf/sam/utils/header_files</Value>\r
+            <Value>../src/asf/common/services/ioport</Value>\r
+            <Value>../src/asf/sam/utils/cmsis/sam4l/source/templates</Value>\r
+            <Value>../src/asf/common/utils</Value>\r
+            <Value>../src/asf/thirdparty/CMSIS/Lib/GCC</Value>\r
+            <Value>../src</Value>\r
+            <Value>../src/config</Value>\r
+            <Value>../src/asf/sam/drivers/ast</Value>\r
+          </ListValues>\r
+        </armgcc.assembler.general.IncludePaths>\r
+        <armgcc.preprocessingassembler.general.AssemblerFlags>-DARM_MATH_CM4=true -DBOARD=SAM4L_EK -D__ATSAM4LC4C__</armgcc.preprocessingassembler.general.AssemblerFlags>\r
+        <armgcc.preprocessingassembler.general.IncludePaths>\r
+          <ListValues>\r
+            <Value>../src/asf/sam/utils/preprocessor</Value>\r
+            <Value>../src/asf/sam/drivers/lcdca/example/sam4lc4c_sam4l_ek</Value>\r
+            <Value>../src/asf/sam/utils/cmsis/sam4l/include</Value>\r
+            <Value>../src/asf/common/services/sleepmgr</Value>\r
+            <Value>../src/asf/sam/utils</Value>\r
+            <Value>../src/asf/common/boards</Value>\r
+            <Value>../src/asf/sam/drivers/flashcalw</Value>\r
+            <Value>../src/asf/sam/boards</Value>\r
+            <Value>../src/asf/common/services/clock</Value>\r
+            <Value>../src/asf/sam/drivers/bpm</Value>\r
+            <Value>../src/asf/thirdparty/CMSIS/Include</Value>\r
+            <Value>../src/asf/sam/boards/sam4l_ek</Value>\r
+            <Value>../src/asf/sam/utils/header_files</Value>\r
+            <Value>../src/asf/common/services/ioport</Value>\r
+            <Value>../src/asf/sam/utils/cmsis/sam4l/source/templates</Value>\r
+            <Value>../src/asf/common/utils</Value>\r
+            <Value>../src/asf/thirdparty/CMSIS/Lib/GCC</Value>\r
+            <Value>../src</Value>\r
+            <Value>../src/config</Value>\r
+            <Value>../src/asf/sam/drivers/ast</Value>\r
+          </ListValues>\r
+        </armgcc.preprocessingassembler.general.IncludePaths>\r
+      </ArmGcc>\r
+    </ToolchainSettings>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition=" '$(Configuration)' == 'Debug' ">\r
+    <ToolchainSettings>\r
+      <ArmGcc>\r
+  <armgcc.common.general.symbols>__ATSAM4LC4C__</armgcc.common.general.symbols>\r
+  <armgcc.common.outputfiles.hex>True</armgcc.common.outputfiles.hex>\r
+  <armgcc.common.outputfiles.lss>True</armgcc.common.outputfiles.lss>\r
+  <armgcc.common.outputfiles.eep>True</armgcc.common.outputfiles.eep>\r
+  <armgcc.common.outputfiles.bin>True</armgcc.common.outputfiles.bin>\r
+  <armgcc.common.outputfiles.srec>True</armgcc.common.outputfiles.srec>\r
+  <armgcc.compiler.symbols.DefSymbols>\r
+    <ListValues>\r
+      <Value>BOARD=SAM4L_EK</Value>\r
+      <Value>ARM_MATH_CM4=true</Value>\r
+      <Value>__SAM4LC4C__</Value>\r
+    </ListValues>\r
+  </armgcc.compiler.symbols.DefSymbols>\r
+  <armgcc.compiler.directories.DefaultIncludePath>False</armgcc.compiler.directories.DefaultIncludePath>\r
+  <armgcc.compiler.directories.IncludePaths>\r
+    <ListValues>\r
+      <Value>../src/asf/sam/utils/preprocessor</Value>\r
+      <Value>../src/asf/sam/drivers/lcdca/example/sam4lc4c_sam4l_ek</Value>\r
+      <Value>../src/asf/sam/utils/cmsis/sam4l/include</Value>\r
+      <Value>../src/asf/common/services/sleepmgr</Value>\r
+      <Value>../src/asf/sam/utils</Value>\r
+      <Value>../src/asf/common/boards</Value>\r
+      <Value>../src/asf/sam/drivers/flashcalw</Value>\r
+      <Value>../src/asf/sam/boards</Value>\r
+      <Value>../src/asf/common/services/clock</Value>\r
+      <Value>../src/asf/sam/drivers/bpm</Value>\r
+      <Value>../src/asf/thirdparty/CMSIS/Include</Value>\r
+      <Value>../src/asf/sam/boards/sam4l_ek</Value>\r
+      <Value>../src/asf/sam/utils/header_files</Value>\r
+      <Value>../src/asf/common/services/ioport</Value>\r
+      <Value>../src/asf/sam/utils/cmsis/sam4l/source/templates</Value>\r
+      <Value>../src/asf/common/utils</Value>\r
+      <Value>../src/asf/thirdparty/CMSIS/Lib/GCC</Value>\r
+      <Value>../src</Value>\r
+      <Value>../src/config</Value>\r
+      <Value>../src/asf/sam/drivers/ast</Value>\r
+      <Value>../../../Source/include</Value>\r
+      <Value>../../../Source/portable/GCC/ARM_CM3</Value>\r
+      <Value>../../Common/include</Value>\r
+    </ListValues>\r
+  </armgcc.compiler.directories.IncludePaths>\r
+  <armgcc.compiler.optimization.OtherFlags>-fdata-sections</armgcc.compiler.optimization.OtherFlags>\r
+  <armgcc.compiler.optimization.PrepareFunctionsForGarbageCollection>True</armgcc.compiler.optimization.PrepareFunctionsForGarbageCollection>\r
+  <armgcc.compiler.optimization.DebugLevel>Maximum (-g3)</armgcc.compiler.optimization.DebugLevel>\r
+  <armgcc.compiler.warnings.AllWarnings>True</armgcc.compiler.warnings.AllWarnings>\r
+  <armgcc.compiler.miscellaneous.OtherFlags>-std=gnu99 -Wmissing-field-initializers</armgcc.compiler.miscellaneous.OtherFlags>\r
+  <armgcc.linker.libraries.Libraries>\r
+    <ListValues>\r
+      <Value>arm_cortexM4l_math</Value>\r
+      <Value>m</Value>\r
+    </ListValues>\r
+  </armgcc.linker.libraries.Libraries>\r
+  <armgcc.linker.libraries.LibrarySearchPaths>\r
+    <ListValues>\r
+      <Value>../cmsis/linkerScripts</Value>\r
+      <Value>../src/asf/thirdparty/CMSIS/Lib/GCC</Value>\r
+    </ListValues>\r
+  </armgcc.linker.libraries.LibrarySearchPaths>\r
+  <armgcc.linker.optimization.GarbageCollectUnusedSections>True</armgcc.linker.optimization.GarbageCollectUnusedSections>\r
+  <armgcc.linker.miscellaneous.LinkerFlags>-T../src/asf/sam/utils/linker_scripts/sam4l/sam4l4/gcc/flash.ld -Wl,--cref -Wl,--entry=Reset_Handler -mthumb</armgcc.linker.miscellaneous.LinkerFlags>\r
+  <armgcc.assembler.general.IncludePaths>\r
+    <ListValues>\r
+      <Value>../src/asf/sam/utils/preprocessor</Value>\r
+      <Value>../src/asf/sam/drivers/lcdca/example/sam4lc4c_sam4l_ek</Value>\r
+      <Value>../src/asf/sam/utils/cmsis/sam4l/include</Value>\r
+      <Value>../src/asf/common/services/sleepmgr</Value>\r
+      <Value>../src/asf/sam/utils</Value>\r
+      <Value>../src/asf/common/boards</Value>\r
+      <Value>../src/asf/sam/drivers/flashcalw</Value>\r
+      <Value>../src/asf/sam/boards</Value>\r
+      <Value>../src/asf/common/services/clock</Value>\r
+      <Value>../src/asf/sam/drivers/bpm</Value>\r
+      <Value>../src/asf/thirdparty/CMSIS/Include</Value>\r
+      <Value>../src/asf/sam/boards/sam4l_ek</Value>\r
+      <Value>../src/asf/sam/utils/header_files</Value>\r
+      <Value>../src/asf/common/services/ioport</Value>\r
+      <Value>../src/asf/sam/utils/cmsis/sam4l/source/templates</Value>\r
+      <Value>../src/asf/common/utils</Value>\r
+      <Value>../src/asf/thirdparty/CMSIS/Lib/GCC</Value>\r
+      <Value>../src</Value>\r
+      <Value>../src/config</Value>\r
+      <Value>../src/asf/sam/drivers/ast</Value>\r
+    </ListValues>\r
+  </armgcc.assembler.general.IncludePaths>\r
+  <armgcc.assembler.debugging.DebugLevel>Default (-g)</armgcc.assembler.debugging.DebugLevel>\r
+  <armgcc.preprocessingassembler.general.AssemblerFlags>-DARM_MATH_CM4=true -DBOARD=SAM4L_EK -D__ATSAM4LC4C__</armgcc.preprocessingassembler.general.AssemblerFlags>\r
+  <armgcc.preprocessingassembler.general.IncludePaths>\r
+    <ListValues>\r
+      <Value>../src/asf/sam/utils/preprocessor</Value>\r
+      <Value>../src/asf/sam/drivers/lcdca/example/sam4lc4c_sam4l_ek</Value>\r
+      <Value>../src/asf/sam/utils/cmsis/sam4l/include</Value>\r
+      <Value>../src/asf/common/services/sleepmgr</Value>\r
+      <Value>../src/asf/sam/utils</Value>\r
+      <Value>../src/asf/common/boards</Value>\r
+      <Value>../src/asf/sam/drivers/flashcalw</Value>\r
+      <Value>../src/asf/sam/boards</Value>\r
+      <Value>../src/asf/common/services/clock</Value>\r
+      <Value>../src/asf/sam/drivers/bpm</Value>\r
+      <Value>../src/asf/thirdparty/CMSIS/Include</Value>\r
+      <Value>../src/asf/sam/boards/sam4l_ek</Value>\r
+      <Value>../src/asf/sam/utils/header_files</Value>\r
+      <Value>../src/asf/common/services/ioport</Value>\r
+      <Value>../src/asf/sam/utils/cmsis/sam4l/source/templates</Value>\r
+      <Value>../src/asf/common/utils</Value>\r
+      <Value>../src/asf/thirdparty/CMSIS/Lib/GCC</Value>\r
+      <Value>../src</Value>\r
+      <Value>../src/config</Value>\r
+      <Value>../src/asf/sam/drivers/ast</Value>\r
+    </ListValues>\r
+  </armgcc.preprocessingassembler.general.IncludePaths>\r
+  <armgcc.preprocessingassembler.debugging.DebugLevel>Default (-Wa,-g)</armgcc.preprocessingassembler.debugging.DebugLevel>\r
+</ArmGcc>\r
+    </ToolchainSettings>\r
+  </PropertyGroup>\r
+  <ItemGroup>\r
+    <Folder Include="src\" />\r
+    <Folder Include="src\asf\" />\r
+    <Folder Include="src\asf\common\" />\r
+    <Folder Include="src\asf\common\boards\" />\r
+    <Folder Include="src\asf\common\services\" />\r
+    <Folder Include="src\asf\common\services\clock\" />\r
+    <Folder Include="src\asf\common\services\clock\sam4l\" />\r
+    <Folder Include="src\asf\common\services\ioport\" />\r
+    <Folder Include="src\asf\common\services\ioport\sam\" />\r
+    <Folder Include="src\asf\common\services\sleepmgr\" />\r
+    <Folder Include="src\asf\common\services\sleepmgr\sam4l\" />\r
+    <Folder Include="src\asf\common\utils\" />\r
+    <Folder Include="src\asf\common\utils\interrupt\" />\r
+    <Folder Include="src\asf\sam\" />\r
+    <Folder Include="src\asf\sam\boards\" />\r
+    <Folder Include="src\asf\sam\boards\sam4l_ek\" />\r
+    <Folder Include="src\asf\sam\drivers\" />\r
+    <Folder Include="src\asf\sam\drivers\ast\" />\r
+    <Folder Include="src\asf\sam\drivers\bpm\" />\r
+    <Folder Include="src\asf\sam\drivers\flashcalw\" />\r
+    <Folder Include="src\asf\sam\utils\" />\r
+    <Folder Include="src\asf\sam\utils\cmsis\" />\r
+    <Folder Include="src\asf\sam\utils\cmsis\sam4l\" />\r
+    <Folder Include="src\asf\sam\utils\cmsis\sam4l\include\" />\r
+    <Folder Include="src\asf\sam\utils\cmsis\sam4l\source\" />\r
+    <Folder Include="src\asf\sam\utils\cmsis\sam4l\source\templates\" />\r
+    <Folder Include="src\asf\sam\utils\cmsis\sam4l\source\templates\gcc\" />\r
+    <Folder Include="src\asf\sam\utils\header_files\" />\r
+    <Folder Include="src\asf\sam\utils\linker_scripts\" />\r
+    <Folder Include="src\asf\sam\utils\linker_scripts\sam4l\" />\r
+    <Folder Include="src\asf\sam\utils\linker_scripts\sam4l\sam4l4\" />\r
+    <Folder Include="src\asf\sam\utils\linker_scripts\sam4l\sam4l4\gcc\" />\r
+    <Folder Include="src\asf\sam\utils\make\" />\r
+    <Folder Include="src\asf\sam\utils\preprocessor\" />\r
+    <Folder Include="src\asf\sam\utils\syscalls\" />\r
+    <Folder Include="src\asf\sam\utils\syscalls\gcc\" />\r
+    <Folder Include="src\asf\thirdparty\" />\r
+    <Folder Include="src\asf\thirdparty\CMSIS\" />\r
+    <Folder Include="src\asf\thirdparty\CMSIS\Include\" />\r
+    <Folder Include="src\asf\thirdparty\CMSIS\Lib\" />\r
+    <Folder Include="src\asf\thirdparty\CMSIS\Lib\GCC\" />\r
+    <Folder Include="src\Common-Demo-Source\" />\r
+    <Folder Include="src\Common-Demo-Source\include\" />\r
+    <Folder Include="src\config\" />\r
+    <Folder Include="src\FreeRTOS-Source" />\r
+    <Folder Include="src\FreeRTOS-Source\include" />\r
+    <Folder Include="src\FreeRTOS-Source\portable" />\r
+    <Folder Include="src\Standard Demo Tasks" />\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <None Include="src\asf\sam\utils\linker_scripts\sam4l\sam4l4\gcc\flash.ld">\r
+      <SubType>compile</SubType>\r
+    </None>\r
+    <None Include="src\asf\sam\utils\make\Makefile.in">\r
+      <SubType>compile</SubType>\r
+    </None>\r
+    <None Include="src\asf\thirdparty\CMSIS\CMSIS END USER LICENCE AGREEMENT.pdf">\r
+      <SubType>compile</SubType>\r
+    </None>\r
+    <None Include="src\asf\thirdparty\CMSIS\Lib\GCC\libarm_cortexM4l_math.a">\r
+      <SubType>compile</SubType>\r
+    </None>\r
+    <None Include="src\asf\thirdparty\CMSIS\README.txt">\r
+      <SubType>compile</SubType>\r
+    </None>\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <None Include="src\asf\common\utils\parts.h">\r
+      <SubType>compile</SubType>\r
+    </None>\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <None Include="src\asf\common\services\sleepmgr\sleepmgr.h">\r
+      <SubType>compile</SubType>\r
+    </None>\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <None Include="src\config\conf_board.h">\r
+      <SubType>compile</SubType>\r
+    </None>\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <None Include="src\asf\common\services\clock\osc.h">\r
+      <SubType>compile</SubType>\r
+    </None>\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <None Include="src\asf\sam\utils\cmsis\sam4l\source\templates\exceptions.h">\r
+      <SubType>compile</SubType>\r
+    </None>\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <None Include="src\asf\thirdparty\CMSIS\Include\arm_math.h">\r
+      <SubType>compile</SubType>\r
+    </None>\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <None Include="src\asf\common\utils\interrupt.h">\r
+      <SubType>compile</SubType>\r
+    </None>\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <None Include="src\asf\sam\utils\compiler.h">\r
+      <SubType>compile</SubType>\r
+    </None>\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <None Include="src\asf\sam\drivers\bpm\bpm.h">\r
+      <SubType>compile</SubType>\r
+    </None>\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <None Include="src\asf\sam\utils\cmsis\sam4l\include\sam4l.h">\r
+      <SubType>compile</SubType>\r
+    </None>\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <None Include="src\config\conf_example.h">\r
+      <SubType>compile</SubType>\r
+    </None>\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <None Include="src\asf\sam\utils\cmsis\sam4l\include\sam4l_patch_asf.h">\r
+      <SubType>compile</SubType>\r
+    </None>\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <None Include="src\asf\sam\utils\preprocessor\tpaste.h">\r
+      <SubType>compile</SubType>\r
+    </None>\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <None Include="src\asf\common\services\clock\pll.h">\r
+      <SubType>compile</SubType>\r
+    </None>\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <None Include="src\asf\common\services\clock\sam4l\sysclk.h">\r
+      <SubType>compile</SubType>\r
+    </None>\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <None Include="src\asf\sam\utils\status_codes.h">\r
+      <SubType>compile</SubType>\r
+    </None>\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <None Include="src\asf\sam\utils\header_files\io.h">\r
+      <SubType>compile</SubType>\r
+    </None>\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <None Include="src\asf\common\services\clock\sam4l\dfll.h">\r
+      <SubType>compile</SubType>\r
+    </None>\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <None Include="src\asf\sam\drivers\bpm\sleep.h">\r
+      <SubType>compile</SubType>\r
+    </None>\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <None Include="src\asf\thirdparty\CMSIS\Include\core_cmFunc.h">\r
+      <SubType>compile</SubType>\r
+    </None>\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <None Include="src\asf\common\services\clock\sysclk.h">\r
+      <SubType>compile</SubType>\r
+    </None>\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <None Include="src\asf\common\services\clock\sam4l\osc.h">\r
+      <SubType>compile</SubType>\r
+    </None>\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <None Include="src\asf\sam\utils\cmsis\sam4l\source\templates\system_sam4l.h">\r
+      <SubType>compile</SubType>\r
+    </None>\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <None Include="src\asf\common\utils\interrupt\interrupt_sam_nvic.h">\r
+      <SubType>compile</SubType>\r
+    </None>\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <None Include="src\asf\common\services\clock\genclk.h">\r
+      <SubType>compile</SubType>\r
+    </None>\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <None Include="src\asf\common\services\sleepmgr\sam4l\sleepmgr.h">\r
+      <SubType>compile</SubType>\r
+    </None>\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <None Include="src\asf\common\boards\board.h">\r
+      <SubType>compile</SubType>\r
+    </None>\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <None Include="src\asf\common\services\ioport\ioport.h">\r
+      <SubType>compile</SubType>\r
+    </None>\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <None Include="src\asf\sam\drivers\flashcalw\flashcalw.h">\r
+      <SubType>compile</SubType>\r
+    </None>\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <None Include="src\asf\thirdparty\CMSIS\Include\core_cm4_simd.h">\r
+      <SubType>compile</SubType>\r
+    </None>\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <None Include="src\config\conf_sleepmgr.h">\r
+      <SubType>compile</SubType>\r
+    </None>\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <None Include="src\asf\thirdparty\CMSIS\Include\core_cmInstr.h">\r
+      <SubType>compile</SubType>\r
+    </None>\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <None Include="src\asf\sam\utils\preprocessor\stringz.h">\r
+      <SubType>compile</SubType>\r
+    </None>\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <None Include="src\asf\sam\utils\preprocessor\preprocessor.h">\r
+      <SubType>compile</SubType>\r
+    </None>\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <None Include="src\config\conf_clock.h">\r
+      <SubType>compile</SubType>\r
+    </None>\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <None Include="src\asf\common\services\clock\dfll.h">\r
+      <SubType>compile</SubType>\r
+    </None>\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <None Include="src\asf\thirdparty\CMSIS\Include\core_cm4.h">\r
+      <SubType>compile</SubType>\r
+    </None>\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <None Include="src\asf\common\services\clock\sam4l\genclk.h">\r
+      <SubType>compile</SubType>\r
+    </None>\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <None Include="src\asf\common\services\ioport\sam\ioport_gpio.h">\r
+      <SubType>compile</SubType>\r
+    </None>\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <None Include="src\asf\sam\utils\preprocessor\mrepeat.h">\r
+      <SubType>compile</SubType>\r
+    </None>\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <None Include="src\asf\common\services\clock\sam4l\pll.h">\r
+      <SubType>compile</SubType>\r
+    </None>\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <None Include="src\asf\sam\boards\sam4l_ek\sam4l_ek.h">\r
+      <SubType>compile</SubType>\r
+    </None>\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <Compile Include="..\..\Source\include\FreeRTOS.h">\r
+      <SubType>compile</SubType>\r
+      <Link>src\FreeRTOS-Source\include\FreeRTOS.h</Link>\r
+    </Compile>\r
+    <Compile Include="..\..\Source\include\list.h">\r
+      <SubType>compile</SubType>\r
+      <Link>src\FreeRTOS-Source\include\list.h</Link>\r
+    </Compile>\r
+    <Compile Include="..\..\Source\include\mpu_wrappers.h">\r
+      <SubType>compile</SubType>\r
+      <Link>src\FreeRTOS-Source\include\mpu_wrappers.h</Link>\r
+    </Compile>\r
+    <Compile Include="..\..\Source\include\portable.h">\r
+      <SubType>compile</SubType>\r
+      <Link>src\FreeRTOS-Source\include\portable.h</Link>\r
+    </Compile>\r
+    <Compile Include="..\..\Source\include\projdefs.h">\r
+      <SubType>compile</SubType>\r
+      <Link>src\FreeRTOS-Source\include\projdefs.h</Link>\r
+    </Compile>\r
+    <Compile Include="..\..\Source\include\queue.h">\r
+      <SubType>compile</SubType>\r
+      <Link>src\FreeRTOS-Source\include\queue.h</Link>\r
+    </Compile>\r
+    <Compile Include="..\..\Source\include\semphr.h">\r
+      <SubType>compile</SubType>\r
+      <Link>src\FreeRTOS-Source\include\semphr.h</Link>\r
+    </Compile>\r
+    <Compile Include="..\..\Source\include\StackMacros.h">\r
+      <SubType>compile</SubType>\r
+      <Link>src\FreeRTOS-Source\include\StackMacros.h</Link>\r
+    </Compile>\r
+    <Compile Include="..\..\Source\include\task.h">\r
+      <SubType>compile</SubType>\r
+      <Link>src\FreeRTOS-Source\include\task.h</Link>\r
+    </Compile>\r
+    <Compile Include="..\..\Source\include\timers.h">\r
+      <SubType>compile</SubType>\r
+      <Link>src\FreeRTOS-Source\include\timers.h</Link>\r
+    </Compile>\r
+    <Compile Include="..\..\Source\list.c">\r
+      <SubType>compile</SubType>\r
+      <Link>src\FreeRTOS-Source\list.c</Link>\r
+    </Compile>\r
+    <Compile Include="..\..\Source\portable\GCC\ARM_CM3\port.c">\r
+      <SubType>compile</SubType>\r
+      <Link>src\FreeRTOS-Source\portable\port.c</Link>\r
+    </Compile>\r
+    <Compile Include="..\..\Source\portable\GCC\ARM_CM3\portmacro.h">\r
+      <SubType>compile</SubType>\r
+      <Link>src\FreeRTOS-Source\portable\portmacro.h</Link>\r
+    </Compile>\r
+    <Compile Include="..\..\Source\portable\MemMang\heap_4.c">\r
+      <SubType>compile</SubType>\r
+      <Link>src\FreeRTOS-Source\portable\heap_4.c</Link>\r
+    </Compile>\r
+    <Compile Include="..\..\Source\queue.c">\r
+      <SubType>compile</SubType>\r
+      <Link>src\FreeRTOS-Source\queue.c</Link>\r
+    </Compile>\r
+    <Compile Include="..\..\Source\tasks.c">\r
+      <SubType>compile</SubType>\r
+      <Link>src\FreeRTOS-Source\tasks.c</Link>\r
+    </Compile>\r
+    <Compile Include="..\..\Source\timers.c">\r
+      <SubType>compile</SubType>\r
+      <Link>src\FreeRTOS-Source\timers.c</Link>\r
+    </Compile>\r
+    <Compile Include="..\Common\include\BlockQ.h">\r
+      <SubType>compile</SubType>\r
+      <Link>src\Common-Demo-Source\include\BlockQ.h</Link>\r
+    </Compile>\r
+    <Compile Include="..\Common\include\blocktim.h">\r
+      <SubType>compile</SubType>\r
+      <Link>src\Common-Demo-Source\include\blocktim.h</Link>\r
+    </Compile>\r
+    <Compile Include="..\Common\include\comtest.h">\r
+      <SubType>compile</SubType>\r
+      <Link>src\Common-Demo-Source\include\comtest.h</Link>\r
+    </Compile>\r
+    <Compile Include="..\Common\include\dynamic.h">\r
+      <SubType>compile</SubType>\r
+      <Link>src\Common-Demo-Source\include\dynamic.h</Link>\r
+    </Compile>\r
+    <Compile Include="..\Common\include\GenQTest.h">\r
+      <SubType>compile</SubType>\r
+      <Link>src\Common-Demo-Source\include\GenQTest.h</Link>\r
+    </Compile>\r
+    <Compile Include="..\Common\include\PollQ.h">\r
+      <SubType>compile</SubType>\r
+      <Link>src\Common-Demo-Source\include\PollQ.h</Link>\r
+    </Compile>\r
+    <Compile Include="..\Common\include\recmutex.h">\r
+      <SubType>compile</SubType>\r
+      <Link>src\Common-Demo-Source\include\recmutex.h</Link>\r
+    </Compile>\r
+    <Compile Include="..\Common\include\semtest.h">\r
+      <SubType>compile</SubType>\r
+      <Link>src\Common-Demo-Source\include\semtest.h</Link>\r
+    </Compile>\r
+    <Compile Include="..\Common\Minimal\BlockQ.c">\r
+      <SubType>compile</SubType>\r
+      <Link>src\Common-Demo-Source\BlockQ.c</Link>\r
+    </Compile>\r
+    <Compile Include="..\Common\Minimal\blocktim.c">\r
+      <SubType>compile</SubType>\r
+      <Link>src\Common-Demo-Source\blocktim.c</Link>\r
+    </Compile>\r
+    <Compile Include="..\Common\Minimal\countsem.c">\r
+      <SubType>compile</SubType>\r
+      <Link>src\Common-Demo-Source\countsem.c</Link>\r
+    </Compile>\r
+    <Compile Include="..\Common\Minimal\dynamic.c">\r
+      <SubType>compile</SubType>\r
+      <Link>src\Common-Demo-Source\dynamic.c</Link>\r
+    </Compile>\r
+    <Compile Include="..\Common\Minimal\GenQTest.c">\r
+      <SubType>compile</SubType>\r
+      <Link>src\Common-Demo-Source\GenQTest.c</Link>\r
+    </Compile>\r
+    <Compile Include="..\Common\Minimal\PollQ.c">\r
+      <SubType>compile</SubType>\r
+      <Link>src\Common-Demo-Source\PollQ.c</Link>\r
+    </Compile>\r
+    <Compile Include="..\Common\Minimal\recmutex.c">\r
+      <SubType>compile</SubType>\r
+      <Link>src\Common-Demo-Source\recmutex.c</Link>\r
+    </Compile>\r
+    <Compile Include="..\Common\Minimal\semtest.c">\r
+      <SubType>compile</SubType>\r
+      <Link>src\Common-Demo-Source\semtest.c</Link>\r
+    </Compile>\r
+    <Compile Include="src\config\FreeRTOSConfig.h">\r
+      <SubType>compile</SubType>\r
+    </Compile>\r
+    <Compile Include="src\asf\sam\drivers\ast\ast.c">\r
+      <SubType>compile</SubType>\r
+    </Compile>\r
+    <Compile Include="src\main.c">\r
+      <SubType>compile</SubType>\r
+    </Compile>\r
+    <Compile Include="src\main_full.c">\r
+      <SubType>compile</SubType>\r
+    </Compile>\r
+    <Compile Include="src\main_low_power.c">\r
+      <SubType>compile</SubType>\r
+    </Compile>\r
+    <Compile Include="src\ParTest.c">\r
+      <SubType>compile</SubType>\r
+    </Compile>\r
+    <Compile Include="src\SAM4L_low_power_tick_management.c">\r
+      <SubType>compile</SubType>\r
+    </Compile>\r
+    <None Include="src\asf\sam\drivers\ast\ast.h">\r
+      <SubType>compile</SubType>\r
+    </None>\r
+    <None Include="src\config\conf_ast.h">\r
+      <SubType>compile</SubType>\r
+    </None>\r
+    <None Include="src\asf.h">\r
+      <SubType>compile</SubType>\r
+    </None>\r
+    <Compile Include="src\asf\common\services\clock\sam4l\dfll.c">\r
+      <SubType>compile</SubType>\r
+    </Compile>\r
+    <Compile Include="src\asf\common\services\clock\sam4l\osc.c">\r
+      <SubType>compile</SubType>\r
+    </Compile>\r
+    <Compile Include="src\asf\common\services\clock\sam4l\pll.c">\r
+      <SubType>compile</SubType>\r
+    </Compile>\r
+    <Compile Include="src\asf\common\services\clock\sam4l\sysclk.c">\r
+      <SubType>compile</SubType>\r
+    </Compile>\r
+    <Compile Include="src\asf\common\services\sleepmgr\sam4l\sleepmgr.c">\r
+      <SubType>compile</SubType>\r
+    </Compile>\r
+    <Compile Include="src\asf\common\utils\interrupt\interrupt_sam_nvic.c">\r
+      <SubType>compile</SubType>\r
+    </Compile>\r
+    <Compile Include="src\asf\sam\boards\sam4l_ek\init.c">\r
+      <SubType>compile</SubType>\r
+    </Compile>\r
+    <Compile Include="src\asf\sam\drivers\bpm\bpm.c">\r
+      <SubType>compile</SubType>\r
+    </Compile>\r
+    <Compile Include="src\asf\sam\drivers\flashcalw\flashcalw.c">\r
+      <SubType>compile</SubType>\r
+    </Compile>\r
+    <Compile Include="src\asf\sam\utils\cmsis\sam4l\source\templates\exceptions.c">\r
+      <SubType>compile</SubType>\r
+    </Compile>\r
+    <Compile Include="src\asf\sam\utils\cmsis\sam4l\source\templates\gcc\startup_sam4l.c">\r
+      <SubType>compile</SubType>\r
+    </Compile>\r
+    <Compile Include="src\asf\sam\utils\syscalls\gcc\syscalls.c">\r
+      <SubType>compile</SubType>\r
+    </Compile>\r
+  </ItemGroup>\r
+  <Import Project="$(AVRSTUDIO_EXE_PATH)\\Vs\\Compiler.targets" />\r
+</Project>
\ No newline at end of file
diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/jlink.config b/FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/jlink.config
new file mode 100644 (file)
index 0000000..5d3ee40
--- /dev/null
@@ -0,0 +1,31 @@
+[BREAKPOINTS]\r
+ShowInfoWin = 1\r
+EnableFlashBP = 2\r
+BPDuringExecution = 0\r
+[CFI]\r
+CFISize = 0x00\r
+CFIAddr = 0x00\r
+[CPU]\r
+OverrideMemMap = 0\r
+AllowSimulation = 1\r
+ScriptFile=""\r
+[FLASH]\r
+MinNumBytesFlashDL = 0\r
+SkipProgOnCRCMatch = 1\r
+VerifyDownload = 1\r
+AllowCaching = 1\r
+EnableFlashDL = 2\r
+Override = 0\r
+Device="UNSPECIFIED"\r
+[GENERAL]\r
+WorkRAMSize = 0x00\r
+WorkRAMAddr = 0x00\r
+[SWO]\r
+SWOLogFile=""\r
+[MEM]\r
+RdOverrideOrMask = 0x00\r
+RdOverrideAndMask = 0xFFFFFFFF\r
+RdOverrideAddr = 0xFFFFFFFF\r
+WrOverrideOrMask = 0x00\r
+WrOverrideAndMask = 0xFFFFFFFF\r
+WrOverrideAddr = 0xFFFFFFFF\r
diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/ParTest.c b/FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/ParTest.c
new file mode 100644 (file)
index 0000000..d6e6e03
--- /dev/null
@@ -0,0 +1,123 @@
+/*\r
+    FreeRTOS V7.4.0 - Copyright (C) 2013 Real Time Engineers Ltd.\r
+\r
+    FEATURES AND PORTS ARE ADDED TO FREERTOS ALL THE TIME.  PLEASE VISIT\r
+    http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION.\r
+\r
+    ***************************************************************************\r
+     *                                                                       *\r
+     *    FreeRTOS tutorial books are available in pdf and paperback.        *\r
+     *    Complete, revised, and edited pdf reference manuals are also       *\r
+     *    available.                                                         *\r
+     *                                                                       *\r
+     *    Purchasing FreeRTOS documentation will not only help you, by       *\r
+     *    ensuring you get running as quickly as possible and with an        *\r
+     *    in-depth knowledge of how to use FreeRTOS, it will also help       *\r
+     *    the FreeRTOS project to continue with its mission of providing     *\r
+     *    professional grade, cross platform, de facto standard solutions    *\r
+     *    for microcontrollers - completely free of charge!                  *\r
+     *                                                                       *\r
+     *    >>> See http://www.FreeRTOS.org/Documentation for details. <<<     *\r
+     *                                                                       *\r
+     *    Thank you for using FreeRTOS, and thank you for your support!      *\r
+     *                                                                       *\r
+    ***************************************************************************\r
+\r
+\r
+    This file is part of the FreeRTOS distribution.\r
+\r
+    FreeRTOS is free software; you can redistribute it and/or modify it under\r
+    the terms of the GNU General Public License (version 2) as published by the\r
+    Free Software Foundation AND MODIFIED BY the FreeRTOS exception.\r
+\r
+    >>>>>>NOTE<<<<<< The modification to the GPL is included to allow you to\r
+    distribute a combined work that includes FreeRTOS without being obliged to\r
+    provide the source code for proprietary components outside of the FreeRTOS\r
+    kernel.\r
+\r
+    FreeRTOS is distributed in the hope that it will be useful, but WITHOUT ANY\r
+    WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS\r
+    FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more\r
+    details. You should have received a copy of the GNU General Public License\r
+    and the FreeRTOS license exception along with FreeRTOS; if not itcan be\r
+    viewed here: http://www.freertos.org/a00114.html and also obtained by\r
+    writing to Real Time Engineers Ltd., contact details for whom are available\r
+    on the FreeRTOS WEB site.\r
+\r
+    1 tab == 4 spaces!\r
+\r
+    ***************************************************************************\r
+     *                                                                       *\r
+     *    Having a problem?  Start by reading the FAQ "My application does   *\r
+     *    not run, what could be wrong?"                                     *\r
+     *                                                                       *\r
+     *    http://www.FreeRTOS.org/FAQHelp.html                               *\r
+     *                                                                       *\r
+    ***************************************************************************\r
+\r
+\r
+    http://www.FreeRTOS.org - Documentation, books, training, latest versions,\r
+    license and Real Time Engineers Ltd. contact details.\r
+\r
+    http://www.FreeRTOS.org/plus - A selection of FreeRTOS ecosystem products,\r
+    including FreeRTOS+Trace - an indispensable productivity tool, and our new\r
+    fully thread aware and reentrant UDP/IP stack.\r
+\r
+    http://www.OpenRTOS.com - Real Time Engineers ltd license FreeRTOS to High\r
+    Integrity Systems, who sell the code with commercial support,\r
+    indemnification and middleware, under the OpenRTOS brand.\r
+\r
+    http://www.SafeRTOS.com - High Integrity Systems also provide a safety\r
+    engineered and independently SIL3 certified version for use in safety and\r
+    mission critical applications that require provable dependability.\r
+*/\r
+\r
+/*-----------------------------------------------------------\r
+ * Simple IO routines to control the LEDs.\r
+ *-----------------------------------------------------------*/\r
+\r
+/* Scheduler includes. */\r
+#include "FreeRTOS.h"\r
+#include "task.h"\r
+\r
+/* Demo includes. */\r
+#include "partest.h"\r
+\r
+/* Library includes. */\r
+#include <board.h>\r
+#include <asf.h>\r
+\r
+/* The number of LEDs available to the user on the evaluation kit. */\r
+#define partestNUM_LEDS                        ( LED_COUNT )\r
+static portBASE_TYPE xLEDState = pdFALSE;\r
+\r
+/*-----------------------------------------------------------*/\r
+\r
+void vParTestInitialise( void )\r
+{\r
+       /* In this case, the LED pin is configured in the board_init() function. */\r
+}\r
+/*-----------------------------------------------------------*/\r
+\r
+void vParTestSetLED( unsigned portBASE_TYPE uxLED, signed portBASE_TYPE xValue )\r
+{\r
+       if( uxLED < partestNUM_LEDS )\r
+       {\r
+               /* Turn the LED on. */\r
+               taskENTER_CRITICAL();\r
+               {\r
+                       ioport_set_pin_level( LED0_GPIO, xValue );\r
+                       xLEDState = xValue;\r
+               }\r
+               taskEXIT_CRITICAL();\r
+       }\r
+}\r
+/*-----------------------------------------------------------*/\r
+\r
+void vParTestToggleLED( unsigned portBASE_TYPE uxLED )\r
+{\r
+       vParTestSetLED( uxLED, !xLEDState );\r
+}\r
+\r
+\r
+\r
diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/SAM4L_low_power_tick_management.c b/FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/SAM4L_low_power_tick_management.c
new file mode 100644 (file)
index 0000000..dcfa825
--- /dev/null
@@ -0,0 +1,395 @@
+/*\r
+    FreeRTOS V7.4.0 - Copyright (C) 2013 Real Time Engineers Ltd.\r
+\r
+    FEATURES AND PORTS ARE ADDED TO FREERTOS ALL THE TIME.  PLEASE VISIT\r
+    http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION.\r
+\r
+    ***************************************************************************\r
+     *                                                                       *\r
+     *    FreeRTOS tutorial books are available in pdf and paperback.        *\r
+     *    Complete, revised, and edited pdf reference manuals are also       *\r
+     *    available.                                                         *\r
+     *                                                                       *\r
+     *    Purchasing FreeRTOS documentation will not only help you, by       *\r
+     *    ensuring you get running as quickly as possible and with an        *\r
+     *    in-depth knowledge of how to use FreeRTOS, it will also help       *\r
+     *    the FreeRTOS project to continue with its mission of providing     *\r
+     *    professional grade, cross platform, de facto standard solutions    *\r
+     *    for microcontrollers - completely free of charge!                  *\r
+     *                                                                       *\r
+     *    >>> See http://www.FreeRTOS.org/Documentation for details. <<<     *\r
+     *                                                                       *\r
+     *    Thank you for using FreeRTOS, and thank you for your support!      *\r
+     *                                                                       *\r
+    ***************************************************************************\r
+\r
+\r
+    This file is part of the FreeRTOS distribution.\r
+\r
+    FreeRTOS is free software; you can redistribute it and/or modify it under\r
+    the terms of the GNU General Public License (version 2) as published by the\r
+    Free Software Foundation AND MODIFIED BY the FreeRTOS exception.\r
+\r
+    >>>>>>NOTE<<<<<< The modification to the GPL is included to allow you to\r
+    distribute a combined work that includes FreeRTOS without being obliged to\r
+    provide the source code for proprietary components outside of the FreeRTOS\r
+    kernel.\r
+\r
+    FreeRTOS is distributed in the hope that it will be useful, but WITHOUT ANY\r
+    WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS\r
+    FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more\r
+    details. You should have received a copy of the GNU General Public License\r
+    and the FreeRTOS license exception along with FreeRTOS; if not itcan be\r
+    viewed here: http://www.freertos.org/a00114.html and also obtained by\r
+    writing to Real Time Engineers Ltd., contact details for whom are available\r
+    on the FreeRTOS WEB site.\r
+\r
+    1 tab == 4 spaces!\r
+\r
+    ***************************************************************************\r
+     *                                                                       *\r
+     *    Having a problem?  Start by reading the FAQ "My application does   *\r
+     *    not run, what could be wrong?"                                     *\r
+     *                                                                       *\r
+     *    http://www.FreeRTOS.org/FAQHelp.html                               *\r
+     *                                                                       *\r
+    ***************************************************************************\r
+\r
+\r
+    http://www.FreeRTOS.org - Documentation, books, training, latest versions,\r
+    license and Real Time Engineers Ltd. contact details.\r
+\r
+    http://www.FreeRTOS.org/plus - A selection of FreeRTOS ecosystem products,\r
+    including FreeRTOS+Trace - an indispensable productivity tool, and our new\r
+    fully thread aware and reentrant UDP/IP stack.\r
+\r
+    http://www.OpenRTOS.com - Real Time Engineers ltd license FreeRTOS to High\r
+    Integrity Systems, who sell the code with commercial support,\r
+    indemnification and middleware, under the OpenRTOS brand.\r
+\r
+    http://www.SafeRTOS.com - High Integrity Systems also provide a safety\r
+    engineered and independently SIL3 certified version for use in safety and\r
+    mission critical applications that require provable dependability.\r
+*/\r
+\r
+/* Standard includes. */\r
+#include "limits.h"\r
+\r
+/* FreeRTOS includes. */\r
+#include "FreeRTOS.h"\r
+#include "task.h"\r
+\r
+/* Library includes. */\r
+#include <asf.h>\r
+\r
+\r
+/*\r
+ * When configCREATE_LOW_POWER_DEMO is set to 1 then the tick interrupt\r
+ * is generated by the AST.  The AST configuration and handling functions are\r
+ * defined in this file.\r
+ *\r
+ * When configCREATE_LOW_POWER_DEMO is set to 0 the tick interrupt is\r
+ * generated by the standard FreeRTOS Cortex-M port layer, which uses the\r
+ * SysTick timer.\r
+ */\r
+#if configCREATE_LOW_POWER_DEMO == 1\r
+\r
+/* Constants required to pend a PendSV interrupt from the tick ISR if the\r
+preemptive scheduler is being used.  These are just standard bits and registers\r
+within the Cortex-M core itself. */\r
+#define portNVIC_INT_CTRL_REG  ( * ( ( volatile unsigned long * ) 0xe000ed04 ) )\r
+#define portNVIC_PENDSVSET_BIT ( 1UL << 28UL )\r
+\r
+/* The alarm used to generate interrupts in the asynchronous timer. */\r
+#define portAST_ALARM_CHANNEL  0\r
+\r
+/*-----------------------------------------------------------*/\r
+\r
+/*\r
+ * The tick interrupt is generated by the asynchronous timer.  The default tick\r
+ * interrupt handler cannot be used (even with the AST being handled from the\r
+ * tick hook function) because the default tick interrupt accesses the SysTick\r
+ * registers when configUSE_TICKLESS_IDLE set to 1.  AST_ALARM_Handler() is the\r
+ * default name for the AST alarm interrupt.  This definition overrides the\r
+ * default implementation that is weakly defined in the interrupt vector table\r
+ * file.\r
+ */\r
+void AST_ALARM_Handler(void);\r
+\r
+/*-----------------------------------------------------------*/\r
+\r
+/* Calculate how many clock increments make up a single tick period. */\r
+static const uint32_t ulAlarmValueForOneTick = ( configSYSTICK_CLOCK_HZ / configTICK_RATE_HZ );\r
+\r
+/* Holds the maximum number of ticks that can be suppressed - which is\r
+basically how far into the future an interrupt can be generated. Set\r
+during initialisation. */\r
+static portTickType xMaximumPossibleSuppressedTicks = 0;\r
+\r
+/* Flag set from the tick interrupt to allow the sleep processing to know if\r
+sleep mode was exited because of an AST interrupt or a different interrupt. */\r
+static volatile uint32_t ulTickFlag = pdFALSE;\r
+\r
+/* The AST counter is stopped temporarily each time it is re-programmed.  The\r
+following variable offsets the AST counter alarm value by the number of AST\r
+counts that would typically be missed while the counter was stopped to compensate\r
+for the lost time.  _RB_ Value needs calculating correctly. */\r
+static uint32_t ulStoppedTimerCompensation = 10 / ( configCPU_CLOCK_HZ / configSYSTICK_CLOCK_HZ );\r
+\r
+/*-----------------------------------------------------------*/\r
+\r
+/* The tick interrupt handler.  This is always the same other than the part that\r
+clears the interrupt, which is specific to the clock being used to generate the\r
+tick. */\r
+void AST_ALARM_Handler(void)\r
+{\r
+       /* If using preemption, also force a context switch by pending the PendSV\r
+       interrupt. */\r
+       #if configUSE_PREEMPTION == 1\r
+       {\r
+               portNVIC_INT_CTRL_REG = portNVIC_PENDSVSET_BIT;\r
+       }\r
+       #endif\r
+\r
+       /* Protect incrementing the tick with an interrupt safe critical section. */\r
+       ( void ) portSET_INTERRUPT_MASK_FROM_ISR();\r
+       {\r
+               vTaskIncrementTick();\r
+\r
+               /* Just completely clear the interrupt mask on exit by passing 0 because\r
+               it is known that this interrupt will only ever execute with the lowest\r
+               possible interrupt priority. */\r
+       }\r
+       portCLEAR_INTERRUPT_MASK_FROM_ISR( 0 );\r
+\r
+       /* The CPU woke because of a tick. */\r
+       ulTickFlag = pdTRUE;\r
+\r
+       /* If this is the first tick since exiting tickless mode then the AST needs\r
+       to be reconfigured to generate interrupts at the defined tick frequency. */\r
+       ast_write_alarm0_value( AST, ulAlarmValueForOneTick );\r
+\r
+       /* Ensure the interrupt is clear before exiting. */\r
+       ast_clear_interrupt_flag( AST, AST_INTERRUPT_ALARM );\r
+}\r
+/*-----------------------------------------------------------*/\r
+\r
+/* Override the default definition of vPortSetupTimerInterrupt() that is weakly\r
+defined in the FreeRTOS Cortex-M3 port layer layer with a version that\r
+configures the asynchronous timer (AST) to generate the tick interrupt. */\r
+void vPortSetupTimerInterrupt( void )\r
+{\r
+struct ast_config ast_conf;\r
+\r
+       /* Ensure the AST can bring the CPU out of sleep mode. */\r
+       sleepmgr_lock_mode( SLEEPMGR_RET );\r
+\r
+       /* Ensure the 32KHz oscillator is enabled. */\r
+       if( osc_is_ready( OSC_ID_OSC32 ) == pdFALSE )\r
+       {\r
+               osc_enable( OSC_ID_OSC32 );\r
+               osc_wait_ready( OSC_ID_OSC32 );\r
+       }\r
+\r
+       /* Enable the AST itself. */\r
+       ast_enable( AST );\r
+\r
+       ast_conf.mode = AST_COUNTER_MODE;  /* Simple up counter. */\r
+       ast_conf.osc_type = AST_OSC_32KHZ;\r
+       ast_conf.psel = 0; /* No prescale so the actual frequency is 32KHz/2. */\r
+       ast_conf.counter = 0;\r
+       ast_set_config( AST, &ast_conf );\r
+\r
+       /* The AST alarm interrupt is used as the tick interrupt.  Ensure the alarm\r
+       status starts clear. */\r
+       ast_clear_interrupt_flag( AST, AST_INTERRUPT_ALARM );\r
+\r
+       /* Enable wakeup from alarm 0 in the AST and power manager.  */\r
+       ast_enable_wakeup( AST, AST_WAKEUP_ALARM );\r
+       bpm_enable_wakeup_source( BPM, ( 1 << BPM_BKUPWEN_AST ) );\r
+\r
+       /* Tick interrupt MUST execute at the lowest interrupt priority. */\r
+       NVIC_SetPriority( AST_ALARM_IRQn, configLIBRARY_LOWEST_INTERRUPT_PRIORITY);\r
+       ast_enable_interrupt( AST, AST_INTERRUPT_ALARM );\r
+       NVIC_ClearPendingIRQ( AST_ALARM_IRQn );\r
+       NVIC_EnableIRQ( AST_ALARM_IRQn );\r
+\r
+       /* Automatically clear the counter on interrupt. */\r
+       ast_enable_counter_clear_on_alarm( AST, portAST_ALARM_CHANNEL );\r
+\r
+       /* Start with the tick active and generating a tick with regular period. */\r
+       ast_write_alarm0_value( AST, ulAlarmValueForOneTick );\r
+       ast_write_counter_value( AST, 0 );\r
+\r
+       /* See the comments where xMaximumPossibleSuppressedTicks is declared. */\r
+       xMaximumPossibleSuppressedTicks = ULONG_MAX / ulAlarmValueForOneTick;\r
+}\r
+/*-----------------------------------------------------------*/\r
+\r
+void prvDisableAST( void )\r
+{\r
+       while( ast_is_busy( AST ) )\r
+       {\r
+               /* Nothing to do here, just waiting. */\r
+       }\r
+       AST->AST_CR &= ~( AST_CR_EN );\r
+       while( ast_is_busy( AST ) )\r
+       {\r
+               /* Nothing to do here, just waiting. */\r
+       }\r
+}\r
+/*-----------------------------------------------------------*/\r
+\r
+void prvEnableAST( void )\r
+{\r
+       while( ast_is_busy( AST ) )\r
+       {\r
+               /* Nothing to do here, just waiting. */\r
+       }\r
+       AST->AST_CR |= AST_CR_EN;\r
+       while( ast_is_busy( AST ) )\r
+       {\r
+               /* Nothing to do here, just waiting. */\r
+       }\r
+}\r
+/*-----------------------------------------------------------*/\r
+\r
+/* Override the default definition of vPortSuppressTicksAndSleep() that is weakly\r
+defined in the FreeRTOS Cortex-M3 port layer layer with a version that manages\r
+the asynchronous timer (AST), as the tick is generated from the low power AST\r
+and not the SysTick as would normally be the case on a Cortex-M. */\r
+void vPortSuppressTicksAndSleep( portTickType xExpectedIdleTime )\r
+{\r
+uint32_t ulAlarmValue, ulCompleteTickPeriods;\r
+eSleepModeStatus eSleepAction;\r
+portTickType xModifiableIdleTime;\r
+\r
+       /* THIS FUNCTION IS CALLED WITH THE SCHEDULER SUSPENDED. */\r
+\r
+       /* Make sure the AST reload value does not overflow the counter. */\r
+       if( xExpectedIdleTime > xMaximumPossibleSuppressedTicks )\r
+       {\r
+               xExpectedIdleTime = xMaximumPossibleSuppressedTicks;\r
+       }\r
+\r
+       /* Calculate the reload value required to wait xExpectedIdleTime tick\r
+       periods.  -1 is used because this code will execute part way through one of\r
+       the tick periods, and the fraction of a tick period is accounted for\r
+       later. */\r
+       ulAlarmValue = ( ulAlarmValueForOneTick * ( xExpectedIdleTime - 1UL ) );\r
+       if( ulAlarmValue > ulStoppedTimerCompensation )\r
+       {\r
+               /* Compensate for the fact that the AST is going to be stopped\r
+               momentarily. */\r
+               ulAlarmValue -= ulStoppedTimerCompensation;\r
+       }\r
+\r
+       /* Stop the AST momentarily.  The time the AST is stopped for is accounted\r
+       for as best it can be, but using the tickless mode will inevitably result in\r
+       some tiny drift of the time maintained by the kernel with respect to\r
+       calendar time. */\r
+       prvDisableAST();\r
+\r
+       /* Enter a critical section but don't use the taskENTER_CRITICAL() method as\r
+       that will mask interrupts that should exit sleep mode. */\r
+       __asm volatile( "cpsid i                \n\t"\r
+                                       "dsb                    \n\t" );\r
+\r
+       /* The tick flag is set to false before sleeping.  If it is true when sleep\r
+       mode is exited then sleep mode was probably exited because the tick was\r
+       suppressed for the entire xExpectedIdleTime period. */\r
+       ulTickFlag = pdFALSE;\r
+\r
+       /* If a context switch is pending then abandon the low power entry as\r
+       the context switch might have been pended by an external interrupt that\r
+       requires processing. */\r
+       eSleepAction = eTaskConfirmSleepModeStatus();\r
+       if( eSleepAction == eAbortSleep )\r
+       {\r
+               /* Restart tick. */\r
+               prvEnableAST();\r
+\r
+               /* Re-enable interrupts - see comments above the cpsid instruction()\r
+               above. */\r
+               __asm volatile( "cpsie i" );\r
+       }\r
+       else\r
+       {\r
+               /* Adjust the alarm value to take into account that the current time\r
+               slice is already partially complete. */\r
+               ulAlarmValue -= ast_read_counter_value( AST );\r
+               ast_write_alarm0_value( AST, ulAlarmValue );\r
+\r
+               /* Restart the AST. */\r
+               prvEnableAST();\r
+\r
+               /* Allow the application to define some pre-sleep processing. */\r
+               xModifiableIdleTime = xExpectedIdleTime;\r
+               configPRE_SLEEP_PROCESSING( xModifiableIdleTime );\r
+\r
+               /* xExpectedIdleTime being set to 0 by configPRE_SLEEP_PROCESSING()\r
+               means the application defined code has already executed the WAIT\r
+               instruction. */\r
+               if( xModifiableIdleTime > 0 )\r
+               {\r
+                       /* Sleep until something happens. */\r
+                       sleepmgr_enter_sleep();\r
+               }\r
+\r
+               /* Allow the application to define some post sleep processing. */\r
+               configPOST_SLEEP_PROCESSING( xModifiableIdleTime );\r
+\r
+               /* Stop AST.  Again, the time the SysTick is stopped for is     accounted\r
+               for as best it can be, but using the tickless mode will inevitably\r
+               result in some tiny drift of the time maintained by the kernel with\r
+               respect to calendar time. */\r
+               prvDisableAST();\r
+\r
+               /* Re-enable interrupts - see comments above the cpsid instruction()\r
+               above. */\r
+#warning The sleep manager will have re-enabled interrupts already, does this matter?\r
+               __asm volatile( "cpsie i" );\r
+\r
+               if( ulTickFlag != pdFALSE )\r
+               {\r
+                       /* The tick interrupt has already executed, although because this\r
+                       function is called with the scheduler suspended the actual tick\r
+                       processing will not occur until after this function has exited.\r
+                       Reset the alarm value with whatever remains of this tick period. */\r
+                       ulAlarmValue = ulAlarmValueForOneTick - ast_read_counter_value( AST );\r
+                       ast_write_alarm0_value( AST, ulAlarmValue );\r
+\r
+                       /* The tick interrupt handler will already have pended the tick\r
+                       processing in the kernel.  As the pending tick will be processed as\r
+                       soon as this function exits, the tick value     maintained by the tick\r
+                       is stepped forward by one less than the time spent sleeping.  The\r
+                       actual stepping of the tick appears later in this function. */\r
+                       ulCompleteTickPeriods = xExpectedIdleTime - 1UL;\r
+               }\r
+               else\r
+               {\r
+                       /* Something other than the tick interrupt ended the sleep.  How\r
+                       many complete tick periods passed while the processor was\r
+                       sleeping? */\r
+                       ulCompleteTickPeriods = ast_read_counter_value( AST ) / ulAlarmValueForOneTick;\r
+\r
+                       /* The alarm value is set to whatever fraction of a single tick\r
+                       period remains. */\r
+                       ulAlarmValue = ast_read_counter_value( AST ) - ( ulCompleteTickPeriods * ulAlarmValueForOneTick );\r
+                       ast_write_alarm0_value( AST, ulAlarmValue );\r
+               }\r
+\r
+               /* Restart the AST so it runs up to the alarm value.  The alarm value\r
+               will get set to the value required to generate exactly one tick period\r
+               the next time the AST interrupt executes. */\r
+               prvEnableAST();\r
+\r
+               /* Wind the tick forward by the number of tick periods that the CPU\r
+               remained in a low power state. */\r
+               vTaskStepTick( ulCompleteTickPeriods );\r
+       }\r
+}\r
+\r
+\r
+#endif /* configCREATE_LOW_POWER_DEMO == 1 */\r
+\r
diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/asf.h b/FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/asf.h
new file mode 100644 (file)
index 0000000..5af6233
--- /dev/null
@@ -0,0 +1,92 @@
+/**\r
+ * \file\r
+ *\r
+ * \brief Autogenerated API include file for the Atmel Software Framework (ASF)\r
+ *\r
+ * Copyright (c) 2012 Atmel Corporation. All rights reserved.\r
+ *\r
+ * \asf_license_start\r
+ *\r
+ * \page License\r
+ *\r
+ * Redistribution and use in source and binary forms, with or without\r
+ * modification, are permitted provided that the following conditions are met:\r
+ *\r
+ * 1. Redistributions of source code must retain the above copyright notice,\r
+ *    this list of conditions and the following disclaimer.\r
+ *\r
+ * 2. Redistributions in binary form must reproduce the above copyright notice,\r
+ *    this list of conditions and the following disclaimer in the documentation\r
+ *    and/or other materials provided with the distribution.\r
+ *\r
+ * 3. The name of Atmel may not be used to endorse or promote products derived\r
+ *    from this software without specific prior written permission.\r
+ *\r
+ * 4. This software may only be redistributed and used in connection with an\r
+ *    Atmel microcontroller product.\r
+ *\r
+ * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED\r
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\r
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE\r
+ * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR\r
+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\r
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS\r
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)\r
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,\r
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\r
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\r
+ * POSSIBILITY OF SUCH DAMAGE.\r
+ *\r
+ * \asf_license_stop\r
+ *\r
+ */\r
+\r
+#ifndef ASF_H\r
+#define ASF_H\r
+\r
+/*\r
+ * This file includes all API header files for the selected drivers from ASF.\r
+ * Note: There might be duplicate includes required by more than one driver.\r
+ *\r
+ * The file is automatically generated and will be re-written when\r
+ * running the ASF driver selector tool. Any changes will be discarded.\r
+ */\r
+\r
+// From module: AST - Asynchronous Timer\r
+#include <ast.h>\r
+\r
+// From module: Common SAM compiler driver\r
+#include <compiler.h>\r
+#include <status_codes.h>\r
+\r
+// From module: FLASHCALW Controller Software Driver\r
+#include <flashcalw.h>\r
+\r
+// From module: Generic board support\r
+#include <board.h>\r
+\r
+// From module: IOPORT - General purpose I/O service\r
+#include <ioport.h>\r
+\r
+// From module: Interrupt management - SAM3 implementation\r
+#include <interrupt.h>\r
+\r
+// From module: Part identification macros\r
+#include <parts.h>\r
+\r
+// From module: Power Management\r
+#include <bpm.h>\r
+#include <sleep.h>\r
+\r
+// From module: SAM4L startup code\r
+#include <exceptions.h>\r
+#include <system_sam4l.h>\r
+\r
+// From module: Sleep manager - SAM4L implementation\r
+#include <sam4l/sleepmgr.h>\r
+#include <sleepmgr.h>\r
+\r
+// From module: System Clock Control - SAM4L implementation\r
+#include <sysclk.h>\r
+\r
+#endif // ASF_H\r
diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/asf/common/boards/board.h b/FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/asf/common/boards/board.h
new file mode 100644 (file)
index 0000000..aa313d6
--- /dev/null
@@ -0,0 +1,328 @@
+/**\r
+ * \file\r
+ *\r
+ * \brief Standard board header file.\r
+ *\r
+ * This file includes the appropriate board header file according to the\r
+ * defined board (parameter BOARD).\r
+ *\r
+ * Copyright (c) 2009-2013 Atmel Corporation. All rights reserved.\r
+ *\r
+ * \asf_license_start\r
+ *\r
+ * \page License\r
+ *\r
+ * Redistribution and use in source and binary forms, with or without\r
+ * modification, are permitted provided that the following conditions are met:\r
+ *\r
+ * 1. Redistributions of source code must retain the above copyright notice,\r
+ *    this list of conditions and the following disclaimer.\r
+ *\r
+ * 2. Redistributions in binary form must reproduce the above copyright notice,\r
+ *    this list of conditions and the following disclaimer in the documentation\r
+ *    and/or other materials provided with the distribution.\r
+ *\r
+ * 3. The name of Atmel may not be used to endorse or promote products derived\r
+ *    from this software without specific prior written permission.\r
+ *\r
+ * 4. This software may only be redistributed and used in connection with an\r
+ *    Atmel microcontroller product.\r
+ *\r
+ * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED\r
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\r
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE\r
+ * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR\r
+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\r
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS\r
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)\r
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,\r
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\r
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\r
+ * POSSIBILITY OF SUCH DAMAGE.\r
+ *\r
+ * \asf_license_stop\r
+ *\r
+ */\r
+\r
+#ifndef _BOARD_H_\r
+#define _BOARD_H_\r
+\r
+/**\r
+ * \defgroup group_common_boards Generic board support\r
+ *\r
+ * The generic board support module includes board-specific definitions\r
+ * and function prototypes, such as the board initialization function.\r
+ *\r
+ * \{\r
+ */\r
+\r
+#include "compiler.h"\r
+\r
+#ifdef __cplusplus\r
+extern "C" {\r
+#endif\r
+\r
+\r
+/*! \name Base Boards\r
+ */\r
+//! @{\r
+#define EVK1100                     1  //!< AT32UC3A EVK1100 board.\r
+#define EVK1101                     2  //!< AT32UC3B EVK1101 board.\r
+#define UC3C_EK                     3  //!< AT32UC3C UC3C_EK board.\r
+#define EVK1104                     4  //!< AT32UC3A3 EVK1104 board.\r
+#define EVK1105                     5  //!< AT32UC3A EVK1105 board.\r
+#define STK600_RCUC3L0              6  //!< STK600 RCUC3L0 board.\r
+#define UC3L_EK                     7  //!< AT32UC3L-EK board.\r
+#define XPLAIN                      8  //!< ATxmega128A1 Xplain board.\r
+#define STK600_RC064X              10  //!< ATxmega256A3 STK600 board.\r
+#define STK600_RC100X              11  //!< ATxmega128A1 STK600 board.\r
+#define UC3_A3_XPLAINED            13  //!< ATUC3A3 UC3-A3 Xplained board.\r
+#define UC3_L0_XPLAINED            15  //!< ATUC3L0 UC3-L0 Xplained board.\r
+#define STK600_RCUC3D              16  //!< STK600 RCUC3D board.\r
+#define STK600_RCUC3C0             17  //!< STK600 RCUC3C board.\r
+#define XMEGA_B1_XPLAINED          18  //!< ATxmega128B1 Xplained board.\r
+#define XMEGA_A1_XPLAINED          19  //!< ATxmega128A1 Xplain-A1 board.\r
+#define STK600_RCUC3L4             21  //!< ATUCL4 STK600 board\r
+#define UC3_L0_XPLAINED_BC         22  //!< ATUC3L0 UC3-L0 Xplained board controller board\r
+#define MEGA1284P_XPLAINED_BC      23  //!< ATmega1284P-Xplained board controller board\r
+#define STK600_RC044X              24  //!< STK600 with RC044X routing card board.\r
+#define STK600_RCUC3B0             25  //!< STK600 RCUC3B0 board.\r
+#define UC3_L0_QT600               26  //!< QT600 UC3L0 MCU board.\r
+#define XMEGA_A3BU_XPLAINED        27  //!< ATxmega256A3BU Xplained board.\r
+#define STK600_RC064X_LCDX         28  //!< XMEGAB3 STK600 RC064X LCDX board.\r
+#define STK600_RC100X_LCDX         29  //!< XMEGAB1 STK600 RC100X LCDX board.\r
+#define UC3B_BOARD_CONTROLLER      30  //!< AT32UC3B1 board controller for Atmel boards\r
+#define RZ600                      31  //!< AT32UC3A RZ600 MCU board\r
+#define SAM3S_EK                   32  //!< SAM3S-EK board.\r
+#define SAM3U_EK                   33  //!< SAM3U-EK board.\r
+#define SAM3X_EK                   34  //!< SAM3X-EK board.\r
+#define SAM3N_EK                   35  //!< SAM3N-EK board.\r
+#define SAM3S_EK2                  36  //!< SAM3S-EK2 board.\r
+#define SAM4S_EK                   37  //!< SAM4S-EK board.\r
+#define STK600_RCUC3A0             38  //!< STK600 RCUC3A0 board.\r
+#define STK600_MEGA                39  //!< STK600 MEGA board.\r
+#define MEGA_1284P_XPLAINED        40  //!< ATmega1284P Xplained board.\r
+#define SAM4S_XPLAINED             41  //!< SAM4S Xplained board.\r
+#define ATXMEGA128A1_QT600         42  //!< QT600 ATXMEGA128A1 MCU board.\r
+#define ARDUINO_DUE_X              43  //!< Arduino Due/X board.\r
+#define STK600_RCUC3L3             44  //!< ATUCL3 STK600 board\r
+#define SAM4L_EK                   45  //!< SAM4L-EK board.\r
+#define STK600_MEGA_RF             46  //!< STK600 MEGA RF EVK board.\r
+#define XMEGA_C3_XPLAINED          47  //!< ATxmega384C3 Xplained board.\r
+#define STK600_RC032X              48  //!< STK600 with RC032X routing card board.\r
+#define SAM4S_EK2                  49  //!< SAM4S-EK2 board.\r
+#define XMEGA_E5_XPLAINED          50  //!< ATxmega32E5 Xplained board.\r
+#define SAM4E_EK                   51  //!< SAM4E-EK board.\r
+#define ATMEGA256RFR2_XPLAINED_PRO 52  //!< ATmega256RFR2 Xplained Pro board.\r
+#define SAM4S_XPLAINED_PRO         53  //!< SAM4S Xplained Pro board.\r
+#define SAM4L_XPLAINED_PRO         54  //!< SAM4L Xplained Pro board.\r
+#define ATMEGA256RFR2_ZIGBIT       55  //!< ATmega256RFR2 zigbit\r
+#define XMEGA_RF233_ZIGBIT         56  //!< ATxmega256A3U with AT86RF233 zigbit\r
+#define XMEGA_RF212B_ZIGBIT        57  //!< ATxmega256A3U with AT86RF212B zigbit\r
+#define SIMULATOR_XMEGA_A1         97  //!< Simulator for XMEGA A1 devices\r
+#define AVR_SIMULATOR_UC3          98  //!< AVR SIMULATOR for AVR UC3 device family.\r
+#define USER_BOARD                 99  //!< User-reserved board (if any).\r
+#define DUMMY_BOARD               100  //!< Dummy board to support board-independent applications (e.g. bootloader)\r
+//! @}\r
+\r
+/*! \name Extension Boards\r
+ */\r
+//! @{\r
+#define EXT1102                      1  //!< AT32UC3B EXT1102 board\r
+#define MC300                        2  //!< AT32UC3 MC300 board\r
+#define SENSORS_XPLAINED_INERTIAL_1  3  //!< Xplained inertial sensor board 1\r
+#define SENSORS_XPLAINED_INERTIAL_2  4  //!< Xplained inertial sensor board 2\r
+#define SENSORS_XPLAINED_PRESSURE_1  5  //!< Xplained pressure sensor board\r
+#define SENSORS_XPLAINED_LIGHTPROX_1 6  //!< Xplained light & proximity sensor board\r
+#define SENSORS_XPLAINED_INERTIAL_A1 7  //!< Xplained inertial sensor board "A"\r
+#define RZ600_AT86RF231              8  //!< AT86RF231 RF board in RZ600\r
+#define RZ600_AT86RF230B             9  //!< AT86RF230B RF board in RZ600\r
+#define RZ600_AT86RF212             10  //!< AT86RF212 RF board in RZ600\r
+#define SENSORS_XPLAINED_BREADBOARD 11  //!< Xplained sensor development breadboard\r
+#define SECURITY_XPLAINED           12  //!< Xplained ATSHA204 board\r
+#define USER_EXT_BOARD              99  //!< User-reserved extension board (if any).\r
+//! @}\r
+\r
+#if BOARD == EVK1100\r
+#  include "evk1100/evk1100.h"\r
+#elif BOARD == EVK1101\r
+#  include "evk1101/evk1101.h"\r
+#elif BOARD == UC3C_EK\r
+#  include "uc3c_ek/uc3c_ek.h"\r
+#elif BOARD == EVK1104\r
+#  include "evk1104/evk1104.h"\r
+#elif BOARD == EVK1105\r
+#  include "evk1105/evk1105.h"\r
+#elif BOARD == STK600_RCUC3L0\r
+#  include "stk600/rcuc3l0/stk600_rcuc3l0.h"\r
+#elif BOARD == UC3L_EK\r
+#  include "uc3l_ek/uc3l_ek.h"\r
+#elif BOARD == STK600_RCUC3L4\r
+#  include "stk600/rcuc3l4/stk600_rcuc3l4.h"\r
+#elif BOARD == XPLAIN\r
+#  include "xplain/xplain.h"\r
+#elif BOARD == STK600_MEGA\r
+  /*No header-file to include*/\r
+#elif BOARD == STK600_MEGA_RF\r
+#  include "stk600.h"\r
+#elif BOARD == ATMEGA256RFR2_XPLAINED_PRO\r
+#  include "atmega256rfr2_xplained_pro/atmega256rfr2_xplained_pro.h"\r
+#elif BOARD == ATMEGA256RFR2_ZIGBIT\r
+#  include "atmega256rfr2_zigbit/atmega256rfr2_zigbit.h"\r
+#elif BOARD == STK600_RC032X\r
+#  include "stk600/rc032x/stk600_rc032x.h"\r
+#elif BOARD == STK600_RC044X\r
+#  include "stk600/rc044x/stk600_rc044x.h"\r
+#elif BOARD == STK600_RC064X\r
+#  include "stk600/rc064x/stk600_rc064x.h"\r
+#elif BOARD == STK600_RC100X\r
+#  include "stk600/rc100x/stk600_rc100x.h"\r
+#elif BOARD == UC3_A3_XPLAINED\r
+#  include "uc3_a3_xplained/uc3_a3_xplained.h"\r
+#elif BOARD == UC3_L0_XPLAINED\r
+#  include "uc3_l0_xplained/uc3_l0_xplained.h"\r
+#elif BOARD == STK600_RCUC3B0\r
+#  include "stk600/rcuc3b0/stk600_rcuc3b0.h"\r
+#elif BOARD == STK600_RCUC3D\r
+#  include "stk600/rcuc3d/stk600_rcuc3d.h"\r
+#elif BOARD == STK600_RCUC3C0\r
+#  include "stk600/rcuc3c0/stk600_rcuc3c0.h"\r
+#elif BOARD == XMEGA_B1_XPLAINED\r
+#  include "xmega_b1_xplained/xmega_b1_xplained.h"\r
+#elif BOARD == STK600_RC064X_LCDX\r
+#  include "stk600/rc064x_lcdx/stk600_rc064x_lcdx.h"\r
+#elif BOARD == STK600_RC100X_LCDX\r
+#  include "stk600/rc100x_lcdx/stk600_rc100x_lcdx.h"\r
+#elif BOARD == XMEGA_A1_XPLAINED\r
+#  include "xmega_a1_xplained/xmega_a1_xplained.h"\r
+#elif BOARD == UC3_L0_XPLAINED_BC\r
+#  include "uc3_l0_xplained_bc/uc3_l0_xplained_bc.h"\r
+#elif BOARD == SAM3S_EK\r
+#  include "sam3s_ek/sam3s_ek.h"\r
+#  include "system_sam3s.h"\r
+#elif BOARD == SAM3S_EK2\r
+#  include "sam3s_ek2/sam3s_ek2.h"\r
+#  include "system_sam3sd8.h"\r
+#elif BOARD == SAM3U_EK\r
+#  include "sam3u_ek/sam3u_ek.h"\r
+#  include "system_sam3u.h"\r
+#elif BOARD == SAM3X_EK\r
+#  include "sam3x_ek/sam3x_ek.h"\r
+#  include "system_sam3x.h"\r
+#elif BOARD == SAM3N_EK\r
+#  include "sam3n_ek/sam3n_ek.h"\r
+#  include "system_sam3n.h"\r
+#elif BOARD == SAM4S_EK\r
+#  include "sam4s_ek/sam4s_ek.h"\r
+#  include "system_sam4s.h"\r
+#elif BOARD == SAM4S_XPLAINED\r
+#  include "sam4s_xplained/sam4s_xplained.h"\r
+#  include "system_sam4s.h"\r
+#elif BOARD == SAM4S_EK2\r
+#  include "sam4s_ek2/sam4s_ek2.h"\r
+#  include "system_sam4s.h"\r
+#elif BOARD == MEGA_1284P_XPLAINED\r
+  /*No header-file to include*/\r
+#elif BOARD == ARDUINO_DUE_X\r
+#  include "arduino_due_x/arduino_due_x.h"\r
+#  include "system_sam3x.h"\r
+#elif BOARD == SAM4L_EK\r
+#  include "sam4l_ek/sam4l_ek.h"\r
+#elif BOARD == SAM4E_EK\r
+#  include "sam4e_ek/sam4e_ek.h"\r
+#elif BOARD == MEGA1284P_XPLAINED_BC\r
+#  include "mega1284p_xplained_bc/mega1284p_xplained_bc.h"\r
+#elif BOARD == UC3_L0_QT600\r
+#  include "uc3_l0_qt600/uc3_l0_qt600.h"\r
+#elif BOARD == XMEGA_A3BU_XPLAINED\r
+#  include "xmega_a3bu_xplained/xmega_a3bu_xplained.h"\r
+#elif BOARD == XMEGA_E5_XPLAINED\r
+#  include "xmega_e5_xplained/xmega_e5_xplained.h"\r
+#elif BOARD == UC3B_BOARD_CONTROLLER\r
+#  include "uc3b_board_controller/uc3b_board_controller.h"\r
+#elif BOARD == RZ600\r
+#  include "rz600/rz600.h"\r
+#elif BOARD == STK600_RCUC3A0\r
+#  include "stk600/rcuc3a0/stk600_rcuc3a0.h"\r
+#elif BOARD == ATXMEGA128A1_QT600\r
+#  include "atxmega128a1_qt600/atxmega128a1_qt600.h"\r
+#elif BOARD == STK600_RCUC3L3\r
+#  include "stk600/rcuc3l3/stk600_rcuc3l3.h"\r
+#elif BOARD == SAM4S_XPLAINED_PRO\r
+#  include "sam4s_xplained_pro/sam4s_xplained_pro.h"\r
+#elif BOARD == SAM4L_XPLAINED_PRO\r
+#  include "sam4l_xplained_pro/sam4l_xplained_pro.h"\r
+#elif BOARD == SIMULATOR_XMEGA_A1\r
+#  include "simulator/xmega_a1/simulator_xmega_a1.h"\r
+#elif BOARD == XMEGA_C3_XPLAINED\r
+#  include "xmega_c3_xplained/xmega_c3_xplained.h"\r
+#elif BOARD == XMEGA_RF233_ZIGBIT\r
+#  include "xmega_rf233_zigbit/xmega_rf233_zigbit.h"\r
+#elif BOARD == XMEGA_RF212B_ZIGBIT\r
+#  include "xmega_rf212b_zigbit/xmega_rf212b_zigbit.h"\r
+#elif BOARD == AVR_SIMULATOR_UC3\r
+#  include "avr_simulator_uc3/avr_simulator_uc3.h"\r
+#elif BOARD == USER_BOARD\r
+  // User-reserved area: #include the header file of your board here (if any).\r
+#  include "user_board.h"\r
+#elif BOARD == DUMMY_BOARD\r
+#  include "dummy/dummy_board.h"\r
+#else\r
+#  error No known Atmel board defined\r
+#endif\r
+\r
+#if (defined EXT_BOARD)\r
+#  if EXT_BOARD == MC300\r
+#    include "mc300/mc300.h"\r
+#  elif (EXT_BOARD == SENSORS_XPLAINED_INERTIAL_1)  || \\r
+        (EXT_BOARD == SENSORS_XPLAINED_INERTIAL_2)  || \\r
+        (EXT_BOARD == SENSORS_XPLAINED_INERTIAL_A1) || \\r
+        (EXT_BOARD == SENSORS_XPLAINED_PRESSURE_1)  || \\r
+        (EXT_BOARD == SENSORS_XPLAINED_LIGHTPROX_1) || \\r
+        (EXT_BOARD == SENSORS_XPLAINED_BREADBOARD)\r
+#    include "sensors_xplained/sensors_xplained.h"\r
+#  elif EXT_BOARD == RZ600_AT86RF231\r
+#     include "at86rf231/at86rf231.h"\r
+#  elif EXT_BOARD == RZ600_AT86RF230B\r
+#    include "at86rf230b/at86rf230b.h"\r
+#  elif EXT_BOARD == RZ600_AT86RF212\r
+#    include "at86rf212/at86rf212.h"\r
+#  elif EXT_BOARD == SECURITY_XPLAINED\r
+#    include "security_xplained.h"\r
+#  elif EXT_BOARD == USER_EXT_BOARD\r
+    // User-reserved area: #include the header file of your extension board here\r
+    // (if any).\r
+#  endif\r
+#endif\r
+\r
+\r
+#if (defined(__GNUC__) && defined(__AVR32__)) || (defined(__ICCAVR32__) || defined(__AAVR32__))\r
+#ifdef __AVR32_ABI_COMPILER__ // Automatically defined when compiling for AVR32, not when assembling.\r
+\r
+/*! \brief This function initializes the board target resources\r
+ *\r
+ * This function should be called to ensure proper initialization of the target\r
+ * board hardware connected to the part.\r
+ */\r
+extern void board_init(void);\r
+\r
+#endif  // #ifdef __AVR32_ABI_COMPILER__\r
+#else\r
+/*! \brief This function initializes the board target resources\r
+ *\r
+ * This function should be called to ensure proper initialization of the target\r
+ * board hardware connected to the part.\r
+ */\r
+extern void board_init(void);\r
+#endif\r
+\r
+\r
+#ifdef __cplusplus\r
+}\r
+#endif\r
+\r
+/**\r
+ * \}\r
+ */\r
+\r
+#endif  // _BOARD_H_\r
diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/asf/common/services/clock/dfll.h b/FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/asf/common/services/clock/dfll.h
new file mode 100644 (file)
index 0000000..af686d0
--- /dev/null
@@ -0,0 +1,399 @@
+/**\r
+ * \file\r
+ *\r
+ * \brief DFLL management\r
+ *\r
+ * Copyright (c) 2010-2012 Atmel Corporation. All rights reserved.\r
+ *\r
+ * \asf_license_start\r
+ *\r
+ * \page License\r
+ *\r
+ * Redistribution and use in source and binary forms, with or without\r
+ * modification, are permitted provided that the following conditions are met:\r
+ *\r
+ * 1. Redistributions of source code must retain the above copyright notice,\r
+ *    this list of conditions and the following disclaimer.\r
+ *\r
+ * 2. Redistributions in binary form must reproduce the above copyright notice,\r
+ *    this list of conditions and the following disclaimer in the documentation\r
+ *    and/or other materials provided with the distribution.\r
+ *\r
+ * 3. The name of Atmel may not be used to endorse or promote products derived\r
+ *    from this software without specific prior written permission.\r
+ *\r
+ * 4. This software may only be redistributed and used in connection with an\r
+ *    Atmel microcontroller product.\r
+ *\r
+ * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED\r
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\r
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE\r
+ * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR\r
+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\r
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS\r
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)\r
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,\r
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\r
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\r
+ * POSSIBILITY OF SUCH DAMAGE.\r
+ *\r
+ * \asf_license_stop\r
+ *\r
+ */\r
+#ifndef CLK_DFLL_H_INCLUDED\r
+#define CLK_DFLL_H_INCLUDED\r
+\r
+#include <parts.h>\r
+#include "conf_clock.h"\r
+\r
+#if UC3L\r
+# include "uc3l/dfll.h"\r
+#elif SAM4L\r
+# include "sam4l/dfll.h"\r
+#else\r
+# error Unsupported chip type\r
+#endif\r
+\r
+/**\r
+ * \ingroup clk_group\r
+ * \defgroup dfll_group DFLL Management\r
+ *\r
+ * A Digital Frequency Locked Loop can be used to generate a highly\r
+ * accurate frequency from a slower-running reference clock, in much the\r
+ * same way as a PLL. DFLLs typically have shorter startup times and\r
+ * less jitter. They can also be used in open-loop mode to generate a\r
+ * less accurate frequency without the use of a reference clock.\r
+ *\r
+ * There may be significant variations between platforms in the support\r
+ * for certain features.\r
+ *\r
+ * \par Example: Setting up DFLL0 with default parameters and dithering enabled\r
+ *\r
+ * The following example shows how to configure and enable DFLL0 in\r
+ * closed-loop mode using the default parameters specified through\r
+ * configuration symbols.\r
+ * \code\r
+       dfll_enable_config_defaults(0); \endcode\r
+ *\r
+ * To configure and enable DFLL0 in closed-loop mode using the default\r
+ * parameters and to enable specific feature like dithering for better accuracy,\r
+ * you can use this initialization process.\r
+ * \code\r
+       struct dfll_config dfllcfg;\r
+\r
+       dfll_enable_source(CONFIG_DFLL0_SOURCE);\r
+       dfll_config_defaults(&dfllcfg, 0);\r
+       dfll_config_enable_dithering(&dfllcfg);\r
+       dfll_enable(&dfllcfg, 0);\r
+       dfll_wait_for_accurate_lock(0); \endcode\r
+ *\r
+ * When the last function call returns, DFLL0 is running at a frequency\r
+ * which matches the default configuration as accurately as possible.\r
+ * Any additional alterations to the default configuration can be added\r
+ * at the same place as the call to dfll_config_enable_dithering(), but\r
+ * note that the DFLL will never achieve "accurate" lock if dithering is\r
+ * disabled.\r
+ *\r
+ * @{\r
+ */\r
+\r
+//! \name Chip-specific DFLL characteristics\r
+//@{\r
+/**\r
+ * \def NR_DFLLS\r
+ * \brief Number of on-chip DFLLs.\r
+ */\r
+/**\r
+ * \def DFLL_MIN_HZ\r
+ * \brief Minimum frequency that the DFLL can generate.\r
+ */\r
+/**\r
+ * \def DFLL_MAX_HZ\r
+ * \brief Maximum frequency that the DFLL can generate.\r
+ */\r
+//@}\r
+\r
+/**\r
+ * \typedef dfll_refclk_t\r
+ * \brief Type used for identifying a reference clock source for the DFLL.\r
+ */\r
+\r
+//! \name DFLL Configuration\r
+//@{\r
+\r
+/**\r
+ * \struct dfll_config\r
+ * \brief Hardware-specific representation of DFLL configuration.\r
+ *\r
+ * This structure contains one or more device-specific values\r
+ * representing the current DFLL configuration. The contents of this\r
+ * structure is typically different from platform to platform, and the\r
+ * user should not access any fields except through the DFLL\r
+ * configuration API.\r
+ */\r
+\r
+/**\r
+ * \fn void dfll_config_init_open_loop_mode(struct dfll_config *cfg)\r
+ * \brief Configure the DFLL configuration \a cfg for open-loop mode.\r
+ *\r
+ * \param cfg The DFLL configuration to be initialized.\r
+ */\r
+/**\r
+ * \fn void dfll_config_init_closed_loop_mode(struct dfll_config *cfg,\r
+ *              dfll_refclk_t refclk, uint16_t div, uint16_t mul)\r
+ * \brief Configure the DFLL configuration \a cfg for closed-loop mode.\r
+ *\r
+ * \param cfg The DFLL configuration to be initialized.\r
+ * \param refclk The reference clock source.\r
+ * \param div Reference clock divider.\r
+ * \param mul Multiplier (integer part only).\r
+ */\r
+/**\r
+ * \def dfll_config_defaults(cfg, dfll_id)\r
+ * \brief Initialize DFLL configuration using default parameters.\r
+ *\r
+ * After this function returns, \a cfg will contain a configuration\r
+ * which will make the DFLL run at (CONFIG_DFLLx_MUL / CONFIG_DFLLx_DIV)\r
+ * times the frequency of CONFIG_DFLLx_SOURCE. The default configuration\r
+ * will always use closed-loop mode with no fractional multiplier.\r
+ *\r
+ * \param cfg The DFLL configuration to be initialized.\r
+ * \param dfll_id Use defaults for this DFLL.\r
+ */\r
+/**\r
+ * \def dfll_get_default_rate(dfll_id)\r
+ * \brief Return the default rate in Hz of \a dfll_id.\r
+ */\r
+\r
+/**\r
+ * \fn void dfll_config_set_fractional_multiplier(struct dfll_config *cfg,\r
+ *              uint16_t mul_i, uint16_t mul_f)\r
+ * \brief Set a fractional multiplier.\r
+ *\r
+ * This function has no effect in open-loop mode, and is only available\r
+ * on devices which support fractional multipliers.\r
+ *\r
+ * The fractional part of the multiplier is assumed to be 16 bits. The\r
+ * low-level driver will make sure to shift this value to match the\r
+ * hardware if necessary.\r
+ *\r
+ * \param cfg The DFLL configuration to be modified.\r
+ * \param mul_i Integer part of multiplier.\r
+ * \param mul_f Fractional part of multiplier.\r
+ */\r
+/**\r
+ * \fn void dfll_config_enable_dithering(struct dfll_config *cfg)\r
+ * \brief Enable dithering for more accurate frequency generation.\r
+ *\r
+ * The fine LSB input to the VCO is dithered to achieve fractional\r
+ * approximation to the correct multiplication ratio.\r
+ *\r
+ * \param cfg The DFLL configuration to be modified.\r
+ */\r
+/**\r
+ * \fn void dfll_config_disable_dithering(struct dfll_config *cfg)\r
+ * \brief Disable dithering.\r
+ *\r
+ * \see dfll_config_enable_dithering()\r
+ *\r
+ * \param cfg The DFLL configuration to be modified.\r
+ */\r
+/**\r
+ * \fn void dfll_config_set_initial_tuning(struct dfll_config *cfg,\r
+ *              uint16_t coarse, uint16_t fine)\r
+ * \brief Set initial VCO tuning.\r
+ *\r
+ * In open loop mode, this will determine the frequency of the output.\r
+ *\r
+ * In closed loop mode, this will provide an initial estimate of the VCO\r
+ * tuning. While the DFLL will automatically adjust these values to\r
+ * match the desired output frequency, careful selection of initial\r
+ * values might reduce the time to achieve coarse and fine lock.\r
+ *\r
+ * \param cfg The DFLL configuration to be modified.\r
+ * \param coarse Coarse tuning of the frequency generator.\r
+ * \param fine Fine tuning of the frequency generator.\r
+ */\r
+/**\r
+ * \fn void dfll_config_set_max_step(struct dfll_config *cfg,\r
+ *              uint16_t coarse, uint16_t fine)\r
+ * \brief Set the maximum VCO tuning step size.\r
+ *\r
+ * This function has no effect in open-loop mode.\r
+ *\r
+ * By default, both of these values are set to 50% of their respective\r
+ * maximums.  It is not recommended to set the values any higher than\r
+ * this, but setting them lower might reduce the frequency overshoot at\r
+ * the expense of longer time to achieve coarse and/or fine lock.\r
+ *\r
+ * \param cfg The DFLL configuration to be modified\r
+ * \param coarse The maximum step size of the coarse VCO tuning.\r
+ * \param fine The maximum step size of the fine VCO tuning.\r
+ */\r
+/**\r
+ * \fn void dfll_config_enable_ssg(struct dfll_config *cfg,\r
+ *              uint16_t amplitude, uint16_t step_size)\r
+ * \brief Enable Spread Spectrum Generator.\r
+ *\r
+ * \param cfg The DFLL configuration to be modified.\r
+ * \param amplitude The amplitude of the spread spectrum.\r
+ * \param step_size The step size of the spread spectrum.\r
+ */\r
+/**\r
+ * \fn void dfll_config_disable_ssg(struct dfll_config *cfg)\r
+ * \brief Disable Spread Spectrum Generator.\r
+ *\r
+ * \param cfg The DFLL configuration to be modified.\r
+ */\r
+//@}\r
+\r
+//! \name Interaction with the DFLL hardware\r
+//@{\r
+/**\r
+ * \fn void dfll_enable_open_loop(const struct dfll_config *cfg,\r
+ *              unsigned int dfll_id)\r
+ * \brief Activate the configuration \a cfg and enable DFLL \a dfll_id\r
+ * in open-loop mode.\r
+ *\r
+ * \pre The configuration in \a cfg must represent an open-loop\r
+ * configuration.\r
+ *\r
+ * \param cfg The configuration to be activated.\r
+ * \param dfll_id The ID of the DFLL to be enabled.\r
+ */\r
+/**\r
+ * \fn void dfll_enable_closed_loop(const struct dfll_config *cfg,\r
+ *              unsigned int dfll_id)\r
+ * \brief Activate the configuration \a cfg and enable DFLL \a dfll_id\r
+ * in closed-loop mode.\r
+ *\r
+ * \pre The configuration in \a cfg must represent a closed-loop\r
+ * configuration.\r
+ *\r
+ * \param cfg The configuration to be activated.\r
+ * \param dfll_id The ID of the DFLL to be enabled.\r
+ */\r
+/**\r
+ * \fn void dfll_disable_open_loop(unsigned int dfll_id)\r
+ * \brief Disable the DFLL identified by \a dfll_id.\r
+ *\r
+ * \pre The DFLL must have been enabled in open loop mode.\r
+ *\r
+ * \param dfll_id The ID of the DFLL to be disabled.\r
+ */\r
+/**\r
+ * \fn void dfll_disable_closed_loop(unsigned int dfll_id)\r
+ * \brief Disable the DFLL identified by \a dfll_id.\r
+ *\r
+ * \pre The DFLL must have been enabled in closed loop mode.\r
+ *\r
+ * \param dfll_id The ID of the DFLL to be disabled.\r
+ */\r
+/**\r
+ * \fn bool dfll_is_coarse_locked(unsigned int dfll_id)\r
+ * \brief Determine whether or not a DFLL has achieved coarse lock.\r
+ *\r
+ * \param dfll_id The ID of the DFLL to check.\r
+ *\r
+ * \retval true The DFLL has determined the final value of the coarse\r
+ * VCO tuning value.\r
+ * \retval false The DFLL has not yet determined the coarse VCO tuning\r
+ * value, or has not been enabled.\r
+ */\r
+/**\r
+ * \fn bool dfll_is_fine_locked(unsigned int dfll_id)\r
+ * \brief Determine whether or not a DFLL has achieved fine lock.\r
+ *\r
+ * \param dfll_id The ID of the DFLL to check.\r
+ *\r
+ * \retval true The DFLL has determined the final value of the fine VCO\r
+ * tuning value.\r
+ * \retval false The DFLL has not yet determined the fine VCO tuning\r
+ * value, or has not been enabled.\r
+ */\r
+/**\r
+ * \fn bool dfll_is_accurate_locked(unsigned int dfll_id)\r
+ * \brief Determine whether or not a DFLL has achieved accurate lock.\r
+ *\r
+ * \param dfll_id The ID of the DFLL to check.\r
+ *\r
+ * \retval true The DFLL has determined the final dithering duty cycle.\r
+ * \retval false The DFLL has not yet determined the dithering duty\r
+ * cycle, or has not been enabled with dithering enabled.\r
+ */\r
+/**\r
+ * \fn void dfll_enable_source(enum dfll_refclk_t src)\r
+ * \brief Enable the source of the dfll.\r
+ * The source is enabled, if the source is not already running.\r
+ *\r
+ * \param dfll_source src The ID of the DFLL source to enable.\r
+ */\r
+/**\r
+ * \fn void dfll_enable_config_defaults(unsigned int dfll_id)\r
+ * \brief Enable the dfll with the default configuration.\r
+ * DFLL is enabled, if the DFLL is not already locked.\r
+ *\r
+ * \param dfll_id The ID of the DFLL to enable.\r
+ */\r
+\r
+/**\r
+ * \brief Wait for the DFLL identified by \a dfll_id to achieve coarse\r
+ * lock.\r
+ *\r
+ * \param dfll_id The ID of the DFLL to wait for.\r
+ *\r
+ * \retval STATUS_OK The DFLL has achieved coarse lock.\r
+ * \retval ERR_TIMEOUT Timed out waiting for lock.\r
+ */\r
+static inline int dfll_wait_for_coarse_lock(unsigned int dfll_id)\r
+{\r
+       /* TODO: Add timeout mechanism */\r
+       while (!dfll_is_coarse_locked(dfll_id)) {\r
+               /* Do nothing */\r
+       }\r
+\r
+       return 0;\r
+}\r
+\r
+/**\r
+ * \brief Wait for the DFLL identified by \a dfll_id to achieve fine\r
+ * lock.\r
+ *\r
+ * \param dfll_id The ID of the DFLL to wait for.\r
+ *\r
+ * \retval STATUS_OK The DFLL has achieved fine lock.\r
+ * \retval ERR_TIMEOUT Timed out waiting for lock.\r
+ */\r
+static inline int dfll_wait_for_fine_lock(unsigned int dfll_id)\r
+{\r
+       /* TODO: Add timeout mechanism */\r
+       while (!dfll_is_fine_locked(dfll_id)) {\r
+               /* Do nothing */\r
+       }\r
+\r
+       return 0;\r
+}\r
+\r
+/**\r
+ * \brief Wait for the DFLL identified by \a dfll_id to achieve accurate\r
+ * lock.\r
+ *\r
+ * \param dfll_id The ID of the DFLL to wait for.\r
+ *\r
+ * \retval STATUS_OK The DFLL has achieved accurate lock.\r
+ * \retval ERR_TIMEOUT Timed out waiting for lock.\r
+ */\r
+static inline int dfll_wait_for_accurate_lock(unsigned int dfll_id)\r
+{\r
+       /* TODO: Add timeout mechanism */\r
+       while (!dfll_is_accurate_locked(dfll_id)) {\r
+               /* Do nothing */\r
+       }\r
+\r
+       return 0;\r
+}\r
+\r
+//@}\r
+//! @}\r
+\r
+#endif /* CLK_DFLL_H_INCLUDED */\r
diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/asf/common/services/clock/genclk.h b/FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/asf/common/services/clock/genclk.h
new file mode 100644 (file)
index 0000000..8b72a6d
--- /dev/null
@@ -0,0 +1,178 @@
+/**\r
+ * \file\r
+ *\r
+ * \brief Generic clock management\r
+ *\r
+ * Copyright (c) 2010-2012 Atmel Corporation. All rights reserved.\r
+ *\r
+ * \asf_license_start\r
+ *\r
+ * \page License\r
+ *\r
+ * Redistribution and use in source and binary forms, with or without\r
+ * modification, are permitted provided that the following conditions are met:\r
+ *\r
+ * 1. Redistributions of source code must retain the above copyright notice,\r
+ *    this list of conditions and the following disclaimer.\r
+ *\r
+ * 2. Redistributions in binary form must reproduce the above copyright notice,\r
+ *    this list of conditions and the following disclaimer in the documentation\r
+ *    and/or other materials provided with the distribution.\r
+ *\r
+ * 3. The name of Atmel may not be used to endorse or promote products derived\r
+ *    from this software without specific prior written permission.\r
+ *\r
+ * 4. This software may only be redistributed and used in connection with an\r
+ *    Atmel microcontroller product.\r
+ *\r
+ * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED\r
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\r
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE\r
+ * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR\r
+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\r
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS\r
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)\r
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,\r
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\r
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\r
+ * POSSIBILITY OF SUCH DAMAGE.\r
+ *\r
+ * \asf_license_stop\r
+ *\r
+ */\r
+#ifndef CLK_GENCLK_H_INCLUDED\r
+#define CLK_GENCLK_H_INCLUDED\r
+\r
+#include "parts.h"\r
+\r
+#if SAM3S\r
+# include "sam3s/genclk.h"\r
+#elif SAM3U\r
+# include "sam3u/genclk.h"\r
+#elif SAM3N\r
+# include "sam3n/genclk.h"\r
+#elif SAM3XA\r
+# include "sam3x/genclk.h"\r
+#elif SAM4S\r
+# include "sam4s/genclk.h"\r
+#elif SAM4L\r
+# include "sam4l/genclk.h"\r
+#elif SAM4E\r
+# include "sam4e/genclk.h"\r
+#elif (UC3A0 || UC3A1)\r
+# include "uc3a0_a1/genclk.h"\r
+#elif UC3A3\r
+# include "uc3a3_a4/genclk.h"\r
+#elif UC3B\r
+# include "uc3b0_b1/genclk.h"\r
+#elif UC3C\r
+# include "uc3c/genclk.h"\r
+#elif UC3D\r
+# include "uc3d/genclk.h"\r
+#elif UC3L\r
+# include "uc3l/genclk.h"\r
+#else\r
+# error Unsupported chip type\r
+#endif\r
+\r
+/**\r
+ * \ingroup clk_group\r
+ * \defgroup genclk_group Generic Clock Management\r
+ *\r
+ * Generic clocks are configurable clocks which run outside the system\r
+ * clock domain. They are often connected to peripherals which have an\r
+ * asynchronous component running independently of the bus clock, e.g.\r
+ * USB controllers, low-power timers and RTCs, etc.\r
+ *\r
+ * Note that not all platforms have support for generic clocks; on such\r
+ * platforms, this API will not be available.\r
+ *\r
+ * @{\r
+ */\r
+\r
+/**\r
+ * \def GENCLK_DIV_MAX\r
+ * \brief Maximum divider supported by the generic clock implementation\r
+ */\r
+/**\r
+ * \enum genclk_source\r
+ * \brief Generic clock source ID\r
+ *\r
+ * Each generic clock may be generated from a different clock source.\r
+ * These are the available alternatives provided by the chip.\r
+ */\r
+\r
+//! \name Generic clock configuration\r
+//@{\r
+/**\r
+ * \struct genclk_config\r
+ * \brief Hardware representation of a set of generic clock parameters\r
+ */\r
+/**\r
+ * \fn void genclk_config_defaults(struct genclk_config *cfg,\r
+ *              unsigned int id)\r
+ * \brief Initialize \a cfg to the default configuration for the clock\r
+ * identified by \a id.\r
+ */\r
+/**\r
+ * \fn void genclk_config_read(struct genclk_config *cfg, unsigned int id)\r
+ * \brief Read the currently active configuration of the clock\r
+ * identified by \a id into \a cfg.\r
+ */\r
+/**\r
+ * \fn void genclk_config_write(const struct genclk_config *cfg,\r
+ *              unsigned int id)\r
+ * \brief Activate the configuration \a cfg on the clock identified by\r
+ * \a id.\r
+ */\r
+/**\r
+ * \fn void genclk_config_set_source(struct genclk_config *cfg,\r
+ *              enum genclk_source src)\r
+ * \brief Select a new source clock \a src in configuration \a cfg.\r
+ */\r
+/**\r
+ * \fn void genclk_config_set_divider(struct genclk_config *cfg,\r
+ *              unsigned int divider)\r
+ * \brief Set a new \a divider in configuration \a cfg.\r
+ */\r
+/**\r
+ * \fn void genclk_enable_source(enum genclk_source src)\r
+ * \brief Enable the source clock \a src used by a generic clock.\r
+ */\r
+ //@}\r
+\r
+//! \name Enabling and disabling Generic Clocks\r
+//@{\r
+/**\r
+ * \fn void genclk_enable(const struct genclk_config *cfg, unsigned int id)\r
+ * \brief Activate the configuration \a cfg on the clock identified by\r
+ * \a id and enable it.\r
+ */\r
+/**\r
+ * \fn void genclk_disable(unsigned int id)\r
+ * \brief Disable the generic clock identified by \a id.\r
+ */\r
+//@}\r
+\r
+/**\r
+ * \brief Enable the configuration defined by \a src and \a divider\r
+ * for the generic clock identified by \a id.\r
+ *\r
+ * \param id      The ID of the generic clock.\r
+ * \param src     The source clock of the generic clock.\r
+ * \param divider The divider used to generate the generic clock.\r
+ */\r
+static inline void genclk_enable_config(unsigned int id, enum genclk_source src, unsigned int divider)\r
+{\r
+       struct genclk_config gcfg;\r
+\r
+       genclk_config_defaults(&gcfg, id);\r
+       genclk_enable_source(src);\r
+       genclk_config_set_source(&gcfg, src);\r
+       genclk_config_set_divider(&gcfg, divider);\r
+       genclk_enable(&gcfg, id);\r
+}\r
+\r
+//! @}\r
+\r
+#endif /* CLK_GENCLK_H_INCLUDED */\r
diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/asf/common/services/clock/osc.h b/FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/asf/common/services/clock/osc.h
new file mode 100644 (file)
index 0000000..39cde2b
--- /dev/null
@@ -0,0 +1,164 @@
+/**\r
+ * \file\r
+ *\r
+ * \brief Oscillator management\r
+ *\r
+ * Copyright (c) 2010-2012 Atmel Corporation. All rights reserved.\r
+ *\r
+ * \asf_license_start\r
+ *\r
+ * \page License\r
+ *\r
+ * Redistribution and use in source and binary forms, with or without\r
+ * modification, are permitted provided that the following conditions are met:\r
+ *\r
+ * 1. Redistributions of source code must retain the above copyright notice,\r
+ *    this list of conditions and the following disclaimer.\r
+ *\r
+ * 2. Redistributions in binary form must reproduce the above copyright notice,\r
+ *    this list of conditions and the following disclaimer in the documentation\r
+ *    and/or other materials provided with the distribution.\r
+ *\r
+ * 3. The name of Atmel may not be used to endorse or promote products derived\r
+ *    from this software without specific prior written permission.\r
+ *\r
+ * 4. This software may only be redistributed and used in connection with an\r
+ *    Atmel microcontroller product.\r
+ *\r
+ * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED\r
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\r
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE\r
+ * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR\r
+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\r
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS\r
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)\r
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,\r
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\r
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\r
+ * POSSIBILITY OF SUCH DAMAGE.\r
+ *\r
+ * \asf_license_stop\r
+ *\r
+ */\r
+#ifndef OSC_H_INCLUDED\r
+#define OSC_H_INCLUDED\r
+\r
+#include "parts.h"\r
+#include "conf_clock.h"\r
+\r
+#if SAM3S\r
+# include "sam3s/osc.h"\r
+#elif SAM3XA\r
+# include "sam3x/osc.h"\r
+#elif SAM3U\r
+# include "sam3u/osc.h"\r
+#elif SAM3N\r
+# include "sam3n/osc.h"\r
+#elif SAM4S\r
+# include "sam4s/osc.h"\r
+#elif SAM4E\r
+# include "sam4e/osc.h"\r
+#elif SAM4L\r
+# include "sam4l/osc.h"\r
+#elif (UC3A0 || UC3A1)\r
+# include "uc3a0_a1/osc.h"\r
+#elif UC3A3\r
+# include "uc3a3_a4/osc.h"\r
+#elif UC3B\r
+# include "uc3b0_b1/osc.h"\r
+#elif UC3C\r
+# include "uc3c/osc.h"\r
+#elif UC3D\r
+# include "uc3d/osc.h"\r
+#elif UC3L\r
+# include "uc3l/osc.h"\r
+#elif XMEGA\r
+# include "xmega/osc.h"\r
+#else\r
+# error Unsupported chip type\r
+#endif\r
+\r
+/**\r
+ * \ingroup clk_group\r
+ * \defgroup osc_group Oscillator Management\r
+ *\r
+ * This group contains functions and definitions related to configuring\r
+ * and enabling/disabling on-chip oscillators. Internal RC-oscillators,\r
+ * external crystal oscillators and external clock generators are\r
+ * supported by this module. What all of these have in common is that\r
+ * they swing at a fixed, nominal frequency which is normally not\r
+ * adjustable.\r
+ *\r
+ * \par Example: Enabling an oscillator\r
+ *\r
+ * The following example demonstrates how to enable the external\r
+ * oscillator on XMEGA A and wait for it to be ready to use. The\r
+ * oscillator identifiers are platform-specific, so while the same\r
+ * procedure is used on all platforms, the parameter to osc_enable()\r
+ * will be different from device to device.\r
+ * \code\r
+       osc_enable(OSC_ID_XOSC);\r
+       osc_wait_ready(OSC_ID_XOSC); \endcode\r
+ *\r
+ * \section osc_group_board Board-specific Definitions\r
+ * If external oscillators are used, the board code must provide the\r
+ * following definitions for each of those:\r
+ *   - \b BOARD_<osc name>_HZ: The nominal frequency of the oscillator.\r
+ *   - \b BOARD_<osc name>_STARTUP_US: The startup time of the\r
+ *     oscillator in microseconds.\r
+ *   - \b BOARD_<osc name>_TYPE: The type of oscillator connected, i.e.\r
+ *     whether it's a crystal or external clock, and sometimes what kind\r
+ *     of crystal it is. The meaning of this value is platform-specific.\r
+ *\r
+ * @{\r
+ */\r
+\r
+//! \name Oscillator Management\r
+//@{\r
+/**\r
+ * \fn void osc_enable(uint8_t id)\r
+ * \brief Enable oscillator \a id\r
+ *\r
+ * The startup time and mode value is automatically determined based on\r
+ * definitions in the board code.\r
+ */\r
+/**\r
+ * \fn void osc_disable(uint8_t id)\r
+ * \brief Disable oscillator \a id\r
+ */\r
+/**\r
+ * \fn osc_is_ready(uint8_t id)\r
+ * \brief Determine whether oscillator \a id is ready.\r
+ * \retval true Oscillator \a id is running and ready to use as a clock\r
+ * source.\r
+ * \retval false Oscillator \a id is not running.\r
+ */\r
+/**\r
+ * \fn uint32_t osc_get_rate(uint8_t id)\r
+ * \brief Return the frequency of oscillator \a id in Hz\r
+ */\r
+\r
+#ifndef __ASSEMBLY__\r
+\r
+/**\r
+ * \brief Wait until the oscillator identified by \a id is ready\r
+ *\r
+ * This function will busy-wait for the oscillator identified by \a id\r
+ * to become stable and ready to use as a clock source.\r
+ *\r
+ * \param id A number identifying the oscillator to wait for.\r
+ */\r
+static inline void osc_wait_ready(uint8_t id)\r
+{\r
+       while (!osc_is_ready(id)) {\r
+               /* Do nothing */\r
+       }\r
+}\r
+\r
+#endif /* __ASSEMBLY__ */\r
+\r
+//@}\r
+\r
+//! @}\r
+\r
+#endif /* OSC_H_INCLUDED */\r
diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/asf/common/services/clock/pll.h b/FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/asf/common/services/clock/pll.h
new file mode 100644 (file)
index 0000000..1bccb73
--- /dev/null
@@ -0,0 +1,320 @@
+/**\r
+ * \file\r
+ *\r
+ * \brief PLL management\r
+ *\r
+ * Copyright (c) 2010-2012 Atmel Corporation. All rights reserved.\r
+ *\r
+ * \asf_license_start\r
+ *\r
+ * \page License\r
+ *\r
+ * Redistribution and use in source and binary forms, with or without\r
+ * modification, are permitted provided that the following conditions are met:\r
+ *\r
+ * 1. Redistributions of source code must retain the above copyright notice,\r
+ *    this list of conditions and the following disclaimer.\r
+ *\r
+ * 2. Redistributions in binary form must reproduce the above copyright notice,\r
+ *    this list of conditions and the following disclaimer in the documentation\r
+ *    and/or other materials provided with the distribution.\r
+ *\r
+ * 3. The name of Atmel may not be used to endorse or promote products derived\r
+ *    from this software without specific prior written permission.\r
+ *\r
+ * 4. This software may only be redistributed and used in connection with an\r
+ *    Atmel microcontroller product.\r
+ *\r
+ * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED\r
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\r
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE\r
+ * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR\r
+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\r
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS\r
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)\r
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,\r
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\r
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\r
+ * POSSIBILITY OF SUCH DAMAGE.\r
+ *\r
+ * \asf_license_stop\r
+ *\r
+ */\r
+#ifndef CLK_PLL_H_INCLUDED\r
+#define CLK_PLL_H_INCLUDED\r
+\r
+#include "parts.h"\r
+#include "conf_clock.h"\r
+\r
+#if SAM3S\r
+# include "sam3s/pll.h"\r
+#elif SAM3XA\r
+# include "sam3x/pll.h"\r
+#elif SAM3U\r
+# include "sam3u/pll.h"\r
+#elif SAM3N\r
+# include "sam3n/pll.h"\r
+#elif SAM4S\r
+# include "sam4s/pll.h"\r
+#elif SAM4E\r
+# include "sam4e/pll.h"\r
+#elif SAM4L\r
+# include "sam4l/pll.h"\r
+#elif (UC3A0 || UC3A1)\r
+# include "uc3a0_a1/pll.h"\r
+#elif UC3A3\r
+# include "uc3a3_a4/pll.h"\r
+#elif UC3B\r
+# include "uc3b0_b1/pll.h"\r
+#elif UC3C\r
+# include "uc3c/pll.h"\r
+#elif UC3D\r
+# include "uc3d/pll.h"\r
+#elif (UC3L0128 || UC3L0256 || UC3L3_L4)\r
+# include "uc3l/pll.h"\r
+#elif XMEGA\r
+# include "xmega/pll.h"\r
+#else\r
+# error Unsupported chip type\r
+#endif\r
+\r
+/**\r
+ * \ingroup clk_group\r
+ * \defgroup pll_group PLL Management\r
+ *\r
+ * This group contains functions and definitions related to configuring\r
+ * and enabling/disabling on-chip PLLs. A PLL will take an input signal\r
+ * (the \em source), optionally divide the frequency by a configurable\r
+ * \em divider, and then multiply the frequency by a configurable \em\r
+ * multiplier.\r
+ *\r
+ * Some devices don't support input dividers; specifying any other\r
+ * divisor than 1 on these devices will result in an assertion failure.\r
+ * Other devices may have various restrictions to the frequency range of\r
+ * the input and output signals.\r
+ *\r
+ * \par Example: Setting up PLL0 with default parameters\r
+ *\r
+ * The following example shows how to configure and enable PLL0 using\r
+ * the default parameters specified using the configuration symbols\r
+ * listed above.\r
+ * \code\r
+       pll_enable_config_defaults(0); \endcode\r
+ *\r
+ * To configure, enable PLL0 using the default parameters and to disable\r
+ * a specific feature like Wide Bandwidth Mode (a UC3A3-specific\r
+ * PLL option.), you can use this initialization process.\r
+ * \code\r
+       struct pll_config pllcfg;\r
+       if (pll_is_locked(pll_id)) {\r
+               return; // Pll already running\r
+       }\r
+       pll_enable_source(CONFIG_PLL0_SOURCE);\r
+       pll_config_defaults(&pllcfg, 0);\r
+       pll_config_set_option(&pllcfg, PLL_OPT_WBM_DISABLE);\r
+       pll_enable(&pllcfg, 0);\r
+       pll_wait_for_lock(0); \endcode\r
+ *\r
+ * When the last function call returns, PLL0 is ready to be used as the\r
+ * main system clock source.\r
+ *\r
+ * \section pll_group_config Configuration Symbols\r
+ *\r
+ * Each PLL has a set of default parameters determined by the following\r
+ * configuration symbols in the application's configuration file:\r
+ *   - \b CONFIG_PLLn_SOURCE: The default clock source connected to the\r
+ *     input of PLL \a n. Must be one of the values defined by the\r
+ *     #pll_source enum.\r
+ *   - \b CONFIG_PLLn_MUL: The default multiplier (loop divider) of PLL\r
+ *     \a n.\r
+ *   - \b CONFIG_PLLn_DIV: The default input divider of PLL \a n.\r
+ *\r
+ * These configuration symbols determine the result of calling\r
+ * pll_config_defaults() and pll_get_default_rate().\r
+ *\r
+ * @{\r
+ */\r
+\r
+//! \name Chip-specific PLL characteristics\r
+//@{\r
+/**\r
+ * \def PLL_MAX_STARTUP_CYCLES\r
+ * \brief Maximum PLL startup time in number of slow clock cycles\r
+ */\r
+/**\r
+ * \def NR_PLLS\r
+ * \brief Number of on-chip PLLs\r
+ */\r
+\r
+/**\r
+ * \def PLL_MIN_HZ\r
+ * \brief Minimum frequency that the PLL can generate\r
+ */\r
+/**\r
+ * \def PLL_MAX_HZ\r
+ * \brief Maximum frequency that the PLL can generate\r
+ */\r
+/**\r
+ * \def PLL_NR_OPTIONS\r
+ * \brief Number of PLL option bits\r
+ */\r
+//@}\r
+\r
+/**\r
+ * \enum pll_source\r
+ * \brief PLL clock source\r
+ */\r
+\r
+//! \name PLL configuration\r
+//@{\r
+\r
+/**\r
+ * \struct pll_config\r
+ * \brief Hardware-specific representation of PLL configuration.\r
+ *\r
+ * This structure contains one or more device-specific values\r
+ * representing the current PLL configuration. The contents of this\r
+ * structure is typically different from platform to platform, and the\r
+ * user should not access any fields except through the PLL\r
+ * configuration API.\r
+ */\r
+\r
+/**\r
+ * \fn void pll_config_init(struct pll_config *cfg,\r
+ *              enum pll_source src, unsigned int div, unsigned int mul)\r
+ * \brief Initialize PLL configuration from standard parameters.\r
+ *\r
+ * \note This function may be defined inline because it is assumed to be\r
+ * called very few times, and usually with constant parameters. Inlining\r
+ * it will in such cases reduce the code size significantly.\r
+ *\r
+ * \param cfg The PLL configuration to be initialized.\r
+ * \param src The oscillator to be used as input to the PLL.\r
+ * \param div PLL input divider.\r
+ * \param mul PLL loop divider (i.e. multiplier).\r
+ *\r
+ * \return A configuration which will make the PLL run at\r
+ * (\a mul / \a div) times the frequency of \a src\r
+ */\r
+/**\r
+ * \def pll_config_defaults(cfg, pll_id)\r
+ * \brief Initialize PLL configuration using default parameters.\r
+ *\r
+ * After this function returns, \a cfg will contain a configuration\r
+ * which will make the PLL run at (CONFIG_PLLx_MUL / CONFIG_PLLx_DIV)\r
+ * times the frequency of CONFIG_PLLx_SOURCE.\r
+ *\r
+ * \param cfg The PLL configuration to be initialized.\r
+ * \param pll_id Use defaults for this PLL.\r
+ */\r
+/**\r
+ * \def pll_get_default_rate(pll_id)\r
+ * \brief Get the default rate in Hz of \a pll_id\r
+ */\r
+/**\r
+ * \fn void pll_config_set_option(struct pll_config *cfg,\r
+ *              unsigned int option)\r
+ * \brief Set the PLL option bit \a option in the configuration \a cfg.\r
+ *\r
+ * \param cfg The PLL configuration to be changed.\r
+ * \param option The PLL option bit to be set.\r
+ */\r
+/**\r
+ * \fn void pll_config_clear_option(struct pll_config *cfg,\r
+ *              unsigned int option)\r
+ * \brief Clear the PLL option bit \a option in the configuration \a cfg.\r
+ *\r
+ * \param cfg The PLL configuration to be changed.\r
+ * \param option The PLL option bit to be cleared.\r
+ */\r
+/**\r
+ * \fn void pll_config_read(struct pll_config *cfg, unsigned int pll_id)\r
+ * \brief Read the currently active configuration of \a pll_id.\r
+ *\r
+ * \param cfg The configuration object into which to store the currently\r
+ * active configuration.\r
+ * \param pll_id The ID of the PLL to be accessed.\r
+ */\r
+/**\r
+ * \fn void pll_config_write(const struct pll_config *cfg,\r
+ *              unsigned int pll_id)\r
+ * \brief Activate the configuration \a cfg on \a pll_id\r
+ *\r
+ * \param cfg The configuration object representing the PLL\r
+ * configuration to be activated.\r
+ * \param pll_id The ID of the PLL to be updated.\r
+ */\r
+\r
+//@}\r
+\r
+//! \name Interaction with the PLL hardware\r
+//@{\r
+/**\r
+ * \fn void pll_enable(const struct pll_config *cfg,\r
+ *              unsigned int pll_id)\r
+ * \brief Activate the configuration \a cfg and enable PLL \a pll_id.\r
+ *\r
+ * \param cfg The PLL configuration to be activated.\r
+ * \param pll_id The ID of the PLL to be enabled.\r
+ */\r
+/**\r
+ * \fn void pll_disable(unsigned int pll_id)\r
+ * \brief Disable the PLL identified by \a pll_id.\r
+ *\r
+ * After this function is called, the PLL identified by \a pll_id will\r
+ * be disabled. The PLL configuration stored in hardware may be affected\r
+ * by this, so if the caller needs to restore the same configuration\r
+ * later, it should either do a pll_config_read() before disabling the\r
+ * PLL, or remember the last configuration written to the PLL.\r
+ *\r
+ * \param pll_id The ID of the PLL to be disabled.\r
+ */\r
+/**\r
+ * \fn bool pll_is_locked(unsigned int pll_id)\r
+ * \brief Determine whether the PLL is locked or not.\r
+ *\r
+ * \param pll_id The ID of the PLL to check.\r
+ *\r
+ * \retval true The PLL is locked and ready to use as a clock source\r
+ * \retval false The PLL is not yet locked, or has not been enabled.\r
+ */\r
+/**\r
+ * \fn void pll_enable_source(enum pll_source src)\r
+ * \brief Enable the source of the pll.\r
+ * The source is enabled, if the source is not already running.\r
+ *\r
+ * \param src The ID of the PLL source to enable.\r
+ */\r
+/**\r
+ * \fn void pll_enable_config_defaults(unsigned int pll_id)\r
+ * \brief Enable the pll with the default configuration.\r
+ * PLL is enabled, if the PLL is not already locked.\r
+ *\r
+ * \param pll_id The ID of the PLL to enable.\r
+ */\r
+\r
+/**\r
+ * \brief Wait for PLL \a pll_id to become locked\r
+ *\r
+ * \todo Use a timeout to avoid waiting forever and hanging the system\r
+ *\r
+ * \param pll_id The ID of the PLL to wait for.\r
+ *\r
+ * \retval STATUS_OK The PLL is now locked.\r
+ * \retval ERR_TIMEOUT Timed out waiting for PLL to become locked.\r
+ */\r
+static inline int pll_wait_for_lock(unsigned int pll_id)\r
+{\r
+       Assert(pll_id < NR_PLLS);\r
+\r
+       while (!pll_is_locked(pll_id)) {\r
+               /* Do nothing */\r
+       }\r
+\r
+       return 0;\r
+}\r
+\r
+//@}\r
+//! @}\r
+\r
+#endif /* CLK_PLL_H_INCLUDED */\r
diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/asf/common/services/clock/sam4l/dfll.c b/FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/asf/common/services/clock/sam4l/dfll.c
new file mode 100644 (file)
index 0000000..337a1c9
--- /dev/null
@@ -0,0 +1,175 @@
+/**\r
+ * \file\r
+ *\r
+ * \brief Chip-specific DFLL implementation\r
+ *\r
+ * Copyright (c) 2012 Atmel Corporation. All rights reserved.\r
+ *\r
+ * \asf_license_start\r
+ *\r
+ * \page License\r
+ *\r
+ * Redistribution and use in source and binary forms, with or without\r
+ * modification, are permitted provided that the following conditions are met:\r
+ *\r
+ * 1. Redistributions of source code must retain the above copyright notice,\r
+ *    this list of conditions and the following disclaimer.\r
+ *\r
+ * 2. Redistributions in binary form must reproduce the above copyright notice,\r
+ *    this list of conditions and the following disclaimer in the documentation\r
+ *    and/or other materials provided with the distribution.\r
+ *\r
+ * 3. The name of Atmel may not be used to endorse or promote products derived\r
+ *    from this software without specific prior written permission.\r
+ *\r
+ * 4. This software may only be redistributed and used in connection with an\r
+ *    Atmel microcontroller product.\r
+ *\r
+ * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED\r
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\r
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE\r
+ * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR\r
+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\r
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS\r
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)\r
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,\r
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\r
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\r
+ * POSSIBILITY OF SUCH DAMAGE.\r
+ *\r
+ * \asf_license_stop\r
+ *\r
+ */\r
+#include <compiler.h>\r
+#include <dfll.h>\r
+\r
+#define dfll_write_reg(reg, value) \\r
+       do { \\r
+               while (!(SCIF->SCIF_PCLKSR & SCIF_PCLKSR_DFLL0RDY));                 \\r
+               irqflags_t ATPASTE2(dfll_flags, __LINE__) = cpu_irq_save();          \\r
+               SCIF->SCIF_UNLOCK = SCIF_UNLOCK_KEY(0xAAUL)                          \\r
+                       | SCIF_UNLOCK_ADDR((uint32_t)&SCIF->SCIF_##reg - (uint32_t)SCIF);\\r
+               SCIF->SCIF_##reg = (value);                                          \\r
+               cpu_irq_restore(ATPASTE2(dfll_flags, __LINE__));                     \\r
+       } while (0)\r
+\r
+\r
+\r
+void dfll_enable_open_loop(const struct dfll_config *cfg, uint32_t dfll_id)\r
+{\r
+       irqflags_t flags;\r
+\r
+       UNUSED(dfll_id);\r
+\r
+       /* First, enable the DFLL, then configure it */\r
+       flags = cpu_irq_save();\r
+       SCIF->SCIF_UNLOCK = SCIF_UNLOCK_KEY(0xAAUL)\r
+               | SCIF_UNLOCK_ADDR((uint32_t)&SCIF->SCIF_DFLL0CONF - (uint32_t)SCIF);\r
+       SCIF->SCIF_DFLL0CONF = SCIF_DFLL0CONF_EN;\r
+       cpu_irq_restore(flags);\r
+       dfll_write_reg(DFLL0CONF, cfg->conf | SCIF_DFLL0CONF_EN);\r
+       dfll_write_reg(DFLL0MUL, cfg->mul);\r
+       dfll_write_reg(DFLL0VAL, cfg->val);\r
+       dfll_write_reg(DFLL0SSG, cfg->ssg);\r
+}\r
+\r
+void dfll_disable_open_loop(uint32_t dfll_id)\r
+{\r
+       UNUSED(dfll_id);\r
+\r
+       /* First, disable the DFLL. */\r
+       // Do a sync before reading a dfll conf register\r
+       SCIF->SCIF_DFLL0SYNC = SCIF_DFLL0SYNC_SYNC;\r
+       while (!(SCIF->SCIF_PCLKSR & SCIF_PCLKSR_DFLL0RDY));\r
+\r
+       uint32_t conf = SCIF->SCIF_DFLL0CONF;\r
+       conf &= ~SCIF_DFLL0CONF_EN;\r
+       dfll_write_reg(DFLL0CONF, conf);\r
+\r
+       /* Finally, stop the reference clock */\r
+       genclk_disable(0);\r
+}\r
+\r
+void dfll_enable_closed_loop(const struct dfll_config *cfg, uint32_t dfll_id)\r
+{\r
+       irqflags_t flags;\r
+\r
+       UNUSED(dfll_id);\r
+\r
+       /* Enable the reference clock */\r
+       genclk_enable(&cfg->ref_cfg, 0);\r
+\r
+       /*\r
+        * Enable the DFLL first, but don't wait for the DFLL0RDY bit\r
+        * because if the DFLL has been disabled before, the DFLL0RDY\r
+        * bit stays cleared until it is re-enabled.\r
+        */\r
+       flags = cpu_irq_save();\r
+       SCIF->SCIF_UNLOCK = SCIF_UNLOCK_KEY(0xAAUL)\r
+               | SCIF_UNLOCK_ADDR((uint32_t)&SCIF->SCIF_DFLL0CONF - (uint32_t)SCIF);\r
+       SCIF->SCIF_DFLL0CONF = SCIF_DFLL0CONF_EN;\r
+       cpu_irq_restore(flags);\r
+\r
+       /*\r
+        * Then, configure the DFLL, taking care to wait for the\r
+        * DFLL0RDY bit before every step.\r
+        */\r
+       dfll_write_reg(DFLL0STEP, cfg->step);\r
+       dfll_write_reg(DFLL0MUL, cfg->mul);\r
+       dfll_write_reg(DFLL0SSG, cfg->ssg);\r
+       dfll_write_reg(DFLL0CONF, cfg->conf | SCIF_DFLL0CONF_EN);\r
+}\r
+\r
+void dfll_disable_closed_loop(uint32_t dfll_id)\r
+{\r
+       UNUSED(dfll_id);\r
+\r
+       /* First, disable the DFLL. */\r
+       // Do a sync before reading a dfll conf register\r
+       SCIF->SCIF_DFLL0SYNC = SCIF_DFLL0SYNC_SYNC;\r
+       while (!(SCIF->SCIF_PCLKSR & SCIF_PCLKSR_DFLL0RDY));\r
+\r
+       uint32_t conf = SCIF->SCIF_DFLL0CONF;\r
+       conf &= ~SCIF_DFLL0CONF_EN;\r
+       dfll_write_reg(DFLL0CONF, conf);\r
+\r
+       /* Finally, stop the reference clock */\r
+       genclk_disable(0);\r
+}\r
+\r
+void dfll_enable_config_defaults(uint32_t dfll_id)\r
+{\r
+#ifdef CONFIG_DFLL0_SOURCE\r
+       struct dfll_config dfllcfg;\r
+#endif\r
+       static bool open_loop_done = false;\r
+\r
+       if(SCIF->SCIF_DFLL0CONF & SCIF_DFLL0CONF_MODE) {\r
+               // Closed-loop mode\r
+               if (dfll_is_fine_locked(dfll_id)) {\r
+                       return; // DFLL already running\r
+               }\r
+       }\r
+       if (open_loop_done == true) {\r
+               return;\r
+       }\r
+\r
+       switch (dfll_id) {\r
+#ifdef CONFIG_DFLL0_SOURCE\r
+       case 0:\r
+               dfll_enable_source(CONFIG_DFLL0_SOURCE);\r
+               dfll_config_init_closed_loop_mode(&dfllcfg,\r
+                       CONFIG_DFLL0_SOURCE,\r
+                       CONFIG_DFLL0_DIV,\r
+                       CONFIG_DFLL0_MUL);\r
+\r
+               dfll_enable_closed_loop(&dfllcfg, dfll_id);\r
+               while (!dfll_is_fine_locked(dfll_id));\r
+               break;\r
+#endif\r
+\r
+       default:\r
+               Assert(false);\r
+               break;\r
+       }\r
+}\r
diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/asf/common/services/clock/sam4l/dfll.h b/FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/asf/common/services/clock/sam4l/dfll.h
new file mode 100644 (file)
index 0000000..731d487
--- /dev/null
@@ -0,0 +1,373 @@
+/**\r
+ * \file\r
+ *\r
+ * \brief Chip-specific DFLL definitions\r
+ *\r
+ * Copyright (c) 2012 Atmel Corporation. All rights reserved.\r
+ *\r
+ * \asf_license_start\r
+ *\r
+ * \page License\r
+ *\r
+ * Redistribution and use in source and binary forms, with or without\r
+ * modification, are permitted provided that the following conditions are met:\r
+ *\r
+ * 1. Redistributions of source code must retain the above copyright notice,\r
+ *    this list of conditions and the following disclaimer.\r
+ *\r
+ * 2. Redistributions in binary form must reproduce the above copyright notice,\r
+ *    this list of conditions and the following disclaimer in the documentation\r
+ *    and/or other materials provided with the distribution.\r
+ *\r
+ * 3. The name of Atmel may not be used to endorse or promote products derived\r
+ *    from this software without specific prior written permission.\r
+ *\r
+ * 4. This software may only be redistributed and used in connection with an\r
+ *    Atmel microcontroller product.\r
+ *\r
+ * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED\r
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\r
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE\r
+ * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR\r
+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\r
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS\r
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)\r
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,\r
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\r
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\r
+ * POSSIBILITY OF SUCH DAMAGE.\r
+ *\r
+ * \asf_license_stop\r
+ *\r
+ */\r
+#ifndef CHIP_DFLL_H_INCLUDED\r
+#define CHIP_DFLL_H_INCLUDED\r
+\r
+#ifdef __cplusplus\r
+extern "C" {\r
+#endif\r
+\r
+/**\r
+ * \weakgroup dfll_group\r
+ * @{\r
+ */\r
+\r
+#define NR_DFLLS          1\r
+#define DFLL_MIN_HZ       20000000UL\r
+#define DFLL_MAX_HZ       150000000UL\r
+#define DFLL_MIN_KHZ      (DFLL_MIN_HZ / 1000)\r
+#define DFLL_MAX_KHZ      (DFLL_MAX_HZ / 1000)\r
+\r
+#define DFLL_COARSE_MAX   (255)\r
+#define DFLL_FINE_MAX     (511)\r
+#define DFLL_FINE_HALF    (255)\r
+\r
+#define DFLL_CALIB_VALUE  (0x0B)\r
+\r
+#define DFLL_RANGE0       (0)\r
+#define DFLL_RANGE1       (1)\r
+#define DFLL_RANGE2       (2)\r
+#define DFLL_RANGE3       (3)\r
+#define DFLL_MAX_RANGE1   (110000000)\r
+#define DFLL_MAX_RANGE2   (55000000)\r
+#define DFLL_MAX_RANGE3   (30000000)\r
+\r
+#ifndef __ASSEMBLY__\r
+\r
+#include "compiler.h"\r
+#include <genclk.h>\r
+#include <osc.h>\r
+\r
+typedef enum genclk_source dfll_refclk_t;\r
+\r
+struct dfll_config {\r
+       struct genclk_config    ref_cfg;        //!< Reference clock\r
+       uint32_t                conf;           //!< DFLLnCONF\r
+       uint32_t                mul;            //!< DFLLnMUL\r
+       uint32_t                step;           //!< DFLLnSTEP\r
+       uint32_t                ssg;            //!< DFLLnSSG\r
+       uint32_t                val;            //!< DFLLnVAL\r
+       uint8_t                 freq_range;     //!< Frequency Range\r
+};\r
+\r
+static inline void dfll_config_set_max_step(struct dfll_config *cfg,\r
+               uint16_t coarse, uint16_t fine)\r
+{\r
+       cfg->step = (SCIF_DFLL0STEP_CSTEP(coarse)\r
+                       | SCIF_DFLL0STEP_FSTEP(fine));\r
+}\r
+\r
+static inline void dfll_priv_set_frequency_range(struct dfll_config *cfg,\r
+               uint32_t freq)\r
+{\r
+       if (freq < DFLL_MAX_RANGE3){\r
+               cfg->freq_range = DFLL_RANGE3;\r
+       }\r
+       else if (freq < DFLL_MAX_RANGE2){\r
+               cfg->freq_range = DFLL_RANGE2;\r
+       }\r
+       else if (freq < DFLL_MAX_RANGE1){\r
+               cfg->freq_range = DFLL_RANGE1;\r
+       }\r
+       else {\r
+               cfg->freq_range = DFLL_RANGE0;\r
+       }\r
+       cfg->conf &= ~SCIF_DFLL0CONF_RANGE_Msk;\r
+       cfg->conf |=SCIF_DFLL0CONF_RANGE(cfg->freq_range);\r
+}\r
+\r
+static inline void dfll_config_init_open_loop_mode(struct dfll_config *cfg)\r
+{\r
+       genclk_config_defaults(&cfg->ref_cfg, 0);\r
+       // Do a sync before reading a dfll conf register\r
+       SCIF->SCIF_DFLL0SYNC = SCIF_DFLL0SYNC_SYNC;\r
+       while (!(SCIF->SCIF_PCLKSR & SCIF_PCLKSR_DFLL0RDY));\r
+       cfg->conf = SCIF->SCIF_DFLL0CONF;\r
+       // Select Open Loop Mode\r
+       cfg->conf &= ~SCIF_DFLL0CONF_MODE;\r
+       // Clear DFLL Frequency Range\r
+       cfg->freq_range = 0;\r
+       cfg->conf &= ~SCIF_DFLL0CONF_RANGE_Msk;\r
+       cfg->conf |= SCIF_DFLL0CONF_RANGE(cfg->freq_range);\r
+\r
+       cfg->mul = 0;\r
+       cfg->step = 0;\r
+       cfg->ssg = 0;\r
+       cfg->val = 0;\r
+}\r
+\r
+#ifdef CONFIG_DFLL0_FREQ\r
+static inline void dfll_config_init_closed_loop_mode(struct dfll_config *cfg,\r
+               dfll_refclk_t refclk, uint16_t divide, uint16_t mul)\r
+{\r
+       /*\r
+        * Set up generic clock source with specified reference clock\r
+        * and divider.\r
+        */\r
+       genclk_config_defaults(&cfg->ref_cfg, 0);\r
+       genclk_config_set_source(&cfg->ref_cfg, refclk);\r
+       genclk_config_set_divider(&cfg->ref_cfg, divide);\r
+\r
+       // Do a sync before reading a dfll conf register\r
+       SCIF->SCIF_DFLL0SYNC = SCIF_DFLL0SYNC_SYNC;\r
+       while (!(SCIF->SCIF_PCLKSR & SCIF_PCLKSR_DFLL0RDY));\r
+       cfg->conf = SCIF->SCIF_DFLL0CONF;\r
+       // Select Closed Loop Mode\r
+       cfg->conf |= SCIF_DFLL0CONF_MODE;\r
+       // Write DFLL Frequency Range\r
+       dfll_priv_set_frequency_range(cfg, CONFIG_DFLL0_FREQ);\r
+\r
+       cfg->mul = mul;\r
+       cfg->val = 0;\r
+       /*\r
+        * Initial step length of 4. If this is set too high, the DFLL\r
+        * may fail to lock.\r
+        */\r
+       dfll_config_set_max_step(cfg, 4, 4);\r
+       cfg->ssg = 0;\r
+}\r
+#endif\r
+\r
+static inline uint32_t dfll_priv_get_source_hz(dfll_refclk_t src)\r
+{\r
+       /*\r
+        * Only handle the cases that actually make sense as a DFLL\r
+        * source. The DFLL itself is obviously not one of those cases.\r
+        */\r
+       switch (src) {\r
+       case GENCLK_SRC_RCSYS:\r
+               return OSC_RCSYS_NOMINAL_HZ;\r
+\r
+#ifdef BOARD_OSC32_HZ\r
+       case GENCLK_SRC_OSC32K:\r
+               return BOARD_OSC32_HZ;\r
+#endif\r
+\r
+#ifdef BOARD_OSC0_HZ\r
+       case GENCLK_SRC_OSC0:\r
+               return BOARD_OSC0_HZ;\r
+#endif\r
+\r
+       case GENCLK_SRC_RC80M:\r
+               return OSC_RC80M_NOMINAL_HZ;\r
+\r
+       case GENCLK_SRC_RC32K:\r
+               return OSC_RC32K_NOMINAL_HZ;\r
+\r
+       default:\r
+               /* unhandled_case(src) */\r
+               return 0;\r
+       }\r
+}\r
+\r
+#define dfll_config_defaults(cfg, dfll_id)                                     \\r
+       dfll_config_init_closed_loop_mode(cfg,                                 \\r
+                       CONFIG_DFLL##dfll_id##_SOURCE,                         \\r
+                       CONFIG_DFLL##dfll_id##_DIV,                            \\r
+                       CONFIG_DFLL##dfll_id##_MUL)\r
+\r
+#define dfll_get_default_rate(dfll_id)                                         \\r
+       ((dfll_priv_get_source_hz(CONFIG_DFLL##dfll_id##_SOURCE)               \\r
+                       * CONFIG_DFLL##dfll_id##_MUL)                          \\r
+               / CONFIG_DFLL##dfll_id##_DIV)\r
+\r
+static inline void dfll_config_set_initial_tuning(struct dfll_config *cfg,\r
+               uint16_t coarse, uint16_t fine)\r
+{\r
+       cfg->val = (SCIF_DFLL0VAL_COARSE(coarse)\r
+                       | SCIF_DFLL0VAL_FINE(fine));\r
+}\r
+\r
+/**\r
+ * \brief Tune the DFLL configuration for a specific target frequency\r
+ *\r
+ * This will set the initial coarse and fine DFLL tuning to match the\r
+ * given target frequency. In open loop mode, this will cause the DFLL\r
+ * to run close to the specified frequency, though it may not match\r
+ * exactly. In closed loop mode, the DFLL will automatically tune itself\r
+ * to the target frequency regardless of the initial tuning, but this\r
+ * function may be used to set a starting point close to the desired\r
+ * frequency in order to reduce the startup time.\r
+ *\r
+ * \par Calculating the DFLL frequency\r
+ *\r
+ * \f{eqnarray*}{\r
+       f_{DFLL} &=& \left[f_{min} + \left(f_{max} - f_{min}\right)\r
+               \frac{\mathrm{COARSE}}{\mathrm{COARSE}_{max}}\right]\r
+               \left(1 + x \frac{\mathrm{FINE}\r
+                       - \mathrm{FINE}_{half}}{\mathrm{FINE}_{max}}\right)\r
+               = f_{coarse} \left(1 + x\r
+               \frac{\mathrm{FINE}\r
+                       - \mathrm{FINE}_{half}}{\mathrm{FINE}_{max}}\right) \\\r
+       \mathrm{COARSE} &=& \frac{\left(f_{DFLL} - f_{min}\right)}\r
+               {f_{max} - f_{min}} \mathrm{COARSE}_{max} \\\r
+       f_{coarse} &=& f_{min} + \left(f_{max} - f_{min}\right)\r
+               \frac{\mathrm{COARSE}}{\mathrm{COARSE}_{max}} \\\r
+       \mathrm{FINE} &=& \left(10 \frac{f_{DFLL} - f_{coarse}}\r
+               {f_{coarse}} + \mathrm{FINE}_{half}\right) / 4\r
+   \f}\r
+ *\r
+ * \param cfg The DFLL configuration to be tuned.\r
+ * \param target_hz Target frequency in Hz.\r
+ */\r
+static inline void dfll_config_tune_for_target_hz(struct dfll_config *cfg,\r
+               uint32_t target_hz)\r
+{\r
+       uint32_t target_khz;\r
+       uint32_t coarse_khz;\r
+       uint32_t delta_khz;\r
+       uint32_t coarse;\r
+       uint32_t fine;\r
+\r
+       target_khz = target_hz / 1000;\r
+       coarse = ((target_khz - DFLL_MIN_KHZ) * DFLL_COARSE_MAX)\r
+                       / (DFLL_MAX_KHZ - DFLL_MIN_KHZ);\r
+       coarse_khz = DFLL_MIN_KHZ + (((DFLL_MAX_KHZ - DFLL_MIN_KHZ)\r
+                       / DFLL_COARSE_MAX) * coarse);\r
+       delta_khz = target_khz - coarse_khz;\r
+       fine = (((delta_khz * DFLL_FINE_MAX) * 2) / coarse_khz) * 5;\r
+       fine += DFLL_FINE_HALF;\r
+       fine /= 4;\r
+\r
+       dfll_config_set_initial_tuning(cfg, coarse, fine);\r
+       dfll_priv_set_frequency_range(cfg, target_hz);\r
+}\r
+\r
+static inline void dfll_config_enable_ssg(struct dfll_config *cfg,\r
+               uint16_t amplitude, uint16_t step_size)\r
+{\r
+       cfg->ssg = (SCIF_DFLL0SSG_EN\r
+                       | SCIF_DFLL0SSG_AMPLITUDE(amplitude)\r
+                       | SCIF_DFLL0SSG_STEPSIZE(step_size));\r
+}\r
+\r
+static inline void dfll_config_disable_ssg(struct dfll_config *cfg)\r
+{\r
+       cfg->ssg = 0;\r
+}\r
+\r
+extern void dfll_enable_open_loop(const struct dfll_config *cfg,\r
+               uint32_t dfll_id);\r
+extern void dfll_disable_open_loop(uint32_t dfll_id);\r
+extern void dfll_enable_closed_loop(const struct dfll_config *cfg,\r
+               uint32_t dfll_id);\r
+extern void dfll_disable_closed_loop(uint32_t dfll_id);\r
+#ifndef CHIP_GENCLK_H_INCLUDED\r
+// This function already has a prototype in genclk.h.\r
+extern void dfll_enable_config_defaults(uint32_t dfll_id);\r
+#endif\r
+\r
+static inline bool dfll_is_coarse_locked(uint32_t dfll_id)\r
+{\r
+       UNUSED(dfll_id);\r
+       return !!(SCIF->SCIF_PCLKSR & SCIF_PCLKSR_DFLL0LOCKC);\r
+}\r
+\r
+static inline bool dfll_is_fine_locked(uint32_t dfll_id)\r
+{\r
+       UNUSED(dfll_id);\r
+       return !!(SCIF->SCIF_PCLKSR & SCIF_PCLKSR_DFLL0LOCKF);\r
+}\r
+\r
+static inline bool dfll_is_accurate_locked(uint32_t dfll_id)\r
+{\r
+       UNUSED(dfll_id);\r
+\r
+       return (dfll_is_coarse_locked(dfll_id) &&\r
+                       dfll_is_fine_locked(dfll_id));\r
+}\r
+\r
+static inline void dfll_enable_source(dfll_refclk_t src)\r
+{\r
+       switch (src) {\r
+       case GENCLK_SRC_RCSYS:\r
+               /* Nothing to do */\r
+               break;\r
+\r
+#ifdef BOARD_OSC32_HZ\r
+       case GENCLK_SRC_OSC32K:\r
+               if (!osc_is_ready(OSC_ID_OSC32)) {\r
+                       osc_enable(OSC_ID_OSC32);\r
+                       osc_wait_ready(OSC_ID_OSC32);\r
+               }\r
+               break;\r
+#endif\r
+\r
+#ifdef BOARD_OSC0_HZ\r
+       case GENCLK_SRC_OSC0:\r
+               if (!osc_is_ready(OSC_ID_OSC0)) {\r
+                       osc_enable(OSC_ID_OSC0);\r
+                       osc_wait_ready(OSC_ID_OSC0);\r
+               }\r
+               break;\r
+#endif\r
+\r
+       case GENCLK_SRC_RC80M:\r
+               if (!osc_is_ready(OSC_ID_RC80M)) {\r
+                       osc_enable(OSC_ID_RC80M);\r
+                       osc_wait_ready(OSC_ID_RC80M);\r
+               }\r
+               break;\r
+\r
+       case GENCLK_SRC_RC32K:\r
+               if (!osc_is_ready(OSC_ID_RC32K)) {\r
+                       osc_enable(OSC_ID_RC32K);\r
+                       osc_wait_ready(OSC_ID_RC32K);\r
+               }\r
+               break;\r
+\r
+       default:\r
+               Assert(false);\r
+               break;\r
+       }\r
+}\r
+\r
+#endif /* __ASSEMBLY__ */\r
+\r
+//! @}\r
+\r
+#ifdef __cplusplus\r
+}\r
+#endif\r
+\r
+#endif /* CHIP_DFLL_H_INCLUDED */\r
diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/asf/common/services/clock/sam4l/genclk.h b/FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/asf/common/services/clock/sam4l/genclk.h
new file mode 100644 (file)
index 0000000..3f5e74d
--- /dev/null
@@ -0,0 +1,238 @@
+/**\r
+ * \file\r
+ *\r
+ * \brief Chip-specific generic clock management\r
+ *\r
+ * Copyright (c) 2012 Atmel Corporation. All rights reserved.\r
+ *\r
+ * \asf_license_start\r
+ *\r
+ * \page License\r
+ *\r
+ * Redistribution and use in source and binary forms, with or without\r
+ * modification, are permitted provided that the following conditions are met:\r
+ *\r
+ * 1. Redistributions of source code must retain the above copyright notice,\r
+ *    this list of conditions and the following disclaimer.\r
+ *\r
+ * 2. Redistributions in binary form must reproduce the above copyright notice,\r
+ *    this list of conditions and the following disclaimer in the documentation\r
+ *    and/or other materials provided with the distribution.\r
+ *\r
+ * 3. The name of Atmel may not be used to endorse or promote products derived\r
+ *    from this software without specific prior written permission.\r
+ *\r
+ * 4. This software may only be redistributed and used in connection with an\r
+ *    Atmel microcontroller product.\r
+ *\r
+ * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED\r
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\r
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE\r
+ * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR\r
+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\r
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS\r
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)\r
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,\r
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\r
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\r
+ * POSSIBILITY OF SUCH DAMAGE.\r
+ *\r
+ * \asf_license_stop\r
+ *\r
+ */\r
+#ifndef CHIP_GENCLK_H_INCLUDED\r
+#define CHIP_GENCLK_H_INCLUDED\r
+\r
+#ifdef __cplusplus\r
+extern "C" {\r
+#endif\r
+\r
+// dfll.h is not included to avoid a circular dependency.\r
+extern void dfll_enable_config_defaults(uint32_t dfll_id);\r
+\r
+/**\r
+ * \weakgroup genclk_group\r
+ * @{\r
+ */\r
+\r
+//! \name Chip-specific generic clock definitions\r
+//@{\r
+\r
+#define GENCLK_DIV_MAX          256\r
+\r
+#ifndef __ASSEMBLY__\r
+\r
+#include <compiler.h>\r
+#include <osc.h>\r
+#include <pll.h>\r
+\r
+enum genclk_source {\r
+       GENCLK_SRC_RCSYS        = 0,    //!< System RC oscillator\r
+       GENCLK_SRC_OSC32K       = 1,    //!< 32 kHz oscillator\r
+       GENCLK_SRC_DFLL         = 2,    //!< DFLL\r
+       GENCLK_SRC_OSC0         = 3,    //!< Oscillator 0\r
+       GENCLK_SRC_RC80M        = 4,    //!< 80 MHz RC oscillator\r
+       GENCLK_SRC_RCFAST       = 5,    //!< 4-8-12 MHz RC oscillator\r
+       GENCLK_SRC_RC1M         = 6,    //!< 1 MHz RC oscillator\r
+       GENCLK_SRC_CLK_CPU      = 7,    //!< CPU clock\r
+       GENCLK_SRC_CLK_HSB      = 8,    //!< High Speed Bus clock\r
+       GENCLK_SRC_CLK_PBA      = 9,    //!< Peripheral Bus A clock\r
+       GENCLK_SRC_CLK_PBB      = 10,   //!< Peripheral Bus B clock\r
+       GENCLK_SRC_CLK_PBC      = 11,   //!< Peripheral Bus C clock\r
+       GENCLK_SRC_CLK_PBD      = 12,   //!< Peripheral Bus D clock\r
+       GENCLK_SRC_RC32K        = 13,   //!< 32 kHz RC oscillator\r
+       GENCLK_SRC_CLK_1K       = 15,   //!< 1 kHz output from OSC32K\r
+       GENCLK_SRC_PLL0         = 16,   //!< PLL0\r
+       GENCLK_SRC_HRPCLK       = 17,   //!< High resolution prescaler\r
+       GENCLK_SRC_FPCLK        = 18,   //!< Fractional prescaler\r
+       GENCLK_SRC_GCLKIN0      = 19,   //!< GCLKIN0\r
+       GENCLK_SRC_GCLKIN1      = 20,   //!< GCLKIN1\r
+       GENCLK_SRC_GCLK11       = 21,   //!< GCLK11\r
+};\r
+\r
+//@}\r
+\r
+struct genclk_config {\r
+       uint32_t ctrl;\r
+};\r
+\r
+static inline void genclk_config_defaults(struct genclk_config *cfg,\r
+               uint32_t id)\r
+{\r
+       UNUSED(id);\r
+       cfg->ctrl = 0;\r
+}\r
+\r
+static inline void genclk_config_read(struct genclk_config *cfg,\r
+               uint32_t id)\r
+{\r
+       cfg->ctrl = SCIF->SCIF_GCCTRL[id].SCIF_GCCTRL;\r
+}\r
+\r
+static inline void genclk_config_write(const struct genclk_config *cfg,\r
+               uint32_t id)\r
+{\r
+       SCIF->SCIF_GCCTRL[id].SCIF_GCCTRL = cfg->ctrl;\r
+}\r
+\r
+static inline void genclk_config_set_source(struct genclk_config *cfg,\r
+               enum genclk_source src)\r
+{\r
+       cfg->ctrl = (cfg->ctrl & ~SCIF_GCCTRL_OSCSEL_Msk)\r
+                       | SCIF_GCCTRL_OSCSEL(src);\r
+}\r
+\r
+static inline void genclk_config_set_divider(struct genclk_config *cfg,\r
+               uint32_t divider)\r
+{\r
+       Assert(divider > 0 && divider <= GENCLK_DIV_MAX);\r
+\r
+       /* Clear all the bits we're about to modify */\r
+       cfg->ctrl &= ~(SCIF_GCCTRL_DIVEN\r
+                       | SCIF_GCCTRL_DIV_Msk);\r
+\r
+       if (divider > 1) {\r
+               cfg->ctrl |= SCIF_GCCTRL_DIVEN;\r
+               cfg->ctrl |= SCIF_GCCTRL_DIV(((divider + 1) / 2) - 1);\r
+       }\r
+}\r
+\r
+static inline void genclk_enable(const struct genclk_config *cfg,\r
+               uint32_t id)\r
+{\r
+        SCIF->SCIF_GCCTRL[id].SCIF_GCCTRL = cfg->ctrl | SCIF_GCCTRL_CEN;\r
+}\r
+\r
+static inline void genclk_disable(uint32_t id)\r
+{\r
+       SCIF->SCIF_GCCTRL[id].SCIF_GCCTRL = 0;\r
+}\r
+\r
+static inline void genclk_enable_source(enum genclk_source src)\r
+{\r
+       switch (src) {\r
+       case GENCLK_SRC_RCSYS:\r
+       case GENCLK_SRC_CLK_CPU:\r
+       case GENCLK_SRC_CLK_HSB:\r
+       case GENCLK_SRC_CLK_PBA:\r
+       case GENCLK_SRC_CLK_PBB:\r
+       case GENCLK_SRC_CLK_PBC:\r
+       case GENCLK_SRC_CLK_PBD:\r
+               // Nothing to do\r
+               break;\r
+\r
+#ifdef BOARD_OSC32_HZ\r
+       case GENCLK_SRC_OSC32K:\r
+       case GENCLK_SRC_CLK_1K: // The 1K linked on OSC32K\r
+               if (!osc_is_ready(OSC_ID_OSC32)) {\r
+                       osc_enable(OSC_ID_OSC32);\r
+                       osc_wait_ready(OSC_ID_OSC32);\r
+               }\r
+               break;\r
+#endif\r
+\r
+       case GENCLK_SRC_RC80M:\r
+               if (!osc_is_ready(OSC_ID_RC80M)) {\r
+                       osc_enable(OSC_ID_RC80M);\r
+                       osc_wait_ready(OSC_ID_RC80M);\r
+               }\r
+               break;\r
+\r
+       case GENCLK_SRC_RCFAST:\r
+               if (!osc_is_ready(OSC_ID_RCFAST)) {\r
+                       osc_enable(OSC_ID_RCFAST);\r
+                       osc_wait_ready(OSC_ID_RCFAST);\r
+               }\r
+               break;\r
+\r
+       case GENCLK_SRC_RC1M:\r
+               if (!osc_is_ready(OSC_ID_RC1M)) {\r
+                       osc_enable(OSC_ID_RC1M);\r
+                       osc_wait_ready(OSC_ID_RC1M);\r
+               }\r
+               break;\r
+\r
+       case GENCLK_SRC_RC32K:\r
+               if (!osc_is_ready(OSC_ID_RC32K)) {\r
+                       osc_enable(OSC_ID_RC32K);\r
+                       osc_wait_ready(OSC_ID_RC32K);\r
+               }\r
+               break;\r
+\r
+#ifdef CONFIG_DFLL0_SOURCE\r
+       case GENCLK_SRC_DFLL:\r
+               dfll_enable_config_defaults(0);\r
+               break;\r
+#endif\r
+\r
+#ifdef BOARD_OSC0_HZ\r
+       case GENCLK_SRC_OSC0:\r
+               if (!osc_is_ready(OSC_ID_OSC0)) {\r
+                       osc_enable(OSC_ID_OSC0);\r
+                       osc_wait_ready(OSC_ID_OSC0);\r
+               }\r
+               break;\r
+#endif\r
+\r
+# ifdef CONFIG_PLL0_SOURCE\r
+       case GENCLK_SRC_PLL0: {\r
+               pll_enable_config_defaults(0);\r
+               break;\r
+       }\r
+# endif\r
+\r
+       default:\r
+               Assert(false);\r
+               break;\r
+       }\r
+}\r
+\r
+#endif /* __ASSEMBLY__ */\r
+\r
+//! @}\r
+\r
+#ifdef __cplusplus\r
+}\r
+#endif\r
+\r
+#endif /* CHIP_GENCLK_H_INCLUDED */\r
diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/asf/common/services/clock/sam4l/osc.c b/FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/asf/common/services/clock/sam4l/osc.c
new file mode 100644 (file)
index 0000000..0c4ecf4
--- /dev/null
@@ -0,0 +1,222 @@
+/**\r
+ * \file\r
+ *\r
+ * \brief Chip-specific oscillator management functions\r
+ *\r
+ * Copyright (c) 2012 Atmel Corporation. All rights reserved.\r
+ *\r
+ * \asf_license_start\r
+ *\r
+ * \page License\r
+ *\r
+ * Redistribution and use in source and binary forms, with or without\r
+ * modification, are permitted provided that the following conditions are met:\r
+ *\r
+ * 1. Redistributions of source code must retain the above copyright notice,\r
+ *    this list of conditions and the following disclaimer.\r
+ *\r
+ * 2. Redistributions in binary form must reproduce the above copyright notice,\r
+ *    this list of conditions and the following disclaimer in the documentation\r
+ *    and/or other materials provided with the distribution.\r
+ *\r
+ * 3. The name of Atmel may not be used to endorse or promote products derived\r
+ *    from this software without specific prior written permission.\r
+ *\r
+ * 4. This software may only be redistributed and used in connection with an\r
+ *    Atmel microcontroller product.\r
+ *\r
+ * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED\r
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\r
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE\r
+ * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR\r
+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\r
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS\r
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)\r
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,\r
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\r
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\r
+ * POSSIBILITY OF SUCH DAMAGE.\r
+ *\r
+ * \asf_license_stop\r
+ *\r
+ */\r
+#include <osc.h>\r
+\r
+#ifdef BOARD_OSC0_HZ\r
+void osc_priv_enable_osc0(void)\r
+{\r
+       irqflags_t flags;\r
+\r
+       flags = cpu_irq_save();\r
+       SCIF->SCIF_UNLOCK = SCIF_UNLOCK_KEY(0xAAu)\r
+               | SCIF_UNLOCK_ADDR((uint32_t)&SCIF->SCIF_OSCCTRL0 - (uint32_t)SCIF);\r
+       SCIF->SCIF_OSCCTRL0 =\r
+                       OSC0_STARTUP_VALUE\r
+# if BOARD_OSC0_IS_XTAL == true\r
+                       | OSC0_GAIN_VALUE\r
+#endif\r
+                       | OSC0_MODE_VALUE\r
+                       | SCIF_OSCCTRL0_OSCEN;\r
+       cpu_irq_restore(flags);\r
+}\r
+\r
+void osc_priv_disable_osc0(void)\r
+{\r
+       irqflags_t flags;\r
+\r
+       flags = cpu_irq_save();\r
+       SCIF->SCIF_UNLOCK = SCIF_UNLOCK_KEY(0xAAu)\r
+               | SCIF_UNLOCK_ADDR((uint32_t)&SCIF->SCIF_OSCCTRL0 - (uint32_t)SCIF);\r
+       SCIF->SCIF_OSCCTRL0 = 0;\r
+       cpu_irq_restore(flags);\r
+}\r
+#endif /* BOARD_OSC0_HZ */\r
+\r
+#ifdef BOARD_OSC32_HZ\r
+void osc_priv_enable_osc32(void)\r
+{\r
+       irqflags_t flags;\r
+\r
+       flags = cpu_irq_save();\r
+       BSCIF->BSCIF_UNLOCK = BSCIF_UNLOCK_KEY(0xAAu)\r
+               | BSCIF_UNLOCK_ADDR((uint32_t)&BSCIF->BSCIF_OSCCTRL32 - (uint32_t)BSCIF);\r
+       BSCIF->BSCIF_OSCCTRL32 =\r
+                       OSC32_STARTUP_VALUE\r
+                       | BOARD_OSC32_SELCURR\r
+                       | OSC32_MODE_VALUE\r
+                       | BSCIF_OSCCTRL32_EN1K\r
+                       | BSCIF_OSCCTRL32_EN32K\r
+                       | BSCIF_OSCCTRL32_OSC32EN;\r
+       cpu_irq_restore(flags);\r
+}\r
+\r
+void osc_priv_disable_osc32(void)\r
+{\r
+       irqflags_t flags;\r
+\r
+       flags = cpu_irq_save();\r
+       BSCIF->BSCIF_UNLOCK = BSCIF_UNLOCK_KEY(0xAAu)\r
+               | BSCIF_UNLOCK_ADDR((uint32_t)&BSCIF->BSCIF_OSCCTRL32 - (uint32_t)BSCIF);\r
+       BSCIF->BSCIF_OSCCTRL32 &= ~BSCIF_OSCCTRL32_OSC32EN;\r
+       // Wait until OSC32 RDY flag is cleared.\r
+       while (BSCIF->BSCIF_PCLKSR & BSCIF_PCLKSR_OSC32RDY);\r
+       cpu_irq_restore(flags);\r
+}\r
+#endif /* BOARD_OSC32_HZ */\r
+\r
+void osc_priv_enable_rc32k(void)\r
+{\r
+       irqflags_t flags;\r
+       uint32_t temp;\r
+\r
+       flags = cpu_irq_save();\r
+       temp = BSCIF->BSCIF_RC32KCR;\r
+       BSCIF->BSCIF_UNLOCK = BSCIF_UNLOCK_KEY(0xAAu)\r
+               | BSCIF_UNLOCK_ADDR((uint32_t)&BSCIF->BSCIF_RC32KCR - (uint32_t)BSCIF);\r
+       BSCIF->BSCIF_RC32KCR = temp | BSCIF_RC32KCR_EN32K | BSCIF_RC32KCR_EN;\r
+       cpu_irq_restore(flags);\r
+}\r
+\r
+void osc_priv_disable_rc32k(void)\r
+{\r
+       irqflags_t flags;\r
+       uint32_t temp;\r
+\r
+       flags = cpu_irq_save();\r
+       temp = BSCIF->BSCIF_RC32KCR;\r
+       temp &= ~BSCIF_RC32KCR_EN;\r
+       BSCIF->BSCIF_UNLOCK = BSCIF_UNLOCK_KEY(0xAAu)\r
+               | BSCIF_UNLOCK_ADDR((uint32_t)&BSCIF->BSCIF_RC32KCR - (uint32_t)BSCIF);\r
+       BSCIF->BSCIF_RC32KCR = temp;\r
+       cpu_irq_restore(flags);\r
+}\r
+\r
+void osc_priv_enable_rc1m(void)\r
+{\r
+       irqflags_t flags;\r
+       uint32_t temp;\r
+\r
+       flags = cpu_irq_save();\r
+       temp = BSCIF->BSCIF_RC1MCR;\r
+       BSCIF->BSCIF_UNLOCK = BSCIF_UNLOCK_KEY(0xAAu)\r
+               | BSCIF_UNLOCK_ADDR((uint32_t)&BSCIF->BSCIF_RC1MCR - (uint32_t)BSCIF);\r
+       BSCIF->BSCIF_RC1MCR = temp | BSCIF_RC1MCR_CLKOE;\r
+       cpu_irq_restore(flags);\r
+}\r
+\r
+void osc_priv_disable_rc1m(void)\r
+{\r
+       irqflags_t flags;\r
+       uint32_t temp;\r
+\r
+       flags = cpu_irq_save();\r
+       temp = BSCIF->BSCIF_RC1MCR;\r
+       temp &= ~BSCIF_RC1MCR_CLKOE;\r
+       BSCIF->BSCIF_UNLOCK = BSCIF_UNLOCK_KEY(0xAAu)\r
+               | BSCIF_UNLOCK_ADDR((uint32_t)&BSCIF->BSCIF_RC1MCR - (uint32_t)BSCIF);\r
+       BSCIF->BSCIF_RC1MCR = temp;\r
+       cpu_irq_restore(flags);\r
+}\r
+\r
+void osc_priv_enable_rc80m(void)\r
+{\r
+       irqflags_t flags;\r
+       uint32_t temp;\r
+\r
+       flags = cpu_irq_save();\r
+       temp = SCIF->SCIF_RC80MCR;\r
+       SCIF->SCIF_UNLOCK = SCIF_UNLOCK_KEY(0xAAu)\r
+               | SCIF_UNLOCK_ADDR((uint32_t)&SCIF->SCIF_RC80MCR - (uint32_t)SCIF);\r
+       SCIF->SCIF_RC80MCR = temp | SCIF_RC80MCR_EN;\r
+       cpu_irq_restore(flags);\r
+}\r
+\r
+void osc_priv_disable_rc80m(void)\r
+{\r
+       irqflags_t flags;\r
+       uint32_t temp;\r
+\r
+       flags = cpu_irq_save();\r
+       temp = SCIF->SCIF_RC80MCR;\r
+       temp &= ~SCIF_RC80MCR_EN ;\r
+       SCIF->SCIF_UNLOCK = SCIF_UNLOCK_KEY(0xAAu)\r
+               | SCIF_UNLOCK_ADDR((uint32_t)&SCIF->SCIF_RC80MCR - (uint32_t)SCIF);\r
+       SCIF->SCIF_RC80MCR = temp;\r
+       cpu_irq_restore(flags);\r
+}\r
+\r
+void osc_priv_enable_rcfast(void)\r
+{\r
+       irqflags_t flags;\r
+       uint32_t temp;\r
+\r
+       flags = cpu_irq_save();\r
+       // Let FCD and calibration value by default\r
+       temp = SCIF->SCIF_RCFASTCFG;\r
+       // Clear previous FRANGE value\r
+       temp &= ~SCIF_RCFASTCFG_FRANGE_Msk;\r
+\r
+       SCIF->SCIF_UNLOCK = SCIF_UNLOCK_KEY(0xAAu)\r
+               | SCIF_UNLOCK_ADDR((uint32_t)&SCIF->SCIF_RCFASTCFG - (uint32_t)SCIF);\r
+       SCIF->SCIF_RCFASTCFG = temp | SCIF_RCFASTCFG_EN\r
+               | SCIF_RCFASTCFG_FRANGE(CONFIG_RCFAST_FRANGE);\r
+       cpu_irq_restore(flags);\r
+}\r
+\r
+void osc_priv_disable_rcfast(void)\r
+{\r
+       irqflags_t flags;\r
+       uint32_t temp;\r
+       flags = cpu_irq_save();\r
+       // Let FCD and calibration value by default\r
+       temp = SCIF->SCIF_RCFASTCFG;\r
+       // Clear previous FRANGE value\r
+       temp &= ~SCIF_RCFASTCFG_FRANGE_Msk;\r
+       // Disalbe RCFAST\r
+       temp &= ~SCIF_RCFASTCFG_EN;\r
+       SCIF->SCIF_UNLOCK = SCIF_UNLOCK_KEY(0xAAu)\r
+               | SCIF_UNLOCK_ADDR((uint32_t)&SCIF->SCIF_RCFASTCFG - (uint32_t)SCIF);\r
+       SCIF->SCIF_RCFASTCFG = temp;\r
+       cpu_irq_restore(flags);\r
+}\r
+\r
diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/asf/common/services/clock/sam4l/osc.h b/FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/asf/common/services/clock/sam4l/osc.h
new file mode 100644 (file)
index 0000000..faca56d
--- /dev/null
@@ -0,0 +1,504 @@
+/**\r
+ * \file\r
+ *\r
+ * \brief Chip-specific oscillator management functions\r
+ *\r
+ * Copyright (c) 2012 Atmel Corporation. All rights reserved.\r
+ *\r
+ * \asf_license_start\r
+ *\r
+ * \page License\r
+ *\r
+ * Redistribution and use in source and binary forms, with or without\r
+ * modification, are permitted provided that the following conditions are met:\r
+ *\r
+ * 1. Redistributions of source code must retain the above copyright notice,\r
+ *    this list of conditions and the following disclaimer.\r
+ *\r
+ * 2. Redistributions in binary form must reproduce the above copyright notice,\r
+ *    this list of conditions and the following disclaimer in the documentation\r
+ *    and/or other materials provided with the distribution.\r
+ *\r
+ * 3. The name of Atmel may not be used to endorse or promote products derived\r
+ *    from this software without specific prior written permission.\r
+ *\r
+ * 4. This software may only be redistributed and used in connection with an\r
+ *    Atmel microcontroller product.\r
+ *\r
+ * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED\r
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\r
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE\r
+ * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR\r
+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\r
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS\r
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)\r
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,\r
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\r
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\r
+ * POSSIBILITY OF SUCH DAMAGE.\r
+ *\r
+ * \asf_license_stop\r
+ *\r
+ */\r
+#ifndef CHIP_OSC_H_INCLUDED\r
+#define CHIP_OSC_H_INCLUDED\r
+\r
+#include <board.h>\r
+\r
+#ifdef __cplusplus\r
+extern "C" {\r
+#endif\r
+\r
+\r
+/**\r
+ * \weakgroup osc_group\r
+ * @{\r
+ */\r
+\r
+//! \name Oscillator identifiers\r
+//@{\r
+#define OSC_ID_OSC0             0       //!< External Oscillator 0\r
+#define OSC_ID_OSC32            1       //!< External 32 kHz oscillator\r
+#define OSC_ID_RC32K            2       //!< Internal 32 kHz RC oscillator\r
+#define OSC_ID_RC80M            3       //!< Internal 80 MHz RC oscillator\r
+#define OSC_ID_RCFAST           4       //!< Internal 4-8-12 MHz RCFAST oscillator\r
+#define OSC_ID_RC1M             5       //!< Internal 1 MHz RC oscillator\r
+#define OSC_ID_RCSYS            6       //!< Internal System RC oscillator\r
+//@}\r
+\r
+//! \name OSC0 mode values\r
+//@{\r
+//! External clock connected to XIN\r
+#define OSC_MODE_EXTERNAL       0\r
+//! Crystal connected to XIN/XOUT\r
+#define OSC_MODE_XTAL           SCIF_OSCCTRL0_MODE\r
+//@}\r
+\r
+//! \name OSC32 mode values\r
+//@{\r
+//! External clock connected to XIN32\r
+#define OSC32_MODE_EXTERNAL     BSCIF_OSCCTRL32_MODE(0)\r
+//! Crystal connected to XIN32/XOUT32\r
+#define OSC32_MODE_XTAL         BSCIF_OSCCTRL32_MODE(1)\r
+//! Crystal connected to XIN32/XOUT32 in high current mode\r
+#define OSC32_MODE_XTAL_HC      BSCIF_OSCCTRL32_MODE(4)\r
+//@}\r
+\r
+//! \name OSC0 startup values\r
+//@{\r
+//! 0 cycles\r
+#define OSC_STARTUP_0           SCIF_OSCCTRL0_STARTUP(0)\r
+//! 64 cycles (560 us)\r
+#define OSC_STARTUP_64          SCIF_OSCCTRL0_STARTUP(1)\r
+//! 128 cycles (1.1 ms)\r
+#define OSC_STARTUP_128         SCIF_OSCCTRL0_STARTUP(2)\r
+//! 2048 cycles (18 ms)\r
+#define OSC_STARTUP_2048        SCIF_OSCCTRL0_STARTUP(3)\r
+//! 4096 cycles (36 ms)\r
+#define OSC_STARTUP_4096        SCIF_OSCCTRL0_STARTUP(4)\r
+//! 8192 cycles (71 ms)\r
+#define OSC_STARTUP_8192        SCIF_OSCCTRL0_STARTUP(5)\r
+//! 16384 cycles (143 ms)\r
+#define OSC_STARTUP_16384       SCIF_OSCCTRL0_STARTUP(6)\r
+//! 32768 cycles (285 ms)\r
+#define OSC_STARTUP_32768       SCIF_OSCCTRL0_STARTUP(7)\r
+//@}\r
+\r
+//! \name OSC32 startup values\r
+//@{\r
+//! 0 cycles\r
+#define OSC32_STARTUP_0         BSCIF_OSCCTRL32_STARTUP(0)\r
+//! 128 cycles (1.1 ms)\r
+#define OSC32_STARTUP_128       BSCIF_OSCCTRL32_STARTUP(1)\r
+//! 8192 cycles (72.3 ms)\r
+#define OSC32_STARTUP_8192      BSCIF_OSCCTRL32_STARTUP(2)\r
+//! 16384 cycles (143 ms)\r
+#define OSC32_STARTUP_16384     BSCIF_OSCCTRL32_STARTUP(3)\r
+//! 65536 cycles (570 ms)\r
+#define OSC32_STARTUP_65536     BSCIF_OSCCTRL32_STARTUP(4)\r
+//! 131072 cycles (1.1 s)\r
+#define OSC32_STARTUP_131072    BSCIF_OSCCTRL32_STARTUP(5)\r
+//! 262144 cycles (2.3 s)\r
+#define OSC32_STARTUP_262144    BSCIF_OSCCTRL32_STARTUP(6)\r
+//! 524288 cycles (4.6 s)\r
+#define OSC32_STARTUP_524288    BSCIF_OSCCTRL32_STARTUP(7)\r
+//@}\r
+\r
+/**\r
+ * \def OSC0_STARTUP_TIMEOUT\r
+ * \brief Number of slow clock cycles to wait for OSC0 to start\r
+ *\r
+ * This is the number of slow clock cycles corresponding to\r
+ * OSC0_STARTUP_VALUE with an additional 25% safety margin. If the\r
+ * oscillator isn't running when this timeout has expired, it is assumed\r
+ * to have failed to start.\r
+ */\r
+/**\r
+ * \def OSC0_MODE_VALUE\r
+ * \brief Board-dependent value written to the MODE bitfield of\r
+ * PM_OSCCTRL(0)\r
+ */\r
+/**\r
+ * \def OSC0_STARTUP_VALUE\r
+ * \brief Board-dependent value written to the STARTUP bitfield of\r
+ * PM_OSCCTRL(0)\r
+ */\r
+#if defined(BOARD_OSC0_STARTUP_US)\r
+#   if BOARD_OSC0_STARTUP_US == 0\r
+#      define OSC0_STARTUP_VALUE    OSC_STARTUP_0\r
+#      define OSC0_STARTUP_TIMEOUT  8\r
+#   elif BOARD_OSC0_STARTUP_US <= 557\r
+#      define OSC0_STARTUP_VALUE    OSC_STARTUP_64\r
+#      define OSC0_STARTUP_TIMEOUT  80\r
+#   elif BOARD_OSC0_STARTUP_US <= 1100\r
+#      define OSC0_STARTUP_VALUE    OSC_STARTUP_128\r
+#      define OSC0_STARTUP_TIMEOUT  160\r
+#   elif BOARD_OSC0_STARTUP_US <= 18000\r
+#      define OSC0_STARTUP_VALUE    OSC_STARTUP_2048\r
+#      define OSC0_STARTUP_TIMEOUT  2560\r
+#   elif BOARD_OSC0_STARTUP_US <= 36000\r
+#      define OSC0_STARTUP_VALUE    OSC_STARTUP_4096\r
+#      define OSC0_STARTUP_TIMEOUT  5120\r
+#   elif BOARD_OSC0_STARTUP_US <= 71000\r
+#      define OSC0_STARTUP_VALUE    OSC_STARTUP_8192\r
+#      define OSC0_STARTUP_TIMEOUT  10240\r
+#   elif BOARD_OSC0_STARTUP_US <= 143000\r
+#      define OSC0_STARTUP_VALUE    OSC_STARTUP_16384\r
+#      define OSC0_STARTUP_TIMEOUT  20480\r
+#   elif BOARD_OSC0_STARTUP_US <= 285000\r
+#      define OSC0_STARTUP_VALUE    OSC_STARTUP_32768\r
+#      define OSC0_STARTUP_TIMEOUT  40960\r
+#   else\r
+#      error BOARD_OSC0_STARTUP_US is too high\r
+#   endif\r
+#   if BOARD_OSC0_IS_XTAL == true\r
+#      define OSC0_MODE_VALUE       OSC_MODE_XTAL\r
+#      if BOARD_OSC0_HZ < 2000000\r
+#         define OSC0_GAIN_VALUE      SCIF_OSCCTRL0_GAIN(0)\r
+#      elif BOARD_OSC0_HZ < 4000000\r
+#         define OSC0_GAIN_VALUE      SCIF_OSCCTRL0_GAIN(1)\r
+#      elif BOARD_OSC0_HZ < 8000000\r
+#         define OSC0_GAIN_VALUE      SCIF_OSCCTRL0_GAIN(2)\r
+#      elif BOARD_OSC0_HZ < 16000000\r
+#         define OSC0_GAIN_VALUE      SCIF_OSCCTRL0_GAIN(3)\r
+#      else\r
+#         define OSC0_GAIN_VALUE      ((0x1u << 4) | SCIF_OSCCTRL0_GAIN(0))\r
+#      endif\r
+#   else\r
+#      define OSC0_MODE_VALUE       OSC_MODE_EXTERNAL\r
+#   endif\r
+#else\r
+#   if defined(BOARD_OSC0_HZ)\r
+#      error BOARD_OSC0_STARTUP_US must be defined by the board code\r
+#   endif\r
+#   ifdef __DOXYGEN__\r
+#      define OSC0_STARTUP_VALUE     UNDEFINED\r
+#      define OSC0_STARTUP_TIMEOUT   UNDEFINED\r
+#      define OSC0_MODE_VALUE        UNDEFINED\r
+#   endif\r
+#endif\r
+\r
+#if defined(BOARD_OSC32_STARTUP_US)\r
+#   if BOARD_OSC32_STARTUP_US == 0\r
+#      define OSC32_STARTUP_VALUE    OSC32_STARTUP_0\r
+#   elif BOARD_OSC32_STARTUP_US   <= 1100\r
+#      define OSC32_STARTUP_VALUE    OSC32_STARTUP_128\r
+#   elif BOARD_OSC32_STARTUP_US   <= 72300\r
+#      define OSC32_STARTUP_VALUE    OSC32_STARTUP_8192\r
+#   elif BOARD_OSC32_STARTUP_US   <= 143000\r
+#      define OSC32_STARTUP_VALUE    OSC32_STARTUP_16384\r
+#   elif BOARD_OSC32_STARTUP_US   <= 570000\r
+#      define OSC32_STARTUP_VALUE    OSC32_STARTUP_65536\r
+#   elif BOARD_OSC32_STARTUP_US   <= 1100000\r
+#      define OSC32_STARTUP_VALUE    OSC32_STARTUP_131072\r
+#   elif BOARD_OSC32_STARTUP_US   <= 2300000\r
+#      define OSC32_STARTUP_VALUE    OSC32_STARTUP_262144\r
+#   elif BOARD_OSC32_STARTUP_US   <= 4600000\r
+#      define OSC32_STARTUP_VALUE    OSC32_STARTUP_524288\r
+#   else\r
+#      error BOARD_OSC32_STARTUP_US is too high\r
+#   endif\r
+#   if BOARD_OSC32_IS_XTAL == true\r
+#      define OSC32_MODE_VALUE       OSC32_MODE_XTAL\r
+#   else\r
+#      define OSC32_MODE_VALUE       OSC32_MODE_EXTERNAL\r
+#   endif\r
+#else\r
+#   if defined(BOARD_OSC32_HZ)\r
+#      error BOARD_OSC32_STARTUP_US must be defined by the board code\r
+#   endif\r
+#   ifdef __DOXYGEN__\r
+#      define OSC32_STARTUP_VALUE     UNDEFINED\r
+#      define OSC32_STARTUP_TIMEOUT   UNDEFINED\r
+#      define OSC32_MODE_VALUE        UNDEFINED\r
+#   endif\r
+#endif\r
+\r
+// Use 4 MHz frequency range for RCFAST oscillator if config was empty.\r
+#ifndef CONFIG_RCFAST_FRANGE\r
+#define CONFIG_RCFAST_FRANGE    0\r
+#endif\r
+\r
+/**\r
+ * \name Board-specific configuration parameters\r
+ * The following definitions must be provided by the board code for all\r
+ * working oscillators on the board.\r
+ */\r
+//@{\r
+/**\r
+ * \def BOARD_OSC0_HZ\r
+ * \brief Clock frequency of OSC0 in Hz\r
+ */\r
+/**\r
+ * \def BOARD_OSC0_STARTUP_US\r
+ * \brief Startup time of OSC0 in microseconds\r
+ */\r
+/**\r
+ * \def BOARD_OSC0_IS_XTAL\r
+ * \brief OSC0 uses a crystal, not an external clock\r
+ */\r
+/**\r
+ * \def BOARD_OSC32_HZ\r
+ * \brief Clock frequency of OSC32 in Hz\r
+ */\r
+/**\r
+ * \def BOARD_OSC32_STARTUP_US\r
+ * \brief Startup time of OSC32 in microseconds\r
+ */\r
+/**\r
+ * \def BOARD_OSC32_IS_XTAL\r
+ * \brief OSC32 uses a crystal, not an external clock\r
+ */\r
+/**\r
+ * \def BOARD_OSC32_SELCURR\r
+ * \brief Crystal current selection for OSC32\r
+ *\r
+ * If not defined, the recommended value (300nA) are used.\r
+ */\r
+#ifndef BOARD_OSC32_SELCURR\r
+#   define BOARD_OSC32_SELCURR     BSCIF_OSCCTRL32_SELCURR(10)\r
+#endif\r
+\r
+/**\r
+ * \name RC oscillator frequency limits\r
+ * The frequency of the internal RC oscillators may drift a bit as a\r
+ * result of temperature changes. These definitions provide upper and\r
+ * lower limits which may be used to calculate upper and lower limits of\r
+ * timeouts, derived clock frequencies, etc.\r
+ */\r
+//@{\r
+//! Nominal frequency of RCSYS in Hz\r
+#define OSC_RCSYS_NOMINAL_HZ    115000\r
+//! Minimum frequency of RCSYS in Hz\r
+#define OSC_RCSYS_MIN_HZ        100000\r
+//! Maximum frequency of RCSYS in Hz\r
+#define OSC_RCSYS_MAX_HZ        120000\r
+\r
+//! Nominal frequency of RC32K in Hz\r
+#define OSC_RC32K_NOMINAL_HZ    32768\r
+//! Minimum frequency of RC32K in Hz\r
+#define OSC_RC32K_MIN_HZ        20000\r
+//! Maximum frequency of RC32K in Hz\r
+#define OSC_RC32K_MAX_HZ        44000\r
+\r
+//! Nominal frequency of RC80M in Hz\r
+#define OSC_RC80M_NOMINAL_HZ    80000000\r
+\r
+//! Nominal frequency of RCFAST4M in Hz\r
+#define OSC_RCFAST4M_NOMINAL_HZ 4000000\r
+\r
+//! Nominal frequency of RCFAST8M in Hz\r
+#define OSC_RCFAST8M_NOMINAL_HZ 8000000\r
+\r
+//! Nominal frequency of RCFAST12M in Hz\r
+#define OSC_RCFAST12M_NOMINAL_HZ 12000000\r
+\r
+//! Nominal frequency of RC1M in Hz\r
+#define OSC_RC1M_NOMINAL_HZ     1000000\r
+//@}\r
+\r
+#ifndef __ASSEMBLY__\r
+\r
+#include <compiler.h>\r
+\r
+extern void osc_priv_enable_osc0(void);\r
+extern void osc_priv_disable_osc0(void);\r
+extern void osc_priv_enable_osc32(void);\r
+extern void osc_priv_disable_osc32(void);\r
+extern void osc_priv_enable_rc32k(void);\r
+extern void osc_priv_disable_rc32k(void);\r
+extern void osc_priv_enable_rc80m(void);\r
+extern void osc_priv_disable_rc80m(void);\r
+extern void osc_priv_enable_rcfast(void);\r
+extern void osc_priv_disable_rcfast(void);\r
+extern void osc_priv_enable_rc1m(void);\r
+extern void osc_priv_disable_rc1m(void);\r
+\r
+static inline void osc_enable(uint8_t id)\r
+{\r
+       switch (id) {\r
+#ifdef BOARD_OSC0_HZ\r
+       case OSC_ID_OSC0:\r
+               osc_priv_enable_osc0();\r
+               break;\r
+#endif\r
+\r
+#ifdef BOARD_OSC32_HZ\r
+       case OSC_ID_OSC32:\r
+               osc_priv_enable_osc32();\r
+               break;\r
+#endif\r
+\r
+       case OSC_ID_RC32K:\r
+               osc_priv_enable_rc32k();\r
+               break;\r
+\r
+       case OSC_ID_RC80M:\r
+               osc_priv_enable_rc80m();\r
+               break;\r
+\r
+       case OSC_ID_RCFAST:\r
+               osc_priv_enable_rcfast();\r
+               break;\r
+\r
+       case OSC_ID_RC1M:\r
+               osc_priv_enable_rc1m();\r
+               break;\r
+\r
+       case OSC_ID_RCSYS:\r
+               /* RCSYS is always running */\r
+               break;\r
+\r
+       default:\r
+               /* unhandled_case(id); */\r
+               break;\r
+       }\r
+}\r
+\r
+static inline void osc_disable(uint8_t id)\r
+{\r
+       switch (id) {\r
+#ifdef BOARD_OSC0_HZ\r
+       case OSC_ID_OSC0:\r
+               osc_priv_disable_osc0();\r
+               break;\r
+#endif\r
+\r
+#ifdef BOARD_OSC32_HZ\r
+       case OSC_ID_OSC32:\r
+               osc_priv_disable_osc32();\r
+               break;\r
+#endif\r
+\r
+       case OSC_ID_RC32K:\r
+               osc_priv_disable_rc32k();\r
+               break;\r
+\r
+       case OSC_ID_RC80M:\r
+               osc_priv_disable_rc80m();\r
+               break;\r
+\r
+       case OSC_ID_RCFAST:\r
+               osc_priv_disable_rcfast();\r
+               break;\r
+\r
+       case OSC_ID_RC1M:\r
+               osc_priv_disable_rc1m();\r
+               break;\r
+\r
+       case OSC_ID_RCSYS:\r
+               /* RCSYS is always running */\r
+               break;\r
+\r
+       default:\r
+               /* unhandled_case(id); */\r
+               break;\r
+       }\r
+}\r
+\r
+static inline bool osc_is_ready(uint8_t id)\r
+{\r
+       switch (id) {\r
+#ifdef BOARD_OSC0_HZ\r
+       case OSC_ID_OSC0:\r
+               return !!(SCIF->SCIF_PCLKSR & SCIF_PCLKSR_OSC0RDY);\r
+#endif\r
+\r
+#ifdef BOARD_OSC32_HZ\r
+       case OSC_ID_OSC32:\r
+               return !!(BSCIF->BSCIF_PCLKSR & BSCIF_PCLKSR_OSC32RDY);\r
+#endif\r
+\r
+       case OSC_ID_RC32K:\r
+               return !!(BSCIF->BSCIF_RC32KCR & (BSCIF_RC32KCR_EN));\r
+\r
+       case OSC_ID_RC80M:\r
+               return !!(SCIF->SCIF_RC80MCR & (SCIF_RC80MCR_EN));\r
+\r
+       case OSC_ID_RCFAST:\r
+               return !!(SCIF->SCIF_RCFASTCFG & (SCIF_RCFASTCFG_EN));\r
+\r
+       case OSC_ID_RC1M:\r
+               return !!(BSCIF->BSCIF_RC1MCR & (BSCIF_RC1MCR_CLKOE));\r
+\r
+       case OSC_ID_RCSYS:\r
+               /* RCSYS is always ready */\r
+               return true;\r
+\r
+       default:\r
+               /* unhandled_case(id); */\r
+               return false;\r
+       }\r
+}\r
+\r
+static inline uint32_t osc_get_rate(uint8_t id)\r
+{\r
+       switch (id) {\r
+#ifdef BOARD_OSC0_HZ\r
+       case OSC_ID_OSC0:\r
+               return BOARD_OSC0_HZ;\r
+#endif\r
+\r
+#ifdef BOARD_OSC32_HZ\r
+       case OSC_ID_OSC32:\r
+               return BOARD_OSC32_HZ;\r
+#endif\r
+\r
+       case OSC_ID_RC32K:\r
+               return OSC_RC32K_NOMINAL_HZ;\r
+\r
+       case OSC_ID_RC80M:\r
+               return OSC_RC80M_NOMINAL_HZ;\r
+\r
+       case OSC_ID_RCFAST:\r
+               if (CONFIG_RCFAST_FRANGE == 2) {\r
+                       return OSC_RCFAST12M_NOMINAL_HZ;\r
+\r
+               } else if (CONFIG_RCFAST_FRANGE == 1) {\r
+                       return OSC_RCFAST8M_NOMINAL_HZ;\r
+\r
+               } else {\r
+                       return OSC_RCFAST4M_NOMINAL_HZ;\r
+               }\r
+\r
+       case OSC_ID_RC1M:\r
+               return OSC_RC1M_NOMINAL_HZ;\r
+\r
+       case OSC_ID_RCSYS:\r
+               return OSC_RCSYS_NOMINAL_HZ;\r
+\r
+       default:\r
+               /* unhandled_case(id); */\r
+               return 0;\r
+       }\r
+}\r
+\r
+#endif /* !__ASSEMBLY__ */\r
+\r
+//! @}\r
+\r
+#ifdef __cplusplus\r
+}\r
+#endif\r
+\r
+#endif /* CHIP_OSC_H_INCLUDED */\r
diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/asf/common/services/clock/sam4l/pll.c b/FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/asf/common/services/clock/sam4l/pll.c
new file mode 100644 (file)
index 0000000..2baf1d1
--- /dev/null
@@ -0,0 +1,88 @@
+/**\r
+ * \file\r
+ *\r
+ * \brief Chip-specific PLL implementation\r
+ *\r
+ * Copyright (c) 2012 Atmel Corporation. All rights reserved.\r
+ *\r
+ * \asf_license_start\r
+ *\r
+ * \page License\r
+ *\r
+ * Redistribution and use in source and binary forms, with or without\r
+ * modification, are permitted provided that the following conditions are met:\r
+ *\r
+ * 1. Redistributions of source code must retain the above copyright notice,\r
+ *    this list of conditions and the following disclaimer.\r
+ *\r
+ * 2. Redistributions in binary form must reproduce the above copyright notice,\r
+ *    this list of conditions and the following disclaimer in the documentation\r
+ *    and/or other materials provided with the distribution.\r
+ *\r
+ * 3. The name of Atmel may not be used to endorse or promote products derived\r
+ *    from this software without specific prior written permission.\r
+ *\r
+ * 4. This software may only be redistributed and used in connection with an\r
+ *    Atmel microcontroller product.\r
+ *\r
+ * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED\r
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\r
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE\r
+ * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR\r
+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\r
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS\r
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)\r
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,\r
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\r
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\r
+ * POSSIBILITY OF SUCH DAMAGE.\r
+ *\r
+ * \asf_license_stop\r
+ *\r
+ */\r
+#include <compiler.h>\r
+#include <pll.h>\r
+\r
+#define SCIF_UNLOCK_PLL_REG(pll_id) \\r
+       do { \\r
+               SCIF->SCIF_UNLOCK = SCIF_UNLOCK_KEY(0xAAu)                     \\r
+                       | SCIF_UNLOCK_ADDR((uint32_t)&SCIF->SCIF_PLL[0].SCIF_PLL \\r
+                       + (4 * pll_id) - (uint32_t)SCIF);                      \\r
+       } while (0)\r
+\r
+void pll_config_write(const struct pll_config *cfg, uint32_t pll_id)\r
+{\r
+       irqflags_t flags;\r
+\r
+       Assert(pll_id < NR_PLLS);\r
+\r
+       flags = cpu_irq_save();\r
+\r
+       SCIF_UNLOCK_PLL_REG(pll_id);\r
+       SCIF->SCIF_PLL[pll_id].SCIF_PLL  = cfg->ctrl;\r
+       cpu_irq_restore(flags);\r
+}\r
+\r
+void pll_enable(const struct pll_config *cfg, uint32_t pll_id)\r
+{\r
+       irqflags_t flags;\r
+\r
+       Assert(pll_id < NR_PLLS);\r
+\r
+       flags = cpu_irq_save();\r
+       SCIF_UNLOCK_PLL_REG(pll_id);\r
+       SCIF->SCIF_PLL[pll_id].SCIF_PLL  = cfg->ctrl | SCIF_PLL_PLLEN;\r
+       cpu_irq_restore(flags);\r
+}\r
+\r
+void pll_disable(uint32_t pll_id)\r
+{\r
+       irqflags_t flags;\r
+\r
+       Assert(pll_id < NR_PLLS);\r
+\r
+       flags = cpu_irq_save();\r
+       SCIF_UNLOCK_PLL_REG(pll_id);\r
+       SCIF->SCIF_PLL[pll_id].SCIF_PLL  = 0;\r
+       cpu_irq_restore(flags);\r
+}\r
diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/asf/common/services/clock/sam4l/pll.h b/FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/asf/common/services/clock/sam4l/pll.h
new file mode 100644 (file)
index 0000000..1240fce
--- /dev/null
@@ -0,0 +1,253 @@
+/**\r
+ * \file\r
+ *\r
+ * \brief Chip-specific PLL definitions\r
+ *\r
+ * Copyright (c) 2012 Atmel Corporation. All rights reserved.\r
+ *\r
+ * \asf_license_start\r
+ *\r
+ * \page License\r
+ *\r
+ * Redistribution and use in source and binary forms, with or without\r
+ * modification, are permitted provided that the following conditions are met:\r
+ *\r
+ * 1. Redistributions of source code must retain the above copyright notice,\r
+ *    this list of conditions and the following disclaimer.\r
+ *\r
+ * 2. Redistributions in binary form must reproduce the above copyright notice,\r
+ *    this list of conditions and the following disclaimer in the documentation\r
+ *    and/or other materials provided with the distribution.\r
+ *\r
+ * 3. The name of Atmel may not be used to endorse or promote products derived\r
+ *    from this software without specific prior written permission.\r
+ *\r
+ * 4. This software may only be redistributed and used in connection with an\r
+ *    Atmel microcontroller product.\r
+ *\r
+ * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED\r
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\r
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE\r
+ * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR\r
+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\r
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS\r
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)\r
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,\r
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\r
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\r
+ * POSSIBILITY OF SUCH DAMAGE.\r
+ *\r
+ * \asf_license_stop\r
+ *\r
+ */\r
+#ifndef CHIP_PLL_H_INCLUDED\r
+#define CHIP_PLL_H_INCLUDED\r
+\r
+#ifdef __cplusplus\r
+extern "C" {\r
+#endif\r
+\r
+#define SCIF0_PLL_VCO_RANGE1_MAX_FREQ   240000000\r
+#define SCIF_PLL0_VCO_RANGE1_MIN_FREQ   160000000\r
+#define SCIF_PLL0_VCO_RANGE0_MAX_FREQ   180000000\r
+#define SCIF_PLL0_VCO_RANGE0_MIN_FREQ    80000000\r
+\r
+/**\r
+ * \weakgroup pll_group\r
+ * @{\r
+ */\r
+\r
+#define PLL_MAX_STARTUP_CYCLES    (SCIF_PLL_PLLCOUNT_Msk >> SCIF_PLL_PLLCOUNT_Pos)\r
+#define NR_PLLS                   1\r
+\r
+/**\r
+ * \brief Number of milliseconds to wait for PLL lock\r
+ */\r
+#define PLL_TIMEOUT_MS \\r
+       div_ceil(1000 * (PLL_MAX_STARTUP_CYCLES * 2), OSC_RCSYS_MIN_HZ)\r
+\r
+/**\r
+ * \note The PLL must run at twice this frequency internally, but the\r
+ * output frequency may be divided by two by setting the PLLOPT[1] bit.\r
+ */\r
+#define PLL_MIN_HZ                40000000\r
+#define PLL_MAX_HZ                240000000\r
+\r
+//! \name Chip-specific PLL options\r
+//@{\r
+//! VCO frequency range is 160-240 MHz (80-180 MHz if unset).\r
+#define PLL_OPT_VCO_RANGE_HIGH    0\r
+//! Divide output frequency by two\r
+#define PLL_OPT_OUTPUT_DIV        1\r
+//! Disable wide-bandwidth mode\r
+#define PLL_OPT_WBM_DISABLE       2\r
+//! Number of PLL options\r
+#define PLL_NR_OPTIONS            3\r
+//! The threshold above which to set the #PLL_OPT_VCO_RANGE_HIGH option\r
+#define PLL_VCO_LOW_THRESHOLD     ((SCIF_PLL0_VCO_RANGE1_MIN_FREQ \\r
+       + SCIF_PLL0_VCO_RANGE0_MAX_FREQ) / 2)\r
+//@}\r
+\r
+#ifndef __ASSEMBLY__\r
+\r
+#include <compiler.h>\r
+#include <osc.h>\r
+\r
+enum pll_source {\r
+       PLL_SRC_OSC0            = 0,    //!< Oscillator 0\r
+       PLL_SRC_GCLK9           = 1,    //!< Generic Clock 9\r
+       PLL_NR_SOURCES,                 //!< Number of PLL sources\r
+};\r
+\r
+struct pll_config {\r
+       uint32_t ctrl;\r
+};\r
+\r
+#define pll_get_default_rate(pll_id)                \\r
+       ((osc_get_rate(CONFIG_PLL ## pll_id ## _SOURCE) \\r
+       * CONFIG_PLL ## pll_id ## _MUL)                 \\r
+       / CONFIG_PLL ## pll_id ## _DIV)\r
+\r
+static inline void pll_config_set_option(struct pll_config *cfg,\r
+               uint32_t option)\r
+{\r
+       Assert(option < PLL_NR_OPTIONS);\r
+\r
+       cfg->ctrl |= 1U << (SCIF_PLL_PLLOPT_Pos + option);\r
+}\r
+\r
+static inline void pll_config_clear_option(struct pll_config *cfg,\r
+               uint32_t option)\r
+{\r
+       Assert(option < PLL_NR_OPTIONS);\r
+\r
+       cfg->ctrl &= ~(1U << (SCIF_PLL_PLLOPT_Pos + option));\r
+}\r
+\r
+/**\r
+ * The PLL options #PLL_OPT_VCO_RANGE_HIGH and #PLL_OPT_OUTPUT_DIV will\r
+ * be set automatically based on the calculated target frequency.\r
+ */\r
+static inline void pll_config_init(struct pll_config *cfg,\r
+               enum pll_source src, uint32_t divide, uint32_t mul)\r
+{\r
+#define MUL_MIN    2\r
+#define MUL_MAX    16\r
+#define DIV_MIN    0\r
+#define DIV_MAX    15\r
+\r
+       uint32_t vco_hz;\r
+\r
+       Assert(src < PLL_NR_SOURCES);\r
+       Assert(divide != 0);\r
+\r
+       /* Calculate internal VCO frequency */\r
+       vco_hz = osc_get_rate(src) * mul;\r
+       vco_hz /= divide;\r
+       Assert(vco_hz >= PLL_MIN_HZ);\r
+       Assert(vco_hz <= PLL_MAX_HZ);\r
+\r
+       cfg->ctrl = 0;\r
+\r
+       /* Bring the internal VCO frequency up to the minimum value */\r
+       if ((vco_hz < PLL_MIN_HZ * 2) && (mul <= 8)) {\r
+               mul *= 2;\r
+               vco_hz *= 2;\r
+               pll_config_set_option(cfg, PLL_OPT_OUTPUT_DIV);\r
+       }\r
+\r
+       /* Set VCO frequency range according to calculated value */\r
+       if (vco_hz >= PLL_VCO_LOW_THRESHOLD) {\r
+               pll_config_set_option(cfg, PLL_OPT_VCO_RANGE_HIGH);\r
+       }\r
+\r
+       Assert(mul > MUL_MIN && mul <= MUL_MAX);\r
+       Assert(divide > DIV_MIN && divide <= DIV_MAX);\r
+\r
+       cfg->ctrl |= ((mul - 1) << SCIF_PLL_PLLMUL_Pos)\r
+                       | (divide << SCIF_PLL_PLLDIV_Pos)\r
+                       | (PLL_MAX_STARTUP_CYCLES << SCIF_PLL_PLLCOUNT_Pos)\r
+                       | (src << SCIF_PLL_PLLOSC_Pos);\r
+}\r
+\r
+#define pll_config_defaults(cfg, pll_id) \\r
+       pll_config_init(cfg,                 \\r
+               CONFIG_PLL ## pll_id ## _SOURCE, \\r
+               CONFIG_PLL ## pll_id ## _DIV,    \\r
+               CONFIG_PLL ## pll_id ## _MUL)\r
+\r
+static inline void pll_config_read(struct pll_config *cfg, uint32_t pll_id)\r
+{\r
+       Assert(pll_id < NR_PLLS);\r
+\r
+       cfg->ctrl = SCIF->SCIF_PLL[pll_id].SCIF_PLL;\r
+}\r
+\r
+extern void pll_config_write(const struct pll_config *cfg, uint32_t pll_id);\r
+extern void pll_enable(const struct pll_config *cfg, uint32_t pll_id);\r
+extern void pll_disable(uint32_t pll_id);\r
+\r
+static inline bool pll_is_locked(uint32_t pll_id)\r
+{\r
+       Assert(pll_id < NR_PLLS);\r
+       return !!(SCIF->SCIF_PCLKSR & (1U << (6 + pll_id)));\r
+}\r
+\r
+static inline void pll_enable_source(enum pll_source src)\r
+{\r
+       switch (src) {\r
+       case PLL_SRC_OSC0:\r
+               if (!osc_is_ready(OSC_ID_OSC0)) {\r
+                       osc_enable(OSC_ID_OSC0);\r
+                       osc_wait_ready(OSC_ID_OSC0);\r
+               }\r
+               break;\r
+#ifdef CONFIG_GCLK9_SOURCE\r
+       case PLL_SRC_GCLK9:\r
+               SCIF->SCIF_GCCTRL[9].SCIF_GCCTRL =\r
+                       SCIF_GCCTRL_OSCSEL(CONFIG_GCLK9_SOURCE) |\r
+                       SCIF_GCCTRL_CEN;\r
+               break;\r
+#endif\r
+       default:\r
+               Assert(false);\r
+               break;\r
+       }\r
+}\r
+\r
+static inline void pll_enable_config_defaults(uint32_t pll_id)\r
+{\r
+       struct pll_config pllcfg;\r
+\r
+       if (pll_is_locked(pll_id)) {\r
+               return; // Pll already running\r
+       }\r
+\r
+       switch (pll_id) {\r
+#ifdef CONFIG_PLL0_SOURCE\r
+       case 0:\r
+               pll_enable_source(CONFIG_PLL0_SOURCE);\r
+               pll_config_init(&pllcfg,\r
+                               CONFIG_PLL0_SOURCE,\r
+                               CONFIG_PLL0_DIV,\r
+                               CONFIG_PLL0_MUL);\r
+               break;\r
+\r
+#endif\r
+       default:\r
+               Assert(false);\r
+               break;\r
+       }\r
+       pll_enable(&pllcfg, pll_id);\r
+       while (!pll_is_locked(pll_id));\r
+}\r
+\r
+#endif /* __ASSEMBLY__ */\r
+\r
+//! @}\r
+\r
+#ifdef __cplusplus\r
+}\r
+#endif\r
+\r
+#endif /* CHIP_PLL_H_INCLUDED */\r
diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/asf/common/services/clock/sam4l/sysclk.c b/FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/asf/common/services/clock/sam4l/sysclk.c
new file mode 100644 (file)
index 0000000..b1e170d
--- /dev/null
@@ -0,0 +1,1008 @@
+/**\r
+ * \file\r
+ *\r
+ * \brief Chip-specific system clock management functions\r
+ *\r
+ * Copyright (c) 2012-2013 Atmel Corporation. All rights reserved.\r
+ *\r
+ * \asf_license_start\r
+ *\r
+ * \page License\r
+ *\r
+ * Redistribution and use in source and binary forms, with or without\r
+ * modification, are permitted provided that the following conditions are met:\r
+ *\r
+ * 1. Redistributions of source code must retain the above copyright notice,\r
+ *    this list of conditions and the following disclaimer.\r
+ *\r
+ * 2. Redistributions in binary form must reproduce the above copyright notice,\r
+ *    this list of conditions and the following disclaimer in the documentation\r
+ *    and/or other materials provided with the distribution.\r
+ *\r
+ * 3. The name of Atmel may not be used to endorse or promote products derived\r
+ *    from this software without specific prior written permission.\r
+ *\r
+ * 4. This software may only be redistributed and used in connection with an\r
+ *    Atmel microcontroller product.\r
+ *\r
+ * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED\r
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\r
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE\r
+ * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR\r
+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\r
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS\r
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)\r
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,\r
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\r
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\r
+ * POSSIBILITY OF SUCH DAMAGE.\r
+ *\r
+ * \asf_license_stop\r
+ *\r
+ */\r
+\r
+#include <compiler.h>\r
+#include <stdbool.h>\r
+#include <sysclk.h>\r
+#include <flashcalw.h>\r
+#include <bpm.h>\r
+#include <osc.h>\r
+\r
+/**\r
+ * \weakgroup sysclk_group\r
+ * @{\r
+ */\r
+\r
+#if ((CONFIG_SYSCLK_CPU_DIV > CONFIG_SYSCLK_PBA_DIV) || \\r
+     (CONFIG_SYSCLK_CPU_DIV > CONFIG_SYSCLK_PBB_DIV) || \\r
+     (CONFIG_SYSCLK_CPU_DIV > CONFIG_SYSCLK_PBC_DIV) || \\r
+     (CONFIG_SYSCLK_CPU_DIV > CONFIG_SYSCLK_PBD_DIV))\r
+# error CONFIG_SYSCLK_PBx_DIV must be equal to or more than CONFIG_SYSCLK_CPU_DIV.\r
+#endif\r
+\r
+/**\r
+ * \internal\r
+ * \defgroup sysclk_internals_group System Clock internals\r
+ *\r
+ * System clock management is fairly straightforward apart from one\r
+ * thing: Enabling and disabling bus bridges. When all peripherals on a\r
+ * given bus are disabled, the bridge to the bus may be disabled. Only\r
+ * the PBA and PBB busses support this, and it is not practical to\r
+ * disable the PBA bridge as it includes the PM and SCIF modules, so turning\r
+ * it off would make it impossible to turn anything back on again.\r
+ *\r
+ * The system clock implementation keeps track of a reference count for\r
+ * PBB. When the reference count is zero, the bus bridge is disabled, otherwise\r
+ * it is enabled.\r
+ *\r
+ * @{\r
+ */\r
+\r
+/**\r
+ * \internal\r
+ * \name Initial module clock masks\r
+ *\r
+ * These are the mask values written to the xxxMASK registers during\r
+ * initialization if the user has overridden the default behavior of all clocks\r
+ * left enabled. These values assume that:\r
+ *   - Debugging should be possible\r
+ *   - The program may be running from flash\r
+ *   - The PM should be available to unmask other clocks\r
+ *   - All on-chip RAM should be available\r
+ *   - SCIF, BPM, BSCIF and GPIO are made permanently available for now; this\r
+ *     may change in the future.\r
+ */\r
+//@{\r
+//! \internal\r
+//! \brief Initial value of CPUMASK\r
+#define SYSCLK_INIT_MINIMAL_CPUMASK       0\r
+\r
+//! \internal\r
+//! \brief Initial value of HSBMASK\r
+#define SYSCLK_INIT_MINIMAL_HSBMASK                                    \\r
+       ((1 << SYSCLK_HFLASHC_DATA)                                        \\r
+               | (1 << SYSCLK_PBB_BRIDGE)                                     \\r
+               | (1 << SYSCLK_PBC_BRIDGE)                                     \\r
+               | (1 << SYSCLK_PBD_BRIDGE))\r
+\r
+//! \internal\r
+//! \brief Initial value of PBAMASK\r
+#define SYSCLK_INIT_MINIMAL_PBAMASK       0\r
+\r
+//! \internal\r
+//! \brief Initial value of PBBMASK\r
+#define SYSCLK_INIT_MINIMAL_PBBMASK       (1 << SYSCLK_HFLASHC_REGS)\r
+\r
+//! \internal\r
+//! \brief Initial value of PBCMASK\r
+#define SYSCLK_INIT_MINIMAL_PBCMASK                                    \\r
+       ((1 << SYSCLK_PM)                                                  \\r
+               | (1 << SYSCLK_GPIO)                                           \\r
+               | (1 << SYSCLK_SCIF))\r
+\r
+//! \internal\r
+//! \brief Initial value of PBDMASK\r
+#define SYSCLK_INIT_MINIMAL_PBDMASK                                    \\r
+       ((1 << SYSCLK_BPM)                                                 \\r
+               | (1 << SYSCLK_BSCIF))\r
+//@}\r
+\r
+#if defined(CONFIG_SYSCLK_DEFAULT_RETURNS_SLOW_OSC)\r
+/**\r
+ * \brief boolean signalling that the sysclk_init is done.\r
+ */\r
+bool sysclk_initialized = false;\r
+#endif\r
+\r
+/**\r
+ * \internal\r
+ * \brief Enable a maskable module clock.\r
+ * \param bus_id Bus index, given by the \c PM_CLK_GRP_xxx definitions.\r
+ * \param module_index Index of the module to be enabled. This is the\r
+ * bit number in the corresponding xxxMASK register.\r
+ */\r
+void sysclk_priv_enable_module(uint32_t bus_id, uint32_t module_index)\r
+{\r
+       irqflags_t flags;\r
+       uint32_t   mask;\r
+\r
+       flags = cpu_irq_save();\r
+\r
+       /* Enable the clock */\r
+       mask = *(&PM->PM_CPUMASK + bus_id);\r
+       mask |= 1U << module_index;\r
+       PM->PM_UNLOCK = PM_UNLOCK_KEY(0xAAu) |\r
+               BPM_UNLOCK_ADDR(((uint32_t)&PM->PM_CPUMASK - (uint32_t)PM) + (4 * bus_id));\r
+       *(&PM->PM_CPUMASK + bus_id) = mask;\r
+\r
+       cpu_irq_restore(flags);\r
+}\r
+\r
+/**\r
+ * \internal\r
+ * \brief Disable a maskable module clock.\r
+ * \param bus_id Bus index, given by the \c PM_CLK_GRP_xxx definitions.\r
+ * \param module_index Index of the module to be disabled. This is the\r
+ * bit number in the corresponding xxxMASK register.\r
+ */\r
+void sysclk_priv_disable_module(uint32_t bus_id, uint32_t module_index)\r
+{\r
+       irqflags_t flags;\r
+       uint32_t   mask;\r
+\r
+       flags = cpu_irq_save();\r
+\r
+       /* Disable the clock */\r
+       mask = *(&PM->PM_CPUMASK + bus_id);\r
+       mask &= ~(1U << module_index);\r
+       PM->PM_UNLOCK = PM_UNLOCK_KEY(0xAAu) |\r
+               BPM_UNLOCK_ADDR(((uint32_t)&PM->PM_CPUMASK - (uint32_t)PM) + (4 * bus_id));\r
+       *(&PM->PM_CPUMASK + bus_id) = mask;\r
+\r
+       cpu_irq_restore(flags);\r
+}\r
+\r
+//! @}\r
+\r
+/**\r
+ * \brief Enable a module clock derived from the PBA clock\r
+ * \param index Index of the module clock in the PBAMASK register\r
+ */\r
+void sysclk_enable_pba_module(uint32_t index)\r
+{\r
+       irqflags_t flags;\r
+\r
+       /* Enable the bridge if necessary */\r
+       flags = cpu_irq_save();\r
+\r
+       if (PM->PM_PBAMASK == 0) {\r
+               sysclk_enable_hsb_module(SYSCLK_PBA_BRIDGE);\r
+       }\r
+\r
+       cpu_irq_restore(flags);\r
+\r
+       /* Enable the module */\r
+       sysclk_priv_enable_module(PM_CLK_GRP_PBA, index);\r
+}\r
+\r
+/**\r
+ * \brief Disable a module clock derived from the PBA clock\r
+ * \param index Index of the module clock in the PBAMASK register\r
+ */\r
+void sysclk_disable_pba_module(uint32_t index)\r
+{\r
+       irqflags_t flags;\r
+\r
+       /* Disable the module */\r
+       sysclk_priv_disable_module(PM_CLK_GRP_PBA, index);\r
+\r
+       /* Disable the bridge if possible */\r
+       flags = cpu_irq_save();\r
+\r
+       if (PM->PM_PBAMASK == 0) {\r
+               sysclk_disable_hsb_module(SYSCLK_PBA_BRIDGE);\r
+       }\r
+\r
+       cpu_irq_restore(flags);\r
+}\r
+\r
+/**\r
+ * \brief Enable a module clock derived from the PBB clock\r
+ * \param index Index of the module clock in the PBBMASK register\r
+ */\r
+void sysclk_enable_pbb_module(uint32_t index)\r
+{\r
+       irqflags_t flags;\r
+\r
+       /* Enable the bridge if necessary */\r
+       flags = cpu_irq_save();\r
+\r
+       if (PM->PM_PBBMASK == 0) {\r
+               sysclk_enable_hsb_module(SYSCLK_PBB_BRIDGE);\r
+       }\r
+\r
+       cpu_irq_restore(flags);\r
+\r
+       /* Enable the module */\r
+       sysclk_priv_enable_module(PM_CLK_GRP_PBB, index);\r
+}\r
+\r
+/**\r
+ * \brief Disable a module clock derived from the PBB clock\r
+ * \param index Index of the module clock in the PBBMASK register\r
+ */\r
+void sysclk_disable_pbb_module(uint32_t index)\r
+{\r
+       irqflags_t flags;\r
+\r
+       /* Disable the module */\r
+       sysclk_priv_disable_module(PM_CLK_GRP_PBB, index);\r
+\r
+       /* Disable the bridge if possible */\r
+       flags = cpu_irq_save();\r
+\r
+       if (PM->PM_PBBMASK == 0) {\r
+               sysclk_disable_hsb_module(SYSCLK_PBB_BRIDGE);\r
+       }\r
+\r
+       cpu_irq_restore(flags);\r
+}\r
+\r
+/**\r
+ * \brief Retrieves the current rate in Hz of the Peripheral Bus clock attached\r
+ *        to the specified peripheral.\r
+ *\r
+ * \param module Pointer to the module's base address.\r
+ *\r
+ * \return Frequency of the bus attached to the specified peripheral, in Hz.\r
+ */\r
+uint32_t sysclk_get_peripheral_bus_hz(const volatile void *module)\r
+{\r
+       /* Fallthroughs intended for modules sharing the same peripheral bus. */\r
+       switch ((uintptr_t)module) {\r
+       case IISC_ADDR:\r
+       case SPI_ADDR:\r
+       case TC0_ADDR:\r
+       case TC1_ADDR:\r
+       case TWIM0_ADDR:\r
+       case TWIS0_ADDR:\r
+       case TWIM1_ADDR:\r
+       case TWIS1_ADDR:\r
+       case USART0_ADDR:\r
+       case USART1_ADDR:\r
+       case USART2_ADDR:\r
+       case USART3_ADDR:\r
+       case ADCIFE_ADDR:\r
+       case DACC_ADDR:\r
+       case ACIFC_ADDR:\r
+       case GLOC_ADDR:\r
+       case ABDACB_ADDR:\r
+       case TRNG_ADDR:\r
+       case PARC_ADDR:\r
+       case CATB_ADDR:\r
+       case TWIM2_ADDR:\r
+       case TWIM3_ADDR:\r
+       case LCDCA_ADDR:\r
+               return sysclk_get_pba_hz();\r
+\r
+       case HFLASHC_ADDR:\r
+       case HCACHE_ADDR:\r
+       case HMATRIX_ADDR:\r
+       case PDCA_ADDR:\r
+       case CRCCU_ADDR:\r
+       case USBC_ADDR:\r
+       case PEVC_ADDR:\r
+               return sysclk_get_pbb_hz();\r
+\r
+       case PM_ADDR:\r
+       case CHIPID_ADDR:\r
+       case SCIF_ADDR:\r
+       case FREQM_ADDR:\r
+       case GPIO_ADDR:\r
+               return sysclk_get_pbc_hz();\r
+\r
+       case BPM_ADDR:\r
+       case BSCIF_ADDR:\r
+       case AST_ADDR:\r
+       case WDT_ADDR:\r
+       case EIC_ADDR:\r
+       case PICOUART_ADDR:\r
+               return sysclk_get_pbd_hz();\r
+\r
+       default:\r
+               Assert(false);\r
+               return 0;\r
+       }\r
+}\r
+\r
+/**\r
+ * \brief Enable a peripheral's clock from its base address.\r
+ *\r
+ *  Enables the clock to a peripheral, given its base address. If the peripheral\r
+ *  has an associated clock on the HSB bus, this will be enabled also.\r
+ *\r
+ * \param module Pointer to the module's base address.\r
+ */\r
+void sysclk_enable_peripheral_clock(const volatile void *module)\r
+{\r
+       switch ((uintptr_t)module) {\r
+       case AESA_ADDR:\r
+               sysclk_enable_hsb_module(SYSCLK_AESA_HSB);\r
+               break;\r
+\r
+       case IISC_ADDR:\r
+               sysclk_enable_pba_module(SYSCLK_IISC);\r
+               break;\r
+\r
+       case SPI_ADDR:\r
+               sysclk_enable_pba_module(SYSCLK_SPI);\r
+               break;\r
+\r
+       case TC0_ADDR:\r
+               sysclk_enable_pba_module(SYSCLK_TC0);\r
+               sysclk_enable_pba_divmask(PBA_DIVMASK_TIMER_CLOCK2\r
+                       | PBA_DIVMASK_TIMER_CLOCK3\r
+                       | PBA_DIVMASK_TIMER_CLOCK4\r
+                       | PBA_DIVMASK_TIMER_CLOCK5\r
+                       );\r
+               break;\r
+\r
+       case TC1_ADDR:\r
+               sysclk_enable_pba_module(SYSCLK_TC1);\r
+               sysclk_enable_pba_divmask(PBA_DIVMASK_TIMER_CLOCK2\r
+                       | PBA_DIVMASK_TIMER_CLOCK3\r
+                       | PBA_DIVMASK_TIMER_CLOCK4\r
+                       | PBA_DIVMASK_TIMER_CLOCK5\r
+                       );\r
+               break;\r
+\r
+       case TWIM0_ADDR:\r
+               sysclk_enable_pba_module(SYSCLK_TWIM0);\r
+               break;\r
+\r
+       case TWIS0_ADDR:\r
+               sysclk_enable_pba_module(SYSCLK_TWIS0);\r
+               break;\r
+\r
+       case TWIM1_ADDR:\r
+               sysclk_enable_pba_module(SYSCLK_TWIM1);\r
+               break;\r
+\r
+       case TWIS1_ADDR:\r
+               sysclk_enable_pba_module(SYSCLK_TWIS1);\r
+               break;\r
+\r
+       case USART0_ADDR:\r
+               sysclk_enable_pba_module(SYSCLK_USART0);\r
+               sysclk_enable_pba_divmask(PBA_DIVMASK_CLK_USART);\r
+               break;\r
+\r
+       case USART1_ADDR:\r
+               sysclk_enable_pba_module(SYSCLK_USART1);\r
+               sysclk_enable_pba_divmask(PBA_DIVMASK_CLK_USART);\r
+               break;\r
+\r
+       case USART2_ADDR:\r
+               sysclk_enable_pba_module(SYSCLK_USART2);\r
+               sysclk_enable_pba_divmask(PBA_DIVMASK_CLK_USART);\r
+               break;\r
+\r
+       case USART3_ADDR:\r
+               sysclk_enable_pba_module(SYSCLK_USART3);\r
+               sysclk_enable_pba_divmask(PBA_DIVMASK_CLK_USART);\r
+               break;\r
+\r
+       case ADCIFE_ADDR:\r
+               sysclk_enable_pba_module(SYSCLK_ADCIFE);\r
+               break;\r
+\r
+       case DACC_ADDR:\r
+               sysclk_enable_pba_module(SYSCLK_DACC);\r
+               break;\r
+\r
+       case ACIFC_ADDR:\r
+               sysclk_enable_pba_module(SYSCLK_ACIFC);\r
+               break;\r
+\r
+       case GLOC_ADDR:\r
+               sysclk_enable_pba_module(SYSCLK_GLOC);\r
+               break;\r
+\r
+       case ABDACB_ADDR:\r
+               sysclk_enable_pba_module(SYSCLK_ABDACB);\r
+               break;\r
+\r
+       case TRNG_ADDR:\r
+               sysclk_enable_pba_module(SYSCLK_TRNG);\r
+               break;\r
+\r
+       case PARC_ADDR:\r
+               sysclk_enable_pba_module(SYSCLK_PARC);\r
+               break;\r
+\r
+       case CATB_ADDR:\r
+               sysclk_enable_pba_module(SYSCLK_CATB);\r
+               break;\r
+\r
+       case TWIM2_ADDR:\r
+               sysclk_enable_pba_module(SYSCLK_TWIM2);\r
+               break;\r
+\r
+       case TWIM3_ADDR:\r
+               sysclk_enable_pba_module(SYSCLK_TWIM3);\r
+               break;\r
+\r
+       case LCDCA_ADDR:\r
+               sysclk_enable_pba_module(SYSCLK_LCDCA);\r
+               break;\r
+\r
+       case HFLASHC_ADDR:\r
+               sysclk_enable_hsb_module(SYSCLK_HFLASHC_DATA);\r
+               sysclk_enable_pbb_module(SYSCLK_HFLASHC_REGS);\r
+               break;\r
+\r
+       case HCACHE_ADDR:\r
+               sysclk_enable_hsb_module(SYSCLK_HRAMC1_DATA);\r
+               sysclk_enable_pbb_module(SYSCLK_HRAMC1_REGS);\r
+               break;\r
+\r
+       case HMATRIX_ADDR:\r
+               sysclk_enable_pbb_module(SYSCLK_HMATRIX);\r
+               break;\r
+\r
+       case PDCA_ADDR:\r
+               sysclk_enable_hsb_module(SYSCLK_PDCA_HSB);\r
+               sysclk_enable_pbb_module(SYSCLK_PDCA_PB);\r
+               break;\r
+\r
+       case CRCCU_ADDR:\r
+               sysclk_enable_hsb_module(SYSCLK_CRCCU_DATA);\r
+               sysclk_enable_pbb_module(SYSCLK_CRCCU_REGS);\r
+               break;\r
+\r
+       case USBC_ADDR:\r
+               sysclk_enable_hsb_module(SYSCLK_USBC_DATA);\r
+               sysclk_enable_pbb_module(SYSCLK_USBC_REGS);\r
+               break;\r
+\r
+       case PEVC_ADDR:\r
+               sysclk_enable_pbb_module(SYSCLK_PEVC);\r
+               break;\r
+\r
+       case PM_ADDR:\r
+               sysclk_enable_pbc_module(SYSCLK_PM);\r
+               break;\r
+\r
+       case CHIPID_ADDR:\r
+               sysclk_enable_pbc_module(SYSCLK_CHIPID);\r
+               break;\r
+\r
+       case SCIF_ADDR:\r
+               sysclk_enable_pbc_module(SYSCLK_SCIF);\r
+               break;\r
+\r
+       case FREQM_ADDR:\r
+               sysclk_enable_pbc_module(SYSCLK_FREQM);\r
+               break;\r
+\r
+       case GPIO_ADDR:\r
+               sysclk_enable_pbc_module(SYSCLK_GPIO);\r
+               break;\r
+\r
+       case BPM_ADDR:\r
+               sysclk_enable_pbd_module(SYSCLK_BPM);\r
+               break;\r
+\r
+       case BSCIF_ADDR:\r
+               sysclk_enable_pbd_module(SYSCLK_BSCIF);\r
+               break;\r
+\r
+       case AST_ADDR:\r
+               sysclk_enable_pbd_module(SYSCLK_AST);\r
+               break;\r
+\r
+       case WDT_ADDR:\r
+               sysclk_enable_pbd_module(SYSCLK_WDT);\r
+               break;\r
+\r
+       case EIC_ADDR:\r
+               sysclk_enable_pbd_module(SYSCLK_EIC);\r
+               break;\r
+\r
+       case PICOUART_ADDR:\r
+               sysclk_enable_pbd_module(SYSCLK_PICOUART);\r
+               break;\r
+\r
+       default:\r
+               Assert(false);\r
+               return;\r
+       }\r
+}\r
+\r
+/**\r
+ * \brief Disable a peripheral's clock from its base address.\r
+ *\r
+ *  Disables the clock to a peripheral, given its base address. If the peripheral\r
+ *  has an associated clock on the HSB bus, this will be disabled also.\r
+ *\r
+ * \param module Pointer to the module's base address.\r
+ */\r
+void sysclk_disable_peripheral_clock(const volatile void *module)\r
+{\r
+       switch ((uintptr_t)module) {\r
+       case AESA_ADDR:\r
+               sysclk_disable_hsb_module(SYSCLK_AESA_HSB);\r
+               break;\r
+\r
+       case IISC_ADDR:\r
+               sysclk_disable_pba_module(SYSCLK_IISC);\r
+               break;\r
+\r
+       case SPI_ADDR:\r
+               sysclk_disable_pba_module(SYSCLK_SPI);\r
+               break;\r
+\r
+       case TC0_ADDR:\r
+               sysclk_disable_pba_module(SYSCLK_TC0);\r
+               break;\r
+\r
+       case TC1_ADDR:\r
+               sysclk_disable_pba_module(SYSCLK_TC1);\r
+               break;\r
+\r
+       case TWIM0_ADDR:\r
+               sysclk_disable_pba_module(SYSCLK_TWIM0);\r
+               break;\r
+\r
+       case TWIS0_ADDR:\r
+               sysclk_disable_pba_module(SYSCLK_TWIS0);\r
+               break;\r
+\r
+       case TWIM1_ADDR:\r
+               sysclk_disable_pba_module(SYSCLK_TWIM1);\r
+               break;\r
+\r
+       case TWIS1_ADDR:\r
+               sysclk_disable_pba_module(SYSCLK_TWIS1);\r
+               break;\r
+\r
+       case USART0_ADDR:\r
+               sysclk_disable_pba_module(SYSCLK_USART0);\r
+               break;\r
+\r
+       case USART1_ADDR:\r
+               sysclk_disable_pba_module(SYSCLK_USART1);\r
+               break;\r
+\r
+       case USART2_ADDR:\r
+               sysclk_disable_pba_module(SYSCLK_USART2);\r
+               break;\r
+\r
+       case USART3_ADDR:\r
+               sysclk_disable_pba_module(SYSCLK_USART3);\r
+               break;\r
+\r
+       case ADCIFE_ADDR:\r
+               sysclk_disable_pba_module(SYSCLK_ADCIFE);\r
+               break;\r
+\r
+       case DACC_ADDR:\r
+               sysclk_disable_pba_module(SYSCLK_DACC);\r
+               break;\r
+\r
+       case ACIFC_ADDR:\r
+               sysclk_disable_pba_module(SYSCLK_ACIFC);\r
+               break;\r
+\r
+       case GLOC_ADDR:\r
+               sysclk_disable_pba_module(SYSCLK_GLOC);\r
+               break;\r
+\r
+       case ABDACB_ADDR:\r
+               sysclk_disable_pba_module(SYSCLK_ABDACB);\r
+               break;\r
+\r
+       case TRNG_ADDR:\r
+               sysclk_disable_pba_module(SYSCLK_TRNG);\r
+               break;\r
+\r
+       case PARC_ADDR:\r
+               sysclk_disable_pba_module(SYSCLK_PARC);\r
+               break;\r
+\r
+       case CATB_ADDR:\r
+               sysclk_disable_pba_module(SYSCLK_CATB);\r
+               break;\r
+\r
+       case TWIM2_ADDR:\r
+               sysclk_disable_pba_module(SYSCLK_TWIM2);\r
+               break;\r
+\r
+       case TWIM3_ADDR:\r
+               sysclk_disable_pba_module(SYSCLK_TWIM3);\r
+               break;\r
+\r
+       case LCDCA_ADDR:\r
+               sysclk_disable_pba_module(SYSCLK_LCDCA);\r
+               break;\r
+\r
+       case HFLASHC_ADDR:\r
+               sysclk_disable_pbb_module(SYSCLK_HFLASHC_REGS);\r
+               break;\r
+\r
+       case HCACHE_ADDR:\r
+               sysclk_disable_hsb_module(SYSCLK_HRAMC1_DATA);\r
+               sysclk_disable_pbb_module(SYSCLK_HRAMC1_REGS);\r
+               break;\r
+\r
+       case HMATRIX_ADDR:\r
+               sysclk_disable_pbb_module(SYSCLK_HMATRIX);\r
+               break;\r
+\r
+       case PDCA_ADDR:\r
+               sysclk_disable_hsb_module(SYSCLK_PDCA_HSB);\r
+               sysclk_disable_pbb_module(SYSCLK_PDCA_PB);\r
+               break;\r
+\r
+       case CRCCU_ADDR:\r
+               sysclk_disable_hsb_module(SYSCLK_CRCCU_DATA);\r
+               sysclk_disable_pbb_module(SYSCLK_CRCCU_REGS);\r
+               break;\r
+\r
+       case USBC_ADDR:\r
+               sysclk_disable_hsb_module(SYSCLK_USBC_DATA);\r
+               sysclk_disable_pbb_module(SYSCLK_USBC_REGS);\r
+               break;\r
+\r
+       case PEVC_ADDR:\r
+               sysclk_disable_pbb_module(SYSCLK_PEVC);\r
+               break;\r
+\r
+       case PM_ADDR:\r
+               sysclk_disable_pbc_module(SYSCLK_PM);\r
+               break;\r
+\r
+       case CHIPID_ADDR:\r
+               sysclk_disable_pbc_module(SYSCLK_CHIPID);\r
+               break;\r
+\r
+       case SCIF_ADDR:\r
+               sysclk_disable_pbc_module(SYSCLK_SCIF);\r
+               break;\r
+\r
+       case FREQM_ADDR:\r
+               sysclk_disable_pbc_module(SYSCLK_FREQM);\r
+               break;\r
+\r
+       case GPIO_ADDR:\r
+               sysclk_disable_pbc_module(SYSCLK_GPIO);\r
+               break;\r
+\r
+       case BPM_ADDR:\r
+               sysclk_disable_pbd_module(SYSCLK_BPM);\r
+               break;\r
+\r
+       case BSCIF_ADDR:\r
+               sysclk_disable_pbd_module(SYSCLK_BSCIF);\r
+               break;\r
+\r
+       case AST_ADDR:\r
+               sysclk_disable_pbd_module(SYSCLK_AST);\r
+               break;\r
+\r
+       case WDT_ADDR:\r
+               sysclk_disable_pbd_module(SYSCLK_WDT);\r
+               break;\r
+\r
+       case EIC_ADDR:\r
+               sysclk_disable_pbd_module(SYSCLK_EIC);\r
+               break;\r
+\r
+       case PICOUART_ADDR:\r
+               sysclk_disable_pbd_module(SYSCLK_PICOUART);\r
+               break;\r
+\r
+       default:\r
+               Assert(false);\r
+               return;\r
+       }\r
+\r
+       // Disable PBA divided clock if possible.\r
+#define PBADIV_CLKSRC_MASK (SYSCLK_TC0 | SYSCLK_TC1 \\r
+               | SYSCLK_USART0 | SYSCLK_USART1 | SYSCLK_USART2 | SYSCLK_USART3)\r
+       if ((PM->PM_PBAMASK & PBADIV_CLKSRC_MASK) == 0) {\r
+               sysclk_disable_pba_divmask(PBA_DIVMASK_Msk);\r
+       }\r
+}\r
+\r
+\r
+/**\r
+ * \brief Set system clock prescaler configuration\r
+ *\r
+ * This function will change the system clock prescaler configuration to\r
+ * match the parameters.\r
+ *\r
+ * \note The parameters to this function are device-specific.\r
+ *\r
+ * \param cpu_shift The CPU clock will be divided by \f$2^{cpu\_shift}\f$\r
+ * \param pba_shift The PBA clock will be divided by \f$2^{pba\_shift}\f$\r
+ * \param pbb_shift The PBB clock will be divided by \f$2^{pbb\_shift}\f$\r
+ * \param pbc_shift The PBC clock will be divided by \f$2^{pbc\_shift}\f$\r
+ * \param pbd_shift The PBD clock will be divided by \f$2^{pbd\_shift}\f$\r
+ */\r
+void sysclk_set_prescalers(uint32_t cpu_shift,\r
+               uint32_t pba_shift, uint32_t pbb_shift,\r
+               uint32_t pbc_shift, uint32_t pbd_shift)\r
+{\r
+       irqflags_t flags;\r
+       uint32_t   cpu_cksel = 0;\r
+       uint32_t   pba_cksel = 0;\r
+       uint32_t   pbb_cksel = 0;\r
+       uint32_t   pbc_cksel = 0;\r
+       uint32_t   pbd_cksel = 0;\r
+\r
+       Assert(cpu_shift <= pba_shift);\r
+       Assert(cpu_shift <= pbb_shift);\r
+       Assert(cpu_shift <= pbc_shift);\r
+       Assert(cpu_shift <= pbd_shift);\r
+\r
+       if (cpu_shift > 0) {\r
+               cpu_cksel = (PM_CPUSEL_CPUSEL(cpu_shift - 1))\r
+                               | PM_CPUSEL_CPUDIV;\r
+       }\r
+\r
+       if (pba_shift > 0) {\r
+               pba_cksel = (PM_PBASEL_PBSEL(pba_shift - 1))\r
+                               | PM_PBASEL_PBDIV;\r
+       }\r
+\r
+       if (pbb_shift > 0) {\r
+               pbb_cksel = (PM_PBBSEL_PBSEL(pbb_shift - 1))\r
+                               | PM_PBBSEL_PBDIV;\r
+       }\r
+\r
+       if (pbc_shift > 0) {\r
+               pbc_cksel = (PM_PBCSEL_PBSEL(pbc_shift - 1))\r
+                               | PM_PBCSEL_PBDIV;\r
+       }\r
+\r
+       if (pbd_shift > 0) {\r
+               pbd_cksel = (PM_PBDSEL_PBSEL(pbd_shift - 1))\r
+                               | PM_PBDSEL_PBDIV;\r
+       }\r
+\r
+       flags = cpu_irq_save();\r
+\r
+       PM->PM_UNLOCK = PM_UNLOCK_KEY(0xAAu)\r
+               | PM_UNLOCK_ADDR((uint32_t)&PM->PM_CPUSEL - (uint32_t)PM);\r
+       PM->PM_CPUSEL = cpu_cksel;\r
+\r
+       PM->PM_UNLOCK = PM_UNLOCK_KEY(0xAAu)\r
+               | PM_UNLOCK_ADDR((uint32_t)&PM->PM_PBASEL - (uint32_t)PM);\r
+       PM->PM_PBASEL = pba_cksel;\r
+\r
+       PM->PM_UNLOCK = PM_UNLOCK_KEY(0xAAu)\r
+               | PM_UNLOCK_ADDR((uint32_t)&PM->PM_PBBSEL - (uint32_t)PM);\r
+       PM->PM_PBBSEL = pbb_cksel;\r
+\r
+       PM->PM_UNLOCK = PM_UNLOCK_KEY(0xAAu)\r
+               | PM_UNLOCK_ADDR((uint32_t)&PM->PM_PBCSEL - (uint32_t)PM);\r
+       PM->PM_PBCSEL = pbc_cksel;\r
+\r
+       PM->PM_UNLOCK = PM_UNLOCK_KEY(0xAAu)\r
+               | PM_UNLOCK_ADDR((uint32_t)&PM->PM_PBDSEL - (uint32_t)PM);\r
+       PM->PM_PBDSEL = pbd_cksel;\r
+\r
+       cpu_irq_restore(flags);\r
+}\r
+\r
+/**\r
+ * \brief Change the source of the main system clock.\r
+ *\r
+ * \param src The new system clock source. Must be one of the constants\r
+ * from the <em>System Clock Sources</em> section.\r
+ */\r
+void sysclk_set_source(uint32_t src)\r
+{\r
+       irqflags_t flags;\r
+       Assert(src <= SYSCLK_SRC_RC1M);\r
+\r
+       flags = cpu_irq_save();\r
+       PM->PM_UNLOCK = PM_UNLOCK_KEY(0xAAu)\r
+               | PM_UNLOCK_ADDR((uint32_t)&PM->PM_MCCTRL - (uint32_t)PM);\r
+       PM->PM_MCCTRL = src;\r
+       cpu_irq_restore(flags);\r
+}\r
+\r
+#if defined(CONFIG_USBCLK_SOURCE) || defined(__DOXYGEN__)\r
+/**\r
+ * \brief Enable the USB generic clock\r
+ *\r
+ * \pre The USB generic clock must be configured to 48MHz.\r
+ * CONFIG_USBCLK_SOURCE and CONFIG_USBCLK_DIV must be defined with proper\r
+ * configuration. The selected clock source must also be configured.\r
+ */\r
+void sysclk_enable_usb(void)\r
+{\r
+       // Note: the SYSCLK_PBB_BRIDGE clock is enabled by\r
+       // sysclk_enable_pbb_module().\r
+       sysclk_enable_pbb_module(SYSCLK_USBC_REGS);\r
+       sysclk_enable_hsb_module(SYSCLK_USBC_DATA);\r
+\r
+       genclk_enable_config(7, CONFIG_USBCLK_SOURCE, CONFIG_USBCLK_DIV);\r
+}\r
+\r
+/**\r
+ * \brief Disable the USB generic clock\r
+ */\r
+void sysclk_disable_usb(void)\r
+{\r
+   genclk_disable(7);\r
+}\r
+#endif // CONFIG_USBCLK_SOURCE\r
+\r
+void sysclk_init(void)\r
+{\r
+       uint32_t ps_value = 0;\r
+       bool is_fwu_enabled = false;\r
+\r
+#if CONFIG_HCACHE_ENABLE == 1\r
+       /* Enable HCACHE */\r
+       sysclk_enable_peripheral_clock(HCACHE);\r
+       HCACHE->HCACHE_CTRL = HCACHE_CTRL_CEN_YES;\r
+       while (!(HCACHE->HCACHE_SR & HCACHE_SR_CSTS_EN));\r
+#endif\r
+\r
+       /* Set up system clock dividers if different from defaults */\r
+       if ((CONFIG_SYSCLK_CPU_DIV > 0) || (CONFIG_SYSCLK_PBA_DIV > 0) ||\r
+                       (CONFIG_SYSCLK_PBB_DIV > 0) || (CONFIG_SYSCLK_PBC_DIV > 0) ||\r
+                       (CONFIG_SYSCLK_PBD_DIV > 0)) {\r
+               sysclk_set_prescalers(CONFIG_SYSCLK_CPU_DIV,\r
+                               CONFIG_SYSCLK_PBA_DIV,\r
+                               CONFIG_SYSCLK_PBB_DIV,\r
+                               CONFIG_SYSCLK_PBC_DIV,\r
+                               CONFIG_SYSCLK_PBD_DIV\r
+                               );\r
+       }\r
+\r
+       /* Automatically select best power scaling mode */\r
+#ifdef CONFIG_FLASH_READ_MODE_HIGH_SPEED_ENABLE\r
+       ps_value = BPM_PS_2;\r
+       is_fwu_enabled = false;\r
+#else\r
+       if (sysclk_get_cpu_hz() <= FLASH_FREQ_PS1_FWS_1_MAX_FREQ) {\r
+               ps_value = BPM_PS_1;\r
+               if (sysclk_get_cpu_hz() > FLASH_FREQ_PS1_FWS_0_MAX_FREQ) {\r
+                       bpm_enable_fast_wakeup(BPM);\r
+                       is_fwu_enabled = true;\r
+               }\r
+       } else {\r
+               ps_value = BPM_PS_0;\r
+       }\r
+#endif\r
+\r
+       /* Switch to system clock selected by user */\r
+       if (CONFIG_SYSCLK_SOURCE == SYSCLK_SRC_RCSYS) {\r
+               /* Already running from RCSYS */\r
+       }\r
+#ifdef BOARD_OSC0_HZ\r
+       else if (CONFIG_SYSCLK_SOURCE == SYSCLK_SRC_OSC0) {\r
+               osc_enable(OSC_ID_OSC0);\r
+               osc_wait_ready(OSC_ID_OSC0);\r
+               // Set a flash wait state depending on the new cpu frequency.\r
+               flash_set_bus_freq(sysclk_get_cpu_hz(), ps_value, is_fwu_enabled);\r
+               sysclk_set_source(SYSCLK_SRC_OSC0);\r
+       }\r
+#endif\r
+#ifdef CONFIG_DFLL0_SOURCE\r
+       else if (CONFIG_SYSCLK_SOURCE == SYSCLK_SRC_DFLL) {\r
+               dfll_enable_config_defaults(0);\r
+               // Set a flash wait state depending on the new cpu frequency.\r
+               flash_set_bus_freq(sysclk_get_cpu_hz(), ps_value, is_fwu_enabled);\r
+               sysclk_set_source(SYSCLK_SRC_DFLL);\r
+       }\r
+#endif\r
+#ifdef CONFIG_PLL0_SOURCE\r
+       else if (CONFIG_SYSCLK_SOURCE == SYSCLK_SRC_PLL0) {\r
+               pll_enable_config_defaults(0);\r
+               // Set a flash wait state depending on the new cpu frequency.\r
+               flash_set_bus_freq(sysclk_get_cpu_hz(), ps_value, is_fwu_enabled);\r
+               sysclk_set_source(SYSCLK_SRC_PLL0);\r
+       }\r
+#endif\r
+       else if (CONFIG_SYSCLK_SOURCE == SYSCLK_SRC_RC80M) {\r
+               osc_enable(OSC_ID_RC80M);\r
+               osc_wait_ready(OSC_ID_RC80M);\r
+               // Set a flash wait state depending on the new cpu frequency.\r
+               flash_set_bus_freq(sysclk_get_cpu_hz(), ps_value, is_fwu_enabled);\r
+               sysclk_set_source(SYSCLK_SRC_RC80M);\r
+       }\r
+       else if (CONFIG_SYSCLK_SOURCE == SYSCLK_SRC_RCFAST) {\r
+               osc_enable(OSC_ID_RCFAST);\r
+               osc_wait_ready(OSC_ID_RCFAST);\r
+               // Set a flash wait state depending on the new cpu frequency.\r
+               flash_set_bus_freq(sysclk_get_cpu_hz(), ps_value, is_fwu_enabled);\r
+               sysclk_set_source(SYSCLK_SRC_RCFAST);\r
+       }\r
+       else if (CONFIG_SYSCLK_SOURCE == SYSCLK_SRC_RC1M) {\r
+               osc_enable(OSC_ID_RC1M);\r
+               osc_wait_ready(OSC_ID_RC1M);\r
+               // Set a flash wait state depending on the new cpu frequency.\r
+               flash_set_bus_freq(sysclk_get_cpu_hz(), ps_value, is_fwu_enabled);\r
+               sysclk_set_source(SYSCLK_SRC_RC1M);\r
+       }\r
+       else {\r
+               Assert(false);\r
+       }\r
+\r
+       /* Automatically switch to low power mode */\r
+       bpm_configure_power_scaling(BPM, ps_value, BPM_PSCM_CPU_NOT_HALT);\r
+       while ((bpm_get_status(BPM) & BPM_SR_PSOK) == 0);\r
+\r
+       /* If the user has specified clock masks, enable only requested clocks */\r
+       irqflags_t const flags = cpu_irq_save();\r
+#if defined(CONFIG_SYSCLK_INIT_CPUMASK)\r
+       PM->PM_UNLOCK = PM_UNLOCK_KEY(0xAAu)\r
+               | PM_UNLOCK_ADDR((uint32_t)&PM->PM_CPUMASK - (uint32_t)PM);\r
+       PM->PM_CPUMASK = SYSCLK_INIT_MINIMAL_CPUMASK | CONFIG_SYSCLK_INIT_CPUMASK;\r
+#endif\r
+\r
+#if defined(CONFIG_SYSCLK_INIT_HSBMASK)\r
+       PM->PM_UNLOCK = PM_UNLOCK_KEY(0xAAu)\r
+               | PM_UNLOCK_ADDR((uint32_t)&PM->PM_HSBMASK - (uint32_t)PM);\r
+       PM->PM_HSBMASK = SYSCLK_INIT_MINIMAL_HSBMASK | CONFIG_SYSCLK_INIT_HSBMASK;\r
+#endif\r
+\r
+#if defined(CONFIG_SYSCLK_INIT_PBAMASK)\r
+       PM->PM_UNLOCK = PM_UNLOCK_KEY(0xAAu)\r
+               | PM_UNLOCK_ADDR((uint32_t)&PM->PM_PBAMASK - (uint32_t)PM);\r
+       PM->PM_PBAMASK = SYSCLK_INIT_MINIMAL_PBAMASK | CONFIG_SYSCLK_INIT_PBAMASK;\r
+#endif\r
+\r
+#if defined(CONFIG_SYSCLK_INIT_PBBMASK)\r
+       PM->PM_UNLOCK = PM_UNLOCK_KEY(0xAAu)\r
+               | PM_UNLOCK_ADDR((uint32_t)&PM->PM_PBBMASK - (uint32_t)PM);\r
+       PM->PM_PBBMASK = SYSCLK_INIT_MINIMAL_PBBMASK | CONFIG_SYSCLK_INIT_PBBMASK;\r
+#endif\r
+\r
+#if defined(CONFIG_SYSCLK_INIT_PBCMASK)\r
+       PM->PM_UNLOCK = PM_UNLOCK_KEY(0xAAu)\r
+               | PM_UNLOCK_ADDR((uint32_t)&PM->PM_PBCMASK - (uint32_t)PM);\r
+       PM->PM_PBCMASK = SYSCLK_INIT_MINIMAL_PBCMASK | CONFIG_SYSCLK_INIT_PBCMASK;\r
+#endif\r
+\r
+#if defined(CONFIG_SYSCLK_INIT_PBDMASK)\r
+       PM->PM_UNLOCK = PM_UNLOCK_KEY(0xAAu)\r
+               | PM_UNLOCK_ADDR((uint32_t)&PM->PM_PBDMASK - (uint32_t)PM);\r
+       PM->PM_PBDMASK = SYSCLK_INIT_MINIMAL_PBDMASK | CONFIG_SYSCLK_INIT_PBDMASK;\r
+#endif\r
+\r
+       cpu_irq_restore(flags);\r
+\r
+#if (defined CONFIG_SYSCLK_DEFAULT_RETURNS_SLOW_OSC)\r
+       /* Signal that the internal frequencies are setup */\r
+       sysclk_initialized = true;\r
+#endif\r
+}\r
+\r
+//! @}\r
diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/asf/common/services/clock/sam4l/sysclk.h b/FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/asf/common/services/clock/sam4l/sysclk.h
new file mode 100644 (file)
index 0000000..d083fbf
--- /dev/null
@@ -0,0 +1,815 @@
+/**\r
+ * \file\r
+ *\r
+ * \brief Chip-specific system clock management functions\r
+ *\r
+ * Copyright (c) 2012 Atmel Corporation. All rights reserved.\r
+ *\r
+ * \asf_license_start\r
+ *\r
+ * \page License\r
+ *\r
+ * Redistribution and use in source and binary forms, with or without\r
+ * modification, are permitted provided that the following conditions are met:\r
+ *\r
+ * 1. Redistributions of source code must retain the above copyright notice,\r
+ *    this list of conditions and the following disclaimer.\r
+ *\r
+ * 2. Redistributions in binary form must reproduce the above copyright notice,\r
+ *    this list of conditions and the following disclaimer in the documentation\r
+ *    and/or other materials provided with the distribution.\r
+ *\r
+ * 3. The name of Atmel may not be used to endorse or promote products derived\r
+ *    from this software without specific prior written permission.\r
+ *\r
+ * 4. This software may only be redistributed and used in connection with an\r
+ *    Atmel microcontroller product.\r
+ *\r
+ * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED\r
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\r
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE\r
+ * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR\r
+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\r
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS\r
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)\r
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,\r
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\r
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\r
+ * POSSIBILITY OF SUCH DAMAGE.\r
+ *\r
+ * \asf_license_stop\r
+ *\r
+ */\r
+#ifndef CHIP_SYSCLK_H_INCLUDED\r
+#define CHIP_SYSCLK_H_INCLUDED\r
+\r
+#include <board.h>\r
+\r
+#ifdef __cplusplus\r
+extern "C" {\r
+#endif\r
+\r
+/**\r
+ * \page sysclk_quickstart Quick Start Guide for the System Clock Management service (SAM4L)\r
+ *\r
+ * This is the quick start guide for the \ref sysclk_group "System Clock Management"\r
+ * service, with step-by-step instructions on how to configure and use the service for\r
+ * specific use cases.\r
+ *\r
+ * \section sysclk_quickstart_usecases System Clock Management use cases\r
+ * - \ref sysclk_quickstart_basic\r
+ *\r
+ * \section sysclk_quickstart_basic Basic usage of the System Clock Management service\r
+ * This section will present a basic use case for the System Clock Management service.\r
+ * This use case will configure the main system clock to 48MHz, using an internal DFLL\r
+ * module to multiply the frequency of a crystal attached to the microcontroller. The\r
+ * peripheral bus clocks are scaled down from the speed of the main system clock.\r
+ *\r
+ * \subsection sysclk_quickstart_use_case_1_prereq Prerequisites\r
+ *  - None\r
+ *\r
+ * \subsection sysclk_quickstart_use_case_1_setup_steps Initialization code\r
+ * Add to the application initialization code:\r
+ * \code\r
+ *    sysclk_init();\r
+ * \endcode\r
+ *\r
+ * \subsection sysclk_quickstart_use_case_1_setup_steps_workflow Workflow\r
+ * -# Configure the system clocks according to the settings in conf_clock.h:\r
+ *    \code sysclk_init(); \endcode\r
+ *\r
+ * \subsection sysclk_quickstart_use_case_1_example_code Example code\r
+ *   Add or uncomment the following in your conf_clock.h header file, commenting out all other\r
+ *   definitions of the same symbol(s):\r
+ *   \code\r
+ *   #define CONFIG_SYSCLK_SOURCE        SYSCLK_SRC_DFLL0\r
+ *\r
+ *   // Fdfll = (Fclk * DFLL_mul) / DFLL_div\r
+ *   #define CONFIG_DFLL0_SOURCE         GENCLK_SRC_OSC32K\r
+ *   #define CONFIG_DFLL0_FREQ           48000000UL\r
+ *   #define CONFIG_DFLL0_MUL            (CONFIG_DFLL0_FREQ / BOARD_OSC32_HZ)\r
+ *   #define CONFIG_DFLL0_DIV            1\r
+ *\r
+ *   // Fbus = Fsys / (2 ^ BUS_div)\r
+ *   #define CONFIG_SYSCLK_CPU_DIV       0\r
+ *   #define CONFIG_SYSCLK_PBA_DIV       1\r
+ *   #define CONFIG_SYSCLK_PBB_DIV       1\r
+ *   #define CONFIG_SYSCLK_PBC_DIV       1\r
+ *   #define CONFIG_SYSCLK_PBD_DIV       1\r
+ *   \endcode\r
+ *\r
+ * \subsection sysclk_quickstart_use_case_1_example_workflow Workflow\r
+ *  -# Configure the main system clock to use the output of the DFLL0 module as its source:\r
+ *   \code #define CONFIG_SYSCLK_SOURCE      SYSCLK_SRC_DFLL0 \endcode\r
+ *  -# Configure the DFLL0 module to use external crystal oscillator OSC0 as its source:\r
+ *   \code #define CONFIG_DFLL0_SOURCE       GENCLK_SRC_OSC32K \endcode\r
+ *  -# Configure the DFLL0 module to multiply the external oscillator OSC0 frequency up to 48MHz:\r
+ *   \code\r
+ *   #define CONFIG_DFLL0_FREQ           48000000UL\r
+ *   #define CONFIG_DFLL0_MUL            (CONFIG_DFLL0_FREQ / BOARD_OSC32_HZ)\r
+ *   #define CONFIG_DFLL0_DIV            1\r
+ *   \endcode\r
+ *   \note For user boards, \c BOARD_OSC0_HZ should be defined in the board \c conf_board.h configuration\r
+ *         file as the frequency of the crystal attached to OSC0.\r
+ *  -# Configure the main clock to run at the full 48MHz, scale the peripheral busses to run at one\r
+ *     half (2 to the power of 1) of the system clock speed:\r
+ *    \code\r
+ *    #define CONFIG_SYSCLK_CPU_DIV       0\r
+ *    #define CONFIG_SYSCLK_PBA_DIV       1\r
+ *    #define CONFIG_SYSCLK_PBB_DIV       1\r
+ *    #define CONFIG_SYSCLK_PBC_DIV       1\r
+ *    #define CONFIG_SYSCLK_PBD_DIV       1\r
+ *    \endcode\r
+ *    \note Some dividers are powers of two, while others are integer division factors. Refer to the\r
+ *          formulas in the conf_clock.h template commented above each division define.\r
+ */\r
+\r
+\r
+/**\r
+ * \weakgroup sysclk_group\r
+ * @{\r
+ */\r
+\r
+//! \name System clock source\r
+//@{\r
+#define SYSCLK_SRC_RCSYS        0     //!< System RC oscillator\r
+#define SYSCLK_SRC_OSC0         1     //!< Oscillator 0\r
+#define SYSCLK_SRC_PLL0         2     //!< Phase Locked Loop 0\r
+#define SYSCLK_SRC_DFLL         3     //!< Digital Frequency Locked Loop\r
+#define SYSCLK_SRC_RC80M        4     //!< 80 MHz RC oscillator\r
+#define SYSCLK_SRC_RCFAST       5     //!< 4-8-12 MHz RC oscillator\r
+#define SYSCLK_SRC_RC1M         6     //!< 1 MHz RC oscillator\r
+//@}\r
+\r
+//! \name USB Clock Sources\r
+//@{\r
+#define USBCLK_SRC_OSC0         GENCLK_SRC_OSC0     //!< Use OSC0\r
+#define USBCLK_SRC_PLL0         GENCLK_SRC_PLL0     //!< Use PLL0\r
+#define USBCLK_SRC_DFLL         GENCLK_SRC_DFLL     //!< Use DFLL\r
+#define USBCLK_SRC_GCLKIN0      GENCLK_SRC_GCLKIN0  //!< Use GCLKIN0\r
+//@}\r
+\r
+//! \name Bus index of maskable module clocks\r
+//@{\r
+#define PM_CLK_GRP_CPU               0\r
+#define PM_CLK_GRP_HSB               1\r
+#define PM_CLK_GRP_PBA               2\r
+#define PM_CLK_GRP_PBB               3\r
+#define PM_CLK_GRP_PBC               4\r
+#define PM_CLK_GRP_PBD               5\r
+//@}\r
+\r
+//! \name Clocks derived from the CPU clock\r
+//@{\r
+//! On-Chip Debug system\r
+#define SYSCLK_OCD              0\r
+//@}\r
+\r
+//! \name Clocks derived from the HSB clock\r
+//@{\r
+//! PDCA memory interface\r
+#define SYSCLK_PDCA_HSB         0\r
+//! Flash data interface\r
+#define SYSCLK_HFLASHC_DATA     1\r
+//! HRAMC data interface\r
+#define SYSCLK_HRAMC1_DATA      2\r
+//! USBC DMA and FIFO interface\r
+#define SYSCLK_USBC_DATA        3\r
+//! CRCCU data interface\r
+#define SYSCLK_CRCCU_DATA       4\r
+//! HSB<->PBA bridge\r
+#define SYSCLK_PBA_BRIDGE       5\r
+//! HSB<->PBB bridge\r
+#define SYSCLK_PBB_BRIDGE       6\r
+//! HSB<->PBC bridge\r
+#define SYSCLK_PBC_BRIDGE       7\r
+//! HSB<->PBD bridge\r
+#define SYSCLK_PBD_BRIDGE       8\r
+//! Advanced Encryption Standard\r
+#define SYSCLK_AESA_HSB         9\r
+//@}\r
+\r
+//! \name Clocks derived from the PBA clock\r
+//@{\r
+//! IISC Controller\r
+#define SYSCLK_IISC             0\r
+//! SPI Controller\r
+#define SYSCLK_SPI              1\r
+//! Timer/Counter 0\r
+#define SYSCLK_TC0              2\r
+//! Timer/Counter 1\r
+#define SYSCLK_TC1              3\r
+//! TWI Master 0\r
+#define SYSCLK_TWIM0            4\r
+//! TWI Slave 0\r
+#define SYSCLK_TWIS0            5\r
+//! TWI Master 1\r
+#define SYSCLK_TWIM1            6\r
+//! TWI Slave 1\r
+#define SYSCLK_TWIS1            7\r
+//! USART 0\r
+#define SYSCLK_USART0           8\r
+//! USART 1\r
+#define SYSCLK_USART1           9\r
+//! USART 2\r
+#define SYSCLK_USART2           10\r
+//! USART 3\r
+#define SYSCLK_USART3           11\r
+//! A/D Converter\r
+#define SYSCLK_ADCIFE           12\r
+//! D/A Converter\r
+#define SYSCLK_DACC             13\r
+//! Analog Comparator\r
+#define SYSCLK_ACIFC            14\r
+//! Glue Logic Controller\r
+#define SYSCLK_GLOC             15\r
+//! ABDACB Controller\r
+#define SYSCLK_ABDACB           16\r
+//! TRNG Controller\r
+#define SYSCLK_TRNG             17\r
+//! PARC Controller\r
+#define SYSCLK_PARC             18\r
+//! Capacitive Touch\r
+#define SYSCLK_CATB             19\r
+//! TWI Master 2\r
+#define SYSCLK_TWIM2            21\r
+//! TWI Master 3\r
+#define SYSCLK_TWIM3            22\r
+//! LCD Controller\r
+#define SYSCLK_LCDCA            23\r
+\r
+//@}\r
+\r
+//! \name Clocks derived from the PBB clock\r
+//@{\r
+//! Flash Controller registers\r
+#define SYSCLK_HFLASHC_REGS     0\r
+//! HRAMC Controller registers\r
+#define SYSCLK_HRAMC1_REGS      1\r
+//! HSB Matrix configuration\r
+#define SYSCLK_HMATRIX          2\r
+//! PDCA peripheral bus interface\r
+#define SYSCLK_PDCA_PB          3\r
+//! CRCCU registers\r
+#define SYSCLK_CRCCU_REGS       4\r
+//! USBC registers\r
+#define SYSCLK_USBC_REGS        5\r
+//! PEVC Controller\r
+#define SYSCLK_PEVC             6\r
+//@}\r
+\r
+//! \name Clocks derived from the PBC clock\r
+//@{\r
+//! PM configuration\r
+#define SYSCLK_PM               0\r
+//! CHIPID Controller\r
+#define SYSCLK_CHIPID           1\r
+//! System Control Interface\r
+#define SYSCLK_SCIF             2\r
+//! Frequency Meter\r
+#define SYSCLK_FREQM            3\r
+//! General-Purpose I/O\r
+#define SYSCLK_GPIO             4\r
+//@}\r
+\r
+//! \name Clocks derived from the PBD clock\r
+//@{\r
+//! BPM configuration\r
+#define SYSCLK_BPM              0\r
+//! BSCIF configuration\r
+#define SYSCLK_BSCIF            1\r
+//! Asynchronous Timer\r
+#define SYSCLK_AST              2\r
+//! Watchdog Timer\r
+#define SYSCLK_WDT              3\r
+//! External Interrupt Controller\r
+#define SYSCLK_EIC              4\r
+//! PICOUART\r
+#define SYSCLK_PICOUART         5\r
+//@}\r
+\r
+//! \name Divided clock mask derived from the PBA clock\r
+//@{\r
+//! TIMER_CLOCK2 mask\r
+#define PBA_DIVMASK_TIMER_CLOCK2     (1u << 0)\r
+//! TIMER_CLOCK3 mask\r
+#define PBA_DIVMASK_TIMER_CLOCK3     (1u << 2)\r
+//! CLK_USART/DIV mask\r
+#define PBA_DIVMASK_CLK_USART        (1u << 2)\r
+//! TIMER_CLOCK4 mask\r
+#define PBA_DIVMASK_TIMER_CLOCK4     (1u << 4)\r
+//! TIMER_CLOCK5 mask\r
+#define PBA_DIVMASK_TIMER_CLOCK5     (1u << 6)\r
+//! Bitfield mask\r
+#define PBA_DIVMASK_Msk              (0x7Fu << 0)\r
+//@}\r
+\r
+#ifndef __ASSEMBLY__\r
+\r
+#include <compiler.h>\r
+#include <dfll.h>\r
+#include <osc.h>\r
+#include <pll.h>\r
+#include <genclk.h>\r
+\r
+// Use the slow clock (RCOSC) with no prescaling if config was empty.\r
+#ifndef CONFIG_SYSCLK_SOURCE\r
+# define CONFIG_SYSCLK_SOURCE    SYSCLK_SRC_RCSYS\r
+#endif /* CONFIG_SYSCLK_SOURCE */\r
+\r
+/*\r
+ * Enable PicoCache for flash access by default.\r
+ * 0: disable PicoCache, 1: enable PicoCache.\r
+ */\r
+#ifndef CONFIG_HCACHE_ENABLE\r
+#define CONFIG_HCACHE_ENABLE          1\r
+#endif\r
+\r
+/**\r
+ * \def CONFIG_SYSCLK_CPU_DIV\r
+ * \brief Configuration symbol for dividing the CPU clock frequency by\r
+ * \f$2^{CONFIG\_SYSCLK\_CPU\_DIV}\f$\r
+ *\r
+ * If this symbol is not defined, the CPU clock frequency is not divided.\r
+ *\r
+ * This symbol may be defined in \ref conf_clock.h.\r
+ */\r
+#ifndef CONFIG_SYSCLK_CPU_DIV\r
+# define CONFIG_SYSCLK_CPU_DIV   0\r
+#endif /* CONFIG_SYSCLK_CPU_DIV */\r
+\r
+/**\r
+ * \def CONFIG_SYSCLK_INIT_HSBMASK\r
+ * \brief Configuration symbol for the HSB clocks enabled at power-on after the\r
+ * sysclock module has been initialized. By default, all HSB clocks are left\r
+ * enabled, however to save power these can be automatically disabled by defining\r
+ * this value to a mask of \c SYSCLOCK_xxx settings.\r
+ *\r
+ * If this symbol is not defined, then all HSB clocks are left enabled.\r
+ *\r
+ * This symbol may be defined in \ref conf_clock.h.\r
+ */\r
+#ifdef __DOXYGEN__\r
+# define CONFIG_SYSCLK_INIT_HSBMASK\r
+#endif\r
+\r
+/**\r
+ * \def CONFIG_SYSCLK_PBA_DIV\r
+ * \brief Configuration symbol for dividing the PBA clock frequency by\r
+ * \f$2^{CONFIG\_SYSCLK\_PBA\_DIV}\f$\r
+ *\r
+ * If this symbol is not defined, the PBA clock frequency is not divided.\r
+ *\r
+ * This symbol may be defined in \ref conf_clock.h.\r
+ */\r
+#ifndef CONFIG_SYSCLK_PBA_DIV\r
+# define CONFIG_SYSCLK_PBA_DIV   0\r
+#endif /* CONFIG_SYSCLK_PBA_DIV */\r
+\r
+/**\r
+ * \def CONFIG_SYSCLK_PBB_DIV\r
+ * \brief Configuration symbol for dividing the PBB clock frequency by\r
+ * \f$2^{CONFIG\_SYSCLK\_PBB\_DIV}\f$\r
+ *\r
+ * If this symbol is not defined, the PBB clock frequency is not divided.\r
+ *\r
+ * This symbol may be defined in \ref conf_clock.h.\r
+ */\r
+#ifndef CONFIG_SYSCLK_PBB_DIV\r
+# define CONFIG_SYSCLK_PBB_DIV   0\r
+#endif /* CONFIG_SYSCLK_PBB_DIV */\r
+\r
+/**\r
+ * \def CONFIG_SYSCLK_PBC_DIV\r
+ * \brief Configuration symbol for dividing the PBC clock frequency by\r
+ * \f$2^{CONFIG\_SYSCLK\_PBC\_DIV}\f$\r
+ *\r
+ * If this symbol is not defined, the PBC clock frequency is not divided.\r
+ *\r
+ * This symbol may be defined in \ref conf_clock.h.\r
+ */\r
+#ifndef CONFIG_SYSCLK_PBC_DIV\r
+# define CONFIG_SYSCLK_PBC_DIV   0\r
+#endif /* CONFIG_SYSCLK_PBC_DIV */\r
+\r
+/**\r
+ * \def CONFIG_SYSCLK_PBD_DIV\r
+ * \brief Configuration symbol for dividing the PBD clock frequency by\r
+ * \f$2^{CONFIG\_SYSCLK\_PBD\_DIV}\f$\r
+ *\r
+ * If this symbol is not defined, the PBD clock frequency is not divided.\r
+ *\r
+ * This symbol may be defined in \ref conf_clock.h.\r
+ */\r
+#ifndef CONFIG_SYSCLK_PBD_DIV\r
+# define CONFIG_SYSCLK_PBD_DIV   0\r
+#endif /* CONFIG_SYSCLK_PBD_DIV */\r
+\r
+/**\r
+ * \def CONFIG_SYSCLK_INIT_CPUMASK\r
+ * \brief Configuration symbol for the CPU clocks enabled at power-on after the\r
+ * sysclock module has been initialized. By default, all CPU clocks are left\r
+ * enabled, however to save power these can be automatically disabled by defining\r
+ * this value to a mask of \c SYSCLOCK_xxx settings.\r
+ *\r
+ * If this symbol is not defined, then all CPU clocks are left enabled.\r
+ *\r
+ * This symbol may be defined in \ref conf_clock.h.\r
+ */\r
+#ifdef __DOXYGEN__\r
+# define CONFIG_SYSCLK_INIT_CPUMASK\r
+#endif\r
+\r
+/**\r
+ * \def CONFIG_SYSCLK_INIT_PBAMASK\r
+ * \brief Configuration symbol for the PBA clocks enabled at power-on after the\r
+ * sysclock module has been initialized. By default, all PBA clocks are left\r
+ * enabled, however to save power these can be automatically disabled by defining\r
+ * this value to a mask of \c SYSCLOCK_xxx settings.\r
+ *\r
+ * If this symbol is not defined, then all PBA clocks are left enabled.\r
+ *\r
+ * This symbol may be defined in \ref conf_clock.h.\r
+ */\r
+#ifdef __DOXYGEN__\r
+# define CONFIG_SYSCLK_INIT_PBAMASK\r
+#endif\r
+\r
+/**\r
+ * \def CONFIG_SYSCLK_INIT_PBBMASK\r
+ * \brief Configuration symbol for the PBB clocks enabled at power-on after the\r
+ * sysclock module has been initialized. By default, all PBB clocks are left\r
+ * enabled, however to save power these can be automatically disabled by defining\r
+ * this value to a mask of \c SYSCLOCK_xxx settings.\r
+ *\r
+ * If this symbol is not defined, then all PBB clocks are left enabled.\r
+ *\r
+ * This symbol may be defined in \ref conf_clock.h.\r
+ */\r
+#ifdef __DOXYGEN__\r
+# define CONFIG_SYSCLK_INIT_PBBMASK\r
+#endif\r
+\r
+/**\r
+ * \def CONFIG_SYSCLK_INIT_PBCMASK\r
+ * \brief Configuration symbol for the PBC clocks enabled at power-on after the\r
+ * sysclock module has been initialized. By default, all PBC clocks are left\r
+ * enabled, however to save power these can be automatically disabled by defining\r
+ * this value to a mask of \c SYSCLOCK_xxx settings.\r
+ *\r
+ * If this symbol is not defined, then all PBC clocks are left enabled.\r
+ *\r
+ * This symbol may be defined in \ref conf_clock.h.\r
+ */\r
+#ifdef __DOXYGEN__\r
+# define CONFIG_SYSCLK_INIT_PBCMASK\r
+#endif\r
+\r
+/**\r
+ * \def CONFIG_SYSCLK_INIT_PBDMASK\r
+ * \brief Configuration symbol for the PBD clocks enabled at power-on after the\r
+ * sysclock module has been initialized. By default, all PBD clocks are left\r
+ * enabled, however to save power these can be automatically disabled by defining\r
+ * this value to a mask of \c SYSCLOCK_xxx settings.\r
+ *\r
+ * If this symbol is not defined, then all PBD clocks are left enabled.\r
+ *\r
+ * This symbol may be defined in \ref conf_clock.h.\r
+ */\r
+#ifdef __DOXYGEN__\r
+# define CONFIG_SYSCLK_INIT_PBDMASK\r
+#endif\r
+\r
+/**\r
+ * \def CONFIG_USBCLK_SOURCE\r
+ * \brief Configuration symbol for the USB generic clock source\r
+ *\r
+ * Sets the clock source to use for the USB. The source must also be properly\r
+ * configured.\r
+ *\r
+ * Define this to one of the \c USBCLK_SRC_xxx settings. Leave it undefined if\r
+ * USB is not required.\r
+ */\r
+#ifdef __DOXYGEN__\r
+# define CONFIG_USBCLK_SOURCE\r
+#endif\r
+\r
+/**\r
+ * \def CONFIG_USBCLK_DIV\r
+ * \brief Configuration symbol for the USB generic clock divider setting\r
+ *\r
+ * Sets the clock division for the USB generic clock. If a USB clock source is\r
+ * selected with CONFIG_USBCLK_SOURCE, this configuration symbol must also be\r
+ * defined.\r
+ *\r
+ * Define this as any value that does not exceed \c GENCLK_DIV_MAX, and which\r
+ * will give a 48 MHz clock frequency from the selected source.\r
+ */\r
+#ifdef __DOXYGEN__\r
+# define CONFIG_USBCLK_DIV\r
+#endif\r
+\r
+/**\r
+ * \name Querying the system clock and its derived clocks\r
+ *\r
+ * The following functions may be used to query the current frequency of\r
+ * the system clock and the CPU and bus clocks derived from it.\r
+ * sysclk_get_main_hz() and sysclk_get_cpu_hz() can be assumed to be\r
+ * available on all platforms, although some platforms may define\r
+ * additional accessors for various chip-internal bus clocks. These are\r
+ * usually not intended to be queried directly by generic code.\r
+ */\r
+//@{\r
+\r
+/**\r
+ * \brief Return the current rate in Hz of the main system clock\r
+ *\r
+ * \todo This function assumes that the main clock source never changes\r
+ * once it's been set up, and that PLL0 always runs at the compile-time\r
+ * configured default rate. While this is probably the most common\r
+ * configuration, which we want to support as a special case for\r
+ * performance reasons, we will at some point need to support more\r
+ * dynamic setups as well.\r
+ */\r
+#if (defined CONFIG_SYSCLK_DEFAULT_RETURNS_SLOW_OSC)\r
+extern bool sysclk_initialized;\r
+#endif\r
+static inline uint32_t sysclk_get_main_hz(void)\r
+{\r
+#if (defined CONFIG_SYSCLK_DEFAULT_RETURNS_SLOW_OSC)\r
+       if (!sysclk_initialized ) {\r
+               return OSC_RCSYS_NOMINAL_HZ;\r
+       }\r
+#endif\r
+\r
+       if (CONFIG_SYSCLK_SOURCE == SYSCLK_SRC_RCSYS) {\r
+               return OSC_RCSYS_NOMINAL_HZ;\r
+       }\r
+\r
+#ifdef BOARD_OSC0_HZ\r
+       else if (CONFIG_SYSCLK_SOURCE == SYSCLK_SRC_OSC0) {\r
+               return BOARD_OSC0_HZ;\r
+       }\r
+#endif\r
+\r
+#ifdef CONFIG_PLL0_SOURCE\r
+       else if (CONFIG_SYSCLK_SOURCE == SYSCLK_SRC_PLL0) {\r
+               return pll_get_default_rate(0);\r
+       }\r
+#endif\r
+\r
+#ifdef CONFIG_DFLL0_SOURCE\r
+       else if (CONFIG_SYSCLK_SOURCE == SYSCLK_SRC_DFLL) {\r
+               return dfll_get_default_rate(0);\r
+       }\r
+#endif\r
+\r
+       else if (CONFIG_SYSCLK_SOURCE == SYSCLK_SRC_RC80M) {\r
+               return OSC_RC80M_NOMINAL_HZ;\r
+       }\r
+\r
+       else if (CONFIG_SYSCLK_SOURCE == SYSCLK_SRC_RCFAST) {\r
+               if (CONFIG_RCFAST_FRANGE == 2) {\r
+                       return OSC_RCFAST12M_NOMINAL_HZ;\r
+               } else if (CONFIG_RCFAST_FRANGE == 1) {\r
+                       return OSC_RCFAST8M_NOMINAL_HZ;\r
+               } else {\r
+                       return OSC_RCFAST4M_NOMINAL_HZ;\r
+               }\r
+       }\r
+\r
+       else if (CONFIG_SYSCLK_SOURCE == SYSCLK_SRC_RC1M) {\r
+               return OSC_RC1M_NOMINAL_HZ;\r
+       }\r
+\r
+\r
+       else {\r
+               /* unhandled_case(CONFIG_SYSCLK_SOURCE); */\r
+               return 0;\r
+       }\r
+}\r
+\r
+/**\r
+ * \brief Return the current rate in Hz of the CPU clock\r
+ *\r
+ * \todo This function assumes that the CPU always runs at the system\r
+ * clock frequency. We want to support at least two more scenarios:\r
+ * Fixed CPU/bus clock dividers (config symbols) and dynamic CPU/bus\r
+ * clock dividers (which may change at run time). Ditto for all the bus\r
+ * clocks.\r
+ *\r
+ * \return Frequency of the CPU clock, in Hz.\r
+ */\r
+static inline uint32_t sysclk_get_cpu_hz(void)\r
+{\r
+       return sysclk_get_main_hz() >> CONFIG_SYSCLK_CPU_DIV;\r
+}\r
+\r
+/**\r
+ * \brief Return the current rate in Hz of the High-Speed Bus clock\r
+ *\r
+ * \return Frequency of the High Speed Peripheral Bus clock, in Hz.\r
+ */\r
+static inline uint32_t sysclk_get_hsb_hz(void)\r
+{\r
+       return sysclk_get_main_hz() >> CONFIG_SYSCLK_CPU_DIV;\r
+}\r
+\r
+/**\r
+ * \brief Return the current rate in Hz of the Peripheral Bus A clock\r
+ *\r
+ * \return Frequency of the Peripheral Bus A clock, in Hz.\r
+ */\r
+static inline uint32_t sysclk_get_pba_hz(void)\r
+{\r
+       return sysclk_get_main_hz() >> CONFIG_SYSCLK_PBA_DIV;\r
+}\r
+\r
+/**\r
+ * \brief Return the current rate in Hz of the Peripheral Bus B clock\r
+ *\r
+ * \return Frequency of the Peripheral Bus B clock, in Hz.\r
+ */\r
+static inline uint32_t sysclk_get_pbb_hz(void)\r
+{\r
+       return sysclk_get_main_hz() >> CONFIG_SYSCLK_PBB_DIV;\r
+}\r
+\r
+/**\r
+ * \brief Return the current rate in Hz of the Peripheral Bus C clock\r
+ *\r
+ * \return Frequency of the Peripheral Bus C clock, in Hz.\r
+ */\r
+static inline uint32_t sysclk_get_pbc_hz(void)\r
+{\r
+       return sysclk_get_main_hz() >> CONFIG_SYSCLK_PBC_DIV;\r
+}\r
+\r
+/**\r
+ * \brief Return the current rate in Hz of the Peripheral Bus D clock\r
+ *\r
+ * \return Frequency of the Peripheral Bus D clock, in Hz.\r
+ */\r
+static inline uint32_t sysclk_get_pbd_hz(void)\r
+{\r
+       return sysclk_get_main_hz() >> CONFIG_SYSCLK_PBD_DIV;\r
+}\r
+\r
+extern uint32_t sysclk_get_peripheral_bus_hz(const volatile void *module);\r
+//@}\r
+\r
+extern void sysclk_priv_enable_module(uint32_t bus_id, uint32_t module_index);\r
+extern void sysclk_priv_disable_module(uint32_t bus_id, uint32_t module_index);\r
+\r
+//! \name Enabling and disabling synchronous clocks\r
+//@{\r
+\r
+/**\r
+ * \brief Enable a module clock derived from the CPU clock\r
+ * \param index Index of the module clock in the CPUMASK register\r
+ */\r
+static inline void sysclk_enable_cpu_module(uint32_t index)\r
+{\r
+       sysclk_priv_enable_module(PM_CLK_GRP_CPU, index);\r
+}\r
+\r
+/**\r
+ * \brief Disable a module clock derived from the CPU clock\r
+ * \param index Index of the module clock in the CPUMASK register\r
+ */\r
+static inline void sysclk_disable_cpu_module(uint32_t index)\r
+{\r
+       sysclk_priv_disable_module(PM_CLK_GRP_CPU, index);\r
+}\r
+\r
+/**\r
+ * \brief Enable a module clock derived from the HSB clock\r
+ * \param index Index of the module clock in the HSBMASK register\r
+ */\r
+static inline void sysclk_enable_hsb_module(uint32_t index)\r
+{\r
+       sysclk_priv_enable_module(PM_CLK_GRP_HSB, index);\r
+}\r
+\r
+/**\r
+ * \brief Disable a module clock derived from the HSB clock\r
+ * \param index Index of the module clock in the HSBMASK register\r
+ */\r
+static inline void sysclk_disable_hsb_module(uint32_t index)\r
+{\r
+       sysclk_priv_disable_module(PM_CLK_GRP_HSB, index);\r
+}\r
+\r
+extern void sysclk_enable_pba_module(uint32_t index);\r
+extern void sysclk_disable_pba_module(uint32_t index);\r
+extern void sysclk_enable_pbb_module(uint32_t index);\r
+extern void sysclk_disable_pbb_module(uint32_t index);\r
+\r
+/**\r
+ * \brief Enable a module clock derived from the PBC clock\r
+ * \param index Index of the module clock in the PBAMASK register\r
+ */\r
+static inline void sysclk_enable_pbc_module(uint32_t index)\r
+{\r
+       sysclk_priv_enable_module(PM_CLK_GRP_PBC, index);\r
+}\r
+\r
+/**\r
+ * \brief Disable a module clock derived from the PBC clock\r
+ * \param index Index of the module clock in the PBAMASK register\r
+ */\r
+static inline void sysclk_disable_pbc_module(uint32_t index)\r
+{\r
+       sysclk_priv_disable_module(PM_CLK_GRP_PBC, index);\r
+}\r
+\r
+/**\r
+ * \brief Enable a module clock derived from the PBD clock\r
+ * \param index Index of the module clock in the PBAMASK register\r
+ */\r
+static inline void sysclk_enable_pbd_module(uint32_t index)\r
+{\r
+       sysclk_priv_enable_module(PM_CLK_GRP_PBD, index);\r
+}\r
+\r
+/**\r
+ * \brief Disable a module clock derived from the PBD clock\r
+ * \param index Index of the module clock in the PBAMASK register\r
+ */\r
+static inline void sysclk_disable_pbd_module(uint32_t index)\r
+{\r
+       sysclk_priv_disable_module(PM_CLK_GRP_PBD, index);\r
+}\r
+\r
+/**\r
+ * \brief Enable divided clock mask derived from the PBA clock\r
+ * \param mask mask of the divided clock in the PBADIVMASK register\r
+ */\r
+static inline void sysclk_enable_pba_divmask(uint32_t mask)\r
+{\r
+       uint32_t temp_mask;\r
+\r
+       temp_mask = PM->PM_PBADIVMASK;\r
+       temp_mask |= mask;\r
+       PM->PM_UNLOCK = PM_UNLOCK_KEY(0xAAu)\r
+                       | PM_UNLOCK_ADDR((uint32_t)&PM->PM_PBADIVMASK - (uint32_t)PM);\r
+       PM->PM_PBADIVMASK = temp_mask;\r
+}\r
+\r
+/**\r
+ * \brief Disable divided clock mask derived from the PBA clock\r
+ * \param mask mask of the divided clock in the PBADIVMASK register\r
+ */\r
+static inline void sysclk_disable_pba_divmask(uint32_t mask)\r
+{\r
+       uint32_t temp_mask;\r
+\r
+       temp_mask = PM->PM_PBADIVMASK;\r
+       temp_mask &= ~mask;\r
+       PM->PM_UNLOCK = PM_UNLOCK_KEY(0xAAu)\r
+                       | PM_UNLOCK_ADDR((uint32_t)&PM->PM_PBADIVMASK - (uint32_t)PM);\r
+       PM->PM_PBADIVMASK = temp_mask;\r
+}\r
+\r
+extern void sysclk_enable_peripheral_clock(const volatile void *module);\r
+extern void sysclk_disable_peripheral_clock(const volatile void *module);\r
+\r
+//@}\r
+\r
+//! \name System Clock Source and Prescaler configuration\r
+//@{\r
+\r
+extern void sysclk_set_prescalers(uint32_t cpu_shift,\r
+               uint32_t pba_shift, uint32_t pbb_shift,\r
+               uint32_t pbc_shift, uint32_t pbd_shift);\r
+extern void sysclk_set_source(uint32_t src);\r
+\r
+//@}\r
+\r
+#if defined(CONFIG_USBCLK_SOURCE) || defined(__DOXYGEN__)\r
+\r
+/**\r
+ * \def USBCLK_STARTUP_TIMEOUT\r
+ * \brief Number of us to wait for USB clock to start\r
+ */\r
+#ifdef CONFIG_USBCLK_STARTUP_TIMEOUT\r
+#   define USBCLK_STARTUP_TIMEOUT    (CONFIG_USBCLK_STARTUP_TIMEOUT)\r
+#else\r
+#   define USBCLK_STARTUP_TIMEOUT    (OSC0_STARTUP_TIMEOUT*(1000000/OSC_RCSYS_NOMINAL_HZ))\r
+#endif\r
+\r
+extern void sysclk_enable_usb(void);\r
+extern void sysclk_disable_usb(void);\r
+#endif\r
+\r
+extern void sysclk_init(void);\r
+\r
+#endif /* !__ASSEMBLY__ */\r
+\r
+//! @}\r
+\r
+#ifdef __cplusplus\r
+}\r
+#endif\r
+\r
+#endif /* CHIP_SYSCLK_H_INCLUDED */\r
diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/asf/common/services/clock/sysclk.h b/FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/asf/common/services/clock/sysclk.h
new file mode 100644 (file)
index 0000000..6a125a8
--- /dev/null
@@ -0,0 +1,173 @@
+/**\r
+ * \file\r
+ *\r
+ * \brief System clock management\r
+ *\r
+ * Copyright (c) 2010-2012 Atmel Corporation. All rights reserved.\r
+ *\r
+ * \asf_license_start\r
+ *\r
+ * \page License\r
+ *\r
+ * Redistribution and use in source and binary forms, with or without\r
+ * modification, are permitted provided that the following conditions are met:\r
+ *\r
+ * 1. Redistributions of source code must retain the above copyright notice,\r
+ *    this list of conditions and the following disclaimer.\r
+ *\r
+ * 2. Redistributions in binary form must reproduce the above copyright notice,\r
+ *    this list of conditions and the following disclaimer in the documentation\r
+ *    and/or other materials provided with the distribution.\r
+ *\r
+ * 3. The name of Atmel may not be used to endorse or promote products derived\r
+ *    from this software without specific prior written permission.\r
+ *\r
+ * 4. This software may only be redistributed and used in connection with an\r
+ *    Atmel microcontroller product.\r
+ *\r
+ * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED\r
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\r
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE\r
+ * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR\r
+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\r
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS\r
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)\r
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,\r
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\r
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\r
+ * POSSIBILITY OF SUCH DAMAGE.\r
+ *\r
+ * \asf_license_stop\r
+ *\r
+ */\r
+#ifndef SYSCLK_H_INCLUDED\r
+#define SYSCLK_H_INCLUDED\r
+\r
+#include "parts.h"\r
+#include "conf_clock.h"\r
+\r
+#if SAM3S\r
+# include "sam3s/sysclk.h"\r
+#elif SAM3U\r
+# include "sam3u/sysclk.h"\r
+#elif SAM3N\r
+# include "sam3n/sysclk.h"\r
+#elif SAM3XA\r
+# include "sam3x/sysclk.h"\r
+#elif SAM4S\r
+# include "sam4s/sysclk.h"\r
+#elif SAM4E\r
+# include "sam4e/sysclk.h"\r
+#elif SAM4L\r
+# include "sam4l/sysclk.h"\r
+#elif (UC3A0 || UC3A1)\r
+# include "uc3a0_a1/sysclk.h"\r
+#elif UC3A3\r
+# include "uc3a3_a4/sysclk.h"\r
+#elif UC3B\r
+# include "uc3b0_b1/sysclk.h"\r
+#elif UC3C\r
+# include "uc3c/sysclk.h"\r
+#elif UC3D\r
+# include "uc3d/sysclk.h"\r
+#elif UC3L\r
+# include "uc3l/sysclk.h"\r
+#elif XMEGA\r
+# include "xmega/sysclk.h"\r
+#elif MEGA\r
+# include "mega/sysclk.h"\r
+#else\r
+# error Unsupported chip type\r
+#endif\r
+\r
+/**\r
+ * \defgroup clk_group Clock Management\r
+ */\r
+\r
+/**\r
+ * \ingroup clk_group\r
+ * \defgroup sysclk_group System Clock Management\r
+ *\r
+ * See \ref sysclk_quickstart.\r
+ *\r
+ * The <em>sysclk</em> API covers the <em>system clock</em> and all\r
+ * clocks derived from it. The system clock is a chip-internal clock on\r
+ * which all <em>synchronous clocks</em>, i.e. CPU and bus/peripheral\r
+ * clocks, are based. The system clock is typically generated from one\r
+ * of a variety of sources, which may include crystal and RC oscillators\r
+ * as well as PLLs.  The clocks derived from the system clock are\r
+ * sometimes also known as <em>synchronous clocks</em>, since they\r
+ * always run synchronously with respect to each other, as opposed to\r
+ * <em>generic clocks</em> which may run from different oscillators or\r
+ * PLLs.\r
+ *\r
+ * Most applications should simply call sysclk_init() to initialize\r
+ * everything related to the system clock and its source (oscillator,\r
+ * PLL or DFLL), and leave it at that. More advanced applications, and\r
+ * platform-specific drivers, may require additional services from the\r
+ * clock system, some of which may be platform-specific.\r
+ *\r
+ * \section sysclk_group_platform Platform Dependencies\r
+ *\r
+ * The sysclk API is partially chip- or platform-specific. While all\r
+ * platforms provide mostly the same functionality, there are some\r
+ * variations around how different bus types and clock tree structures\r
+ * are handled.\r
+ *\r
+ * The following functions are available on all platforms with the same\r
+ * parameters and functionality. These functions may be called freely by\r
+ * portable applications, drivers and services:\r
+ *   - sysclk_init()\r
+ *   - sysclk_set_source()\r
+ *   - sysclk_get_main_hz()\r
+ *   - sysclk_get_cpu_hz()\r
+ *   - sysclk_get_peripheral_bus_hz()\r
+ *\r
+ * The following functions are available on all platforms, but there may\r
+ * be variations in the function signature (i.e. parameters) and\r
+ * behavior. These functions are typically called by platform-specific\r
+ * parts of drivers, and applications that aren't intended to be\r
+ * portable:\r
+ *   - sysclk_enable_peripheral_clock()\r
+ *   - sysclk_disable_peripheral_clock()\r
+ *   - sysclk_enable_module()\r
+ *   - sysclk_disable_module()\r
+ *   - sysclk_module_is_enabled()\r
+ *   - sysclk_set_prescalers()\r
+ *\r
+ * All other functions should be considered platform-specific.\r
+ * Enabling/disabling clocks to specific peripherals as well as\r
+ * determining the speed of these clocks should be done by calling\r
+ * functions provided by the driver for that peripheral.\r
+ *\r
+ * @{\r
+ */\r
+\r
+//! \name System Clock Initialization\r
+//@{\r
+/**\r
+ * \fn void sysclk_init(void)\r
+ * \brief Initialize the synchronous clock system.\r
+ *\r
+ * This function will initialize the system clock and its source. This\r
+ * includes:\r
+ *   - Mask all synchronous clocks except for any clocks which are\r
+ *     essential for normal operation (for example internal memory\r
+ *     clocks).\r
+ *   - Set up the system clock prescalers as specified by the\r
+ *     application's configuration file.\r
+ *   - Enable the clock source specified by the application's\r
+ *     configuration file (oscillator or PLL) and wait for it to become\r
+ *     stable.\r
+ *   - Set the main system clock source to the clock specified by the\r
+ *     application's configuration file.\r
+ *\r
+ * Since all non-essential peripheral clocks are initially disabled, it\r
+ * is the responsibility of the peripheral driver to re-enable any\r
+ * clocks that are needed for normal operation.\r
+ */\r
+//@}\r
+\r
+//! @}\r
+\r
+#endif /* SYSCLK_H_INCLUDED */\r
diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/asf/common/services/ioport/ioport.h b/FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/asf/common/services/ioport/ioport.h
new file mode 100644 (file)
index 0000000..43d75ce
--- /dev/null
@@ -0,0 +1,536 @@
+/**\r
+ * \file\r
+ *\r
+ * \brief Common IOPORT service main header file for AVR, UC3 and ARM\r
+ *        architectures.\r
+ *\r
+ * Copyright (c) 2012 Atmel Corporation. All rights reserved.\r
+ *\r
+ * \asf_license_start\r
+ *\r
+ * \page License\r
+ *\r
+ * Redistribution and use in source and binary forms, with or without\r
+ * modification, are permitted provided that the following conditions are met:\r
+ *\r
+ * 1. Redistributions of source code must retain the above copyright notice,\r
+ *    this list of conditions and the following disclaimer.\r
+ *\r
+ * 2. Redistributions in binary form must reproduce the above copyright notice,\r
+ *    this list of conditions and the following disclaimer in the documentation\r
+ *    and/or other materials provided with the distribution.\r
+ *\r
+ * 3. The name of Atmel may not be used to endorse or promote products derived\r
+ *    from this software without specific prior written permission.\r
+ *\r
+ * 4. This software may only be redistributed and used in connection with an\r
+ *    Atmel microcontroller product.\r
+ *\r
+ * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED\r
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\r
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE\r
+ * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR\r
+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\r
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS\r
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)\r
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,\r
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\r
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\r
+ * POSSIBILITY OF SUCH DAMAGE.\r
+ *\r
+ * \asf_license_stop\r
+ *\r
+ */\r
+#ifndef IOPORT_H\r
+#define IOPORT_H\r
+\r
+#ifdef __cplusplus\r
+extern "C" {\r
+#endif\r
+\r
+#include <parts.h>\r
+#include <compiler.h>\r
+\r
+/**\r
+ * \defgroup ioport_group Common IOPORT API\r
+ *\r
+ * See \ref ioport_quickstart.\r
+ *\r
+ * This is common IOPORT service for GPIO pin configuration and control in a\r
+ * standardized manner across the MEGA, MEGA_RF, XMEGA, UC3 and ARM devices.\r
+ *\r
+ * Port pin control code is optimized for each platform, and should produce\r
+ * both compact and fast execution times when used with constant values.\r
+ *\r
+ * \section dependencies Dependencies\r
+ * This driver depends on the following modules:\r
+ * - \ref sysclk_group for clock speed and functions.\r
+ * @{\r
+ */\r
+\r
+/**\r
+ * \def IOPORT_CREATE_PIN(port, pin)\r
+ * \brief Create IOPORT pin number\r
+ *\r
+ * Create a IOPORT pin number for use with the IOPORT functions.\r
+ *\r
+ * \param port IOPORT port (e.g. PORTA, PA or PIOA depending on chosen\r
+ *             architecture)\r
+ * \param pin IOPORT zero-based index of the I/O pin\r
+ */\r
+\r
+/** \brief IOPORT pin directions */\r
+enum ioport_direction {\r
+       IOPORT_DIR_INPUT,  /*!< IOPORT input direction */\r
+       IOPORT_DIR_OUTPUT, /*!< IOPORT output direction */\r
+};\r
+\r
+/** \brief IOPORT levels */\r
+enum ioport_value {\r
+       IOPORT_PIN_LEVEL_LOW,  /*!< IOPORT pin value low */\r
+       IOPORT_PIN_LEVEL_HIGH, /*!< IOPORT pin value high */\r
+};\r
+\r
+#if MEGA_RF\r
+/** \brief IOPORT edge sense modes */\r
+enum ioport_sense {\r
+       IOPORT_SENSE_LEVEL,     /*!< IOPORT sense low level  */\r
+       IOPORT_SENSE_BOTHEDGES, /*!< IOPORT sense both rising and falling edges */\r
+       IOPORT_SENSE_FALLING,   /*!< IOPORT sense falling edges */\r
+       IOPORT_SENSE_RISING,    /*!< IOPORT sense rising edges */\r
+};\r
+#elif SAM && !SAM4L\r
+/** \brief IOPORT edge sense modes */\r
+enum ioport_sense {\r
+       IOPORT_SENSE_BOTHEDGES, /*!< IOPORT sense both rising and falling edges */\r
+       IOPORT_SENSE_FALLING,   /*!< IOPORT sense falling edges */\r
+       IOPORT_SENSE_RISING,    /*!< IOPORT sense rising edges */\r
+       IOPORT_SENSE_LEVEL_LOW, /*!< IOPORT sense low level  */\r
+       IOPORT_SENSE_LEVEL_HIGH,/*!< IOPORT sense High level  */\r
+};\r
+#else\r
+enum ioport_sense {\r
+       IOPORT_SENSE_BOTHEDGES, /*!< IOPORT sense both rising and falling edges */\r
+       IOPORT_SENSE_RISING,    /*!< IOPORT sense rising edges */\r
+       IOPORT_SENSE_FALLING,   /*!< IOPORT sense falling edges */\r
+};\r
+#endif\r
+\r
+\r
+#if XMEGA\r
+# include "xmega/ioport.h"\r
+# if defined(IOPORT_XMEGA_COMPAT)\r
+#  include "xmega/ioport_compat.h"\r
+# endif\r
+#elif MEGA\r
+#  include "mega/ioport.h"\r
+#elif UC3\r
+# include "uc3/ioport.h"\r
+#elif SAM\r
+# if SAM4L\r
+#  include "sam/ioport_gpio.h"\r
+# else\r
+#  include "sam/ioport_pio.h"\r
+# endif\r
+#endif\r
+\r
+/**\r
+ * \brief Initializes the IOPORT service, ready for use.\r
+ *\r
+ * This function must be called before using any other functions in the IOPORT\r
+ * service.\r
+ */\r
+static inline void ioport_init(void)\r
+{\r
+       arch_ioport_init();\r
+}\r
+\r
+/**\r
+ * \brief Enable an IOPORT pin, based on a pin created with \ref\r
+ * IOPORT_CREATE_PIN().\r
+ *\r
+ * \param pin  IOPORT pin to enable\r
+ */\r
+static inline void ioport_enable_pin(ioport_pin_t pin)\r
+{\r
+       arch_ioport_enable_pin(pin);\r
+}\r
+\r
+/**\r
+ * \brief Enable multiple pins in a single IOPORT port.\r
+ *\r
+ * \param port IOPORT port to enable\r
+ * \param mask Mask of pins within the port to enable\r
+ */\r
+static inline void ioport_enable_port(ioport_port_t port,\r
+               ioport_port_mask_t mask)\r
+{\r
+       arch_ioport_enable_port(port, mask);\r
+}\r
+\r
+/**\r
+ * \brief Disable IOPORT pin, based on a pin created with \ref\r
+ *        IOPORT_CREATE_PIN().\r
+ *\r
+ * \param pin IOPORT pin to disable\r
+ */\r
+static inline void ioport_disable_pin(ioport_pin_t pin)\r
+{\r
+       arch_ioport_disable_pin(pin);\r
+}\r
+\r
+/**\r
+ * \brief Disable multiple pins in a single IOPORT port.\r
+ *\r
+ * \param port IOPORT port to disable\r
+ * \param mask Pin mask of pins to disable\r
+ */\r
+static inline void ioport_disable_port(ioport_port_t port,\r
+               ioport_port_mask_t mask)\r
+{\r
+       arch_ioport_disable_port(port, mask);\r
+}\r
+\r
+/**\r
+ * \brief Set multiple pin modes in a single IOPORT port, such as pull-up,\r
+ * pull-down, etc. configuration.\r
+ *\r
+ * \param port IOPORT port to configure\r
+ * \param mask Pin mask of pins to configure\r
+ * \param mode Mode masks to configure for the specified pins (\ref\r
+ * ioport_modes)\r
+ */\r
+static inline void ioport_set_port_mode(ioport_port_t port,\r
+               ioport_port_mask_t mask, ioport_mode_t mode)\r
+{\r
+       arch_ioport_set_port_mode(port, mask, mode);\r
+}\r
+\r
+/**\r
+ * \brief Set pin mode for one single IOPORT pin.\r
+ *\r
+ * \param pin IOPORT pin to configure\r
+ * \param mode Mode masks to configure for the specified pin (\ref ioport_modes)\r
+ */\r
+static inline void ioport_set_pin_mode(ioport_pin_t pin, ioport_mode_t mode)\r
+{\r
+       arch_ioport_set_pin_mode(pin, mode);\r
+}\r
+\r
+/**\r
+ * \brief Reset multiple pin modes in a specified IOPORT port to defaults.\r
+ *\r
+ * \param port IOPORT port to configure\r
+ * \param mask Mask of pins whose mode configuration is to be reset\r
+ */\r
+static inline void ioport_reset_port_mode(ioport_port_t port,\r
+               ioport_port_mask_t mask)\r
+{\r
+       arch_ioport_set_port_mode(port, mask, 0);\r
+}\r
+\r
+/**\r
+ * \brief Reset pin mode configuration for a single IOPORT pin\r
+ *\r
+ * \param pin IOPORT pin to configure\r
+ */\r
+static inline void ioport_reset_pin_mode(ioport_pin_t pin)\r
+{\r
+       arch_ioport_set_pin_mode(pin, 0);\r
+}\r
+\r
+/**\r
+ * \brief Set I/O direction for a group of pins in a single IOPORT.\r
+ *\r
+ * \param port IOPORT port to configure\r
+ * \param mask Pin mask of pins to configure\r
+ * \param dir Direction to set for the specified pins (\ref ioport_direction)\r
+ */\r
+static inline void ioport_set_port_dir(ioport_port_t port,\r
+               ioport_port_mask_t mask, enum ioport_direction dir)\r
+{\r
+       arch_ioport_set_port_dir(port, mask, dir);\r
+}\r
+\r
+/**\r
+ * \brief Set direction for a single IOPORT pin.\r
+ *\r
+ * \param pin IOPORT pin to configure\r
+ * \param dir Direction to set for the specified pin (\ref ioport_direction)\r
+ */\r
+static inline void ioport_set_pin_dir(ioport_pin_t pin,\r
+               enum ioport_direction dir)\r
+{\r
+       arch_ioport_set_pin_dir(pin, dir);\r
+}\r
+\r
+/**\r
+ * \brief Set an IOPORT pin to a specified logical value.\r
+ *\r
+ * \param pin IOPORT pin to configure\r
+ * \param level Logical value of the pin\r
+ */\r
+static inline void ioport_set_pin_level(ioport_pin_t pin, bool level)\r
+{\r
+       arch_ioport_set_pin_level(pin, level);\r
+}\r
+\r
+/**\r
+ * \brief Set a group of IOPORT pins in a single port to a specified logical\r
+ * value.\r
+ *\r
+ * \param port IOPORT port to write to\r
+ * \param mask Pin mask of pins to modify\r
+ * \param level Level of the pins to be modified\r
+ */\r
+static inline void ioport_set_port_level(ioport_port_t port,\r
+               ioport_port_mask_t mask, ioport_port_mask_t level)\r
+{\r
+       arch_ioport_set_port_level(port, mask, level);\r
+}\r
+\r
+/**\r
+ * \brief Get current value of an IOPORT pin, which has been configured as an\r
+ * input.\r
+ *\r
+ * \param pin IOPORT pin to read\r
+ * \return Current logical value of the specified pin\r
+ */\r
+static inline bool ioport_get_pin_level(ioport_pin_t pin)\r
+{\r
+       return arch_ioport_get_pin_level(pin);\r
+}\r
+\r
+/**\r
+ * \brief Get current value of several IOPORT pins in a single port, which have\r
+ * been configured as an inputs.\r
+ *\r
+ * \param port IOPORT port to read\r
+ * \param mask Pin mask of pins to read\r
+ * \return Logical levels of the specified pins from the read port, returned as\r
+ * a mask.\r
+ */\r
+static inline ioport_port_mask_t ioport_get_port_level(ioport_pin_t port,\r
+               ioport_port_mask_t mask)\r
+{\r
+       return arch_ioport_get_port_level(port, mask);\r
+}\r
+\r
+/**\r
+ * \brief Toggle the value of an IOPORT pin, which has previously configured as\r
+ * an output.\r
+ *\r
+ * \param pin IOPORT pin to toggle\r
+ */\r
+static inline void ioport_toggle_pin_level(ioport_pin_t pin)\r
+{\r
+       arch_ioport_toggle_pin_level(pin);\r
+}\r
+\r
+/**\r
+ * \brief Toggle the values of several IOPORT pins located in a single port.\r
+ *\r
+ * \param port IOPORT port to modify\r
+ * \param mask Pin mask of pins to toggle\r
+ */\r
+static inline void ioport_toggle_port_level(ioport_port_t port,\r
+               ioport_port_mask_t mask)\r
+{\r
+       arch_ioport_toggle_port_level(port, mask);\r
+}\r
+\r
+/**\r
+ * \brief Set the pin sense mode of a single IOPORT pin.\r
+ *\r
+ * \param pin IOPORT pin to configure\r
+ * \param pin_sense Edge to sense for the pin (\ref ioport_sense)\r
+ */\r
+static inline void ioport_set_pin_sense_mode(ioport_pin_t pin,\r
+               enum ioport_sense pin_sense)\r
+{\r
+       arch_ioport_set_pin_sense_mode(pin, pin_sense);\r
+}\r
+\r
+/**\r
+ * \brief Set the pin sense mode of a multiple IOPORT pins on a single port.\r
+ *\r
+ * \param port IOPORT port to configure\r
+ * \param mask Bitmask if pins whose edge sense is to be configured\r
+ * \param pin_sense Edge to sense for the pins (\ref ioport_sense)\r
+ */\r
+static inline void ioport_set_port_sense_mode(ioport_port_t port,\r
+               ioport_port_mask_t mask,\r
+               enum ioport_sense pin_sense)\r
+{\r
+       arch_ioport_set_port_sense_mode(port, mask, pin_sense);\r
+}\r
+\r
+/**\r
+ * \brief Convert a pin ID into a its port ID.\r
+ *\r
+ * \param pin IOPORT pin ID to convert\r
+ * \retval Port ID for the given pin ID\r
+ */\r
+static inline ioport_port_t ioport_pin_to_port_id(ioport_pin_t pin)\r
+{\r
+       return arch_ioport_pin_to_port_id(pin);\r
+}\r
+\r
+/**\r
+ * \brief Convert a pin ID into a bitmask mask for the given pin on its port.\r
+ *\r
+ * \param pin IOPORT pin ID to convert\r
+ * \retval Bitmask with a bit set that corresponds to the given pin ID in its port\r
+ */\r
+static inline ioport_port_mask_t ioport_pin_to_mask(ioport_pin_t pin)\r
+{\r
+       return arch_ioport_pin_to_mask(pin);\r
+}\r
+\r
+/** @} */\r
+\r
+/**\r
+ * \page ioport_quickstart Quick start guide for the common IOPORT service\r
+ *\r
+ * This is the quick start guide for the \ref ioport_group, with\r
+ * step-by-step instructions on how to configure and use the service in a\r
+ * selection of use cases.\r
+ *\r
+ * The use cases contain several code fragments. The code fragments in the\r
+ * steps for setup can be copied into a custom initialization function, while\r
+ * the steps for usage can be copied into, e.g., the main application function.\r
+ *\r
+ * \section ioport_quickstart_basic Basic use case\r
+ * In this use case we will configure one IO pin for button input and one for\r
+ * LED control. Then it will read the button state and output it on the LED.\r
+ *\r
+ * \section ioport_quickstart_basic_setup Setup steps\r
+ *\r
+ * \subsection ioport_quickstart_basic_setup_code Example code\r
+ * \code\r
+ * #define MY_LED    IOPORT_CREATE_PIN(PORTA, 5)\r
+ * #define MY_BUTTON IOPORT_CREATE_PIN(PORTA, 6)\r
+ *\r
+ * ioport_init();\r
+ *\r
+ * ioport_set_pin_dir(MY_LED, IOPORT_DIR_OUTPUT);\r
+ * ioport_set_pin_dir(MY_BUTTON, IOPORT_DIR_INPUT);\r
+ * ioport_set_pin_mode(MY_BUTTON, IOPORT_MODE_PULLUP);\r
+ * \endcode\r
+ *\r
+ * \subsection ioport_quickstart_basic_setup_flow Workflow\r
+ * -# It's useful to give the GPIOs symbolic names and this can be done with\r
+ *    the \ref IOPORT_CREATE_PIN macro. We define one for a LED and one for a\r
+ *    button.\r
+ *   - \code\r
+ *     #define MY_LED    IOPORT_CREATE_PIN(PORTA, 5)\r
+ *     #define MY_BUTTON IOPORT_CREATE_PIN(PORTA, 6)\r
+ *     \endcode\r
+ *   - \note The usefulness of the \ref IOPORT_CREATE_PIN macro and port names\r
+ *           differ between architectures:\r
+ *     - MEGA, MEGA_RF and XMEGA: Use \ref IOPORT_CREATE_PIN macro with port definitions\r
+ *              PORTA, PORTB ...\r
+ *     - UC3: Most convenient to pick up the device header file pin definition\r
+ *            and us it directly. E.g.: AVR32_PIN_PB06\r
+ *     - SAM: Most convenient to pick up the device header file pin definition\r
+ *            and us it directly. E.g.: PIO_PA5_IDX<br>\r
+ *            \ref IOPORT_CREATE_PIN can also be used with port definitions\r
+ *            PIOA, PIOB ...\r
+ * -# Initialize the ioport service. This typically enables the IO module if\r
+ *    needed.\r
+ *   - \code ioport_init(); \endcode\r
+ * -# Set the LED GPIO as output:\r
+ *   - \code ioport_set_pin_dir(MY_LED, IOPORT_DIR_OUTPUT); \endcode\r
+ * -# Set the button GPIO as input:\r
+ *   - \code ioport_set_pin_dir(MY_BUTTON, IOPORT_DIR_INPUT); \endcode\r
+ * -# Enable pull-up for the button GPIO:\r
+ *   - \code ioport_set_pin_mode(MY_BUTTON, IOPORT_MODE_PULLUP); \endcode\r
+ *\r
+ * \section ioport_quickstart_basic_usage Usage steps\r
+ *\r
+ * \subsection ioport_quickstart_basic_usage_code Example code\r
+ * \code\r
+ * bool value;\r
+ *\r
+ * value = ioport_get_pin_level(MY_BUTTON);\r
+ * ioport_set_pin_level(MY_LED, value);\r
+ * \endcode\r
+ *\r
+ * \subsection ioport_quickstart_basic_usage_flow Workflow\r
+ * -# Define a boolean variable for state storage:\r
+ *   - \code bool value; \endcode\r
+ * -# Read out the button level into variable value:\r
+ *   - \code value = ioport_get_pin_level(MY_BUTTON); \endcode\r
+ * -# Set the LED to read out value from the button:\r
+ *   - \code ioport_set_pin_level(MY_LED, value); \endcode\r
+ *\r
+ * \section ioport_quickstart_advanced Advanced use cases\r
+ * - \subpage ioport_quickstart_use_case_1 : Port access\r
+ */\r
+\r
+/**\r
+ * \page ioport_quickstart_use_case_1 Advanced use case doing port access\r
+ *\r
+ * In this case we will read out the pins from one whole port and write the\r
+ * read value to another port.\r
+ *\r
+ * \section ioport_quickstart_use_case_1_setup Setup steps\r
+ *\r
+ * \subsection ioport_quickstart_use_case_1_setup_code Example code\r
+ * \code\r
+ * #define IN_PORT  IOPORT_PORTA\r
+ * #define OUT_PORT IOPORT_PORTB\r
+ * #define MASK     0x00000060\r
+ *\r
+ * ioport_init();\r
+ *\r
+ * ioport_set_port_dir(IN_PORT, MASK, IOPORT_DIR_INPUT);\r
+ * ioport_set_port_dir(OUT_PORT, MASK, IOPORT_DIR_OUTPUT);\r
+ * \endcode\r
+ *\r
+ * \subsection ioport_quickstart_basic_setup_flow Workflow\r
+ * -# It's useful to give the ports symbolic names:\r
+ *   - \code\r
+ *     #define IN_PORT  IOPORT_PORTA\r
+ *     #define OUT_PORT IOPORT_PORTB\r
+ *     \endcode\r
+ *   - \note The port names differ between architectures:\r
+ *     - MEGA_RF, MEGA and XMEGA: There are predefined names for ports: IOPORT_PORTA,\r
+ *              IOPORT_PORTB ...\r
+ *     - UC3: Use the index value of the different IO blocks: 0, 1 ...\r
+ *     - SAM: There are predefined names for ports: IOPORT_PIOA, IOPORT_PIOB\r
+ *            ...\r
+ * -# Also useful to define a mask for the bits to work with:\r
+ *     - \code #define MASK     0x00000060 \endcode\r
+ * -# Initialize the ioport service. This typically enables the IO module if\r
+ *    needed.\r
+ *   - \code ioport_init(); \endcode\r
+ * -# Set one of the ports as input:\r
+ *   - \code ioport_set_pin_dir(IN_PORT, MASK, IOPORT_DIR_INPUT); \endcode\r
+ * -# Set the other port as output:\r
+ *   - \code ioport_set_pin_dir(OUT_PORT, MASK, IOPORT_DIR_OUTPUT); \endcode\r
+ *\r
+ * \section ioport_quickstart_basic_usage Usage steps\r
+ *\r
+ * \subsection ioport_quickstart_basic_usage_code Example code\r
+ * \code\r
+ * ioport_port_mask_t value;\r
+ *\r
+ * value = ioport_get_port_level(IN_PORT, MASK);\r
+ * ioport_set_port_level(OUT_PORT, MASK, value);\r
+ * \endcode\r
+ *\r
+ * \subsection ioport_quickstart_basic_usage_flow Workflow\r
+ * -# Define a variable for port date storage:\r
+ *   - \code ioport_port_mask_t value; \endcode\r
+ * -# Read out from one port:\r
+ *   - \code value = ioport_get_port_level(IN_PORT, MASK); \endcode\r
+ * -# Put the read data out on the other port:\r
+ *   - \code ioport_set_port_level(OUT_PORT, MASK, value); \endcode\r
+ */\r
+\r
+#ifdef __cplusplus\r
+}\r
+#endif\r
+\r
+#endif /* IOPORT_H */\r
diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/asf/common/services/ioport/sam/ioport_gpio.h b/FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/asf/common/services/ioport/sam/ioport_gpio.h
new file mode 100644 (file)
index 0000000..934bf67
--- /dev/null
@@ -0,0 +1,302 @@
+/**\r
+ * \file\r
+ *\r
+ * \brief SAM architecture specific IOPORT service implementation header file.\r
+ *\r
+ * Copyright (c) 2012-2013 Atmel Corporation. All rights reserved.\r
+ *\r
+ * \asf_license_start\r
+ *\r
+ * \page License\r
+ *\r
+ * Redistribution and use in source and binary forms, with or without\r
+ * modification, are permitted provided that the following conditions are met:\r
+ *\r
+ * 1. Redistributions of source code must retain the above copyright notice,\r
+ *    this list of conditions and the following disclaimer.\r
+ *\r
+ * 2. Redistributions in binary form must reproduce the above copyright notice,\r
+ *    this list of conditions and the following disclaimer in the documentation\r
+ *    and/or other materials provided with the distribution.\r
+ *\r
+ * 3. The name of Atmel may not be used to endorse or promote products derived\r
+ *    from this software without specific prior written permission.\r
+ *\r
+ * 4. This software may only be redistributed and used in connection with an\r
+ *    Atmel microcontroller product.\r
+ *\r
+ * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED\r
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\r
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE\r
+ * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR\r
+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\r
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS\r
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)\r
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,\r
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\r
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\r
+ * POSSIBILITY OF SUCH DAMAGE.\r
+ *\r
+ * \asf_license_stop\r
+ *\r
+ */\r
+#ifndef IOPORT_SAM_H\r
+#define IOPORT_SAM_H\r
+\r
+#include <sysclk.h>\r
+\r
+#define IOPORT_CREATE_PIN(port, pin) ((port) * 32 + (pin))\r
+\r
+// Aliases\r
+#define IOPORT_GPIOA     0\r
+#define IOPORT_GPIOB     1\r
+#define IOPORT_GPIOC     2\r
+#define IOPORT_GPIOD     3\r
+#define IOPORT_GPIOE     4\r
+#define IOPORT_GPIOF     5\r
+\r
+/**\r
+ * \weakgroup ioport_group\r
+ * \section ioport_modes IOPORT Modes\r
+ *\r
+ * For details on these please see the device datasheet.\r
+ *\r
+ * @{\r
+ */\r
+\r
+/** \name IOPORT Mode bit definitions */\r
+/** @{ */\r
+#define IOPORT_MODE_MUX_MASK            (7 << 0) /*!< MUX bits mask */\r
+#define IOPORT_MODE_MUX_BIT0            (1 << 0) /*!< MUX BIT0 mask */\r
+#define IOPORT_MODE_MUX_BIT1            (1 << 1) /*!< MUX BIT1 mask */\r
+#define IOPORT_MODE_MUX_A               (0 << 0) /*!< MUX function A */\r
+#define IOPORT_MODE_MUX_B               (1 << 0) /*!< MUX function B */\r
+#define IOPORT_MODE_MUX_C               (2 << 0) /*!< MUX function C */\r
+#define IOPORT_MODE_MUX_D               (3 << 0) /*!< MUX function D */\r
+\r
+#define IOPORT_MODE_MUX_BIT2            (1 << 2) /*!< MUX BIT2 mask */\r
+#define IOPORT_MODE_MUX_E               (4 << 0) /*!< MUX function E */\r
+#define IOPORT_MODE_MUX_F               (5 << 0) /*!< MUX function F */\r
+#define IOPORT_MODE_MUX_G               (6 << 0) /*!< MUX function G */\r
+#define IOPORT_MODE_MUX_H               (7 << 0) /*!< MUX function H */\r
+\r
+#define IOPORT_MODE_PULLUP              (1 << 3) /*!< Pull-up */\r
+#define IOPORT_MODE_PULLDOWN            (1 << 4) /*!< Pull-down */\r
+#define IOPORT_MODE_GLITCH_FILTER       (1 << 6) /*!< Glitch filter */\r
+#define IOPORT_MODE_DRIVE_STRENGTH      (1 << 7) /*!< Extra drive strength */\r
+/** @} */\r
+\r
+/** @} */\r
+\r
+typedef uint32_t ioport_mode_t;\r
+typedef uint32_t ioport_pin_t;\r
+typedef uint32_t ioport_port_t;\r
+typedef uint32_t ioport_port_mask_t;\r
+\r
+__always_inline static ioport_port_t arch_ioport_pin_to_port_id(ioport_pin_t pin)\r
+{\r
+       return pin >> 5;\r
+}\r
+\r
+__always_inline static volatile GpioPort *arch_ioport_port_to_base(\r
+               ioport_port_t port)\r
+{\r
+       return (volatile GpioPort *)(GPIO_ADDR\r
+               + port * sizeof(GpioPort));\r
+}\r
+\r
+__always_inline static volatile GpioPort *arch_ioport_pin_to_base(ioport_pin_t pin)\r
+{\r
+       return arch_ioport_port_to_base(arch_ioport_pin_to_port_id(pin));\r
+}\r
+\r
+__always_inline static ioport_port_mask_t arch_ioport_pin_to_mask(ioport_pin_t pin)\r
+{\r
+       return 1U << (pin & 0x1F);\r
+}\r
+\r
+__always_inline static void arch_ioport_init(void)\r
+{\r
+       sysclk_enable_peripheral_clock(GPIO);\r
+}\r
+\r
+__always_inline static void arch_ioport_enable_port(ioport_port_t port,\r
+               ioport_port_mask_t mask)\r
+{\r
+       arch_ioport_port_to_base(port)->GPIO_GPERS = mask;\r
+}\r
+\r
+__always_inline static void arch_ioport_disable_port(ioport_port_t port,\r
+               ioport_port_mask_t mask)\r
+{\r
+       arch_ioport_port_to_base(port)->GPIO_GPERC = mask;\r
+}\r
+\r
+__always_inline static void arch_ioport_enable_pin(ioport_pin_t pin)\r
+{\r
+       arch_ioport_enable_port(arch_ioport_pin_to_port_id(pin),\r
+                       arch_ioport_pin_to_mask(pin));\r
+}\r
+\r
+__always_inline static void arch_ioport_disable_pin(ioport_pin_t pin)\r
+{\r
+       arch_ioport_disable_port(arch_ioport_pin_to_port_id(pin),\r
+                       arch_ioport_pin_to_mask(pin));\r
+}\r
+\r
+__always_inline static void arch_ioport_set_port_mode(ioport_port_t port,\r
+               ioport_port_mask_t mask, ioport_mode_t mode)\r
+{\r
+       volatile GpioPort *base = arch_ioport_port_to_base(port);\r
+\r
+       if (mode & IOPORT_MODE_PULLUP) {\r
+               base->GPIO_PUERS = mask;\r
+       } else {\r
+               base->GPIO_PUERC = mask;\r
+       }\r
+\r
+#ifdef IOPORT_MODE_PULLDOWN\r
+       if (mode & IOPORT_MODE_PULLDOWN) {\r
+               base->GPIO_PDERS = mask;\r
+       } else {\r
+               base->GPIO_PDERC = mask;\r
+       }\r
+#endif\r
+\r
+       if (mode & IOPORT_MODE_GLITCH_FILTER) {\r
+               base->GPIO_GFERS = mask;\r
+       } else {\r
+               base->GPIO_GFERC = mask;\r
+       }\r
+\r
+#ifdef IOPORT_MODE_DRIVE_STRENGTH\r
+       if (mode & IOPORT_MODE_DRIVE_STRENGTH) {\r
+               base->GPIO_ODCR0S = mask;\r
+       } else {\r
+               base->GPIO_ODCR0C = mask;\r
+       }\r
+#endif\r
+\r
+       if (mode & IOPORT_MODE_MUX_BIT0) {\r
+               base->GPIO_PMR0S = mask;\r
+       } else {\r
+               base->GPIO_PMR0C = mask;\r
+       }\r
+\r
+       if (mode & IOPORT_MODE_MUX_BIT1) {\r
+               base->GPIO_PMR1S = mask;\r
+       } else {\r
+               base->GPIO_PMR1C = mask;\r
+       }\r
+\r
+#ifdef IOPORT_MODE_MUX_BIT2\r
+       if (mode & IOPORT_MODE_MUX_BIT2) {\r
+               base->GPIO_PMR2S = mask;\r
+       } else {\r
+               base->GPIO_PMR2C = mask;\r
+       }\r
+#endif\r
+}\r
+\r
+__always_inline static void arch_ioport_set_pin_mode(ioport_pin_t pin,\r
+               ioport_mode_t mode)\r
+{\r
+       arch_ioport_set_port_mode(arch_ioport_pin_to_port_id(pin),\r
+                       arch_ioport_pin_to_mask(pin), mode);\r
+}\r
+\r
+__always_inline static void arch_ioport_set_port_dir(ioport_port_t port,\r
+               ioport_port_mask_t mask, unsigned char group_direction)\r
+{\r
+       if (group_direction == IOPORT_DIR_OUTPUT) {\r
+               arch_ioport_port_to_base(port)->GPIO_ODERS = mask;\r
+               // Always disable the Schmitt trigger for output pins.\r
+               arch_ioport_port_to_base(port)->GPIO_STERC = mask;\r
+       } else if (group_direction == IOPORT_DIR_INPUT) {\r
+               arch_ioport_port_to_base(port)->GPIO_ODERC = mask;\r
+               // Always enable the Schmitt trigger for input pins.\r
+               arch_ioport_port_to_base(port)->GPIO_STERS = mask;\r
+       }\r
+}\r
+\r
+__always_inline static void arch_ioport_set_pin_dir(ioport_pin_t pin,\r
+               enum ioport_direction dir)\r
+{\r
+       if (dir == IOPORT_DIR_OUTPUT) {\r
+               arch_ioport_pin_to_base(pin)->GPIO_ODERS = arch_ioport_pin_to_mask(pin);\r
+               // Always disable the Schmitt trigger for output pins.\r
+               arch_ioport_pin_to_base(pin)->GPIO_STERC = arch_ioport_pin_to_mask(pin);\r
+       } else if (dir == IOPORT_DIR_INPUT) {\r
+               arch_ioport_pin_to_base(pin)->GPIO_ODERC = arch_ioport_pin_to_mask(pin);\r
+               // Always enable the Schmitt trigger for input pins.\r
+               arch_ioport_pin_to_base(pin)->GPIO_STERS = arch_ioport_pin_to_mask(pin);\r
+       }\r
+}\r
+\r
+__always_inline static void arch_ioport_set_pin_level(ioport_pin_t pin,\r
+               bool level)\r
+{\r
+       if (level) {\r
+               arch_ioport_pin_to_base(pin)->GPIO_OVRS = arch_ioport_pin_to_mask(pin);\r
+       } else {\r
+               arch_ioport_pin_to_base(pin)->GPIO_OVRC = arch_ioport_pin_to_mask(pin);\r
+       }\r
+}\r
+\r
+__always_inline static void arch_ioport_set_port_level(ioport_port_t port,\r
+               ioport_port_mask_t mask, ioport_port_mask_t level)\r
+{\r
+       volatile GpioPort *base = arch_ioport_port_to_base(port);\r
+\r
+       base->GPIO_OVRS = mask & level;\r
+       base->GPIO_OVRC = mask & ~level;\r
+}\r
+\r
+__always_inline static bool arch_ioport_get_pin_level(ioport_pin_t pin)\r
+{\r
+       return arch_ioport_pin_to_base(pin)->GPIO_PVR & arch_ioport_pin_to_mask(pin);\r
+}\r
+\r
+__always_inline static ioport_port_mask_t arch_ioport_get_port_level(\r
+               ioport_port_t port, ioport_port_mask_t mask)\r
+{\r
+       return arch_ioport_port_to_base(port)->GPIO_PVR & mask;\r
+}\r
+\r
+__always_inline static void arch_ioport_toggle_pin_level(ioport_pin_t pin)\r
+{\r
+       arch_ioport_pin_to_base(pin)->GPIO_OVRT = arch_ioport_pin_to_mask(pin);\r
+}\r
+\r
+__always_inline static void arch_ioport_toggle_port_level(ioport_port_t port,\r
+               ioport_port_mask_t mask)\r
+{\r
+       arch_ioport_port_to_base(port)->GPIO_OVRT = mask;\r
+}\r
+\r
+__always_inline static void arch_ioport_set_port_sense_mode(ioport_port_t port,\r
+               ioport_port_mask_t mask, enum ioport_sense pin_sense)\r
+{\r
+       volatile GpioPort *base = arch_ioport_port_to_base(port);\r
+\r
+       if (pin_sense & 0x01) {\r
+               base->GPIO_IMR0S = mask;\r
+       } else {\r
+               base->GPIO_IMR0C = mask;\r
+       }\r
+\r
+       if (pin_sense & 0x02) {\r
+               base->GPIO_IMR1S = mask;\r
+       } else {\r
+               base->GPIO_IMR1C = mask;\r
+       }\r
+}\r
+\r
+__always_inline static void arch_ioport_set_pin_sense_mode(ioport_pin_t pin,\r
+               enum ioport_sense pin_sense)\r
+{\r
+       arch_ioport_set_port_sense_mode(arch_ioport_pin_to_port_id(pin),\r
+                       arch_ioport_pin_to_mask(pin), pin_sense);\r
+}\r
+\r
+#endif /* IOPORT_SAM_H */\r
diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/asf/common/services/sleepmgr/sam4l/sleepmgr.c b/FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/asf/common/services/sleepmgr/sam4l/sleepmgr.c
new file mode 100644 (file)
index 0000000..453f411
--- /dev/null
@@ -0,0 +1,50 @@
+/**\r
+ * \file\r
+ *\r
+ * \brief Chip-specific sleep manager configuration\r
+ *\r
+ * Copyright (c) 2012 Atmel Corporation. All rights reserved.\r
+ *\r
+ * \asf_license_start\r
+ *\r
+ * \page License\r
+ *\r
+ * Redistribution and use in source and binary forms, with or without\r
+ * modification, are permitted provided that the following conditions are met:\r
+ *\r
+ * 1. Redistributions of source code must retain the above copyright notice,\r
+ *    this list of conditions and the following disclaimer.\r
+ *\r
+ * 2. Redistributions in binary form must reproduce the above copyright notice,\r
+ *    this list of conditions and the following disclaimer in the documentation\r
+ *    and/or other materials provided with the distribution.\r
+ *\r
+ * 3. The name of Atmel may not be used to endorse or promote products derived\r
+ *    from this software without specific prior written permission.\r
+ *\r
+ * 4. This software may only be redistributed and used in connection with an\r
+ *    Atmel microcontroller product.\r
+ *\r
+ * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED\r
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\r
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE\r
+ * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR\r
+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\r
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS\r
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)\r
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,\r
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\r
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\r
+ * POSSIBILITY OF SUCH DAMAGE.\r
+ *\r
+ * \asf_license_stop\r
+ *\r
+ */\r
+#include <compiler.h>\r
+#include <sleepmgr.h>\r
+\r
+#if defined(CONFIG_SLEEPMGR_ENABLE) || defined(__DOXYGEN__)\r
+\r
+uint8_t sleepmgr_locks[SLEEPMGR_NR_OF_MODES];\r
+\r
+#endif /* CONFIG_SLEEPMGR_ENABLE */\r
diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/asf/common/services/sleepmgr/sam4l/sleepmgr.h b/FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/asf/common/services/sleepmgr/sam4l/sleepmgr.h
new file mode 100644 (file)
index 0000000..c1ca20e
--- /dev/null
@@ -0,0 +1,124 @@
+/**\r
+ * \file\r
+ *\r
+ * \brief Chip-specific sleep manager configuration\r
+ *\r
+ * Copyright (c) 2012 - 2013 Atmel Corporation. All rights reserved.\r
+ *\r
+ * \asf_license_start\r
+ *\r
+ * \page License\r
+ *\r
+ * Redistribution and use in source and binary forms, with or without\r
+ * modification, are permitted provided that the following conditions are met:\r
+ *\r
+ * 1. Redistributions of source code must retain the above copyright notice,\r
+ *    this list of conditions and the following disclaimer.\r
+ *\r
+ * 2. Redistributions in binary form must reproduce the above copyright notice,\r
+ *    this list of conditions and the following disclaimer in the documentation\r
+ *    and/or other materials provided with the distribution.\r
+ *\r
+ * 3. The name of Atmel may not be used to endorse or promote products derived\r
+ *    from this software without specific prior written permission.\r
+ *\r
+ * 4. This software may only be redistributed and used in connection with an\r
+ *    Atmel microcontroller product.\r
+ *\r
+ * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED\r
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\r
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE\r
+ * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR\r
+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\r
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS\r
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)\r
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,\r
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\r
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\r
+ * POSSIBILITY OF SUCH DAMAGE.\r
+ *\r
+ * \asf_license_stop\r
+ *\r
+ */\r
+\r
+#ifndef SAM_SLEEPMGR_INCLUDED\r
+#define SAM_SLEEPMGR_INCLUDED\r
+\r
+#ifdef __cplusplus\r
+extern "C" {\r
+#endif\r
+\r
+#include <compiler.h>\r
+#include <conf_sleepmgr.h>\r
+#include <interrupt.h>\r
+#include "bpm.h"\r
+#include "sleep.h"\r
+\r
+/**\r
+ * \weakgroup sleepmgr_group\r
+ * @{\r
+ */\r
+\r
+enum sleepmgr_mode {\r
+       /** Active mode. */\r
+       SLEEPMGR_ACTIVE = 0,\r
+\r
+       /**\r
+        *  Sleep mode.\r
+        *  Potential Wake Up sources: fast startup events and interrupt.\r
+        */\r
+       SLEEPMGR_SLEEP_0,\r
+       SLEEPMGR_SLEEP_1,\r
+       SLEEPMGR_SLEEP_2,\r
+       SLEEPMGR_SLEEP_3,\r
+\r
+       /**\r
+        *  Wait mode.\r
+        *  Potential Wake Up sources: fast startup events\r
+        */\r
+       SLEEPMGR_WAIT,\r
+\r
+       /**\r
+        *  Retention mode.\r
+        *  Potential Wake Up sources: fast startup events\r
+        */\r
+       SLEEPMGR_RET,\r
+\r
+       /** Backup mode. Potential Wake Up sources: WKUPs, SM, RTT, RTC. */\r
+       SLEEPMGR_BACKUP,\r
+\r
+       SLEEPMGR_NR_OF_MODES,\r
+};\r
+\r
+/**\r
+ * \internal\r
+ * \name Internal arrays\r
+ * @{\r
+ */\r
+#if defined(CONFIG_SLEEPMGR_ENABLE) || defined(__DOXYGEN__)\r
+/** Sleep mode lock counters */\r
+extern uint8_t sleepmgr_locks[];\r
+#endif /* CONFIG_SLEEPMGR_ENABLE */\r
+/** @} */\r
+\r
+static inline void sleepmgr_sleep(const enum sleepmgr_mode sleep_mode)\r
+{\r
+       Assert(sleep_mode != SLEEPMGR_ACTIVE);\r
+#ifdef CONFIG_SLEEPMGR_ENABLE\r
+       cpu_irq_disable();\r
+\r
+       /* Enter the sleep mode. */\r
+       bpm_sleep(BPM, sleep_mode);\r
+#else\r
+       UNUSED(sleep_mode);\r
+       cpu_irq_enable();\r
+#endif /* CONFIG_SLEEPMGR_ENABLE */\r
+}\r
+\r
+/** @} */\r
+\r
+#ifdef __cplusplus\r
+}\r
+#endif\r
+\r
+#endif /* SAM_SLEEPMGR_INCLUDED */\r
diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/asf/common/services/sleepmgr/sleepmgr.h b/FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/asf/common/services/sleepmgr/sleepmgr.h
new file mode 100644 (file)
index 0000000..a5d6d42
--- /dev/null
@@ -0,0 +1,244 @@
+/**\r
+ * \file\r
+ *\r
+ * \brief Sleep manager\r
+ *\r
+ * Copyright (c) 2010 - 2013 Atmel Corporation. All rights reserved.\r
+ *\r
+ * \asf_license_start\r
+ *\r
+ * \page License\r
+ *\r
+ * Redistribution and use in source and binary forms, with or without\r
+ * modification, are permitted provided that the following conditions are met:\r
+ *\r
+ * 1. Redistributions of source code must retain the above copyright notice,\r
+ *    this list of conditions and the following disclaimer.\r
+ *\r
+ * 2. Redistributions in binary form must reproduce the above copyright notice,\r
+ *    this list of conditions and the following disclaimer in the documentation\r
+ *    and/or other materials provided with the distribution.\r
+ *\r
+ * 3. The name of Atmel may not be used to endorse or promote products derived\r
+ *    from this software without specific prior written permission.\r
+ *\r
+ * 4. This software may only be redistributed and used in connection with an\r
+ *    Atmel microcontroller product.\r
+ *\r
+ * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED\r
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\r
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE\r
+ * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR\r
+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\r
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS\r
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)\r
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,\r
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\r
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\r
+ * POSSIBILITY OF SUCH DAMAGE.\r
+ *\r
+ * \asf_license_stop\r
+ *\r
+ */\r
+#ifndef SLEEPMGR_H\r
+#define SLEEPMGR_H\r
+\r
+#include <compiler.h>\r
+#include <parts.h>\r
+\r
+#if (SAM3S || SAM3U || SAM3N || SAM3XA || SAM4S || SAM4E)\r
+# include "sam/sleepmgr.h"\r
+#elif XMEGA\r
+# include "xmega/sleepmgr.h"\r
+#elif UC3\r
+# include "uc3/sleepmgr.h"\r
+#elif SAM4L\r
+# include "sam4l/sleepmgr.h"\r
+#else\r
+# error Unsupported device.\r
+#endif\r
+\r
+/**\r
+ * \defgroup sleepmgr_group Sleep manager\r
+ *\r
+ * The sleep manager is a service for ensuring that the device is not put to\r
+ * sleep in deeper sleep modes than the system (e.g., peripheral drivers,\r
+ * services or the application) allows at any given time.\r
+ *\r
+ * It is based on the use of lock counting for the individual sleep modes, and\r
+ * will put the device to sleep in the shallowest sleep mode that has a non-zero\r
+ * lock count. The drivers/services/application can change these counts by use\r
+ * of \ref sleepmgr_lock_mode and \ref sleepmgr_unlock_mode.\r
+ * Refer to \ref sleepmgr_mode for a list of the sleep modes available for\r
+ * locking, and the device datasheet for information on their effect.\r
+ *\r
+ * The application must supply the file \ref conf_sleepmgr.h.\r
+ *\r
+ * For the sleep manager to be enabled, the symbol \ref CONFIG_SLEEPMGR_ENABLE\r
+ * must be defined, e.g., in \ref conf_sleepmgr.h. If this symbol is not\r
+ * defined, the functions are replaced with dummy functions and no RAM is used.\r
+ *\r
+ * @{\r
+ */\r
+\r
+/**\r
+ * \def CONFIG_SLEEPMGR_ENABLE\r
+ * \brief Configuration symbol for enabling the sleep manager\r
+ *\r
+ * If this symbol is not defined, the functions of this service are replaced\r
+ * with dummy functions. This is useful for reducing code size and execution\r
+ * time if the sleep manager is not needed in the application.\r
+ *\r
+ * This symbol may be defined in \ref conf_sleepmgr.h.\r
+ */\r
+#if defined(__DOXYGEN__) && !defined(CONFIG_SLEEPMGR_ENABLE)\r
+#  define CONFIG_SLEEPMGR_ENABLE\r
+#endif\r
+\r
+/**\r
+ * \enum sleepmgr_mode\r
+ * \brief Sleep mode locks\r
+ *\r
+ * Identifiers for the different sleep mode locks.\r
+ */\r
+\r
+/**\r
+ * \brief Initialize the lock counts\r
+ *\r
+ * Sets all lock counts to 0, except the very last one, which is set to 1. This\r
+ * is done to simplify the algorithm for finding the deepest allowable sleep\r
+ * mode in \ref sleepmgr_enter_sleep.\r
+ */\r
+static inline void sleepmgr_init(void)\r
+{\r
+#ifdef CONFIG_SLEEPMGR_ENABLE\r
+       uint8_t i;\r
+\r
+       for (i = 0; i < SLEEPMGR_NR_OF_MODES - 1; i++) {\r
+               sleepmgr_locks[i] = 0;\r
+       }\r
+       sleepmgr_locks[SLEEPMGR_NR_OF_MODES - 1] = 1;\r
+#endif /* CONFIG_SLEEPMGR_ENABLE */\r
+}\r
+\r
+/**\r
+ * \brief Increase lock count for a sleep mode\r
+ *\r
+ * Increases the lock count for \a mode to ensure that the sleep manager does\r
+ * not put the device to sleep in the deeper sleep modes.\r
+ *\r
+ * \param mode Sleep mode to lock.\r
+ */\r
+static inline void sleepmgr_lock_mode(enum sleepmgr_mode mode)\r
+{\r
+#ifdef CONFIG_SLEEPMGR_ENABLE\r
+       irqflags_t flags;\r
+\r
+       Assert(sleepmgr_locks[mode] < 0xff);\r
+\r
+       // Enter a critical section\r
+       flags = cpu_irq_save();\r
+\r
+       ++sleepmgr_locks[mode];\r
+\r
+       // Leave the critical section\r
+       cpu_irq_restore(flags);\r
+#else\r
+       UNUSED(mode);\r
+#endif /* CONFIG_SLEEPMGR_ENABLE */\r
+}\r
+\r
+/**\r
+ * \brief Decrease lock count for a sleep mode\r
+ *\r
+ * Decreases the lock count for \a mode. If the lock count reaches 0, the sleep\r
+ * manager can put the device to sleep in the deeper sleep modes.\r
+ *\r
+ * \param mode Sleep mode to unlock.\r
+ */\r
+static inline void sleepmgr_unlock_mode(enum sleepmgr_mode mode)\r
+{\r
+#ifdef CONFIG_SLEEPMGR_ENABLE\r
+       irqflags_t flags;\r
+\r
+       Assert(sleepmgr_locks[mode]);\r
+\r
+       // Enter a critical section\r
+       flags = cpu_irq_save();\r
+\r
+       --sleepmgr_locks[mode];\r
+\r
+       // Leave the critical section\r
+       cpu_irq_restore(flags);\r
+#else\r
+       UNUSED(mode);\r
+#endif /* CONFIG_SLEEPMGR_ENABLE */\r
+}\r
+\r
+ /**\r
+ * \brief Retrieves the deepest allowable sleep mode\r
+ *\r
+ * Searches through the sleep mode lock counts, starting at the shallowest sleep\r
+ * mode, until the first non-zero lock count is found. The deepest allowable\r
+ * sleep mode is then returned.\r
+ */\r
+static inline enum sleepmgr_mode sleepmgr_get_sleep_mode(void)\r
+{\r
+       enum sleepmgr_mode sleep_mode = SLEEPMGR_ACTIVE;\r
+\r
+#ifdef CONFIG_SLEEPMGR_ENABLE\r
+       uint8_t *lock_ptr = sleepmgr_locks;\r
+\r
+       // Find first non-zero lock count, starting with the shallowest modes.\r
+       while (!(*lock_ptr)) {\r
+               lock_ptr++;\r
+               sleep_mode++;\r
+       }\r
+\r
+       // Catch the case where one too many sleepmgr_unlock_mode() call has been\r
+       // performed on the deepest sleep mode.\r
+       Assert((uintptr_t)(lock_ptr - sleepmgr_locks) < SLEEPMGR_NR_OF_MODES);\r
+\r
+#endif /* CONFIG_SLEEPMGR_ENABLE */\r
+\r
+       return sleep_mode;\r
+}\r
+\r
+/**\r
+ * \fn sleepmgr_enter_sleep\r
+ * \brief Go to sleep in the deepest allowed mode\r
+ *\r
+ * Searches through the sleep mode lock counts, starting at the shallowest sleep\r
+ * mode, until the first non-zero lock count is found. The device is then put to\r
+ * sleep in the sleep mode that corresponds to the lock.\r
+ *\r
+ * \note This function enables interrupts before going to sleep, and will leave\r
+ * them enabled upon return. This also applies if sleep is skipped due to ACTIVE\r
+ * mode being locked.\r
+ */\r
+\r
+static inline void sleepmgr_enter_sleep(void)\r
+{\r
+#ifdef CONFIG_SLEEPMGR_ENABLE\r
+       enum sleepmgr_mode sleep_mode;\r
+\r
+       cpu_irq_disable();\r
+\r
+       // Find the deepest allowable sleep mode\r
+       sleep_mode = sleepmgr_get_sleep_mode();\r
+       // Return right away if first mode (ACTIVE) is locked.\r
+       if (sleep_mode==SLEEPMGR_ACTIVE) {\r
+               cpu_irq_enable();\r
+               return;\r
+       }\r
+       // Enter the deepest allowable sleep mode with interrupts enabled\r
+       sleepmgr_sleep(sleep_mode);\r
+#else\r
+       cpu_irq_enable();\r
+#endif /* CONFIG_SLEEPMGR_ENABLE */\r
+}\r
+\r
+\r
+//! @}\r
+\r
+#endif /* SLEEPMGR_H */\r
diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/asf/common/utils/interrupt.h b/FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/asf/common/utils/interrupt.h
new file mode 100644 (file)
index 0000000..6368651
--- /dev/null
@@ -0,0 +1,139 @@
+/**\r
+ * \file\r
+ *\r
+ * \brief Global interrupt management for 8- and 32-bit AVR\r
+ *\r
+ * Copyright (c) 2010-2012 Atmel Corporation. All rights reserved.\r
+ *\r
+ * \asf_license_start\r
+ *\r
+ * \page License\r
+ *\r
+ * Redistribution and use in source and binary forms, with or without\r
+ * modification, are permitted provided that the following conditions are met:\r
+ *\r
+ * 1. Redistributions of source code must retain the above copyright notice,\r
+ *    this list of conditions and the following disclaimer.\r
+ *\r
+ * 2. Redistributions in binary form must reproduce the above copyright notice,\r
+ *    this list of conditions and the following disclaimer in the documentation\r
+ *    and/or other materials provided with the distribution.\r
+ *\r
+ * 3. The name of Atmel may not be used to endorse or promote products derived\r
+ *    from this software without specific prior written permission.\r
+ *\r
+ * 4. This software may only be redistributed and used in connection with an\r
+ *    Atmel microcontroller product.\r
+ *\r
+ * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED\r
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\r
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE\r
+ * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR\r
+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\r
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS\r
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)\r
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,\r
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\r
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\r
+ * POSSIBILITY OF SUCH DAMAGE.\r
+ *\r
+ * \asf_license_stop\r
+ *\r
+ */\r
+#ifndef UTILS_INTERRUPT_H\r
+#define UTILS_INTERRUPT_H\r
+\r
+#include <parts.h>\r
+\r
+#if XMEGA || MEGA || TINY\r
+#  include "interrupt/interrupt_avr8.h"\r
+#elif UC3\r
+#  include "interrupt/interrupt_avr32.h"\r
+#elif SAM3S || SAM3N || SAM3XA || SAM3U || SAM4S || SAM4L || SAM4E\r
+#  include "interrupt/interrupt_sam_nvic.h"\r
+#else\r
+#  error Unsupported device.\r
+#endif\r
+\r
+/**\r
+ * \defgroup interrupt_group Global interrupt management\r
+ *\r
+ * This is a driver for global enabling and disabling of interrupts.\r
+ *\r
+ * @{\r
+ */\r
+\r
+#if defined(__DOXYGEN__)\r
+/**\r
+ * \def CONFIG_INTERRUPT_FORCE_INTC\r
+ * \brief Force usage of the ASF INTC driver\r
+ *\r
+ * Predefine this symbol when preprocessing to force the use of the ASF INTC driver.\r
+ * This is useful to ensure compatibilty accross compilers and shall be used only when required\r
+ * by the application needs.\r
+ */\r
+#  define CONFIG_INTERRUPT_FORCE_INTC\r
+#endif\r
+\r
+//! \name Global interrupt flags\r
+//@{\r
+/**\r
+ * \typedef irqflags_t\r
+ * \brief Type used for holding state of interrupt flag\r
+ */\r
+\r
+/**\r
+ * \def cpu_irq_enable\r
+ * \brief Enable interrupts globally\r
+ */\r
+\r
+/**\r
+ * \def cpu_irq_disable\r
+ * \brief Disable interrupts globally\r
+ */\r
+\r
+/**\r
+ * \fn irqflags_t cpu_irq_save(void)\r
+ * \brief Get and clear the global interrupt flags\r
+ *\r
+ * Use in conjunction with \ref cpu_irq_restore.\r
+ *\r
+ * \return Current state of interrupt flags.\r
+ *\r
+ * \note This function leaves interrupts disabled.\r
+ */\r
+\r
+/**\r
+ * \fn void cpu_irq_restore(irqflags_t flags)\r
+ * \brief Restore global interrupt flags\r
+ *\r
+ * Use in conjunction with \ref cpu_irq_save.\r
+ *\r
+ * \param flags State to set interrupt flag to.\r
+ */\r
+\r
+/**\r
+ * \fn bool cpu_irq_is_enabled_flags(irqflags_t flags)\r
+ * \brief Check if interrupts are globally enabled in supplied flags\r
+ *\r
+ * \param flags Currents state of interrupt flags.\r
+ *\r
+ * \return True if interrupts are enabled.\r
+ */\r
+\r
+/**\r
+ * \def cpu_irq_is_enabled\r
+ * \brief Check if interrupts are globally enabled\r
+ *\r
+ * \return True if interrupts are enabled.\r
+ */\r
+//@}\r
+\r
+//! @}\r
+\r
+/**\r
+ * \ingroup interrupt_group\r
+ * \defgroup interrupt_deprecated_group Deprecated interrupt definitions\r
+ */\r
+\r
+#endif /* UTILS_INTERRUPT_H */\r
diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/asf/common/utils/interrupt/interrupt_sam_nvic.c b/FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/asf/common/utils/interrupt/interrupt_sam_nvic.c
new file mode 100644 (file)
index 0000000..a58826f
--- /dev/null
@@ -0,0 +1,47 @@
+/**\r
+ * \file\r
+ *\r
+ * \brief Global interrupt management for SAM3 and SAM4 (NVIC based)\r
+ *\r
+ * Copyright (c) 2012 Atmel Corporation. All rights reserved.\r
+ *\r
+ * \asf_license_start\r
+ *\r
+ * \page License\r
+ *\r
+ * Redistribution and use in source and binary forms, with or without\r
+ * modification, are permitted provided that the following conditions are met:\r
+ *\r
+ * 1. Redistributions of source code must retain the above copyright notice,\r
+ *    this list of conditions and the following disclaimer.\r
+ *\r
+ * 2. Redistributions in binary form must reproduce the above copyright notice,\r
+ *    this list of conditions and the following disclaimer in the documentation\r
+ *    and/or other materials provided with the distribution.\r
+ *\r
+ * 3. The name of Atmel may not be used to endorse or promote products derived\r
+ *    from this software without specific prior written permission.\r
+ *\r
+ * 4. This software may only be redistributed and used in connection with an\r
+ *    Atmel microcontroller product.\r
+ *\r
+ * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED\r
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\r
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE\r
+ * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR\r
+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\r
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS\r
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)\r
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,\r
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\r
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\r
+ * POSSIBILITY OF SUCH DAMAGE.\r
+ *\r
+ * \asf_license_stop\r
+ *\r
+ */\r
+\r
+#include "interrupt_sam_nvic.h"\r
+\r
+//! Global NVIC interrupt enable status (by default it's enabled)\r
+volatile bool g_interrupt_enabled = true;\r
diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/asf/common/utils/interrupt/interrupt_sam_nvic.h b/FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/asf/common/utils/interrupt/interrupt_sam_nvic.h
new file mode 100644 (file)
index 0000000..f032723
--- /dev/null
@@ -0,0 +1,169 @@
+/**\r
+ * \file\r
+ *\r
+ * \brief Global interrupt management for SAM3 and SAM4 (NVIC based)\r
+ *\r
+ * Copyright (c) 2012 Atmel Corporation. All rights reserved.\r
+ *\r
+ * \asf_license_start\r
+ *\r
+ * \page License\r
+ *\r
+ * Redistribution and use in source and binary forms, with or without\r
+ * modification, are permitted provided that the following conditions are met:\r
+ *\r
+ * 1. Redistributions of source code must retain the above copyright notice,\r
+ *    this list of conditions and the following disclaimer.\r
+ *\r
+ * 2. Redistributions in binary form must reproduce the above copyright notice,\r
+ *    this list of conditions and the following disclaimer in the documentation\r
+ *    and/or other materials provided with the distribution.\r
+ *\r
+ * 3. The name of Atmel may not be used to endorse or promote products derived\r
+ *    from this software without specific prior written permission.\r
+ *\r
+ * 4. This software may only be redistributed and used in connection with an\r
+ *    Atmel microcontroller product.\r
+ *\r
+ * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED\r
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\r
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE\r
+ * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR\r
+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\r
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS\r
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)\r
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,\r
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\r
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\r
+ * POSSIBILITY OF SUCH DAMAGE.\r
+ *\r
+ * \asf_license_stop\r
+ *\r
+ */\r
+\r
+#ifndef UTILS_INTERRUPT_INTERRUPT_H\r
+#define UTILS_INTERRUPT_INTERRUPT_H\r
+\r
+#include <compiler.h>\r
+#include <parts.h>\r
+\r
+/**\r
+ * \weakgroup interrupt_group\r
+ *\r
+ * @{\r
+ */\r
+\r
+/**\r
+ * \name Interrupt Service Routine definition\r
+ *\r
+ * @{\r
+ */\r
+\r
+/**\r
+ * \brief Define service routine\r
+ *\r
+ * \note For NVIC devices the interrupt service routines are predefined to\r
+ *       add to vector table in binary generation, so there is no service\r
+ *       register at run time. The routine collections are in exceptions.h.\r
+ *\r
+ * Usage:\r
+ * \code\r
+ * ISR(foo_irq_handler)\r
+ * {\r
+ *      // Function definition\r
+ *      ...\r
+ * }\r
+ * \endcode\r
+ *\r
+ * \param func Name for the function.\r
+ */\r
+#  define ISR(func)   \\r
+       void func (void)\r
+\r
+/**\r
+ * \brief Initialize interrupt vectors\r
+ *\r
+ * For NVIC the interrupt vectors are put in vector table. So nothing\r
+ * to do to initialize them, except defined the vector function with\r
+ * right name.\r
+ *\r
+ * This must be called prior to \ref irq_register_handler.\r
+ */\r
+#  define irq_initialize_vectors()   \\r
+       do {                             \\r
+       } while(0)\r
+\r
+/**\r
+ * \brief Register handler for interrupt\r
+ *\r
+ * For NVIC the interrupt vectors are put in vector table. So nothing\r
+ * to do to register them, except defined the vector function with\r
+ * right name.\r
+ *\r
+ * Usage:\r
+ * \code\r
+ * irq_initialize_vectors();\r
+ * irq_register_handler(foo_irq_handler);\r
+ * \endcode\r
+ *\r
+ * \note The function \a func must be defined with the \ref ISR macro.\r
+ * \note The functions prototypes can be found in the device exception header\r
+ *       files (exceptions.h).\r
+ */\r
+#  define irq_register_handler(int_num, int_prio)                      \\r
+       NVIC_ClearPendingIRQ(    (IRQn_Type)int_num);                      \\r
+       NVIC_SetPriority(    (IRQn_Type)int_num, int_prio);                \\r
+       NVIC_EnableIRQ(      (IRQn_Type)int_num);                          \\r
+\r
+//@}\r
+\r
+#  define cpu_irq_enable()                     \\r
+       do {                                       \\r
+               g_interrupt_enabled = true;            \\r
+               __DMB();                               \\r
+               __enable_irq();                        \\r
+       } while (0)\r
+#  define cpu_irq_disable()                    \\r
+       do {                                       \\r
+               __disable_irq();                       \\r
+               __DMB();                               \\r
+               g_interrupt_enabled = false;           \\r
+       } while (0)\r
+\r
+typedef uint32_t irqflags_t;\r
+extern volatile bool g_interrupt_enabled;\r
+\r
+static inline irqflags_t cpu_irq_save(void)\r
+{\r
+       irqflags_t flags = g_interrupt_enabled;\r
+       cpu_irq_disable();\r
+       return flags;\r
+}\r
+\r
+static inline bool cpu_irq_is_enabled_flags(irqflags_t flags)\r
+{\r
+       return (flags);\r
+}\r
+\r
+static inline void cpu_irq_restore(irqflags_t flags)\r
+{\r
+       if (cpu_irq_is_enabled_flags(flags))\r
+               cpu_irq_enable();\r
+}\r
+\r
+#define cpu_irq_is_enabled()    g_interrupt_enabled\r
+\r
+/**\r
+ * \weakgroup interrupt_deprecated_group\r
+ * @{\r
+ */\r
+\r
+#define Enable_global_interrupt()            cpu_irq_enable()\r
+#define Disable_global_interrupt()           cpu_irq_disable()\r
+#define Is_global_interrupt_enabled()        cpu_irq_is_enabled()\r
+\r
+//@}\r
+\r
+//@}\r
+\r
+#endif /* UTILS_INTERRUPT_INTERRUPT_H */\r
diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/asf/common/utils/parts.h b/FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/asf/common/utils/parts.h
new file mode 100644 (file)
index 0000000..f58511d
--- /dev/null
@@ -0,0 +1,889 @@
+/**\r
+ * \file\r
+ *\r
+ * \brief Atmel part identification macros\r
+ *\r
+ * Copyright (C) 2012-2013 Atmel Corporation. All rights reserved.\r
+ *\r
+ * \asf_license_start\r
+ *\r
+ * \page License\r
+ *\r
+ * Redistribution and use in source and binary forms, with or without\r
+ * modification, are permitted provided that the following conditions are met:\r
+ *\r
+ * 1. Redistributions of source code must retain the above copyright notice,\r
+ *    this list of conditions and the following disclaimer.\r
+ *\r
+ * 2. Redistributions in binary form must reproduce the above copyright notice,\r
+ *    this list of conditions and the following disclaimer in the documentation\r
+ *    and/or other materials provided with the distribution.\r
+ *\r
+ * 3. The name of Atmel may not be used to endorse or promote products derived\r
+ *    from this software without specific prior written permission.\r
+ *\r
+ * 4. This software may only be redistributed and used in connection with an\r
+ *    Atmel microcontroller product.\r
+ *\r
+ * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED\r
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\r
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE\r
+ * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR\r
+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\r
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS\r
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)\r
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,\r
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\r
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\r
+ * POSSIBILITY OF SUCH DAMAGE.\r
+ *\r
+ * \asf_license_stop\r
+ *\r
+ */\r
+\r
+#ifndef ATMEL_PARTS_H\r
+#define ATMEL_PARTS_H\r
+\r
+/**\r
+ * \defgroup part_macros_group Atmel part identification macros\r
+ *\r
+ * This collection of macros identify which series and families that the various\r
+ * Atmel parts belong to. These can be used to select part-dependent sections of\r
+ * code at compile time.\r
+ *\r
+ * @{\r
+ */\r
+\r
+/**\r
+ * \name Convenience macros for part checking\r
+ * @{\r
+ */\r
+/* ! Check GCC and IAR part definition for 8-bit AVR */\r
+#define AVR8_PART_IS_DEFINED(part) \\r
+       (defined(__ ## part ## __) || defined(__AVR_ ## part ## __))\r
+\r
+/* ! Check GCC and IAR part definition for 32-bit AVR */\r
+#define AVR32_PART_IS_DEFINED(part) \\r
+       (defined(__AT32 ## part ## __) || defined(__AVR32_ ## part ## __))\r
+\r
+/* ! Check GCC and IAR part definition for SAM */\r
+#define SAM_PART_IS_DEFINED(part) (defined(__ ## part ## __))\r
+/** @} */\r
+\r
+/**\r
+ * \defgroup uc3_part_macros_group AVR UC3 parts\r
+ * @{\r
+ */\r
+\r
+/**\r
+ * \name AVR UC3 A series\r
+ * @{\r
+ */\r
+#define UC3A0 (        \\r
+               AVR32_PART_IS_DEFINED(UC3A0128) || \\r
+               AVR32_PART_IS_DEFINED(UC3A0256) || \\r
+               AVR32_PART_IS_DEFINED(UC3A0512) \\r
+               )\r
+\r
+#define UC3A1 (        \\r
+               AVR32_PART_IS_DEFINED(UC3A1128) || \\r
+               AVR32_PART_IS_DEFINED(UC3A1256) || \\r
+               AVR32_PART_IS_DEFINED(UC3A1512) \\r
+               )\r
+\r
+#define UC3A3 (        \\r
+               AVR32_PART_IS_DEFINED(UC3A364)   || \\r
+               AVR32_PART_IS_DEFINED(UC3A364S)  || \\r
+               AVR32_PART_IS_DEFINED(UC3A3128)  || \\r
+               AVR32_PART_IS_DEFINED(UC3A3128S) || \\r
+               AVR32_PART_IS_DEFINED(UC3A3256)  || \\r
+               AVR32_PART_IS_DEFINED(UC3A3256S) \\r
+               )\r
+\r
+#define UC3A4 (        \\r
+               AVR32_PART_IS_DEFINED(UC3A464)   || \\r
+               AVR32_PART_IS_DEFINED(UC3A464S)  || \\r
+               AVR32_PART_IS_DEFINED(UC3A4128)  || \\r
+               AVR32_PART_IS_DEFINED(UC3A4128S) || \\r
+               AVR32_PART_IS_DEFINED(UC3A4256)  || \\r
+               AVR32_PART_IS_DEFINED(UC3A4256S) \\r
+               )\r
+/** @} */\r
+\r
+/**\r
+ * \name AVR UC3 B series\r
+ * @{\r
+ */\r
+#define UC3B0 (        \\r
+               AVR32_PART_IS_DEFINED(UC3B064)  || \\r
+               AVR32_PART_IS_DEFINED(UC3B0128) || \\r
+               AVR32_PART_IS_DEFINED(UC3B0256) || \\r
+               AVR32_PART_IS_DEFINED(UC3B0512) \\r
+               )\r
+\r
+#define UC3B1 (        \\r
+               AVR32_PART_IS_DEFINED(UC3B164)  || \\r
+               AVR32_PART_IS_DEFINED(UC3B1128) || \\r
+               AVR32_PART_IS_DEFINED(UC3B1256) || \\r
+               AVR32_PART_IS_DEFINED(UC3B1512) \\r
+               )\r
+/** @} */\r
+\r
+/**\r
+ * \name AVR UC3 C series\r
+ * @{\r
+ */\r
+#define UC3C0 (        \\r
+               AVR32_PART_IS_DEFINED(UC3C064C)  || \\r
+               AVR32_PART_IS_DEFINED(UC3C0128C) || \\r
+               AVR32_PART_IS_DEFINED(UC3C0256C) || \\r
+               AVR32_PART_IS_DEFINED(UC3C0512C) \\r
+               )\r
+\r
+#define UC3C1 (        \\r
+               AVR32_PART_IS_DEFINED(UC3C164C)  || \\r
+               AVR32_PART_IS_DEFINED(UC3C1128C) || \\r
+               AVR32_PART_IS_DEFINED(UC3C1256C) || \\r
+               AVR32_PART_IS_DEFINED(UC3C1512C) \\r
+               )\r
+\r
+#define UC3C2 (        \\r
+               AVR32_PART_IS_DEFINED(UC3C264C)  || \\r
+               AVR32_PART_IS_DEFINED(UC3C2128C) || \\r
+               AVR32_PART_IS_DEFINED(UC3C2256C) || \\r
+               AVR32_PART_IS_DEFINED(UC3C2512C) \\r
+               )\r
+/** @} */\r
+\r
+/**\r
+ * \name AVR UC3 D series\r
+ * @{\r
+ */\r
+#define UC3D3 (        \\r
+               AVR32_PART_IS_DEFINED(UC64D3)  || \\r
+               AVR32_PART_IS_DEFINED(UC128D3) \\r
+               )\r
+\r
+#define UC3D4 (        \\r
+               AVR32_PART_IS_DEFINED(UC64D4)  || \\r
+               AVR32_PART_IS_DEFINED(UC128D4) \\r
+               )\r
+/** @} */\r
+\r
+/**\r
+ * \name AVR UC3 L series\r
+ * @{\r
+ */\r
+#define UC3L0 (        \\r
+               AVR32_PART_IS_DEFINED(UC3L016) || \\r
+               AVR32_PART_IS_DEFINED(UC3L032) || \\r
+               AVR32_PART_IS_DEFINED(UC3L064) \\r
+               )\r
+\r
+#define UC3L0128 ( \\r
+               AVR32_PART_IS_DEFINED(UC3L0128) \\r
+               )\r
+\r
+#define UC3L0256 ( \\r
+               AVR32_PART_IS_DEFINED(UC3L0256) \\r
+               )\r
+\r
+#define UC3L3 (        \\r
+               AVR32_PART_IS_DEFINED(UC64L3U)  || \\r
+               AVR32_PART_IS_DEFINED(UC128L3U) || \\r
+               AVR32_PART_IS_DEFINED(UC256L3U) \\r
+               )\r
+\r
+#define UC3L4 (        \\r
+               AVR32_PART_IS_DEFINED(UC64L4U)  || \\r
+               AVR32_PART_IS_DEFINED(UC128L4U) || \\r
+               AVR32_PART_IS_DEFINED(UC256L4U) \\r
+               )\r
+\r
+#define UC3L3_L4 (UC3L3 || UC3L4)\r
+/** @} */\r
+\r
+/**\r
+ * \name AVR UC3 families\r
+ * @{\r
+ */\r
+/** AVR UC3 A family */\r
+#define UC3A (UC3A0 || UC3A1 || UC3A3 || UC3A4)\r
+\r
+/** AVR UC3 B family */\r
+#define UC3B (UC3B0 || UC3B1)\r
+\r
+/** AVR UC3 C family */\r
+#define UC3C (UC3C0 || UC3C1 || UC3C2)\r
+\r
+/** AVR UC3 D family */\r
+#define UC3D (UC3D3 || UC3D4)\r
+\r
+/** AVR UC3 L family */\r
+#define UC3L (UC3L0 || UC3L0128 || UC3L0256 || UC3L3_L4)\r
+/** @} */\r
+\r
+/** AVR UC3 product line */\r
+#define UC3  (UC3A || UC3B || UC3C || UC3D || UC3L)\r
+\r
+/** @} */\r
+\r
+/**\r
+ * \defgroup xmega_part_macros_group AVR XMEGA parts\r
+ * @{\r
+ */\r
+\r
+/**\r
+ * \name AVR XMEGA A series\r
+ * @{\r
+ */\r
+#define XMEGA_A1 ( \\r
+               AVR8_PART_IS_DEFINED(ATxmega64A1)  || \\r
+               AVR8_PART_IS_DEFINED(ATxmega128A1) \\r
+               )\r
+\r
+#define XMEGA_A3 ( \\r
+               AVR8_PART_IS_DEFINED(ATxmega64A3)  || \\r
+               AVR8_PART_IS_DEFINED(ATxmega128A3) || \\r
+               AVR8_PART_IS_DEFINED(ATxmega192A3) || \\r
+               AVR8_PART_IS_DEFINED(ATxmega256A3) \\r
+               )\r
+\r
+#define XMEGA_A3B ( \\r
+               AVR8_PART_IS_DEFINED(ATxmega256A3B) \\r
+               )\r
+\r
+#define XMEGA_A4 ( \\r
+               AVR8_PART_IS_DEFINED(ATxmega16A4) || \\r
+               AVR8_PART_IS_DEFINED(ATxmega32A4) \\r
+               )\r
+/** @} */\r
+\r
+/**\r
+ * \name AVR XMEGA AU series\r
+ * @{\r
+ */\r
+#define XMEGA_A1U ( \\r
+               AVR8_PART_IS_DEFINED(ATxmega64A1U)  || \\r
+               AVR8_PART_IS_DEFINED(ATxmega128A1U) \\r
+               )\r
+\r
+#define XMEGA_A3U ( \\r
+               AVR8_PART_IS_DEFINED(ATxmega64A3U)  || \\r
+               AVR8_PART_IS_DEFINED(ATxmega128A3U) || \\r
+               AVR8_PART_IS_DEFINED(ATxmega192A3U) || \\r
+               AVR8_PART_IS_DEFINED(ATxmega256A3U) \\r
+               )\r
+\r
+#define XMEGA_A3BU ( \\r
+               AVR8_PART_IS_DEFINED(ATxmega256A3BU) \\r
+               )\r
+\r
+#define XMEGA_A4U ( \\r
+               AVR8_PART_IS_DEFINED(ATxmega16A4U)  || \\r
+               AVR8_PART_IS_DEFINED(ATxmega32A4U)  || \\r
+               AVR8_PART_IS_DEFINED(ATxmega64A4U)  || \\r
+               AVR8_PART_IS_DEFINED(ATxmega128A4U) \\r
+               )\r
+/** @} */\r
+\r
+/**\r
+ * \name AVR XMEGA B series\r
+ * @{\r
+ */\r
+#define XMEGA_B1  ( \\r
+               AVR8_PART_IS_DEFINED(ATxmega64B1)  || \\r
+               AVR8_PART_IS_DEFINED(ATxmega128B1) \\r
+               )\r
+\r
+#define XMEGA_B3  ( \\r
+               AVR8_PART_IS_DEFINED(ATxmega64B3)  || \\r
+               AVR8_PART_IS_DEFINED(ATxmega128B3) \\r
+               )\r
+/** @} */\r
+\r
+/**\r
+ * \name AVR XMEGA C series\r
+ * @{\r
+ */\r
+#define XMEGA_C3 ( \\r
+               AVR8_PART_IS_DEFINED(ATxmega384C3)  || \\r
+               AVR8_PART_IS_DEFINED(ATxmega256C3)  || \\r
+               AVR8_PART_IS_DEFINED(ATxmega192C3)  || \\r
+               AVR8_PART_IS_DEFINED(ATxmega128C3)  || \\r
+               AVR8_PART_IS_DEFINED(ATxmega64C3) \\r
+               )\r
+\r
+#define XMEGA_C4 ( \\r
+               AVR8_PART_IS_DEFINED(ATxmega32C4)  || \\r
+               AVR8_PART_IS_DEFINED(ATxmega16C4) \\r
+               )\r
+/** @} */\r
+\r
+/**\r
+ * \name AVR XMEGA D series\r
+ * @{\r
+ */\r
+#define XMEGA_D3 ( \\r
+               AVR8_PART_IS_DEFINED(ATxmega64D3)  || \\r
+               AVR8_PART_IS_DEFINED(ATxmega128D3) || \\r
+               AVR8_PART_IS_DEFINED(ATxmega192D3) || \\r
+               AVR8_PART_IS_DEFINED(ATxmega256D3) || \\r
+               AVR8_PART_IS_DEFINED(ATxmega384D3) \\r
+               )\r
+\r
+#define XMEGA_D4 ( \\r
+               AVR8_PART_IS_DEFINED(ATxmega16D4)  || \\r
+               AVR8_PART_IS_DEFINED(ATxmega32D4)  || \\r
+               AVR8_PART_IS_DEFINED(ATxmega64D4)  || \\r
+               AVR8_PART_IS_DEFINED(ATxmega128D4) \\r
+               )\r
+/** @} */\r
+\r
+/**\r
+ * \name AVR XMEGA E series\r
+ * @{\r
+ */\r
+#define XMEGA_E5 ( \\r
+               AVR8_PART_IS_DEFINED(ATxmega8E5)   || \\r
+               AVR8_PART_IS_DEFINED(ATxmega16E5)  || \\r
+               AVR8_PART_IS_DEFINED(ATxmega32E5)     \\r
+       )\r
+/** @} */\r
+\r
+\r
+/**\r
+ * \name AVR XMEGA families\r
+ * @{\r
+ */\r
+/** AVR XMEGA A family */\r
+#define XMEGA_A (XMEGA_A1 || XMEGA_A3 || XMEGA_A3B || XMEGA_A4)\r
+\r
+/** AVR XMEGA AU family */\r
+#define XMEGA_AU (XMEGA_A1U || XMEGA_A3U || XMEGA_A3BU || XMEGA_A4U)\r
+\r
+/** AVR XMEGA B family */\r
+#define XMEGA_B (XMEGA_B1 || XMEGA_B3)\r
+\r
+/** AVR XMEGA C family */\r
+#define XMEGA_C (XMEGA_C3 || XMEGA_C4)\r
+\r
+/** AVR XMEGA D family */\r
+#define XMEGA_D (XMEGA_D3 || XMEGA_D4)\r
+\r
+/** AVR XMEGA E family */\r
+#define XMEGA_E (XMEGA_E5)\r
+/** @} */\r
+\r
+\r
+/** AVR XMEGA product line */\r
+#define XMEGA (XMEGA_A || XMEGA_AU || XMEGA_B || XMEGA_C || XMEGA_D || XMEGA_E)\r
+\r
+/** @} */\r
+\r
+/**\r
+ * \defgroup mega_part_macros_group megaAVR parts\r
+ *\r
+ * \note These megaAVR groupings are based on the groups in AVR Libc for the\r
+ * part header files. They are not names of official megaAVR device series or\r
+ * families.\r
+ *\r
+ * @{\r
+ */\r
+\r
+/**\r
+ * \name ATmegaxx0/xx1 subgroups\r
+ * @{\r
+ */\r
+#define MEGA_XX0 ( \\r
+               AVR8_PART_IS_DEFINED(ATmega640)  || \\r
+               AVR8_PART_IS_DEFINED(ATmega1280) || \\r
+               AVR8_PART_IS_DEFINED(ATmega2560) \\r
+               )\r
+\r
+#define MEGA_XX1 ( \\r
+               AVR8_PART_IS_DEFINED(ATmega1281) || \\r
+               AVR8_PART_IS_DEFINED(ATmega2561) \\r
+               )\r
+/** @} */\r
+\r
+/**\r
+ * \name megaAVR groups\r
+ * @{\r
+ */\r
+/** ATmegaxx0/xx1 group */\r
+#define MEGA_XX0_1 (MEGA_XX0 || MEGA_XX1)\r
+\r
+/** ATmegaxx4 group */\r
+#define MEGA_XX4 ( \\r
+               AVR8_PART_IS_DEFINED(ATmega164A)  || \\r
+               AVR8_PART_IS_DEFINED(ATmega164PA) || \\r
+               AVR8_PART_IS_DEFINED(ATmega324A)  || \\r
+               AVR8_PART_IS_DEFINED(ATmega324PA) || \\r
+               AVR8_PART_IS_DEFINED(ATmega644)   || \\r
+               AVR8_PART_IS_DEFINED(ATmega644A)  || \\r
+               AVR8_PART_IS_DEFINED(ATmega644PA) || \\r
+               AVR8_PART_IS_DEFINED(ATmega1284P)   || \\r
+               AVR8_PART_IS_DEFINED(ATmega128RFA1) \\r
+               )\r
+\r
+/** ATmegaxx4 group */\r
+#define MEGA_XX4_A ( \\r
+               AVR8_PART_IS_DEFINED(ATmega164A)  || \\r
+               AVR8_PART_IS_DEFINED(ATmega164PA) || \\r
+               AVR8_PART_IS_DEFINED(ATmega324A)  || \\r
+               AVR8_PART_IS_DEFINED(ATmega324PA) || \\r
+               AVR8_PART_IS_DEFINED(ATmega644A)  || \\r
+               AVR8_PART_IS_DEFINED(ATmega644PA) || \\r
+               AVR8_PART_IS_DEFINED(ATmega1284P) \\r
+               )\r
+\r
+/** ATmegaxx8 group */\r
+#define MEGA_XX8 ( \\r
+               AVR8_PART_IS_DEFINED(ATmega48)    || \\r
+               AVR8_PART_IS_DEFINED(ATmega48A)   || \\r
+               AVR8_PART_IS_DEFINED(ATmega48PA)  || \\r
+               AVR8_PART_IS_DEFINED(ATmega88)    || \\r
+               AVR8_PART_IS_DEFINED(ATmega88A)   || \\r
+               AVR8_PART_IS_DEFINED(ATmega88PA)  || \\r
+               AVR8_PART_IS_DEFINED(ATmega168)   || \\r
+               AVR8_PART_IS_DEFINED(ATmega168A)  || \\r
+               AVR8_PART_IS_DEFINED(ATmega168PA) || \\r
+               AVR8_PART_IS_DEFINED(ATmega328)   || \\r
+               AVR8_PART_IS_DEFINED(ATmega328P) \\r
+               )\r
+\r
+/** ATmegaxx8A/P/PA group */\r
+#define MEGA_XX8_A ( \\r
+               AVR8_PART_IS_DEFINED(ATmega48A)   || \\r
+               AVR8_PART_IS_DEFINED(ATmega48PA)  || \\r
+               AVR8_PART_IS_DEFINED(ATmega88A)   || \\r
+               AVR8_PART_IS_DEFINED(ATmega88PA)  || \\r
+               AVR8_PART_IS_DEFINED(ATmega168A)  || \\r
+               AVR8_PART_IS_DEFINED(ATmega168PA) || \\r
+               AVR8_PART_IS_DEFINED(ATmega328P) \\r
+               )\r
+\r
+/** ATmegaxx group */\r
+#define MEGA_XX ( \\r
+               AVR8_PART_IS_DEFINED(ATmega16)   || \\r
+               AVR8_PART_IS_DEFINED(ATmega16A)  || \\r
+               AVR8_PART_IS_DEFINED(ATmega32)   || \\r
+               AVR8_PART_IS_DEFINED(ATmega32A)  || \\r
+               AVR8_PART_IS_DEFINED(ATmega64)   || \\r
+               AVR8_PART_IS_DEFINED(ATmega64A)  || \\r
+               AVR8_PART_IS_DEFINED(ATmega128)  || \\r
+               AVR8_PART_IS_DEFINED(ATmega128A) \\r
+               )\r
+\r
+/** ATmegaxxA/P/PA group */\r
+#define MEGA_XX_A ( \\r
+               AVR8_PART_IS_DEFINED(ATmega16A)  || \\r
+               AVR8_PART_IS_DEFINED(ATmega32A)  || \\r
+               AVR8_PART_IS_DEFINED(ATmega64A)  || \\r
+               AVR8_PART_IS_DEFINED(ATmega128A) \\r
+               )\r
+/** ATmegaxxRFA1 group */\r
+#define MEGA_RFA1 ( \\r
+               AVR8_PART_IS_DEFINED(ATmega128RFA1) \\r
+               )\r
+               \r
+/** ATmegaxxRFR2 group */\r
+#define MEGA_RFR2 ( \\r
+               AVR8_PART_IS_DEFINED(ATmega64RFR2)  || \\r
+               AVR8_PART_IS_DEFINED(ATmega128RFR2) || \\r
+               AVR8_PART_IS_DEFINED(ATmega256RFR2) \\r
+               )\r
+       \r
+/** ATmegaxxRFxx group */\r
+#define MEGA_RF (MEGA_RFA1 || MEGA_RFR2)\r
+\r
+/**\r
+ * \name ATmegaxx_un0/un1/un2 subgroups\r
+ * @{\r
+ */\r
+#define MEGA_XX_UN0 ( \\r
+               AVR8_PART_IS_DEFINED(ATmega16)    || \\r
+               AVR8_PART_IS_DEFINED(ATmega16A)   || \\r
+               AVR8_PART_IS_DEFINED(ATmega32)    || \\r
+               AVR8_PART_IS_DEFINED(ATmega32A) \\r
+               )\r
+\r
+/** ATmegaxx group without power reduction and\r
+ *  And interrupt sense register.\r
+ */\r
+#define MEGA_XX_UN1 ( \\r
+               AVR8_PART_IS_DEFINED(ATmega64)    || \\r
+               AVR8_PART_IS_DEFINED(ATmega64A)   || \\r
+               AVR8_PART_IS_DEFINED(ATmega128)   || \\r
+               AVR8_PART_IS_DEFINED(ATmega128A) \\r
+               )\r
+\r
+/** ATmegaxx group without power reduction and\r
+ *  And interrupt sense register.\r
+ */\r
+#define MEGA_XX_UN2 ( \\r
+               AVR8_PART_IS_DEFINED(ATmega169P)  || \\r
+               AVR8_PART_IS_DEFINED(ATmega169PA) || \\r
+               AVR8_PART_IS_DEFINED(ATmega329P)  || \\r
+               AVR8_PART_IS_DEFINED(ATmega329PA) \\r
+               )\r
+\r
+/** Devices added to complete megaAVR offering.\r
+ *  Please do not use this group symbol as it is not intended\r
+ *  to be permanent: the devices should be regrouped.\r
+ */\r
+#define MEGA_UNCATEGORIZED ( \\r
+               AVR8_PART_IS_DEFINED(AT90CAN128)     || \\r
+               AVR8_PART_IS_DEFINED(AT90CAN32)      || \\r
+               AVR8_PART_IS_DEFINED(AT90CAN64)      || \\r
+               AVR8_PART_IS_DEFINED(AT90PWM1)       || \\r
+               AVR8_PART_IS_DEFINED(AT90PWM216)     || \\r
+               AVR8_PART_IS_DEFINED(AT90PWM2B)      || \\r
+               AVR8_PART_IS_DEFINED(AT90PWM316)     || \\r
+               AVR8_PART_IS_DEFINED(AT90PWM3B)      || \\r
+               AVR8_PART_IS_DEFINED(AT90PWM81)      || \\r
+               AVR8_PART_IS_DEFINED(AT90USB1286)    || \\r
+               AVR8_PART_IS_DEFINED(AT90USB1287)    || \\r
+               AVR8_PART_IS_DEFINED(AT90USB162)     || \\r
+               AVR8_PART_IS_DEFINED(AT90USB646)     || \\r
+               AVR8_PART_IS_DEFINED(AT90USB647)     || \\r
+               AVR8_PART_IS_DEFINED(AT90USB82)      || \\r
+               AVR8_PART_IS_DEFINED(ATmega1284)     || \\r
+               AVR8_PART_IS_DEFINED(ATmega162)      || \\r
+               AVR8_PART_IS_DEFINED(ATmega164P)     || \\r
+               AVR8_PART_IS_DEFINED(ATmega165A)     || \\r
+               AVR8_PART_IS_DEFINED(ATmega165P)     || \\r
+               AVR8_PART_IS_DEFINED(ATmega165PA)    || \\r
+               AVR8_PART_IS_DEFINED(ATmega168P)     || \\r
+               AVR8_PART_IS_DEFINED(ATmega169A)     || \\r
+               AVR8_PART_IS_DEFINED(ATmega16M1)     || \\r
+               AVR8_PART_IS_DEFINED(ATmega16U2)     || \\r
+               AVR8_PART_IS_DEFINED(ATmega16U4)     || \\r
+               AVR8_PART_IS_DEFINED(ATmega2564RFR2) || \\r
+               AVR8_PART_IS_DEFINED(ATmega256RFA2)  || \\r
+               AVR8_PART_IS_DEFINED(ATmega324P)     || \\r
+               AVR8_PART_IS_DEFINED(ATmega325)      || \\r
+               AVR8_PART_IS_DEFINED(ATmega3250)     || \\r
+               AVR8_PART_IS_DEFINED(ATmega3250A)    || \\r
+               AVR8_PART_IS_DEFINED(ATmega3250P)    || \\r
+               AVR8_PART_IS_DEFINED(ATmega3250PA)   || \\r
+               AVR8_PART_IS_DEFINED(ATmega325A)     || \\r
+               AVR8_PART_IS_DEFINED(ATmega325P)     || \\r
+               AVR8_PART_IS_DEFINED(ATmega325PA)    || \\r
+               AVR8_PART_IS_DEFINED(ATmega329)      || \\r
+               AVR8_PART_IS_DEFINED(ATmega3290)     || \\r
+               AVR8_PART_IS_DEFINED(ATmega3290A)    || \\r
+               AVR8_PART_IS_DEFINED(ATmega3290P)    || \\r
+               AVR8_PART_IS_DEFINED(ATmega3290PA)   || \\r
+               AVR8_PART_IS_DEFINED(ATmega329A)     || \\r
+               AVR8_PART_IS_DEFINED(ATmega32M1)     || \\r
+               AVR8_PART_IS_DEFINED(ATmega32U2)     || \\r
+               AVR8_PART_IS_DEFINED(ATmega32U4)     || \\r
+               AVR8_PART_IS_DEFINED(ATmega48P)      || \\r
+               AVR8_PART_IS_DEFINED(ATmega644P)     || \\r
+               AVR8_PART_IS_DEFINED(ATmega645)      || \\r
+               AVR8_PART_IS_DEFINED(ATmega6450)     || \\r
+               AVR8_PART_IS_DEFINED(ATmega6450A)    || \\r
+               AVR8_PART_IS_DEFINED(ATmega6450P)    || \\r
+               AVR8_PART_IS_DEFINED(ATmega645A)     || \\r
+               AVR8_PART_IS_DEFINED(ATmega645P)     || \\r
+               AVR8_PART_IS_DEFINED(ATmega649)      || \\r
+               AVR8_PART_IS_DEFINED(ATmega6490)     || \\r
+               AVR8_PART_IS_DEFINED(ATmega6490A)    || \\r
+               AVR8_PART_IS_DEFINED(ATmega6490P)    || \\r
+               AVR8_PART_IS_DEFINED(ATmega649A)     || \\r
+               AVR8_PART_IS_DEFINED(ATmega649P)     || \\r
+               AVR8_PART_IS_DEFINED(ATmega64M1)     || \\r
+               AVR8_PART_IS_DEFINED(ATmega64RFA2)   || \\r
+               AVR8_PART_IS_DEFINED(ATmega8)        || \\r
+               AVR8_PART_IS_DEFINED(ATmega8515)     || \\r
+               AVR8_PART_IS_DEFINED(ATmega8535)     || \\r
+               AVR8_PART_IS_DEFINED(ATmega88P)      || \\r
+               AVR8_PART_IS_DEFINED(ATmega8A)       || \\r
+               AVR8_PART_IS_DEFINED(ATmega8U2)         \\r
+       )\r
+\r
+/** Unspecified group */\r
+#define MEGA_UNSPECIFIED (MEGA_XX_UN0 || MEGA_XX_UN1 || MEGA_XX_UN2 || \\r
+       MEGA_UNCATEGORIZED)\r
+\r
+/** @} */\r
+\r
+/** megaAVR product line */\r
+#define MEGA (MEGA_XX0_1 || MEGA_XX4 || MEGA_XX8 || MEGA_XX || MEGA_RF || \\r
+       MEGA_UNSPECIFIED)\r
+\r
+/** @} */\r
+\r
+/**\r
+ * \defgroup tiny_part_macros_group tinyAVR parts\r
+ *\r
+ * @{\r
+ */\r
+\r
+/**\r
+ * \name tinyAVR groups\r
+ * @{\r
+ */\r
+\r
+/** Devices added to complete tinyAVR offering.\r
+ *  Please do not use this group symbol as it is not intended\r
+ *  to be permanent: the devices should be regrouped.\r
+ */\r
+#define TINY_UNCATEGORIZED ( \\r
+               AVR8_PART_IS_DEFINED(ATtiny10)    || \\r
+               AVR8_PART_IS_DEFINED(ATtiny13)    || \\r
+               AVR8_PART_IS_DEFINED(ATtiny13A)   || \\r
+               AVR8_PART_IS_DEFINED(ATtiny1634)  || \\r
+               AVR8_PART_IS_DEFINED(ATtiny167)   || \\r
+               AVR8_PART_IS_DEFINED(ATtiny20)    || \\r
+               AVR8_PART_IS_DEFINED(ATtiny2313)  || \\r
+               AVR8_PART_IS_DEFINED(ATtiny2313A) || \\r
+               AVR8_PART_IS_DEFINED(ATtiny24)    || \\r
+               AVR8_PART_IS_DEFINED(ATtiny24A)   || \\r
+               AVR8_PART_IS_DEFINED(ATtiny25)    || \\r
+               AVR8_PART_IS_DEFINED(ATtiny26)    || \\r
+               AVR8_PART_IS_DEFINED(ATtiny261)   || \\r
+               AVR8_PART_IS_DEFINED(ATtiny261A)  || \\r
+               AVR8_PART_IS_DEFINED(ATtiny4)     || \\r
+               AVR8_PART_IS_DEFINED(ATtiny40)    || \\r
+               AVR8_PART_IS_DEFINED(ATtiny4313)  || \\r
+               AVR8_PART_IS_DEFINED(ATtiny43U)   || \\r
+               AVR8_PART_IS_DEFINED(ATtiny44)    || \\r
+               AVR8_PART_IS_DEFINED(ATtiny44A)   || \\r
+               AVR8_PART_IS_DEFINED(ATtiny45)    || \\r
+               AVR8_PART_IS_DEFINED(ATtiny461)   || \\r
+               AVR8_PART_IS_DEFINED(ATtiny461A)  || \\r
+               AVR8_PART_IS_DEFINED(ATtiny48)    || \\r
+               AVR8_PART_IS_DEFINED(ATtiny5)     || \\r
+               AVR8_PART_IS_DEFINED(ATtiny828)   || \\r
+               AVR8_PART_IS_DEFINED(ATtiny84)    || \\r
+               AVR8_PART_IS_DEFINED(ATtiny84A)   || \\r
+               AVR8_PART_IS_DEFINED(ATtiny85)    || \\r
+               AVR8_PART_IS_DEFINED(ATtiny861)   || \\r
+               AVR8_PART_IS_DEFINED(ATtiny861A)  || \\r
+               AVR8_PART_IS_DEFINED(ATtiny87)    || \\r
+               AVR8_PART_IS_DEFINED(ATtiny88)    || \\r
+               AVR8_PART_IS_DEFINED(ATtiny9)        \\r
+       )\r
+\r
+/** @} */\r
+\r
+/** tinyAVR product line */\r
+#define TINY (TINY_UNCATEGORIZED)\r
+\r
+/** @} */\r
+\r
+/**\r
+ * \defgroup sam_part_macros_group SAM parts\r
+ * @{\r
+ */\r
+\r
+/**\r
+ * \name SAM3S series\r
+ * @{\r
+ */\r
+#define SAM3S1 ( \\r
+               SAM_PART_IS_DEFINED(SAM3S1A) || \\r
+               SAM_PART_IS_DEFINED(SAM3S1B) || \\r
+               SAM_PART_IS_DEFINED(SAM3S1C) \\r
+               )\r
+\r
+#define SAM3S2 ( \\r
+               SAM_PART_IS_DEFINED(SAM3S2A) || \\r
+               SAM_PART_IS_DEFINED(SAM3S2B) || \\r
+               SAM_PART_IS_DEFINED(SAM3S2C) \\r
+               )\r
+\r
+#define SAM3S4 ( \\r
+               SAM_PART_IS_DEFINED(SAM3S4A) || \\r
+               SAM_PART_IS_DEFINED(SAM3S4B) || \\r
+               SAM_PART_IS_DEFINED(SAM3S4C) \\r
+               )\r
+\r
+#define SAM3S8 ( \\r
+               SAM_PART_IS_DEFINED(SAM3S8B) || \\r
+               SAM_PART_IS_DEFINED(SAM3S8C) \\r
+               )\r
+\r
+#define SAM3SD8 ( \\r
+               SAM_PART_IS_DEFINED(SAM3SD8B) || \\r
+               SAM_PART_IS_DEFINED(SAM3SD8C) \\r
+               )\r
+/** @} */\r
+\r
+/**\r
+ * \name SAM3U series\r
+ * @{\r
+ */\r
+#define SAM3U1 ( \\r
+               SAM_PART_IS_DEFINED(SAM3U1C) || \\r
+               SAM_PART_IS_DEFINED(SAM3U1E) \\r
+               )\r
+\r
+#define SAM3U2 ( \\r
+               SAM_PART_IS_DEFINED(SAM3U2C) || \\r
+               SAM_PART_IS_DEFINED(SAM3U2E) \\r
+               )\r
+\r
+#define SAM3U4 ( \\r
+               SAM_PART_IS_DEFINED(SAM3U4C) || \\r
+               SAM_PART_IS_DEFINED(SAM3U4E) \\r
+               )\r
+/** @} */\r
+\r
+/**\r
+ * \name SAM3N series\r
+ * @{\r
+ */\r
+#define SAM3N1 ( \\r
+               SAM_PART_IS_DEFINED(SAM3N1A) || \\r
+               SAM_PART_IS_DEFINED(SAM3N1B) || \\r
+               SAM_PART_IS_DEFINED(SAM3N1C) \\r
+               )\r
+\r
+#define SAM3N2 ( \\r
+               SAM_PART_IS_DEFINED(SAM3N2A) || \\r
+               SAM_PART_IS_DEFINED(SAM3N2B) || \\r
+               SAM_PART_IS_DEFINED(SAM3N2C) \\r
+               )\r
+\r
+#define SAM3N4 ( \\r
+               SAM_PART_IS_DEFINED(SAM3N4A) || \\r
+               SAM_PART_IS_DEFINED(SAM3N4B) || \\r
+               SAM_PART_IS_DEFINED(SAM3N4C) \\r
+               )\r
+/** @} */\r
+\r
+/**\r
+ * \name SAM3X series\r
+ * @{\r
+ */\r
+#define SAM3X4 ( \\r
+               SAM_PART_IS_DEFINED(SAM3X4C) || \\r
+               SAM_PART_IS_DEFINED(SAM3X4E) \\r
+               )\r
+\r
+#define SAM3X8 ( \\r
+               SAM_PART_IS_DEFINED(SAM3X8C) || \\r
+               SAM_PART_IS_DEFINED(SAM3X8E) || \\r
+               SAM_PART_IS_DEFINED(SAM3X8H) \\r
+               )\r
+/** @} */\r
+\r
+/**\r
+ * \name SAM3A series\r
+ * @{\r
+ */\r
+#define SAM3A4 ( \\r
+               SAM_PART_IS_DEFINED(SAM3A4C) \\r
+               )\r
+\r
+#define SAM3A8 ( \\r
+               SAM_PART_IS_DEFINED(SAM3A8C) \\r
+               )\r
+/** @} */\r
+\r
+/**\r
+ * \name SAM4S series\r
+ * @{\r
+ */\r
+#define SAM4S8 ( \\r
+               SAM_PART_IS_DEFINED(SAM4S8B) || \\r
+               SAM_PART_IS_DEFINED(SAM4S8C) \\r
+               )\r
+\r
+#define SAM4S16 ( \\r
+               SAM_PART_IS_DEFINED(SAM4S16B) || \\r
+               SAM_PART_IS_DEFINED(SAM4S16C) \\r
+               )\r
+\r
+#define SAM4SA16 ( \\r
+               SAM_PART_IS_DEFINED(SAM4SA16B) || \\r
+               SAM_PART_IS_DEFINED(SAM4SA16C)    \\r
+       )\r
+\r
+#define SAM4SD16 ( \\r
+               SAM_PART_IS_DEFINED(SAM4SD16B) || \\r
+               SAM_PART_IS_DEFINED(SAM4SD16C)    \\r
+       )\r
+\r
+#define SAM4SD32 ( \\r
+               SAM_PART_IS_DEFINED(SAM4SD32B) || \\r
+               SAM_PART_IS_DEFINED(SAM4SD32C)    \\r
+       )\r
+/** @} */\r
+\r
+/**\r
+ * \name SAM4L series\r
+ * @{\r
+ */\r
+#define SAM4LS ( \\r
+               SAM_PART_IS_DEFINED(SAM4LS2A) || \\r
+               SAM_PART_IS_DEFINED(SAM4LS2B) || \\r
+               SAM_PART_IS_DEFINED(SAM4LS2C) || \\r
+               SAM_PART_IS_DEFINED(SAM4LS4A) || \\r
+               SAM_PART_IS_DEFINED(SAM4LS4B) || \\r
+               SAM_PART_IS_DEFINED(SAM4LS4C)   \\r
+               )\r
+\r
+#define SAM4LC ( \\r
+               SAM_PART_IS_DEFINED(SAM4LC2A) || \\r
+               SAM_PART_IS_DEFINED(SAM4LC2B) || \\r
+               SAM_PART_IS_DEFINED(SAM4LC2C) || \\r
+               SAM_PART_IS_DEFINED(SAM4LC4A) || \\r
+               SAM_PART_IS_DEFINED(SAM4LC4B) || \\r
+               SAM_PART_IS_DEFINED(SAM4LC4C)   \\r
+               )\r
+/** @} */\r
+\r
+/**\r
+ * \name SAM4E series\r
+ * @{\r
+ */\r
+#define SAM4E8 ( \\r
+               SAM_PART_IS_DEFINED(SAM4E8E) \\r
+               )\r
+\r
+#define SAM4E16 ( \\r
+               SAM_PART_IS_DEFINED(SAM4E16E) \\r
+               )\r
+/** @} */\r
+\r
+/**\r
+ * \name SAM families\r
+ * @{\r
+ */\r
+/** SAM3S Family */\r
+#define SAM3S (SAM3S1 || SAM3S2 || SAM3S4 || SAM3S8 || SAM3SD8)\r
+\r
+/** SAM3U Family */\r
+#define SAM3U (SAM3U1 || SAM3U2 || SAM3U4)\r
+\r
+/** SAM3N Family */\r
+#define SAM3N (SAM3N1 || SAM3N2 || SAM3N4)\r
+\r
+/** SAM3XA Family */\r
+#define SAM3XA (SAM3X4 || SAM3X8 || SAM3A4 || SAM3A8)\r
+\r
+/** SAM4S Family */\r
+#define SAM4S (SAM4S8 || SAM4S16 || SAM4SA16 || SAM4SD16 || SAM4SD32)\r
+\r
+/** SAM4L Family */\r
+#define SAM4L (SAM4LS || SAM4LC)\r
+\r
+/** SAM4E Family */\r
+#define SAM4E (SAM4E8 || SAM4E16)\r
+/** @} */\r
+\r
+/** SAM product line */\r
+#define SAM (SAM3S || SAM3U || SAM3N || SAM3XA || SAM4S || SAM4L || SAM4E)\r
+\r
+/** @} */\r
+\r
+/** @} */\r
+\r
+/** @} */\r
+\r
+#endif /* ATMEL_PARTS_H */\r
diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/asf/sam/boards/sam4l_ek/init.c b/FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/asf/sam/boards/sam4l_ek/init.c
new file mode 100644 (file)
index 0000000..a986cef
--- /dev/null
@@ -0,0 +1,220 @@
+/**\r
+ * \file\r
+ *\r
+ * \brief SAM4L-EK Board init.\r
+ *\r
+ * This file contains board initialization function.\r
+ *\r
+ * Copyright (c) 2012 - 2013 Atmel Corporation. All rights reserved.\r
+ *\r
+ * \asf_license_start\r
+ *\r
+ * \page License\r
+ *\r
+ * Redistribution and use in source and binary forms, with or without\r
+ * modification, are permitted provided that the following conditions are met:\r
+ *\r
+ * 1. Redistributions of source code must retain the above copyright notice,\r
+ *    this list of conditions and the following disclaimer.\r
+ *\r
+ * 2. Redistributions in binary form must reproduce the above copyright notice,\r
+ *    this list of conditions and the following disclaimer in the documentation\r
+ *    and/or other materials provided with the distribution.\r
+ *\r
+ * 3. The name of Atmel may not be used to endorse or promote products derived\r
+ *    from this software without specific prior written permission.\r
+ *\r
+ * 4. This software may only be redistributed and used in connection with an\r
+ *    Atmel microcontroller product.\r
+ *\r
+ * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED\r
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\r
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE\r
+ * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR\r
+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\r
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS\r
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)\r
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,\r
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\r
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\r
+ * POSSIBILITY OF SUCH DAMAGE.\r
+ *\r
+ * \asf_license_stop\r
+ *\r
+ */\r
+#include "compiler.h"\r
+#include "sam4l_ek.h"\r
+#include "conf_board.h"\r
+#include "ioport.h"\r
+#include "board.h"\r
+/**\r
+ * \addtogroup  sam4l_ek_group\r
+ * @{\r
+ */\r
+\r
+/**\r
+ * \brief Set peripheral mode for one single IOPORT pin.\r
+ * It will configure port mode and disable pin mode (but enable peripheral).\r
+ * \param pin IOPORT pin to configure\r
+ * \param mode Mode masks to configure for the specified pin (\ref ioport_modes)\r
+ */\r
+#define ioport_set_pin_peripheral_mode(pin, mode) \\r
+       do {\\r
+               ioport_set_pin_mode(pin, mode);\\r
+               ioport_disable_pin(pin);\\r
+       } while (0)\r
+\r
+void board_init(void)\r
+{\r
+       // Initialize IOPORTs\r
+       ioport_init();\r
+\r
+       // Put all pins to default state (input & pull-up)\r
+       uint32_t pin;\r
+\r
+       for (pin = PIN_PA00; pin <= PIN_PC31; pin ++) {\r
+               // Skip output pins to configure later\r
+               if (pin == LED0_GPIO || pin == LCD_BL_GPIO\r
+#ifdef CONF_BOARD_RS485\r
+               || pin == RS485_USART_CTS_PIN\r
+#endif\r
+               /* PA02 is not configured as it is driven by hardware\r
+               configuration */\r
+               || pin == PIN_PA02) {\r
+                       continue;\r
+               }\r
+               ioport_set_pin_dir(pin, IOPORT_DIR_INPUT);\r
+               ioport_set_pin_mode(pin, IOPORT_MODE_PULLUP);\r
+       }\r
+\r
+       /* Configure the pins connected to LEDs as output and set their\r
+        * default initial state to high (LEDs off).\r
+        */\r
+       ioport_set_pin_dir(LED0_GPIO, IOPORT_DIR_OUTPUT);\r
+       ioport_set_pin_level(LED0_GPIO, LED0_INACTIVE_LEVEL);\r
+\r
+#ifdef  CONF_BOARD_EIC\r
+       // Set push button as external interrupt pin\r
+       ioport_set_pin_peripheral_mode(GPIO_PUSH_BUTTON_EIC_PIN,\r
+                       GPIO_PUSH_BUTTON_EIC_PIN_MUX);\r
+       ioport_set_pin_peripheral_mode(GPIO_UNIT_TEST_EIC_PIN,\r
+                       GPIO_UNIT_TEST_EIC_PIN_MUX);\r
+#else\r
+       // Push button as input: already done, it's the default pin state\r
+#endif\r
+\r
+#if (defined CONF_BOARD_BL)\r
+       // Configure LCD backlight\r
+       ioport_set_pin_dir(LCD_BL_GPIO, IOPORT_DIR_OUTPUT);\r
+       ioport_set_pin_level(LCD_BL_GPIO, LCD_BL_INACTIVE_LEVEL);\r
+#endif\r
+\r
+#if (defined CONF_BOARD_USB_PORT)\r
+       ioport_set_pin_peripheral_mode(PIN_PA25A_USBC_DM, MUX_PA25A_USBC_DM);\r
+       ioport_set_pin_peripheral_mode(PIN_PA26A_USBC_DP, MUX_PA26A_USBC_DP);\r
+# if defined(CONF_BOARD_USB_VBUS_DETECT)\r
+#   if defined(USB_VBUS_EIC)\r
+       ioport_set_pin_peripheral_mode(USB_VBUS_EIC,\r
+                       USB_VBUS_EIC_MUX|USB_VBUS_FLAGS);\r
+#   elif defined(USB_VBUS_PIN)\r
+       ioport_set_pin_dir(USB_VBUS_PIN, IOPORT_DIR_INPUT);\r
+#   else\r
+#       warning USB_VBUS pin not defined\r
+#   endif\r
+# endif\r
+# if defined(CONF_BOARD_USB_ID_DETECT)\r
+#   if defined(USB_ID_EIC)\r
+       ioport_set_pin_peripheral_mode(USB_ID_EIC,\r
+                       USB_ID_EIC_MUX|USB_ID_FLAGS);\r
+#   elif defined(USB_ID_PIN)\r
+       ioport_set_pin_dir(USB_ID_PIN, IOPORT_DIR_INPUT);\r
+#   else\r
+#       warning USB_ID pin not defined\r
+#   endif\r
+# endif\r
+# if defined(CONF_BOARD_USB_VBUS_CONTROL)\r
+#   if defined(USB_VBOF_PIN)\r
+       ioport_set_pin_dir(USB_VBOF_PIN, IOPORT_DIR_OUTPUT);\r
+       ioport_set_pin_level(USB_VBOF_PIN, USB_VBOF_INACTIVE_LEVEL);\r
+#   else\r
+#       warning USB_VBOF pin not defined\r
+#   endif\r
+#  if defined(CONF_BOARD_USB_VBUS_ERR_DETECT)\r
+#    if defined(USB_VBERR_EIC)\r
+       ioport_set_pin_peripheral_mode(USB_VBERR_EIC,\r
+                       USB_VBERR_EIC_MUX|USB_VBERR_FLAGS);\r
+#    elif defined(USB_VBERR_PIN)\r
+       ioport_set_pin_dir(USB_VBERR_PIN, IOPORT_DIR_INPUT);\r
+#    else\r
+#        warning USB_VBERR pin not defined\r
+#    endif\r
+#  endif\r
+# endif /* !(defined CONF_BOARD_USB_NO_VBUS_CONTROL) */\r
+#endif /* (defined CONF_BOARD_USB_PORT) */\r
+\r
+#if defined (CONF_BOARD_COM_PORT)\r
+       ioport_set_pin_peripheral_mode(COM_PORT_RX_PIN, COM_PORT_RX_MUX);\r
+       ioport_set_pin_peripheral_mode(COM_PORT_TX_PIN, COM_PORT_TX_MUX);\r
+#endif\r
+\r
+#if defined (CONF_BOARD_BM_USART)\r
+       ioport_set_pin_peripheral_mode(BM_USART_RX_PIN, BM_USART_RX_MUX);\r
+       ioport_set_pin_peripheral_mode(BM_USART_TX_PIN, BM_USART_TX_MUX);\r
+#endif\r
+\r
+#ifdef CONF_BOARD_SPI\r
+       ioport_set_pin_peripheral_mode(PIN_PC04A_SPI_MISO, MUX_PC04A_SPI_MISO);\r
+       ioport_set_pin_peripheral_mode(PIN_PC05A_SPI_MOSI, MUX_PC05A_SPI_MOSI);\r
+       ioport_set_pin_peripheral_mode(PIN_PC06A_SPI_SCK, MUX_PC06A_SPI_SCK);\r
+\r
+       #ifdef CONF_BOARD_SPI_NPCS0\r
+               ioport_set_pin_peripheral_mode(PIN_PA02B_SPI_NPCS0,\r
+                               MUX_PA02B_SPI_NPCS0);\r
+       #endif\r
+       #ifdef CONF_BOARD_SPI_NPCS2\r
+               ioport_set_pin_peripheral_mode(PIN_PC00A_SPI_NPCS2,\r
+                               MUX_PC00A_SPI_NPCS2);\r
+       #endif\r
+       #ifdef CONF_BOARD_SPI_NPCS3\r
+               ioport_set_pin_peripheral_mode(PIN_PC01A_SPI_NPCS3,\r
+                               MUX_PC01A_SPI_NPCS3);\r
+       #endif\r
+\r
+#endif\r
+\r
+#ifdef CONF_BOARD_RS485\r
+       ioport_set_pin_peripheral_mode(RS485_USART_RX_PIN, RS485_USART_RX_MUX);\r
+       ioport_set_pin_peripheral_mode(RS485_USART_TX_PIN, RS485_USART_TX_MUX);\r
+       ioport_set_pin_peripheral_mode(RS485_USART_RTS_PIN,\r
+                       RS485_USART_RTS_MUX);\r
+       ioport_set_pin_dir(RS485_USART_CTS_PIN, IOPORT_DIR_OUTPUT);\r
+       ioport_set_pin_level(RS485_USART_CTS_PIN, IOPORT_PIN_LEVEL_LOW);\r
+#endif\r
+\r
+#ifdef CONF_BOARD_TWIMS1\r
+       ioport_set_pin_peripheral_mode(TWIMS1_TWI_SCL_PIN, TWIMS1_TWI_SCL_MUX);\r
+       ioport_set_pin_peripheral_mode(TWIMS1_TWI_SDA_PIN, TWIMS1_TWI_SDA_MUX);\r
+#endif\r
+\r
+#ifdef CONF_BOARD_USART0\r
+       ioport_set_pin_peripheral_mode(USART0_RX_PIN, USART0_RX_MUX);\r
+       ioport_set_pin_peripheral_mode(USART0_TX_PIN, USART0_TX_MUX);\r
+#endif\r
+\r
+#ifdef CONF_BOARD_DACC_VOUT\r
+       ioport_set_pin_peripheral_mode(DACC_VOUT_PIN, DACC_VOUT_MUX);\r
+#endif\r
+\r
+#ifdef CONF_BOARD_ACIFC\r
+       ioport_set_pin_peripheral_mode(PIN_PA06E_ACIFC_ACAN0, MUX_PA06E_ACIFC_ACAN0);\r
+       ioport_set_pin_peripheral_mode(PIN_PA07E_ACIFC_ACAP0, MUX_PA07E_ACIFC_ACAP0);\r
+#endif\r
+\r
+#ifdef CONF_BOARD_ABDACB_PORT\r
+       ioport_set_pin_peripheral_mode(ABDACB_AUDIO0_PIN, ABDACB_AUDIO0_MUX);\r
+       ioport_set_pin_peripheral_mode(ABDACB_AUDIO1_PIN, ABDACB_AUDIO1_MUX);\r
+#endif\r
+}\r
+/**\r
+ * @}\r
+ */\r
diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/asf/sam/boards/sam4l_ek/sam4l_ek.h b/FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/asf/sam/boards/sam4l_ek/sam4l_ek.h
new file mode 100644 (file)
index 0000000..31510b8
--- /dev/null
@@ -0,0 +1,309 @@
+/**\r
+ * \file\r
+ *\r
+ * \brief SAM4L-EK Board header file.\r
+ *\r
+ * This file contains definitions and services related to the features of the\r
+ * SAM4L-EK Board.\r
+ *\r
+ * To use this board define BOARD=SAM4L_EK.\r
+ *\r
+ * Copyright (c) 2012 - 2013 Atmel Corporation. All rights reserved.\r
+ *\r
+ * \asf_license_start\r
+ *\r
+ * \page License\r
+ *\r
+ * Redistribution and use in source and binary forms, with or without\r
+ * modification, are permitted provided that the following conditions are met:\r
+ *\r
+ * 1. Redistributions of source code must retain the above copyright notice,\r
+ *    this list of conditions and the following disclaimer.\r
+ *\r
+ * 2. Redistributions in binary form must reproduce the above copyright notice,\r
+ *    this list of conditions and the following disclaimer in the documentation\r
+ *    and/or other materials provided with the distribution.\r
+ *\r
+ * 3. The name of Atmel may not be used to endorse or promote products derived\r
+ *    from this software without specific prior written permission.\r
+ *\r
+ * 4. This software may only be redistributed and used in connection with an\r
+ *    Atmel microcontroller product.\r
+ *\r
+ * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED\r
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\r
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE\r
+ * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR\r
+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\r
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS\r
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)\r
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,\r
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\r
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\r
+ * POSSIBILITY OF SUCH DAMAGE.\r
+ *\r
+ * \asf_license_stop\r
+ *\r
+ */\r
+#ifndef SAM4L_EK_INCLUDED\r
+#define SAM4L_EK_INCLUDED\r
+\r
+#include "compiler.h"\r
+\r
+/** Name of the board */\r
+#define BOARD_NAME "SAM4L-EK"\r
+\r
+/**\r
+ * \defgroup sam4l_ek_group SAM4L-EK Board\r
+ * @{\r
+ */\r
+\r
+/**\r
+ * \defgroup sam4l_ek_feature_group Feature definitions\r
+ * @{\r
+ */\r
+\r
+//! \name Miscellaneous data\r
+//@{\r
+//@}\r
+\r
+//! Osc frequency (Hz.) and startup time (RCOsc periods).\r
+#define FOSC0                       (12000000)\r
+\r
+//! Osc32 frequency (Hz.) and startup time (RCOsc periods).\r
+#define FOSC32                      (32768)\r
+\r
+/**\r
+ * \name Board oscillator configuration\r
+ *\r
+ */\r
+//@{\r
+#define BOARD_OSC32_IS_XTAL         true\r
+#define BOARD_OSC32_HZ              FOSC32\r
+#define BOARD_OSC32_STARTUP_US      (1100000)\r
+#define BOARD_OSC32_SELCURR         BSCIF_OSCCTRL32_SELCURR(10)\r
+#define BOARD_OSC0_IS_XTAL          true\r
+#define BOARD_OSC0_HZ               FOSC0\r
+#define BOARD_OSC0_STARTUP_US       (1100)\r
+//@}\r
+\r
+/*! \name Number of LEDs.\r
+ */\r
+//! @{\r
+#define LED_COUNT   1\r
+//! @}\r
+\r
+/**\r
+ * \name LEDs\r
+ *\r
+ * LED0 is a single yellow LED that is active low.\r
+ */\r
+//@{\r
+#define LED0                            PC10\r
+#define LED0_GPIO                       PIN_PC10\r
+#define LED0_GPIO_MASK                  GPIO_PC10\r
+#if defined(SAM4L_EK_REV1)\r
+#  define LED0_ACTIVE_LEVEL             IOPORT_PIN_LEVEL_LOW\r
+#  define LED0_INACTIVE_LEVEL           IOPORT_PIN_LEVEL_HIGH\r
+#else\r
+#  define LED0_ACTIVE_LEVEL             IOPORT_PIN_LEVEL_HIGH\r
+#  define LED0_INACTIVE_LEVEL           IOPORT_PIN_LEVEL_LOW\r
+#endif\r
+//@}\r
+\r
+/**\r
+ * \name LCD Backlight\r
+ */\r
+//@{\r
+#if defined(SAM4L_EK_REV1)\r
+#  define LCD_BL                        PA02\r
+#  define LCD_BL_GPIO                   PIN_PA02\r
+#  define LCD_BL_GPIO_MASK              GPIO_PA02\r
+#else\r
+#  define LCD_BL                        PC14\r
+#  define LCD_BL_GPIO                   PIN_PC14\r
+#  define LCD_BL_GPIO_MASK              GPIO_PC14\r
+#endif\r
+#define LCD_BL_ACTIVE_LEVEL             IOPORT_PIN_LEVEL_HIGH\r
+#define LCD_BL_INACTIVE_LEVEL           IOPORT_PIN_LEVEL_LOW\r
+//@}\r
+\r
+/*! \name GPIO Connections of Push Buttons\r
+ */\r
+//! @{\r
+#define GPIO_PUSH_BUTTON_0              PIN_PC03\r
+#define GPIO_PUSH_BUTTON_0_MASK         GPIO_PC03\r
+#define PUSH_BUTTON_0_DOWN_LEVEL        IOPORT_PIN_LEVEL_LOW\r
+#define PUSH_BUTTON_0_UP_LEVEL          IOPORT_PIN_LEVEL_HIGH\r
+//! @}\r
+\r
+/*! \name Push Button Connection on External Interrupt line\r
+ */\r
+//! @{\r
+#define GPIO_PUSH_BUTTON_EIC_PIN        PIN_PC03B_EIC_EXTINT5\r
+#define GPIO_PUSH_BUTTON_EIC_PIN_MASK   GPIO_PC03B_EIC_EXTINT5\r
+#define GPIO_PUSH_BUTTON_EIC_PIN_MUX    MUX_PC03B_EIC_EXTINT5\r
+#define GPIO_PUSH_BUTTON_EIC_LINE       5\r
+\r
+#define GPIO_UNIT_TEST_EIC_PIN        PIN_PA06C_EIC_EXTINT1\r
+#define GPIO_UNIT_TEST_EIC_PIN_MASK   GPIO_PA06C_EIC_EXTINT1\r
+#define GPIO_UNIT_TEST_EIC_PIN_MUX    MUX_PA06C_EIC_EXTINT1\r
+#define GPIO_UNIT_TEST_EIC_LINE       1\r
+\r
+#define GPIO_EIC_TRIG_PIN       PIN_PB05\r
+//! @}\r
+\r
+\r
+/*! \name GPIO Connections of Touch sensors\r
+ */\r
+//! @{\r
+#define GPIO_QTOUCH_SLIDER_0            PIN_PB02\r
+#define GPIO_QTOUCH_SLIDER_0_MASK       GPIO_PB02\r
+#define GPIO_QTOUCH_SLIDER_0_MUX        MUX_PB02G_CATB_SENSE23\r
+#define GPIO_QTOUCH_SLIDER_1            PIN_PA04\r
+#define GPIO_QTOUCH_SLIDER_1_MASK       GPIO_PA04\r
+#define GPIO_QTOUCH_SLIDER_1_MUX               MUX_PA04G_CATB_SENSE0\r
+#define GPIO_QTOUCH_SLIDER_2            PIN_PA05\r
+#define GPIO_QTOUCH_SLIDER_2_MASK       GPIO_PA05\r
+#define GPIO_QTOUCH_SLIDER_2_MUX        MUX_PA05G_CATB_SENSE1\r
+#define GPIO_QTOUCH_DISCHARGE           PIN_PB03\r
+#define GPIO_QTOUCH_DISCHARGE_MASK      GPIO_PB03\r
+#define GPIO_QTOUCH_DISCHARGE_MUX       MUX_PB03G_CATB_DIS\r
+#define GPIO_QTOUCH_BUTTON              PIN_PB04\r
+#define GPIO_QTOUCH_BUTTON_MASK         GPIO_PB04\r
+#define GPIO_QTOUCH_BUTTON_MUX          MUX_PB04G_CATB_SENSE24\r
+//! @}\r
+\r
+/*! \name Touch sensors pin assignements\r
+ */\r
+//! @{\r
+#define QTOUCH_PINSEL_SLIDER_0          23\r
+#define QTOUCH_PINSEL_SLIDER_1          0\r
+#define QTOUCH_PINSEL_SLIDER_2          1\r
+#define QTOUCH_PINSEL_BUTTON            24\r
+//! @}\r
+\r
+/*! \name GPIO Connections of SAM4L4C VBUS monitoring\r
+ */\r
+//! @{\r
+#if defined(SAM4L_EK_REV1)\r
+#define USB_VBUS_FLAGS           IOPORT_MODE_GLITCH_FILTER\r
+#define USB_VBUS_PIN             PIN_PC14  /* As IO pin input */\r
+/* No EIC for VBus pin */\r
+#elif 0 // The Vbus monitoring can not be used on SAM4L_EK Rev. 2\r
+#define USB_VBUS_FLAGS           IOPORT_MODE_GLITCH_FILTER\r
+#define USB_VBUS_EIC             PIN_PA06C_EIC_EXTINT1 /* As EIC input */\r
+#define USB_VBUS_EIC_MUX         IOPORT_MODE_MUX_C\r
+#define USB_VBUS_EIC_LINE        1\r
+#define USB_VBUS_EIC_IRQn        EIC_1_IRQn\r
+#endif\r
+//! @}\r
+\r
+/*! \name GPIO Connections of SAM4L4C VBUS Power Control\r
+ */\r
+//! @{\r
+#define USB_VBOF_PIN            PIN_PC08 /* As IO pin output */\r
+#define USB_VBOF_ACTIVE_LEVEL   0\r
+#define USB_VBOF_INACTIVE_LEVEL 1\r
+//! @}\r
+\r
+/*! \name GPIO Connections of SAM4L4C VBUS error detecting\r
+ */\r
+//! @{\r
+#define USB_VBERR_FLAGS          IOPORT_MODE_PULLUP | IOPORT_MODE_GLITCH_FILTER\r
+#define USB_VBERR_PIN            PIN_PC07 /* As IO pin input */\r
+/* No EIC for VBErr pin */\r
+//! @}\r
+\r
+/*! \name GPIO Connections of SAM4L4C ID detecting\r
+ */\r
+//! @{\r
+#define USB_ID_FLAGS             IOPORT_MODE_PULLUP | IOPORT_MODE_GLITCH_FILTER\r
+#define USB_ID_PIN               PIN_PB05 /* As IO pin input */\r
+/* No EIC for ID pin */\r
+//! @}\r
+\r
+\r
+//! \name USART connections to GPIO for Virtual Com Port\r
+// @{\r
+#define COM_PORT_USART                 USART2\r
+#define COM_PORT_USART_ID              ID_USART2\r
+#define COM_PORT_RX_PIN                PIN_PC11B_USART2_RXD\r
+#define COM_PORT_RX_GPIO               GPIO_PC11B_USART2_RXD\r
+#define COM_PORT_RX_MUX                MUX_PC11B_USART2_RXD\r
+#define COM_PORT_TX_PIN                PIN_PC12B_USART2_TXD\r
+#define COM_PORT_TX_GPIO               GPIO_PC12B_USART2_TXD\r
+#define COM_PORT_TX_MUX                MUX_PC12B_USART2_TXD\r
+// @}\r
+\r
+//! \name USART connections to the Board Monitor\r
+// @{\r
+#define BM_USART_USART                 USART0\r
+#define BM_USART_USART_ID              ID_USART0\r
+#define BM_USART_RX_PIN                PIN_PC02C_USART0_RXD\r
+#define BM_USART_RX_GPIO               GPIO_PC02C_USART0_RXD\r
+#define BM_USART_RX_MUX                MUX_PC02C_USART0_RXD\r
+#define BM_USART_TX_PIN                PIN_PA07B_USART0_TXD\r
+#define BM_USART_TX_GPIO               GPIO_PA07B_USART0_TXD\r
+#define BM_USART_TX_MUX                MUX_PA07B_USART0_TXD\r
+// @}\r
+\r
+//! \name USART connections to the RS485\r
+// @{\r
+#define RS485_USART_USART              USART0\r
+#define RS485_USART_USART_ID           ID_USART0\r
+#define RS485_USART_RX_PIN             PIN_PC02C_USART0_RXD\r
+#define RS485_USART_RX_GPIO            GPIO_PC02C_USART0_RXD\r
+#define RS485_USART_RX_MUX             MUX_PC02C_USART0_RXD\r
+#define RS485_USART_TX_PIN             PIN_PA07B_USART0_TXD\r
+#define RS485_USART_TX_GPIO            GPIO_PA07B_USART0_TXD\r
+#define RS485_USART_TX_MUX             MUX_PA07B_USART0_TXD\r
+#define RS485_USART_RTS_PIN            PIN_PA06B_USART0_RTS\r
+#define RS485_USART_RTS_GPIO           GPIO_PA06B_USART0_RTS\r
+#define RS485_USART_RTS_MUX            MUX_PA06B_USART0_RTS\r
+#define RS485_USART_CTS_PIN            PIN_PC08E_USART2_CTS\r
+#define RS485_USART_CTS_GPIO           GPIO_PC08E_USART2_CTS\r
+#define RS485_USART_CTS_MUX            MUX_PC08E_USART2_CTS\r
+// @}\r
+\r
+//! \name TWIMS1 pins\r
+// @{\r
+#define TWIMS1_TWI_SDA_PIN   PIN_PB00A_TWIMS1_TWD\r
+#define TWIMS1_TWI_SDA_GPIO  GPIO_PB00A_TWIMS1_TWD\r
+#define TWIMS1_TWI_SDA_MUX   MUX_PB00A_TWIMS1_TWD\r
+#define TWIMS1_TWI_SCL_PIN   PIN_PB01A_TWIMS1_TWCK\r
+#define TWIMS1_TWI_SCL_GPIO  GPIO_PB01A_TWIMS1_TWCK\r
+#define TWIMS1_TWI_SCL_MUX   MUX_PB01A_TWIMS1_TWCK\r
+// @}\r
+\r
+//! \name USART0 pins\r
+// @{\r
+#define USART0_RX_PIN   PIN_PC02C_USART0_RXD\r
+#define USART0_RX_MUX   MUX_PC02C_USART0_RXD\r
+#define USART0_RX_GPIO  GPIO_PC02C_USART0_RXD\r
+#define USART0_TX_PIN   PIN_PA07B_USART0_TXD\r
+#define USART0_TX_MUX   MUX_PA07B_USART0_TXD\r
+#define USART0_TX_GPIO  GPIO_PA07B_USART0_TXD\r
+// @}\r
+\r
+//! \name DACC pins\r
+// @{\r
+#define DACC_EXT_TRIG0_PIN             PIN_PB04E_DACC_EXT_TRIG0\r
+#define DACC_EXT_TRIG0_GPIO            GPIO_PB04E_DACC_EXT_TRIG0\r
+#define DACC_EXT_TRIG0_MUX             MUX_PB04E_DACC_EXT_TRIG0\r
+#define DACC_VOUT_PIN                  PIN_PA06A_DACC_VOUT\r
+#define DACC_VOUT_GPIO                 GPIO_PA06A_DACC_VOUT\r
+#define DACC_VOUT_MUX                  MUX_PA06A_DACC_VOUT\r
+// @}\r
+\r
+/* Select the SPI module that AT25DFx is connected to */\r
+#define AT25DFX_SPI_MODULE          SPI\r
+\r
+/* Chip select used by AT25DFx components on the SPI module instance */\r
+#define AT25DFX_CS      2\r
+\r
+/**\r
+ * @}\r
+ */\r
+\r
+#endif /* SAM4L_EK_INCLUDED */\r
diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/asf/sam/drivers/ast/ast.c b/FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/asf/sam/drivers/ast/ast.c
new file mode 100644 (file)
index 0000000..ef1fbed
--- /dev/null
@@ -0,0 +1,820 @@
+/**\r
+ * \file\r
+ *\r
+ * \brief AST driver for SAM.\r
+ *\r
+ * Copyright (C) 2012-2013 Atmel Corporation. All rights reserved.\r
+ *\r
+ * \asf_license_start\r
+ *\r
+ * \page License\r
+ *\r
+ * Redistribution and use in source and binary forms, with or without\r
+ * modification, are permitted provided that the following conditions are met:\r
+ *\r
+ * 1. Redistributions of source code must retain the above copyright notice,\r
+ *    this list of conditions and the following disclaimer.\r
+ *\r
+ * 2. Redistributions in binary form must reproduce the above copyright notice,\r
+ *    this list of conditions and the following disclaimer in the documentation\r
+ *    and/or other materials provided with the distribution.\r
+ *\r
+ * 3. The name of Atmel may not be used to endorse or promote products derived\r
+ *    from this software without specific prior written permission.\r
+ *\r
+ * 4. This software may only be redistributed and used in connection with an\r
+ *    Atmel microcontroller product.\r
+ *\r
+ * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED\r
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\r
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE\r
+ * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR\r
+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\r
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS\r
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)\r
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,\r
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\r
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\r
+ * POSSIBILITY OF SUCH DAMAGE.\r
+ *\r
+ * \asf_license_stop\r
+ *\r
+ */\r
+\r
+#include "ast.h"\r
+#include "sysclk.h"\r
+#include "sleepmgr.h"\r
+#include "conf_ast.h"\r
+\r
+/**\r
+ * \internal\r
+ * \brief AST callback function pointer array\r
+ */\r
+ast_callback_t ast_callback_pointer[AST_INTERRUPT_SOURCE_NUM];\r
+\r
+/**\r
+ * \brief Check the status of AST.\r
+ *\r
+ * \param ast Base address of the AST.\r
+ *\r
+ * \return true If AST is enabled, else it will return false.\r
+ */\r
+bool ast_is_enabled(Ast *ast)\r
+{\r
+       while (ast_is_busy(ast)) {\r
+       }\r
+       return ((ast->AST_CR & AST_CR_EN) != 0);\r
+}\r
+\r
+/**\r
+ * \brief Enable the AST.\r
+ *\r
+ * \param ast Base address of the AST.\r
+ */\r
+void ast_enable(Ast *ast)\r
+{\r
+       sysclk_enable_peripheral_clock(ast);\r
+       sleepmgr_lock_mode(SLEEPMGR_BACKUP);\r
+}\r
+\r
+/**\r
+ * \brief Disable the AST. It also disables the AST module.\r
+ *\r
+ * \param ast Base address of the AST.\r
+ */\r
+void ast_disable(Ast *ast)\r
+{\r
+       /* Wait until the ast CTRL register is up-to-date */\r
+       while (ast_is_busy(ast)) {\r
+       }\r
+       /* Disable the AST */\r
+       ast->AST_CR &= ~(AST_CR_EN);\r
+       /* Wait until write is done */\r
+       while (ast_is_busy(ast)) {\r
+       }\r
+\r
+       sysclk_disable_peripheral_clock(ast);\r
+       sleepmgr_unlock_mode(SLEEPMGR_BACKUP);\r
+}\r
+\r
+/**\r
+ * \brief This function enables the option to clear the counter on AST alarm.\r
+ *\r
+ * \param ast            Base address of the AST.\r
+ * \param alarm_channel  AST Alarm Channel.\r
+ */\r
+void ast_enable_counter_clear_on_alarm(Ast *ast,\r
+               uint8_t alarm_channel)\r
+{\r
+       /* Wait until the ast CTRL register is up-to-date */\r
+       while (ast_is_busy(ast)) {\r
+       }\r
+       /* Enable Clear Counter on Alarm */\r
+       ast->AST_CR\r
+               |= (alarm_channel ? 0 : AST_CR_CA0);\r
+       /* Wait until write is done */\r
+       while (ast_is_busy(ast)) {\r
+       }\r
+}\r
+\r
+/**\r
+ * \brief This function clears the AST periodic prescalar counter to zero.\r
+ *\r
+ * \param ast            Base address of the AST.\r
+ */\r
+void ast_clear_prescalar(Ast *ast)\r
+{\r
+       /* Wait until the ast CTRL register is up-to-date */\r
+       while (ast_is_busy(ast)) {\r
+       }\r
+       /* Clear Counter on Alarm */\r
+       ast->AST_CR |= AST_CR_PCLR;\r
+       /* Wait until write is done */\r
+       while (ast_is_busy(ast)) {\r
+       }\r
+}\r
+\r
+/**\r
+ * \brief This function will initialize the AST module in\r
+ * calendar or counter Mode. It then enables the AST module.\r
+ *\r
+ * \note  If you use the 32 KHz oscillator, it will enable this module.\r
+ *\r
+ * \param ast Base address of the AST.\r
+ * \param ast_conf The AST configuration\r
+ *\r
+ * \return 1 if the initialization succeeds otherwise it will return 0.\r
+ */\r
+uint32_t ast_set_config(Ast *ast, struct ast_config *ast_conf)\r
+{\r
+       uint32_t time_out = AST_POLL_TIMEOUT;\r
+       while (ast_is_clkbusy(ast)) {\r
+               if (--time_out == 0) {\r
+                       return 0;\r
+               }\r
+       }\r
+       ast->AST_CLOCK = ast_conf->osc_type << AST_CLOCK_CSSEL_Pos;\r
+       time_out = AST_POLL_TIMEOUT;\r
+       while (ast_is_clkbusy(ast)) {\r
+               if (--time_out == 0) {\r
+                       return 0;\r
+               }\r
+       }\r
+       ast->AST_CLOCK |= AST_CLOCK_CEN;\r
+       time_out = AST_POLL_TIMEOUT;\r
+       while (ast_is_clkbusy(ast)) {\r
+               if (--time_out == 0) {\r
+                       return 0;\r
+               }\r
+       }\r
+       /* Set the new AST configuration */\r
+       if (ast_conf->mode == AST_CALENDAR_MODE) {\r
+               ast->AST_CR = AST_CR_CAL | ast_conf->psel << AST_CR_PSEL_Pos;\r
+       }\r
+\r
+       if (ast_conf->mode == AST_COUNTER_MODE) {\r
+               ast->AST_CR = ast_conf->psel << AST_CR_PSEL_Pos;\r
+       }\r
+\r
+       /* Wait until the ast CTRL register is up-to-date */\r
+       while (ast_is_busy(ast)) {\r
+       }\r
+\r
+       /* Set the calendar */\r
+       if (ast_conf->mode == AST_CALENDAR_MODE) {\r
+               ast_write_calendar_value(ast, ast_conf->calendar);\r
+       }\r
+\r
+       if (ast_conf->mode == AST_COUNTER_MODE) {\r
+               ast_write_counter_value(ast, ast_conf->counter);\r
+       }\r
+\r
+       /* Wait until the ast CTRL register is up-to-date */\r
+       while (ast_is_busy(ast)) {\r
+       }\r
+       /* Enable the AST */\r
+       ast->AST_CR |= AST_CR_EN;\r
+       /* Wait until write is done */\r
+       while (ast_is_busy(ast)) {\r
+       }\r
+\r
+       return 1;\r
+}\r
+\r
+/**\r
+ * \brief Function to tune the AST prescalar frequency to the desired frequency\r
+ *\r
+ * \param ast         Base address of the AST.\r
+ * \param input_freq  Prescaled AST Clock Frequency\r
+ * \param tuned_freq  Desired AST frequency\r
+ *\r
+ * \retval 0 If invalid frequency is passed\r
+ * \retval 1 If configuration succeeds\r
+ *\r
+ * \note Parameter Calculation:\r
+ * Formula: \n\r
+ * ADD=0 -> ft= fi(1 - (1/((div_ceil(256/value) * (2^exp)) + 1))) \n\r
+ * ADD=1 -> ft= fi(1 + (1/((div_ceil(256/value) * (2^exp)) - 1))) \n\r
+ * Specifications: \n\r
+ * exp > 0, value > 1 \n\r
+ * Let X = (2 ^ exp), Y = div_ceil(256 / value) \n\r
+ * Tuned Frequency -> ft \n\r
+ * Input Frequency -> fi \n\r
+ *\r
+ * IF ft < fi \n\r
+ * ADD = 0 \n\r
+ * Z = (ft / (fi - ft)) \n\r
+ * ELSE IF ft > fi \n\r
+ * ADD = 1 \n\r
+ * Z = (ft / (ft - fi)) \n\r
+ * ELSE \n\r
+ * exit function -> Tuned Frequency = Input Frequency \n\r
+ *\r
+ * The equation can be reduced to (X * Y) = Z\r
+ *\r
+ * Frequency Limits \n\r
+ * (1/((div_ceil(256/value) * (2^exp)) + 1)) should be min to get the lowest\r
+ * possible output from Digital Tuner.\n\r
+ * (1/((div_ceil(256/value) * (2^exp)) - 1)) should be min to get the highest\r
+ * possible output from Digital Tuner.\n\r
+ * For that, div_ceil(256/value) & (2^exp) should be minimum \n\r
+ * min (EXP) = 1 (Note: EXP > 0) \n\r
+ * min (div_ceil(256/value)) = 2 \n\r
+ * max (Ft) = (4*fi)/3 \n\r
+ * min (Ft) = (4*fi)/5 \n\r
+ *\r
+ * Using the above details, X & Y that will closely satisfy the equation is\r
+ * found in this function.\r
+ */\r
+uint32_t ast_configure_digital_tuner(Ast *ast,\r
+               uint32_t input_freq, uint32_t tuned_freq)\r
+{\r
+       bool add;\r
+       uint8_t value;\r
+       uint8_t exp;\r
+       uint32_t x, y, z;\r
+       uint32_t diff;\r
+       if (tuned_freq < input_freq) {\r
+               /* Check for Frequency Limit */\r
+               if (tuned_freq < ((4 * input_freq) / 5)) {\r
+                       return 0;\r
+               }\r
+\r
+               /* Set the ADD to 0 when freq less than input freq */\r
+               add = false;\r
+               /* Calculate the frequency difference */\r
+               diff = input_freq - tuned_freq;\r
+       } else if (tuned_freq > input_freq) {\r
+               /* Check for Frequency Limit */\r
+               if (tuned_freq > ((4 * input_freq) / 3)) {\r
+                       return 0;\r
+               }\r
+\r
+               /* Set the ADD to 1 when freq greater than input freq */\r
+               add = true;\r
+               /* Calculate the frequency difference */\r
+               diff = tuned_freq - input_freq;\r
+       } else {\r
+               /* required & input freq are equal */\r
+               return 1;\r
+       }\r
+\r
+       z = (tuned_freq) / (diff);\r
+       if ((tuned_freq % diff) > (diff / 2)) {\r
+               z++;\r
+       }\r
+\r
+       /*\r
+        * Initialize with minimum possible values.\r
+        * exp value should be greater than zero, min(exp) = 1 -> min(x)= (2^1)\r
+        * = 2\r
+        * y should be greater than one -> div_ceil(256/value) where value- 0 to\r
+        * 255\r
+        * min(y) = div_ceil(256/255) = 2\r
+        */\r
+       y = 2;\r
+       x = 2;\r
+       exp = 1;\r
+\r
+       /*\r
+        * Keep exp constant and increase y value until it reaches its limit.\r
+        * Increment exp and follow the same steps until we found the closest\r
+        * possible match for the required frequency.\r
+        */\r
+       do {\r
+               if (y < 255) {\r
+                       y++;\r
+               } else {\r
+                       x = x << 1;\r
+                       y = 2;\r
+                       exp++;\r
+               }\r
+       } while (z > (x * y));\r
+       /* Decrement y value after exit from loop */\r
+       y = y - 1;\r
+       /* Find VALUE from y */\r
+       value = div_ceil(256, y);\r
+       /* Initialize the Digital Tuner using the required parameters */\r
+       ast_init_digital_tuner(ast, add, value, exp);\r
+       return 1;\r
+}\r
+\r
+/**\r
+ * \brief This function will initialize the digital tuner of AST module.\r
+ *\r
+ * \param ast   Base address of the AST.\r
+ * \param add   set to true if frequency has to be increased, false if it\r
+ *              has to be decreased.\r
+ * \param value Parameter used in the formula\r
+ * \param exp   Parameter used in the formula\r
+ *\r
+ * \return 1 if the initialization succeeds otherwise it will return 0.\r
+ */\r
+void ast_init_digital_tuner(Ast *ast, bool add,\r
+               uint8_t value, uint8_t exp)\r
+{\r
+       /* Wait until the ast CTRL register is up-to-date */\r
+       while (ast_is_busy(ast)) {\r
+       }\r
+\r
+       if (add) {\r
+               ast->AST_DTR = AST_DTR_ADD | AST_DTR_VALUE(value) | AST_DTR_EXP(\r
+                               exp);\r
+       } else {\r
+               ast->AST_DTR = AST_DTR_VALUE(value) | AST_DTR_EXP(exp);\r
+       }\r
+\r
+       /* Wait until the ast CTRL register is up-to-date */\r
+       while (ast_is_busy(ast)) {\r
+       }\r
+}\r
+\r
+/**\r
+ * \brief This function will disable the digital tuner of AST module.\r
+ *\r
+ * \param ast   Base address of the AST.\r
+ */\r
+void ast_disable_digital_tuner(Ast *ast)\r
+{\r
+       /* Wait until the ast CTRL register is up-to-date */\r
+       while (ast_is_busy(ast)) {\r
+       }\r
+       ast->AST_DTR &= ~(AST_DTR_VALUE_Msk);\r
+       /* Wait until the ast CTRL register is up-to-date */\r
+       while (ast_is_busy(ast)) {\r
+       }\r
+}\r
+\r
+/**\r
+ * \brief This function sets the AST current calendar value.\r
+ *\r
+ * \param ast          Base address of the AST.\r
+ * \param ast_calendar Startup date\r
+ */\r
+void ast_write_calendar_value(Ast *ast,\r
+               struct ast_calendar calendar)\r
+{\r
+       /* Wait until we can write into the VAL register */\r
+       while (ast_is_busy(ast)) {\r
+       }\r
+       /* Set the new val value */\r
+       ast->AST_CALV = calendar.field;\r
+       /* Wait until write is done */\r
+       while (ast_is_busy(ast)) {\r
+       }\r
+}\r
+\r
+/**\r
+ * \brief This function sets the AST current counter value.\r
+ *\r
+ * \param ast         Base address of the AST.\r
+ * \param ast_counter Startup counter value\r
+ */\r
+void ast_write_counter_value(Ast *ast,\r
+               uint32_t ast_counter)\r
+{\r
+       /* Wait until we can write into the VAL register */\r
+       while (ast_is_busy(ast)) {\r
+       }\r
+       /* Set the new val value */\r
+       ast->AST_CV = ast_counter;\r
+       /* Wait until write is done */\r
+       while (ast_is_busy(ast)) {\r
+       }\r
+}\r
+\r
+/**\r
+ * \brief This function returns the AST current calendar value.\r
+ *\r
+ * \param ast Base address of the AST.\r
+ *\r
+ * \return The AST current calendar value.\r
+ */\r
+struct ast_calendar ast_read_calendar_value(Ast *ast)\r
+{\r
+       struct ast_calendar calendar;\r
+       calendar.field = ast->AST_CALV;\r
+       return calendar;\r
+}\r
+\r
+/**\r
+ * \brief This function set the AST alarm0 value.\r
+ *\r
+ * \param ast         Base address of the AST.\r
+ * \param alarm_value AST alarm0 value.\r
+ */\r
+void ast_write_alarm0_value(Ast *ast, uint32_t alarm_value)\r
+{\r
+       /* Wait until the ast CTRL register is up-to-date */\r
+       while (ast_is_busy(ast)) {\r
+       }\r
+       /* Set the new alarm0 compare value */\r
+       ast->AST_AR0 = alarm_value;\r
+       /* Wait until write is done */\r
+       while (ast_is_busy(ast)) {\r
+       }\r
+}\r
+\r
+/**\r
+ * \brief This function set the AST periodic0 value.\r
+ *\r
+ * \param ast Base address of the AST.\r
+ * \param pir AST periodic0.\r
+ */\r
+void ast_write_periodic0_value(Ast *ast, uint32_t pir)\r
+{\r
+       /* Wait until the ast CTRL register is up-to-date */\r
+       while (ast_is_busy(ast)) {\r
+       }\r
+       /* Set the periodic prescaler value */\r
+       ast->AST_PIR0 = pir;\r
+       /* Wait until write is done */\r
+       while (ast_is_busy(ast)) {\r
+       }\r
+}\r
+\r
+/**\r
+ * \brief This function enables the AST interrupts\r
+ *\r
+ * \param ast             Base address of the AST.\r
+ * \param source  AST Interrupts to be enabled\r
+ */\r
+void ast_enable_interrupt(Ast *ast, ast_interrupt_source_t source)\r
+{\r
+       /* Wait until the ast CTRL register is up-to-date */\r
+       while (ast_is_busy(ast)) {\r
+       }\r
+\r
+       switch (source) {\r
+       case AST_INTERRUPT_ALARM:\r
+               ast->AST_IER = AST_IER_ALARM0_1;\r
+               break;\r
+\r
+       case AST_INTERRUPT_PER:\r
+               ast->AST_IER = AST_IER_PER0_1;\r
+               break;\r
+\r
+       case AST_INTERRUPT_OVF:\r
+               ast->AST_IER = AST_IER_OVF_1;\r
+               break;\r
+\r
+       case AST_INTERRUPT_READY:\r
+               ast->AST_IER = AST_IER_READY_1;\r
+               break;\r
+\r
+       case AST_INTERRUPT_CLKREADY:\r
+               ast->AST_IER = AST_IER_CLKRDY_1;\r
+               break;\r
+\r
+       default:\r
+               break;\r
+       }\r
+\r
+       /* Wait until write is done */\r
+       while (ast_is_busy(ast)) {\r
+       }\r
+}\r
+\r
+/**\r
+ * \brief This function disables the AST interrupts.\r
+ *\r
+ * \param ast              Base address of the AST.\r
+ * \param source   AST Interrupts to be disabled\r
+ */\r
+void ast_disable_interrupt(Ast *ast, ast_interrupt_source_t source)\r
+{\r
+       /* Wait until the ast CTRL register is up-to-date */\r
+       while (ast_is_busy(ast)) {\r
+       }\r
+\r
+       switch (source) {\r
+       case AST_INTERRUPT_ALARM:\r
+               ast->AST_IDR = AST_IDR_ALARM0_1;\r
+               break;\r
+\r
+       case AST_INTERRUPT_PER:\r
+               ast->AST_IDR = AST_IDR_PER0_1;\r
+               break;\r
+\r
+       case AST_INTERRUPT_OVF:\r
+               ast->AST_IDR = AST_IDR_OVF_1;\r
+               break;\r
+\r
+       case AST_INTERRUPT_READY:\r
+               ast->AST_IDR = AST_IDR_READY_1;\r
+               break;\r
+\r
+       case AST_INTERRUPT_CLKREADY:\r
+               ast->AST_IDR = AST_IDR_CLKRDY_1;\r
+               break;\r
+\r
+       default:\r
+               break;\r
+       }\r
+\r
+       /* Wait until write is done */\r
+       while (ast_is_busy(ast)) {\r
+       }\r
+}\r
+\r
+/**\r
+ * \brief This function clears the AST status flags.\r
+ *\r
+ * \param ast          Base address of the AST.\r
+ * \param source  AST status flag to be cleared\r
+ */\r
+void ast_clear_interrupt_flag(Ast *ast, ast_interrupt_source_t source)\r
+{\r
+       /* Wait until the ast CTRL register is up-to-date */\r
+       while (ast_is_busy(ast)) {\r
+       }\r
+\r
+       switch (source) {\r
+       case AST_INTERRUPT_ALARM:\r
+               ast->AST_SCR = AST_SCR_ALARM0;\r
+               break;\r
+\r
+       case AST_INTERRUPT_PER:\r
+               ast->AST_SCR = AST_SCR_PER0;\r
+               break;\r
+\r
+       case AST_INTERRUPT_OVF:\r
+               ast->AST_SCR = AST_SCR_OVF;\r
+               break;\r
+\r
+       case AST_INTERRUPT_READY:\r
+               ast->AST_SCR = AST_SCR_READY;\r
+               break;\r
+\r
+       case AST_INTERRUPT_CLKREADY:\r
+               ast->AST_SCR = AST_SCR_CLKRDY;\r
+               break;\r
+\r
+       default:\r
+               break;\r
+       }\r
+\r
+       /* Wait until write is done */\r
+       while (ast_is_busy(ast)) {\r
+       }\r
+}\r
+\r
+/**\r
+ * \brief Set callback for AST\r
+ *\r
+ * \param ast          Base address of the AST.\r
+ * \param source AST interrupt source.\r
+ * \param callback callback function pointer.\r
+ * \param irq_line  interrupt line.\r
+ * \param irq_level interrupt level.\r
+ */\r
+void ast_set_callback(Ast *ast, ast_interrupt_source_t source,\r
+               ast_callback_t callback, uint8_t irq_line, uint8_t irq_level)\r
+{\r
+       ast_callback_pointer[source] = callback;\r
+       NVIC_ClearPendingIRQ((IRQn_Type)irq_line);\r
+       NVIC_SetPriority((IRQn_Type)irq_line, irq_level);\r
+       NVIC_EnableIRQ((IRQn_Type)irq_line);\r
+       ast_enable_interrupt(ast, source);\r
+}\r
+\r
+/**\r
+ * \brief Interrupt handler for AST.\r
+ */\r
+void ast_interrupt_handler(void)\r
+{\r
+       uint32_t status, mask;\r
+\r
+       status = ast_read_status(AST);\r
+       mask = ast_read_interrupt_mask(AST);\r
+\r
+       if ((status & AST_SR_ALARM0) && (mask & AST_IMR_ALARM0)) {\r
+               ast_callback_pointer[AST_INTERRUPT_ALARM]();\r
+       }\r
+\r
+       if ((status & AST_SR_PER0) && (mask & AST_IMR_PER0)) {\r
+               ast_callback_pointer[AST_INTERRUPT_PER]();\r
+       }\r
+\r
+       if ((status & AST_SR_OVF) && (mask & AST_IMR_OVF_1)) {\r
+               ast_callback_pointer[AST_INTERRUPT_OVF]();\r
+       }\r
+\r
+       if ((status & AST_SR_READY) && (mask & AST_IMR_READY_1)) {\r
+               ast_callback_pointer[AST_INTERRUPT_READY]();\r
+       }\r
+\r
+       if ((status & AST_SR_CLKRDY) && (mask & AST_IMR_CLKRDY_1)) {\r
+               ast_callback_pointer[AST_INTERRUPT_CLKREADY]();\r
+       }\r
+}\r
+\r
+/**\r
+ * \brief Interrupt handler for AST periodic.\r
+ */\r
+#ifdef AST_PER_ENABLE\r
+void AST_PER_Handler(void)\r
+{\r
+       ast_interrupt_handler();\r
+}\r
+#endif\r
+\r
+/**\r
+ * \brief Interrupt handler for AST alarm.\r
+ */\r
+#ifdef AST_ALARM_ENABLE\r
+void AST_ALARM_Handler(void)\r
+{\r
+       ast_interrupt_handler();\r
+}\r
+\r
+#endif\r
+\r
+/**\r
+ * \brief Interrupt handler for AST periodic.\r
+ */\r
+#ifdef AST_OVF_ENABLE\r
+void AST_OVF_Handler(void)\r
+{\r
+       ast_interrupt_handler();\r
+}\r
+\r
+#endif\r
+\r
+/**\r
+ * \brief Interrupt handler for AST alarm.\r
+ */\r
+#ifdef AST_READY_ENABLE\r
+void AST_READY_Handler(void)\r
+{\r
+       ast_interrupt_handler();\r
+}\r
+\r
+#endif\r
+\r
+/**\r
+ * \brief Interrupt handler for AST periodic.\r
+ */\r
+#ifdef AST_CLKREADY_ENABLE\r
+void AST_CLKREADY_Handler(void)\r
+{\r
+       ast_interrupt_handler();\r
+}\r
+\r
+#endif\r
+\r
+/**\r
+ * \brief This function enables the AST Asynchronous wake-up.\r
+ *\r
+ * \param ast          Base address of the AST.\r
+ * \param source  AST wake-up flag to be enabled.\r
+ */\r
+void ast_enable_wakeup(Ast *ast, ast_wakeup_source_t source)\r
+{\r
+       /* Wait until the ast CTRL register is up-to-date */\r
+       while (ast_is_busy(ast)) {\r
+       }\r
+\r
+       switch (source) {\r
+       case AST_WAKEUP_ALARM:\r
+               ast->AST_WER |= AST_WER_ALARM0_1;\r
+               break;\r
+\r
+       case AST_WAKEUP_PER:\r
+               ast->AST_WER |= AST_WER_PER0_1;\r
+               break;\r
+\r
+       case AST_WAKEUP_OVF:\r
+               ast->AST_WER |= AST_WER_OVF_1;\r
+               break;\r
+\r
+       default:\r
+               break;\r
+       }\r
+\r
+       /* Wait until write is done */\r
+       while (ast_is_busy(ast)) {\r
+       }\r
+}\r
+\r
+/**\r
+ * \brief This function disables the AST Asynchronous wake-up.\r
+ * 8\r
+ * \param ast          Base address of the AST.\r
+ * \param source  AST wake-up flag to be disabled.\r
+ */\r
+void ast_disable_wakeup(Ast *ast, ast_wakeup_source_t source)\r
+{\r
+       /* Wait until the ast CTRL register is up-to-date */\r
+       while (ast_is_busy(ast)) {\r
+       }\r
+\r
+       switch (source) {\r
+       case AST_WAKEUP_ALARM:\r
+               ast->AST_WER &= ~AST_WER_ALARM0_1;\r
+               break;\r
+\r
+       case AST_WAKEUP_PER:\r
+               ast->AST_WER &= ~AST_WER_PER0_1;\r
+               break;\r
+\r
+       case AST_WAKEUP_OVF:\r
+               ast->AST_WER &= ~AST_WER_OVF_1;\r
+               break;\r
+\r
+       default:\r
+               break;\r
+       }\r
+\r
+       /* Wait until write is done */\r
+       while (ast_is_busy(ast)) {\r
+       }\r
+}\r
+\r
+/**\r
+ * \brief This function enables the AST event.\r
+ *\r
+ * \param ast          Base address of the AST.\r
+ * \param source  AST event flag to be enabled.\r
+ */\r
+void ast_enable_event(Ast *ast, ast_event_source_t source)\r
+{\r
+       /* Wait until the ast CTRL register is up-to-date */\r
+       while (ast_is_busy(ast)) {\r
+       }\r
+\r
+       switch (source) {\r
+       case AST_EVENT_ALARM:\r
+               ast->AST_EVE = AST_EVE_ALARM0;\r
+               break;\r
+\r
+       case AST_EVENT_PER:\r
+               ast->AST_EVE = AST_EVE_PER0;\r
+               break;\r
+\r
+       case AST_EVENT_OVF:\r
+               ast->AST_EVE = AST_EVE_OVF;\r
+               break;\r
+\r
+       default:\r
+               break;\r
+       }\r
+\r
+       /* Wait until write is done */\r
+       while (ast_is_busy(ast)) {\r
+       }\r
+}\r
+\r
+/**\r
+ * \brief This function disables the AST event.\r
+ *\r
+ * \param ast          Base address of the AST.\r
+ * \param source  AST event flag to be disabled.\r
+ */\r
+void ast_disable_event(Ast *ast, ast_event_source_t source)\r
+{\r
+       /* Wait until the ast CTRL register is up-to-date */\r
+       while (ast_is_busy(ast)) {\r
+       }\r
+\r
+       switch (source) {\r
+       case AST_EVENT_ALARM:\r
+               ast->AST_EVD = AST_EVD_ALARM0;\r
+               break;\r
+\r
+       case AST_EVENT_PER:\r
+               ast->AST_EVD = AST_EVD_PER0;\r
+               break;\r
+\r
+       case AST_EVENT_OVF:\r
+               ast->AST_EVD = AST_EVD_OVF;\r
+               break;\r
+\r
+       default:\r
+               break;\r
+       }\r
+\r
+       /* Wait until write is done */\r
+       while (ast_is_busy(ast)) {\r
+       }\r
+}\r
diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/asf/sam/drivers/ast/ast.h b/FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/asf/sam/drivers/ast/ast.h
new file mode 100644 (file)
index 0000000..60b033d
--- /dev/null
@@ -0,0 +1,356 @@
+/**\r
+ * \file\r
+ *\r
+ * \brief AST driver for SAM.\r
+ *\r
+ * Copyright (C) 2012-2013 Atmel Corporation. All rights reserved.\r
+ *\r
+ * \asf_license_start\r
+ *\r
+ * \page License\r
+ *\r
+ * Redistribution and use in source and binary forms, with or without\r
+ * modification, are permitted provided that the following conditions are met:\r
+ *\r
+ * 1. Redistributions of source code must retain the above copyright notice,\r
+ *    this list of conditions and the following disclaimer.\r
+ *\r
+ * 2. Redistributions in binary form must reproduce the above copyright notice,\r
+ *    this list of conditions and the following disclaimer in the documentation\r
+ *    and/or other materials provided with the distribution.\r
+ *\r
+ * 3. The name of Atmel may not be used to endorse or promote products derived\r
+ *    from this software without specific prior written permission.\r
+ *\r
+ * 4. This software may only be redistributed and used in connection with an\r
+ *    Atmel microcontroller product.\r
+ *\r
+ * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED\r
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\r
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE\r
+ * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR\r
+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\r
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS\r
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)\r
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,\r
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\r
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\r
+ * POSSIBILITY OF SUCH DAMAGE.\r
+ *\r
+ * \asf_license_stop\r
+ *\r
+ */\r
+\r
+#ifndef AST_H_INCLUDED\r
+#define AST_H_INCLUDED\r
+\r
+/**\r
+ * \defgroup group_sam_drivers_ast AST - Asynchronous Timer\r
+ *\r
+ * Driver for the AST (Asynchronous Timer).\r
+ * Provides functions for configuring and operating the AST in the calendar or\r
+ * timer/counter modes.\r
+ *\r
+ * \{\r
+ */\r
+\r
+#include "compiler.h"\r
+\r
+/// @cond 0 */\r
+/**INDENT-OFF**/\r
+#ifdef __cplusplus\r
+extern "C" {\r
+#endif\r
+/**INDENT-ON**/\r
+/// @endcond */\r
+\r
+/** Timeout to prevent code hang in clock initialization */\r
+#define AST_POLL_TIMEOUT 10000\r
+\r
+/** \name Predefined PSEL Values\r
+ */\r
+/* @{ */\r
+\r
+/**\r
+ * The PSEL value to set the AST source clock (after the prescaler) to 1 Hz,\r
+ * when using an external 32-kHz crystal.\r
+ */\r
+#define AST_PSEL_32KHZ_1HZ    14\r
+\r
+/**\r
+ * The PSEL value to set the AST source clock (after the prescaler)\r
+ * to 1.76 Hz when using the internal RC oscillator (~ 115 kHz)\r
+ */\r
+#define AST_PSEL_RC_1_76HZ    15\r
+\r
+/* @} */\r
+\r
+/* Description for Calendar Field.*/\r
+struct ast_calv {\r
+       uint32_t sec   : 6;\r
+       uint32_t min   : 6;\r
+       uint32_t hour  : 5;\r
+       uint32_t day   : 5;\r
+       uint32_t month : 4;\r
+       uint32_t year  : 6;\r
+};\r
+\r
+/* Input when initializing AST in calendar mode.*/\r
+struct ast_calendar {\r
+       union {\r
+               uint32_t field;\r
+               struct ast_calv FIELD;\r
+       };\r
+};\r
+\r
+typedef enum ast_mode {\r
+       AST_COUNTER_MODE  = 0,\r
+       AST_CALENDAR_MODE = 1,\r
+} ast_mode_t;\r
+\r
+typedef enum ast_oscillator_type {\r
+       AST_OSC_RC    = 0,\r
+       AST_OSC_32KHZ = 1,\r
+       AST_OSC_PB    = 2,\r
+       AST_OSC_GCLK  = 3,\r
+       AST_OSC_1KHZ  = 4,\r
+} ast_oscillator_type_t;\r
+\r
+#define AST_INTERRUPT_SOURCE_NUM    5\r
+typedef enum ast_interrupt_source {\r
+       AST_INTERRUPT_ALARM = 0,\r
+       AST_INTERRUPT_PER,\r
+       AST_INTERRUPT_OVF,\r
+       AST_INTERRUPT_READY,\r
+       AST_INTERRUPT_CLKREADY,\r
+} ast_interrupt_source_t;\r
+\r
+typedef enum ast_wakeup_source {\r
+       AST_WAKEUP_ALARM = 0,\r
+       AST_WAKEUP_PER,\r
+       AST_WAKEUP_OVF,\r
+} ast_wakeup_source_t;\r
+\r
+typedef enum ast_event_source {\r
+       AST_EVENT_ALARM = 0,\r
+       AST_EVENT_PER,\r
+       AST_EVENT_OVF,\r
+} ast_event_source_t;\r
+\r
+struct ast_config {\r
+       /*\r
+        * Mode: Calendar mode:\r
+        * \ref AST_CALENDAR_MODE or\r
+        * \ref Counter mode: AST_COUNTER_MODE.\r
+        */\r
+       ast_mode_t mode;\r
+       /* Oscillator type */\r
+       ast_oscillator_type_t osc_type;\r
+       /* Prescaler Value. */\r
+       uint8_t psel;\r
+       /* Initial counter Value. */\r
+       uint32_t counter;\r
+       /* Initial calendar Value. */\r
+       struct ast_calendar calendar;\r
+};\r
+\r
+typedef void (*ast_callback_t)(void);\r
+\r
+bool ast_is_enabled(Ast *ast);\r
+\r
+void ast_enable(Ast *ast);\r
+void ast_disable(Ast *ast);\r
+\r
+uint32_t ast_set_config(Ast *ast, struct ast_config *ast_conf);\r
+void ast_set_callback(Ast *ast, ast_interrupt_source_t source,\r
+               ast_callback_t callback, uint8_t irq_line, uint8_t irq_level);\r
+uint32_t ast_configure_digital_tuner(Ast *ast, uint32_t input_freq,\r
+               uint32_t tuned_freq);\r
+void ast_init_digital_tuner(Ast *ast, bool add, uint8_t value,\r
+               uint8_t exp);\r
+void ast_disable_digital_tuner(Ast *ast);\r
+\r
+void ast_write_calendar_value(Ast *ast, struct ast_calendar ast_calendar);\r
+struct ast_calendar ast_read_calendar_value(Ast *ast);\r
+void ast_write_counter_value(Ast *ast, uint32_t ast_counter);\r
+void ast_enable_counter_clear_on_alarm(Ast *ast, uint8_t alarm_channel);\r
+void ast_clear_prescalar(Ast *ast);\r
+\r
+/**\r
+ * \brief This function returns the AST current counter value.\r
+ *\r
+ * \param ast Base address of the AST.\r
+ *\r
+ * \return The AST current counter value.\r
+ */\r
+static inline uint32_t ast_read_counter_value(Ast *ast)\r
+{\r
+       return ast->AST_CV;\r
+}\r
+\r
+/**\r
+ * \brief Check the busy status of AST clock\r
+ *\r
+ * \param ast Base address of the AST.\r
+ *\r
+ * \return 1 If AST clock is busy, else it will return 0.\r
+ */\r
+static inline bool ast_is_clkbusy(Ast *ast)\r
+{\r
+       return (ast->AST_SR & AST_SR_CLKBUSY) != 0;\r
+}\r
+\r
+/**\r
+ * \brief Check the busy status of AST.\r
+ *\r
+ * \param ast Base address of the AST.\r
+ *\r
+ * \return 1 If AST is busy, else it will return 0.\r
+ */\r
+static inline bool ast_is_busy(Ast *ast)\r
+{\r
+       return (ast->AST_SR & AST_SR_BUSY) != 0;\r
+}\r
+\r
+/**\r
+ * \brief Get status of AST.\r
+ *\r
+ * \param ast Base address of the AST (i.e. Ast).\r
+ *\r
+ * \return status of AST.\r
+ */\r
+static inline uint32_t ast_read_status(Ast *ast)\r
+{\r
+       return ast->AST_SR;\r
+}\r
+\r
+/**\r
+ * \brief This function return the AST interrupts mask value.\r
+ *\r
+ * \param ast             Base address of the AST.\r
+ *\r
+ * \return Interrupt mask value\r
+ */\r
+static inline uint32_t ast_read_interrupt_mask(Ast *ast)\r
+{\r
+       return ast->AST_IMR;\r
+}\r
+\r
+void ast_write_alarm0_value(Ast *ast, uint32_t alarm_value);\r
+void ast_write_periodic0_value(Ast *ast, uint32_t pir);\r
+\r
+void ast_enable_interrupt(Ast *ast, ast_interrupt_source_t source);\r
+void ast_disable_interrupt(Ast *ast, ast_interrupt_source_t source);\r
+void ast_clear_interrupt_flag(Ast *ast, ast_interrupt_source_t source);\r
+\r
+void ast_enable_wakeup(Ast *ast, ast_wakeup_source_t source);\r
+void ast_disable_wakeup(Ast *ast, ast_wakeup_source_t source);\r
+\r
+void ast_enable_event(Ast *ast, ast_event_source_t source);\r
+void ast_disable_event(Ast *ast, ast_event_source_t source);\r
+\r
+/// @cond 0 */\r
+/**INDENT-OFF**/\r
+#ifdef __cplusplus\r
+}\r
+#endif\r
+/**INDENT-ON**/\r
+/// @endcond */\r
+\r
+/**\r
+ * \}\r
+ */\r
+\r
+/**\r
+ * \page sam_ast_quick_start Quick Start Guide for the AST driver\r
+ *\r
+ * This is the quick start guide for the \ref group_sam_drivers_ast, with\r
+ * step-by-step instructions on how to configure and use the driver for\r
+ * a specific use case.The code examples can be copied into e.g the main\r
+ * application loop or any other function that will need to control the\r
+ * AST module.\r
+ *\r
+ * \section ast_qs_use_cases Use cases\r
+ * - \ref ast_basic\r
+ *\r
+ * \section ast_basic AST basic usage\r
+ *\r
+ * This use case will demonstrate how to initialize the AST module to\r
+ * calendar or counter mode.\r
+ *\r
+ *\r
+ * \section ast_basic_setup Setup steps\r
+ *\r
+ * \subsection ast_basic_prereq Prerequisites\r
+ *\r
+ * This module requires the following service\r
+ * - \ref clk_group\r
+ *\r
+ * \subsection ast_basic_setup_code\r
+ *\r
+ * Add this to the main loop or a setup function:\r
+ * \code\r
+ * osc_priv_enable_osc32();\r
+ * \endcode\r
+ *\r
+ * \subsection ast_basic_setup_workflow\r
+ *\r
+ * -# Enable the AST module\r
+ *  - \code ast_enable(AST); \endcode\r
+ * -# Initialize the AST to counter mode\r
+ *  - \code\r
+ * struct ast_config ast_conf;\r
+ * ast_conf.mode = AST_COUNTER_MODE;\r
+ * ast_conf.osc_type = AST_OSC_32KHZ;\r
+ * ast_conf.psel = AST_PSEL_32KHZ_1HZ;\r
+ * ast_conf.counter = 0;\r
+ * ast_set_config(AST, &ast_conf)\r
+ * \endcode\r
+ * -# Or initialize the AST to calendar mode\r
+ *  - \code\r
+ * struct ast_calendar calendar;\r
+ * struct ast_config ast_conf;\r
+ * calendar.FIELD.sec = 0;\r
+ * calendar.FIELD.min = 15;\r
+ * calendar.FIELD.hour = 12;\r
+ * calendar.FIELD.day = 20;\r
+ * calendar.FIELD.month = 9;\r
+ * calendar.FIELD.year = 12;\r
+ * struct ast_config ast_conf;\r
+ * ast_conf.mode = AST_CALENDAR_MODE;\r
+ * ast_conf.osc_type = AST_OSC_32KHZ;\r
+ * ast_conf.psel = AST_PSEL_32KHZ_1HZ;\r
+ * ast_conf.calendar = calendar;\r
+ * ast_set_config(AST, &ast_conf)\r
+ * \endcode\r
+ *  - \note We need to set the clock after prescaler to 1HZ.\r
+ *\r
+ *\r
+ * \section ast_basic_usage Usage steps\r
+ *\r
+ * \subsection ast_basic_usage_code\r
+ *\r
+ * We can get the calendar value by\r
+ * \code\r
+ * calendar = ast_read_calendar_value(AST);\r
+ * \endcode\r
+ * Or we can get the counter value by\r
+ * \code\r
+ * ast_counter = ast_read_counter_value(AST);\r
+ * \endcode\r
+ *\r
+ * We can set the alarm interrupt by\r
+ * \code\r
+ * ast_write_alarm0_value(AST, calendar.field + 1);\r
+ * ast_set_callback(AST, ast_interrupt_alarm, ast_alarm_callback,\r
+ *    AST_ALARM_IRQn, 1);\r
+ * \endcode\r
+ * And we can set the periodic interrupt by\r
+ * \code\r
+ * ast_write_periodic0_value(AST, AST_PSEL_32KHZ_1HZ - 4);\r
+ * ast_set_callback(AST, ast_interrupt_per, ast_per_callback,\r
+ *    AST_PER_IRQn, 1);\r
+ * \endcode\r
+ */\r
+\r
+#endif  /* AST_H_INCLUDED */\r
diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/asf/sam/drivers/bpm/bpm.c b/FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/asf/sam/drivers/bpm/bpm.c
new file mode 100644 (file)
index 0000000..407034e
--- /dev/null
@@ -0,0 +1,298 @@
+/**\r
+ * \file\r
+ *\r
+ * \brief BPM driver\r
+ *\r
+ * Copyright (c) 2012 - 2013 Atmel Corporation. All rights reserved.\r
+ *\r
+ * \asf_license_start\r
+ *\r
+ * \page License\r
+ *\r
+ * Redistribution and use in source and binary forms, with or without\r
+ * modification, are permitted provided that the following conditions are met:\r
+ *\r
+ * 1. Redistributions of source code must retain the above copyright notice,\r
+ *    this list of conditions and the following disclaimer.\r
+ *\r
+ * 2. Redistributions in binary form must reproduce the above copyright notice,\r
+ *    this list of conditions and the following disclaimer in the documentation\r
+ *    and/or other materials provided with the distribution.\r
+ *\r
+ * 3. The name of Atmel may not be used to endorse or promote products derived\r
+ *    from this software without specific prior written permission.\r
+ *\r
+ * 4. This software may only be redistributed and used in connection with an\r
+ *    Atmel microcontroller product.\r
+ *\r
+ * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED\r
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\r
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE\r
+ * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR\r
+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\r
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS\r
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)\r
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,\r
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\r
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\r
+ * POSSIBILITY OF SUCH DAMAGE.\r
+ *\r
+ * \asf_license_stop\r
+ *\r
+ */\r
+\r
+#include "compiler.h"\r
+#include "bpm.h"\r
+\r
+RAMFUNC bool bpm_ps_no_halt_exec(Bpm *bpm, uint32_t pmcon);\r
+/**\r
+ * \brief Execute Power Scaling No Halt with a delay loop\r
+ *\r
+ * \note SysTick is used to check timeout.\r
+ *\r
+ * \param bpm BPM register base\r
+ * \param pmcon BPM_PMCON value to write\r
+ *\r
+ * \return PSOK status, true if set.\r
+ */\r
+RAMFUNC bool bpm_ps_no_halt_exec(Bpm *bpm, uint32_t pmcon)\r
+{\r
+       bool b_psok = false;\r
+       bool b_timeout = false;\r
+       BPM_UNLOCK(PMCON);\r
+       bpm->BPM_PMCON = pmcon;\r
+       do {\r
+               b_psok = (BPM->BPM_SR & BPM_SR_PSOK);\r
+               b_timeout = (SysTick->CTRL & SysTick_CTRL_COUNTFLAG_Msk);\r
+       } while (!b_psok && !b_timeout);\r
+       return b_psok;\r
+}\r
+\r
+\r
+bool bpm_power_scaling_cpu_failsafe(Bpm *bpm, uint32_t ps_value,\r
+       uint32_t timeout)\r
+{\r
+       uint32_t pmcon = 0;\r
+\r
+       /* Read last PM_CON value */\r
+       pmcon = bpm->BPM_PMCON;\r
+\r
+       /* Clear last PS Value & Write new one */\r
+       pmcon &= ~BPM_PMCON_PS_Msk;\r
+       pmcon |= BPM_PMCON_PS(ps_value);\r
+\r
+       /* Set PSCM Value: PS change no halt */\r
+       pmcon |= BPM_PMCON_PSCM;\r
+\r
+       /* Power Scaling Change Request */\r
+       pmcon |= BPM_PMCON_PSCREQ;\r
+\r
+       /* Execute power scaling no halt in RAM */\r
+       irqflags_t flags;\r
+       bool b_psok;\r
+       uint32_t ctrl, load, val;\r
+       /* Avoid interrupt while flash halt */\r
+       flags = cpu_irq_save();\r
+\r
+       /* Save SysTick */\r
+       val = SysTick->VAL;\r
+       ctrl = SysTick->CTRL;\r
+       load = SysTick->LOAD;\r
+       /* Setup SysTick & start counting */\r
+       SysTick->LOAD = timeout;\r
+       SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk | SysTick_CTRL_ENABLE_Msk;\r
+\r
+       b_psok = bpm_ps_no_halt_exec(bpm, pmcon);\r
+\r
+       /* Restore SysTick */\r
+       SysTick->CTRL = 0;\r
+       SysTick->LOAD = load;\r
+       SysTick->VAL = val;\r
+       SysTick->CTRL = ctrl;\r
+\r
+       cpu_irq_restore(flags);\r
+       return b_psok;\r
+}\r
+\r
+void bpm_power_scaling_cpu(Bpm *bpm, uint32_t ps_value)\r
+{\r
+       uint32_t pmcon = 0;\r
+       /* Read last PM_CON value */\r
+       pmcon = bpm->BPM_PMCON;\r
+       /* Clear last PS Value */\r
+       pmcon &= ~BPM_PMCON_PS_Msk;\r
+       /* Write new PS Value */\r
+       pmcon |= BPM_PMCON_PS(ps_value);\r
+       /* PSCM: without CPU halt */\r
+       pmcon |= BPM_PMCON_PSCM;\r
+       /* Power Scaling Change Request */\r
+       pmcon |= BPM_PMCON_PSCREQ;\r
+       /* Unlock PMCON register */\r
+       BPM_UNLOCK(PMCON);\r
+       /* Write back PM_CON value */\r
+       bpm->BPM_PMCON = pmcon;\r
+}\r
+\r
+void bpm_enable_fast_wakeup(Bpm *bpm)\r
+{\r
+       uint32_t pmcon = bpm->BPM_PMCON | BPM_PMCON_FASTWKUP;\r
+       BPM_UNLOCK(PMCON);\r
+       bpm->BPM_PMCON = pmcon;\r
+}\r
+\r
+void bpm_disable_fast_wakeup(Bpm *bpm)\r
+{\r
+       uint32_t pmcon = bpm->BPM_PMCON & (~BPM_PMCON_FASTWKUP);\r
+       BPM_UNLOCK(PMCON);\r
+       bpm->BPM_PMCON = pmcon;\r
+}\r
+\r
+void bpm_set_clk32_source(Bpm *bpm, uint32_t source)\r
+{\r
+       uint32_t pmcon;\r
+\r
+       /* Read PMCON first */\r
+       pmcon = bpm->BPM_PMCON;\r
+       if (source == BPM_CLK32_SOURCE_OSC32K) {\r
+               /* Clear CK32S for OSC32K */\r
+               pmcon &= ~BPM_PMCON_CK32S;\r
+       } else {\r
+               /* Set CK32S for RC32K */\r
+               pmcon |= BPM_PMCON_CK32S;\r
+       }\r
+\r
+       /* Unlock PMCON register */\r
+       BPM_UNLOCK(PMCON);\r
+       bpm->BPM_PMCON = pmcon;\r
+}\r
+\r
+uint32_t bpm_get_backup_wakeup_cause(Bpm *bpm)\r
+{\r
+       return bpm->BPM_BKUPWCAUSE;\r
+}\r
+\r
+void bpm_enable_wakeup_source(Bpm *bpm, uint32_t sources)\r
+{\r
+       /* Write BKUPWEN value */\r
+       bpm->BPM_BKUPWEN |= sources;\r
+}\r
+\r
+void bpm_disable_wakeup_source(Bpm *bpm, uint32_t sources)\r
+{\r
+       /* Write BKUPWEN value */\r
+       bpm->BPM_BKUPWEN &= ~sources;\r
+}\r
+\r
+void bpm_enable_backup_pin(Bpm *bpm, uint32_t backup_pins)\r
+{\r
+       /* Write back BKUPPMUX value */\r
+       bpm->BPM_BKUPPMUX |= backup_pins;\r
+}\r
+\r
+void bpm_disable_backup_pin(Bpm *bpm, uint32_t backup_pins)\r
+{\r
+       /* Write back BKUPPMUX value */\r
+       bpm->BPM_BKUPPMUX &= ~backup_pins;\r
+}\r
+\r
+void bpm_enable_io_retention(Bpm *bpm)\r
+{\r
+       bpm->BPM_IORET |= BPM_IORET_RET;\r
+}\r
+\r
+void bpm_disable_io_retention(Bpm *bpm)\r
+{\r
+       bpm->BPM_IORET &= ~BPM_IORET_RET;\r
+}\r
+\r
+void bpm_enable_interrupt(Bpm *bpm, uint32_t sources)\r
+{\r
+       bpm->BPM_IER = sources;\r
+}\r
+\r
+void bpm_disable_interrupt(Bpm *bpm, uint32_t sources)\r
+{\r
+       bpm->BPM_IDR = sources;\r
+}\r
+\r
+uint32_t bpm_get_interrupt_mask(Bpm *bpm)\r
+{\r
+       return bpm->BPM_IMR;\r
+}\r
+\r
+uint32_t bpm_get_interrupt_status(Bpm *bpm)\r
+{\r
+       return bpm->BPM_ISR;\r
+}\r
+\r
+void bpm_clear_interrupt(Bpm *bpm, uint32_t sources)\r
+{\r
+       bpm->BPM_ICR = sources;\r
+}\r
+\r
+uint32_t bpm_get_status(Bpm *bpm)\r
+{\r
+       return bpm->BPM_SR;\r
+}\r
+\r
+uint32_t bpm_get_version(Bpm *bpm)\r
+{\r
+       return bpm->BPM_VERSION;\r
+}\r
+\r
+void bpm_sleep(Bpm *bpm, uint32_t sleep_mode)\r
+{\r
+       uint32_t pmcon;\r
+\r
+       /* Read PMCON register */\r
+       pmcon = bpm->BPM_PMCON;\r
+       pmcon &= ~BPM_PMCON_BKUP;\r
+       pmcon &= ~BPM_PMCON_RET;\r
+       pmcon &= ~BPM_PMCON_SLEEP_Msk;\r
+\r
+       /* Unlock PMCON register */\r
+       BPM_UNLOCK(PMCON);\r
+\r
+       if (sleep_mode == BPM_SM_SLEEP_0) {\r
+               pmcon |= BPM_PMCON_SLEEP(0);\r
+               bpm->BPM_PMCON = pmcon;\r
+               SCB->SCR &= ~SCB_SCR_SLEEPDEEP_Msk;\r
+       } else if (sleep_mode == BPM_SM_SLEEP_1) {\r
+               pmcon |= BPM_PMCON_SLEEP(1);\r
+               bpm->BPM_PMCON = pmcon;\r
+               SCB->SCR &= ~SCB_SCR_SLEEPDEEP_Msk;\r
+       } else if (sleep_mode == BPM_SM_SLEEP_2) {\r
+               pmcon |= BPM_PMCON_SLEEP(2);\r
+               bpm->BPM_PMCON = pmcon;\r
+               SCB->SCR &= ~SCB_SCR_SLEEPDEEP_Msk;\r
+       } else if (sleep_mode == BPM_SM_SLEEP_3) {\r
+               pmcon |= BPM_PMCON_SLEEP(3);\r
+               bpm->BPM_PMCON = pmcon;\r
+               SCB->SCR &= ~SCB_SCR_SLEEPDEEP_Msk;\r
+       } else if (sleep_mode == BPM_SM_WAIT) {\r
+               bpm->BPM_PMCON = pmcon;\r
+               SCB->SCR |= SCB_SCR_SLEEPDEEP_Msk;\r
+       } else if (sleep_mode == BPM_SM_RET) {\r
+               pmcon |= BPM_PMCON_RET;\r
+               bpm->BPM_PMCON = pmcon;\r
+               SCB->SCR |= SCB_SCR_SLEEPDEEP_Msk;\r
+       } else { /* if (sleep_mode == BPM_SM_BACKUP) */\r
+               pmcon |= BPM_PMCON_BKUP;\r
+               bpm->BPM_PMCON = pmcon;\r
+               SCB->SCR |= SCB_SCR_SLEEPDEEP_Msk;\r
+       }\r
+\r
+       /* Wait until vreg is ok. */\r
+       while(!(BSCIF->BSCIF_PCLKSR & BSCIF_PCLKSR_VREGOK));\r
+       asm volatile ("wfi");\r
+       /* ensure sleep request propagation to flash. */\r
+       asm volatile ("nop");\r
+\r
+       /* The interrupts wake-up from the previous wfi, but there are still\r
+        * masked since we are in the critical section thanks to the previous\r
+        * set_pri_mask(1). Thus, we need to leave the critical section.\r
+        * Please note that we should probably use something like\r
+        * cpu_leave_critical(), using set_pri_mask(0)\r
+        */\r
+       cpu_irq_enable();\r
+}\r
diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/asf/sam/drivers/bpm/bpm.h b/FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/asf/sam/drivers/bpm/bpm.h
new file mode 100644 (file)
index 0000000..eecb74a
--- /dev/null
@@ -0,0 +1,501 @@
+/**\r
+ * \file\r
+ *\r
+ * \brief BPM driver.\r
+ *\r
+ * Copyright (C) 2012 - 2013 Atmel Corporation. All rights reserved.\r
+ *\r
+ * \asf_license_start\r
+ *\r
+ * \page License\r
+ *\r
+ * Redistribution and use in source and binary forms, with or without\r
+ * modification, are permitted provided that the following conditions are met:\r
+ *\r
+ * 1. Redistributions of source code must retain the above copyright notice,\r
+ *    this list of conditions and the following disclaimer.\r
+ *\r
+ * 2. Redistributions in binary form must reproduce the above copyright notice,\r
+ *    this list of conditions and the following disclaimer in the documentation\r
+ *    and/or other materials provided with the distribution.\r
+ *\r
+ * 3. The name of Atmel may not be used to endorse or promote products derived\r
+ *    from this software without specific prior written permission.\r
+ *\r
+ * 4. This software may only be redistributed and used in connection with an\r
+ *    Atmel microcontroller product.\r
+ *\r
+ * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED\r
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\r
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE\r
+ * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR\r
+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\r
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS\r
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)\r
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,\r
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\r
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\r
+ * POSSIBILITY OF SUCH DAMAGE.\r
+ *\r
+ * \asf_license_stop\r
+ *\r
+ */\r
+\r
+#ifndef BPM_H_INCLUDED\r
+#define BPM_H_INCLUDED\r
+\r
+#include "compiler.h"\r
+\r
+#ifdef __cplusplus\r
+extern "C" {\r
+#endif\r
+\r
+/**\r
+ * \defgroup group_sam_drivers_bpm BPM - Backup Power Manager\r
+ *\r
+ * Driver for the BPM (Backup Power Manager).\r
+ * This driver provides access to the main features of the BPM controller.\r
+ * It provides functions for different power mode management.\r
+ *\r
+ * @{\r
+ */\r
+\r
+/** BPM unlock macro */\r
+#define BPM_UNLOCK(reg) \\r
+       do { \\r
+               BPM->BPM_UNLOCK = BPM_UNLOCK_KEY(0xAAu)                          \\r
+                       | BPM_UNLOCK_ADDR((uint32_t)&BPM->BPM_##reg - (uint32_t)BPM);\\r
+       } while (0)\r
+\r
+/** \name Sleep mode definitions */\r
+/* @{ */\r
+#define BPM_SM_ACTIVE    0    /**< Active mode */\r
+#define BPM_SM_SLEEP_0   1    /**< Sleep mode 0 */\r
+#define BPM_SM_SLEEP_1   2    /**< Sleep mode 1 */\r
+#define BPM_SM_SLEEP_2   3    /**< Sleep mode 2 */\r
+#define BPM_SM_SLEEP_3   4    /**< Sleep mode 3 */\r
+#define BPM_SM_WAIT      5    /**< Wait mode */\r
+#define BPM_SM_RET       6    /**< Retention mode */\r
+#define BPM_SM_BACKUP    7    /**< Backup mode */\r
+/* @} */\r
+\r
+/** \anchor power_scaling_change_mode */\r
+/** \name Power scaling change mode */\r
+/* @{ */\r
+/** Power scaling change mode: halting the CPU execution */\r
+#define BPM_PSCM_CPU_HALT           0\r
+/** Power scaling change mode: CPU execution not halted */\r
+#define BPM_PSCM_CPU_NOT_HALT       1\r
+/* @} */\r
+\r
+/** \anchor power_scaling_mode_value */\r
+/** \name Power scaling mode value */\r
+/* @{ */\r
+/** Power scaling mode 0 */\r
+#define BPM_PS_0    0\r
+/** Power scaling mode 1 */\r
+#define BPM_PS_1    1\r
+/** Power scaling mode 2 */\r
+#define BPM_PS_2    2\r
+/* @} */\r
+\r
+/** \anchor CLK32_32Khz_1Khz */\r
+/** \name CLK32 32Khz-1Khz clock source selection */\r
+/* @{ */\r
+/** OSC32K : Low frequency crystal oscillator */\r
+#define BPM_CLK32_SOURCE_OSC32K  0\r
+/** RC32K : Internal Low frequency RC oscillator */\r
+#define BPM_CLK32_SOURCE_RC32K   1\r
+/* @} */\r
+\r
+/** \anchor backup_wake_up_sources */\r
+/** \name Backup wake up sources */\r
+/* @{ */\r
+/** EIC wake up */\r
+#define BPM_BKUP_WAKEUP_SRC_EIC       (1UL << BPM_BKUPWEN_EIC)\r
+/** AST wake up */\r
+#define BPM_BKUP_WAKEUP_SRC_AST       (1UL << BPM_BKUPWEN_AST)\r
+/** WDT wake up */\r
+#define BPM_BKUP_WAKEUP_SRC_WDT       (1UL << BPM_BKUPWEN_WDT)\r
+/** BOD33 wake up */\r
+#define BPM_BKUP_WAKEUP_SRC_BOD33     (1UL << BPM_BKUPWEN_BOD33)\r
+/** BOD18 wake up */\r
+#define BPM_BKUP_WAKEUP_SRC_BOD18     (1UL << BPM_BKUPWEN_BOD18)\r
+/** PICOUART wake up */\r
+#define BPM_BKUP_WAKEUP_SRC_PICOUART  (1UL << BPM_BKUPWEN_PICOUART)\r
+/* @} */\r
+\r
+/** \anchor backup_pin_muxing */\r
+/** \name Backup pin muxing */\r
+/* @{ */\r
+#define BPM_BKUP_PIN_PB01_EIC0    BPM_BKUPPMUX_BKUPPMUX(0)\r
+#define BPM_BKUP_PIN_PA06_EIC1    BPM_BKUPPMUX_BKUPPMUX(1)\r
+#define BPM_BKUP_PIN_PA04_EIC2    BPM_BKUPPMUX_BKUPPMUX(2)\r
+#define BPM_BKUP_PIN_PA05_EIC3    BPM_BKUPPMUX_BKUPPMUX(3)\r
+#define BPM_BKUP_PIN_PA07_EIC4    BPM_BKUPPMUX_BKUPPMUX(4)\r
+#define BPM_BKUP_PIN_PC03_EIC5    BPM_BKUPPMUX_BKUPPMUX(5)\r
+#define BPM_BKUP_PIN_PC04_EIC6    BPM_BKUPPMUX_BKUPPMUX(6)\r
+#define BPM_BKUP_PIN_PC05_EIC7    BPM_BKUPPMUX_BKUPPMUX(7)\r
+#define BPM_BKUP_PIN_PC06_EIC8    BPM_BKUPPMUX_BKUPPMUX(8)\r
+/* @} */\r
+\r
+/**\r
+ * \name Power management\r
+ */\r
+/* @{ */\r
+\r
+/**\r
+ * \brief Change Power Scaling mode\r
+ *\r
+ * PSOK is not checked while switching PS mode.\r
+ *\r
+ * \param bpm  Base address of the BPM instance.\r
+ * \param ps_value  Power scaling value, see \ref power_scaling_mode_value.\r
+ *\r
+ */\r
+void bpm_power_scaling_cpu(Bpm *bpm, uint32_t ps_value);\r
+\r
+/**\r
+ * \brief Change Power Scaling mode and check results\r
+ *\r
+ * Wait for a while to check if PSOK is ready.\r
+ *\r
+ * \param bpm  Base address of the BPM instance.\r
+ * \param ps_value  Power scaling value, see \ref power_scaling_mode_value.\r
+ *\r
+ * \param timeout Timeout, in number of processor clocks, max 0xFFFFFF.\r
+ * \return true if PSOK is ready.\r
+ */\r
+bool bpm_power_scaling_cpu_failsafe(Bpm *bpm, uint32_t ps_value,\r
+               uint32_t timeout);\r
+\r
+/**\r
+ * \brief Configure power scaling mode.\r
+ *\r
+ * While checking PSOK in power safe (no halt) mode, timeout is set to\r
+ * 240000 by default, which takes 20ms when 12MHz clock is used.\r
+ *\r
+ * \param bpm  Base address of the BPM instance.\r
+ * \param ps_value  Power scaling value, see \ref power_scaling_mode_value.\r
+ *\r
+ * \param no_halt   No halt or Fail safe, see \c bpm_power_scaling_cpu()\r
+ *                  and bpm_power_scaling_cpu_failsafe()\r
+ * \return true if no error.\r
+ */\r
+__always_inline static\r
+bool bpm_configure_power_scaling(Bpm *bpm, uint32_t ps_value, uint32_t no_halt)\r
+{\r
+       if (!no_halt) {\r
+               bpm_power_scaling_cpu(bpm, ps_value);\r
+               return true;\r
+       }\r
+\r
+       return bpm_power_scaling_cpu_failsafe(bpm, ps_value, 240000);\r
+}\r
+\r
+/**\r
+ * \brief Enable fast wakeup for analog modules.\r
+ *\r
+ * \param bpm  Base address of the BPM instance.\r
+ */\r
+void bpm_enable_fast_wakeup(Bpm *bpm);\r
+\r
+/**\r
+ * \brief Disable fast wakeup for analog modules.\r
+ *\r
+ * \param bpm  Base address of the BPM instance.\r
+ */\r
+void bpm_disable_fast_wakeup(Bpm *bpm);\r
+\r
+/**\r
+ * \brief Set clock source for 32KHz clock.\r
+ *\r
+ * \param bpm  Base address of the BPM instance.\r
+ * \param source  Clock source, see \ref CLK32_32Khz_1Khz.\r
+ */\r
+void bpm_set_clk32_source(Bpm *bpm, uint32_t source);\r
+\r
+/**\r
+ * \brief Get wakeup cause from backup mode.\r
+ *\r
+ * \param bpm  Base address of the BPM instance.\r
+ */\r
+uint32_t bpm_get_backup_wakeup_cause(Bpm *bpm);\r
+\r
+/**\r
+ * \brief Enable wakeup source.\r
+ *\r
+ * \param bpm  Base address of the BPM instance.\r
+ * \param sources  Wakeup source mask, see \ref backup_wake_up_sources.\r
+ */\r
+void bpm_enable_wakeup_source(Bpm *bpm, uint32_t sources);\r
+\r
+/**\r
+ * \brief Disable wakeup source.\r
+ *\r
+ * \param bpm  Base address of the BPM instance.\r
+ * \param sources  Wakeup source mask, see \ref backup_wake_up_sources.\r
+ */\r
+void bpm_disable_wakeup_source(Bpm *bpm, uint32_t sources);\r
+\r
+/**\r
+ * \brief Enable backup pin for wakeup.\r
+ *\r
+ * \param bpm  Base address of the BPM instance.\r
+ * \param backup_pins  Backup pin mask, see \ref backup_pin_muxing.\r
+ */\r
+void bpm_enable_backup_pin(Bpm *bpm, uint32_t backup_pins);\r
+\r
+/**\r
+ * \brief Disable backup pin for wakeup.\r
+ *\r
+ * \param bpm  Base address of the BPM instance.\r
+ * \param backup_pins  Backup pin mask, see \ref backup_pin_muxing.\r
+ */\r
+void bpm_disable_backup_pin(Bpm *bpm, uint32_t backup_pins);\r
+\r
+/**\r
+ * \brief Enable IO retention for backup mode.\r
+ *\r
+ * \param bpm  Base address of the BPM instance.\r
+ */\r
+void bpm_enable_io_retention(Bpm *bpm);\r
+\r
+/**\r
+ * \brief Disable IO retention for backup mode.\r
+ *\r
+ * \param bpm  Base address of the BPM instance.\r
+ */\r
+void bpm_disable_io_retention(Bpm *bpm);\r
+/* @} */\r
+\r
+/**\r
+ * \name Interrupt and status management\r
+ */\r
+/* @{ */\r
+\r
+/**\r
+ * \brief Enable interrupt with given sources mask.\r
+ *\r
+ * \param bpm  Base address of the BPM instance.\r
+ * \param sources BPM interrupt source mask.\r
+ */\r
+void bpm_enable_interrupt(Bpm *bpm, uint32_t sources);\r
+\r
+/**\r
+ * \brief Disable interrupt with given sources mask.\r
+ *\r
+ * \param bpm  Base address of the BPM instance.\r
+ * \param sources BPM interrupt source mask.\r
+ */\r
+void bpm_disable_interrupt(Bpm *bpm, uint32_t sources);\r
+\r
+/**\r
+ * \brief Get BPM interrupt mask.\r
+ *\r
+ * \param bpm  Base address of the BPM instance.\r
+ *\r
+ * \return BPM interrupt mask.\r
+ */\r
+uint32_t bpm_get_interrupt_mask(Bpm *bpm);\r
+\r
+/**\r
+ * \brief Get BPM interrupt status.\r
+ *\r
+ * \param bpm  Base address of the BPM instance.\r
+ *\r
+ * \return BPM interrupt status.\r
+ */\r
+uint32_t bpm_get_interrupt_status(Bpm *bpm);\r
+\r
+/**\r
+ * \brief Clear BPM interrupt.\r
+ *\r
+ * \param bpm  Base address of the BPM instance.\r
+ * \param sources BPM interrupt source mask.\r
+ */\r
+void bpm_clear_interrupt(Bpm *bpm, uint32_t sources);\r
+\r
+/**\r
+ * \brief Get BPM status.\r
+ *\r
+ * \param bpm  Base address of the BPM instance.\r
+ *\r
+ * \return BPM status.\r
+ */\r
+uint32_t bpm_get_status(Bpm *bpm);\r
+\r
+/**\r
+ * \brief Get version of BPM module.\r
+ *\r
+ * \param bpm  Base address of the BPM instance.\r
+ *\r
+ * \return Version of BPM module.\r
+ */\r
+uint32_t bpm_get_version(Bpm *bpm);\r
+/* @} */\r
+\r
+/* @} */\r
+#ifdef __cplusplus\r
+}\r
+#endif\r
+\r
+/**\r
+ * \page sam_bpm_quickstart Quick start guide for the SAM BPM module\r
+ *\r
+ * This is the quick start guide for the\r
+ * \ref group_sam_drivers_bpm "BPM Module", with step-by-step instructions on\r
+ * how to configure and use the driver in a selection of use cases.\r
+ *\r
+ * The use cases contain several code fragments. The code fragments in the\r
+ * steps for setup can be copied into a custom initialization function, while\r
+ * the steps for usage can be copied into, e.g., the main application function.\r
+ *\r
+ * \section bpm_use_cases BPM use cases\r
+ * - \ref bpm_use_case_1 Basic use case - Entering Sleep Modes\r
+ * - \ref bpm_use_case_2 Advanced use case - Switch Power Scaling Modes\r
+ *\r
+ * \section bpm_use_case_1 Basic use case - Entering Sleep Modes\r
+ * In this use case, the BPM module can put system into different power saving\r
+ * modes. Check the current of the system to see consumptions.\r
+ *\r
+ * \section bpm_use_case_1_setup Setup\r
+ *\r
+ * \subsection bpm_use_case_1_setup_prereq Prerequisites\r
+ * Sleep mode itself does not require any IO input, but to wakeup an interrupt\r
+ * is needed.\r
+ * -# \ref ioport_group "Common IOPORT (for GPIO)"\r
+ * -# \ref sam_drivers_eic_group "External Interrupt Controller (EIC)"\r
+ *\r
+ * \subsection bpm_use_case_1_setup_prereq_code Code\r
+ *\r
+ * \code\r
+ * #define EIC_INT5_ENABLE\r
+ * \endcode\r
+ *\r
+ * The following code needs to be added to the user application, to wakeup\r
+ * system and switch to next power mode.\r
+ * \code\r
+ * static void push_button_eic_handler()\r
+ * {\r
+ *    eic_line_clear_interrupt(EIC, GPIO_PUSH_BUTTON_EIC_LINE);\r
+ * }\r
+ * \endcode\r
+ * \code\r
+ * my_eic_init()\r
+ * {\r
+ *   struct eic_line_config eic_opt={\r
+ *     EIC_MODE_EDGE_TRIGGERED,\r
+ *     EIC_EDGE_FALLING_EDGE,\r
+ *     EIC_LEVEL_LOW_LEVEL,\r
+ *     EIC_FILTER_DISABLED,\r
+ *     EIC_ASYNCH_MODE\r
+ *   };\r
+ *   eic_enable(EIC);\r
+ *   eic_line_set_config(EIC, GPIO_PUSH_BUTTON_EIC_LINE, &eic_opt);\r
+ *   eic_line_set_callback(EIC, GPIO_PUSH_BUTTON_EIC_LINE,\r
+ *     push_button_eic_handler, EIC_5_IRQn, 1);\r
+ *   eic_line_enable(EIC, GPIO_PUSH_BUTTON_EIC_LINE);\r
+ * }\r
+ * \endcode\r
+ *\r
+ * \subsection bpm_use_case_1_setup_prereq_flow Workflow\r
+ * -# Ensure that ioport and eic driver is available.\r
+ * -# Ensure that push button is configured as external interrupt in\r
+ *    conf_board.h:\r
+ *    \code #define CONF_BOARD_EIC \endcode\r
+ * -# Add EIC initialize to application C-file:\r
+ *    \code my_eic_init(); \endcode\r
+ *\r
+ * \section bpm_use_case_1_usage Use case\r
+ *\r
+ * \subsection bpm_use_case_1_usage_code Example code\r
+ * Add to application C-file:\r
+ * \code\r
+ *    // Enable wakeup by EIC\r
+ *    bpm_enable_wakeup_source(BPM, 1 << BPM_BKUPWEN_EIC);\r
+ *    // Enable backup wakeup by Push button EIC line\r
+ *    bpm_enable_backup_pin(BPM, 1 << GPIO_PUSH_BUTTON_EIC_LINE);\r
+ *    // Retain I/O lines after wakeup from backup mode\r
+ *    bpm_enable_io_retention(BPM);\r
+ *    // Enable fast wakeup\r
+ *    bpm_enable_fast_wakeup(BPM);\r
+ *    // Enter wait mode\r
+ *    // critical section when going to sleep\r
+ *    cpu_irq_disable();\r
+ *    bpm_sleep(BPM, BPM_SM_WAIT);\r
+ *    // Enter retention mode\r
+ *    cpu_irq_disable();\r
+ *    bpm_sleep(BPM, BPM_SM_RET);\r
+ *    // Enter backup mode\r
+ *    cpu_irq_disable();\r
+ *    bpm_sleep(BPM, BPM_SM_BACKUP);\r
+ *    while(1);\r
+ * \endcode\r
+ *\r
+ * \subsection bpm_use_case_1_usage_flow Workflow\r
+ * -# Enable wakeup by EIC:\r
+ *    \code\r
+ *      bpm_enable_wakeup_source(BPM, 1 << BPM_BKUPWEN_EIC);\r
+ *      bpm_enable_backup_pin(BPM, 1 << GPIO_PUSH_BUTTON_EIC_LINE);\r
+ *    \endcode\r
+ * -# Setup IO retention:\r
+ *    \code bpm_enable_io_retention(BPM); \endcode\r
+ * -# Setup fast wakeup:\r
+ *    \code bpm_enable_fast_wakeup(BPM); \endcode\r
+ * -# Enter sleep/wait/backup mode:\r
+ *    \code\r
+ *      // critical section when going to sleep\r
+ *      cpu_irq_disable();\r
+ *      bpm_sleep(BPM, BPM_SM_WAIT);\r
+ *    \endcode\r
+ */\r
+\r
+/**\r
+ * \page bpm_use_case_2 Advanced use case - Switch Power Scaling Modes\r
+ * In this use case, the BPM module can switch the power scaling modes of the\r
+ * system. Check the current of the system to see consumptions.\r
+ *\r
+ * \section bpm_use_case_2_setup Setup\r
+ * \subsection bpm_use_case_2_setup_prereq Prerequisites\r
+ * Some power scaling modes only work on limited system clock frequency (The\r
+ * maximum CPU frequency under PS1 is 12MHz, other peripherals also have speed\r
+ * limitations), please refer to the electrical characteristics for more\r
+ * details.\r
+ * -# \ref clk_group "Clock management"\r
+ *\r
+ * \subsection bpm_use_case_2_setup_code Code\r
+ * Content of conf_clock.h\r
+ * \code\r
+ * #define CONFIG_SYSCLK_SOURCE        SYSCLK_SRC_RCFAST // Uses Fast RC\r
+ * #define CONFIG_RCFAST_FRANGE        2                 // Fast RC is 12MHz\r
+ * \endcode\r
+ *\r
+ * \subsection bpm_use_case_2_setup_workflow Workflow\r
+ * -# Ensure that conf_clock.h is available and contains the following\r
+ * parameters which configure system clock to 12MHz fast RC:\r
+ * \code\r
+ *   #define CONFIG_SYSCLK_SOURCE        SYSCLK_SRC_RCFAST // Uses Fast RC\r
+ *   #define CONFIG_RCFAST_FRANGE        2                 // Fast RC is 12MHz\r
+ * \endcode\r
+ * -# Initialize system clock with \c sysclk_init().\r
+ *\r
+ * \section bpm_use_case_2_usage Use case\r
+ *\r
+ * \subsection bpm_use_case_2_usage_code Example code\r
+ * Add to application C-file:\r
+ * \code\r
+ * bpm_power_scaling_cpu(BPM, BPM_PMCON_PS(BPM_PS_1));\r
+ * while((bpm_get_status(BPM) & BPM_SR_PSOK) == 0);\r
+ * while(1);\r
+ * \endcode\r
+ *\r
+ * \subsection bpm_use_case_2_usage_workflow Workflow\r
+ * -# Switch the power scaling mode:\r
+ *    \code bpm_power_scaling_cpu(BPM, BPM_PMCON_PS(BPM_PS_1));\r
+ *    \endcode\r
+ * -# Wait power scaling done:\r
+ *    \code while((bpm_get_status(BPM) & BPM_SR_PSOK) == 0); \endcode\r
+ */\r
+\r
+#endif /* BPM_H_INCLUDED */\r
diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/asf/sam/drivers/bpm/sleep.h b/FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/asf/sam/drivers/bpm/sleep.h
new file mode 100644 (file)
index 0000000..168ac7c
--- /dev/null
@@ -0,0 +1,141 @@
+/**\r
+ * \file\r
+ *\r
+ * \brief Sleep mode access\r
+ *\r
+ * Copyright (c) 2012 Atmel Corporation. All rights reserved.\r
+ *\r
+ * \asf_license_start\r
+ *\r
+ * \page License\r
+ *\r
+ * Redistribution and use in source and binary forms, with or without\r
+ * modification, are permitted provided that the following conditions are met:\r
+ *\r
+ * 1. Redistributions of source code must retain the above copyright notice,\r
+ *    this list of conditions and the following disclaimer.\r
+ *\r
+ * 2. Redistributions in binary form must reproduce the above copyright notice,\r
+ *    this list of conditions and the following disclaimer in the documentation\r
+ *    and/or other materials provided with the distribution.\r
+ *\r
+ * 3. The name of Atmel may not be used to endorse or promote products derived\r
+ *    from this software without specific prior written permission.\r
+ *\r
+ * 4. This software may only be redistributed and used in connection with an\r
+ *    Atmel microcontroller product.\r
+ *\r
+ * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED\r
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\r
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE\r
+ * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR\r
+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\r
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS\r
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)\r
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,\r
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\r
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\r
+ * POSSIBILITY OF SUCH DAMAGE.\r
+ *\r
+ * \asf_license_stop\r
+ *\r
+ */\r
+\r
+#ifndef SLEEP_H\r
+#define SLEEP_H\r
+\r
+#ifdef __cplusplus\r
+extern "C" {\r
+#endif\r
+\r
+#include <compiler.h>\r
+\r
+/**\r
+ * \defgroup sleep_group Backup Power Manager (BPM)\r
+ *\r
+ * This is a stub on the SAM4L Backup Power Manager(BPM) for the sleepmgr service.\r
+ *\r
+ * \note To minimize the code overhead, these functions do not feature\r
+ * interrupt-protected access since they are likely to be called inside\r
+ * interrupt handlers or in applications where such protection is not\r
+ * necessary. If such protection is needed, it must be ensured by the calling\r
+ * code.\r
+ *\r
+ * @{\r
+ */\r
+\r
+#if defined(__DOXYGEN__)\r
+/**\r
+ * \brief Sets the MCU in the specified sleep mode\r
+ * \param sleep_mode Sleep mode to set.\r
+ */\r
+#endif\r
+\r
+#include "bpm.h"\r
+\r
+static inline void bpm_sleep(Bpm *bpm, uint32_t sleep_mode)\r
+{\r
+       uint32_t pmcon;\r
+\r
+       /* Read PMCON register */\r
+       pmcon = bpm->BPM_PMCON;\r
+       pmcon &= ~BPM_PMCON_BKUP;\r
+       pmcon &= ~BPM_PMCON_RET;\r
+       pmcon &= ~BPM_PMCON_SLEEP_Msk;\r
+\r
+       /* Unlock PMCON register */\r
+       BPM_UNLOCK(PMCON);\r
+\r
+       if (sleep_mode == BPM_SM_SLEEP_0) {\r
+               pmcon |= BPM_PMCON_SLEEP(0);\r
+               bpm->BPM_PMCON = pmcon;\r
+               SCB->SCR &= ~SCB_SCR_SLEEPDEEP_Msk;\r
+       } else if (sleep_mode == BPM_SM_SLEEP_1) {\r
+               pmcon |= BPM_PMCON_SLEEP(1);\r
+               bpm->BPM_PMCON = pmcon;\r
+               SCB->SCR &= ~SCB_SCR_SLEEPDEEP_Msk;\r
+       } else if (sleep_mode == BPM_SM_SLEEP_2) {\r
+               pmcon |= BPM_PMCON_SLEEP(2);\r
+               bpm->BPM_PMCON = pmcon;\r
+               SCB->SCR &= ~SCB_SCR_SLEEPDEEP_Msk;\r
+       } else if (sleep_mode == BPM_SM_SLEEP_3) {\r
+               pmcon |= BPM_PMCON_SLEEP(3);\r
+               bpm->BPM_PMCON = pmcon;\r
+               SCB->SCR &= ~SCB_SCR_SLEEPDEEP_Msk;\r
+       } else if (sleep_mode == BPM_SM_WAIT) {\r
+               bpm->BPM_PMCON = pmcon;\r
+               SCB->SCR |= SCB_SCR_SLEEPDEEP_Msk;\r
+       } else if (sleep_mode == BPM_SM_RET) {\r
+               pmcon |= BPM_PMCON_RET;\r
+               bpm->BPM_PMCON = pmcon;\r
+               SCB->SCR |= SCB_SCR_SLEEPDEEP_Msk;\r
+       } else { /* if (sleep_mode == BPM_SM_BACKUP) */\r
+               pmcon |= BPM_PMCON_BKUP;\r
+               bpm->BPM_PMCON = pmcon;\r
+               SCB->SCR |= SCB_SCR_SLEEPDEEP_Msk;\r
+       }\r
+\r
+       /* Wait until vreg is ok. */\r
+       while(!(BSCIF->BSCIF_PCLKSR & BSCIF_PCLKSR_VREGOK));\r
+       asm volatile ("wfi");\r
+       /* ensure sleep request propagation to flash. */\r
+       asm volatile ("nop");\r
+\r
+       /* The interrupts wake-up from the previous wfi, but there are still\r
+        * masked since we are in the critical section thanks to the previous\r
+        * set_pri_mask(1). Thus, we need to leave the critical section.\r
+        * Please note that we should probably use something like\r
+        * cpu_leave_critical(), using set_pri_mask(0)\r
+        */\r
+       cpu_irq_enable();\r
+}\r
+\r
+\r
+//! @}\r
+\r
+#ifdef __cplusplus\r
+}\r
+#endif\r
+\r
+#endif /* SLEEP_H */\r
+\r
diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/asf/sam/drivers/flashcalw/flashcalw.c b/FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/asf/sam/drivers/flashcalw/flashcalw.c
new file mode 100644 (file)
index 0000000..ceab396
--- /dev/null
@@ -0,0 +1,1823 @@
+/**\r
+ * \file\r
+ *\r
+ * \brief FlashCALW driver for SAM4L.\r
+ *\r
+ * Copyright (c) 2012-2013 Atmel Corporation. All rights reserved.\r
+ *\r
+ * \asf_license_start\r
+ *\r
+ * \page License\r
+ *\r
+ * Redistribution and use in source and binary forms, with or without\r
+ * modification, are permitted provided that the following conditions are met:\r
+ *\r
+ * 1. Redistributions of source code must retain the above copyright notice,\r
+ *    this list of conditions and the following disclaimer.\r
+ *\r
+ * 2. Redistributions in binary form must reproduce the above copyright notice,\r
+ *    this list of conditions and the following disclaimer in the documentation\r
+ *    and/or other materials provided with the distribution.\r
+ *\r
+ * 3. The name of Atmel may not be used to endorse or promote products derived\r
+ *    from this software without specific prior written permission.\r
+ *\r
+ * 4. This software may only be redistributed and used in connection with an\r
+ *    Atmel microcontroller product.\r
+ *\r
+ * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED\r
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\r
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE\r
+ * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR\r
+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\r
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS\r
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)\r
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,\r
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\r
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\r
+ * POSSIBILITY OF SUCH DAMAGE.\r
+ *\r
+ * \asf_license_stop\r
+ *\r
+ */\r
+\r
+#include "flashcalw.h"\r
+#include "sysclk.h"\r
+\r
+/// @cond 0\r
+/**INDENT-OFF**/\r
+#ifdef __cplusplus\r
+extern "C" {\r
+#endif\r
+/**INDENT-ON**/\r
+/// @endcond\r
+\r
+/**\r
+ * \defgroup group_sam_drivers_flashcalw FLASHCALW - FLASH Controller Double-Word\r
+ *\r
+ * See \ref sam_flashcalw_quickstart.\r
+ *\r
+ * FLASHCALW interfaces a flash block with the 32-bit internal HSB bus.\r
+ *\r
+ * \{\r
+ */\r
+\r
+/*! \name Flash Properties\r
+ */\r
+//! @{\r
+\r
+/*! \brief Gets the size of the whole flash array.\r
+ *\r
+ * \return The size of the whole flash array in Bytes.\r
+ */\r
+uint32_t flashcalw_get_flash_size(void)\r
+{\r
+       const uint16_t flash_size[(FLASHCALW_FPR_FSZ_Msk >>\r
+       FLASHCALW_FPR_FSZ_Pos) + 1] = {\r
+               4,\r
+               8,\r
+               16,\r
+               32,\r
+               48,\r
+               64,\r
+               96,\r
+               128,\r
+               192,\r
+               256,\r
+               384,\r
+               512,\r
+               768,\r
+               1024,\r
+               2048,\r
+       };\r
+       return ((uint32_t)flash_size[(HFLASHC->FLASHCALW_FPR &\r
+              FLASHCALW_FPR_FSZ_Msk) >> FLASHCALW_FPR_FSZ_Pos] << 10);\r
+}\r
+\r
+/*! \brief Gets the total number of pages in the flash array.\r
+ *\r
+ * \return The total number of pages in the flash array.\r
+ */\r
+uint32_t flashcalw_get_page_count(void)\r
+{\r
+       return flashcalw_get_flash_size() / FLASH_PAGE_SIZE;\r
+}\r
+\r
+/*! \brief Gets the number of pages in each flash region.\r
+ *\r
+ * \return The number of pages in each flash region.\r
+ */\r
+uint32_t flashcalw_get_page_count_per_region(void)\r
+{\r
+       return flashcalw_get_page_count() / FLASH_NB_OF_REGIONS;\r
+}\r
+\r
+/*! \brief Gets the region number of a page.\r
+ *\r
+ * \param page_number The page number:\r
+ *   \arg \c 0 to <tt>(flashcalw_get_page_count() - 1)</tt>: a page number\r
+ * within the flash array;\r
+ *   \arg <tt>< 0</tt>: the current page number.\r
+ *\r
+ * \return The region number of the specified page.\r
+ */\r
+uint32_t flashcalw_get_page_region(int32_t page_number)\r
+{\r
+       return ((page_number >= 0) ? page_number\r
+                       : (int32_t)flashcalw_get_page_number())\r
+                       / flashcalw_get_page_count_per_region();\r
+}\r
+\r
+/*! \brief Gets the number of the first page of a region.\r
+ *\r
+ * \param region The region number: \c 0 to <tt>(FLASHCALW_REGIONS - 1)</tt>.\r
+ *\r
+ * \return The number of the first page of the specified region.\r
+ */\r
+uint32_t flashcalw_get_region_first_page_number(uint32_t region)\r
+{\r
+       return region * flashcalw_get_page_count_per_region();\r
+}\r
+\r
+\r
+//! @}\r
+\r
+/*! \name FLASHC Control\r
+ */\r
+//! @{\r
+\r
+/*! \brief Gets the number of wait states of flash read accesses.\r
+ *\r
+ * \return The number of wait states of flash read accesses.\r
+ */\r
+uint32_t flashcalw_get_wait_state(void)\r
+{\r
+       return (HFLASHC->FLASHCALW_FCR & FLASHCALW_FCR_FWS ? 1 : 0);\r
+}\r
+\r
+/*! \brief Sets the number of wait states of flash read accesses.\r
+ *\r
+ * \param wait_state The number of wait states of flash read accesses: \c 0 to\r
+ *                   \c 1.\r
+ */\r
+void flashcalw_set_wait_state(uint32_t wait_state)\r
+{\r
+       HFLASHC->FLASHCALW_FCR = (HFLASHC->FLASHCALW_FCR & ~FLASHCALW_FCR_FWS)\r
+                       | (wait_state ? FLASHCALW_FCR_FWS_1 :\r
+                       FLASHCALW_FCR_FWS_0);\r
+}\r
+\r
+#define FLASH_FWS_0_MAX_FREQ           CHIP_FREQ_FWS_0\r
+#define FLASH_FWS_1_MAX_FREQ           CHIP_FREQ_FWS_1\r
+#define FLASH_HSEN_FWS_0_MAX_FREQ      CHIP_FREQ_FLASH_HSEN_FWS_0\r
+#define FLASH_HSEN_FWS_1_MAX_FREQ      CHIP_FREQ_FLASH_HSEN_FWS_1\r
+\r
+/*! \brief Depending on the CPU frequency, on the Power Scaling mode and on the\r
+ * Fast Wakeup mode, set the wait states of flash read accesses and enable or\r
+ * disable the High speed read mode.\r
+ *\r
+ * \param cpu_f_hz The CPU frequency\r
+ * \param ps_value Power Scaling mode value (0, 1)\r
+ * \param is_fwu_enabled (boolean), Is fast wakeup mode enabled or not\r
+ */\r
+void flashcalw_set_flash_waitstate_and_readmode(uint32_t cpu_f_hz,\r
+               uint32_t ps_value, bool is_fwu_enabled)\r
+{\r
+#ifdef CONFIG_FLASH_READ_MODE_HIGH_SPEED_ENABLE\r
+       UNUSED(ps_value);\r
+       UNUSED(is_fwu_enabled);\r
+       \r
+       if (cpu_f_hz > FLASH_FREQ_PS2_FWS_0_MAX_FREQ) { /* > 24MHz */\r
+               /* Set a wait-state. */\r
+               flashcalw_set_wait_state(1);\r
+       } else {\r
+               /* No wait-state. */\r
+               flashcalw_set_wait_state(0);\r
+       }\r
+\r
+       /* Enable the high-speed read mode. */\r
+       flashcalw_issue_command(FLASHCALW_FCMD_CMD_HSEN, -1);\r
+#else\r
+       if (ps_value == 0) {\r
+               if (cpu_f_hz > FLASH_FREQ_PS0_FWS_0_MAX_FREQ) {\r
+                       // > 18MHz\r
+                       if (cpu_f_hz <= FLASH_FREQ_PS0_FWS_1_MAX_FREQ) {\r
+                               // <= 36MHz\r
+                               /* Set a wait-state, disable the high-speed read\r
+                                * mode. */\r
+                               flashcalw_set_wait_state(1);\r
+                               flashcalw_issue_command(\r
+                                               FLASHCALW_FCMD_CMD_HSDIS, -1);\r
+                       } else {\r
+                               // > 36 MHz\r
+                               /* Set a wait-state, enable the high-speed read\r
+                               mode. */\r
+                               flashcalw_set_wait_state(1);\r
+                               flashcalw_issue_command(FLASHCALW_FCMD_CMD_HSEN,\r
+                                               -1);\r
+                       }\r
+               } else { // <= 18MHz\r
+                       if((is_fwu_enabled == true) &&\r
+                               (cpu_f_hz <= FLASH_FREQ_PS1_FWS_1_FWU_MAX_FREQ))\r
+                       {\r
+                               // <= 12MHz\r
+                               /* Set a wait-state, disable the high-speed read\r
+                               mode. */\r
+                               flashcalw_set_wait_state(1);\r
+                               flashcalw_issue_command(\r
+                                               FLASHCALW_FCMD_CMD_HSDIS, -1);\r
+                       } else {\r
+                               /* No wait-state, disable the high-speed read\r
+                               mode */\r
+                               flashcalw_set_wait_state(0);\r
+                               flashcalw_issue_command(\r
+                                       FLASHCALW_FCMD_CMD_HSDIS, -1);\r
+                       }\r
+               }\r
+       } else { /* ps_value == 1 */\r
+               if (cpu_f_hz > FLASH_FREQ_PS0_FWS_0_MAX_FREQ) { /* > 8MHz */\r
+                       /* Set a wait-state. */\r
+                       flashcalw_set_wait_state(1);\r
+               } else {\r
+                       /* No wait-state. */\r
+                       flashcalw_set_wait_state(0);\r
+               }\r
+\r
+               /* Disable the high-speed read mode. */\r
+               flashcalw_issue_command(FLASHCALW_FCMD_CMD_HSDIS, -1);\r
+       }\r
+#endif\r
+}\r
+\r
+/*! \brief Tells whether the Flash Ready interrupt is enabled.\r
+ *\r
+ * \return Whether the Flash Ready interrupt is enabled.\r
+ */\r
+bool flashcalw_is_ready_int_enabled(void)\r
+{\r
+       return ((HFLASHC->FLASHCALW_FCR & FLASHCALW_FCR_FRDY) != 0);\r
+}\r
+\r
+/*! \brief Enables or disables the Flash Ready interrupt.\r
+ *\r
+ * \param enable Whether to enable the Flash Ready interrupt: \c true or\r
+ *               \c false.\r
+ */\r
+void flashcalw_enable_ready_int(bool enable)\r
+{\r
+       HFLASHC->FLASHCALW_FCR\r
+               &= ((enable &\r
+                       FLASHCALW_FCR_FRDY) | (~FLASHCALW_FCR_FRDY));\r
+}\r
+\r
+/*! \brief Tells whether the Lock Error interrupt is enabled.\r
+ *\r
+ * \return Whether the Lock Error interrupt is enabled.\r
+ */\r
+bool flashcalw_is_lock_error_int_enabled(void)\r
+{\r
+       return ((HFLASHC->FLASHCALW_FCR & FLASHCALW_FCR_LOCKE) != 0);\r
+}\r
+\r
+/*! \brief Enables or disables the Lock Error interrupt.\r
+ *\r
+ * \param enable Whether to enable the Lock Error interrupt: \c true or\r
+ *               \c false.\r
+ */\r
+void flashcalw_enable_lock_error_int(bool enable)\r
+{\r
+       HFLASHC->FLASHCALW_FCR\r
+               &= ((enable &\r
+                       FLASHCALW_FCR_LOCKE) | (~FLASHCALW_FCR_LOCKE));\r
+}\r
+\r
+/*! \brief Tells whether the Programming Error interrupt is enabled.\r
+ *\r
+ * \return Whether the Programming Error interrupt is enabled.\r
+ */\r
+bool flashcalw_is_prog_error_int_enabled(void)\r
+{\r
+       return ((HFLASHC->FLASHCALW_FCR & FLASHCALW_FCR_PROGE) != 0);\r
+}\r
+\r
+/*! \brief Enables or disables the Programming Error interrupt.\r
+ *\r
+ * \param enable Whether to enable the Programming Error interrupt: \c true or\r
+ *               \c false.\r
+ */\r
+void flashcalw_enable_prog_error_int(bool enable)\r
+{\r
+       HFLASHC->FLASHCALW_FCR &= ((enable &\r
+                       FLASHCALW_FCR_PROGE) | (~FLASHCALW_FCR_PROGE));\r
+}\r
+\r
+\r
+//! @}\r
+\r
+/*! \name FLASHCALW Status\r
+ */\r
+//! @{\r
+\r
+/*! \brief Tells whether the FLASHCALW is ready to run a new command.\r
+ *\r
+ * \return Whether the FLASHCALW is ready to run a new command.\r
+ */\r
+bool flashcalw_is_ready(void)\r
+{\r
+       return ((HFLASHC->FLASHCALW_FSR & FLASHCALW_FSR_FRDY) != 0);\r
+}\r
+\r
+/*! \brief Waits actively until the FLASHCALW is ready to run a new command.\r
+ *\r
+ * This is the default function assigned to \ref flashcalw_wait_until_ready.\r
+ */\r
+void flashcalw_default_wait_until_ready(void)\r
+{\r
+       while (!flashcalw_is_ready()) {\r
+       }\r
+}\r
+\r
+/**\r
+ * \brief Pointer to the function used by the driver when it needs to wait until\r
+ * the FLASHCALW is ready to run a new command.\r
+ *\r
+ * The default function is \ref flashcalw_default_wait_until_ready.\r
+ * The user may change this pointer to use another implementation.\r
+ */\r
+void(*volatile flashcalw_wait_until_ready) (void)\r
+       = flashcalw_default_wait_until_ready;\r
+\r
+/**\r
+ * \internal\r
+ * \brief Gets the error status of the FLASHCALW.\r
+ *\r
+ * \return The error status of the FLASHCALW built up from\r
+ *         \c FLASHCALW_FSR_LOCKE and \c FLASHCALW_FSR_PROGE.\r
+ *\r
+ * \warning This hardware error status is cleared by all functions reading the\r
+ *          Flash Status Register (FSR). This function is therefore not part of\r
+ *          the driver's API which instead presents \ref flashcalw_is_lock_error\r
+ *          and \ref flashcalw_is_programming_error.\r
+ */\r
+static uint32_t flashcalw_get_error_status(void)\r
+{\r
+       return HFLASHC->FLASHCALW_FSR &\r
+              (FLASHCALW_FSR_LOCKE | FLASHCALW_FSR_PROGE);\r
+}\r
+\r
+/**\r
+ * \internal\r
+ * \brief Sticky error status of the FLASHCALW.\r
+ *\r
+ * This variable is updated by functions that issue FLASHCALW commands. It\r
+ * contains the cumulated FLASHCALW error status of all the FLASHCALW commands\r
+ * issued by a function.\r
+ */\r
+static uint32_t flashcalw_error_status = 0;\r
+\r
+/*! \brief Tells whether a Lock Error has occurred during the last function\r
+ *         called that issued one or more FLASHCALW commands.\r
+ *\r
+ * \return Whether a Lock Error has occurred during the last function called\r
+ *         that issued one or more FLASHCALW commands.\r
+ */\r
+bool flashcalw_is_lock_error(void)\r
+{\r
+       return ((flashcalw_error_status & FLASHCALW_FSR_LOCKE) != 0);\r
+}\r
+\r
+/*! \brief Tells whether a Programming Error has occurred during the last\r
+ *         function called that issued one or more FLASHCALW commands.\r
+ *\r
+ * \return Whether a Programming Error has occurred during the last function\r
+ *         called that issued one or more FLASHCALW commands.\r
+ */\r
+bool flashcalw_is_programming_error(void)\r
+{\r
+       return ((flashcalw_error_status & FLASHCALW_FSR_PROGE) != 0);\r
+}\r
+\r
+//! @}\r
+\r
+/*! \name FLASHCALW Command Control\r
+ */\r
+//! @{\r
+\r
+/*! \brief Gets the last issued FLASHCALW command.\r
+ *\r
+ * \return The last issued FLASHCALW command.\r
+ */\r
+uint32_t flashcalw_get_command(void)\r
+{\r
+       return (HFLASHC->FLASHCALW_FCMD & FLASHCALW_FCMD_CMD_Msk);\r
+}\r
+\r
+/*! \brief Gets the current FLASHCALW page number.\r
+ *\r
+ * \return The current FLASHCALW page number.\r
+ */\r
+uint32_t flashcalw_get_page_number(void)\r
+{\r
+       return ((HFLASHC->FLASHCALW_FCMD & FLASHCALW_FCMD_PAGEN_Msk)\r
+                       >> FLASHCALW_FCMD_PAGEN_Pos);\r
+}\r
+\r
+\r
+/*! \brief Issues a FLASHCALW command.\r
+ *\r
+ * \param command The command: \c FLASHCALW_FCMD_CMD_x.\r
+ * \param page_number The page number to apply the command to:\r
+ *   \arg \c 0 to <tt>(flashcalw_get_page_count() - 1)</tt>: a page number\r
+ *        within the flash array;\r
+ *   \arg <tt>< 0</tt>: use this to apply the command to the current page number\r
+ *        or if the command does not apply to any page number;\r
+ *   \arg this argument may have other meanings according to the command. See\r
+ *        the FLASHCALW chapter of the MCU datasheet.\r
+ *\r
+ * \warning A Lock Error is issued if the command violates the protection\r
+ *          mechanism.\r
+ *\r
+ * \warning A Programming Error is issued if the command is invalid.\r
+ *\r
+ * \note The FLASHCALW error status returned by \ref flashcalw_is_lock_error and\r
+ *       \ref flashcalw_is_programming_error is updated.\r
+ */\r
+void flashcalw_issue_command(uint32_t command, int page_number)\r
+{\r
+       uint32_t tempo;\r
+\r
+       flashcalw_wait_until_ready();\r
+       tempo = HFLASHC->FLASHCALW_FCMD;\r
+       /* Clear the command bitfield. */\r
+       tempo &= ~FLASHCALW_FCMD_CMD_Msk;\r
+       if (page_number >= 0) {\r
+               tempo = (FLASHCALW_FCMD_KEY_KEY\r
+                               | FLASHCALW_FCMD_PAGEN(page_number) | command);\r
+       } else {\r
+               tempo |= (FLASHCALW_FCMD_KEY_KEY | command);\r
+       }\r
+\r
+       HFLASHC->FLASHCALW_FCMD = tempo;\r
+       flashcalw_error_status = flashcalw_get_error_status();\r
+       flashcalw_wait_until_ready();\r
+}\r
+\r
+\r
+//! @}\r
+\r
+/*! \name FLASHCALW Global Commands\r
+ */\r
+//! @{\r
+\r
+/*! \brief Issues a No Operation command to the FLASHCALW.\r
+ *\r
+ * \note The FLASHCALW error status returned by \ref flashcalw_is_lock_error and\r
+ *       \ref flashcalw_is_programming_error is updated.\r
+ */\r
+void flashcalw_no_operation(void)\r
+{\r
+       flashcalw_issue_command(FLASHCALW_FCMD_CMD_NOP, -1);\r
+}\r
+\r
+/*! \brief Issues an Erase All command to the FLASHCALW.\r
+ *\r
+ * This command erases all bits in the flash array, the general-purpose fuse\r
+ * bits and the Security bit. The User page is not erased.\r
+ *\r
+ * This command also ensures that all volatile memories, such as register file\r
+ * and RAMs, are erased before the Security bit is erased, i.e. deactivated.\r
+ *\r
+ * \warning A Lock Error is issued if at least one region is locked or the\r
+ *          bootloader protection is active.\r
+ *\r
+ * \note The FLASHCALW error status returned by \ref flashcalw_is_lock_error and\r
+ *       \ref flashcalw_is_programming_error is updated.\r
+ *\r
+ * \note An erase operation can only set bits.\r
+ */\r
+void flashcalw_erase_all(void)\r
+{\r
+       flashcalw_issue_command(FLASHCALW_FCMD_CMD_EA, -1);\r
+}\r
+\r
+\r
+//! @}\r
+\r
+/*! \name FLASHCALW Protection Mechanisms\r
+ */\r
+//! @{\r
+\r
+/*! \brief Tells whether the Security bit is active.\r
+ *\r
+ * \return Whether the Security bit is active.\r
+ */\r
+bool flashcalw_is_security_bit_active(void)\r
+{\r
+       return ((HFLASHC->FLASHCALW_FSR & FLASHCALW_FSR_SECURITY) != 0);\r
+}\r
+\r
+/*! \brief Activates the Security bit.\r
+ *\r
+ * \note The FLASHCALW error status returned by \ref flashcalw_is_lock_error and\r
+ *       \ref flashcalw_is_programming_error is updated.\r
+ */\r
+void flashcalw_set_security_bit(void)\r
+{\r
+       flashcalw_issue_command(FLASHCALW_FCMD_CMD_SSB, -1);\r
+}\r
+\r
+/*! \brief Tells whether the region of a page is locked.\r
+ *\r
+ * \param page_number The page number:\r
+ *   \arg \c 0 to <tt>(flashcalw_get_page_count() - 1)</tt>: a page number\r
+ *        within the flash array;\r
+ *   \arg <tt>< 0</tt>: the current page number.\r
+ *\r
+ * \return Whether the region of the specified page is locked.\r
+ */\r
+bool flashcalw_is_page_region_locked(uint32_t page_number)\r
+{\r
+       return flashcalw_is_region_locked(flashcalw_get_page_region(page_number));\r
+}\r
+\r
+/*! \brief Tells whether a region is locked.\r
+ *\r
+ * \param region The region number: \c 0 to <tt>(FLASHCALW_REGIONS - 1)</tt>.\r
+ *\r
+ * \return Whether the specified region is locked.\r
+ */\r
+bool flashcalw_is_region_locked(uint32_t region)\r
+{\r
+       return ((HFLASHC->FLASHCALW_FSR & FLASHCALW_FSR_LOCK0\r
+                       << (region & (FLASHCALW_REGIONS - 1))) != 0);\r
+}\r
+\r
+/*! \brief Locks or unlocks the region of a page.\r
+ *\r
+ * \param page_number The page number:\r
+ *   \arg \c 0 to <tt>(flashcalw_get_page_count() - 1)</tt>: a page number\r
+ *        within the flash array;\r
+ *   \arg <tt>< 0</tt>: the current page number.\r
+ * \param lock Whether to lock the region of the specified page: \c true or\r
+ *             \c false.\r
+ *\r
+ * \note The FLASHCALW error status returned by \ref flashcalw_is_lock_error and\r
+ *       \ref flashcalw_is_programming_error is updated.\r
+ */\r
+void flashcalw_lock_page_region(int page_number, bool lock)\r
+{\r
+       flashcalw_issue_command(\r
+                       (lock) ? FLASHCALW_FCMD_CMD_LP : FLASHCALW_FCMD_CMD_UP,\r
+                       page_number);\r
+}\r
+\r
+/*! \brief Locks or unlocks a region.\r
+ *\r
+ * \param region The region number: \c 0 to <tt>(FLASHCALW_REGIONS - 1)</tt>.\r
+ * \param lock Whether to lock the specified region: \c true or \c false.\r
+ *\r
+ * \note The FLASHCALW error status returned by \ref flashcalw_is_lock_error and\r
+ *       \ref flashcalw_is_programming_error is updated.\r
+ */\r
+void flashcalw_lock_region(uint32_t region, bool lock)\r
+{\r
+       flashcalw_lock_page_region(flashcalw_get_region_first_page_number(\r
+                       region), lock);\r
+}\r
+\r
+/*! \brief Locks or unlocks all regions.\r
+ *\r
+ * \param lock Whether to lock the regions: \c true or \c false.\r
+ *\r
+ * \note The FLASHCALW error status returned by \ref flashcalw_is_lock_error and\r
+ *       \ref flashcalw_is_programming_error is updated.\r
+ */\r
+void flashcalw_lock_all_regions(bool lock)\r
+{\r
+       uint32_t error_status = 0;\r
+       uint32_t region = FLASHCALW_REGIONS;\r
+\r
+       while (region) {\r
+               flashcalw_lock_region(--region, lock);\r
+               error_status |= flashcalw_error_status;\r
+       }\r
+       flashcalw_error_status = error_status;\r
+}\r
+\r
+\r
+//! @}\r
+\r
+/*! \name Access to General-Purpose Fuses\r
+ */\r
+//! @{\r
+\r
+\r
+/*! \brief Reads a general-purpose fuse bit.\r
+ *\r
+ * \param gp_fuse_bit The general-purpose fuse bit: \c 0 to \c 63.\r
+ *\r
+ * \return The value of the specified general-purpose fuse bit.\r
+ *\r
+ * \note The actual number of general-purpose fuse bits implemented by hardware\r
+ *       is given by \c FLASH_GPF_NUM. The other bits among the 64 are\r
+ *       fixed at 1 by hardware.\r
+ */\r
+bool flashcalw_read_gp_fuse_bit(uint32_t gp_fuse_bit)\r
+{\r
+       return ((flashcalw_read_all_gp_fuses() & 1ULL << (gp_fuse_bit & 0x3F))\r
+               != 0);\r
+}\r
+\r
+/*! \brief Reads a general-purpose fuse bit-field.\r
+ *\r
+ * \param pos The bit-position of the general-purpose fuse bit-field: \c 0 to\r
+ *            \c 63.\r
+ * \param width The bit-width of the general-purpose fuse bit-field: \c 0 to\r
+ *              \c 64.\r
+ *\r
+ * \return The value of the specified general-purpose fuse bit-field.\r
+ *\r
+ * \note The actual number of general-purpose fuse bits implemented by hardware\r
+ *       is given by \c FLASH_GPF_NUM. The other bits among the 64 are\r
+ *       fixed at 1 by hardware.\r
+ */\r
+uint64_t flashcalw_read_gp_fuse_bitfield(uint32_t pos, uint32_t width)\r
+{\r
+       return flashcalw_read_all_gp_fuses() >> (pos & 0x3F)\r
+               & ((1ULL << Min(width, 64)) - 1);\r
+}\r
+\r
+/*! \brief Reads a general-purpose fuse byte.\r
+ *\r
+ * \param gp_fuse_byte The general-purpose fuse byte: \c 0 to \c 7.\r
+ *\r
+ * \return The value of the specified general-purpose fuse byte.\r
+ *\r
+ * \note The actual number of general-purpose fuse bits implemented by hardware\r
+ *       is given by \c FLASH_GPF_NUM. The other bits among the 64 are\r
+ *       fixed at 1 by hardware.\r
+ */\r
+uint8_t flashcalw_read_gp_fuse_byte(uint32_t gp_fuse_byte)\r
+{\r
+       return flashcalw_read_all_gp_fuses() >> ((gp_fuse_byte & 0x07) << 3);\r
+}\r
+\r
+/*! \brief Reads all general-purpose fuses.\r
+ *\r
+ * \return The value of all general-purpose fuses as a word.\r
+ *\r
+ * \note The actual number of general-purpose fuse bits implemented by hardware\r
+ *       is given by \c FLASH_GPF_NUM. The other bits among the 64 are\r
+ *       fixed at 1 by hardware.\r
+ */\r
+uint64_t flashcalw_read_all_gp_fuses(void)\r
+{\r
+       return HFLASHC->FLASHCALW_FGPFRLO |\r
+               (uint64_t)HFLASHC->FLASHCALW_FGPFRHI << 32;\r
+}\r
+\r
+/*! \brief Erases a general-purpose fuse bit.\r
+ *\r
+ * \param gp_fuse_bit The general-purpose fuse bit: \c 0 to \c 63.\r
+ * \param check Whether to check erase: \c true or \c false.\r
+ *\r
+ * \return Whether the erase succeeded or always \c true if erase check was not\r
+ *         requested.\r
+ *\r
+ * \warning A Lock Error is issued if the Security bit is active and the command\r
+ *  is applied to BOOTPROT.\r
+ *\r
+ * \note The FLASHCALW error status returned by \ref flashcalw_is_lock_error and\r
+ *       \ref flashcalw_is_programming_error is updated.\r
+ *\r
+ * \note An erase operation can only set bits.\r
+ *\r
+ * \note The actual number of general-purpose fuse bits implemented by hardware\r
+ *       is given by \c FLASH_GPF_NUM. The other bits among the 64 are\r
+ *       fixed at 1 by hardware.\r
+ */\r
+bool flashcalw_erase_gp_fuse_bit(uint32_t gp_fuse_bit, bool check)\r
+{\r
+       flashcalw_issue_command(FLASHCALW_FCMD_CMD_EGPB, gp_fuse_bit & 0x3F);\r
+       return (check) ? flashcalw_read_gp_fuse_bit(gp_fuse_bit) : true;\r
+}\r
+\r
+/*! \brief Erases a general-purpose fuse bit-field.\r
+ *\r
+ * \param pos The bit-position of the general-purpose fuse bit-field: \c 0 to\r
+ *            \c 63.\r
+ * \param width The bit-width of the general-purpose fuse bit-field: \c 0 to\r
+ *              \c 64.\r
+ * \param check Whether to check erase: \c true or \c false.\r
+ *\r
+ * \return Whether the erase succeeded or always \c true if erase check was not\r
+ *         requested.\r
+ *\r
+ * \warning A Lock Error is issued if the Security bit is active and the command\r
+ *  is applied to BOOTPROT.\r
+ *\r
+ * \note The FLASHCALW error status returned by \ref flashcalw_is_lock_error and\r
+ *       \ref flashcalw_is_programming_error is updated.\r
+ *\r
+ * \note An erase operation can only set bits.\r
+ *\r
+ * \note The actual number of general-purpose fuse bits implemented by hardware\r
+ *       is given by \c FLASH_GPF_NUM. The other bits among the 64 are\r
+ *       fixed at 1 by hardware.\r
+ */\r
+bool flashcalw_erase_gp_fuse_bitfield(uint32_t pos, uint32_t width, bool check)\r
+{\r
+       uint32_t error_status = 0;\r
+       uint32_t gp_fuse_bit;\r
+\r
+       pos &= 0x3F;\r
+       width = Min(width, 64);\r
+\r
+       for (gp_fuse_bit = pos; gp_fuse_bit < pos + width; gp_fuse_bit++) {\r
+               flashcalw_erase_gp_fuse_bit(gp_fuse_bit, false);\r
+               error_status |= flashcalw_error_status;\r
+       }\r
+       flashcalw_error_status = error_status;\r
+       return (check) ? (flashcalw_read_gp_fuse_bitfield(pos, width)\r
+               == (1ULL << width) - 1) : true;\r
+}\r
+\r
+/*! \brief Erases a general-purpose fuse byte.\r
+ *\r
+ * \param gp_fuse_byte The general-purpose fuse byte: \c 0 to \c 7.\r
+ * \param check Whether to check erase: \c true or \c false.\r
+ *\r
+ * \return Whether the erase succeeded or always \c true if erase check was not\r
+ *         requested.\r
+ *\r
+ * \warning A Lock Error is issued if the Security bit is active.\r
+ *\r
+ * \note The FLASHCALW error status returned by \ref flashcalw_is_lock_error and\r
+ *       \ref flashcalw_is_programming_error is updated.\r
+ *\r
+ * \note An erase operation can only set bits.\r
+ *\r
+ * \note The actual number of general-purpose fuse bits implemented by hardware\r
+ *       is given by \c FLASH_GPF_NUM. The other bits among the 64 are\r
+ *       fixed at 1 by hardware.\r
+ */\r
+bool flashcalw_erase_gp_fuse_byte(uint32_t gp_fuse_byte, bool check)\r
+{\r
+       uint32_t error_status;\r
+       uint32_t current_gp_fuse_byte;\r
+       uint64_t value = flashcalw_read_all_gp_fuses();\r
+\r
+       flashcalw_erase_all_gp_fuses(false);\r
+       error_status = flashcalw_error_status;\r
+       for (current_gp_fuse_byte = 0; current_gp_fuse_byte < 8;\r
+                       current_gp_fuse_byte++, value >>= 8) {\r
+               if (current_gp_fuse_byte != gp_fuse_byte) {\r
+                       flashcalw_write_gp_fuse_byte(current_gp_fuse_byte,\r
+                                       value);\r
+                       error_status |= flashcalw_error_status;\r
+               }\r
+       }\r
+       flashcalw_error_status = error_status;\r
+       return (check) ? (flashcalw_read_gp_fuse_byte(gp_fuse_byte) == 0xFF)\r
+               : true;\r
+}\r
+\r
+/*! \brief Erases all general-purpose fuses.\r
+ *\r
+ * \param check Whether to check erase: \c true or \c false.\r
+ *\r
+ * \return Whether the erase succeeded or always \c true if erase check was not\r
+ *         requested.\r
+ *\r
+ * \warning A Lock Error is issued if the Security bit is active.\r
+ *\r
+ * \note The FLASHCALW error status returned by \ref flashcalw_is_lock_error and\r
+ *       \ref flashcalw_is_programming_error is updated.\r
+ *\r
+ * \note An erase operation can only set bits.\r
+ *\r
+ * \note The actual number of general-purpose fuse bits implemented by hardware\r
+ *       is given by \c FLASH_GPF_NUM. The other bits among the 64 are\r
+ *       fixed at 1 by hardware.\r
+ */\r
+bool flashcalw_erase_all_gp_fuses(bool check)\r
+{\r
+       flashcalw_issue_command(FLASHCALW_FCMD_CMD_EAGPF, -1);\r
+       return (check) ? (flashcalw_read_all_gp_fuses() ==\r
+               0xFFFFFFFFFFFFFFFFULL) : true;\r
+}\r
+\r
+/*! \brief Writes a general-purpose fuse bit.\r
+ *\r
+ * \param gp_fuse_bit The general-purpose fuse bit: \c 0 to \c 63.\r
+ * \param value The value of the specified general-purpose fuse bit.\r
+ *\r
+ * \warning A Lock Error is issued if the Security bit is active and the command\r
+ * is applied to BOOTPROT.\r
+ *\r
+ * \note The FLASHCALW error status returned by \ref flashcalw_is_lock_error and\r
+ *       \ref flashcalw_is_programming_error is updated.\r
+ *\r
+ * \note A write operation can only clear bits; in other words, an erase\r
+ *  operation must first be done if some bits need to be set to 1.\r
+ *\r
+ * \note The actual number of general-purpose fuse bits implemented by hardware\r
+ *       is given by \c FLASH_GPF_NUM. The other bits among the 64 are\r
+ *       fixed at 1 by hardware.\r
+ */\r
+void flashcalw_write_gp_fuse_bit(uint32_t gp_fuse_bit, bool value)\r
+{\r
+       if (!value) {\r
+               flashcalw_issue_command(FLASHCALW_FCMD_CMD_WGPB, gp_fuse_bit\r
+                               & 0x3F);\r
+       }\r
+}\r
+\r
+/*! \brief Writes a general-purpose fuse bit-field.\r
+ *\r
+ * \param pos The bit-position of the general-purpose fuse bit-field: \c 0 to\r
+ *            \c 63.\r
+ * \param width The bit-width of the general-purpose fuse bit-field: \c 0 to\r
+ *              \c 64.\r
+ * \param value The value of the specified general-purpose fuse bit-field.\r
+ *\r
+ * \warning A Lock Error is issued if the Security bit is active and the command\r
+ * is applied to BOOTPROT.\r
+ *\r
+ * \note The FLASHCALW error status returned by \ref flashcalw_is_lock_error and\r
+ *       \ref flashcalw_is_programming_error is updated.\r
+ *\r
+ * \note A write operation can only clear bits; in other words, an erase\r
+ *  operation must first be done if some bits need to be set to 1.\r
+ *\r
+ * \note The actual number of general-purpose fuse bits implemented by hardware\r
+ *       is given by \c FLASH_GPF_NUM. The other bits among the 64 are\r
+ *       fixed at 1 by hardware.\r
+ */\r
+void flashcalw_write_gp_fuse_bitfield(uint32_t pos, uint32_t width,\r
+               uint64_t value)\r
+{\r
+       uint32_t error_status = 0;\r
+       uint32_t gp_fuse_bit;\r
+\r
+       pos &= 0x3F;\r
+       width = Min(width, 64);\r
+\r
+       for (gp_fuse_bit = pos; gp_fuse_bit < pos + width;\r
+                       gp_fuse_bit++, value >>= 1) {\r
+               flashcalw_write_gp_fuse_bit(gp_fuse_bit, value & 0x01);\r
+               error_status |= flashcalw_error_status;\r
+       }\r
+       flashcalw_error_status = error_status;\r
+}\r
+\r
+/*! \brief Writes a general-purpose fuse byte.\r
+ *\r
+ * \param gp_fuse_byte The general-purpose fuse byte: \c 0 to \c 7.\r
+ * \param value The value of the specified general-purpose fuse byte.\r
+ *\r
+ * \warning A Lock Error is issued if the Security bit is active.\r
+ *\r
+ * \note The FLASHCALW error status returned by \ref flashcalw_is_lock_error and\r
+ *       \ref flashcalw_is_programming_error is updated.\r
+ *\r
+ * \note A write operation can only clear bits; in other words, an erase\r
+ *  operation must first be done if some bits need to be set to 1.\r
+ *\r
+ * \note The actual number of general-purpose fuse bits implemented by hardware\r
+ *       is given by \c FLASH_GPF_NUM. The other bits among the 64 are\r
+ *       fixed at 1 by hardware.\r
+ */\r
+void flashcalw_write_gp_fuse_byte(uint32_t gp_fuse_byte, uint8_t value)\r
+{\r
+       flashcalw_issue_command(FLASHCALW_FCMD_CMD_PGPFB, (gp_fuse_byte & 0x07)\r
+                       | value << 3);\r
+}\r
+\r
+/*! \brief Writes all general-purpose fuses.\r
+ *\r
+ * \param value The value of all general-purpose fuses as a word.\r
+ *\r
+ * \warning A Lock Error is issued if the Security bit is active.\r
+ *\r
+ * \note The FLASHCALW error status returned by \ref flashcalw_is_lock_error and\r
+ *       \ref flashcalw_is_programming_error is updated.\r
+ *\r
+ * \note A write operation can only clear bits; in other words, an erase\r
+ *  operation must first be done if some bits need to be set to 1.\r
+ *\r
+ * \note The actual number of general-purpose fuse bits implemented by hardware\r
+ *       is given by \c FLASH_GPF_NUM. The other bits among the 64 are\r
+ *       fixed at 1 by hardware.\r
+ */\r
+void flashcalw_write_all_gp_fuses(uint64_t value)\r
+{\r
+       uint32_t error_status = 0;\r
+       uint32_t gp_fuse_byte;\r
+\r
+       for (gp_fuse_byte = 0; gp_fuse_byte < 8; gp_fuse_byte++, value >>= 8) {\r
+               flashcalw_write_gp_fuse_byte(gp_fuse_byte, value);\r
+               error_status |= flashcalw_error_status;\r
+       }\r
+       flashcalw_error_status = error_status;\r
+}\r
+\r
+/*! \brief Sets a general-purpose fuse bit with the appropriate erase and write\r
+ *         operations.\r
+ *\r
+ * \param gp_fuse_bit The general-purpose fuse bit: \c 0 to \c 63.\r
+ * \param value The value of the specified general-purpose fuse bit.\r
+ *\r
+ * \warning A Lock Error is issued if the Security bit is active and the command\r
+ * is applied to BOOTPROT.\r
+ *\r
+ * \note The FLASHCALW error status returned by \ref flashcalw_is_lock_error and\r
+ *       \ref flashcalw_is_programming_error is updated.\r
+ *\r
+ * \note The actual number of general-purpose fuse bits implemented by hardware\r
+ *       is given by \c FLASH_GPF_NUM. The other bits among the 64 are\r
+ *       fixed at 1 by hardware.\r
+ */\r
+void flashcalw_set_gp_fuse_bit(uint32_t gp_fuse_bit, bool value)\r
+{\r
+       if (value) {\r
+               flashcalw_erase_gp_fuse_bit(gp_fuse_bit, false);\r
+       } else {\r
+               flashcalw_write_gp_fuse_bit(gp_fuse_bit, false);\r
+       }\r
+}\r
+\r
+/*! \brief Sets a general-purpose fuse bit-field with the appropriate erase and\r
+ *         write operations.\r
+ *\r
+ * \param pos The bit-position of the general-purpose fuse bit-field: \c 0 to\r
+ *            \c 63.\r
+ * \param width The bit-width of the general-purpose fuse bit-field: \c 0 to\r
+ *              \c 64.\r
+ * \param value The value of the specified general-purpose fuse bit-field.\r
+ *\r
+ * \warning A Lock Error is issued if the Security bit is active and the command\r
+ * is applied to BOOTPROT.\r
+ *\r
+ * \note The FLASHCALW error status returned by \ref flashcalw_is_lock_error and\r
+ *       \ref flashcalw_is_programming_error is updated.\r
+ *\r
+ * \note The actual number of general-purpose fuse bits implemented by hardware\r
+ *       is given by \c FLASH_GPF_NUM. The other bits among the 64 are\r
+ *       fixed at 1 by hardware.\r
+ */\r
+void flashcalw_set_gp_fuse_bitfield(uint32_t pos, uint32_t width,\r
+               uint64_t value)\r
+{\r
+       uint32_t error_status = 0;\r
+       uint32_t gp_fuse_bit;\r
+\r
+       pos &= 0x3F;\r
+       width = Min(width, 64);\r
+\r
+       for (gp_fuse_bit = pos; gp_fuse_bit < pos + width;\r
+                       gp_fuse_bit++, value >>= 1) {\r
+               flashcalw_set_gp_fuse_bit(gp_fuse_bit, value & 0x01);\r
+               error_status |= flashcalw_error_status;\r
+       }\r
+       flashcalw_error_status = error_status;\r
+}\r
+\r
+/*! \brief Sets a general-purpose fuse byte with the appropriate erase and write\r
+ *         operations.\r
+ *\r
+ * \param gp_fuse_byte The general-purpose fuse byte: \c 0 to \c 7.\r
+ * \param value The value of the specified general-purpose fuse byte.\r
+ *\r
+ * \warning A Lock Error is issued if the Security bit is active.\r
+ *\r
+ * \note The FLASHCALW error status returned by \ref flashcalw_is_lock_error and\r
+ *       \ref flashcalw_is_programming_error is updated.\r
+ *\r
+ * \note The actual number of general-purpose fuse bits implemented by hardware\r
+ *       is given by \c FLASH_GPF_NUM. The other bits among the 64 are\r
+ *       fixed at 1 by hardware.\r
+ */\r
+void flashcalw_set_gp_fuse_byte(uint32_t gp_fuse_byte, uint8_t value)\r
+{\r
+       uint32_t error_status;\r
+\r
+       switch (value) {\r
+       case 0xFF:\r
+               flashcalw_erase_gp_fuse_byte(gp_fuse_byte, false);\r
+               break;\r
+\r
+       case 0x00:\r
+               flashcalw_write_gp_fuse_byte(gp_fuse_byte, 0x00);\r
+               break;\r
+\r
+       default:\r
+               flashcalw_erase_gp_fuse_byte(gp_fuse_byte, false);\r
+               error_status = flashcalw_error_status;\r
+               flashcalw_write_gp_fuse_byte(gp_fuse_byte, value);\r
+               flashcalw_error_status |= error_status;\r
+               break;\r
+       }\r
+}\r
+\r
+/*! \brief Sets all general-purpose fuses with the appropriate erase and write\r
+ *         operations.\r
+ *\r
+ * \param value The value of all general-purpose fuses as a word.\r
+ *\r
+ * \warning A Lock Error is issued if the Security bit is active.\r
+ *\r
+ * \note The FLASHCALW error status returned by \ref flashcalw_is_lock_error and\r
+ *       \ref flashcalw_is_programming_error is updated.\r
+ *\r
+ * \note The actual number of general-purpose fuse bits implemented by hardware\r
+ *       is given by \c FLASH_GPF_NUM. The other bits among the 64 are\r
+ *       fixed at 1 by hardware.\r
+ */\r
+void flashcalw_set_all_gp_fuses(uint64_t value)\r
+{\r
+       uint32_t error_status;\r
+\r
+       switch (value) {\r
+       case 0xFFFFFFFFFFFFFFFFULL:\r
+               flashcalw_erase_all_gp_fuses(false);\r
+               break;\r
+\r
+       case 0x0000000000000000ULL:\r
+               flashcalw_write_all_gp_fuses(0x0000000000000000ULL);\r
+               break;\r
+\r
+       default:\r
+               flashcalw_erase_all_gp_fuses(false);\r
+               error_status = flashcalw_error_status;\r
+               flashcalw_write_all_gp_fuses(value);\r
+               flashcalw_error_status |= error_status;\r
+               break;\r
+       }\r
+}\r
+\r
+\r
+//! @}\r
+\r
+/*! \name Access to Flash Pages\r
+ */\r
+//! @{\r
+\r
+\r
+/*! \brief Clears the page buffer.\r
+ *\r
+ * This command resets all bits in the page buffer to one. Write accesses to the\r
+ * page buffer can only change page buffer bits from one to zero.\r
+ *\r
+ * \warning The page buffer is not automatically reset after a page write.\r
+ *\r
+ * \note The FLASHCALW error status returned by \ref flashcalw_is_lock_error and\r
+ *       \ref flashcalw_is_programming_error is updated.\r
+ */\r
+void flashcalw_clear_page_buffer(void)\r
+{\r
+       flashcalw_issue_command(FLASHCALW_FCMD_CMD_CPB, -1);\r
+}\r
+\r
+/*! \brief Tells whether the page to which the last Quick Page Read or Quick\r
+ *         Page Read User Page command was applied was erased.\r
+ *\r
+ * \return Whether the page to which the last Quick Page Read or Quick Page Read\r
+ *         User Page command was applied was erased.\r
+ */\r
+bool flashcalw_is_page_erased(void)\r
+{\r
+       return ((HFLASHC->FLASHCALW_FSR & FLASHCALW_FSR_QPRR) != 0);\r
+}\r
+\r
+/*! \brief Applies the Quick Page Read command to a page.\r
+ *\r
+ * \param page_number The page number:\r
+ *   \arg \c 0 to <tt>(flashcalw_get_page_count() - 1)</tt>: a page number\r
+ *        within the flash array;\r
+ *   \arg <tt>< 0</tt>: the current page number.\r
+ *\r
+ * \return Whether the specified page is erased.\r
+ *\r
+ * \note The FLASHCALW error status returned by \ref flashcalw_is_lock_error and\r
+ *       \ref flashcalw_is_programming_error is updated.\r
+ */\r
+bool flashcalw_quick_page_read(int page_number)\r
+{\r
+       flashcalw_issue_command(FLASHCALW_FCMD_CMD_QPR, page_number);\r
+       return flashcalw_is_page_erased();\r
+}\r
+\r
+/*! \brief Erases a page.\r
+ *\r
+ * \param page_number The page number:\r
+ *   \arg \c 0 to <tt>(flashcalw_get_page_count() - 1)</tt>: a page number\r
+ *        within the flash array;\r
+ *   \arg <tt>< 0</tt>: the current page number.\r
+ * \param check Whether to check erase: \c true or \c false.\r
+ *\r
+ * \return Whether the erase succeeded or always \c true if erase check was not\r
+ *         requested.\r
+ *\r
+ * \warning A Lock Error is issued if the command is applied to a page belonging\r
+ *          to a locked region or to the bootloader protected area.\r
+ *\r
+ * \note The FLASHCALW error status returned by \ref flashcalw_is_lock_error and\r
+ *       \ref flashcalw_is_programming_error is updated.\r
+ *\r
+ * \note An erase operation can only set bits.\r
+ */\r
+bool flashcalw_erase_page(int page_number, bool check)\r
+{\r
+       bool page_erased = true;\r
+\r
+       flashcalw_issue_command(FLASHCALW_FCMD_CMD_EP, page_number);\r
+\r
+       if (check) {\r
+               uint32_t error_status = flashcalw_error_status;\r
+               page_erased = flashcalw_quick_page_read(-1);\r
+               flashcalw_error_status |= error_status;\r
+       }\r
+\r
+       return page_erased;\r
+}\r
+\r
+/*! \brief Erases all pages within the flash array.\r
+ *\r
+ * \param check Whether to check erase: \c true or \c false.\r
+ *\r
+ * \return Whether the erase succeeded or always \c true if erase check was not\r
+ *         requested.\r
+ *\r
+ * \warning A Lock Error is issued if at least one region is locked or the\r
+ *          bootloader protection is active.\r
+ *\r
+ * \note The FLASHCALW error status returned by \ref flashcalw_is_lock_error and\r
+ *       \ref flashcalw_is_programming_error is updated.\r
+ *\r
+ * \note An erase operation can only set bits.\r
+ */\r
+bool flashcalw_erase_all_pages(bool check)\r
+{\r
+       bool all_pages_erased = true;\r
+       uint32_t error_status = 0;\r
+       uint32_t page_number = flashcalw_get_page_count();\r
+\r
+       while (page_number) {\r
+               all_pages_erased &= flashcalw_erase_page(--page_number, check);\r
+               error_status |= flashcalw_error_status;\r
+       }\r
+\r
+       flashcalw_error_status = error_status;\r
+       return all_pages_erased;\r
+}\r
+\r
+/*! \brief Writes a page from the page buffer.\r
+ *\r
+ * \param page_number The page number:\r
+ *   \arg \c 0 to <tt>(flashcalw_get_page_count() - 1)</tt>: a page number\r
+ *        within the flash array;\r
+ *   \arg <tt>< 0</tt>: the current page number.\r
+ *\r
+ * \warning A Lock Error is issued if the command is applied to a page belonging\r
+ *          to a locked region or to the bootloader protected area.\r
+ *\r
+ * \warning The page buffer is not automatically reset after a page write.\r
+ *\r
+ * \note The FLASHCALW error status returned by \ref flashcalw_is_lock_error and\r
+ *       \ref flashcalw_is_programming_error is updated.\r
+ *\r
+ * \note A write operation can only clear bits; in other words, an erase\r
+ *  operation must first be done if some bits need to be set to 1.\r
+ */\r
+void flashcalw_write_page(int page_number)\r
+{\r
+       flashcalw_issue_command(FLASHCALW_FCMD_CMD_WP, page_number);\r
+}\r
+\r
+/*! \brief Issues a Quick Page Read User Page command to the FLASHCALW.\r
+ *\r
+ * \return Whether the User page is erased.\r
+ *\r
+ * \note The FLASHCALW error status returned by \ref flashcalw_is_lock_error and\r
+ *       \ref flashcalw_is_programming_error is updated.\r
+ */\r
+bool flashcalw_quick_user_page_read(void)\r
+{\r
+       flashcalw_issue_command(FLASHCALW_FCMD_CMD_QPRUP, -1);\r
+       return flashcalw_is_page_erased();\r
+}\r
+\r
+/*! \brief Erases the User page.\r
+ *\r
+ * \param check Whether to check erase: \c true or \c false.\r
+ *\r
+ * \return Whether the erase succeeded or always \c true if erase check was not\r
+ *         requested.\r
+ *\r
+ * \note The FLASHCALW error status returned by \ref flashcalw_is_lock_error and\r
+ *       \ref flashcalw_is_programming_error is updated.\r
+ *\r
+ * \note An erase operation can only set bits.\r
+ */\r
+bool flashcalw_erase_user_page(bool check)\r
+{\r
+       flashcalw_issue_command(FLASHCALW_FCMD_CMD_EUP, -1);\r
+       return (check) ? flashcalw_quick_user_page_read() : true;\r
+}\r
+\r
+/*! \brief Writes the User page from the page buffer.\r
+ *\r
+ * \warning The page buffer is not automatically reset after a page write.\r
+ *\r
+ * \note The FLASHCALW error status returned by \ref flashcalw_is_lock_error and\r
+ *       \ref flashcalw_is_programming_error is updated.\r
+ *\r
+ * \note A write operation can only clear bits; in other words, an erase\r
+ *  operation must first be done if some bits need to be set to 1.\r
+ */\r
+void flashcalw_write_user_page(void)\r
+{\r
+       flashcalw_issue_command(FLASHCALW_FCMD_CMD_WUP, -1);\r
+}\r
+\r
+/*! \brief Copies \a nbytes bytes to the flash destination pointed to by \a dst\r
+ *         from the repeated \a src source byte.\r
+ *\r
+ * All pointer and size alignments are supported.\r
+ *\r
+ * \param dst Pointer to flash destination.\r
+ * \param src Source byte.\r
+ * \param nbytes Number of bytes to set.\r
+ * \param erase Whether to erase before writing: \c true or \c false.\r
+ *\r
+ * \return The value of \a dst.\r
+ *\r
+ * \warning This function may be called with \a erase set to \c false only if\r
+ *          the destination consists only of erased words, i.e. this function\r
+ *          cannot be used to write only one bit of a previously written word.\r
+ *          E.g., if \c 0x00000001 then \c 0xFFFFFFFE are written to a word, the\r
+ *          resulting value in flash may be different from \c 0x00000000.\r
+ *\r
+ * \warning A Lock Error is issued if the command is applied to pages belonging\r
+ *          to a locked region or to the bootloader protected area.\r
+ *\r
+ * \note The FLASHCALW error status returned by \ref flashcalw_is_lock_error and\r
+ *       \ref flashcalw_is_programming_error is updated.\r
+ */\r
+volatile void *flashcalw_memset8(volatile void *dst, uint8_t src, size_t nbytes,\r
+               bool erase)\r
+{\r
+       return flashcalw_memset16(dst, src | (uint16_t)src << 8, nbytes, erase);\r
+}\r
+\r
+/*! \brief Copies \a nbytes bytes to the flash destination pointed to by \a dst\r
+ *         from the repeated \a src big-endian source half-word.\r
+ *\r
+ * All pointer and size alignments are supported.\r
+ *\r
+ * \param dst Pointer to flash destination.\r
+ * \param src Source half-word.\r
+ * \param nbytes Number of bytes to set.\r
+ * \param erase Whether to erase before writing: \c true or \c false.\r
+ *\r
+ * \return The value of \a dst.\r
+ *\r
+ * \warning This function may be called with \a erase set to \c false only if\r
+ *          the destination consists only of erased words, i.e. this function\r
+ *          can not be used to write only one bit of a previously written word.\r
+ *          E.g., if \c 0x00000001 then \c 0xFFFFFFFE are written to a word, the\r
+ *          resulting value in flash may be different from \c 0x00000000.\r
+ *\r
+ * \warning A Lock Error is issued if the command is applied to pages belonging\r
+ *          to a locked region or to the bootloader protected area.\r
+ *\r
+ * \note The FLASHCALW error status returned by \ref flashcalw_is_lock_error and\r
+ *       \ref flashcalw_is_programming_error is updated.\r
+ */\r
+volatile void *flashcalw_memset16(volatile void *dst, uint16_t src,\r
+               size_t nbytes, bool erase)\r
+{\r
+       return flashcalw_memset32(dst, src | (uint32_t)src << 16, nbytes,\r
+                       erase);\r
+}\r
+\r
+/*! \brief Copies \a nbytes bytes to the flash destination pointed to by \a dst\r
+ *         from the repeated \a src big-endian source word.\r
+ *\r
+ * All pointer and size alignments are supported.\r
+ *\r
+ * \param dst Pointer to flash destination.\r
+ * \param src Source word.\r
+ * \param nbytes Number of bytes to set.\r
+ * \param erase Whether to erase before writing: \c true or \c false.\r
+ *\r
+ * \return The value of \a dst.\r
+ *\r
+ * \warning This function may be called with \a erase set to \c false only if\r
+ *          the destination consists only of erased words, i.e. this function\r
+ *          can not be used to write only one bit of a previously written word.\r
+ *          E.g., if \c 0x00000001 then \c 0xFFFFFFFE are written to a word, the\r
+ *          resulting value in flash may be different from \c 0x00000000.\r
+ *\r
+ * \warning A Lock Error is issued if the command is applied to pages belonging\r
+ *          to a locked region or to the bootloader protected area.\r
+ *\r
+ * \note The FLASHCALW error status returned by \ref flashcalw_is_lock_error and\r
+ *       \ref flashcalw_is_programming_error is updated.\r
+ */\r
+volatile void *flashcalw_memset32(volatile void *dst, uint32_t src,\r
+               size_t nbytes, bool erase)\r
+{\r
+       return flashcalw_memset64(dst, src | (uint64_t)src << 32, nbytes,\r
+                       erase);\r
+}\r
+\r
+/*! \brief Copies \a nbytes bytes to the flash destination pointed to by \a dst\r
+ *         from the repeated \a src big-endian source double-word.\r
+ *\r
+ * All pointer and size alignments are supported.\r
+ *\r
+ * \param dst Pointer to flash destination.\r
+ * \param src Source double-word.\r
+ * \param nbytes Number of bytes to set.\r
+ * \param erase Whether to erase before writing: \c true or \c false.\r
+ *\r
+ * \return The value of \a dst.\r
+ *\r
+ * \warning This function may be called with \a erase set to \c false only if\r
+ *          the destination consists only of erased words, i.e. this function\r
+ *          can not be used to write only one bit of a previously written word.\r
+ *          E.g., if \c 0x00000001 then \c 0xFFFFFFFE are written to a word, the\r
+ *          resulting value in flash may be different from \c 0x00000000.\r
+ *\r
+ * \warning A Lock Error is issued if the command is applied to pages belonging\r
+ *          to a locked region or to the bootloader protected area.\r
+ *\r
+ * \note The FLASHCALW error status returned by \ref flashcalw_is_lock_error and\r
+ *       \ref flashcalw_is_programming_error is updated.\r
+ */\r
+volatile void *flashcalw_memset64(volatile void *dst, uint64_t src,\r
+               size_t nbytes, bool erase)\r
+{\r
+       /* Use aggregated pointers to have several alignments available for a\r
+        * same address. */\r
+       UnionCVPtr flash_array_end;\r
+       UnionVPtr dest;\r
+       Union64 source = {0};\r
+       StructCVPtr dest_end;\r
+       UnionCVPtr flash_page_source_end;\r
+       bool incomplete_flash_page_end;\r
+       Union64 flash_dword;\r
+       UnionVPtr tmp;\r
+       uint32_t error_status = 0;\r
+       uint32_t i;\r
+\r
+       /* Reformat arguments. */\r
+       flash_array_end.u8ptr = ((uint8_t *)FLASH_ADDR)\r
+                       + flashcalw_get_flash_size();\r
+       dest.u8ptr = dst;\r
+       for (i = (Get_align((uint32_t)dest.u8ptr, sizeof(uint64_t)) - 1)\r
+                       & (sizeof(uint64_t) - 1); src;\r
+                       i = (i - 1) & (sizeof(uint64_t) - 1)) {\r
+               source.u8[i] = src;\r
+               src >>= 8;\r
+       }\r
+       dest_end.u8ptr = dest.u8ptr + nbytes;\r
+\r
+       /* If destination is outside flash, go to next flash page if any. */\r
+       if (dest.u8ptr < (uint8_t *)FLASH_ADDR) {\r
+               dest.u8ptr = (uint8_t *)FLASH_ADDR;\r
+       } else if (flash_array_end.u8ptr <= dest.u8ptr &&\r
+                       dest.u8ptr < (uint8_t *)FLASH_USER_PAGE_ADDR) {\r
+               dest.u8ptr = (uint8_t *)FLASH_USER_PAGE_ADDR;\r
+       }\r
+\r
+       /* If end of destination is outside flash, move it to the end of the\r
+        * previous flash page if any. */\r
+       if (dest_end.u8ptr >\r
+                       (((uint8_t *)FLASH_USER_PAGE_ADDR) + FLASH_PAGE_SIZE)) {\r
+               dest_end.u8ptr = (uint8_t *)FLASH_USER_PAGE_ADDR\r
+                               + FLASH_PAGE_SIZE;\r
+       } else if ((uint8_t *)FLASH_USER_PAGE_ADDR >= dest_end.u8ptr &&\r
+                       dest_end.u8ptr > flash_array_end.u8ptr) {\r
+               dest_end.u8ptr = flash_array_end.u8ptr;\r
+       }\r
+\r
+       /* Align each end of destination pointer with its natural boundary. */\r
+       dest_end.u16ptr = (uint16_t *)Align_down((uint32_t)dest_end.u8ptr,\r
+                       sizeof(uint16_t));\r
+       dest_end.u32ptr = (uint32_t *)Align_down((uint32_t)dest_end.u16ptr,\r
+                       sizeof(uint32_t));\r
+       dest_end.u64ptr = (uint64_t *)Align_down((uint32_t)dest_end.u32ptr,\r
+                       sizeof(uint64_t));\r
+\r
+       /* While end of destination is not reached... */\r
+       while (dest.u8ptr < dest_end.u8ptr) {\r
+               /* Clear the page buffer in order to prepare data for a flash\r
+                * page write. */\r
+               flashcalw_clear_page_buffer();\r
+               error_status |= flashcalw_error_status;\r
+\r
+               /* Determine where the source data will end in the current flash\r
+                * page. */\r
+               flash_page_source_end.u64ptr\r
+                       = (uint64_t *)Min((uint32_t)dest_end.u64ptr,\r
+                               Align_down((uint32_t)dest.u8ptr,\r
+                               (uint32_t)FLASH_PAGE_SIZE) + FLASH_PAGE_SIZE);\r
+\r
+               /* Determine if the current destination page has an incomplete\r
+                * end. */\r
+               incomplete_flash_page_end\r
+                       = (Align_down((uint32_t)dest.u8ptr,\r
+                               (uint32_t)FLASH_PAGE_SIZE)\r
+                               >= Align_down((uint32_t)dest_end.u8ptr,\r
+                               (uint32_t)FLASH_PAGE_SIZE));\r
+\r
+               /* Use a flash double-word buffer to manage unaligned accesses. */\r
+               flash_dword.u64 = source.u64;\r
+\r
+               /* If destination does not point to the beginning of the current\r
+                * flash page... */\r
+               if (!Test_align((uint32_t)dest.u8ptr, FLASH_PAGE_SIZE)) {\r
+                       /* Fill the beginning of the page buffer with the\r
+                        * current flash page data.\r
+                        * This is required by the hardware, even if page erase\r
+                        * is not requested, in order to be able to write\r
+                        * successfully to erased parts of flash pages that have\r
+                        * already been written to. */\r
+                       for (tmp.u8ptr = (uint8_t *)Align_down((uint32_t)dest.u8ptr,\r
+                                                       (uint32_t)FLASH_PAGE_SIZE);\r
+                                       tmp.u64ptr < (uint64_t *)Align_down(\r
+                                       (uint32_t)dest.u8ptr,\r
+                                       sizeof(uint64_t));\r
+                                       tmp.u64ptr++) {\r
+                               *tmp.u32ptr = *tmp.u32ptr;\r
+                               *(tmp.u32ptr + 1) = *(tmp.u32ptr + 1);\r
+                       }\r
+\r
+                       /* If destination is not 64-bit aligned... */\r
+                       if (!Test_align((uint32_t)dest.u8ptr,\r
+                                       sizeof(uint64_t))) {\r
+                               /* Fill the beginning of the flash double-word\r
+                                * buffer with the current flash page data.\r
+                                * This is required by the hardware, even if\r
+                                * page erase is not requested, in order to be\r
+                                * able to write successfully to erased parts\r
+                                * of flash pages that have already been written\r
+                                * to. */\r
+                               for (i = 0; i < Get_align((uint32_t)dest.u8ptr,\r
+                                               sizeof(uint64_t)); i++) {\r
+                                       flash_dword.u8[i] = *tmp.u8ptr++;\r
+                               }\r
+\r
+                               /* Align the destination pointer with its 64-bit\r
+                                * boundary. */\r
+                               dest.u64ptr = (uint64_t *)Align_down(\r
+                                               (uint32_t)dest.u8ptr,\r
+                                               sizeof(uint64_t));\r
+\r
+                               /* If the current destination double-word is not\r
+                                * the last one... */\r
+                               if (dest.u64ptr < dest_end.u64ptr) {\r
+                                       /* Write the flash double-word buffer to\r
+                                       the page buffer and reinitialize it. */\r
+                                       *dest.u32ptr++ = flash_dword.u32[0];\r
+                                       *dest.u32ptr++ = flash_dword.u32[1];\r
+                                       flash_dword.u64 = source.u64;\r
+                               }\r
+                       }\r
+               }\r
+\r
+               /* Write the source data to the page buffer with 64-bit\r
+                * alignment. */\r
+               for (i = flash_page_source_end.u64ptr - dest.u64ptr; i; i--) {\r
+                       *dest.u32ptr++ = source.u32[0];\r
+                       *dest.u32ptr++ = source.u32[1];\r
+               }\r
+\r
+               /* If the current destination page has an incomplete end... */\r
+               if (incomplete_flash_page_end) {\r
+                       /* This is required by the hardware, even if page erase\r
+                        * is not requested, in order to be able to write\r
+                        * successfully to erased parts of flash pages that have\r
+                        * already been written to. */\r
+                       {\r
+                               tmp.u8ptr = (volatile uint8_t *)dest_end.u8ptr;\r
+\r
+                               /* If end of destination is not 64-bit aligned. */\r
+                               if (!Test_align((uint32_t)dest_end.u8ptr,\r
+                                               sizeof(uint64_t))) {\r
+                                       /* Fill the end of the flash double-word\r
+                                        * buffer with the current flash page\r
+                                        * data. */\r
+                                       for (i = Get_align(\r
+                                                       (uint32_t)dest_end.u8ptr,\r
+                                                       sizeof(uint64_t));\r
+                                                       i < sizeof(uint64_t);\r
+                                                       i++) {\r
+                                               flash_dword.u8[i] = *tmp.u8ptr++;\r
+                                       }\r
+\r
+                                       /* Write the flash double-word buffer to\r
+                                        * the page buffer. */\r
+                                       *dest.u32ptr++ = flash_dword.u32[0];\r
+                                       *dest.u32ptr++ = flash_dword.u32[1];\r
+                               }\r
+\r
+                               /* Fill the end of the page buffer with the\r
+                               current flash page data. */\r
+                               for (; !Test_align((uint32_t)tmp.u64ptr,\r
+                                               FLASH_PAGE_SIZE); tmp.u64ptr++){\r
+                                       *tmp.u32ptr = *tmp.u32ptr;\r
+                                       *(tmp.u32ptr + 1) = *(tmp.u32ptr + 1);\r
+                               }\r
+                       }\r
+               }\r
+\r
+               /* If the current flash page is in the flash array... */\r
+               if (dest.u8ptr <= (uint8_t *)FLASH_USER_PAGE_ADDR) {\r
+                       /* Erase the current page if requested and write it from\r
+                        * the page buffer. */\r
+                       if (erase) {\r
+                               flashcalw_erase_page(-1, false);\r
+                               error_status |= flashcalw_error_status;\r
+                       }\r
+\r
+                       flashcalw_write_page(-1);\r
+                       error_status |= flashcalw_error_status;\r
+\r
+                       /* If the end of the flash array is reached, go to the\r
+                        * User page. */\r
+                       if (dest.u8ptr >= flash_array_end.u8ptr) {\r
+                               dest.u8ptr = (uint8_t *)FLASH_USER_PAGE_ADDR;\r
+                       }\r
+               } else {\r
+                       /* Erase the User page if requested and write it from\r
+                        * the page buffer. */\r
+                       if (erase) {\r
+                               flashcalw_erase_user_page(false);\r
+                               error_status |= flashcalw_error_status;\r
+                       }\r
+\r
+                       flashcalw_write_user_page();\r
+                       error_status |= flashcalw_error_status;\r
+               }\r
+       }\r
+\r
+       /* Update the FLASHC error status. */\r
+       flashcalw_error_status = error_status;\r
+\r
+       /* Return the initial destination pointer as the standard memset\r
+        * function does. */\r
+       return dst;\r
+}\r
+\r
+/*! \brief Copies \a nbytes bytes to the flash destination pointed to by \a dst\r
+ *         from the source pointed to by \a src.\r
+ *\r
+ * The destination areas that are not within the flash\r
+ * array or the User page are caught by an Assert() operation.\r
+ *\r
+ * All pointer and size alignments are supported.\r
+ *\r
+ * \param dst Pointer to flash destination.\r
+ * \param src Pointer to source data.\r
+ * \param nbytes Number of bytes to copy.\r
+ * \param erase Whether to erase before writing: \c true or \c false.\r
+ *\r
+ * \return The value of \a dst.\r
+ *\r
+ * \warning If copying takes place between areas that overlap, the behavior is\r
+ *          undefined.\r
+ *\r
+ * \warning This function may be called with \a erase set to \c false only if\r
+ *          the destination consists only of erased words, i.e. this function\r
+ *          can not be used to write only one bit of a previously written word.\r
+ *          E.g., if \c 0x00000001 then \c 0xFFFFFFFE are written to a word, the\r
+ *          resulting value in flash may be different from \c 0x00000000.\r
+ *\r
+ * \warning A Lock Error is issued if the command is applied to pages belonging\r
+ *          to a locked region or to the bootloader protected area.\r
+ *\r
+ * \note The FLASHCALW error status returned by \ref flashcalw_is_lock_error and\r
+ *       \ref flashcalw_is_programming_error is updated.\r
+ */\r
+volatile void *flashcalw_memcpy(volatile void *dst, const void *src,\r
+               size_t nbytes, bool erase)\r
+{\r
+       uint16_t page_pos;\r
+       Union64 flash_dword;\r
+       uint8_t i;\r
+       bool b_user_page;\r
+       uint32_t error_status = 0;\r
+       volatile uint8_t *flash_add;\r
+       volatile uint8_t *dest_add = (uint8_t *)dst;\r
+       const uint8_t *src_buf = (const uint8_t *)src;\r
+\r
+       /* Copy area must be in flash array or flash user page */\r
+       Assert((((uint8_t *)dst >= (uint8_t *)FLASH_ADDR) &&\r
+                       (((uint8_t *)dst + nbytes)\r
+                       <= (((uint8_t *)FLASH_ADDR)\r
+                       + flashcalw_get_flash_size()))) ||\r
+                       (((uint8_t *)dst >= (uint8_t *)FLASH_USER_PAGE_ADDR) &&\r
+                       (((uint8_t *)dst + nbytes)\r
+                       <= (((uint8_t *)FLASH_USER_PAGE_ADDR)\r
+                       + FLASH_PAGE_SIZE))));\r
+\r
+       b_user_page = (volatile uint8_t *)dst\r
+                       >= (uint8_t *)FLASH_USER_PAGE_ADDR;\r
+\r
+       flash_add = (uint8_t *)((uint32_t)dest_add\r
+                       - ((uint32_t)dest_add % FLASH_PAGE_SIZE));\r
+\r
+       while (nbytes) {\r
+               /* Clear the page buffer in order to prepare data for a flash\r
+                * page write. */\r
+               flashcalw_clear_page_buffer();\r
+               error_status |= flashcalw_error_status;\r
+\r
+               /* Loop in the page */\r
+               for (page_pos = 0; page_pos < FLASH_PAGE_SIZE;\r
+                               page_pos += sizeof(uint64_t)) {\r
+                       /* Read the flash double-word buffer */\r
+                       flash_dword.u64 = *(volatile uint64_t *)flash_add;\r
+\r
+                       /* Update double-word if necessary */\r
+                       for (i = 0; i < sizeof(uint64_t); i++) {\r
+                               if (nbytes && (flash_add == dest_add)) {\r
+                                       /* Update page with data source */\r
+                                       flash_dword.u8[i] = *src_buf++;\r
+                                       dest_add++;\r
+                                       nbytes--;\r
+                               }\r
+\r
+                               flash_add++;\r
+                       }\r
+\r
+                       /* Write the flash double-word buffer to the page buffer */\r
+                       *(volatile uint64_t *)((uint32_t)flash_add\r
+                       - sizeof(uint64_t)) = flash_dword.u64;\r
+               }\r
+\r
+               /* Erase the current page if requested and write it from the\r
+                * page buffer. */\r
+               if (erase) {\r
+                       (b_user_page) ? flashcalw_erase_user_page(false)\r
+                       : flashcalw_erase_page(-1, false);\r
+                       error_status |= flashcalw_error_status;\r
+               }\r
+\r
+               /* Write the page */\r
+               (b_user_page) ? flashcalw_write_user_page()\r
+               : flashcalw_write_page(-1);\r
+               error_status |= flashcalw_error_status;\r
+       }\r
+       /* Update the FLASHC error status. */\r
+       flashcalw_error_status = error_status;\r
+\r
+       /* Return the initial destination pointer as the standard memcpy\r
+        * function does. */\r
+       return dst;\r
+}\r
+\r
+/** @} */\r
+\r
+\r
+/*! \name PicoCache interfaces\r
+ */\r
+//! @{\r
+\r
+/**\r
+ * \brief Enable PicoCache.\r
+ */\r
+void flashcalw_picocache_enable(void)\r
+{\r
+       sysclk_enable_peripheral_clock(HCACHE);\r
+       HCACHE->HCACHE_CTRL = HCACHE_CTRL_CEN_YES;\r
+\r
+       while (!(flashcalw_picocache_get_status() & HCACHE_SR_CSTS_EN)) {\r
+       }\r
+}\r
+\r
+/**\r
+ * \brief Disable PicoCache.\r
+ */\r
+void flashcalw_picocache_disable(void)\r
+{\r
+       HCACHE->HCACHE_MAINT0 = HCACHE_MAINT0_INVALL_YES;\r
+       HCACHE->HCACHE_CTRL = HCACHE_CTRL_CEN_NO;\r
+\r
+       while (flashcalw_picocache_get_status() != HCACHE_SR_CSTS_DIS) {\r
+       }\r
+\r
+       sysclk_disable_peripheral_clock(HCACHE);\r
+}\r
+\r
+/**\r
+ * \brief Get PicoCache status.\r
+ *\r
+ * \return 1 If PicoCahe is enabled, else disabled.\r
+ */\r
+uint32_t flashcalw_picocache_get_status(void)\r
+{\r
+       return HCACHE->HCACHE_SR;\r
+}\r
+\r
+/**\r
+ * \brief Invalid all PicoCache lines.\r
+ */\r
+void flashcalw_picocache_invalid_all(void)\r
+{\r
+       HCACHE->HCACHE_MAINT0 = HCACHE_MAINT0_INVALL_YES;\r
+}\r
+\r
+/**\r
+ * \brief Invalid specific cache line.\r
+ *\r
+ * \param index Lines to be invalid.\r
+ */\r
+void flashcalw_picocache_invalid_line(uint32_t index)\r
+{\r
+       /* Disable the cache controller */\r
+       HCACHE->HCACHE_CTRL = HCACHE_CTRL_CEN_NO;\r
+\r
+       /* Wait for disable successfully */\r
+       while (flashcalw_picocache_get_status() != HCACHE_SR_CSTS_DIS) {\r
+       }\r
+\r
+       /* Invalid the line */\r
+       HCACHE->HCACHE_MAINT1 = index;\r
+\r
+       /* Enable the cache again */\r
+       HCACHE->HCACHE_CTRL = HCACHE_CTRL_CEN_YES;\r
+}\r
+\r
+/**\r
+ * \brief Set PicoCache monitor mode.\r
+ *\r
+ * \param mode PicoCache mode, 0 for cycle, 1 for instruction hit and 2 for data\r
+ *hit.\r
+ */\r
+void flashcalw_picocache_set_monitor_mode(uint32_t mode)\r
+{\r
+       HCACHE->HCACHE_MCFG = mode;\r
+}\r
+\r
+/**\r
+ * \brief Enable PicoCache monitor.\r
+ */\r
+void flashcalw_picocache_enable_monitor(void)\r
+{\r
+       HCACHE->HCACHE_MEN = HCACHE_MEN_MENABLE_EN;\r
+}\r
+\r
+/**\r
+ * \brief Disable PicoCache monitor.\r
+ */\r
+void flashcalw_picocache_disable_monitor(void)\r
+{\r
+       HCACHE->HCACHE_MEN = HCACHE_MEN_MENABLE_DIS;\r
+}\r
+\r
+/**\r
+ * \brief Reset PicoCache monitor.\r
+ */\r
+void flashcalw_picocache_reset_monitor( void )\r
+{\r
+       HCACHE->HCACHE_MCTRL = HCACHE_MCTRL_SWRST_YES;\r
+}\r
+\r
+/**\r
+ * \brief Get PicoCache monitor count number.\r
+ *\r
+ * \return Monitor counter number.\r
+ */\r
+uint32_t flashcalw_picocache_get_monitor_cnt( void )\r
+{\r
+       return HCACHE->HCACHE_MSR;\r
+}\r
+\r
+/**\r
+ * \brief Get PicoCache version.\r
+ *\r
+ * \return PicoCache version.\r
+ */\r
+uint32_t flashcalw_picocache_get_version( void )\r
+{\r
+       return HCACHE->HCACHE_VERSION;\r
+}\r
+\r
+/** @} */\r
+\r
+/**\r
+ * \}\r
+ */\r
+\r
+/// @cond 0\r
+/**INDENT-OFF**/\r
+#ifdef __cplusplus\r
+}\r
+#endif\r
+/**INDENT-ON**/\r
+/// @endcond\r
diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/asf/sam/drivers/flashcalw/flashcalw.h b/FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/asf/sam/drivers/flashcalw/flashcalw.h
new file mode 100644 (file)
index 0000000..cd450a0
--- /dev/null
@@ -0,0 +1,399 @@
+/**\r
+ * \file\r
+ *\r
+ * \brief FlashCALW driver for SAM4L.\r
+ *\r
+ * Copyright (c) 2012-2013 Atmel Corporation. All rights reserved.\r
+ *\r
+ * \asf_license_start\r
+ *\r
+ * \page License\r
+ *\r
+ * Redistribution and use in source and binary forms, with or without\r
+ * modification, are permitted provided that the following conditions are met:\r
+ *\r
+ * 1. Redistributions of source code must retain the above copyright notice,\r
+ *    this list of conditions and the following disclaimer.\r
+ *\r
+ * 2. Redistributions in binary form must reproduce the above copyright notice,\r
+ *    this list of conditions and the following disclaimer in the documentation\r
+ *    and/or other materials provided with the distribution.\r
+ *\r
+ * 3. The name of Atmel may not be used to endorse or promote products derived\r
+ *    from this software without specific prior written permission.\r
+ *\r
+ * 4. This software may only be redistributed and used in connection with an\r
+ *    Atmel microcontroller product.\r
+ *\r
+ * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED\r
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\r
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE\r
+ * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR\r
+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\r
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS\r
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)\r
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,\r
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\r
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\r
+ * POSSIBILITY OF SUCH DAMAGE.\r
+ *\r
+ * \asf_license_stop\r
+ *\r
+ */\r
+\r
+#ifndef FLASHCALW_H_INCLUDED\r
+#define FLASHCALW_H_INCLUDED\r
+\r
+#include <stddef.h>\r
+#include <stdbool.h>\r
+#include "compiler.h"\r
+\r
+/* These defines should be part of the auto-generated header files */\r
+#if (!defined FLASH_PAGE_SIZE)\r
+#   define FLASH_PAGE_SIZE     512UL\r
+#endif\r
+#if (!defined FLASH_NB_OF_REGIONS)\r
+#   define FLASH_NB_OF_REGIONS 16\r
+#endif\r
+\r
+\r
+/* ! Number of flash regions defined by the FLASHCALW. */\r
+#define FLASHCALW_REGIONS  FLASH_NB_OF_REGIONS\r
+\r
+/** \brief Maximum operating frequency when FWS is 1 in PS0 mode and\r
+ the Fast wakeup is enabled */\r
+#define FLASH_FREQ_PS1_FWS_1_FWU_MAX_FREQ    (12000000UL)\r
+/** \brief Maximum operating frequency when FWS is 0 in PS0 mode */\r
+#define FLASH_FREQ_PS0_FWS_0_MAX_FREQ        (18000000UL)\r
+/** \brief Maximum operating frequency when FWS is 1 in PS0 mode */\r
+#define FLASH_FREQ_PS0_FWS_1_MAX_FREQ        (36000000UL)\r
+/** \brief Maximum operating frequency when FWS is 0 in PS1 mode */\r
+#define FLASH_FREQ_PS1_FWS_0_MAX_FREQ        (8000000UL)\r
+/** \brief Maximum operating frequency when FWS is 1 in PS1 mode */\r
+#define FLASH_FREQ_PS1_FWS_1_MAX_FREQ        (12000000UL)\r
+/** \brief Maximum operating frequency when FWS is 0 in PS2 mode */\r
+#define FLASH_FREQ_PS2_FWS_0_MAX_FREQ        (24000000UL)\r
+/** \brief Maximum operating frequency when FWS is 1 in PS2 mode */\r
+#define FLASH_FREQ_PS2_FWS_1_MAX_FREQ        (48000000UL)\r
+/*! \name Flash Properties\r
+ */\r
+//! @{\r
+\r
+uint32_t flashcalw_get_flash_size(void);\r
+\r
+uint32_t flashcalw_get_page_count(void);\r
+\r
+uint32_t flashcalw_get_page_count_per_region(void);\r
+\r
+uint32_t flashcalw_get_page_region(int32_t page_number);\r
+\r
+uint32_t flashcalw_get_region_first_page_number(uint32_t region);\r
+\r
+//! @}\r
+\r
+\r
+/*! \name FLASHCALW Control\r
+ */\r
+//! @{\r
+\r
+uint32_t flashcalw_get_wait_state(void);\r
+\r
+void flashcalw_set_wait_state(uint32_t wait_state);\r
+\r
+void flashcalw_set_flash_waitstate_and_readmode(uint32_t cpu_f_hz,\r
+               uint32_t ps_value, bool is_fwu_enabled);\r
+\r
+/*! \brief Alias on the flashcalw_set_flash_waitstate_and_readmode() function.\r
+ *\r
+ * \param cpu_f_hz The CPU frequency\r
+ * \param ps_value (boolean), Power Scaling mode\r
+ * \param is_fwu_enabled (boolean), Fast wakeup mode\r
+ */\r
+#define flash_set_bus_freq(cpu_f_hz, ps_value, is_fwu_enabled) \\r
+       flashcalw_set_flash_waitstate_and_readmode(cpu_f_hz, ps_value, is_fwu_enabled)\r
+\r
+bool flashcalw_is_ready_int_enabled(void);\r
+\r
+void flashcalw_enable_ready_int(bool enable);\r
+\r
+bool flashcalw_is_lock_error_int_enabled(void);\r
+\r
+void flashcalw_enable_lock_error_int(bool enable);\r
+\r
+bool flashcalw_is_prog_error_int_enabled(void);\r
+\r
+void flashcalw_enable_prog_error_int(bool enable);\r
+\r
+//! @}\r
+\r
+\r
+/*! \name FLASHCALW Status\r
+ */\r
+//! @{\r
+\r
+bool flashcalw_is_ready(void);\r
+\r
+void flashcalw_default_wait_until_ready(void);\r
+\r
+extern void (*volatile flashcalw_wait_until_ready)(void);\r
+\r
+bool flashcalw_is_lock_error(void);\r
+\r
+bool flashcalw_is_programming_error(void);\r
+\r
+//! @}\r
+\r
+\r
+/*! \name FLASHCALW Command Control\r
+ */\r
+//! @{\r
+\r
+uint32_t flashcalw_get_command(void);\r
+\r
+uint32_t flashcalw_get_page_number(void);\r
+\r
+void flashcalw_issue_command(uint32_t command, int page_number);\r
+\r
+//! @}\r
+\r
+\r
+/*! \name FLASHCALW Global Commands\r
+ */\r
+//! @{\r
+\r
+void flashcalw_no_operation(void);\r
+\r
+void flashcalw_erase_all(void);\r
+\r
+//! @}\r
+\r
+\r
+/*! \name FLASHCALW Protection Mechanisms\r
+ */\r
+//! @{\r
+\r
+bool flashcalw_is_security_bit_active(void);\r
+\r
+void flashcalw_set_security_bit(void);\r
+\r
+bool flashcalw_is_page_region_locked(uint32_t page_number);\r
+\r
+bool flashcalw_is_region_locked(uint32_t region);\r
+\r
+void flashcalw_lock_page_region(int page_number, bool lock);\r
+\r
+void flashcalw_lock_region(uint32_t region, bool lock);\r
+\r
+void flashcalw_lock_all_regions(bool lock);\r
+\r
+//! @}\r
+\r
+\r
+/*! \name Access to General-Purpose Fuses\r
+ */\r
+//! @{\r
+\r
+bool flashcalw_read_gp_fuse_bit(uint32_t gp_fuse_bit);\r
+\r
+uint64_t flashcalw_read_gp_fuse_bitfield(uint32_t pos, uint32_t width);\r
+\r
+uint8_t flashcalw_read_gp_fuse_byte(uint32_t gp_fuse_byte);\r
+\r
+uint64_t flashcalw_read_all_gp_fuses(void);\r
+\r
+bool flashcalw_erase_gp_fuse_bit(uint32_t gp_fuse_bit, bool check);\r
+\r
+bool flashcalw_erase_gp_fuse_bitfield(uint32_t pos, uint32_t width,\r
+               bool check);\r
+\r
+bool flashcalw_erase_gp_fuse_byte(uint32_t gp_fuse_byte, bool check);\r
+\r
+bool flashcalw_erase_all_gp_fuses(bool check);\r
+\r
+void flashcalw_write_gp_fuse_bit(uint32_t gp_fuse_bit, bool value);\r
+\r
+void flashcalw_write_gp_fuse_bitfield(uint32_t pos, uint32_t width,\r
+               uint64_t value);\r
+\r
+void flashcalw_write_gp_fuse_byte(uint32_t gp_fuse_byte, uint8_t value);\r
+\r
+void flashcalw_write_all_gp_fuses(uint64_t value);\r
+\r
+void flashcalw_set_gp_fuse_bit(uint32_t gp_fuse_bit, bool value);\r
+\r
+void flashcalw_set_gp_fuse_bitfield(uint32_t pos, uint32_t width,\r
+               uint64_t value);\r
+\r
+void flashcalw_set_gp_fuse_byte(uint32_t gp_fuse_byte, uint8_t value);\r
+\r
+void flashcalw_set_all_gp_fuses(uint64_t value);\r
+\r
+//! @}\r
+\r
+\r
+/*! \name Access to Flash Pages\r
+ */\r
+//! @{\r
+\r
+void flashcalw_clear_page_buffer(void);\r
+\r
+bool flashcalw_is_page_erased(void);\r
+\r
+bool flashcalw_quick_page_read(int page_number);\r
+\r
+bool flashcalw_erase_page(int page_number, bool check);\r
+\r
+bool flashcalw_erase_all_pages(bool check);\r
+\r
+void flashcalw_write_page(int page_number);\r
+\r
+bool flashcalw_quick_user_page_read(void);\r
+\r
+bool flashcalw_erase_user_page(bool check);\r
+\r
+void flashcalw_write_user_page(void);\r
+\r
+volatile void *flashcalw_memset8(volatile void *dst, uint8_t src,\r
+               size_t nbytes, bool erase);\r
+\r
+volatile void *flashcalw_memset16(volatile void *dst, uint16_t src,\r
+               size_t nbytes, bool erase);\r
+\r
+volatile void *flashcalw_memset32(volatile void *dst, uint32_t src,\r
+               size_t nbytes, bool erase);\r
+\r
+volatile void *flashcalw_memset64(volatile void *dst, uint64_t src,\r
+               size_t nbytes, bool erase);\r
+\r
+/*! \brief Copies \a nbytes bytes to the flash destination pointed to by \a dst\r
+ *         from the repeated \a src big-endian source pattern.\r
+ *\r
+ * All pointer and size alignments are supported.\r
+ *\r
+ * \param dst Pointer to flash destination.\r
+ * \param src Source double-word.\r
+ * \param src_width \a src width in bits: 8, 16, 32 or 64.\r
+ * \param nbytes Number of bytes to set.\r
+ * \param erase Whether to erase before writing: \c true or \c false.\r
+ *\r
+ * \return The value of \a dst.\r
+ *\r
+ * \warning This function may be called with \a erase set to \c false only if\r
+ *          the destination consists only of erased words, i.e. this function\r
+ *          can not be used to write only one bit of a previously written word.\r
+ *          E.g., if \c 0x00000001 then \c 0xFFFFFFFE are written to a word, the\r
+ *          resulting value in flash may be different from \c 0x00000000.\r
+ *\r
+ * \warning A Lock Error is issued if the command is applied to pages belonging\r
+ *          to a locked region or to the bootloader protected area.\r
+ *\r
+ * \note The FLASHCALW error status returned by \ref flashcalw_is_lock_error and\r
+ *       \ref flashcalw_is_programming_error is updated.\r
+ */\r
+#define flashcalw_memset(dst, src, src_width, nbytes, erase) \\r
+       TPASTE2(flashcalw_memset, src_width) ((dst), (src), (nbytes), (erase))\r
+\r
+volatile void *flashcalw_memcpy(volatile void *dst, const void *src,\r
+               size_t nbytes, bool erase);\r
+\r
+//! @}\r
+\r
+/*! \name PicoCache interfaces.\r
+ */\r
+//! @{\r
+\r
+void flashcalw_picocache_enable(void);\r
+\r
+void flashcalw_picocache_disable(void);\r
+\r
+uint32_t flashcalw_picocache_get_status(void);\r
+\r
+void flashcalw_picocache_invalid_all(void);\r
+\r
+void flashcalw_picocache_invalid_line(uint32_t index);\r
+\r
+void flashcalw_picocache_set_monitor_mode(uint32_t mode);\r
+\r
+void flashcalw_picocache_enable_monitor(void);\r
+\r
+void flashcalw_picocache_disable_monitor(void);\r
+\r
+void flashcalw_picocache_reset_monitor( void );\r
+\r
+uint32_t flashcalw_picocache_get_monitor_cnt( void );\r
+\r
+uint32_t flashcalw_picocache_get_version( void );\r
+\r
+//! @}\r
+\r
+/**\r
+ * \page sam_flashcalw_quickstart Quickstart guide for SAM FLASHCALW driver\r
+ *\r
+ * This is the quickstart guide for the \ref group_sam_drivers_flashcalw\r
+ * "SAM FLASHCALW driver", with step-by-step instructions on how to\r
+ * configure and use the driver in a selection of use cases.\r
+ *\r
+ * The use cases contain several code fragments. The code fragments in the\r
+ * steps for setup can be copied into a custom initialization function, while\r
+ * the steps for usage can be copied into, e.g., the main application function.\r
+ *\r
+ * \section flashcalw_basic_use_case Basic use case\r
+ * In this basic use case, the last page page and the user page will be written\r
+ * with a specific magic number.\r
+ *\r
+ * \subsection sam_flashcalw_quickstart_prereq Prerequisites\r
+ * -# \ref sysclk_group "System Clock Management (Sysclock)"\r
+ *\r
+ * \section flashcalw_basic_use_case_setup Setup steps\r
+ *  \note The CLK_FLASHCALW_AHB, CLK_FLASHCALW_APB are enabled\r
+ * by default.\r
+ * \subsection flashcalw_basic_use_case_setup_code Example code\r
+ * Enable the following macro in the conf_clock.h:\r
+ * \code\r
+ *  #define CONFIG_SYSCLK_SOURCE   SYSCLK_SRC_RCFAST\r
+ *  #define CONFIG_RCFAST_FRANGE    2\r
+ * \endcode\r
+ *\r
+ * Add the following code in the application C-file:\r
+ * \code\r
+ *  sysclk_init();\r
+ * \endcode\r
+ *\r
+ * \subsection flashcalw_basic_use_case_setup_flow Workflow\r
+ * -# Set system clock source as fast RC oscillator:\r
+ *   - \code #define CONFIG_SYSCLK_SOURCE SYSCLK_SRC_RCFAST \endcode\r
+ * -# Set fast RC oscillator as 12MHz:\r
+ *   - \code #define CONFIG_RCFAST_FRANGE    2 \endcode\r
+ * -# Initialize the system clock.\r
+ *   - \code sysclk_init(); \endcode\r
+ *\r
+ * \section flashcalw_basic_use_case_usage Usage steps\r
+ * \subsection flashcalw_basic_use_case_usage_code Example code\r
+ * Add to, e.g., main loop in application C-file:\r
+ * \code\r
+ *    #define MAGIC_NUM 0x4c4d5441\r
+ *    #define PAGE_ADDRESS (FLASH_ADDR + FLASH_SIZE - FLASH_PAGE_SIZE)\r
+ *    #define USER_PAGE_ADDRESS (FLASH_USER_PAGE_ADDR + 8)\r
+ *    static const uint32_t write_data = MAGIC_NUM;\r
+ *\r
+ *    flashcalw_memcpy((void *)PAGE_ADDRESS, &write_data, 4, true);\r
+ *    flashcalw_memcpy((void *)USER_PAGE_ADDRESS, &write_data, 4, true);\r
+ * \endcode\r
+ *\r
+ * \subsection flashcalw_basic_use_case_usage_flow Workflow\r
+ * -# Define the written locations and magic number:\r
+ *   - \code #define MAGIC_NUM 0x4c4d5441 \endcode\r
+ *   - \code #define PAGE_ADDRESS (FLASH_ADDR + FLASH_SIZE - FLASH_PAGE_SIZE)\r
+ * \endcode\r
+ *   - \code USER_PAGE_ADDRESS (FLASH_USER_PAGE_ADDR + 8) \endcode\r
+ *   - \note The storage location must not at the beginning of the user page as the first 2\r
+ * words of the user page is reserved.\r
+ *   - \code static const uint32_t write_data = MAGIC_NUM; \endcode\r
+ * -# Write the magic number to the flash array:\r
+ *   - \code flashcalw_memcpy((void *)PAGE_ADDRESS, &write_data, 4, true); \endcode\r
+ * -# Write the magic number to the user page:\r
+ *   - \code flashcalw_memcpy((void *)USER_PAGE_ADDRESS, &write_data, 4, true);\r
+ * \endcode\r
+ *\r
+ */\r
+#endif  /* FLASHCALW_H_INCLUDED */\r
diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/asf/sam/utils/cmsis/sam4l/include/sam4l.h b/FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/asf/sam/utils/cmsis/sam4l/include/sam4l.h
new file mode 100644 (file)
index 0000000..2ae33c6
--- /dev/null
@@ -0,0 +1,16184 @@
+/**\r
+ * \file\r
+ *\r
+ * Copyright (c) 2012-2013 Atmel Corporation. All rights reserved.\r
+ *\r
+ * \asf_license_start\r
+ *\r
+ * \page License\r
+ *\r
+ * Redistribution and use in source and binary forms, with or without\r
+ * modification, are permitted provided that the following conditions are met:\r
+ *\r
+ * 1. Redistributions of source code must retain the above copyright notice,\r
+ *    this list of conditions and the following disclaimer.\r
+ *\r
+ * 2. Redistributions in binary form must reproduce the above copyright notice,\r
+ *    this list of conditions and the following disclaimer in the documentation\r
+ *    and/or other materials provided with the distribution.\r
+ *\r
+ * 3. The name of Atmel may not be used to endorse or promote products derived\r
+ *    from this software without specific prior written permission.\r
+ *\r
+ * 4. This software may only be redistributed and used in connection with an\r
+ *    Atmel microcontroller product.\r
+ *\r
+ * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED\r
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\r
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE\r
+ * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR\r
+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\r
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS\r
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)\r
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,\r
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\r
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\r
+ * POSSIBILITY OF SUCH DAMAGE.\r
+ *\r
+ * \asf_license_stop\r
+ *\r
+ */\r
+\r
+#ifndef SAM4L_H\r
+#define SAM4L_H\r
+\r
+/** \addtogroup SAM4L_definitions SAM4L definitions\r
+  This file defines all structures and symbols for SAM4L:\r
+    - registers and bitfields\r
+    - peripheral base address\r
+    - peripheral ID\r
+    - PIO definitions\r
+*/\r
+/*@{*/\r
+\r
+#ifdef __cplusplus\r
+ extern "C" {\r
+#endif\r
+\r
+#ifndef __ASSEMBLY__\r
+#include <stdint.h>\r
+#ifndef __cplusplus\r
+typedef volatile const uint32_t RoReg;   /**< Read only 32-bit register (volatile const unsigned int) */\r
+typedef volatile const uint16_t RoReg16; /**< Read only 16-bit register (volatile const unsigned int) */\r
+typedef volatile const uint8_t  RoReg8;  /**< Read only  8-bit register (volatile const unsigned int) */\r
+#else\r
+typedef volatile       uint32_t RoReg;   /**< Read only 32-bit register (volatile const unsigned int) */\r
+typedef volatile       uint16_t RoReg16; /**< Read only 16-bit register (volatile const unsigned int) */\r
+typedef volatile       uint8_t  RoReg8;  /**< Read only  8-bit register (volatile const unsigned int) */\r
+#endif\r
+typedef volatile       uint32_t WoReg;   /**< Write only 32-bit register (volatile unsigned int) */\r
+typedef volatile       uint16_t WoReg16; /**< Write only 16-bit register (volatile unsigned int) */\r
+typedef volatile       uint32_t WoReg8;  /**< Write only  8-bit register (volatile unsigned int) */\r
+typedef volatile       uint32_t RwReg;   /**< Read-Write 32-bit register (volatile unsigned int) */\r
+typedef volatile       uint16_t RwReg16; /**< Read-Write 16-bit register (volatile unsigned int) */\r
+typedef volatile       uint8_t  RwReg8;  /**< Read-Write  8-bit register (volatile unsigned int) */\r
+#define CAST(type, value) ((type *)(value))\r
+#define REG_ACCESS(type, address) (*(type*)(address)) /**< C code: Register value */\r
+#else\r
+#define CAST(type, value) (value)\r
+#define REG_ACCESS(type, address) (address) /**< Assembly code: Register address */\r
+#endif\r
+\r
+/* ************************************************************************** */\r
+/*   CMSIS DEFINITIONS FOR SAM4L */\r
+/* ************************************************************************** */\r
+/** \addtogroup SAM4L_cmsis CMSIS Definitions */\r
+/*@{*/\r
+\r
+\r
+/**< Interrupt Number Definition */\r
+typedef enum IRQn\r
+{\r
+/******  Cortex-M4 Processor Exceptions Numbers ******************************/\r
+  NonMaskableInt_IRQn   = -14, /**<  2 Non Maskable Interrupt                */\r
+  HardFault_IRQn        = -13, /**<  3 Cortex-M4 Hard Fault Interrupt        */\r
+  MemoryManagement_IRQn = -12, /**<  4 Cortex-M4 Memory Management Interrupt */\r
+  BusFault_IRQn         = -11, /**<  5 Cortex-M4 Bus Fault Interrupt         */\r
+  UsageFault_IRQn       = -10, /**<  6 Cortex-M4 Usage Fault Interrupt       */\r
+  SVCall_IRQn           = -5,  /**< 11 Cortex-M4 SV Call Interrupt           */\r
+  DebugMonitor_IRQn     = -4,  /**< 12 Cortex-M4 Debug Monitor Interrupt     */\r
+  PendSV_IRQn           = -2,  /**< 14 Cortex-M4 Pend SV Interrupt           */\r
+  SysTick_IRQn          = -1,  /**< 15 Cortex-M4 System Tick Interrupt       */\r
+  /******  SAM4L specific Interrupt Numbers *********************************/\r
+  HFLASHC_IRQn          =  0, /**<  0 SAM4L Flash Controller (HFLASHC) */\r
+  PDCA_0_IRQn           =  1, /**<  1 SAM4L Peripheral DMA Controller (PDCA) */\r
+  PDCA_1_IRQn           =  2, /**<  2 SAM4L Peripheral DMA Controller (PDCA) */\r
+  PDCA_2_IRQn           =  3, /**<  3 SAM4L Peripheral DMA Controller (PDCA) */\r
+  PDCA_3_IRQn           =  4, /**<  4 SAM4L Peripheral DMA Controller (PDCA) */\r
+  PDCA_4_IRQn           =  5, /**<  5 SAM4L Peripheral DMA Controller (PDCA) */\r
+  PDCA_5_IRQn           =  6, /**<  6 SAM4L Peripheral DMA Controller (PDCA) */\r
+  PDCA_6_IRQn           =  7, /**<  7 SAM4L Peripheral DMA Controller (PDCA) */\r
+  PDCA_7_IRQn           =  8, /**<  8 SAM4L Peripheral DMA Controller (PDCA) */\r
+  PDCA_8_IRQn           =  9, /**<  9 SAM4L Peripheral DMA Controller (PDCA) */\r
+  PDCA_9_IRQn           = 10, /**< 10 SAM4L Peripheral DMA Controller (PDCA) */\r
+  PDCA_10_IRQn          = 11, /**< 11 SAM4L Peripheral DMA Controller (PDCA) */\r
+  PDCA_11_IRQn          = 12, /**< 12 SAM4L Peripheral DMA Controller (PDCA) */\r
+  PDCA_12_IRQn          = 13, /**< 13 SAM4L Peripheral DMA Controller (PDCA) */\r
+  PDCA_13_IRQn          = 14, /**< 14 SAM4L Peripheral DMA Controller (PDCA) */\r
+  PDCA_14_IRQn          = 15, /**< 15 SAM4L Peripheral DMA Controller (PDCA) */\r
+  PDCA_15_IRQn          = 16, /**< 16 SAM4L Peripheral DMA Controller (PDCA) */\r
+  CRCCU_IRQn            = 17, /**< 17 SAM4L CRC Calculation Unit (CRCCU) */\r
+  USBC_IRQn             = 18, /**< 18 SAM4L USB 2.0 Interface (USBC) */\r
+  PEVC_TR_IRQn          = 19, /**< 19 SAM4L Peripheral Event Controller (PEVC) */\r
+  PEVC_OV_IRQn          = 20, /**< 20 SAM4L Peripheral Event Controller (PEVC) */\r
+  AESA_IRQn             = 21, /**< 21 SAM4L Advanced Encryption Standard (AESA) */\r
+  PM_IRQn               = 22, /**< 22 SAM4L Power Manager (PM) */\r
+  SCIF_IRQn             = 23, /**< 23 SAM4L System Control Interface (SCIF) */\r
+  FREQM_IRQn            = 24, /**< 24 SAM4L Frequency Meter (FREQM) */\r
+  GPIO_0_IRQn           = 25, /**< 25 SAM4L General-Purpose Input/Output Controller (GPIO) */\r
+  GPIO_1_IRQn           = 26, /**< 26 SAM4L General-Purpose Input/Output Controller (GPIO) */\r
+  GPIO_2_IRQn           = 27, /**< 27 SAM4L General-Purpose Input/Output Controller (GPIO) */\r
+  GPIO_3_IRQn           = 28, /**< 28 SAM4L General-Purpose Input/Output Controller (GPIO) */\r
+  GPIO_4_IRQn           = 29, /**< 29 SAM4L General-Purpose Input/Output Controller (GPIO) */\r
+  GPIO_5_IRQn           = 30, /**< 30 SAM4L General-Purpose Input/Output Controller (GPIO) */\r
+  GPIO_6_IRQn           = 31, /**< 31 SAM4L General-Purpose Input/Output Controller (GPIO) */\r
+  GPIO_7_IRQn           = 32, /**< 32 SAM4L General-Purpose Input/Output Controller (GPIO) */\r
+  GPIO_8_IRQn           = 33, /**< 33 SAM4L General-Purpose Input/Output Controller (GPIO) */\r
+  GPIO_9_IRQn           = 34, /**< 34 SAM4L General-Purpose Input/Output Controller (GPIO) */\r
+  GPIO_10_IRQn          = 35, /**< 35 SAM4L General-Purpose Input/Output Controller (GPIO) */\r
+  GPIO_11_IRQn          = 36, /**< 36 SAM4L General-Purpose Input/Output Controller (GPIO) */\r
+  BPM_IRQn              = 37, /**< 37 SAM4L Backup Power Manager (BPM) */\r
+  BSCIF_IRQn            = 38, /**< 38 SAM4L Backup System Control Interface (BSCIF) */\r
+  AST_ALARM_IRQn        = 39, /**< 39 SAM4L Asynchronous Timer (AST) */\r
+  AST_PER_IRQn          = 40, /**< 40 SAM4L Asynchronous Timer (AST) */\r
+  AST_OVF_IRQn          = 41, /**< 41 SAM4L Asynchronous Timer (AST) */\r
+  AST_READY_IRQn        = 42, /**< 42 SAM4L Asynchronous Timer (AST) */\r
+  AST_CLKREADY_IRQn     = 43, /**< 43 SAM4L Asynchronous Timer (AST) */\r
+  WDT_IRQn              = 44, /**< 44 SAM4L Watchdog Timer (WDT) */\r
+  EIC_1_IRQn            = 45, /**< 45 SAM4L External Interrupt Controller (EIC) */\r
+  EIC_2_IRQn            = 46, /**< 46 SAM4L External Interrupt Controller (EIC) */\r
+  EIC_3_IRQn            = 47, /**< 47 SAM4L External Interrupt Controller (EIC) */\r
+  EIC_4_IRQn            = 48, /**< 48 SAM4L External Interrupt Controller (EIC) */\r
+  EIC_5_IRQn            = 49, /**< 49 SAM4L External Interrupt Controller (EIC) */\r
+  EIC_6_IRQn            = 50, /**< 50 SAM4L External Interrupt Controller (EIC) */\r
+  EIC_7_IRQn            = 51, /**< 51 SAM4L External Interrupt Controller (EIC) */\r
+  EIC_8_IRQn            = 52, /**< 52 SAM4L External Interrupt Controller (EIC) */\r
+  IISC_IRQn             = 53, /**< 53 SAM4L Inter-IC Sound (I2S) Controller (IISC) */\r
+  SPI_IRQn              = 54, /**< 54 SAM4L Serial Peripheral Interface (SPI) */\r
+  TC00_IRQn             = 55, /**< 55 SAM4L Timer/Counter 0 (TC0) */\r
+  TC01_IRQn             = 56, /**< 56 SAM4L Timer/Counter 0 (TC0) */\r
+  TC02_IRQn             = 57, /**< 57 SAM4L Timer/Counter 0 (TC0) */\r
+  TC10_IRQn             = 58, /**< 58 SAM4L Timer/Counter 1 (TC1) */\r
+  TC11_IRQn             = 59, /**< 59 SAM4L Timer/Counter 1 (TC1) */\r
+  TC12_IRQn             = 60, /**< 60 SAM4L Timer/Counter 1 (TC1) */\r
+  TWIM0_IRQn            = 61, /**< 61 SAM4L Two-wire Master Interface 0 (TWIM0) */\r
+  TWIS0_IRQn            = 62, /**< 62 SAM4L Two-wire Slave Interface 0 (TWIS0) */\r
+  TWIM1_IRQn            = 63, /**< 63 SAM4L Two-wire Master Interface 1 (TWIM1) */\r
+  TWIS1_IRQn            = 64, /**< 64 SAM4L Two-wire Slave Interface 1 (TWIS1) */\r
+  USART0_IRQn           = 65, /**< 65 SAM4L Universal Synchronous Asynchronous Receiver Transmitter 0 (USART0) */\r
+  USART1_IRQn           = 66, /**< 66 SAM4L Universal Synchronous Asynchronous Receiver Transmitter 1 (USART1) */\r
+  USART2_IRQn           = 67, /**< 67 SAM4L Universal Synchronous Asynchronous Receiver Transmitter 2 (USART2) */\r
+  USART3_IRQn           = 68, /**< 68 SAM4L Universal Synchronous Asynchronous Receiver Transmitter 3 (USART3) */\r
+  ADCIFE_IRQn           = 69, /**< 69 SAM4L ADC controller interface (ADCIFE) */\r
+  DACC_IRQn             = 70, /**< 70 SAM4L DAC Controller (DACC) */\r
+  ACIFC_IRQn            = 71, /**< 71 SAM4L Analog Comparator Interface (ACIFC) */\r
+  ABDACB_IRQn           = 72, /**< 72 SAM4L Audio Bitstream DAC (ABDACB) */\r
+  TRNG_IRQn             = 73, /**< 73 SAM4L True Random Number Generator (TRNG) */\r
+  PARC_IRQn             = 74, /**< 74 SAM4L Parallel Capture (PARC) */\r
+  CATB_IRQn             = 75, /**< 75 SAM4L Capacitive Touch Module B (CATB) */\r
+  TWIM2_IRQn            = 77, /**< 77 SAM4L Two-wire Master Interface 2 (TWIM2) */\r
+  TWIM3_IRQn            = 78, /**< 78 SAM4L Two-wire Master Interface 3 (TWIM3) */\r
+  LCDCA_IRQn            = 79  /**< 79 SAM4L LCD Controller (LCDCA) */\r
+} IRQn_Type;\r
+\r
+\r
+/* Cortex-M4 core handlers */\r
+void Reset_Handler      ( void );\r
+void NMI_Handler        ( void );\r
+void HardFault_Handler  ( void );\r
+void MemManage_Handler  ( void );\r
+void BusFault_Handler   ( void );\r
+void UsageFault_Handler ( void );\r
+void SVC_Handler        ( void );\r
+void DebugMon_Handler   ( void );\r
+void PendSV_Handler     ( void );\r
+void SysTick_Handler    ( void );\r
+\r
+/* Peripherals handlers */\r
+\r
+void HFLASHC_Handler( void );\r
+void PDCA_0_Handler( void );\r
+void PDCA_1_Handler( void );\r
+void PDCA_2_Handler( void );\r
+void PDCA_3_Handler( void );\r
+void PDCA_4_Handler( void );\r
+void PDCA_5_Handler( void );\r
+void PDCA_6_Handler( void );\r
+void PDCA_7_Handler( void );\r
+void PDCA_8_Handler( void );\r
+void PDCA_9_Handler( void );\r
+void PDCA_10_Handler( void );\r
+void PDCA_11_Handler( void );\r
+void PDCA_12_Handler( void );\r
+void PDCA_13_Handler( void );\r
+void PDCA_14_Handler( void );\r
+void PDCA_15_Handler( void );\r
+void CRCCU_Handler( void );\r
+void USBC_Handler( void );\r
+void PEVC_TR_Handler( void );\r
+void PEVC_OV_Handler( void );\r
+void AESA_Handler( void );\r
+void PM_Handler( void );\r
+void SCIF_Handler( void );\r
+void FREQM_Handler( void );\r
+void GPIO_0_Handler( void );\r
+void GPIO_1_Handler( void );\r
+void GPIO_2_Handler( void );\r
+void GPIO_3_Handler( void );\r
+void GPIO_4_Handler( void );\r
+void GPIO_5_Handler( void );\r
+void GPIO_6_Handler( void );\r
+void GPIO_7_Handler( void );\r
+void GPIO_8_Handler( void );\r
+void GPIO_9_Handler( void );\r
+void GPIO_10_Handler( void );\r
+void GPIO_11_Handler( void );\r
+void BPM_Handler( void );\r
+void BSCIF_Handler( void );\r
+void AST_ALARM_Handler( void );\r
+void AST_PER_Handler( void );\r
+void AST_OVF_Handler( void );\r
+void AST_READY_Handler( void );\r
+void AST_CLKREADY_Handler( void );\r
+void WDT_Handler( void );\r
+void EIC_1_Handler( void );\r
+void EIC_2_Handler( void );\r
+void EIC_3_Handler( void );\r
+void EIC_4_Handler( void );\r
+void EIC_5_Handler( void );\r
+void EIC_6_Handler( void );\r
+void EIC_7_Handler( void );\r
+void EIC_8_Handler( void );\r
+void IISC_Handler( void );\r
+void SPI_Handler( void );\r
+void TC00_Handler( void );\r
+void TC01_Handler( void );\r
+void TC02_Handler( void );\r
+void TC10_Handler( void );\r
+void TC11_Handler( void );\r
+void TC12_Handler( void );\r
+void TWIM0_Handler( void );\r
+void TWIS0_Handler( void );\r
+void TWIM1_Handler( void );\r
+void TWIS1_Handler( void );\r
+void USART0_Handler( void );\r
+void USART1_Handler( void );\r
+void USART2_Handler( void );\r
+void USART3_Handler( void );\r
+void ADCIFE_Handler( void );\r
+void DACC_Handler( void );\r
+void ACIFC_Handler( void );\r
+void ABDACB_Handler( void );\r
+void TRNG_Handler( void );\r
+void PARC_Handler( void );\r
+void CATB_Handler( void );\r
+void TWIM2_Handler( void );\r
+void TWIM3_Handler( void );\r
+void LCDCA_Handler( void );\r
+\r
+/*\r
+ * \brief Configuration of the Cortex-M4 Processor and Core Peripherals\r
+ */\r
+\r
+#define __MPU_PRESENT          1 /**< SAM4L does provide a MPU */\r
+#define __NVIC_PRIO_BITS       4 /**< SAM4L uses 4 Bits for the Priority Levels */\r
+#define __Vendor_SysTickConfig 0 /**< Set to 1 if different SysTick Config is used */\r
+#define __FPU_PRESENT          0 /**< SAM4L does not provide a FPU */\r
+\r
+/**\r
+ * \brief CMSIS includes\r
+ */\r
+\r
+#include <core_cm4.h>\r
+\r
+/*@}*/\r
+\r
+/* ************************************************************************** */\r
+/**  SOFTWARE PERIPHERAL API DEFINITION FOR SAM4L */\r
+/* ************************************************************************** */\r
+/** \addtogroup SAM4L_api Peripheral Software API */\r
+/*@{*/\r
+\r
+/* ============================================================================= */\r
+/**  SOFTWARE API DEFINITION FOR ABDACB */\r
+/* ============================================================================= */\r
+/** \addtogroup SAM4L_ABDACB Audio Bitstream DAC */\r
+/*@{*/\r
+\r
+#define REV_ABDACB     0x100\r
+\r
+#ifndef __ASSEMBLY__\r
+/** \brief ABDACB hardware registers */\r
+typedef struct {\r
+  RwReg   ABDACB_CR;          /**< \brief (ABDACB Offset: 0x00) Control Register */\r
+  RwReg   ABDACB_SDR0;        /**< \brief (ABDACB Offset: 0x04) Sample Data Register 0 */\r
+  RwReg   ABDACB_SDR1;        /**< \brief (ABDACB Offset: 0x08) Sample Data Register 1 */\r
+  RwReg   ABDACB_VCR0;        /**< \brief (ABDACB Offset: 0x0C) Volume Control Register 0 */\r
+  RwReg   ABDACB_VCR1;        /**< \brief (ABDACB Offset: 0x10) Volume Control Register 1 */\r
+  WoReg   ABDACB_IER;         /**< \brief (ABDACB Offset: 0x14) Interrupt Enable Register */\r
+  WoReg   ABDACB_IDR;         /**< \brief (ABDACB Offset: 0x18) Interupt Disable Register */\r
+  RoReg   ABDACB_IMR;         /**< \brief (ABDACB Offset: 0x1C) Interrupt Mask Register */\r
+  RoReg   ABDACB_SR;          /**< \brief (ABDACB Offset: 0x20) Status Register */\r
+  WoReg   ABDACB_SCR;         /**< \brief (ABDACB Offset: 0x24) Status Clear Register */\r
+  RoReg   ABDACB_PARAMETER;   /**< \brief (ABDACB Offset: 0x28) Parameter Register */\r
+  RoReg   ABDACB_VERSION;     /**< \brief (ABDACB Offset: 0x2C) Version Register */\r
+} Abdacb;\r
+#endif /* __ASSEMBLY__ */\r
+/* -------- ABDACB_CR : (ABDACB Offset: 0x00) Control Register -------- */\r
+#define ABDACB_CR_EN                (0x1u <<  0) /**< \brief (ABDACB_CR) Enable */\r
+#define   ABDACB_CR_EN_0            (0x0u <<  0) /**< \brief (ABDACB_CR) Audio DAC is disabled */\r
+#define   ABDACB_CR_EN_1            (0x1u <<  0) /**< \brief (ABDACB_CR) Audio DAC is enabled */\r
+#define ABDACB_CR_SWAP              (0x1u <<  1) /**< \brief (ABDACB_CR) Swap Channels */\r
+#define   ABDACB_CR_SWAP_0          (0x0u <<  1) /**< \brief (ABDACB_CR) The CHANNEL0 and CHANNEL1 samples will not be swapped when writing the Audio DAC Sample Data Register (SDR) */\r
+#define   ABDACB_CR_SWAP_1          (0x1u <<  1) /**< \brief (ABDACB_CR) The CHANNEL0 and CHANNEL1 samples will be swapped when writing the Audio DAC Sample Data Register (SDR) */\r
+#define ABDACB_CR_ALTUPR            (0x1u <<  3) /**< \brief (ABDACB_CR) Alternative up-sampling ratio */\r
+#define ABDACB_CR_CMOC              (0x1u <<  4) /**< \brief (ABDACB_CR) Common mode offset control */\r
+#define ABDACB_CR_MONO              (0x1u <<  5) /**< \brief (ABDACB_CR) Mono mode */\r
+#define ABDACB_CR_SWRST             (0x1u <<  7) /**< \brief (ABDACB_CR) Software reset */\r
+#define ABDACB_CR_DATAFORMAT_Pos    16\r
+#define ABDACB_CR_DATAFORMAT_Msk    (0x7u << ABDACB_CR_DATAFORMAT_Pos) /**< \brief (ABDACB_CR) Data word format */\r
+#define ABDACB_CR_DATAFORMAT(value) ((ABDACB_CR_DATAFORMAT_Msk & ((value) << ABDACB_CR_DATAFORMAT_Pos)))\r
+#define ABDACB_CR_FS_Pos            24\r
+#define ABDACB_CR_FS_Msk            (0xFu << ABDACB_CR_FS_Pos) /**< \brief (ABDACB_CR) Sampling frequency */\r
+#define ABDACB_CR_FS(value)         ((ABDACB_CR_FS_Msk & ((value) << ABDACB_CR_FS_Pos)))\r
+/* -------- ABDACB_SDR0 : (ABDACB Offset: 0x04) Sample Data Register 0 -------- */\r
+#define ABDACB_SDR0_DATA_Pos        0\r
+#define ABDACB_SDR0_DATA_Msk        (0xFFFFFFFFu << ABDACB_SDR0_DATA_Pos) /**< \brief (ABDACB_SDR0) Sample Data */\r
+#define ABDACB_SDR0_DATA(value)     ((ABDACB_SDR0_DATA_Msk & ((value) << ABDACB_SDR0_DATA_Pos)))\r
+/* -------- ABDACB_SDR1 : (ABDACB Offset: 0x08) Sample Data Register 1 -------- */\r
+#define ABDACB_SDR1_DATA_Pos        0\r
+#define ABDACB_SDR1_DATA_Msk        (0xFFFFFFFFu << ABDACB_SDR1_DATA_Pos) /**< \brief (ABDACB_SDR1) Sample Data */\r
+#define ABDACB_SDR1_DATA(value)     ((ABDACB_SDR1_DATA_Msk & ((value) << ABDACB_SDR1_DATA_Pos)))\r
+/* -------- ABDACB_VCR0 : (ABDACB Offset: 0x0C) Volume Control Register 0 -------- */\r
+#define ABDACB_VCR0_VOLUME_Pos      0\r
+#define ABDACB_VCR0_VOLUME_Msk      (0x7FFFu << ABDACB_VCR0_VOLUME_Pos) /**< \brief (ABDACB_VCR0) Volume Control */\r
+#define ABDACB_VCR0_VOLUME(value)   ((ABDACB_VCR0_VOLUME_Msk & ((value) << ABDACB_VCR0_VOLUME_Pos)))\r
+#define ABDACB_VCR0_MUTE            (0x1u << 31) /**< \brief (ABDACB_VCR0) Mute */\r
+/* -------- ABDACB_VCR1 : (ABDACB Offset: 0x10) Volume Control Register 1 -------- */\r
+#define ABDACB_VCR1_VOLUME_Pos      0\r
+#define ABDACB_VCR1_VOLUME_Msk      (0x7FFFu << ABDACB_VCR1_VOLUME_Pos) /**< \brief (ABDACB_VCR1) Volume Control */\r
+#define ABDACB_VCR1_VOLUME(value)   ((ABDACB_VCR1_VOLUME_Msk & ((value) << ABDACB_VCR1_VOLUME_Pos)))\r
+#define ABDACB_VCR1_MUTE            (0x1u << 31) /**< \brief (ABDACB_VCR1) Mute */\r
+/* -------- ABDACB_IER : (ABDACB Offset: 0x14) Interrupt Enable Register -------- */\r
+#define ABDACB_IER_TXRDY            (0x1u <<  1) /**< \brief (ABDACB_IER) Transmit Ready Interrupt Enable */\r
+#define   ABDACB_IER_TXRDY_0        (0x0u <<  1) /**< \brief (ABDACB_IER) No effect */\r
+#define   ABDACB_IER_TXRDY_1        (0x1u <<  1) /**< \brief (ABDACB_IER) Enables the Audio DAC TX Ready interrupt */\r
+#define ABDACB_IER_TXUR             (0x1u <<  2) /**< \brief (ABDACB_IER) Transmit Underrun Interrupt Enable */\r
+#define   ABDACB_IER_TXUR_0         (0x0u <<  2) /**< \brief (ABDACB_IER) No effect */\r
+#define   ABDACB_IER_TXUR_1         (0x1u <<  2) /**< \brief (ABDACB_IER) Enables the Audio DAC Underrun interrupt */\r
+/* -------- ABDACB_IDR : (ABDACB Offset: 0x18) Interupt Disable Register -------- */\r
+#define ABDACB_IDR_TXRDY            (0x1u <<  1) /**< \brief (ABDACB_IDR) Transmit Ready Interrupt Disable */\r
+#define   ABDACB_IDR_TXRDY_0        (0x0u <<  1) /**< \brief (ABDACB_IDR) No effect */\r
+#define   ABDACB_IDR_TXRDY_1        (0x1u <<  1) /**< \brief (ABDACB_IDR) Disable the Audio DAC TX Ready interrupt */\r
+#define ABDACB_IDR_TXUR             (0x1u <<  2) /**< \brief (ABDACB_IDR) Transmit Underrun Interrupt Disable */\r
+#define   ABDACB_IDR_TXUR_0         (0x0u <<  2) /**< \brief (ABDACB_IDR) No effect */\r
+#define   ABDACB_IDR_TXUR_1         (0x1u <<  2) /**< \brief (ABDACB_IDR) Disable the Audio DAC Underrun interrupt */\r
+/* -------- ABDACB_IMR : (ABDACB Offset: 0x1C) Interrupt Mask Register -------- */\r
+#define ABDACB_IMR_TXRDY            (0x1u <<  1) /**< \brief (ABDACB_IMR) Transmit Ready Interrupt Mask */\r
+#define   ABDACB_IMR_TXRDY_0        (0x0u <<  1) /**< \brief (ABDACB_IMR) The Audio DAC TX Ready interrupt is disabled */\r
+#define   ABDACB_IMR_TXRDY_1        (0x1u <<  1) /**< \brief (ABDACB_IMR) The Audio DAC TX Ready interrupt is enabled */\r
+#define ABDACB_IMR_TXUR             (0x1u <<  2) /**< \brief (ABDACB_IMR) Transmit Underrun Interrupt Mask */\r
+#define   ABDACB_IMR_TXUR_0         (0x0u <<  2) /**< \brief (ABDACB_IMR) The Audio DAC Underrun interrupt is disabled */\r
+#define   ABDACB_IMR_TXUR_1         (0x1u <<  2) /**< \brief (ABDACB_IMR) The Audio DAC Underrun interrupt is enabled */\r
+/* -------- ABDACB_SR : (ABDACB Offset: 0x20) Status Register -------- */\r
+#define ABDACB_SR_BUSY              (0x1u <<  0) /**< \brief (ABDACB_SR) ABDACB Busy */\r
+#define ABDACB_SR_TXRDY             (0x1u <<  1) /**< \brief (ABDACB_SR) Transmit Ready */\r
+#define   ABDACB_SR_TXRDY_0         (0x0u <<  1) /**< \brief (ABDACB_SR) No Audio DAC TX Ready has occured since the last time ISR was read or since reset */\r
+#define   ABDACB_SR_TXRDY_1         (0x1u <<  1) /**< \brief (ABDACB_SR) At least one Audio DAC TX Ready has occured since the last time ISR was read or since reset */\r
+#define ABDACB_SR_TXUR              (0x1u <<  2) /**< \brief (ABDACB_SR) Transmit Underrun */\r
+#define   ABDACB_SR_TXUR_0          (0x0u <<  2) /**< \brief (ABDACB_SR) No Audio DAC Underrun has occured since the last time ISR was read or since reset */\r
+#define   ABDACB_SR_TXUR_1          (0x1u <<  2) /**< \brief (ABDACB_SR) At least one Audio DAC Underrun has occured since the last time ISR was read or since reset */\r
+/* -------- ABDACB_SCR : (ABDACB Offset: 0x24) Status Clear Register -------- */\r
+#define ABDACB_SCR_TXRDY            (0x1u <<  1) /**< \brief (ABDACB_SCR) Transmit Ready Interrupt Clear */\r
+#define   ABDACB_SCR_TXRDY_0        (0x0u <<  1) /**< \brief (ABDACB_SCR) No effect */\r
+#define   ABDACB_SCR_TXRDY_1        (0x1u <<  1) /**< \brief (ABDACB_SCR) Clear the Audio DAC TX Ready interrupt */\r
+#define ABDACB_SCR_TXUR             (0x1u <<  2) /**< \brief (ABDACB_SCR) Transmit Underrun Interrupt Clear */\r
+#define   ABDACB_SCR_TXUR_0         (0x0u <<  2) /**< \brief (ABDACB_SCR) No effect */\r
+#define   ABDACB_SCR_TXUR_1         (0x1u <<  2) /**< \brief (ABDACB_SCR) Clear the Audio DAC Underrun interrupt */\r
+/* -------- ABDACB_VERSION : (ABDACB Offset: 0x2C) Version Register -------- */\r
+#define ABDACB_VERSION_VERSION_Pos    0\r
+#define ABDACB_VERSION_VERSION_Msk    (0xFFFu << ABDACB_VERSION_VERSION_Pos) /**< \brief (ABDACB_VERSION) Version Number */\r
+#define ABDACB_VERSION_VERSION(value) ((ABDACB_VERSION_VERSION_Msk & ((value) << ABDACB_VERSION_VERSION_Pos)))\r
+#define ABDACB_VERSION_VARIANT_Pos    16\r
+#define ABDACB_VERSION_VARIANT_Msk    (0xFu << ABDACB_VERSION_VARIANT_Pos) /**< \brief (ABDACB_VERSION) Variant Number */\r
+#define ABDACB_VERSION_VARIANT(value) ((ABDACB_VERSION_VARIANT_Msk & ((value) << ABDACB_VERSION_VARIANT_Pos)))\r
+\r
+/*@}*/\r
+\r
+/* ============================================================================= */\r
+/**  SOFTWARE API DEFINITION FOR ACIFC */\r
+/* ============================================================================= */\r
+/** \addtogroup SAM4L_ACIFC Analog Comparator Interface */\r
+/*@{*/\r
+\r
+#define REV_ACIFC      0x101\r
+\r
+#ifndef __ASSEMBLY__\r
+/** \brief AcifcConf hardware registers */\r
+typedef struct {\r
+  RwReg   ACIFC_CONF;  /**< \brief (AcifcConf Offset: 0x00) AC Configuration Register */\r
+} AcifcConf;\r
+/** \brief AcifcConfw hardware registers */\r
+typedef struct {\r
+  RwReg   ACIFC_CONFW; /**< \brief (AcifcConfw Offset: 0x00) Window configuration Register */\r
+} AcifcConfw;\r
+/** \brief ACIFC hardware registers */\r
+typedef struct {\r
+  RwReg   ACIFC_CTRL;        /**< \brief (ACIFC Offset: 0x00) Control Register */\r
+  RoReg   ACIFC_SR;          /**< \brief (ACIFC Offset: 0x04) Status Register */\r
+  RoReg   Reserved1[2];\r
+  WoReg   ACIFC_IER;         /**< \brief (ACIFC Offset: 0x10) Interrupt Enable Register */\r
+  WoReg   ACIFC_IDR;         /**< \brief (ACIFC Offset: 0x14) Interrupt Disable Register */\r
+  RoReg   ACIFC_IMR;         /**< \brief (ACIFC Offset: 0x18) Interrupt Mask Register */\r
+  RoReg   ACIFC_ISR;         /**< \brief (ACIFC Offset: 0x1C) Interrupt Status Register */\r
+  WoReg   ACIFC_ICR;         /**< \brief (ACIFC Offset: 0x20) Interrupt Status Clear Register */\r
+  RwReg   ACIFC_TR;          /**< \brief (ACIFC Offset: 0x24) Test Register */\r
+  RoReg   Reserved2[2];\r
+  RoReg   ACIFC_PARAMETER;   /**< \brief (ACIFC Offset: 0x30) Parameter Register */\r
+  RoReg   ACIFC_VERSION;     /**< \brief (ACIFC Offset: 0x34) Version Register */\r
+  RoReg   Reserved3[18];\r
+  AcifcConfw ACIFC_CONFW[4]; /**< \brief (ACIFC Offset: 0x80) AcifcConfw groups */\r
+  RoReg   Reserved4[16];\r
+  AcifcConf ACIFC_CONF[8]; /**< \brief (ACIFC Offset: 0xD0) AcifcConf groups */\r
+} Acifc;\r
+#endif /* __ASSEMBLY__ */\r
+/* -------- ACIFC_CTRL : (ACIFC Offset: 0x00) Control Register -------- */\r
+#define ACIFC_CTRL_EN               (0x1u <<  0) /**< \brief (ACIFC_CTRL) ACIFC Enable */\r
+#define ACIFC_CTRL_EVENTEN          (0x1u <<  1) /**< \brief (ACIFC_CTRL) Peripheral Event Trigger Enable */\r
+#define ACIFC_CTRL_USTART           (0x1u <<  4) /**< \brief (ACIFC_CTRL) User Start Single Comparison */\r
+#define ACIFC_CTRL_ESTART           (0x1u <<  5) /**< \brief (ACIFC_CTRL) Peripheral Event Start Single Comparison */\r
+#define ACIFC_CTRL_ACTEST           (0x1u <<  7) /**< \brief (ACIFC_CTRL) Analog Comparator Test Mode */\r
+/* -------- ACIFC_SR : (ACIFC Offset: 0x04) Status Register -------- */\r
+#define ACIFC_SR_ACCS0              (0x1u <<  0) /**< \brief (ACIFC_SR) AC0 Current Comparison Status */\r
+#define ACIFC_SR_ACRDY0             (0x1u <<  1) /**< \brief (ACIFC_SR) AC0 Ready */\r
+#define ACIFC_SR_ACCS1              (0x1u <<  2) /**< \brief (ACIFC_SR) AC1 Current Comparison Status */\r
+#define ACIFC_SR_ACRDY1             (0x1u <<  3) /**< \brief (ACIFC_SR) AC1 Ready */\r
+#define ACIFC_SR_ACCS2              (0x1u <<  4) /**< \brief (ACIFC_SR) AC2 Current Comparison Status */\r
+#define ACIFC_SR_ACRDY2             (0x1u <<  5) /**< \brief (ACIFC_SR) AC2 Ready */\r
+#define ACIFC_SR_ACCS3              (0x1u <<  6) /**< \brief (ACIFC_SR) AC3 Current Comparison Status */\r
+#define ACIFC_SR_ACRDY3             (0x1u <<  7) /**< \brief (ACIFC_SR) AC3 Ready */\r
+#define ACIFC_SR_ACCS4              (0x1u <<  8) /**< \brief (ACIFC_SR) AC4 Current Comparison Status */\r
+#define ACIFC_SR_ACRDY4             (0x1u <<  9) /**< \brief (ACIFC_SR) AC4 Ready */\r
+#define ACIFC_SR_ACCS5              (0x1u << 10) /**< \brief (ACIFC_SR) AC5 Current Comparison Status */\r
+#define ACIFC_SR_ACRDY5             (0x1u << 11) /**< \brief (ACIFC_SR) AC5 Ready */\r
+#define ACIFC_SR_ACCS6              (0x1u << 12) /**< \brief (ACIFC_SR) AC6 Current Comparison Status */\r
+#define ACIFC_SR_ACRDY6             (0x1u << 13) /**< \brief (ACIFC_SR) AC6 Ready */\r
+#define ACIFC_SR_ACCS7              (0x1u << 14) /**< \brief (ACIFC_SR) AC7 Current Comparison Status */\r
+#define ACIFC_SR_ACRDY7             (0x1u << 15) /**< \brief (ACIFC_SR) AC7 Ready */\r
+#define ACIFC_SR_WFCS0              (0x1u << 24) /**< \brief (ACIFC_SR) Window0 Mode Current Status */\r
+#define ACIFC_SR_WFCS1              (0x1u << 25) /**< \brief (ACIFC_SR) Window1 Mode Current Status */\r
+#define ACIFC_SR_WFCS2              (0x1u << 26) /**< \brief (ACIFC_SR) Window2 Mode Current Status */\r
+#define ACIFC_SR_WFCS3              (0x1u << 27) /**< \brief (ACIFC_SR) Window3 Mode Current Status */\r
+/* -------- ACIFC_IER : (ACIFC Offset: 0x10) Interrupt Enable Register -------- */\r
+#define ACIFC_IER_ACINT0            (0x1u <<  0) /**< \brief (ACIFC_IER) AC0 Interrupt Enable */\r
+#define ACIFC_IER_SUTINT0           (0x1u <<  1) /**< \brief (ACIFC_IER) AC0 Startup Time Interrupt Enable */\r
+#define ACIFC_IER_ACINT1            (0x1u <<  2) /**< \brief (ACIFC_IER) AC1 Interrupt Enable */\r
+#define ACIFC_IER_SUTINT1           (0x1u <<  3) /**< \brief (ACIFC_IER) AC1 Startup Time Interrupt Enable */\r
+#define ACIFC_IER_ACINT2            (0x1u <<  4) /**< \brief (ACIFC_IER) AC2 Interrupt Enable */\r
+#define ACIFC_IER_SUTINT2           (0x1u <<  5) /**< \brief (ACIFC_IER) AC2 Startup Time Interrupt Enable */\r
+#define ACIFC_IER_ACINT3            (0x1u <<  6) /**< \brief (ACIFC_IER) AC3 Interrupt Enable */\r
+#define ACIFC_IER_SUTINT3           (0x1u <<  7) /**< \brief (ACIFC_IER) AC3 Startup Time Interrupt Enable */\r
+#define ACIFC_IER_ACINT4            (0x1u <<  8) /**< \brief (ACIFC_IER) AC4 Interrupt Enable */\r
+#define ACIFC_IER_SUTINT4           (0x1u <<  9) /**< \brief (ACIFC_IER) AC4 Startup Time Interrupt Enable */\r
+#define ACIFC_IER_ACINT5            (0x1u << 10) /**< \brief (ACIFC_IER) AC5 Interrupt Enable */\r
+#define ACIFC_IER_SUTINT5           (0x1u << 11) /**< \brief (ACIFC_IER) AC5 Startup Time Interrupt Enable */\r
+#define ACIFC_IER_ACINT6            (0x1u << 12) /**< \brief (ACIFC_IER) AC6 Interrupt Enable */\r
+#define ACIFC_IER_SUTINT6           (0x1u << 13) /**< \brief (ACIFC_IER) AC6 Startup Time Interrupt Enable */\r
+#define ACIFC_IER_ACINT7            (0x1u << 14) /**< \brief (ACIFC_IER) AC7 Interrupt Enable */\r
+#define ACIFC_IER_SUTINT7           (0x1u << 15) /**< \brief (ACIFC_IER) AC7 Startup Time Interrupt Enable */\r
+#define ACIFC_IER_WFINT0            (0x1u << 24) /**< \brief (ACIFC_IER) Window0 Mode Interrupt Enable */\r
+#define ACIFC_IER_WFINT1            (0x1u << 25) /**< \brief (ACIFC_IER) Window1 Mode Interrupt Enable */\r
+#define ACIFC_IER_WFINT2            (0x1u << 26) /**< \brief (ACIFC_IER) Window2 Mode Interrupt Enable */\r
+#define ACIFC_IER_WFINT3            (0x1u << 27) /**< \brief (ACIFC_IER) Window3 Mode Interrupt Enable */\r
+/* -------- ACIFC_IDR : (ACIFC Offset: 0x14) Interrupt Disable Register -------- */\r
+#define ACIFC_IDR_ACINT0            (0x1u <<  0) /**< \brief (ACIFC_IDR) AC0 Interrupt Disable */\r
+#define ACIFC_IDR_SUTINT0           (0x1u <<  1) /**< \brief (ACIFC_IDR) AC0 Startup Time Interrupt Disable */\r
+#define ACIFC_IDR_ACINT1            (0x1u <<  2) /**< \brief (ACIFC_IDR) AC1 Interrupt Disable */\r
+#define ACIFC_IDR_SUTINT1           (0x1u <<  3) /**< \brief (ACIFC_IDR) AC1 Startup Time Interrupt Disable */\r
+#define ACIFC_IDR_ACINT2            (0x1u <<  4) /**< \brief (ACIFC_IDR) AC2 Interrupt Disable */\r
+#define ACIFC_IDR_SUTINT2           (0x1u <<  5) /**< \brief (ACIFC_IDR) AC2 Startup Time Interrupt Disable */\r
+#define ACIFC_IDR_ACINT3            (0x1u <<  6) /**< \brief (ACIFC_IDR) AC3 Interrupt Disable */\r
+#define ACIFC_IDR_SUTINT3           (0x1u <<  7) /**< \brief (ACIFC_IDR) AC3 Startup Time Interrupt Disable */\r
+#define ACIFC_IDR_ACINT4            (0x1u <<  8) /**< \brief (ACIFC_IDR) AC4 Interrupt Disable */\r
+#define ACIFC_IDR_SUTINT4           (0x1u <<  9) /**< \brief (ACIFC_IDR) AC4 Startup Time Interrupt Disable */\r
+#define ACIFC_IDR_ACINT5            (0x1u << 10) /**< \brief (ACIFC_IDR) AC5 Interrupt Disable */\r
+#define ACIFC_IDR_SUTINT5           (0x1u << 11) /**< \brief (ACIFC_IDR) AC5 Startup Time Interrupt Disable */\r
+#define ACIFC_IDR_ACINT6            (0x1u << 12) /**< \brief (ACIFC_IDR) AC6 Interrupt Disable */\r
+#define ACIFC_IDR_SUTINT6           (0x1u << 13) /**< \brief (ACIFC_IDR) AC6 Startup Time Interrupt Disable */\r
+#define ACIFC_IDR_ACINT7            (0x1u << 14) /**< \brief (ACIFC_IDR) AC7 Interrupt Disable */\r
+#define ACIFC_IDR_SUTINT7           (0x1u << 15) /**< \brief (ACIFC_IDR) AC7 Startup Time Interrupt Disable */\r
+#define ACIFC_IDR_WFINT0            (0x1u << 24) /**< \brief (ACIFC_IDR) Window0 Mode Interrupt Disable */\r
+#define ACIFC_IDR_WFINT1            (0x1u << 25) /**< \brief (ACIFC_IDR) Window1 Mode Interrupt Disable */\r
+#define ACIFC_IDR_WFINT2            (0x1u << 26) /**< \brief (ACIFC_IDR) Window2 Mode Interrupt Disable */\r
+#define ACIFC_IDR_WFINT3            (0x1u << 27) /**< \brief (ACIFC_IDR) Window3 Mode Interrupt Disable */\r
+/* -------- ACIFC_IMR : (ACIFC Offset: 0x18) Interrupt Mask Register -------- */\r
+#define ACIFC_IMR_ACINT0            (0x1u <<  0) /**< \brief (ACIFC_IMR) AC0 Interrupt Mask */\r
+#define ACIFC_IMR_SUTINT0           (0x1u <<  1) /**< \brief (ACIFC_IMR) AC0 Startup Time Interrupt Mask */\r
+#define ACIFC_IMR_ACINT1            (0x1u <<  2) /**< \brief (ACIFC_IMR) AC1 Interrupt Mask */\r
+#define ACIFC_IMR_SUTINT1           (0x1u <<  3) /**< \brief (ACIFC_IMR) AC1 Startup Time Interrupt Mask */\r
+#define ACIFC_IMR_ACINT2            (0x1u <<  4) /**< \brief (ACIFC_IMR) AC2 Interrupt Mask */\r
+#define ACIFC_IMR_SUTINT2           (0x1u <<  5) /**< \brief (ACIFC_IMR) AC2 Startup Time Interrupt Mask */\r
+#define ACIFC_IMR_ACINT3            (0x1u <<  6) /**< \brief (ACIFC_IMR) AC3 Interrupt Mask */\r
+#define ACIFC_IMR_SUTINT3           (0x1u <<  7) /**< \brief (ACIFC_IMR) AC3 Startup Time Interrupt Mask */\r
+#define ACIFC_IMR_ACINT4            (0x1u <<  8) /**< \brief (ACIFC_IMR) AC4 Interrupt Mask */\r
+#define ACIFC_IMR_SUTINT4           (0x1u <<  9) /**< \brief (ACIFC_IMR) AC4 Startup Time Interrupt Mask */\r
+#define ACIFC_IMR_ACINT5            (0x1u << 10) /**< \brief (ACIFC_IMR) AC5 Interrupt Mask */\r
+#define ACIFC_IMR_SUTINT5           (0x1u << 11) /**< \brief (ACIFC_IMR) AC5 Startup Time Interrupt Mask */\r
+#define ACIFC_IMR_ACINT6            (0x1u << 12) /**< \brief (ACIFC_IMR) AC6 Interrupt Mask */\r
+#define ACIFC_IMR_SUTINT6           (0x1u << 13) /**< \brief (ACIFC_IMR) AC6 Startup Time Interrupt Mask */\r
+#define ACIFC_IMR_ACINT7            (0x1u << 14) /**< \brief (ACIFC_IMR) AC7 Interrupt Mask */\r
+#define ACIFC_IMR_SUTINT7           (0x1u << 15) /**< \brief (ACIFC_IMR) AC7 Startup Time Interrupt Mask */\r
+#define ACIFC_IMR_WFINT0            (0x1u << 24) /**< \brief (ACIFC_IMR) Window0 Mode Interrupt Mask */\r
+#define ACIFC_IMR_WFINT1            (0x1u << 25) /**< \brief (ACIFC_IMR) Window1 Mode Interrupt Mask */\r
+#define ACIFC_IMR_WFINT2            (0x1u << 26) /**< \brief (ACIFC_IMR) Window2 Mode Interrupt Mask */\r
+#define ACIFC_IMR_WFINT3            (0x1u << 27) /**< \brief (ACIFC_IMR) Window3 Mode Interrupt Mask */\r
+/* -------- ACIFC_ISR : (ACIFC Offset: 0x1C) Interrupt Status Register -------- */\r
+#define ACIFC_ISR_ACINT0            (0x1u <<  0) /**< \brief (ACIFC_ISR) AC0 Interrupt Status */\r
+#define ACIFC_ISR_SUTINT0           (0x1u <<  1) /**< \brief (ACIFC_ISR) AC0 Startup Time Interrupt Status */\r
+#define ACIFC_ISR_ACINT1            (0x1u <<  2) /**< \brief (ACIFC_ISR) AC1 Interrupt Status */\r
+#define ACIFC_ISR_SUTINT1           (0x1u <<  3) /**< \brief (ACIFC_ISR) AC1 Startup Time Interrupt Status */\r
+#define ACIFC_ISR_ACINT2            (0x1u <<  4) /**< \brief (ACIFC_ISR) AC2 Interrupt Status */\r
+#define ACIFC_ISR_SUTINT2           (0x1u <<  5) /**< \brief (ACIFC_ISR) AC2 Startup Time Interrupt Status */\r
+#define ACIFC_ISR_ACINT3            (0x1u <<  6) /**< \brief (ACIFC_ISR) AC3 Interrupt Status */\r
+#define ACIFC_ISR_SUTINT3           (0x1u <<  7) /**< \brief (ACIFC_ISR) AC3 Startup Time Interrupt Status */\r
+#define ACIFC_ISR_ACINT4            (0x1u <<  8) /**< \brief (ACIFC_ISR) AC4 Interrupt Status */\r
+#define ACIFC_ISR_SUTINT4           (0x1u <<  9) /**< \brief (ACIFC_ISR) AC4 Startup Time Interrupt Status */\r
+#define ACIFC_ISR_ACINT5            (0x1u << 10) /**< \brief (ACIFC_ISR) AC5 Interrupt Status */\r
+#define ACIFC_ISR_SUTINT5           (0x1u << 11) /**< \brief (ACIFC_ISR) AC5 Startup Time Interrupt Status */\r
+#define ACIFC_ISR_ACINT6            (0x1u << 12) /**< \brief (ACIFC_ISR) AC6 Interrupt Status */\r
+#define ACIFC_ISR_SUTINT6           (0x1u << 13) /**< \brief (ACIFC_ISR) AC6 Startup Time Interrupt Status */\r
+#define ACIFC_ISR_ACINT7            (0x1u << 14) /**< \brief (ACIFC_ISR) AC7 Interrupt Status */\r
+#define ACIFC_ISR_SUTINT7           (0x1u << 15) /**< \brief (ACIFC_ISR) AC7 Startup Time Interrupt Status */\r
+#define ACIFC_ISR_WFINT0            (0x1u << 24) /**< \brief (ACIFC_ISR) Window0 Mode Interrupt Status */\r
+#define ACIFC_ISR_WFINT1            (0x1u << 25) /**< \brief (ACIFC_ISR) Window1 Mode Interrupt Status */\r
+#define ACIFC_ISR_WFINT2            (0x1u << 26) /**< \brief (ACIFC_ISR) Window2 Mode Interrupt Status */\r
+#define ACIFC_ISR_WFINT3            (0x1u << 27) /**< \brief (ACIFC_ISR) Window3 Mode Interrupt Status */\r
+/* -------- ACIFC_ICR : (ACIFC Offset: 0x20) Interrupt Status Clear Register -------- */\r
+#define ACIFC_ICR_ACINT0            (0x1u <<  0) /**< \brief (ACIFC_ICR) AC0 Interrupt Status Clear */\r
+#define ACIFC_ICR_SUTINT0           (0x1u <<  1) /**< \brief (ACIFC_ICR) AC0 Startup Time Interrupt Status Clear */\r
+#define ACIFC_ICR_ACINT1            (0x1u <<  2) /**< \brief (ACIFC_ICR) AC1 Interrupt Status Clear */\r
+#define ACIFC_ICR_SUTINT1           (0x1u <<  3) /**< \brief (ACIFC_ICR) AC1 Startup Time Interrupt Status Clear */\r
+#define ACIFC_ICR_ACINT2            (0x1u <<  4) /**< \brief (ACIFC_ICR) AC2 Interrupt Status Clear */\r
+#define ACIFC_ICR_SUTINT2           (0x1u <<  5) /**< \brief (ACIFC_ICR) AC2 Startup Time Interrupt Status Clear */\r
+#define ACIFC_ICR_ACINT3            (0x1u <<  6) /**< \brief (ACIFC_ICR) AC3 Interrupt Status Clear */\r
+#define ACIFC_ICR_SUTINT3           (0x1u <<  7) /**< \brief (ACIFC_ICR) AC3 Startup Time Interrupt Status Clear */\r
+#define ACIFC_ICR_ACINT4            (0x1u <<  8) /**< \brief (ACIFC_ICR) AC4 Interrupt Status Clear */\r
+#define ACIFC_ICR_SUTINT4           (0x1u <<  9) /**< \brief (ACIFC_ICR) AC4 Startup Time Interrupt Status Clear */\r
+#define ACIFC_ICR_ACINT5            (0x1u << 10) /**< \brief (ACIFC_ICR) AC5 Interrupt Status Clear */\r
+#define ACIFC_ICR_SUTINT5           (0x1u << 11) /**< \brief (ACIFC_ICR) AC5 Startup Time Interrupt Status Clear */\r
+#define ACIFC_ICR_ACINT6            (0x1u << 12) /**< \brief (ACIFC_ICR) AC6 Interrupt Status Clear */\r
+#define ACIFC_ICR_SUTINT6           (0x1u << 13) /**< \brief (ACIFC_ICR) AC6 Startup Time Interrupt Status Clear */\r
+#define ACIFC_ICR_ACINT7            (0x1u << 14) /**< \brief (ACIFC_ICR) AC7 Interrupt Status Clear */\r
+#define ACIFC_ICR_SUTINT7           (0x1u << 15) /**< \brief (ACIFC_ICR) AC7 Startup Time Interrupt Status Clear */\r
+#define ACIFC_ICR_WFINT0            (0x1u << 24) /**< \brief (ACIFC_ICR) Window0 Mode Interrupt Status Clear */\r
+#define ACIFC_ICR_WFINT1            (0x1u << 25) /**< \brief (ACIFC_ICR) Window1 Mode Interrupt Status Clear */\r
+#define ACIFC_ICR_WFINT2            (0x1u << 26) /**< \brief (ACIFC_ICR) Window2 Mode Interrupt Status Clear */\r
+#define ACIFC_ICR_WFINT3            (0x1u << 27) /**< \brief (ACIFC_ICR) Window3 Mode Interrupt Status Clear */\r
+/* -------- ACIFC_TR : (ACIFC Offset: 0x24) Test Register -------- */\r
+#define ACIFC_TR_ACTEST0            (0x1u <<  0) /**< \brief (ACIFC_TR) AC0 Output Override Value */\r
+#define ACIFC_TR_ACTEST1            (0x1u <<  1) /**< \brief (ACIFC_TR) AC1 Output Override Value */\r
+#define ACIFC_TR_ACTEST2            (0x1u <<  2) /**< \brief (ACIFC_TR) AC2 Output Override Value */\r
+#define ACIFC_TR_ACTEST3            (0x1u <<  3) /**< \brief (ACIFC_TR) AC3 Output Override Value */\r
+#define ACIFC_TR_ACTEST4            (0x1u <<  4) /**< \brief (ACIFC_TR) AC4 Output Override Value */\r
+#define ACIFC_TR_ACTEST5            (0x1u <<  5) /**< \brief (ACIFC_TR) AC5 Output Override Value */\r
+#define ACIFC_TR_ACTEST6            (0x1u <<  6) /**< \brief (ACIFC_TR) AC6 Output Override Value */\r
+#define ACIFC_TR_ACTEST7            (0x1u <<  7) /**< \brief (ACIFC_TR) AC7 Output Override Value */\r
+/* -------- ACIFC_PARAMETER : (ACIFC Offset: 0x30) Parameter Register -------- */\r
+#define ACIFC_PARAMETER_ACIMPL0     (0x1u <<  0) /**< \brief (ACIFC_PARAMETER) Analog Comparator 0 Implemented */\r
+#define ACIFC_PARAMETER_ACIMPL1     (0x1u <<  1) /**< \brief (ACIFC_PARAMETER) Analog Comparator 1 Implemented */\r
+#define ACIFC_PARAMETER_ACIMPL2     (0x1u <<  2) /**< \brief (ACIFC_PARAMETER) Analog Comparator 2 Implemented */\r
+#define ACIFC_PARAMETER_ACIMPL3     (0x1u <<  3) /**< \brief (ACIFC_PARAMETER) Analog Comparator 3 Implemented */\r
+#define ACIFC_PARAMETER_ACIMPL4     (0x1u <<  4) /**< \brief (ACIFC_PARAMETER) Analog Comparator 4 Implemented */\r
+#define ACIFC_PARAMETER_ACIMPL5     (0x1u <<  5) /**< \brief (ACIFC_PARAMETER) Analog Comparator 5 Implemented */\r
+#define ACIFC_PARAMETER_ACIMPL6     (0x1u <<  6) /**< \brief (ACIFC_PARAMETER) Analog Comparator 6 Implemented */\r
+#define ACIFC_PARAMETER_ACIMPL7     (0x1u <<  7) /**< \brief (ACIFC_PARAMETER) Analog Comparator 7 Implemented */\r
+#define ACIFC_PARAMETER_WIMPL0      (0x1u << 16) /**< \brief (ACIFC_PARAMETER) Window0 Mode  Implemented */\r
+#define ACIFC_PARAMETER_WIMPL1      (0x1u << 17) /**< \brief (ACIFC_PARAMETER) Window1 Mode  Implemented */\r
+#define ACIFC_PARAMETER_WIMPL2      (0x1u << 18) /**< \brief (ACIFC_PARAMETER) Window2 Mode  Implemented */\r
+#define ACIFC_PARAMETER_WIMPL3      (0x1u << 19) /**< \brief (ACIFC_PARAMETER) Window3 Mode  Implemented */\r
+/* -------- ACIFC_VERSION : (ACIFC Offset: 0x34) Version Register -------- */\r
+#define ACIFC_VERSION_VERSION_Pos    0\r
+#define ACIFC_VERSION_VERSION_Msk    (0xFFFu << ACIFC_VERSION_VERSION_Pos) /**< \brief (ACIFC_VERSION) Version Number */\r
+#define ACIFC_VERSION_VERSION(value) ((ACIFC_VERSION_VERSION_Msk & ((value) << ACIFC_VERSION_VERSION_Pos)))\r
+#define ACIFC_VERSION_VARIANT_Pos    16\r
+#define ACIFC_VERSION_VARIANT_Msk    (0xFu << ACIFC_VERSION_VARIANT_Pos) /**< \brief (ACIFC_VERSION) Variant Number */\r
+#define ACIFC_VERSION_VARIANT(value) ((ACIFC_VERSION_VARIANT_Msk & ((value) << ACIFC_VERSION_VARIANT_Pos)))\r
+/* -------- ACIFC_CONFW : (ACIFC Offset: 0x80) Confw Window configuration Register -------- */\r
+#define ACIFC_CONFW_WIS_Pos         0\r
+#define ACIFC_CONFW_WIS_Msk         (0x7u << ACIFC_CONFW_WIS_Pos) /**< \brief (ACIFC_CONFW) Window Mode Interrupt Settings */\r
+#define ACIFC_CONFW_WIS(value)      ((ACIFC_CONFW_WIS_Msk & ((value) << ACIFC_CONFW_WIS_Pos)))\r
+#define ACIFC_CONFW_WEVSRC_Pos      8\r
+#define ACIFC_CONFW_WEVSRC_Msk      (0x7u << ACIFC_CONFW_WEVSRC_Pos) /**< \brief (ACIFC_CONFW) Peripheral Event Sourse Selection for Window Mode */\r
+#define ACIFC_CONFW_WEVSRC(value)   ((ACIFC_CONFW_WEVSRC_Msk & ((value) << ACIFC_CONFW_WEVSRC_Pos)))\r
+#define ACIFC_CONFW_WEVEN           (0x1u << 11) /**< \brief (ACIFC_CONFW) Window Peripheral Event Enable */\r
+#define ACIFC_CONFW_WFEN            (0x1u << 16) /**< \brief (ACIFC_CONFW) Window Mode Enable */\r
+/* -------- ACIFC_CONF : (ACIFC Offset: 0xD0) Conf AC Configuration Register -------- */\r
+#define ACIFC_CONF_IS_Pos           0\r
+#define ACIFC_CONF_IS_Msk           (0x3u << ACIFC_CONF_IS_Pos) /**< \brief (ACIFC_CONF) Interupt Settings */\r
+#define ACIFC_CONF_IS(value)        ((ACIFC_CONF_IS_Msk & ((value) << ACIFC_CONF_IS_Pos)))\r
+#define ACIFC_CONF_MODE_Pos         4\r
+#define ACIFC_CONF_MODE_Msk         (0x3u << ACIFC_CONF_MODE_Pos) /**< \brief (ACIFC_CONF) Analog Comparator Mode */\r
+#define ACIFC_CONF_MODE(value)      ((ACIFC_CONF_MODE_Msk & ((value) << ACIFC_CONF_MODE_Pos)))\r
+#define ACIFC_CONF_INSELN_Pos       8\r
+#define ACIFC_CONF_INSELN_Msk       (0x3u << ACIFC_CONF_INSELN_Pos) /**< \brief (ACIFC_CONF) Negative Input Select */\r
+#define ACIFC_CONF_INSELN(value)    ((ACIFC_CONF_INSELN_Msk & ((value) << ACIFC_CONF_INSELN_Pos)))\r
+#define ACIFC_CONF_EVENN            (0x1u << 16) /**< \brief (ACIFC_CONF) Peripheral Event Enable Negative */\r
+#define ACIFC_CONF_EVENP            (0x1u << 17) /**< \brief (ACIFC_CONF) Peripheral Event Enable Positive */\r
+#define ACIFC_CONF_HYS_Pos          24\r
+#define ACIFC_CONF_HYS_Msk          (0x3u << ACIFC_CONF_HYS_Pos) /**< \brief (ACIFC_CONF) Hysteresis Voltage Value */\r
+#define ACIFC_CONF_HYS(value)       ((ACIFC_CONF_HYS_Msk & ((value) << ACIFC_CONF_HYS_Pos)))\r
+#define ACIFC_CONF_FAST             (0x1u << 26) /**< \brief (ACIFC_CONF) Fast Mode Enable */\r
+#define ACIFC_CONF_ALWAYSON         (0x1u << 27) /**< \brief (ACIFC_CONF) Always On */\r
+\r
+/*@}*/\r
+\r
+/* ============================================================================= */\r
+/**  SOFTWARE API DEFINITION FOR ADCIFE */\r
+/* ============================================================================= */\r
+/** \addtogroup SAM4L_ADCIFE ADC controller interface */\r
+/*@{*/\r
+\r
+#define REV_ADCIFE     0x100\r
+\r
+#ifndef __ASSEMBLY__\r
+/** \brief ADCIFE hardware registers */\r
+typedef struct {\r
+  WoReg   ADCIFE_CR;          /**< \brief (ADCIFE Offset: 0x00) Control Register */\r
+  RwReg   ADCIFE_CFG;         /**< \brief (ADCIFE Offset: 0x04) Configuration Register */\r
+  RoReg   ADCIFE_SR;          /**< \brief (ADCIFE Offset: 0x08) Status Register */\r
+  WoReg   ADCIFE_SCR;         /**< \brief (ADCIFE Offset: 0x0C) Status Clear Register */\r
+  RwReg   ADCIFE_RTS;         /**< \brief (ADCIFE Offset: 0x10) Resistive Touch Screen Register */\r
+  RwReg   ADCIFE_SEQCFG;      /**< \brief (ADCIFE Offset: 0x14) Sequencer Configuration Register */\r
+  WoReg   ADCIFE_CDMA;        /**< \brief (ADCIFE Offset: 0x18) Configuration Direct Memory Access Register */\r
+  RwReg   ADCIFE_TIM;         /**< \brief (ADCIFE Offset: 0x1C) Timing Configuration Register */\r
+  RwReg   ADCIFE_ITIMER;      /**< \brief (ADCIFE Offset: 0x20) Internal Timer Register */\r
+  RwReg   ADCIFE_WCFG;        /**< \brief (ADCIFE Offset: 0x24) Window Monitor Configuration Register */\r
+  RwReg   ADCIFE_WTH;         /**< \brief (ADCIFE Offset: 0x28) Window Monitor Threshold Configuration Register */\r
+  RoReg   ADCIFE_LCV;         /**< \brief (ADCIFE Offset: 0x2C) Sequencer Last Converted Value Register */\r
+  WoReg   ADCIFE_IER;         /**< \brief (ADCIFE Offset: 0x30) Interrupt Enable Register */\r
+  WoReg   ADCIFE_IDR;         /**< \brief (ADCIFE Offset: 0x34) Interrupt Disable Register */\r
+  RoReg   ADCIFE_IMR;         /**< \brief (ADCIFE Offset: 0x38) Interrupt Mask Register */\r
+  RwReg   ADCIFE_CALIB;       /**< \brief (ADCIFE Offset: 0x3C) Calibration Register */\r
+  RoReg   ADCIFE_VERSION;     /**< \brief (ADCIFE Offset: 0x40) Version Register */\r
+  RoReg   ADCIFE_PARAMETER;   /**< \brief (ADCIFE Offset: 0x44) Parameter Register */\r
+} Adcife;\r
+#endif /* __ASSEMBLY__ */\r
+/* -------- ADCIFE_CR : (ADCIFE Offset: 0x00) Control Register -------- */\r
+#define ADCIFE_CR_SWRST             (0x1u <<  0) /**< \brief (ADCIFE_CR) Software reset */\r
+#define ADCIFE_CR_TSTOP             (0x1u <<  1) /**< \brief (ADCIFE_CR) Internal timer stop bit */\r
+#define ADCIFE_CR_TSTART            (0x1u <<  2) /**< \brief (ADCIFE_CR) Internal timer start bit */\r
+#define ADCIFE_CR_STRIG             (0x1u <<  3) /**< \brief (ADCIFE_CR) Sequencer trigger */\r
+#define ADCIFE_CR_REFBUFEN          (0x1u <<  4) /**< \brief (ADCIFE_CR) Reference buffer enable */\r
+#define ADCIFE_CR_REFBUFDIS         (0x1u <<  5) /**< \brief (ADCIFE_CR) Reference buffer disable */\r
+#define ADCIFE_CR_EN                (0x1u <<  8) /**< \brief (ADCIFE_CR) ADCIFD enable */\r
+#define ADCIFE_CR_DIS               (0x1u <<  9) /**< \brief (ADCIFE_CR) ADCIFD disable */\r
+#define ADCIFE_CR_BGREQEN           (0x1u << 10) /**< \brief (ADCIFE_CR) Bandgap buffer request enable */\r
+#define ADCIFE_CR_BGREQDIS          (0x1u << 11) /**< \brief (ADCIFE_CR) Bandgap buffer request disable */\r
+/* -------- ADCIFE_CFG : (ADCIFE Offset: 0x04) Configuration Register -------- */\r
+#define ADCIFE_CFG_REFSEL_Pos       1\r
+#define ADCIFE_CFG_REFSEL_Msk       (0x7u << ADCIFE_CFG_REFSEL_Pos) /**< \brief (ADCIFE_CFG) ADC Reference Selection */\r
+#define ADCIFE_CFG_REFSEL(value)    ((ADCIFE_CFG_REFSEL_Msk & ((value) << ADCIFE_CFG_REFSEL_Pos)))\r
+#define ADCIFE_CFG_SPEED_Pos        4\r
+#define ADCIFE_CFG_SPEED_Msk        (0x3u << ADCIFE_CFG_SPEED_Pos) /**< \brief (ADCIFE_CFG) ADC current reduction */\r
+#define ADCIFE_CFG_SPEED(value)     ((ADCIFE_CFG_SPEED_Msk & ((value) << ADCIFE_CFG_SPEED_Pos)))\r
+#define ADCIFE_CFG_CLKSEL           (0x1u <<  6) /**< \brief (ADCIFE_CFG) Clock Selection for sequencer/ADC cell */\r
+#define ADCIFE_CFG_PRESCAL_Pos      8\r
+#define ADCIFE_CFG_PRESCAL_Msk      (0x7u << ADCIFE_CFG_PRESCAL_Pos) /**< \brief (ADCIFE_CFG) Prescaler Rate Selection */\r
+#define ADCIFE_CFG_PRESCAL(value)   ((ADCIFE_CFG_PRESCAL_Msk & ((value) << ADCIFE_CFG_PRESCAL_Pos)))\r
+/* -------- ADCIFE_SR : (ADCIFE Offset: 0x08) Status Register -------- */\r
+#define ADCIFE_SR_SEOC              (0x1u <<  0) /**< \brief (ADCIFE_SR) Sequencer end of conversion */\r
+#define ADCIFE_SR_LOVR              (0x1u <<  1) /**< \brief (ADCIFE_SR) Sequencer last converted value overrun */\r
+#define ADCIFE_SR_WM                (0x1u <<  2) /**< \brief (ADCIFE_SR) Window monitor */\r
+#define ADCIFE_SR_SMTRG             (0x1u <<  3) /**< \brief (ADCIFE_SR) Sequencer missed trigger event */\r
+#define ADCIFE_SR_SUTD              (0x1u <<  4) /**< \brief (ADCIFE_SR) Start-up time done */\r
+#define ADCIFE_SR_TTO               (0x1u <<  5) /**< \brief (ADCIFE_SR) Timer time-out */\r
+#define ADCIFE_SR_EN                (0x1u << 24) /**< \brief (ADCIFE_SR) Enable Status */\r
+#define ADCIFE_SR_TBUSY             (0x1u << 25) /**< \brief (ADCIFE_SR) Timer busy */\r
+#define ADCIFE_SR_SBUSY             (0x1u << 26) /**< \brief (ADCIFE_SR) Sequencer busy */\r
+#define ADCIFE_SR_CBUSY             (0x1u << 27) /**< \brief (ADCIFE_SR) Conversion busy */\r
+#define ADCIFE_SR_REFBUF            (0x1u << 28) /**< \brief (ADCIFE_SR) Reference buffer status */\r
+/* -------- ADCIFE_SCR : (ADCIFE Offset: 0x0C) Status Clear Register -------- */\r
+#define ADCIFE_SCR_SEOC             (0x1u <<  0) /**< \brief (ADCIFE_SCR) Sequencer end of conversion */\r
+#define ADCIFE_SCR_LOVR             (0x1u <<  1) /**< \brief (ADCIFE_SCR) Sequencer last converted value overrun */\r
+#define ADCIFE_SCR_WM               (0x1u <<  2) /**< \brief (ADCIFE_SCR) Window monitor */\r
+#define ADCIFE_SCR_SMTRG            (0x1u <<  3) /**< \brief (ADCIFE_SCR) Sequencer missed trigger event */\r
+#define ADCIFE_SCR_SUTD             (0x1u <<  4) /**< \brief (ADCIFE_SCR) Start-up time done */\r
+#define ADCIFE_SCR_TTO              (0x1u <<  5) /**< \brief (ADCIFE_SCR) Timer time-out */\r
+/* -------- ADCIFE_RTS : (ADCIFE Offset: 0x10) Resistive Touch Screen Register -------- */\r
+/* -------- ADCIFE_SEQCFG : (ADCIFE Offset: 0x14) Sequencer Configuration Register -------- */\r
+#define ADCIFE_SEQCFG_HWLA          (0x1u <<  0) /**< \brief (ADCIFE_SEQCFG) Half word left adjust */\r
+#define ADCIFE_SEQCFG_BIPOLAR       (0x1u <<  2) /**< \brief (ADCIFE_SEQCFG) Bipolar Mode */\r
+#define ADCIFE_SEQCFG_GAIN_Pos      4\r
+#define ADCIFE_SEQCFG_GAIN_Msk      (0x7u << ADCIFE_SEQCFG_GAIN_Pos) /**< \brief (ADCIFE_SEQCFG) Gain factor */\r
+#define ADCIFE_SEQCFG_GAIN(value)   ((ADCIFE_SEQCFG_GAIN_Msk & ((value) << ADCIFE_SEQCFG_GAIN_Pos)))\r
+#define ADCIFE_SEQCFG_GCOMP         (0x1u <<  7) /**< \brief (ADCIFE_SEQCFG) Gain Compensation */\r
+#define ADCIFE_SEQCFG_TRGSEL_Pos    8\r
+#define ADCIFE_SEQCFG_TRGSEL_Msk    (0x7u << ADCIFE_SEQCFG_TRGSEL_Pos) /**< \brief (ADCIFE_SEQCFG) Trigger selection */\r
+#define ADCIFE_SEQCFG_TRGSEL(value) ((ADCIFE_SEQCFG_TRGSEL_Msk & ((value) << ADCIFE_SEQCFG_TRGSEL_Pos)))\r
+#define ADCIFE_SEQCFG_RES           (0x1u << 12) /**< \brief (ADCIFE_SEQCFG) Resolution */\r
+#define ADCIFE_SEQCFG_INTERNAL_Pos    14\r
+#define ADCIFE_SEQCFG_INTERNAL_Msk    (0x3u << ADCIFE_SEQCFG_INTERNAL_Pos) /**< \brief (ADCIFE_SEQCFG) Internal Voltage Source Selection */\r
+#define ADCIFE_SEQCFG_INTERNAL(value) ((ADCIFE_SEQCFG_INTERNAL_Msk & ((value) << ADCIFE_SEQCFG_INTERNAL_Pos)))\r
+#define ADCIFE_SEQCFG_MUXPOS_Pos    16\r
+#define ADCIFE_SEQCFG_MUXPOS_Msk    (0xFu << ADCIFE_SEQCFG_MUXPOS_Pos) /**< \brief (ADCIFE_SEQCFG) MUX selection on Positive ADC input channel */\r
+#define ADCIFE_SEQCFG_MUXPOS(value) ((ADCIFE_SEQCFG_MUXPOS_Msk & ((value) << ADCIFE_SEQCFG_MUXPOS_Pos)))\r
+#define ADCIFE_SEQCFG_MUXNEG_Pos    20\r
+#define ADCIFE_SEQCFG_MUXNEG_Msk    (0x7u << ADCIFE_SEQCFG_MUXNEG_Pos) /**< \brief (ADCIFE_SEQCFG) MUX selection on Negative ADC input channel */\r
+#define ADCIFE_SEQCFG_MUXNEG(value) ((ADCIFE_SEQCFG_MUXNEG_Msk & ((value) << ADCIFE_SEQCFG_MUXNEG_Pos)))\r
+#define ADCIFE_SEQCFG_ZOOMRANGE_Pos    28\r
+#define ADCIFE_SEQCFG_ZOOMRANGE_Msk    (0x7u << ADCIFE_SEQCFG_ZOOMRANGE_Pos) /**< \brief (ADCIFE_SEQCFG) Zoom shift/unipolar reference source selection */\r
+#define ADCIFE_SEQCFG_ZOOMRANGE(value) ((ADCIFE_SEQCFG_ZOOMRANGE_Msk & ((value) << ADCIFE_SEQCFG_ZOOMRANGE_Pos)))\r
+/* -------- ADCIFE_FIRST_DMA_WORD_CDMA : (ADCIFE Offset: 0x18) Configuration Direct Memory Access Register -------- */\r
+#define ADCIFE_FIRST_DMA_WORD_CDMA_HWLA (0x1u <<  0) /**< \brief (ADCIFE_FIRST_DMA_WORD_CDMA)  */\r
+#define ADCIFE_FIRST_DMA_WORD_CDMA_BIPOLAR (0x1u <<  2) /**< \brief (ADCIFE_FIRST_DMA_WORD_CDMA)  */\r
+#define ADCIFE_FIRST_DMA_WORD_CDMA_STRIG (0x1u <<  3) /**< \brief (ADCIFE_FIRST_DMA_WORD_CDMA)  */\r
+#define ADCIFE_FIRST_DMA_WORD_CDMA_GAIN_Pos    4\r
+#define ADCIFE_FIRST_DMA_WORD_CDMA_GAIN_Msk    (0x7u << ADCIFE_FIRST_DMA_WORD_CDMA_GAIN_Pos) /**< \brief (ADCIFE_FIRST_DMA_WORD_CDMA)  */\r
+#define ADCIFE_FIRST_DMA_WORD_CDMA_GAIN(value) ((ADCIFE_FIRST_DMA_WORD_CDMA_GAIN_Msk & ((value) << ADCIFE_FIRST_DMA_WORD_CDMA_GAIN_Pos)))\r
+#define ADCIFE_FIRST_DMA_WORD_CDMA_GCOMP (0x1u <<  7) /**< \brief (ADCIFE_FIRST_DMA_WORD_CDMA)  */\r
+#define ADCIFE_FIRST_DMA_WORD_CDMA_ENSTUP (0x1u <<  8) /**< \brief (ADCIFE_FIRST_DMA_WORD_CDMA)  */\r
+#define ADCIFE_FIRST_DMA_WORD_CDMA_RES (0x1u << 12) /**< \brief (ADCIFE_FIRST_DMA_WORD_CDMA)  */\r
+#define ADCIFE_FIRST_DMA_WORD_CDMA_TSS (0x1u << 13) /**< \brief (ADCIFE_FIRST_DMA_WORD_CDMA) Internal timer start or stop bit */\r
+#define ADCIFE_FIRST_DMA_WORD_CDMA_INTERNAL_Pos    14\r
+#define ADCIFE_FIRST_DMA_WORD_CDMA_INTERNAL_Msk    (0x3u << ADCIFE_FIRST_DMA_WORD_CDMA_INTERNAL_Pos) /**< \brief (ADCIFE_FIRST_DMA_WORD_CDMA)  */\r
+#define ADCIFE_FIRST_DMA_WORD_CDMA_INTERNAL(value) ((ADCIFE_FIRST_DMA_WORD_CDMA_INTERNAL_Msk & ((value) << ADCIFE_FIRST_DMA_WORD_CDMA_INTERNAL_Pos)))\r
+#define ADCIFE_FIRST_DMA_WORD_CDMA_MUXPOS_Pos    16\r
+#define ADCIFE_FIRST_DMA_WORD_CDMA_MUXPOS_Msk    (0xFu << ADCIFE_FIRST_DMA_WORD_CDMA_MUXPOS_Pos) /**< \brief (ADCIFE_FIRST_DMA_WORD_CDMA)  */\r
+#define ADCIFE_FIRST_DMA_WORD_CDMA_MUXPOS(value) ((ADCIFE_FIRST_DMA_WORD_CDMA_MUXPOS_Msk & ((value) << ADCIFE_FIRST_DMA_WORD_CDMA_MUXPOS_Pos)))\r
+#define ADCIFE_FIRST_DMA_WORD_CDMA_MUXNEG_Pos    20\r
+#define ADCIFE_FIRST_DMA_WORD_CDMA_MUXNEG_Msk    (0x7u << ADCIFE_FIRST_DMA_WORD_CDMA_MUXNEG_Pos) /**< \brief (ADCIFE_FIRST_DMA_WORD_CDMA)  */\r
+#define ADCIFE_FIRST_DMA_WORD_CDMA_MUXNEG(value) ((ADCIFE_FIRST_DMA_WORD_CDMA_MUXNEG_Msk & ((value) << ADCIFE_FIRST_DMA_WORD_CDMA_MUXNEG_Pos)))\r
+#define ADCIFE_FIRST_DMA_WORD_CDMA_ZOOMRANGE_Pos    28\r
+#define ADCIFE_FIRST_DMA_WORD_CDMA_ZOOMRANGE_Msk    (0x7u << ADCIFE_FIRST_DMA_WORD_CDMA_ZOOMRANGE_Pos) /**< \brief (ADCIFE_FIRST_DMA_WORD_CDMA)  */\r
+#define ADCIFE_FIRST_DMA_WORD_CDMA_ZOOMRANGE(value) ((ADCIFE_FIRST_DMA_WORD_CDMA_ZOOMRANGE_Msk & ((value) << ADCIFE_FIRST_DMA_WORD_CDMA_ZOOMRANGE_Pos)))\r
+#define ADCIFE_FIRST_DMA_WORD_CDMA_DW (0x1u << 31) /**< \brief (ADCIFE_FIRST_DMA_WORD_CDMA) Double Word transmitting */\r
+/* -------- ADCIFE_SECOND_DMA_WORD_CDMA : (ADCIFE Offset: 0x18) Configuration Direct Memory Access Register -------- */\r
+#define ADCIFE_SECOND_DMA_WORD_CDMA_LT_Pos    0\r
+#define ADCIFE_SECOND_DMA_WORD_CDMA_LT_Msk    (0xFFFu << ADCIFE_SECOND_DMA_WORD_CDMA_LT_Pos) /**< \brief (ADCIFE_SECOND_DMA_WORD_CDMA)  */\r
+#define ADCIFE_SECOND_DMA_WORD_CDMA_LT(value) ((ADCIFE_SECOND_DMA_WORD_CDMA_LT_Msk & ((value) << ADCIFE_SECOND_DMA_WORD_CDMA_LT_Pos)))\r
+#define ADCIFE_SECOND_DMA_WORD_CDMA_WM_Pos    12\r
+#define ADCIFE_SECOND_DMA_WORD_CDMA_WM_Msk    (0x7u << ADCIFE_SECOND_DMA_WORD_CDMA_WM_Pos) /**< \brief (ADCIFE_SECOND_DMA_WORD_CDMA)  */\r
+#define ADCIFE_SECOND_DMA_WORD_CDMA_WM(value) ((ADCIFE_SECOND_DMA_WORD_CDMA_WM_Msk & ((value) << ADCIFE_SECOND_DMA_WORD_CDMA_WM_Pos)))\r
+#define ADCIFE_SECOND_DMA_WORD_CDMA_HT_Pos    16\r
+#define ADCIFE_SECOND_DMA_WORD_CDMA_HT_Msk    (0xFFFu << ADCIFE_SECOND_DMA_WORD_CDMA_HT_Pos) /**< \brief (ADCIFE_SECOND_DMA_WORD_CDMA)  */\r
+#define ADCIFE_SECOND_DMA_WORD_CDMA_HT(value) ((ADCIFE_SECOND_DMA_WORD_CDMA_HT_Msk & ((value) << ADCIFE_SECOND_DMA_WORD_CDMA_HT_Pos)))\r
+#define ADCIFE_SECOND_DMA_WORD_CDMA_DW (0x1u << 31) /**< \brief (ADCIFE_SECOND_DMA_WORD_CDMA)  */\r
+/* -------- ADCIFE_CDMA : (ADCIFE Offset: 0x18) Configuration Direct Memory Access Register -------- */\r
+#define ADCIFE_CDMA_HWLA            (0x1u <<  0) /**< \brief (ADCIFE_CDMA)  */\r
+#define ADCIFE_CDMA_LT_Pos          0\r
+#define ADCIFE_CDMA_LT_Msk          (0xFFFu << ADCIFE_CDMA_LT_Pos) /**< \brief (ADCIFE_CDMA)  */\r
+#define ADCIFE_CDMA_LT(value)       ((ADCIFE_CDMA_LT_Msk & ((value) << ADCIFE_CDMA_LT_Pos)))\r
+#define ADCIFE_CDMA_BIPOLAR         (0x1u <<  2) /**< \brief (ADCIFE_CDMA)  */\r
+#define ADCIFE_CDMA_STRIG           (0x1u <<  3) /**< \brief (ADCIFE_CDMA)  */\r
+#define ADCIFE_CDMA_GAIN_Pos        4\r
+#define ADCIFE_CDMA_GAIN_Msk        (0x7u << ADCIFE_CDMA_GAIN_Pos) /**< \brief (ADCIFE_CDMA)  */\r
+#define ADCIFE_CDMA_GAIN(value)     ((ADCIFE_CDMA_GAIN_Msk & ((value) << ADCIFE_CDMA_GAIN_Pos)))\r
+#define ADCIFE_CDMA_GCOMP           (0x1u <<  7) /**< \brief (ADCIFE_CDMA)  */\r
+#define ADCIFE_CDMA_ENSTUP          (0x1u <<  8) /**< \brief (ADCIFE_CDMA)  */\r
+#define ADCIFE_CDMA_RES             (0x1u << 12) /**< \brief (ADCIFE_CDMA)  */\r
+#define ADCIFE_CDMA_WM_Pos          12\r
+#define ADCIFE_CDMA_WM_Msk          (0x7u << ADCIFE_CDMA_WM_Pos) /**< \brief (ADCIFE_CDMA)  */\r
+#define ADCIFE_CDMA_WM(value)       ((ADCIFE_CDMA_WM_Msk & ((value) << ADCIFE_CDMA_WM_Pos)))\r
+#define ADCIFE_CDMA_TSS             (0x1u << 13) /**< \brief (ADCIFE_CDMA) Internal timer start or stop bit */\r
+#define ADCIFE_CDMA_INTERNAL_Pos    14\r
+#define ADCIFE_CDMA_INTERNAL_Msk    (0x3u << ADCIFE_CDMA_INTERNAL_Pos) /**< \brief (ADCIFE_CDMA)  */\r
+#define ADCIFE_CDMA_INTERNAL(value) ((ADCIFE_CDMA_INTERNAL_Msk & ((value) << ADCIFE_CDMA_INTERNAL_Pos)))\r
+#define ADCIFE_CDMA_MUXPOS_Pos      16\r
+#define ADCIFE_CDMA_MUXPOS_Msk      (0xFu << ADCIFE_CDMA_MUXPOS_Pos) /**< \brief (ADCIFE_CDMA)  */\r
+#define ADCIFE_CDMA_MUXPOS(value)   ((ADCIFE_CDMA_MUXPOS_Msk & ((value) << ADCIFE_CDMA_MUXPOS_Pos)))\r
+#define ADCIFE_CDMA_HT_Pos          16\r
+#define ADCIFE_CDMA_HT_Msk          (0xFFFu << ADCIFE_CDMA_HT_Pos) /**< \brief (ADCIFE_CDMA)  */\r
+#define ADCIFE_CDMA_HT(value)       ((ADCIFE_CDMA_HT_Msk & ((value) << ADCIFE_CDMA_HT_Pos)))\r
+#define ADCIFE_CDMA_MUXNEG_Pos      20\r
+#define ADCIFE_CDMA_MUXNEG_Msk      (0x7u << ADCIFE_CDMA_MUXNEG_Pos) /**< \brief (ADCIFE_CDMA)  */\r
+#define ADCIFE_CDMA_MUXNEG(value)   ((ADCIFE_CDMA_MUXNEG_Msk & ((value) << ADCIFE_CDMA_MUXNEG_Pos)))\r
+#define ADCIFE_CDMA_ZOOMRANGE_Pos    28\r
+#define ADCIFE_CDMA_ZOOMRANGE_Msk    (0x7u << ADCIFE_CDMA_ZOOMRANGE_Pos) /**< \brief (ADCIFE_CDMA)  */\r
+#define ADCIFE_CDMA_ZOOMRANGE(value) ((ADCIFE_CDMA_ZOOMRANGE_Msk & ((value) << ADCIFE_CDMA_ZOOMRANGE_Pos)))\r
+#define ADCIFE_CDMA_DW              (0x1u << 31) /**< \brief (ADCIFE_CDMA) Double Word transmitting */\r
+\r
+/* -------- ADCIFE_TIM : (ADCIFE Offset: 0x1C) Timing Configuration Register -------- */\r
+#define ADCIFE_TIM_STARTUP_Pos      0\r
+#define ADCIFE_TIM_STARTUP_Msk      (0x1Fu << ADCIFE_TIM_STARTUP_Pos) /**< \brief (ADCIFE_TIM) Startup time */\r
+#define ADCIFE_TIM_STARTUP(value)   ((ADCIFE_TIM_STARTUP_Msk & ((value) << ADCIFE_TIM_STARTUP_Pos)))\r
+#define ADCIFE_TIM_ENSTUP           (0x1u <<  8) /**< \brief (ADCIFE_TIM) Enable Startup */\r
+/* -------- ADCIFE_ITIMER : (ADCIFE Offset: 0x20) Internal Timer Register -------- */\r
+#define ADCIFE_ITIMER_ITMC_Pos      0\r
+#define ADCIFE_ITIMER_ITMC_Msk      (0xFFFFu << ADCIFE_ITIMER_ITMC_Pos) /**< \brief (ADCIFE_ITIMER) Internal timer max counter */\r
+#define ADCIFE_ITIMER_ITMC(value)   ((ADCIFE_ITIMER_ITMC_Msk & ((value) << ADCIFE_ITIMER_ITMC_Pos)))\r
+/* -------- ADCIFE_WCFG : (ADCIFE Offset: 0x24) Window Monitor Configuration Register -------- */\r
+#define ADCIFE_WCFG_WM_Pos          12\r
+#define ADCIFE_WCFG_WM_Msk          (0x7u << ADCIFE_WCFG_WM_Pos) /**< \brief (ADCIFE_WCFG) Window Monitor Mode */\r
+#define ADCIFE_WCFG_WM(value)       ((ADCIFE_WCFG_WM_Msk & ((value) << ADCIFE_WCFG_WM_Pos)))\r
+/* -------- ADCIFE_WTH : (ADCIFE Offset: 0x28) Window Monitor Threshold Configuration Register -------- */\r
+#define ADCIFE_WTH_LT_Pos           0\r
+#define ADCIFE_WTH_LT_Msk           (0xFFFu << ADCIFE_WTH_LT_Pos) /**< \brief (ADCIFE_WTH) Low threshold */\r
+#define ADCIFE_WTH_LT(value)        ((ADCIFE_WTH_LT_Msk & ((value) << ADCIFE_WTH_LT_Pos)))\r
+#define ADCIFE_WTH_HT_Pos           16\r
+#define ADCIFE_WTH_HT_Msk           (0xFFFu << ADCIFE_WTH_HT_Pos) /**< \brief (ADCIFE_WTH) High Threshold */\r
+#define ADCIFE_WTH_HT(value)        ((ADCIFE_WTH_HT_Msk & ((value) << ADCIFE_WTH_HT_Pos)))\r
+/* -------- ADCIFE_LCV : (ADCIFE Offset: 0x2C) Sequencer Last Converted Value Register -------- */\r
+#define ADCIFE_LCV_LCV_Pos          0\r
+#define ADCIFE_LCV_LCV_Msk          (0xFFFFu << ADCIFE_LCV_LCV_Pos) /**< \brief (ADCIFE_LCV) Last converted value */\r
+#define ADCIFE_LCV_LCV(value)       ((ADCIFE_LCV_LCV_Msk & ((value) << ADCIFE_LCV_LCV_Pos)))\r
+#define ADCIFE_LCV_LCPC_Pos         16\r
+#define ADCIFE_LCV_LCPC_Msk         (0xFu << ADCIFE_LCV_LCPC_Pos) /**< \brief (ADCIFE_LCV) Last converted positive channel */\r
+#define ADCIFE_LCV_LCPC(value)      ((ADCIFE_LCV_LCPC_Msk & ((value) << ADCIFE_LCV_LCPC_Pos)))\r
+#define ADCIFE_LCV_LCNC_Pos         20\r
+#define ADCIFE_LCV_LCNC_Msk         (0x7u << ADCIFE_LCV_LCNC_Pos) /**< \brief (ADCIFE_LCV) Last converted negative channel */\r
+#define ADCIFE_LCV_LCNC(value)      ((ADCIFE_LCV_LCNC_Msk & ((value) << ADCIFE_LCV_LCNC_Pos)))\r
+/* -------- ADCIFE_IER : (ADCIFE Offset: 0x30) Interrupt Enable Register -------- */\r
+#define ADCIFE_IER_SEOC             (0x1u <<  0) /**< \brief (ADCIFE_IER) Sequencer end of conversion Interrupt Enable */\r
+#define ADCIFE_IER_LOVR             (0x1u <<  1) /**< \brief (ADCIFE_IER) Sequencer last converted value overrun Interrupt Enable */\r
+#define ADCIFE_IER_WM               (0x1u <<  2) /**< \brief (ADCIFE_IER) Window monitor Interrupt Enable */\r
+#define ADCIFE_IER_SMTRG            (0x1u <<  3) /**< \brief (ADCIFE_IER) Sequencer missed trigger event Interrupt Enable */\r
+#define ADCIFE_IER_TTO              (0x1u <<  5) /**< \brief (ADCIFE_IER) Timer time-out Interrupt Enable */\r
+/* -------- ADCIFE_IDR : (ADCIFE Offset: 0x34) Interrupt Disable Register -------- */\r
+#define ADCIFE_IDR_SEOC             (0x1u <<  0) /**< \brief (ADCIFE_IDR) Sequencer end of conversion Interrupt Disable */\r
+#define ADCIFE_IDR_LOVR             (0x1u <<  1) /**< \brief (ADCIFE_IDR) Sequencer last converted value overrun Interrupt Disable */\r
+#define ADCIFE_IDR_WM               (0x1u <<  2) /**< \brief (ADCIFE_IDR) Window monitor Interrupt Disable */\r
+#define ADCIFE_IDR_SMTRG            (0x1u <<  3) /**< \brief (ADCIFE_IDR) Sequencer missed trigger event Interrupt Disable */\r
+#define ADCIFE_IDR_TTO              (0x1u <<  5) /**< \brief (ADCIFE_IDR) Timer time-out Interrupt Disable */\r
+/* -------- ADCIFE_IMR : (ADCIFE Offset: 0x38) Interrupt Mask Register -------- */\r
+#define ADCIFE_IMR_SEOC             (0x1u <<  0) /**< \brief (ADCIFE_IMR) Sequencer end of conversion Interrupt Mask */\r
+#define ADCIFE_IMR_LOVR             (0x1u <<  1) /**< \brief (ADCIFE_IMR) Sequencer last converted value overrun Interrupt Mask */\r
+#define ADCIFE_IMR_WM               (0x1u <<  2) /**< \brief (ADCIFE_IMR) Window monitor Interrupt Mask */\r
+#define ADCIFE_IMR_SMTRG            (0x1u <<  3) /**< \brief (ADCIFE_IMR) Sequencer missed trigger event Interrupt Mask */\r
+#define ADCIFE_IMR_TTO              (0x1u <<  5) /**< \brief (ADCIFE_IMR) Timer time-out Interrupt Mask */\r
+/* -------- ADCIFE_CALIB : (ADCIFE Offset: 0x3C) Calibration Register -------- */\r
+#define ADCIFE_CALIB_CALIB_Pos      0\r
+#define ADCIFE_CALIB_CALIB_Msk      (0xFFu << ADCIFE_CALIB_CALIB_Pos) /**< \brief (ADCIFE_CALIB) Calibration Value */\r
+#define ADCIFE_CALIB_CALIB(value)   ((ADCIFE_CALIB_CALIB_Msk & ((value) << ADCIFE_CALIB_CALIB_Pos)))\r
+#define ADCIFE_CALIB_BIASSEL        (0x1u <<  8) /**< \brief (ADCIFE_CALIB) Select bias mode */\r
+#define ADCIFE_CALIB_BIASCAL_Pos    12\r
+#define ADCIFE_CALIB_BIASCAL_Msk    (0xFu << ADCIFE_CALIB_BIASCAL_Pos) /**< \brief (ADCIFE_CALIB) Bias Calibration */\r
+#define ADCIFE_CALIB_BIASCAL(value) ((ADCIFE_CALIB_BIASCAL_Msk & ((value) << ADCIFE_CALIB_BIASCAL_Pos)))\r
+#define ADCIFE_CALIB_FCD            (0x1u << 16) /**< \brief (ADCIFE_CALIB) Flash Calibration Done */\r
+/* -------- ADCIFE_VERSION : (ADCIFE Offset: 0x40) Version Register -------- */\r
+#define ADCIFE_VERSION_VERSION_Pos    0\r
+#define ADCIFE_VERSION_VERSION_Msk    (0xFFFu << ADCIFE_VERSION_VERSION_Pos) /**< \brief (ADCIFE_VERSION) Version number */\r
+#define ADCIFE_VERSION_VERSION(value) ((ADCIFE_VERSION_VERSION_Msk & ((value) << ADCIFE_VERSION_VERSION_Pos)))\r
+#define ADCIFE_VERSION_VARIANT_Pos    16\r
+#define ADCIFE_VERSION_VARIANT_Msk    (0xFu << ADCIFE_VERSION_VARIANT_Pos) /**< \brief (ADCIFE_VERSION) Variant number */\r
+#define ADCIFE_VERSION_VARIANT(value) ((ADCIFE_VERSION_VARIANT_Msk & ((value) << ADCIFE_VERSION_VARIANT_Pos)))\r
+/* -------- ADCIFE_PARAMETER : (ADCIFE Offset: 0x44) Parameter Register -------- */\r
+#define ADCIFE_PARAMETER_N_Pos      0\r
+#define ADCIFE_PARAMETER_N_Msk      (0xFFu << ADCIFE_PARAMETER_N_Pos) /**< \brief (ADCIFE_PARAMETER) Number of channels */\r
+#define ADCIFE_PARAMETER_N(value)   ((ADCIFE_PARAMETER_N_Msk & ((value) << ADCIFE_PARAMETER_N_Pos)))\r
+\r
+/*@}*/\r
+\r
+/* ============================================================================= */\r
+/**  SOFTWARE API DEFINITION FOR AESA */\r
+/* ============================================================================= */\r
+/** \addtogroup SAM4L_AESA Advanced Encryption Standard */\r
+/*@{*/\r
+\r
+#define REV_AESA       0x102\r
+\r
+#ifndef __ASSEMBLY__\r
+/** \brief AesaInitvect hardware registers */\r
+typedef struct {\r
+  WoReg   AESA_INITVECT; /**< \brief (AesaInitvect Offset: 0x00) Initialization Vector Register 0 */\r
+} AesaInitvect;\r
+/** \brief AesaKey hardware registers */\r
+typedef struct {\r
+  WoReg   AESA_KEY;    /**< \brief (AesaKey Offset: 0x00) Key Register 0 */\r
+} AesaKey;\r
+/** \brief AESA hardware registers */\r
+typedef struct {\r
+  RwReg   AESA_CTRL;        /**< \brief (AESA Offset: 0x00) Control Register */\r
+  RwReg   AESA_MODE;        /**< \brief (AESA Offset: 0x04) Mode Register */\r
+  RwReg   AESA_DATABUFPTR;  /**< \brief (AESA Offset: 0x08) Data Buffer Pointer Register */\r
+  RoReg   AESA_SR;          /**< \brief (AESA Offset: 0x0C) Status Register */\r
+  WoReg   AESA_IER;         /**< \brief (AESA Offset: 0x10) Interrupt Enable Register */\r
+  WoReg   AESA_IDR;         /**< \brief (AESA Offset: 0x14) Interrupt Disable Register */\r
+  RoReg   AESA_IMR;         /**< \brief (AESA Offset: 0x18) Interrupt Mask Register */\r
+  RoReg   Reserved1[1];\r
+  AesaKey AESA_KEY[8]; /**< \brief (AESA Offset: 0x20) AesaKey groups */\r
+  AesaInitvect AESA_INITVECT[4]; /**< \brief (AESA Offset: 0x40) AesaInitvect groups */\r
+  WoReg   AESA_IDATA;       /**< \brief (AESA Offset: 0x50) Input Data Register */\r
+  RoReg   Reserved2[3];\r
+  RoReg   AESA_ODATA;       /**< \brief (AESA Offset: 0x60) Output Data Register */\r
+  RoReg   Reserved3[3];\r
+  WoReg   AESA_DRNGSEED;    /**< \brief (AESA Offset: 0x70) DRNG Seed Register */\r
+  RoReg   Reserved4[33];\r
+  RoReg   AESA_PARAMETER;   /**< \brief (AESA Offset: 0xF8) Parameter Register */\r
+  RoReg   AESA_VERSION;     /**< \brief (AESA Offset: 0xFC) Version Register */\r
+} Aesa;\r
+#endif /* __ASSEMBLY__ */\r
+/* -------- AESA_CTRL : (AESA Offset: 0x00) Control Register -------- */\r
+#define AESA_CTRL_ENABLE            (0x1u <<  0) /**< \brief (AESA_CTRL) Enable Module */\r
+#define AESA_CTRL_DKEYGEN           (0x1u <<  1) /**< \brief (AESA_CTRL) Decryption Key Generate */\r
+#define AESA_CTRL_NEWMSG            (0x1u <<  2) /**< \brief (AESA_CTRL) New Message */\r
+#define AESA_CTRL_SWRST             (0x1u <<  8) /**< \brief (AESA_CTRL) Software Reset */\r
+/* -------- AESA_MODE : (AESA Offset: 0x04) Mode Register -------- */\r
+#define AESA_MODE_ENCRYPT           (0x1u <<  0) /**< \brief (AESA_MODE) Encryption */\r
+#define AESA_MODE_KEYSIZE_Pos       1\r
+#define AESA_MODE_KEYSIZE_Msk       (0x3u << AESA_MODE_KEYSIZE_Pos) /**< \brief (AESA_MODE) Key Size */\r
+#define AESA_MODE_KEYSIZE(value)    ((AESA_MODE_KEYSIZE_Msk & ((value) << AESA_MODE_KEYSIZE_Pos)))\r
+#define AESA_MODE_DMA               (0x1u <<  3) /**< \brief (AESA_MODE) DMA Mode */\r
+#define AESA_MODE_OPMODE_Pos        4\r
+#define AESA_MODE_OPMODE_Msk        (0x7u << AESA_MODE_OPMODE_Pos) /**< \brief (AESA_MODE) Confidentiality Mode of Operation */\r
+#define AESA_MODE_OPMODE(value)     ((AESA_MODE_OPMODE_Msk & ((value) << AESA_MODE_OPMODE_Pos)))\r
+#define AESA_MODE_CFBS_Pos          8\r
+#define AESA_MODE_CFBS_Msk          (0x7u << AESA_MODE_CFBS_Pos) /**< \brief (AESA_MODE) Cipher Feedback Data Segment Size */\r
+#define AESA_MODE_CFBS(value)       ((AESA_MODE_CFBS_Msk & ((value) << AESA_MODE_CFBS_Pos)))\r
+#define AESA_MODE_CTYPE_Pos         16\r
+#define AESA_MODE_CTYPE_Msk         (0xFu << AESA_MODE_CTYPE_Pos) /**< \brief (AESA_MODE) Countermeasure Type */\r
+#define AESA_MODE_CTYPE(value)      ((AESA_MODE_CTYPE_Msk & ((value) << AESA_MODE_CTYPE_Pos)))\r
+/* -------- AESA_DATABUFPTR : (AESA Offset: 0x08) Data Buffer Pointer Register -------- */\r
+#define AESA_DATABUFPTR_IDATAW_Pos    0\r
+#define AESA_DATABUFPTR_IDATAW_Msk    (0x3u << AESA_DATABUFPTR_IDATAW_Pos) /**< \brief (AESA_DATABUFPTR) Input Data Word */\r
+#define AESA_DATABUFPTR_IDATAW(value) ((AESA_DATABUFPTR_IDATAW_Msk & ((value) << AESA_DATABUFPTR_IDATAW_Pos)))\r
+#define AESA_DATABUFPTR_ODATAW_Pos    4\r
+#define AESA_DATABUFPTR_ODATAW_Msk    (0x3u << AESA_DATABUFPTR_ODATAW_Pos) /**< \brief (AESA_DATABUFPTR) Output Data Word */\r
+#define AESA_DATABUFPTR_ODATAW(value) ((AESA_DATABUFPTR_ODATAW_Msk & ((value) << AESA_DATABUFPTR_ODATAW_Pos)))\r
+/* -------- AESA_SR : (AESA Offset: 0x0C) Status Register -------- */\r
+#define AESA_SR_ODATARDY            (0x1u <<  0) /**< \brief (AESA_SR) Output Data Ready */\r
+#define AESA_SR_IBUFRDY             (0x1u << 16) /**< \brief (AESA_SR) Input Buffer Ready */\r
+/* -------- AESA_IER : (AESA Offset: 0x10) Interrupt Enable Register -------- */\r
+#define AESA_IER_ODATARDY           (0x1u <<  0) /**< \brief (AESA_IER) Output Data Ready Interrupt Enable */\r
+#define AESA_IER_IBUFRDY            (0x1u << 16) /**< \brief (AESA_IER) Input Buffer Ready Interrupt Enable */\r
+/* -------- AESA_IDR : (AESA Offset: 0x14) Interrupt Disable Register -------- */\r
+#define AESA_IDR_ODATARDY           (0x1u <<  0) /**< \brief (AESA_IDR) Output Data Ready Interrupt Disable */\r
+#define AESA_IDR_IBUFRDY            (0x1u << 16) /**< \brief (AESA_IDR) Input Buffer Ready Interrupt Disable */\r
+/* -------- AESA_IMR : (AESA Offset: 0x18) Interrupt Mask Register -------- */\r
+#define AESA_IMR_ODATARDY           (0x1u <<  0) /**< \brief (AESA_IMR) Output Data Ready Interrupt Mask */\r
+#define AESA_IMR_IBUFRDY            (0x1u << 16) /**< \brief (AESA_IMR) Input Buffer Ready Interrupt Mask */\r
+/* -------- AESA_KEY : (AESA Offset: 0x20) Key Key Register 0 -------- */\r
+#define AESA_KEY_KEY0_Pos           0\r
+#define AESA_KEY_KEY0_Msk           (0xFFFFFFFFu << AESA_KEY_KEY0_Pos) /**< \brief (AESA_KEY) Key Word 0 */\r
+#define AESA_KEY_KEY0(value)        ((AESA_KEY_KEY0_Msk & ((value) << AESA_KEY_KEY0_Pos)))\r
+/* -------- AESA_INITVECT : (AESA Offset: 0x40) Initvect Initialization Vector Register 0 -------- */\r
+#define AESA_INITVECT_INITVECT0_Pos    0\r
+#define AESA_INITVECT_INITVECT0_Msk    (0xFFFFFFFFu << AESA_INITVECT_INITVECT0_Pos) /**< \brief (AESA_INITVECT) Initialization Vector Word 0 */\r
+#define AESA_INITVECT_INITVECT0(value) ((AESA_INITVECT_INITVECT0_Msk & ((value) << AESA_INITVECT_INITVECT0_Pos)))\r
+/* -------- AESA_IDATA : (AESA Offset: 0x50) Input Data Register -------- */\r
+#define AESA_IDATA_IDATA_Pos        0\r
+#define AESA_IDATA_IDATA_Msk        (0xFFFFFFFFu << AESA_IDATA_IDATA_Pos) /**< \brief (AESA_IDATA) Input Data */\r
+#define AESA_IDATA_IDATA(value)     ((AESA_IDATA_IDATA_Msk & ((value) << AESA_IDATA_IDATA_Pos)))\r
+/* -------- AESA_ODATA : (AESA Offset: 0x60) Output Data Register -------- */\r
+#define AESA_ODATA_ODATA_Pos        0\r
+#define AESA_ODATA_ODATA_Msk        (0xFFFFFFFFu << AESA_ODATA_ODATA_Pos) /**< \brief (AESA_ODATA) Output Data */\r
+#define AESA_ODATA_ODATA(value)     ((AESA_ODATA_ODATA_Msk & ((value) << AESA_ODATA_ODATA_Pos)))\r
+/* -------- AESA_DRNGSEED : (AESA Offset: 0x70) DRNG Seed Register -------- */\r
+#define AESA_DRNGSEED_SEED_Pos      0\r
+#define AESA_DRNGSEED_SEED_Msk      (0xFFFFFFFFu << AESA_DRNGSEED_SEED_Pos) /**< \brief (AESA_DRNGSEED) DRNG Seed */\r
+#define AESA_DRNGSEED_SEED(value)   ((AESA_DRNGSEED_SEED_Msk & ((value) << AESA_DRNGSEED_SEED_Pos)))\r
+/* -------- AESA_PARAMETER : (AESA Offset: 0xF8) Parameter Register -------- */\r
+#define AESA_PARAMETER_KEYSIZE_Pos    0\r
+#define AESA_PARAMETER_KEYSIZE_Msk    (0x3u << AESA_PARAMETER_KEYSIZE_Pos) /**< \brief (AESA_PARAMETER) Maximum Key Size */\r
+#define AESA_PARAMETER_KEYSIZE(value) ((AESA_PARAMETER_KEYSIZE_Msk & ((value) << AESA_PARAMETER_KEYSIZE_Pos)))\r
+#define AESA_PARAMETER_OPMODE_Pos    2\r
+#define AESA_PARAMETER_OPMODE_Msk    (0x7u << AESA_PARAMETER_OPMODE_Pos) /**< \brief (AESA_PARAMETER) Maximum Number of Confidentiality Modes of Operation */\r
+#define AESA_PARAMETER_OPMODE(value) ((AESA_PARAMETER_OPMODE_Msk & ((value) << AESA_PARAMETER_OPMODE_Pos)))\r
+#define AESA_PARAMETER_CTRMEAS      (0x1u <<  8) /**< \brief (AESA_PARAMETER) Countermeasures */\r
+/* -------- AESA_VERSION : (AESA Offset: 0xFC) Version Register -------- */\r
+#define AESA_VERSION_VERSION_Pos    0\r
+#define AESA_VERSION_VERSION_Msk    (0xFFFu << AESA_VERSION_VERSION_Pos) /**< \brief (AESA_VERSION) Version Number */\r
+#define AESA_VERSION_VERSION(value) ((AESA_VERSION_VERSION_Msk & ((value) << AESA_VERSION_VERSION_Pos)))\r
+#define AESA_VERSION_VARIANT_Pos    16\r
+#define AESA_VERSION_VARIANT_Msk    (0xFu << AESA_VERSION_VARIANT_Pos) /**< \brief (AESA_VERSION) Variant Number */\r
+#define AESA_VERSION_VARIANT(value) ((AESA_VERSION_VARIANT_Msk & ((value) << AESA_VERSION_VARIANT_Pos)))\r
+\r
+/*@}*/\r
+\r
+/* ============================================================================= */\r
+/**  SOFTWARE API DEFINITION FOR AST */\r
+/* ============================================================================= */\r
+/** \addtogroup SAM4L_AST Asynchronous Timer */\r
+/*@{*/\r
+\r
+#define REV_AST        0x311\r
+\r
+#ifndef __ASSEMBLY__\r
+/** \brief AST hardware registers */\r
+typedef struct {\r
+  RwReg   AST_CR;          /**< \brief (AST Offset: 0x00) Control Register */\r
+  RwReg   AST_CV;          /**< \brief (AST Offset: 0x04) Counter Value */\r
+  RoReg   AST_SR;          /**< \brief (AST Offset: 0x08) Status Register */\r
+  WoReg   AST_SCR;         /**< \brief (AST Offset: 0x0C) Status Clear Register */\r
+  WoReg   AST_IER;         /**< \brief (AST Offset: 0x10) Interrupt Enable Register */\r
+  WoReg   AST_IDR;         /**< \brief (AST Offset: 0x14) Interrupt Disable Register */\r
+  RoReg   AST_IMR;         /**< \brief (AST Offset: 0x18) Interrupt Mask Register */\r
+  RwReg   AST_WER;         /**< \brief (AST Offset: 0x1C) Wake Enable Register */\r
+  RwReg   AST_AR0;         /**< \brief (AST Offset: 0x20) Alarm Register 0 */\r
+  RwReg   AST_AR1;         /**< \brief (AST Offset: 0x24) Alarm Register 1 */\r
+  RoReg   Reserved1[2];\r
+  RwReg   AST_PIR0;        /**< \brief (AST Offset: 0x30) Periodic Interval Register 0 */\r
+  RwReg   AST_PIR1;        /**< \brief (AST Offset: 0x34) Periodic Interval Register 1 */\r
+  RoReg   Reserved2[2];\r
+  RwReg   AST_CLOCK;       /**< \brief (AST Offset: 0x40) Clock Control Register */\r
+  RwReg   AST_DTR;         /**< \brief (AST Offset: 0x44) Digital Tuner Register */\r
+  WoReg   AST_EVE;         /**< \brief (AST Offset: 0x48) Event Enable Register */\r
+  WoReg   AST_EVD;         /**< \brief (AST Offset: 0x4C) Event Disable Register */\r
+  RoReg   AST_EVM;         /**< \brief (AST Offset: 0x50) Event Mask Register */\r
+  RwReg   AST_CALV;        /**< \brief (AST Offset: 0x54) Calendar Value */\r
+  RoReg   Reserved3[38];\r
+  RoReg   AST_PARAMETER;   /**< \brief (AST Offset: 0xF0) Parameter Register */\r
+  RoReg   Reserved4[2];\r
+  RoReg   AST_VERSION;     /**< \brief (AST Offset: 0xFC) Version Register */\r
+} Ast;\r
+#endif /* __ASSEMBLY__ */\r
+/* -------- AST_CR : (AST Offset: 0x00) Control Register -------- */\r
+#define AST_CR_EN                   (0x1u <<  0) /**< \brief (AST_CR) Enable */\r
+#define   AST_CR_EN_0               (0x0u <<  0) /**< \brief (AST_CR) The AST is disabled. */\r
+#define   AST_CR_EN_1               (0x1u <<  0) /**< \brief (AST_CR) The AST is enabled */\r
+#define AST_CR_PCLR                 (0x1u <<  1) /**< \brief (AST_CR) Prescaler Clear */\r
+#define AST_CR_CAL                  (0x1u <<  2) /**< \brief (AST_CR) Calendar mode */\r
+#define AST_CR_CA0                  (0x1u <<  8) /**< \brief (AST_CR) Clear on Alarm 0 */\r
+#define AST_CR_CA1                  (0x1u <<  9) /**< \brief (AST_CR) Clear on Alarm 1 */\r
+#define AST_CR_PSEL_Pos             16\r
+#define AST_CR_PSEL_Msk             (0x1Fu << AST_CR_PSEL_Pos) /**< \brief (AST_CR) Prescaler Select */\r
+#define AST_CR_PSEL(value)          ((AST_CR_PSEL_Msk & ((value) << AST_CR_PSEL_Pos)))\r
+/* -------- AST_CV : (AST Offset: 0x04) Counter Value -------- */\r
+#define AST_CV_VALUE_Pos            0\r
+#define AST_CV_VALUE_Msk            (0xFFFFFFFFu << AST_CV_VALUE_Pos) /**< \brief (AST_CV) AST Value */\r
+#define AST_CV_VALUE(value)         ((AST_CV_VALUE_Msk & ((value) << AST_CV_VALUE_Pos)))\r
+/* -------- AST_SR : (AST Offset: 0x08) Status Register -------- */\r
+#define AST_SR_OVF                  (0x1u <<  0) /**< \brief (AST_SR) Overflow */\r
+#define AST_SR_ALARM0               (0x1u <<  8) /**< \brief (AST_SR) Alarm 0 */\r
+#define AST_SR_ALARM1               (0x1u <<  9) /**< \brief (AST_SR) Alarm 1 */\r
+#define AST_SR_PER0                 (0x1u << 16) /**< \brief (AST_SR) Periodic 0 */\r
+#define AST_SR_PER1                 (0x1u << 17) /**< \brief (AST_SR) Periodic 1 */\r
+#define AST_SR_BUSY                 (0x1u << 24) /**< \brief (AST_SR) AST Busy */\r
+#define   AST_SR_BUSY_0             (0x0u << 24) /**< \brief (AST_SR) The AST accepts writes to CV, WER, DTR, SCR, AR, PIR and CR */\r
+#define   AST_SR_BUSY_1             (0x1u << 24) /**< \brief (AST_SR) The AST is busy and will discard writes to CV, WER, DTR, SCR, AR, PIR and CR */\r
+#define AST_SR_READY                (0x1u << 25) /**< \brief (AST_SR) AST Ready */\r
+#define AST_SR_CLKBUSY              (0x1u << 28) /**< \brief (AST_SR) Clock Busy */\r
+#define   AST_SR_CLKBUSY_0          (0x0u << 28) /**< \brief (AST_SR) The clock is ready and can be changed */\r
+#define   AST_SR_CLKBUSY_1          (0x1u << 28) /**< \brief (AST_SR) CEN has been written and the clock is busy */\r
+#define AST_SR_CLKRDY               (0x1u << 29) /**< \brief (AST_SR) Clock Ready */\r
+/* -------- AST_SCR : (AST Offset: 0x0C) Status Clear Register -------- */\r
+#define AST_SCR_OVF                 (0x1u <<  0) /**< \brief (AST_SCR) Overflow */\r
+#define AST_SCR_ALARM0              (0x1u <<  8) /**< \brief (AST_SCR) Alarm 0 */\r
+#define AST_SCR_ALARM1              (0x1u <<  9) /**< \brief (AST_SCR) Alarm 1 */\r
+#define AST_SCR_PER0                (0x1u << 16) /**< \brief (AST_SCR) Periodic 0 */\r
+#define AST_SCR_PER1                (0x1u << 17) /**< \brief (AST_SCR) Periodic 1 */\r
+#define AST_SCR_READY               (0x1u << 25) /**< \brief (AST_SCR) AST Ready */\r
+#define AST_SCR_CLKRDY              (0x1u << 29) /**< \brief (AST_SCR) Clock Ready */\r
+/* -------- AST_IER : (AST Offset: 0x10) Interrupt Enable Register -------- */\r
+#define AST_IER_OVF                 (0x1u <<  0) /**< \brief (AST_IER) Overflow */\r
+#define   AST_IER_OVF_0             (0x0u <<  0) /**< \brief (AST_IER) No effect */\r
+#define   AST_IER_OVF_1             (0x1u <<  0) /**< \brief (AST_IER) Enable Interrupt. */\r
+#define AST_IER_ALARM0              (0x1u <<  8) /**< \brief (AST_IER) Alarm 0 */\r
+#define   AST_IER_ALARM0_0          (0x0u <<  8) /**< \brief (AST_IER) No effect */\r
+#define   AST_IER_ALARM0_1          (0x1u <<  8) /**< \brief (AST_IER) Enable interrupt */\r
+#define AST_IER_ALARM1              (0x1u <<  9) /**< \brief (AST_IER) Alarm 1 */\r
+#define   AST_IER_ALARM1_0          (0x0u <<  9) /**< \brief (AST_IER) No effect */\r
+#define   AST_IER_ALARM1_1          (0x1u <<  9) /**< \brief (AST_IER) Enable interrupt */\r
+#define AST_IER_PER0                (0x1u << 16) /**< \brief (AST_IER) Periodic 0 */\r
+#define   AST_IER_PER0_0            (0x0u << 16) /**< \brief (AST_IER) No effect */\r
+#define   AST_IER_PER0_1            (0x1u << 16) /**< \brief (AST_IER) Enable interrupt */\r
+#define AST_IER_PER1                (0x1u << 17) /**< \brief (AST_IER) Periodic 1 */\r
+#define   AST_IER_PER1_0            (0x0u << 17) /**< \brief (AST_IER) No effect */\r
+#define   AST_IER_PER1_1            (0x1u << 17) /**< \brief (AST_IER) Enable interrupt */\r
+#define AST_IER_READY               (0x1u << 25) /**< \brief (AST_IER) AST Ready */\r
+#define   AST_IER_READY_0           (0x0u << 25) /**< \brief (AST_IER) No effect */\r
+#define   AST_IER_READY_1           (0x1u << 25) /**< \brief (AST_IER) Enable interrupt */\r
+#define AST_IER_CLKRDY              (0x1u << 29) /**< \brief (AST_IER) Clock Ready */\r
+#define   AST_IER_CLKRDY_0          (0x0u << 29) /**< \brief (AST_IER) No effect */\r
+#define   AST_IER_CLKRDY_1          (0x1u << 29) /**< \brief (AST_IER) Enable interrupt */\r
+/* -------- AST_IDR : (AST Offset: 0x14) Interrupt Disable Register -------- */\r
+#define AST_IDR_OVF                 (0x1u <<  0) /**< \brief (AST_IDR) Overflow */\r
+#define   AST_IDR_OVF_0             (0x0u <<  0) /**< \brief (AST_IDR) No effect */\r
+#define   AST_IDR_OVF_1             (0x1u <<  0) /**< \brief (AST_IDR) Disable Interrupt. */\r
+#define AST_IDR_ALARM0              (0x1u <<  8) /**< \brief (AST_IDR) Alarm 0 */\r
+#define   AST_IDR_ALARM0_0          (0x0u <<  8) /**< \brief (AST_IDR) No effect */\r
+#define   AST_IDR_ALARM0_1          (0x1u <<  8) /**< \brief (AST_IDR) Disable interrupt */\r
+#define AST_IDR_ALARM1              (0x1u <<  9) /**< \brief (AST_IDR) Alarm 1 */\r
+#define   AST_IDR_ALARM1_0          (0x0u <<  9) /**< \brief (AST_IDR) No effect */\r
+#define   AST_IDR_ALARM1_1          (0x1u <<  9) /**< \brief (AST_IDR) Disable interrupt */\r
+#define AST_IDR_PER0                (0x1u << 16) /**< \brief (AST_IDR) Periodic 0 */\r
+#define   AST_IDR_PER0_0            (0x0u << 16) /**< \brief (AST_IDR) No effet */\r
+#define   AST_IDR_PER0_1            (0x1u << 16) /**< \brief (AST_IDR) Disalbe interrupt */\r
+#define AST_IDR_PER1                (0x1u << 17) /**< \brief (AST_IDR) Periodic 1 */\r
+#define   AST_IDR_PER1_0            (0x0u << 17) /**< \brief (AST_IDR) No effect */\r
+#define   AST_IDR_PER1_1            (0x1u << 17) /**< \brief (AST_IDR) Disable interrupt */\r
+#define AST_IDR_READY               (0x1u << 25) /**< \brief (AST_IDR) AST Ready */\r
+#define   AST_IDR_READY_0           (0x0u << 25) /**< \brief (AST_IDR) No effect */\r
+#define   AST_IDR_READY_1           (0x1u << 25) /**< \brief (AST_IDR) Disable interrupt */\r
+#define AST_IDR_CLKRDY              (0x1u << 29) /**< \brief (AST_IDR) Clock Ready */\r
+#define   AST_IDR_CLKRDY_0          (0x0u << 29) /**< \brief (AST_IDR) No effect */\r
+#define   AST_IDR_CLKRDY_1          (0x1u << 29) /**< \brief (AST_IDR) Disable interrupt */\r
+/* -------- AST_IMR : (AST Offset: 0x18) Interrupt Mask Register -------- */\r
+#define AST_IMR_OVF                 (0x1u <<  0) /**< \brief (AST_IMR) Overflow */\r
+#define   AST_IMR_OVF_0             (0x0u <<  0) /**< \brief (AST_IMR) Interrupt is disabled */\r
+#define   AST_IMR_OVF_1             (0x1u <<  0) /**< \brief (AST_IMR) Interrupt is enabled. */\r
+#define AST_IMR_ALARM0              (0x1u <<  8) /**< \brief (AST_IMR) Alarm 0 */\r
+#define   AST_IMR_ALARM0_0          (0x0u <<  8) /**< \brief (AST_IMR) Interupt is disabled */\r
+#define   AST_IMR_ALARM0_1          (0x1u <<  8) /**< \brief (AST_IMR) Interrupt is enabled */\r
+#define AST_IMR_ALARM1              (0x1u <<  9) /**< \brief (AST_IMR) Alarm 1 */\r
+#define   AST_IMR_ALARM1_0          (0x0u <<  9) /**< \brief (AST_IMR) Interrupt is disabled */\r
+#define   AST_IMR_ALARM1_1          (0x1u <<  9) /**< \brief (AST_IMR) Interrupt is enabled */\r
+#define AST_IMR_PER0                (0x1u << 16) /**< \brief (AST_IMR) Periodic 0 */\r
+#define   AST_IMR_PER0_0            (0x0u << 16) /**< \brief (AST_IMR) Interrupt is disabled */\r
+#define   AST_IMR_PER0_1            (0x1u << 16) /**< \brief (AST_IMR) Interrupt is enabled */\r
+#define AST_IMR_PER1                (0x1u << 17) /**< \brief (AST_IMR) Periodic 1 */\r
+#define   AST_IMR_PER1_0            (0x0u << 17) /**< \brief (AST_IMR) Interrupt is disabled */\r
+#define   AST_IMR_PER1_1            (0x1u << 17) /**< \brief (AST_IMR) Interrupt is enabled */\r
+#define AST_IMR_READY               (0x1u << 25) /**< \brief (AST_IMR) AST Ready */\r
+#define   AST_IMR_READY_0           (0x0u << 25) /**< \brief (AST_IMR) Interrupt is disabled */\r
+#define   AST_IMR_READY_1           (0x1u << 25) /**< \brief (AST_IMR) Interrupt is enabled */\r
+#define AST_IMR_CLKRDY              (0x1u << 29) /**< \brief (AST_IMR) Clock Ready */\r
+#define   AST_IMR_CLKRDY_0          (0x0u << 29) /**< \brief (AST_IMR) Interrupt is disabled */\r
+#define   AST_IMR_CLKRDY_1          (0x1u << 29) /**< \brief (AST_IMR) Interrupt is enabled */\r
+/* -------- AST_WER : (AST Offset: 0x1C) Wake Enable Register -------- */\r
+#define AST_WER_OVF                 (0x1u <<  0) /**< \brief (AST_WER) Overflow */\r
+#define   AST_WER_OVF_0             (0x0u <<  0) /**< \brief (AST_WER) The corresponing event will not wake up the CPU from sleep mode */\r
+#define   AST_WER_OVF_1             (0x1u <<  0) /**< \brief (AST_WER) The corresponding event will wake up the CPU from sleep mode */\r
+#define AST_WER_ALARM0              (0x1u <<  8) /**< \brief (AST_WER) Alarm 0 */\r
+#define   AST_WER_ALARM0_0          (0x0u <<  8) /**< \brief (AST_WER) The corresponing event will not wake up the CPU from sleep mode */\r
+#define   AST_WER_ALARM0_1          (0x1u <<  8) /**< \brief (AST_WER) The corresponding event will wake up the CPU from sleep mode */\r
+#define AST_WER_ALARM1              (0x1u <<  9) /**< \brief (AST_WER) Alarm 1 */\r
+#define   AST_WER_ALARM1_0          (0x0u <<  9) /**< \brief (AST_WER) The corresponing event will not wake up the CPU from sleep mode */\r
+#define   AST_WER_ALARM1_1          (0x1u <<  9) /**< \brief (AST_WER) The corresponding event will wake up the CPU from sleep mode */\r
+#define AST_WER_PER0                (0x1u << 16) /**< \brief (AST_WER) Periodic 0 */\r
+#define   AST_WER_PER0_0            (0x0u << 16) /**< \brief (AST_WER) The corresponing event will not wake up the CPU from sleep mode */\r
+#define   AST_WER_PER0_1            (0x1u << 16) /**< \brief (AST_WER) The corresponding event will wake up the CPU from sleep mode */\r
+#define AST_WER_PER1                (0x1u << 17) /**< \brief (AST_WER) Periodic 1 */\r
+#define   AST_WER_PER1_0            (0x0u << 17) /**< \brief (AST_WER) The corresponing event will not wake up the CPU from sleep mode */\r
+#define   AST_WER_PER1_1            (0x1u << 17) /**< \brief (AST_WER) The corresponding event will wake up the CPU from sleep mode */\r
+/* -------- AST_AR0 : (AST Offset: 0x20) Alarm Register 0 -------- */\r
+#define AST_AR0_VALUE_Pos           0\r
+#define AST_AR0_VALUE_Msk           (0xFFFFFFFFu << AST_AR0_VALUE_Pos) /**< \brief (AST_AR0) Alarm Value */\r
+#define AST_AR0_VALUE(value)        ((AST_AR0_VALUE_Msk & ((value) << AST_AR0_VALUE_Pos)))\r
+/* -------- AST_AR1 : (AST Offset: 0x24) Alarm Register 1 -------- */\r
+#define AST_AR1_VALUE_Pos           0\r
+#define AST_AR1_VALUE_Msk           (0xFFFFFFFFu << AST_AR1_VALUE_Pos) /**< \brief (AST_AR1) Alarm Value */\r
+#define AST_AR1_VALUE(value)        ((AST_AR1_VALUE_Msk & ((value) << AST_AR1_VALUE_Pos)))\r
+/* -------- AST_PIR0 : (AST Offset: 0x30) Periodic Interval Register 0 -------- */\r
+#define AST_PIR0_INSEL_Pos          0\r
+#define AST_PIR0_INSEL_Msk          (0x1Fu << AST_PIR0_INSEL_Pos) /**< \brief (AST_PIR0) Interval Select */\r
+#define AST_PIR0_INSEL(value)       ((AST_PIR0_INSEL_Msk & ((value) << AST_PIR0_INSEL_Pos)))\r
+/* -------- AST_PIR1 : (AST Offset: 0x34) Periodic Interval Register 1 -------- */\r
+#define AST_PIR1_INSEL_Pos          0\r
+#define AST_PIR1_INSEL_Msk          (0x1Fu << AST_PIR1_INSEL_Pos) /**< \brief (AST_PIR1) Interval Select */\r
+#define AST_PIR1_INSEL(value)       ((AST_PIR1_INSEL_Msk & ((value) << AST_PIR1_INSEL_Pos)))\r
+/* -------- AST_CLOCK : (AST Offset: 0x40) Clock Control Register -------- */\r
+#define AST_CLOCK_CEN               (0x1u <<  0) /**< \brief (AST_CLOCK) Clock Enable */\r
+#define   AST_CLOCK_CEN_0           (0x0u <<  0) /**< \brief (AST_CLOCK) The clock is disabled */\r
+#define   AST_CLOCK_CEN_1           (0x1u <<  0) /**< \brief (AST_CLOCK) The clock is enabled */\r
+#define AST_CLOCK_CSSEL_Pos         8\r
+#define AST_CLOCK_CSSEL_Msk         (0x7u << AST_CLOCK_CSSEL_Pos) /**< \brief (AST_CLOCK) Clock Source Selection */\r
+#define AST_CLOCK_CSSEL(value)      ((AST_CLOCK_CSSEL_Msk & ((value) << AST_CLOCK_CSSEL_Pos)))\r
+#define   AST_CLOCK_CSSEL_SLOWCLOCK (0x0u <<  8) /**< \brief (AST_CLOCK) Slow clock */\r
+#define   AST_CLOCK_CSSEL_32KHZCLK  (0x1u <<  8) /**< \brief (AST_CLOCK) 32 kHz clock */\r
+#define   AST_CLOCK_CSSEL_PBCLOCK   (0x2u <<  8) /**< \brief (AST_CLOCK) PB clock */\r
+#define   AST_CLOCK_CSSEL_GCLK      (0x3u <<  8) /**< \brief (AST_CLOCK) Generic clock */\r
+#define   AST_CLOCK_CSSEL_1KHZCLK   (0x4u <<  8) /**< \brief (AST_CLOCK) 1kHz clock from 32 kHz oscillator */\r
+/* -------- AST_DTR : (AST Offset: 0x44) Digital Tuner Register -------- */\r
+#define AST_DTR_EXP_Pos             0\r
+#define AST_DTR_EXP_Msk             (0x1Fu << AST_DTR_EXP_Pos) /**< \brief (AST_DTR) EXP */\r
+#define AST_DTR_EXP(value)          ((AST_DTR_EXP_Msk & ((value) << AST_DTR_EXP_Pos)))\r
+#define AST_DTR_ADD                 (0x1u <<  5) /**< \brief (AST_DTR) ADD */\r
+#define AST_DTR_VALUE_Pos           8\r
+#define AST_DTR_VALUE_Msk           (0xFFu << AST_DTR_VALUE_Pos) /**< \brief (AST_DTR) VALUE */\r
+#define AST_DTR_VALUE(value)        ((AST_DTR_VALUE_Msk & ((value) << AST_DTR_VALUE_Pos)))\r
+/* -------- AST_EVE : (AST Offset: 0x48) Event Enable Register -------- */\r
+#define AST_EVE_OVF                 (0x1u <<  0) /**< \brief (AST_EVE) Overflow */\r
+#define AST_EVE_ALARM0              (0x1u <<  8) /**< \brief (AST_EVE) Alarm 0 */\r
+#define AST_EVE_ALARM1              (0x1u <<  9) /**< \brief (AST_EVE) Alarm 1 */\r
+#define AST_EVE_PER0                (0x1u << 16) /**< \brief (AST_EVE) Perioidc 0 */\r
+#define AST_EVE_PER1                (0x1u << 17) /**< \brief (AST_EVE) Periodic 1 */\r
+/* -------- AST_EVD : (AST Offset: 0x4C) Event Disable Register -------- */\r
+#define AST_EVD_OVF                 (0x1u <<  0) /**< \brief (AST_EVD) Overflow */\r
+#define AST_EVD_ALARM0              (0x1u <<  8) /**< \brief (AST_EVD) Alarm 0 */\r
+#define AST_EVD_ALARM1              (0x1u <<  9) /**< \brief (AST_EVD) Alarm 1 */\r
+#define AST_EVD_PER0                (0x1u << 16) /**< \brief (AST_EVD) Perioidc 0 */\r
+#define AST_EVD_PER1                (0x1u << 17) /**< \brief (AST_EVD) Periodic 1 */\r
+/* -------- AST_EVM : (AST Offset: 0x50) Event Mask Register -------- */\r
+#define AST_EVM_OVF                 (0x1u <<  0) /**< \brief (AST_EVM) Overflow */\r
+#define AST_EVM_ALARM0              (0x1u <<  8) /**< \brief (AST_EVM) Alarm 0 */\r
+#define AST_EVM_ALARM1              (0x1u <<  9) /**< \brief (AST_EVM) Alarm 1 */\r
+#define AST_EVM_PER0                (0x1u << 16) /**< \brief (AST_EVM) Perioidc 0 */\r
+#define AST_EVM_PER1                (0x1u << 17) /**< \brief (AST_EVM) Periodic 1 */\r
+/* -------- AST_CALV : (AST Offset: 0x54) Calendar Value -------- */\r
+#define AST_CALV_SEC_Pos            0\r
+#define AST_CALV_SEC_Msk            (0x3Fu << AST_CALV_SEC_Pos) /**< \brief (AST_CALV) Second */\r
+#define AST_CALV_SEC(value)         ((AST_CALV_SEC_Msk & ((value) << AST_CALV_SEC_Pos)))\r
+#define AST_CALV_MIN_Pos            6\r
+#define AST_CALV_MIN_Msk            (0x3Fu << AST_CALV_MIN_Pos) /**< \brief (AST_CALV) Minute */\r
+#define AST_CALV_MIN(value)         ((AST_CALV_MIN_Msk & ((value) << AST_CALV_MIN_Pos)))\r
+#define AST_CALV_HOUR_Pos           12\r
+#define AST_CALV_HOUR_Msk           (0x1Fu << AST_CALV_HOUR_Pos) /**< \brief (AST_CALV) Hour */\r
+#define AST_CALV_HOUR(value)        ((AST_CALV_HOUR_Msk & ((value) << AST_CALV_HOUR_Pos)))\r
+#define AST_CALV_DAY_Pos            17\r
+#define AST_CALV_DAY_Msk            (0x1Fu << AST_CALV_DAY_Pos) /**< \brief (AST_CALV) Day */\r
+#define AST_CALV_DAY(value)         ((AST_CALV_DAY_Msk & ((value) << AST_CALV_DAY_Pos)))\r
+#define AST_CALV_MONTH_Pos          22\r
+#define AST_CALV_MONTH_Msk          (0xFu << AST_CALV_MONTH_Pos) /**< \brief (AST_CALV) Month */\r
+#define AST_CALV_MONTH(value)       ((AST_CALV_MONTH_Msk & ((value) << AST_CALV_MONTH_Pos)))\r
+#define AST_CALV_YEAR_Pos           26\r
+#define AST_CALV_YEAR_Msk           (0x3Fu << AST_CALV_YEAR_Pos) /**< \brief (AST_CALV) Year */\r
+#define AST_CALV_YEAR(value)        ((AST_CALV_YEAR_Msk & ((value) << AST_CALV_YEAR_Pos)))\r
+/* -------- AST_PARAMETER : (AST Offset: 0xF0) Parameter Register -------- */\r
+#define AST_PARAMETER_DT            (0x1u <<  0) /**< \brief (AST_PARAMETER) Digital Tuner */\r
+#define   AST_PARAMETER_DT_OFF      (0x0u <<  0) /**< \brief (AST_PARAMETER) Digital tuner off */\r
+#define   AST_PARAMETER_DT_ON       (0x1u <<  0) /**< \brief (AST_PARAMETER) Digital tuner on */\r
+#define AST_PARAMETER_DTEXPWA       (0x1u <<  1) /**< \brief (AST_PARAMETER) Digital Tuner Exponent Writeable */\r
+#define   AST_PARAMETER_DTEXPWA_0   (0x0u <<  1) /**< \brief (AST_PARAMETER) Digital tuner exponent is a constant value. Writes to EXP bitfield in DTR will be discarded. */\r
+#define   AST_PARAMETER_DTEXPWA_1   (0x1u <<  1) /**< \brief (AST_PARAMETER) Digital tuner exponent is chosen by writing to EXP bitfield in DTR */\r
+#define AST_PARAMETER_DTEXPVALUE_Pos    2\r
+#define AST_PARAMETER_DTEXPVALUE_Msk    (0x1Fu << AST_PARAMETER_DTEXPVALUE_Pos) /**< \brief (AST_PARAMETER) Digital Tuner Exponent Value */\r
+#define AST_PARAMETER_DTEXPVALUE(value) ((AST_PARAMETER_DTEXPVALUE_Msk & ((value) << AST_PARAMETER_DTEXPVALUE_Pos)))\r
+#define AST_PARAMETER_NUMAR_Pos     8\r
+#define AST_PARAMETER_NUMAR_Msk     (0x3u << AST_PARAMETER_NUMAR_Pos) /**< \brief (AST_PARAMETER) Number of alarm comparators */\r
+#define AST_PARAMETER_NUMAR(value)  ((AST_PARAMETER_NUMAR_Msk & ((value) << AST_PARAMETER_NUMAR_Pos)))\r
+#define   AST_PARAMETER_NUMAR_ZERO  (0x0u <<  8) /**< \brief (AST_PARAMETER) No alarm comparators */\r
+#define   AST_PARAMETER_NUMAR_ONE   (0x1u <<  8) /**< \brief (AST_PARAMETER) One alarm comparator */\r
+#define   AST_PARAMETER_NUMAR_TWO   (0x2u <<  8) /**< \brief (AST_PARAMETER) Two alarm comparators */\r
+#define AST_PARAMETER_NUMPIR        (0x1u << 12) /**< \brief (AST_PARAMETER) Number of periodic comparators */\r
+#define   AST_PARAMETER_NUMPIR_ONE  (0x0u << 12) /**< \brief (AST_PARAMETER) One periodic comparator */\r
+#define   AST_PARAMETER_NUMPIR_TWO  (0x1u << 12) /**< \brief (AST_PARAMETER) Two periodic comparators */\r
+#define AST_PARAMETER_PIR0WA        (0x1u << 14) /**< \brief (AST_PARAMETER) Periodic Interval 0 Writeable */\r
+#define   AST_PARAMETER_PIR0WA_0    (0x0u << 14) /**< \brief (AST_PARAMETER) Periodic alarm prescaler 0 tapping is a constant value. Writes to INSEL bitfield in PIR0 will be discarded. */\r
+#define   AST_PARAMETER_PIR0WA_1    (0x1u << 14) /**< \brief (AST_PARAMETER) Periodic alarm prescaler 0 tapping is chosen by writing to INSEL bitfield in PIR0 */\r
+#define AST_PARAMETER_PIR1WA        (0x1u << 15) /**< \brief (AST_PARAMETER) Periodic Interval 1 Writeable */\r
+#define   AST_PARAMETER_PIR1WA_0    (0x0u << 15) /**< \brief (AST_PARAMETER) Writes to PIR1 will be discarded */\r
+#define   AST_PARAMETER_PIR1WA_1    (0x1u << 15) /**< \brief (AST_PARAMETER) PIR1 can be written */\r
+#define AST_PARAMETER_PER0VALUE_Pos    16\r
+#define AST_PARAMETER_PER0VALUE_Msk    (0x1Fu << AST_PARAMETER_PER0VALUE_Pos) /**< \brief (AST_PARAMETER) Periodic Interval 0 Value */\r
+#define AST_PARAMETER_PER0VALUE(value) ((AST_PARAMETER_PER0VALUE_Msk & ((value) << AST_PARAMETER_PER0VALUE_Pos)))\r
+#define AST_PARAMETER_PER1VALUE_Pos    24\r
+#define AST_PARAMETER_PER1VALUE_Msk    (0x1Fu << AST_PARAMETER_PER1VALUE_Pos) /**< \brief (AST_PARAMETER) Periodic Interval 1 Value */\r
+#define AST_PARAMETER_PER1VALUE(value) ((AST_PARAMETER_PER1VALUE_Msk & ((value) << AST_PARAMETER_PER1VALUE_Pos)))\r
+/* -------- AST_VERSION : (AST Offset: 0xFC) Version Register -------- */\r
+#define AST_VERSION_VERSION_Pos     0\r
+#define AST_VERSION_VERSION_Msk     (0xFFFu << AST_VERSION_VERSION_Pos) /**< \brief (AST_VERSION) Version Number */\r
+#define AST_VERSION_VERSION(value)  ((AST_VERSION_VERSION_Msk & ((value) << AST_VERSION_VERSION_Pos)))\r
+#define AST_VERSION_VARIANT_Pos     16\r
+#define AST_VERSION_VARIANT_Msk     (0xFu << AST_VERSION_VARIANT_Pos) /**< \brief (AST_VERSION) Variant Number */\r
+#define AST_VERSION_VARIANT(value)  ((AST_VERSION_VARIANT_Msk & ((value) << AST_VERSION_VARIANT_Pos)))\r
+\r
+/*@}*/\r
+\r
+/* ============================================================================= */\r
+/**  SOFTWARE API DEFINITION FOR BPM */\r
+/* ============================================================================= */\r
+/** \addtogroup SAM4L_BPM Backup Power Manager */\r
+/*@{*/\r
+\r
+#define REV_BPM        0x120\r
+\r
+#ifndef __ASSEMBLY__\r
+/** \brief BPM hardware registers */\r
+typedef struct {\r
+  WoReg   BPM_IER;         /**< \brief (BPM Offset: 0x00) Interrupt Enable Register */\r
+  WoReg   BPM_IDR;         /**< \brief (BPM Offset: 0x04) Interrupt Disable Register */\r
+  RoReg   BPM_IMR;         /**< \brief (BPM Offset: 0x08) Interrupt Mask Register */\r
+  RoReg   BPM_ISR;         /**< \brief (BPM Offset: 0x0C) Interrupt Status Register */\r
+  WoReg   BPM_ICR;         /**< \brief (BPM Offset: 0x10) Interrupt Clear Register */\r
+  RoReg   BPM_SR;          /**< \brief (BPM Offset: 0x14) Status Register */\r
+  WoReg   BPM_UNLOCK;      /**< \brief (BPM Offset: 0x18) Unlock Register */\r
+  RwReg   BPM_PMCON;       /**< \brief (BPM Offset: 0x1C) Power Mode Control Register */\r
+  RoReg   Reserved1[2];\r
+  RoReg   BPM_BKUPWCAUSE;  /**< \brief (BPM Offset: 0x28) Backup Wake up Cause Register */\r
+  RwReg   BPM_BKUPWEN;     /**< \brief (BPM Offset: 0x2C) Backup Wake up Enable Register */\r
+  RwReg   BPM_BKUPPMUX;    /**< \brief (BPM Offset: 0x30) Backup Pin Muxing Register */\r
+  RwReg   BPM_IORET;       /**< \brief (BPM Offset: 0x34) Input Output Retention Register */\r
+  RoReg   Reserved2[2];\r
+  RwReg   BPM_BPR;         /**< \brief (BPM Offset: 0x40) Bypass Register */\r
+  RoReg   BPM_FWRUNPS;     /**< \brief (BPM Offset: 0x44) Factory Word Run PS Register */\r
+  RoReg   BPM_FWPSAVEPS;   /**< \brief (BPM Offset: 0x48) Factory Word Power Save PS Register */\r
+  RoReg   Reserved3[44];\r
+  RoReg   BPM_VERSION;     /**< \brief (BPM Offset: 0xFC) Version Register */\r
+} Bpm;\r
+#endif /* __ASSEMBLY__ */\r
+/* -------- BPM_IER : (BPM Offset: 0x00) Interrupt Enable Register -------- */\r
+#define BPM_IER_PSOK                (0x1u <<  0) /**< \brief (BPM_IER) Power Scaling OK Interrupt Enable */\r
+#define BPM_IER_AE                  (0x1u << 31) /**< \brief (BPM_IER) Access Error Interrupt Enable */\r
+/* -------- BPM_IDR : (BPM Offset: 0x04) Interrupt Disable Register -------- */\r
+#define BPM_IDR_PSOK                (0x1u <<  0) /**< \brief (BPM_IDR) Power Scaling OK Interrupt Disable */\r
+#define BPM_IDR_AE                  (0x1u << 31) /**< \brief (BPM_IDR) Access Error Interrupt Disable */\r
+/* -------- BPM_IMR : (BPM Offset: 0x08) Interrupt Mask Register -------- */\r
+#define BPM_IMR_PSOK                (0x1u <<  0) /**< \brief (BPM_IMR) Power Scaling OK Interrupt Mask */\r
+#define BPM_IMR_AE                  (0x1u << 31) /**< \brief (BPM_IMR) Access Error Interrupt Mask */\r
+/* -------- BPM_ISR : (BPM Offset: 0x0C) Interrupt Status Register -------- */\r
+#define BPM_ISR_PSOK                (0x1u <<  0) /**< \brief (BPM_ISR) Power Scaling OK Interrupt Status */\r
+#define BPM_ISR_AE                  (0x1u << 31) /**< \brief (BPM_ISR) Access Error Interrupt Status */\r
+/* -------- BPM_ICR : (BPM Offset: 0x10) Interrupt Clear Register -------- */\r
+#define BPM_ICR_PSOK                (0x1u <<  0) /**< \brief (BPM_ICR) Power Scaling OK Interrupt Status Clear */\r
+#define BPM_ICR_AE                  (0x1u << 31) /**< \brief (BPM_ICR) Access Error Interrupt Status Clear */\r
+/* -------- BPM_SR : (BPM Offset: 0x14) Status Register -------- */\r
+#define BPM_SR_PSOK                 (0x1u <<  0) /**< \brief (BPM_SR) Power Scaling OK Status */\r
+/* -------- BPM_UNLOCK : (BPM Offset: 0x18) Unlock Register -------- */\r
+#define BPM_UNLOCK_ADDR_Pos         0\r
+#define BPM_UNLOCK_ADDR_Msk         (0x3FFu << BPM_UNLOCK_ADDR_Pos) /**< \brief (BPM_UNLOCK) Unlock Address */\r
+#define BPM_UNLOCK_ADDR(value)      ((BPM_UNLOCK_ADDR_Msk & ((value) << BPM_UNLOCK_ADDR_Pos)))\r
+#define BPM_UNLOCK_KEY_Pos          24\r
+#define BPM_UNLOCK_KEY_Msk          (0xFFu << BPM_UNLOCK_KEY_Pos) /**< \brief (BPM_UNLOCK) Unlock Key */\r
+#define BPM_UNLOCK_KEY(value)       ((BPM_UNLOCK_KEY_Msk & ((value) << BPM_UNLOCK_KEY_Pos)))\r
+/* -------- BPM_PMCON : (BPM Offset: 0x1C) Power Mode Control Register -------- */\r
+#define BPM_PMCON_PS_Pos            0\r
+#define BPM_PMCON_PS_Msk            (0x3u << BPM_PMCON_PS_Pos) /**< \brief (BPM_PMCON) Power Scaling Configuration Value */\r
+#define BPM_PMCON_PS(value)         ((BPM_PMCON_PS_Msk & ((value) << BPM_PMCON_PS_Pos)))\r
+#define BPM_PMCON_PSCREQ            (0x1u <<  2) /**< \brief (BPM_PMCON) Power Scaling Change Request */\r
+#define BPM_PMCON_PSCM              (0x1u <<  3) /**< \brief (BPM_PMCON) Power Scaling Change Mode */\r
+#define BPM_PMCON_BKUP              (0x1u <<  8) /**< \brief (BPM_PMCON) BACKUP Mode */\r
+#define BPM_PMCON_RET               (0x1u <<  9) /**< \brief (BPM_PMCON) RETENTION Mode */\r
+#define BPM_PMCON_SLEEP_Pos         12\r
+#define BPM_PMCON_SLEEP_Msk         (0x3u << BPM_PMCON_SLEEP_Pos) /**< \brief (BPM_PMCON) SLEEP mode Configuration */\r
+#define BPM_PMCON_SLEEP(value)      ((BPM_PMCON_SLEEP_Msk & ((value) << BPM_PMCON_SLEEP_Pos)))\r
+#define BPM_PMCON_CK32S             (0x1u << 16) /**< \brief (BPM_PMCON) 32Khz-1Khz Clock Source Selection */\r
+#define BPM_PMCON_FASTWKUP          (0x1u << 24) /**< \brief (BPM_PMCON) Fast Wakeup */\r
+/* -------- BPM_BKUPPMUX : (BPM Offset: 0x30) Backup Pin Muxing Register -------- */\r
+#define BPM_BKUPPMUX_BKUPPMUX_Pos    0\r
+#define BPM_BKUPPMUX_BKUPPMUX_Msk    (0x1FFu << BPM_BKUPPMUX_BKUPPMUX_Pos) /**< \brief (BPM_BKUPPMUX) Backup Pin Muxing */\r
+#define BPM_BKUPPMUX_BKUPPMUX(value) ((BPM_BKUPPMUX_BKUPPMUX_Msk & ((value) << BPM_BKUPPMUX_BKUPPMUX_Pos)))\r
+/* -------- BPM_IORET : (BPM Offset: 0x34) Input Output Retention Register -------- */\r
+#define BPM_IORET_RET               (0x1u <<  0) /**< \brief (BPM_IORET) Retention on I/O lines after waking up from the BACKUP mode */\r
+/* -------- BPM_BPR : (BPM Offset: 0x40) Bypass Register -------- */\r
+#define BPM_BPR_RUNPSPB             (0x1u <<  0) /**< \brief (BPM_BPR) Run Mode Power Scaling Preset Bypass */\r
+#define BPM_BPR_PSMPSPB             (0x1u <<  1) /**< \brief (BPM_BPR) Power Save Mode Power Scaling Preset Bypass */\r
+#define BPM_BPR_SEQSTN              (0x1u <<  2) /**< \brief (BPM_BPR) Sequencial Startup from ULP (Active Low) */\r
+#define BPM_BPR_PSBTD               (0x1u <<  3) /**< \brief (BPM_BPR) Power Scaling Bias Timing Disable */\r
+#define BPM_BPR_PSHFD               (0x1u <<  4) /**< \brief (BPM_BPR) Power Scaling Halt Flash Until VREGOK Disable */\r
+#define BPM_BPR_DLYRSTD             (0x1u <<  5) /**< \brief (BPM_BPR) Delaying Reset Disable */\r
+#define BPM_BPR_BIASSEN             (0x1u <<  6) /**< \brief (BPM_BPR) Bias Switch Enable */\r
+#define BPM_BPR_LATSEN              (0x1u <<  7) /**< \brief (BPM_BPR) Latdel Switch Enable */\r
+#define BPM_BPR_BOD18CONT           (0x1u <<  8) /**< \brief (BPM_BPR) BOD18 in continuous mode not disabled in WAIT/RET/BACKUP modes */\r
+#define BPM_BPR_POBS                (0x1u <<  9) /**< \brief (BPM_BPR) Pico Uart Observability */\r
+#define BPM_BPR_FFFW                (0x1u << 10) /**< \brief (BPM_BPR) Force Flash Fast Wakeup */\r
+#define BPM_BPR_FBRDYEN             (0x1u << 11) /**< \brief (BPM_BPR) Flash Bias Ready Enable */\r
+#define BPM_BPR_FVREFSEN            (0x1u << 12) /**< \brief (BPM_BPR) Flash Vref Switch Enable */\r
+/* -------- BPM_FWRUNPS : (BPM Offset: 0x44) Factory Word Run PS Register -------- */\r
+#define BPM_FWRUNPS_REGLEVEL_Pos    0\r
+#define BPM_FWRUNPS_REGLEVEL_Msk    (0xFu << BPM_FWRUNPS_REGLEVEL_Pos) /**< \brief (BPM_FWRUNPS) Regulator Voltage Level */\r
+#define BPM_FWRUNPS_REGLEVEL(value) ((BPM_FWRUNPS_REGLEVEL_Msk & ((value) << BPM_FWRUNPS_REGLEVEL_Pos)))\r
+#define BPM_FWRUNPS_REGTYPE_Pos     4\r
+#define BPM_FWRUNPS_REGTYPE_Msk     (0x3u << BPM_FWRUNPS_REGTYPE_Pos) /**< \brief (BPM_FWRUNPS) Regulator Type */\r
+#define BPM_FWRUNPS_REGTYPE(value)  ((BPM_FWRUNPS_REGTYPE_Msk & ((value) << BPM_FWRUNPS_REGTYPE_Pos)))\r
+#define   BPM_FWRUNPS_REGTYPE_NORMAL (0x0u <<  4) /**< \brief (BPM_FWRUNPS)  */\r
+#define   BPM_FWRUNPS_REGTYPE_LP    (0x1u <<  4) /**< \brief (BPM_FWRUNPS)  */\r
+#define   BPM_FWRUNPS_REGTYPE_XULP  (0x2u <<  4) /**< \brief (BPM_FWRUNPS)  */\r
+#define BPM_FWRUNPS_REFTYPE_Pos     6\r
+#define BPM_FWRUNPS_REFTYPE_Msk     (0x3u << BPM_FWRUNPS_REFTYPE_Pos) /**< \brief (BPM_FWRUNPS) Reference Type */\r
+#define BPM_FWRUNPS_REFTYPE(value)  ((BPM_FWRUNPS_REFTYPE_Msk & ((value) << BPM_FWRUNPS_REFTYPE_Pos)))\r
+#define   BPM_FWRUNPS_REFTYPE_BOTH  (0x0u <<  6) /**< \brief (BPM_FWRUNPS)  */\r
+#define   BPM_FWRUNPS_REFTYPE_BG    (0x1u <<  6) /**< \brief (BPM_FWRUNPS)  */\r
+#define   BPM_FWRUNPS_REFTYPE_LPBG  (0x2u <<  6) /**< \brief (BPM_FWRUNPS)  */\r
+#define   BPM_FWRUNPS_REFTYPE_INTERNAL (0x3u <<  6) /**< \brief (BPM_FWRUNPS)  */\r
+#define BPM_FWRUNPS_FLASHLATDEL_Pos    8\r
+#define BPM_FWRUNPS_FLASHLATDEL_Msk    (0x1Fu << BPM_FWRUNPS_FLASHLATDEL_Pos) /**< \brief (BPM_FWRUNPS) Flash Latch Delay Value */\r
+#define BPM_FWRUNPS_FLASHLATDEL(value) ((BPM_FWRUNPS_FLASHLATDEL_Msk & ((value) << BPM_FWRUNPS_FLASHLATDEL_Pos)))\r
+#define BPM_FWRUNPS_FLASHBIAS_Pos    13\r
+#define BPM_FWRUNPS_FLASHBIAS_Msk    (0xFu << BPM_FWRUNPS_FLASHBIAS_Pos) /**< \brief (BPM_FWRUNPS) Flash Bias Value */\r
+#define BPM_FWRUNPS_FLASHBIAS(value) ((BPM_FWRUNPS_FLASHBIAS_Msk & ((value) << BPM_FWRUNPS_FLASHBIAS_Pos)))\r
+#define BPM_FWRUNPS_FPPW            (0x1u << 17) /**< \brief (BPM_FWRUNPS) Flash Pico Power Mode */\r
+#define BPM_FWRUNPS_RC115_Pos       18\r
+#define BPM_FWRUNPS_RC115_Msk       (0x7Fu << BPM_FWRUNPS_RC115_Pos) /**< \brief (BPM_FWRUNPS) RC 115KHZ Calibration Value */\r
+#define BPM_FWRUNPS_RC115(value)    ((BPM_FWRUNPS_RC115_Msk & ((value) << BPM_FWRUNPS_RC115_Pos)))\r
+#define BPM_FWRUNPS_RCFAST_Pos      25\r
+#define BPM_FWRUNPS_RCFAST_Msk      (0x7Fu << BPM_FWRUNPS_RCFAST_Pos) /**< \brief (BPM_FWRUNPS) RCFAST Calibration Value */\r
+#define BPM_FWRUNPS_RCFAST(value)   ((BPM_FWRUNPS_RCFAST_Msk & ((value) << BPM_FWRUNPS_RCFAST_Pos)))\r
+/* -------- BPM_FWPSAVEPS : (BPM Offset: 0x48) Factory Word Power Save PS Register -------- */\r
+#define BPM_FWPSAVEPS_WREGLEVEL_Pos    0\r
+#define BPM_FWPSAVEPS_WREGLEVEL_Msk    (0xFu << BPM_FWPSAVEPS_WREGLEVEL_Pos) /**< \brief (BPM_FWPSAVEPS) Wait mode Regulator Level */\r
+#define BPM_FWPSAVEPS_WREGLEVEL(value) ((BPM_FWPSAVEPS_WREGLEVEL_Msk & ((value) << BPM_FWPSAVEPS_WREGLEVEL_Pos)))\r
+#define BPM_FWPSAVEPS_WBIAS_Pos     4\r
+#define BPM_FWPSAVEPS_WBIAS_Msk     (0xFu << BPM_FWPSAVEPS_WBIAS_Pos) /**< \brief (BPM_FWPSAVEPS) Bias in wait mode */\r
+#define BPM_FWPSAVEPS_WBIAS(value)  ((BPM_FWPSAVEPS_WBIAS_Msk & ((value) << BPM_FWPSAVEPS_WBIAS_Pos)))\r
+#define BPM_FWPSAVEPS_WLATDEL_Pos    8\r
+#define BPM_FWPSAVEPS_WLATDEL_Msk    (0x1Fu << BPM_FWPSAVEPS_WLATDEL_Pos) /**< \brief (BPM_FWPSAVEPS) Flash Latdel in wait mode */\r
+#define BPM_FWPSAVEPS_WLATDEL(value) ((BPM_FWPSAVEPS_WLATDEL_Msk & ((value) << BPM_FWPSAVEPS_WLATDEL_Pos)))\r
+#define BPM_FWPSAVEPS_RREGLEVEL_Pos    13\r
+#define BPM_FWPSAVEPS_RREGLEVEL_Msk    (0xFu << BPM_FWPSAVEPS_RREGLEVEL_Pos) /**< \brief (BPM_FWPSAVEPS) Retention mode Regulator Level */\r
+#define BPM_FWPSAVEPS_RREGLEVEL(value) ((BPM_FWPSAVEPS_RREGLEVEL_Msk & ((value) << BPM_FWPSAVEPS_RREGLEVEL_Pos)))\r
+#define BPM_FWPSAVEPS_RBIAS_Pos     17\r
+#define BPM_FWPSAVEPS_RBIAS_Msk     (0xFu << BPM_FWPSAVEPS_RBIAS_Pos) /**< \brief (BPM_FWPSAVEPS) Bias in Retention mode */\r
+#define BPM_FWPSAVEPS_RBIAS(value)  ((BPM_FWPSAVEPS_RBIAS_Msk & ((value) << BPM_FWPSAVEPS_RBIAS_Pos)))\r
+#define BPM_FWPSAVEPS_RLATDEL_Pos    21\r
+#define BPM_FWPSAVEPS_RLATDEL_Msk    (0x1Fu << BPM_FWPSAVEPS_RLATDEL_Pos) /**< \brief (BPM_FWPSAVEPS) Flash Latdel in Retention mode */\r
+#define BPM_FWPSAVEPS_RLATDEL(value) ((BPM_FWPSAVEPS_RLATDEL_Msk & ((value) << BPM_FWPSAVEPS_RLATDEL_Pos)))\r
+#define BPM_FWPSAVEPS_BREGLEVEL_Pos    26\r
+#define BPM_FWPSAVEPS_BREGLEVEL_Msk    (0xFu << BPM_FWPSAVEPS_BREGLEVEL_Pos) /**< \brief (BPM_FWPSAVEPS) Backup mode Regulator Level */\r
+#define BPM_FWPSAVEPS_BREGLEVEL(value) ((BPM_FWPSAVEPS_BREGLEVEL_Msk & ((value) << BPM_FWPSAVEPS_BREGLEVEL_Pos)))\r
+#define BPM_FWPSAVEPS_POR18DIS      (0x1u << 30) /**< \brief (BPM_FWPSAVEPS) POR 18 Disable */\r
+#define BPM_FWPSAVEPS_FWSAS         (0x1u << 31) /**< \brief (BPM_FWPSAVEPS) Flash Wait State Automatic Switching */\r
+/* -------- BPM_VERSION : (BPM Offset: 0xFC) Version Register -------- */\r
+#define BPM_VERSION_VERSION_Pos     0\r
+#define BPM_VERSION_VERSION_Msk     (0xFFFu << BPM_VERSION_VERSION_Pos) /**< \brief (BPM_VERSION) Version Number */\r
+#define BPM_VERSION_VERSION(value)  ((BPM_VERSION_VERSION_Msk & ((value) << BPM_VERSION_VERSION_Pos)))\r
+#define BPM_VERSION_VARIANT_Pos     16\r
+#define BPM_VERSION_VARIANT_Msk     (0xFu << BPM_VERSION_VARIANT_Pos) /**< \brief (BPM_VERSION) Variant Number */\r
+#define BPM_VERSION_VARIANT(value)  ((BPM_VERSION_VARIANT_Msk & ((value) << BPM_VERSION_VARIANT_Pos)))\r
+\r
+/*@}*/\r
+\r
+/* ============================================================================= */\r
+/**  SOFTWARE API DEFINITION FOR BSCIF */\r
+/* ============================================================================= */\r
+/** \addtogroup SAM4L_BSCIF Backup System Control Interface */\r
+/*@{*/\r
+\r
+#define REV_BSCIF      0x100\r
+\r
+#ifndef __ASSEMBLY__\r
+/** \brief BscifBr hardware registers */\r
+typedef struct {\r
+  RwReg   BSCIF_BR;    /**< \brief (BscifBr Offset: 0x000) Backup Register */\r
+} BscifBr;\r
+/** \brief BSCIF hardware registers */\r
+typedef struct {\r
+  WoReg   BSCIF_IER;         /**< \brief (BSCIF Offset: 0x000) Interrupt Enable Register */\r
+  WoReg   BSCIF_IDR;         /**< \brief (BSCIF Offset: 0x004) Interrupt Disable Register */\r
+  RoReg   BSCIF_IMR;         /**< \brief (BSCIF Offset: 0x008) Interrupt Mask Register */\r
+  RoReg   BSCIF_ISR;         /**< \brief (BSCIF Offset: 0x00C) Interrupt Status Register */\r
+  WoReg   BSCIF_ICR;         /**< \brief (BSCIF Offset: 0x010) Interrupt Clear Register */\r
+  RoReg   BSCIF_PCLKSR;      /**< \brief (BSCIF Offset: 0x014) Power and Clocks Status Register */\r
+  WoReg   BSCIF_UNLOCK;      /**< \brief (BSCIF Offset: 0x018) Unlock Register */\r
+  RwReg   BSCIF_CSCR;        /**< \brief (BSCIF Offset: 0x01C) Chip Specific Configuration Register */\r
+  RwReg   BSCIF_OSCCTRL32;   /**< \brief (BSCIF Offset: 0x020) Oscillator 32 Control Register */\r
+  RwReg   BSCIF_RC32KCR;     /**< \brief (BSCIF Offset: 0x024) 32 kHz RC Oscillator Control Register */\r
+  RwReg   BSCIF_RC32KTUNE;   /**< \brief (BSCIF Offset: 0x028) 32kHz RC Oscillator Tuning Register */\r
+  RwReg   BSCIF_BOD33CTRL;   /**< \brief (BSCIF Offset: 0x02C) BOD33 Control Register */\r
+  RwReg   BSCIF_BOD33LEVEL;  /**< \brief (BSCIF Offset: 0x030) BOD33 Level Register */\r
+  RwReg   BSCIF_BOD33SAMPLING; /**< \brief (BSCIF Offset: 0x034) BOD33 Sampling Control Register */\r
+  RwReg   BSCIF_BOD18CTRL;   /**< \brief (BSCIF Offset: 0x038) BOD18 Control Register */\r
+  RwReg   BSCIF_BOD18LEVEL;  /**< \brief (BSCIF Offset: 0x03C) BOD18 Level Register */\r
+  RoReg   Reserved1[1];\r
+  RwReg   BSCIF_VREGCR;      /**< \brief (BSCIF Offset: 0x044) Voltage Regulator Configuration Register */\r
+  RoReg   Reserved2[1];\r
+  RwReg   BSCIF_VREGNCSR;    /**< \brief (BSCIF Offset: 0x04C) Normal Mode Control and Status Register */\r
+  RwReg   BSCIF_VREGLPCSR;   /**< \brief (BSCIF Offset: 0x050) LP Mode Control and Status Register */\r
+  RoReg   Reserved3[1];\r
+  RwReg   BSCIF_RC1MCR;      /**< \brief (BSCIF Offset: 0x058) 1MHz RC Clock Configuration Register */\r
+  RwReg   BSCIF_BGCR;        /**< \brief (BSCIF Offset: 0x05C) Bandgap Calibration Register */\r
+  RwReg   BSCIF_BGCTRL;      /**< \brief (BSCIF Offset: 0x060) Bandgap Control Register */\r
+  RoReg   BSCIF_BGSR;        /**< \brief (BSCIF Offset: 0x064) Bandgap Status Register */\r
+  RoReg   Reserved4[4];\r
+  BscifBr BSCIF_BR[4]; /**< \brief (BSCIF Offset: 0x078) BscifBr groups */\r
+  RoReg   Reserved5[215];\r
+  RoReg   BSCIF_BRIFBVERSION; /**< \brief (BSCIF Offset: 0x3E4) Backup Register Interface Version Register */\r
+  RoReg   BSCIF_BGREFIFBVERSION; /**< \brief (BSCIF Offset: 0x3E8) BGREFIFB Version Register */\r
+  RoReg   BSCIF_VREGIFGVERSION; /**< \brief (BSCIF Offset: 0x3EC) VREGIFA Version Register */\r
+  RoReg   BSCIF_BODIFCVERSION; /**< \brief (BSCIF Offset: 0x3F0) BODIFC Version Register */\r
+  RoReg   BSCIF_RC32KIFBVERSION; /**< \brief (BSCIF Offset: 0x3F4) 32 kHz RC Oscillator Version Register */\r
+  RoReg   BSCIF_OSC32IFAVERSION; /**< \brief (BSCIF Offset: 0x3F8) 32 KHz Oscillator Version Register */\r
+  RoReg   BSCIF_VERSION;     /**< \brief (BSCIF Offset: 0x3FC) BSCIF Version Register */\r
+} Bscif;\r
+#endif /* __ASSEMBLY__ */\r
+/* -------- BSCIF_IER : (BSCIF Offset: 0x000) Interrupt Enable Register -------- */\r
+#define BSCIF_IER_OSC32RDY          (0x1u <<  0) /**< \brief (BSCIF_IER)  */\r
+#define BSCIF_IER_RC32KRDY          (0x1u <<  1) /**< \brief (BSCIF_IER)  */\r
+#define BSCIF_IER_RC32KLOCK         (0x1u <<  2) /**< \brief (BSCIF_IER)  */\r
+#define BSCIF_IER_RC32KREFE         (0x1u <<  3) /**< \brief (BSCIF_IER)  */\r
+#define BSCIF_IER_RC32KSAT          (0x1u <<  4) /**< \brief (BSCIF_IER)  */\r
+#define BSCIF_IER_BOD33DET          (0x1u <<  5) /**< \brief (BSCIF_IER) BOD33 Detected */\r
+#define BSCIF_IER_BOD18DET          (0x1u <<  6) /**< \brief (BSCIF_IER) BOD18 Detected */\r
+#define BSCIF_IER_BOD33SYNRDY       (0x1u <<  7) /**< \brief (BSCIF_IER) BOD33 Synchronization Ready */\r
+#define BSCIF_IER_BOD18SYNRDY       (0x1u <<  8) /**< \brief (BSCIF_IER) BOD18 Synchronization Ready */\r
+#define BSCIF_IER_SSWRDY            (0x1u <<  9) /**< \brief (BSCIF_IER) VREG Stop Switching Ready */\r
+#define BSCIF_IER_VREGOK            (0x1u << 10) /**< \brief (BSCIF_IER) Main VREG OK */\r
+#define BSCIF_IER_LPBGRDY           (0x1u << 12) /**< \brief (BSCIF_IER) Low Power Bandgap Voltage Reference Ready */\r
+#define BSCIF_IER_AE                (0x1u << 31) /**< \brief (BSCIF_IER) Access Error */\r
+/* -------- BSCIF_IDR : (BSCIF Offset: 0x004) Interrupt Disable Register -------- */\r
+#define BSCIF_IDR_OSC32RDY          (0x1u <<  0) /**< \brief (BSCIF_IDR)  */\r
+#define BSCIF_IDR_RC32KRDY          (0x1u <<  1) /**< \brief (BSCIF_IDR)  */\r
+#define BSCIF_IDR_RC32KLOCK         (0x1u <<  2) /**< \brief (BSCIF_IDR)  */\r
+#define BSCIF_IDR_RC32KREFE         (0x1u <<  3) /**< \brief (BSCIF_IDR)  */\r
+#define BSCIF_IDR_RC32KSAT          (0x1u <<  4) /**< \brief (BSCIF_IDR)  */\r
+#define BSCIF_IDR_BOD33DET          (0x1u <<  5) /**< \brief (BSCIF_IDR) BOD33 Detected */\r
+#define BSCIF_IDR_BOD18DET          (0x1u <<  6) /**< \brief (BSCIF_IDR) BOD18 Detected */\r
+#define BSCIF_IDR_BOD33SYNRDY       (0x1u <<  7) /**< \brief (BSCIF_IDR) BOD33 Synchronization Ready */\r
+#define BSCIF_IDR_BOD18SYNRDY       (0x1u <<  8) /**< \brief (BSCIF_IDR) BOD18 Synchronization Ready */\r
+#define BSCIF_IDR_SSWRDY            (0x1u <<  9) /**< \brief (BSCIF_IDR) VREG Stop Switching Ready */\r
+#define BSCIF_IDR_VREGOK            (0x1u << 10) /**< \brief (BSCIF_IDR) Mai n VREG OK */\r
+#define BSCIF_IDR_LPBGRDY           (0x1u << 12) /**< \brief (BSCIF_IDR) Low Power Bandgap Voltage Reference Ready */\r
+#define BSCIF_IDR_AE                (0x1u << 31) /**< \brief (BSCIF_IDR) Access Error */\r
+/* -------- BSCIF_IMR : (BSCIF Offset: 0x008) Interrupt Mask Register -------- */\r
+#define BSCIF_IMR_OSC32RDY          (0x1u <<  0) /**< \brief (BSCIF_IMR)  */\r
+#define BSCIF_IMR_RC32KRDY          (0x1u <<  1) /**< \brief (BSCIF_IMR)  */\r
+#define BSCIF_IMR_RC32KLOCK         (0x1u <<  2) /**< \brief (BSCIF_IMR)  */\r
+#define BSCIF_IMR_RC32KREFE         (0x1u <<  3) /**< \brief (BSCIF_IMR)  */\r
+#define BSCIF_IMR_RC32KSAT          (0x1u <<  4) /**< \brief (BSCIF_IMR)  */\r
+#define BSCIF_IMR_BOD33DET          (0x1u <<  5) /**< \brief (BSCIF_IMR) BOD33 Detected */\r
+#define BSCIF_IMR_BOD18DET          (0x1u <<  6) /**< \brief (BSCIF_IMR) BOD18 Detected */\r
+#define BSCIF_IMR_BOD33SYNRDY       (0x1u <<  7) /**< \brief (BSCIF_IMR) BOD33 Synchronization Ready */\r
+#define BSCIF_IMR_BOD18SYNRDY       (0x1u <<  8) /**< \brief (BSCIF_IMR) BOD18 Synchronization Ready */\r
+#define BSCIF_IMR_SSWRDY            (0x1u <<  9) /**< \brief (BSCIF_IMR) VREG Stop Switching Ready */\r
+#define BSCIF_IMR_VREGOK            (0x1u << 10) /**< \brief (BSCIF_IMR) Main VREG OK */\r
+#define BSCIF_IMR_LPBGRDY           (0x1u << 12) /**< \brief (BSCIF_IMR) Low Power Bandgap Voltage Reference Ready */\r
+#define BSCIF_IMR_AE                (0x1u << 31) /**< \brief (BSCIF_IMR) Access Error */\r
+/* -------- BSCIF_ISR : (BSCIF Offset: 0x00C) Interrupt Status Register -------- */\r
+#define BSCIF_ISR_OSC32RDY          (0x1u <<  0) /**< \brief (BSCIF_ISR)  */\r
+#define BSCIF_ISR_RC32KRDY          (0x1u <<  1) /**< \brief (BSCIF_ISR)  */\r
+#define BSCIF_ISR_RC32KLOCK         (0x1u <<  2) /**< \brief (BSCIF_ISR)  */\r
+#define BSCIF_ISR_RC32KREFE         (0x1u <<  3) /**< \brief (BSCIF_ISR)  */\r
+#define BSCIF_ISR_RC32KSAT          (0x1u <<  4) /**< \brief (BSCIF_ISR)  */\r
+#define BSCIF_ISR_BOD33DET          (0x1u <<  5) /**< \brief (BSCIF_ISR) BOD33 Detected */\r
+#define BSCIF_ISR_BOD18DET          (0x1u <<  6) /**< \brief (BSCIF_ISR) BOD18 Detected */\r
+#define BSCIF_ISR_BOD33SYNRDY       (0x1u <<  7) /**< \brief (BSCIF_ISR) BOD33 Synchronization Ready */\r
+#define BSCIF_ISR_BOD18SYNRDY       (0x1u <<  8) /**< \brief (BSCIF_ISR) BOD18 Synchronization Ready */\r
+#define BSCIF_ISR_SSWRDY            (0x1u <<  9) /**< \brief (BSCIF_ISR) VREG Stop Switching Ready */\r
+#define BSCIF_ISR_VREGOK            (0x1u << 10) /**< \brief (BSCIF_ISR) Main VREG OK */\r
+#define BSCIF_ISR_LPBGRDY           (0x1u << 12) /**< \brief (BSCIF_ISR) Low Power Bandgap Voltage Reference Ready */\r
+#define BSCIF_ISR_AE                (0x1u << 31) /**< \brief (BSCIF_ISR) Access Error */\r
+/* -------- BSCIF_ICR : (BSCIF Offset: 0x010) Interrupt Clear Register -------- */\r
+#define BSCIF_ICR_OSC32RDY          (0x1u <<  0) /**< \brief (BSCIF_ICR)  */\r
+#define BSCIF_ICR_RC32KRDY          (0x1u <<  1) /**< \brief (BSCIF_ICR)  */\r
+#define BSCIF_ICR_RC32KLOCK         (0x1u <<  2) /**< \brief (BSCIF_ICR)  */\r
+#define BSCIF_ICR_RC32KREFE         (0x1u <<  3) /**< \brief (BSCIF_ICR)  */\r
+#define BSCIF_ICR_RC32KSAT          (0x1u <<  4) /**< \brief (BSCIF_ICR)  */\r
+#define BSCIF_ICR_BOD33DET          (0x1u <<  5) /**< \brief (BSCIF_ICR) BOD33 Detected */\r
+#define BSCIF_ICR_BOD18DET          (0x1u <<  6) /**< \brief (BSCIF_ICR) BOD18 Detected */\r
+#define BSCIF_ICR_BOD33SYNRDY       (0x1u <<  7) /**< \brief (BSCIF_ICR) BOD33 Synchronization Ready */\r
+#define BSCIF_ICR_BOD18SYNRDY       (0x1u <<  8) /**< \brief (BSCIF_ICR) BOD18 Synchronization Ready */\r
+#define BSCIF_ICR_SSWRDY            (0x1u <<  9) /**< \brief (BSCIF_ICR) VREG Stop Switching Ready */\r
+#define BSCIF_ICR_VREGOK            (0x1u << 10) /**< \brief (BSCIF_ICR) Main VREG OK */\r
+#define BSCIF_ICR_LPBGRDY           (0x1u << 12) /**< \brief (BSCIF_ICR) Low Power Bandgap Voltage Reference Ready */\r
+#define BSCIF_ICR_AE                (0x1u << 31) /**< \brief (BSCIF_ICR) Access Error */\r
+/* -------- BSCIF_PCLKSR : (BSCIF Offset: 0x014) Power and Clocks Status Register -------- */\r
+#define BSCIF_PCLKSR_OSC32RDY       (0x1u <<  0) /**< \brief (BSCIF_PCLKSR)  */\r
+#define BSCIF_PCLKSR_RC32KRDY       (0x1u <<  1) /**< \brief (BSCIF_PCLKSR)  */\r
+#define BSCIF_PCLKSR_RC32KLOCK      (0x1u <<  2) /**< \brief (BSCIF_PCLKSR)  */\r
+#define BSCIF_PCLKSR_RC32KREFE      (0x1u <<  3) /**< \brief (BSCIF_PCLKSR)  */\r
+#define BSCIF_PCLKSR_RC32KSAT       (0x1u <<  4) /**< \brief (BSCIF_PCLKSR)  */\r
+#define BSCIF_PCLKSR_BOD33DET       (0x1u <<  5) /**< \brief (BSCIF_PCLKSR) BOD33 Detected */\r
+#define BSCIF_PCLKSR_BOD18DET       (0x1u <<  6) /**< \brief (BSCIF_PCLKSR) BOD18 Detected */\r
+#define BSCIF_PCLKSR_BOD33SYNRDY    (0x1u <<  7) /**< \brief (BSCIF_PCLKSR) BOD33 Synchronization Ready */\r
+#define BSCIF_PCLKSR_BOD18SYNRDY    (0x1u <<  8) /**< \brief (BSCIF_PCLKSR) BOD18 Synchronization Ready */\r
+#define BSCIF_PCLKSR_SSWRDY         (0x1u <<  9) /**< \brief (BSCIF_PCLKSR) VREG Stop Switching Ready */\r
+#define BSCIF_PCLKSR_VREGOK         (0x1u << 10) /**< \brief (BSCIF_PCLKSR) Main VREG OK */\r
+#define BSCIF_PCLKSR_RC1MRDY        (0x1u << 11) /**< \brief (BSCIF_PCLKSR) RC 1MHz Oscillator Ready */\r
+#define BSCIF_PCLKSR_LPBGRDY        (0x1u << 12) /**< \brief (BSCIF_PCLKSR) Low Power Bandgap Voltage Reference Ready */\r
+/* -------- BSCIF_UNLOCK : (BSCIF Offset: 0x018) Unlock Register -------- */\r
+#define BSCIF_UNLOCK_ADDR_Pos       0\r
+#define BSCIF_UNLOCK_ADDR_Msk       (0x3FFu << BSCIF_UNLOCK_ADDR_Pos) /**< \brief (BSCIF_UNLOCK) Unlock Address */\r
+#define BSCIF_UNLOCK_ADDR(value)    ((BSCIF_UNLOCK_ADDR_Msk & ((value) << BSCIF_UNLOCK_ADDR_Pos)))\r
+#define BSCIF_UNLOCK_KEY_Pos        24\r
+#define BSCIF_UNLOCK_KEY_Msk        (0xFFu << BSCIF_UNLOCK_KEY_Pos) /**< \brief (BSCIF_UNLOCK) Unlock Key */\r
+#define BSCIF_UNLOCK_KEY(value)     ((BSCIF_UNLOCK_KEY_Msk & ((value) << BSCIF_UNLOCK_KEY_Pos)))\r
+#define   BSCIF_UNLOCK_KEY_VALID    (0xAAu << 24) /**< \brief (BSCIF_UNLOCK) Valid Key to Unlock register */\r
+/* -------- BSCIF_CSCR : (BSCIF Offset: 0x01C) Chip Specific Configuration Register -------- */\r
+/* -------- BSCIF_OSCCTRL32 : (BSCIF Offset: 0x020) Oscillator 32 Control Register -------- */\r
+#define BSCIF_OSCCTRL32_OSC32EN     (0x1u <<  0) /**< \brief (BSCIF_OSCCTRL32) 32 KHz Oscillator Enable */\r
+#define BSCIF_OSCCTRL32_PINSEL      (0x1u <<  1) /**< \brief (BSCIF_OSCCTRL32) Pins Select */\r
+#define BSCIF_OSCCTRL32_EN32K       (0x1u <<  2) /**< \brief (BSCIF_OSCCTRL32) 32 KHz output Enable */\r
+#define BSCIF_OSCCTRL32_EN1K        (0x1u <<  3) /**< \brief (BSCIF_OSCCTRL32) 1 KHz output Enable */\r
+#define BSCIF_OSCCTRL32_MODE_Pos    8\r
+#define BSCIF_OSCCTRL32_MODE_Msk    (0x7u << BSCIF_OSCCTRL32_MODE_Pos) /**< \brief (BSCIF_OSCCTRL32) Oscillator Mode */\r
+#define BSCIF_OSCCTRL32_MODE(value) ((BSCIF_OSCCTRL32_MODE_Msk & ((value) << BSCIF_OSCCTRL32_MODE_Pos)))\r
+#define BSCIF_OSCCTRL32_SELCURR_Pos    12\r
+#define BSCIF_OSCCTRL32_SELCURR_Msk    (0xFu << BSCIF_OSCCTRL32_SELCURR_Pos) /**< \brief (BSCIF_OSCCTRL32) Current selection */\r
+#define BSCIF_OSCCTRL32_SELCURR(value) ((BSCIF_OSCCTRL32_SELCURR_Msk & ((value) << BSCIF_OSCCTRL32_SELCURR_Pos)))\r
+#define BSCIF_OSCCTRL32_STARTUP_Pos    16\r
+#define BSCIF_OSCCTRL32_STARTUP_Msk    (0x7u << BSCIF_OSCCTRL32_STARTUP_Pos) /**< \brief (BSCIF_OSCCTRL32) Oscillator Start-up Time */\r
+#define BSCIF_OSCCTRL32_STARTUP(value) ((BSCIF_OSCCTRL32_STARTUP_Msk & ((value) << BSCIF_OSCCTRL32_STARTUP_Pos)))\r
+/* -------- BSCIF_RC32KCR : (BSCIF Offset: 0x024) 32 kHz RC Oscillator Control Register -------- */\r
+#define BSCIF_RC32KCR_EN            (0x1u <<  0) /**< \brief (BSCIF_RC32KCR) Enable as Generic clock source */\r
+#define BSCIF_RC32KCR_TCEN          (0x1u <<  1) /**< \brief (BSCIF_RC32KCR) Temperature Compensation Enable */\r
+#define BSCIF_RC32KCR_EN32K         (0x1u <<  2) /**< \brief (BSCIF_RC32KCR) Enable 32 KHz output */\r
+#define BSCIF_RC32KCR_EN1K          (0x1u <<  3) /**< \brief (BSCIF_RC32KCR) Enable 1 kHz output */\r
+#define BSCIF_RC32KCR_MODE          (0x1u <<  4) /**< \brief (BSCIF_RC32KCR) Mode Selection */\r
+#define BSCIF_RC32KCR_REF           (0x1u <<  5) /**< \brief (BSCIF_RC32KCR) Reference select */\r
+#define BSCIF_RC32KCR_FCD           (0x1u <<  7) /**< \brief (BSCIF_RC32KCR) Flash calibration done */\r
+/* -------- BSCIF_RC32KTUNE : (BSCIF Offset: 0x028) 32kHz RC Oscillator Tuning Register -------- */\r
+#define BSCIF_RC32KTUNE_FINE_Pos    0\r
+#define BSCIF_RC32KTUNE_FINE_Msk    (0x3Fu << BSCIF_RC32KTUNE_FINE_Pos) /**< \brief (BSCIF_RC32KTUNE) Fine value */\r
+#define BSCIF_RC32KTUNE_FINE(value) ((BSCIF_RC32KTUNE_FINE_Msk & ((value) << BSCIF_RC32KTUNE_FINE_Pos)))\r
+#define BSCIF_RC32KTUNE_COARSE_Pos    16\r
+#define BSCIF_RC32KTUNE_COARSE_Msk    (0x7Fu << BSCIF_RC32KTUNE_COARSE_Pos) /**< \brief (BSCIF_RC32KTUNE) Coarse Value */\r
+#define BSCIF_RC32KTUNE_COARSE(value) ((BSCIF_RC32KTUNE_COARSE_Msk & ((value) << BSCIF_RC32KTUNE_COARSE_Pos)))\r
+/* -------- BSCIF_BOD33CTRL : (BSCIF Offset: 0x02C) BOD33 Control Register -------- */\r
+#define BSCIF_BOD33CTRL_EN          (0x1u <<  0) /**< \brief (BSCIF_BOD33CTRL) Enable */\r
+#define BSCIF_BOD33CTRL_HYST        (0x1u <<  1) /**< \brief (BSCIF_BOD33CTRL) BOD Hysteresis */\r
+#define BSCIF_BOD33CTRL_ACTION_Pos    8\r
+#define BSCIF_BOD33CTRL_ACTION_Msk    (0x3u << BSCIF_BOD33CTRL_ACTION_Pos) /**< \brief (BSCIF_BOD33CTRL) Action */\r
+#define BSCIF_BOD33CTRL_ACTION(value) ((BSCIF_BOD33CTRL_ACTION_Msk & ((value) << BSCIF_BOD33CTRL_ACTION_Pos)))\r
+#define BSCIF_BOD33CTRL_MODE        (0x1u << 16) /**< \brief (BSCIF_BOD33CTRL) Operation modes */\r
+#define BSCIF_BOD33CTRL_FCD         (0x1u << 30) /**< \brief (BSCIF_BOD33CTRL) BOD Fuse Calibration Done */\r
+#define BSCIF_BOD33CTRL_SFV         (0x1u << 31) /**< \brief (BSCIF_BOD33CTRL) BOD Control Register Store Final Value */\r
+/* -------- BSCIF_BOD33LEVEL : (BSCIF Offset: 0x030) BOD33 Level Register -------- */\r
+#define BSCIF_BOD33LEVEL_VAL_Pos    0\r
+#define BSCIF_BOD33LEVEL_VAL_Msk    (0x3Fu << BSCIF_BOD33LEVEL_VAL_Pos) /**< \brief (BSCIF_BOD33LEVEL) BOD Value */\r
+#define BSCIF_BOD33LEVEL_VAL(value) ((BSCIF_BOD33LEVEL_VAL_Msk & ((value) << BSCIF_BOD33LEVEL_VAL_Pos)))\r
+/* -------- BSCIF_BOD33SAMPLING : (BSCIF Offset: 0x034) BOD33 Sampling Control Register -------- */\r
+#define BSCIF_BOD33SAMPLING_CEN     (0x1u <<  0) /**< \brief (BSCIF_BOD33SAMPLING) Clock Enable */\r
+#define BSCIF_BOD33SAMPLING_CSSEL   (0x1u <<  1) /**< \brief (BSCIF_BOD33SAMPLING) Clock Source Select */\r
+#define BSCIF_BOD33SAMPLING_PSEL_Pos    8\r
+#define BSCIF_BOD33SAMPLING_PSEL_Msk    (0xFu << BSCIF_BOD33SAMPLING_PSEL_Pos) /**< \brief (BSCIF_BOD33SAMPLING) Prescaler Select */\r
+#define BSCIF_BOD33SAMPLING_PSEL(value) ((BSCIF_BOD33SAMPLING_PSEL_Msk & ((value) << BSCIF_BOD33SAMPLING_PSEL_Pos)))\r
+/* -------- BSCIF_BOD18CTRL : (BSCIF Offset: 0x038) BOD18 Control Register -------- */\r
+#define BSCIF_BOD18CTRL_EN          (0x1u <<  0) /**< \brief (BSCIF_BOD18CTRL) Enable */\r
+#define BSCIF_BOD18CTRL_HYST        (0x1u <<  1) /**< \brief (BSCIF_BOD18CTRL) BOD Hysteresis */\r
+#define BSCIF_BOD18CTRL_ACTION_Pos    8\r
+#define BSCIF_BOD18CTRL_ACTION_Msk    (0x3u << BSCIF_BOD18CTRL_ACTION_Pos) /**< \brief (BSCIF_BOD18CTRL) Action */\r
+#define BSCIF_BOD18CTRL_ACTION(value) ((BSCIF_BOD18CTRL_ACTION_Msk & ((value) << BSCIF_BOD18CTRL_ACTION_Pos)))\r
+#define BSCIF_BOD18CTRL_MODE        (0x1u << 16) /**< \brief (BSCIF_BOD18CTRL) Operation modes */\r
+#define BSCIF_BOD18CTRL_FCD         (0x1u << 30) /**< \brief (BSCIF_BOD18CTRL) BOD Fuse Calibration Done */\r
+#define BSCIF_BOD18CTRL_SFV         (0x1u << 31) /**< \brief (BSCIF_BOD18CTRL) BOD Control Register Store Final Value */\r
+/* -------- BSCIF_BOD18LEVEL : (BSCIF Offset: 0x03C) BOD18 Level Register -------- */\r
+#define BSCIF_BOD18LEVEL_VAL_Pos    0\r
+#define BSCIF_BOD18LEVEL_VAL_Msk    (0x3Fu << BSCIF_BOD18LEVEL_VAL_Pos) /**< \brief (BSCIF_BOD18LEVEL) BOD Value */\r
+#define BSCIF_BOD18LEVEL_VAL(value) ((BSCIF_BOD18LEVEL_VAL_Msk & ((value) << BSCIF_BOD18LEVEL_VAL_Pos)))\r
+#define BSCIF_BOD18LEVEL_RANGE      (0x1u << 31) /**< \brief (BSCIF_BOD18LEVEL) BOD Threshold Range */\r
+/* -------- BSCIF_VREGCR : (BSCIF Offset: 0x044) Voltage Regulator Configuration Register -------- */\r
+#define BSCIF_VREGCR_DIS            (0x1u <<  0) /**< \brief (BSCIF_VREGCR) Voltage Regulator disable */\r
+#define BSCIF_VREGCR_SSG            (0x1u <<  8) /**< \brief (BSCIF_VREGCR) Spread Spectrum Generator Enable */\r
+#define BSCIF_VREGCR_SSW            (0x1u <<  9) /**< \brief (BSCIF_VREGCR) Stop Switching */\r
+#define BSCIF_VREGCR_SSWEVT         (0x1u << 10) /**< \brief (BSCIF_VREGCR) Stop Switching On Event Enable */\r
+#define BSCIF_VREGCR_SFV            (0x1u << 31) /**< \brief (BSCIF_VREGCR) Store Final Value */\r
+/* -------- BSCIF_VREGNCSR : (BSCIF Offset: 0x04C) Normal Mode Control and Status Register -------- */\r
+/* -------- BSCIF_VREGLPCSR : (BSCIF Offset: 0x050) LP Mode Control and Status Register -------- */\r
+/* -------- BSCIF_RC1MCR : (BSCIF Offset: 0x058) 1MHz RC Clock Configuration Register -------- */\r
+#define BSCIF_RC1MCR_CLKOE          (0x1u <<  0) /**< \brief (BSCIF_RC1MCR) 1MHz RC Osc Clock Output Enable */\r
+#define BSCIF_RC1MCR_FCD            (0x1u <<  7) /**< \brief (BSCIF_RC1MCR) Flash Calibration Done */\r
+#define BSCIF_RC1MCR_CLKCAL_Pos     8\r
+#define BSCIF_RC1MCR_CLKCAL_Msk     (0x1Fu << BSCIF_RC1MCR_CLKCAL_Pos) /**< \brief (BSCIF_RC1MCR) 1MHz RC Osc Calibration */\r
+#define BSCIF_RC1MCR_CLKCAL(value)  ((BSCIF_RC1MCR_CLKCAL_Msk & ((value) << BSCIF_RC1MCR_CLKCAL_Pos)))\r
+/* -------- BSCIF_BGCR : (BSCIF Offset: 0x05C) Bandgap Calibration Register -------- */\r
+/* -------- BSCIF_BGCTRL : (BSCIF Offset: 0x060) Bandgap Control Register -------- */\r
+#define BSCIF_BGCTRL_ADCISEL_Pos    0\r
+#define BSCIF_BGCTRL_ADCISEL_Msk    (0x3u << BSCIF_BGCTRL_ADCISEL_Pos) /**< \brief (BSCIF_BGCTRL) ADC Input Selection */\r
+#define BSCIF_BGCTRL_ADCISEL(value) ((BSCIF_BGCTRL_ADCISEL_Msk & ((value) << BSCIF_BGCTRL_ADCISEL_Pos)))\r
+#define   BSCIF_BGCTRL_ADCISEL_DIS  (0x0u <<  0) /**< \brief (BSCIF_BGCTRL)  */\r
+#define   BSCIF_BGCTRL_ADCISEL_VTEMP (0x1u <<  0) /**< \brief (BSCIF_BGCTRL)  */\r
+#define   BSCIF_BGCTRL_ADCISEL_VREF (0x2u <<  0) /**< \brief (BSCIF_BGCTRL)  */\r
+#define BSCIF_BGCTRL_TSEN           (0x1u <<  8) /**< \brief (BSCIF_BGCTRL) Temperature Sensor Enable */\r
+/* -------- BSCIF_BGSR : (BSCIF Offset: 0x064) Bandgap Status Register -------- */\r
+#define BSCIF_BGSR_BGBUFRDY_Pos     0\r
+#define BSCIF_BGSR_BGBUFRDY_Msk     (0xFFu << BSCIF_BGSR_BGBUFRDY_Pos) /**< \brief (BSCIF_BGSR) Bandgap Buffer Ready */\r
+#define BSCIF_BGSR_BGBUFRDY(value)  ((BSCIF_BGSR_BGBUFRDY_Msk & ((value) << BSCIF_BGSR_BGBUFRDY_Pos)))\r
+#define   BSCIF_BGSR_BGBUFRDY_FLASH (0x1u <<  0) /**< \brief (BSCIF_BGSR)  */\r
+#define   BSCIF_BGSR_BGBUFRDY_PLL   (0x2u <<  0) /**< \brief (BSCIF_BGSR)  */\r
+#define   BSCIF_BGSR_BGBUFRDY_VREG  (0x4u <<  0) /**< \brief (BSCIF_BGSR)  */\r
+#define   BSCIF_BGSR_BGBUFRDY_BUFRR (0x8u <<  0) /**< \brief (BSCIF_BGSR)  */\r
+#define   BSCIF_BGSR_BGBUFRDY_ADC   (0x10u <<  0) /**< \brief (BSCIF_BGSR)  */\r
+#define   BSCIF_BGSR_BGBUFRDY_LCD   (0x20u <<  0) /**< \brief (BSCIF_BGSR)  */\r
+#define BSCIF_BGSR_BGRDY            (0x1u << 16) /**< \brief (BSCIF_BGSR) Bandgap Voltage Reference Ready */\r
+#define BSCIF_BGSR_LPBGRDY          (0x1u << 17) /**< \brief (BSCIF_BGSR) Low Power Bandgap Voltage Reference Ready */\r
+#define BSCIF_BGSR_VREF_Pos         18\r
+#define BSCIF_BGSR_VREF_Msk         (0x3u << BSCIF_BGSR_VREF_Pos) /**< \brief (BSCIF_BGSR) Voltage Reference Used by the System */\r
+#define BSCIF_BGSR_VREF(value)      ((BSCIF_BGSR_VREF_Msk & ((value) << BSCIF_BGSR_VREF_Pos)))\r
+/* -------- BSCIF_BRIFBVERSION : (BSCIF Offset: 0x3E4) Backup Register Interface Version Register -------- */\r
+#define BSCIF_BRIFBVERSION_VERSION_Pos    0\r
+#define BSCIF_BRIFBVERSION_VERSION_Msk    (0xFFFu << BSCIF_BRIFBVERSION_VERSION_Pos) /**< \brief (BSCIF_BRIFBVERSION) Version Number */\r
+#define BSCIF_BRIFBVERSION_VERSION(value) ((BSCIF_BRIFBVERSION_VERSION_Msk & ((value) << BSCIF_BRIFBVERSION_VERSION_Pos)))\r
+#define BSCIF_BRIFBVERSION_VARIANT_Pos    16\r
+#define BSCIF_BRIFBVERSION_VARIANT_Msk    (0xFu << BSCIF_BRIFBVERSION_VARIANT_Pos) /**< \brief (BSCIF_BRIFBVERSION) Variant Number */\r
+#define BSCIF_BRIFBVERSION_VARIANT(value) ((BSCIF_BRIFBVERSION_VARIANT_Msk & ((value) << BSCIF_BRIFBVERSION_VARIANT_Pos)))\r
+/* -------- BSCIF_BGREFIFBVERSION : (BSCIF Offset: 0x3E8) BGREFIFB Version Register -------- */\r
+#define BSCIF_BGREFIFBVERSION_VERSION_Pos    0\r
+#define BSCIF_BGREFIFBVERSION_VERSION_Msk    (0xFFFu << BSCIF_BGREFIFBVERSION_VERSION_Pos) /**< \brief (BSCIF_BGREFIFBVERSION) Version Number */\r
+#define BSCIF_BGREFIFBVERSION_VERSION(value) ((BSCIF_BGREFIFBVERSION_VERSION_Msk & ((value) << BSCIF_BGREFIFBVERSION_VERSION_Pos)))\r
+#define BSCIF_BGREFIFBVERSION_VARIANT_Pos    16\r
+#define BSCIF_BGREFIFBVERSION_VARIANT_Msk    (0xFu << BSCIF_BGREFIFBVERSION_VARIANT_Pos) /**< \brief (BSCIF_BGREFIFBVERSION) Variant Number */\r
+#define BSCIF_BGREFIFBVERSION_VARIANT(value) ((BSCIF_BGREFIFBVERSION_VARIANT_Msk & ((value) << BSCIF_BGREFIFBVERSION_VARIANT_Pos)))\r
+/* -------- BSCIF_VREGIFGVERSION : (BSCIF Offset: 0x3EC) VREGIFA Version Register -------- */\r
+#define BSCIF_VREGIFGVERSION_VERSION_Pos    0\r
+#define BSCIF_VREGIFGVERSION_VERSION_Msk    (0xFFFu << BSCIF_VREGIFGVERSION_VERSION_Pos) /**< \brief (BSCIF_VREGIFGVERSION) Version Number */\r
+#define BSCIF_VREGIFGVERSION_VERSION(value) ((BSCIF_VREGIFGVERSION_VERSION_Msk & ((value) << BSCIF_VREGIFGVERSION_VERSION_Pos)))\r
+#define BSCIF_VREGIFGVERSION_VARIANT_Pos    16\r
+#define BSCIF_VREGIFGVERSION_VARIANT_Msk    (0xFu << BSCIF_VREGIFGVERSION_VARIANT_Pos) /**< \brief (BSCIF_VREGIFGVERSION) Variant Number */\r
+#define BSCIF_VREGIFGVERSION_VARIANT(value) ((BSCIF_VREGIFGVERSION_VARIANT_Msk & ((value) << BSCIF_VREGIFGVERSION_VARIANT_Pos)))\r
+/* -------- BSCIF_BODIFCVERSION : (BSCIF Offset: 0x3F0) BODIFC Version Register -------- */\r
+#define BSCIF_BODIFCVERSION_VERSION_Pos    0\r
+#define BSCIF_BODIFCVERSION_VERSION_Msk    (0xFFFu << BSCIF_BODIFCVERSION_VERSION_Pos) /**< \brief (BSCIF_BODIFCVERSION) Version Number */\r
+#define BSCIF_BODIFCVERSION_VERSION(value) ((BSCIF_BODIFCVERSION_VERSION_Msk & ((value) << BSCIF_BODIFCVERSION_VERSION_Pos)))\r
+#define BSCIF_BODIFCVERSION_VARIANT_Pos    16\r
+#define BSCIF_BODIFCVERSION_VARIANT_Msk    (0xFu << BSCIF_BODIFCVERSION_VARIANT_Pos) /**< \brief (BSCIF_BODIFCVERSION) Variant Number */\r
+#define BSCIF_BODIFCVERSION_VARIANT(value) ((BSCIF_BODIFCVERSION_VARIANT_Msk & ((value) << BSCIF_BODIFCVERSION_VARIANT_Pos)))\r
+/* -------- BSCIF_RC32KIFBVERSION : (BSCIF Offset: 0x3F4) 32 kHz RC Oscillator Version Register -------- */\r
+#define BSCIF_RC32KIFBVERSION_VERSION_Pos    0\r
+#define BSCIF_RC32KIFBVERSION_VERSION_Msk    (0xFFFu << BSCIF_RC32KIFBVERSION_VERSION_Pos) /**< \brief (BSCIF_RC32KIFBVERSION) Version number */\r
+#define BSCIF_RC32KIFBVERSION_VERSION(value) ((BSCIF_RC32KIFBVERSION_VERSION_Msk & ((value) << BSCIF_RC32KIFBVERSION_VERSION_Pos)))\r
+#define BSCIF_RC32KIFBVERSION_VARIANT_Pos    16\r
+#define BSCIF_RC32KIFBVERSION_VARIANT_Msk    (0xFu << BSCIF_RC32KIFBVERSION_VARIANT_Pos) /**< \brief (BSCIF_RC32KIFBVERSION) Variant number */\r
+#define BSCIF_RC32KIFBVERSION_VARIANT(value) ((BSCIF_RC32KIFBVERSION_VARIANT_Msk & ((value) << BSCIF_RC32KIFBVERSION_VARIANT_Pos)))\r
+/* -------- BSCIF_OSC32IFAVERSION : (BSCIF Offset: 0x3F8) 32 KHz Oscillator Version Register -------- */\r
+#define BSCIF_OSC32IFAVERSION_VERSION_Pos    0\r
+#define BSCIF_OSC32IFAVERSION_VERSION_Msk    (0xFFFu << BSCIF_OSC32IFAVERSION_VERSION_Pos) /**< \brief (BSCIF_OSC32IFAVERSION) Version number */\r
+#define BSCIF_OSC32IFAVERSION_VERSION(value) ((BSCIF_OSC32IFAVERSION_VERSION_Msk & ((value) << BSCIF_OSC32IFAVERSION_VERSION_Pos)))\r
+#define BSCIF_OSC32IFAVERSION_VARIANT_Pos    16\r
+#define BSCIF_OSC32IFAVERSION_VARIANT_Msk    (0xFu << BSCIF_OSC32IFAVERSION_VARIANT_Pos) /**< \brief (BSCIF_OSC32IFAVERSION) Variant nubmer */\r
+#define BSCIF_OSC32IFAVERSION_VARIANT(value) ((BSCIF_OSC32IFAVERSION_VARIANT_Msk & ((value) << BSCIF_OSC32IFAVERSION_VARIANT_Pos)))\r
+/* -------- BSCIF_VERSION : (BSCIF Offset: 0x3FC) BSCIF Version Register -------- */\r
+#define BSCIF_VERSION_VERSION_Pos    0\r
+#define BSCIF_VERSION_VERSION_Msk    (0xFFFu << BSCIF_VERSION_VERSION_Pos) /**< \brief (BSCIF_VERSION) Version Number */\r
+#define BSCIF_VERSION_VERSION(value) ((BSCIF_VERSION_VERSION_Msk & ((value) << BSCIF_VERSION_VERSION_Pos)))\r
+#define BSCIF_VERSION_VARIANT_Pos    16\r
+#define BSCIF_VERSION_VARIANT_Msk    (0xFu << BSCIF_VERSION_VARIANT_Pos) /**< \brief (BSCIF_VERSION) Variant Number */\r
+#define BSCIF_VERSION_VARIANT(value) ((BSCIF_VERSION_VARIANT_Msk & ((value) << BSCIF_VERSION_VARIANT_Pos)))\r
+\r
+/*@}*/\r
+\r
+/* ============================================================================= */\r
+/**  SOFTWARE API DEFINITION FOR CATB */\r
+/* ============================================================================= */\r
+/** \addtogroup SAM4L_CATB Capacitive Touch Module B */\r
+/*@{*/\r
+\r
+#define REV_CATB       0x100\r
+\r
+#ifndef __ASSEMBLY__\r
+/** \brief CatbIntch hardware registers */\r
+typedef struct {\r
+  RoReg   CATB_INTCH;  /**< \brief (CatbIntch Offset: 0x00) In-Touch Status Register 0 */\r
+} CatbIntch;\r
+/** \brief CatbIntchclr hardware registers */\r
+typedef struct {\r
+  WoReg   CATB_INTCHCLR; /**< \brief (CatbIntchclr Offset: 0x00) In-Touch Status Clear Register 0 */\r
+} CatbIntchclr;\r
+/** \brief CatbOuttch hardware registers */\r
+typedef struct {\r
+  RoReg   CATB_OUTTCH; /**< \brief (CatbOuttch Offset: 0x00) Out-of-Touch Status Register 0 */\r
+} CatbOuttch;\r
+/** \brief CatbOuttchclr hardware registers */\r
+typedef struct {\r
+  WoReg   CATB_OUTTCHCLR; /**< \brief (CatbOuttchclr Offset: 0x00) Out-of-Touch Status Clear Register 0 */\r
+} CatbOuttchclr;\r
+/** \brief CATB hardware registers */\r
+#define CATB_STATUS_REG_NUMBER 1\r
+typedef struct {\r
+  RwReg   CATB_CR;          /**< \brief (CATB Offset: 0x00) Control Register */\r
+  RwReg   CATB_CNTCR;       /**< \brief (CATB Offset: 0x04) Counter Control Register */\r
+  RwReg   CATB_IDLE;        /**< \brief (CATB Offset: 0x08) Sensor Idle Level */\r
+  RoReg   CATB_LEVEL;       /**< \brief (CATB Offset: 0x0C) Sensor Relative Level */\r
+  RoReg   CATB_RAW;         /**< \brief (CATB Offset: 0x10) Sensor Raw Value */\r
+  RwReg   CATB_TIMING;      /**< \brief (CATB Offset: 0x14) Filter Timing Register */\r
+  RwReg   CATB_THRESH;      /**< \brief (CATB Offset: 0x18) Threshold Register */\r
+  RwReg   CATB_PINSEL;      /**< \brief (CATB Offset: 0x1C) Pin Selection Register */\r
+  RwReg   CATB_DMA;         /**< \brief (CATB Offset: 0x20) Direct Memory Access Register */\r
+  RoReg   CATB_ISR;         /**< \brief (CATB Offset: 0x24) Interrupt Status Register */\r
+  WoReg   CATB_IER;         /**< \brief (CATB Offset: 0x28) Interrupt Enable Register */\r
+  WoReg   CATB_IDR;         /**< \brief (CATB Offset: 0x2C) Interrupt Disable Register */\r
+  RoReg   CATB_IMR;         /**< \brief (CATB Offset: 0x30) Interrupt Mask Register */\r
+  WoReg   CATB_SCR;         /**< \brief (CATB Offset: 0x34) Status Clear Register */\r
+  RoReg   Reserved1[2];\r
+  CatbIntch CATB_INTCH[CATB_STATUS_REG_NUMBER]; /**< \brief (CATB Offset: 0x40) CatbIntch groups */\r
+  CatbIntch Reserved2[4 - CATB_STATUS_REG_NUMBER];\r
+  CatbIntchclr CATB_INTCHCLR[CATB_STATUS_REG_NUMBER]; /**< \brief (CATB Offset: 0x50) CatbIntchclr groups */\r
+  CatbIntchclr Reserved3[4 - CATB_STATUS_REG_NUMBER];\r
+  CatbOuttch CATB_OUTTCH[CATB_STATUS_REG_NUMBER]; /**< \brief (CATB Offset: 0x60) CatbOuttch groups */\r
+  CatbOuttch Reserved4[4 - CATB_STATUS_REG_NUMBER];\r
+  CatbOuttchclr CATB_OUTTCHCLR[CATB_STATUS_REG_NUMBER]; /**< \brief (CATB Offset: 0x70) CatbOuttchclr groups */\r
+  CatbOuttchclr Reserved5[4 - CATB_STATUS_REG_NUMBER];\r
+  RoReg   Reserved6[30];\r
+  RoReg   CATB_PARAMETER;   /**< \brief (CATB Offset: 0xF8) Parameter Register */\r
+  RoReg   CATB_VERSION;     /**< \brief (CATB Offset: 0xFC) Version Register */\r
+} Catb;\r
+#endif /* __ASSEMBLY__ */\r
+/* -------- CATB_CR : (CATB Offset: 0x00) Control Register -------- */\r
+#define CATB_CR_EN                  (0x1u <<  0) /**< \brief (CATB_CR) Module Enable */\r
+#define CATB_CR_RUN                 (0x1u <<  1) /**< \brief (CATB_CR) Start Operation */\r
+#define CATB_CR_IIDLE               (0x1u <<  2) /**< \brief (CATB_CR) Initialize Idle Value */\r
+#define CATB_CR_ETRIG               (0x1u <<  3) /**< \brief (CATB_CR) Event Triggered Operation */\r
+#define CATB_CR_INTRES              (0x1u <<  4) /**< \brief (CATB_CR) Internal Resistors */\r
+#define CATB_CR_CKSEL               (0x1u <<  5) /**< \brief (CATB_CR) Clock Select */\r
+#define CATB_CR_DIFF                (0x1u <<  6) /**< \brief (CATB_CR) Differential Mode */\r
+#define CATB_CR_DMAEN               (0x1u <<  7) /**< \brief (CATB_CR) DMA Enable */\r
+#define CATB_CR_ESAMPLES_Pos        8\r
+#define CATB_CR_ESAMPLES_Msk        (0x7Fu << CATB_CR_ESAMPLES_Pos) /**< \brief (CATB_CR) Number of Event Samples */\r
+#define CATB_CR_ESAMPLES(value)     ((CATB_CR_ESAMPLES_Msk & ((value) << CATB_CR_ESAMPLES_Pos)))\r
+#define CATB_CR_CHARGET_Pos         16\r
+#define CATB_CR_CHARGET_Msk         (0xFu << CATB_CR_CHARGET_Pos) /**< \brief (CATB_CR) Charge Time */\r
+#define CATB_CR_CHARGET(value)      ((CATB_CR_CHARGET_Msk & ((value) << CATB_CR_CHARGET_Pos)))\r
+#define CATB_CR_SWRST               (0x1u << 31) /**< \brief (CATB_CR) Software Reset */\r
+/* -------- CATB_CNTCR : (CATB Offset: 0x04) Counter Control Register -------- */\r
+#define CATB_CNTCR_TOP_Pos          0\r
+#define CATB_CNTCR_TOP_Msk          (0xFFFFFFu << CATB_CNTCR_TOP_Pos) /**< \brief (CATB_CNTCR) Counter Top Value */\r
+#define CATB_CNTCR_TOP(value)       ((CATB_CNTCR_TOP_Msk & ((value) << CATB_CNTCR_TOP_Pos)))\r
+#define CATB_CNTCR_SPREAD_Pos       24\r
+#define CATB_CNTCR_SPREAD_Msk       (0xFu << CATB_CNTCR_SPREAD_Pos) /**< \brief (CATB_CNTCR) Spread Spectrum */\r
+#define CATB_CNTCR_SPREAD(value)    ((CATB_CNTCR_SPREAD_Msk & ((value) << CATB_CNTCR_SPREAD_Pos)))\r
+#define CATB_CNTCR_REPEAT_Pos       28\r
+#define CATB_CNTCR_REPEAT_Msk       (0x7u << CATB_CNTCR_REPEAT_Pos) /**< \brief (CATB_CNTCR) Repeat Measurements */\r
+#define CATB_CNTCR_REPEAT(value)    ((CATB_CNTCR_REPEAT_Msk & ((value) << CATB_CNTCR_REPEAT_Pos)))\r
+/* -------- CATB_IDLE : (CATB Offset: 0x08) Sensor Idle Level -------- */\r
+#define CATB_IDLE_FIDLE_Pos         0\r
+#define CATB_IDLE_FIDLE_Msk         (0xFFFu << CATB_IDLE_FIDLE_Pos) /**< \brief (CATB_IDLE) Fractional Sensor Idle */\r
+#define CATB_IDLE_FIDLE(value)      ((CATB_IDLE_FIDLE_Msk & ((value) << CATB_IDLE_FIDLE_Pos)))\r
+#define CATB_IDLE_RIDLE_Pos         12\r
+#define CATB_IDLE_RIDLE_Msk         (0xFFFFu << CATB_IDLE_RIDLE_Pos) /**< \brief (CATB_IDLE) Integer Sensor Idle */\r
+#define CATB_IDLE_RIDLE(value)      ((CATB_IDLE_RIDLE_Msk & ((value) << CATB_IDLE_RIDLE_Pos)))\r
+/* -------- CATB_LEVEL : (CATB Offset: 0x0C) Sensor Relative Level -------- */\r
+#define CATB_LEVEL_FLEVEL_Pos       0\r
+#define CATB_LEVEL_FLEVEL_Msk       (0xFFFu << CATB_LEVEL_FLEVEL_Pos) /**< \brief (CATB_LEVEL) Fractional Sensor Level */\r
+#define CATB_LEVEL_FLEVEL(value)    ((CATB_LEVEL_FLEVEL_Msk & ((value) << CATB_LEVEL_FLEVEL_Pos)))\r
+#define CATB_LEVEL_RLEVEL_Pos       12\r
+#define CATB_LEVEL_RLEVEL_Msk       (0xFFu << CATB_LEVEL_RLEVEL_Pos) /**< \brief (CATB_LEVEL) Integer Sensor Level */\r
+#define CATB_LEVEL_RLEVEL(value)    ((CATB_LEVEL_RLEVEL_Msk & ((value) << CATB_LEVEL_RLEVEL_Pos)))\r
+/* -------- CATB_RAW : (CATB Offset: 0x10) Sensor Raw Value -------- */\r
+#define CATB_RAW_RAWA_Pos           16\r
+#define CATB_RAW_RAWA_Msk           (0xFFu << CATB_RAW_RAWA_Pos) /**< \brief (CATB_RAW) Current Sensor Raw Value */\r
+#define CATB_RAW_RAWA(value)        ((CATB_RAW_RAWA_Msk & ((value) << CATB_RAW_RAWA_Pos)))\r
+#define CATB_RAW_RAWB_Pos           24\r
+#define CATB_RAW_RAWB_Msk           (0xFFu << CATB_RAW_RAWB_Pos) /**< \brief (CATB_RAW) Last Sensor Raw Value */\r
+#define CATB_RAW_RAWB(value)        ((CATB_RAW_RAWB_Msk & ((value) << CATB_RAW_RAWB_Pos)))\r
+/* -------- CATB_TIMING : (CATB Offset: 0x14) Filter Timing Register -------- */\r
+#define CATB_TIMING_TLEVEL_Pos      0\r
+#define CATB_TIMING_TLEVEL_Msk      (0xFFFu << CATB_TIMING_TLEVEL_Pos) /**< \brief (CATB_TIMING) Relative Level Smoothing */\r
+#define CATB_TIMING_TLEVEL(value)   ((CATB_TIMING_TLEVEL_Msk & ((value) << CATB_TIMING_TLEVEL_Pos)))\r
+#define CATB_TIMING_TIDLE_Pos       16\r
+#define CATB_TIMING_TIDLE_Msk       (0xFFFu << CATB_TIMING_TIDLE_Pos) /**< \brief (CATB_TIMING) Idle Smoothening */\r
+#define CATB_TIMING_TIDLE(value)    ((CATB_TIMING_TIDLE_Msk & ((value) << CATB_TIMING_TIDLE_Pos)))\r
+/* -------- CATB_THRESH : (CATB Offset: 0x18) Threshold Register -------- */\r
+#define CATB_THRESH_FTHRESH_Pos     0\r
+#define CATB_THRESH_FTHRESH_Msk     (0xFFFu << CATB_THRESH_FTHRESH_Pos) /**< \brief (CATB_THRESH) Fractional part of Threshold Value */\r
+#define CATB_THRESH_FTHRESH(value)  ((CATB_THRESH_FTHRESH_Msk & ((value) << CATB_THRESH_FTHRESH_Pos)))\r
+#define CATB_THRESH_RTHRESH_Pos     12\r
+#define CATB_THRESH_RTHRESH_Msk     (0xFFu << CATB_THRESH_RTHRESH_Pos) /**< \brief (CATB_THRESH) Rational part of Threshold Value */\r
+#define CATB_THRESH_RTHRESH(value)  ((CATB_THRESH_RTHRESH_Msk & ((value) << CATB_THRESH_RTHRESH_Pos)))\r
+#define CATB_THRESH_DIR             (0x1u << 23) /**< \brief (CATB_THRESH) Threshold Direction */\r
+#define CATB_THRESH_LENGTH_Pos      24\r
+#define CATB_THRESH_LENGTH_Msk      (0x1Fu << CATB_THRESH_LENGTH_Pos) /**< \brief (CATB_THRESH) Threshold Length */\r
+#define CATB_THRESH_LENGTH(value)   ((CATB_THRESH_LENGTH_Msk & ((value) << CATB_THRESH_LENGTH_Pos)))\r
+/* -------- CATB_PINSEL : (CATB Offset: 0x1C) Pin Selection Register -------- */\r
+#define CATB_PINSEL_PINSEL_Pos      0\r
+#define CATB_PINSEL_PINSEL_Msk      (0xFFu << CATB_PINSEL_PINSEL_Pos) /**< \brief (CATB_PINSEL) Pin Select */\r
+#define CATB_PINSEL_PINSEL(value)   ((CATB_PINSEL_PINSEL_Msk & ((value) << CATB_PINSEL_PINSEL_Pos)))\r
+/* -------- CATB_DMA : (CATB Offset: 0x20) Direct Memory Access Register -------- */\r
+#define CATB_DMA_DMA_Pos            0\r
+#define CATB_DMA_DMA_Msk            (0xFFFFFFFFu << CATB_DMA_DMA_Pos) /**< \brief (CATB_DMA) Direct Memory Access */\r
+#define CATB_DMA_DMA(value)         ((CATB_DMA_DMA_Msk & ((value) << CATB_DMA_DMA_Pos)))\r
+/* -------- CATB_ISR : (CATB Offset: 0x24) Interrupt Status Register -------- */\r
+#define CATB_ISR_SAMPLE             (0x1u <<  0) /**< \brief (CATB_ISR) Sample Ready Interrupt Status */\r
+#define CATB_ISR_INTCH              (0x1u <<  1) /**< \brief (CATB_ISR) In-touch Interrupt Status */\r
+#define CATB_ISR_OUTTCH             (0x1u <<  2) /**< \brief (CATB_ISR) Out-of-Touch Interrupt Status */\r
+/* -------- CATB_IER : (CATB Offset: 0x28) Interrupt Enable Register -------- */\r
+#define CATB_IER_SAMPLE             (0x1u <<  0) /**< \brief (CATB_IER) Sample Ready Interrupt Enable */\r
+#define CATB_IER_INTCH              (0x1u <<  1) /**< \brief (CATB_IER) In-touch Interrupt Enable */\r
+#define CATB_IER_OUTTCH             (0x1u <<  2) /**< \brief (CATB_IER) Out-of-Touch Interrupt Enable */\r
+/* -------- CATB_IDR : (CATB Offset: 0x2C) Interrupt Disable Register -------- */\r
+#define CATB_IDR_SAMPLE             (0x1u <<  0) /**< \brief (CATB_IDR) Sample Ready Interrupt Disable */\r
+#define CATB_IDR_INTCH              (0x1u <<  1) /**< \brief (CATB_IDR) In-touch Interrupt Disable */\r
+#define CATB_IDR_OUTTCH             (0x1u <<  2) /**< \brief (CATB_IDR) Out-of-Touch Interrupt Disable */\r
+/* -------- CATB_IMR : (CATB Offset: 0x30) Interrupt Mask Register -------- */\r
+#define CATB_IMR_SAMPLE             (0x1u <<  0) /**< \brief (CATB_IMR) Sample Ready Interrupt Mask */\r
+#define CATB_IMR_INTCH              (0x1u <<  1) /**< \brief (CATB_IMR) In-touch Interrupt Mask */\r
+#define CATB_IMR_OUTTCH             (0x1u <<  2) /**< \brief (CATB_IMR) Out-of-Touch Interrupt Mask */\r
+/* -------- CATB_SCR : (CATB Offset: 0x34) Status Clear Register -------- */\r
+#define CATB_SCR_SAMPLE             (0x1u <<  0) /**< \brief (CATB_SCR) Sample Ready */\r
+#define CATB_SCR_INTCH              (0x1u <<  1) /**< \brief (CATB_SCR) In-touch */\r
+#define CATB_SCR_OUTTCH             (0x1u <<  2) /**< \brief (CATB_SCR) Out-of-Touch */\r
+/* -------- CATB_INTCH : (CATB Offset: 0x40) Intch In-Touch Status Register 0 -------- */\r
+#define CATB_INTCH_INTCH_Pos        0\r
+#define CATB_INTCH_INTCH_Msk        (0xFFFFFFFFu << CATB_INTCH_INTCH_Pos) /**< \brief (CATB_INTCH) In-Touch */\r
+#define CATB_INTCH_INTCH(value)     ((CATB_INTCH_INTCH_Msk & ((value) << CATB_INTCH_INTCH_Pos)))\r
+/* -------- CATB_INTCHCLR : (CATB Offset: 0x50) Intchclr In-Touch Status Clear Register 0 -------- */\r
+#define CATB_INTCHCLR_INTCHCLR_Pos    0\r
+#define CATB_INTCHCLR_INTCHCLR_Msk    (0xFFFFFFFFu << CATB_INTCHCLR_INTCHCLR_Pos) /**< \brief (CATB_INTCHCLR) In-Touch Clear */\r
+#define CATB_INTCHCLR_INTCHCLR(value) ((CATB_INTCHCLR_INTCHCLR_Msk & ((value) << CATB_INTCHCLR_INTCHCLR_Pos)))\r
+/* -------- CATB_OUTTCH : (CATB Offset: 0x60) Outtch Out-of-Touch Status Register 0 -------- */\r
+#define CATB_OUTTCH_OUTTCH_Pos      0\r
+#define CATB_OUTTCH_OUTTCH_Msk      (0xFFFFFFFFu << CATB_OUTTCH_OUTTCH_Pos) /**< \brief (CATB_OUTTCH) Out-of-Touch */\r
+#define CATB_OUTTCH_OUTTCH(value)   ((CATB_OUTTCH_OUTTCH_Msk & ((value) << CATB_OUTTCH_OUTTCH_Pos)))\r
+/* -------- CATB_OUTTCHCLR : (CATB Offset: 0x70) Outtchclr Out-of-Touch Status Clear Register 0 -------- */\r
+#define CATB_OUTTCHCLR_OUTTCHCLR_Pos    0\r
+#define CATB_OUTTCHCLR_OUTTCHCLR_Msk    (0xFFFFFFFFu << CATB_OUTTCHCLR_OUTTCHCLR_Pos) /**< \brief (CATB_OUTTCHCLR) Out of Touch */\r
+#define CATB_OUTTCHCLR_OUTTCHCLR(value) ((CATB_OUTTCHCLR_OUTTCHCLR_Msk & ((value) << CATB_OUTTCHCLR_OUTTCHCLR_Pos)))\r
+/* -------- CATB_PARAMETER : (CATB Offset: 0xF8) Parameter Register -------- */\r
+#define CATB_PARAMETER_NPINS_Pos    0\r
+#define CATB_PARAMETER_NPINS_Msk    (0xFFu << CATB_PARAMETER_NPINS_Pos) /**< \brief (CATB_PARAMETER) Number of Pins */\r
+#define CATB_PARAMETER_NPINS(value) ((CATB_PARAMETER_NPINS_Msk & ((value) << CATB_PARAMETER_NPINS_Pos)))\r
+#define CATB_PARAMETER_NSTATUS_Pos    8\r
+#define CATB_PARAMETER_NSTATUS_Msk    (0xFFu << CATB_PARAMETER_NSTATUS_Pos) /**< \brief (CATB_PARAMETER) Number of Status bits */\r
+#define CATB_PARAMETER_NSTATUS(value) ((CATB_PARAMETER_NSTATUS_Msk & ((value) << CATB_PARAMETER_NSTATUS_Pos)))\r
+#define CATB_PARAMETER_FRACTIONAL_Pos    16\r
+#define CATB_PARAMETER_FRACTIONAL_Msk    (0xFu << CATB_PARAMETER_FRACTIONAL_Pos) /**< \brief (CATB_PARAMETER) Number of Fractional bits */\r
+#define CATB_PARAMETER_FRACTIONAL(value) ((CATB_PARAMETER_FRACTIONAL_Msk & ((value) << CATB_PARAMETER_FRACTIONAL_Pos)))\r
+/* -------- CATB_VERSION : (CATB Offset: 0xFC) Version Register -------- */\r
+#define CATB_VERSION_VERSION_Pos    0\r
+#define CATB_VERSION_VERSION_Msk    (0xFFFu << CATB_VERSION_VERSION_Pos) /**< \brief (CATB_VERSION) Version number */\r
+#define CATB_VERSION_VERSION(value) ((CATB_VERSION_VERSION_Msk & ((value) << CATB_VERSION_VERSION_Pos)))\r
+#define CATB_VERSION_VARIANT_Pos    16\r
+#define CATB_VERSION_VARIANT_Msk    (0xFu << CATB_VERSION_VARIANT_Pos) /**< \brief (CATB_VERSION) Variant number */\r
+#define CATB_VERSION_VARIANT(value) ((CATB_VERSION_VARIANT_Msk & ((value) << CATB_VERSION_VARIANT_Pos)))\r
+\r
+/*@}*/\r
+\r
+/* ============================================================================= */\r
+/**  SOFTWARE API DEFINITION FOR CHIPID */\r
+/* ============================================================================= */\r
+/** \addtogroup SAM4L_CHIPID Chip ID Registers */\r
+/*@{*/\r
+\r
+#define REV_CHIPID     0x100\r
+\r
+#ifndef __ASSEMBLY__\r
+/** \brief CHIPID hardware registers */\r
+typedef struct {\r
+  RoReg   Reserved1[208];\r
+  RoReg   CHIPID_CIDR;        /**< \brief (CHIPID Offset: 0x340) Chip ID Register */\r
+  RoReg   CHIPID_EXID;        /**< \brief (CHIPID Offset: 0x344) Chip ID Extension Register */\r
+} Chipid;\r
+#endif /* __ASSEMBLY__ */\r
+\r
+/*@}*/\r
+\r
+/* ============================================================================= */\r
+/**  SOFTWARE API DEFINITION FOR CRCCU */\r
+/* ============================================================================= */\r
+/** \addtogroup SAM4L_CRCCU CRC Calculation Unit */\r
+/*@{*/\r
+\r
+#define REV_CRCCU      0x202\r
+\r
+#ifndef __ASSEMBLY__\r
+/** \brief CRCCU hardware registers */\r
+typedef struct {\r
+  RwReg   CRCCU_DSCR;        /**< \brief (CRCCU Offset: 0x00) Descriptor Base Register */\r
+  RoReg   Reserved1[1];\r
+  WoReg   CRCCU_DMAEN;       /**< \brief (CRCCU Offset: 0x08) DMA Enable Register */\r
+  WoReg   CRCCU_DMADIS;      /**< \brief (CRCCU Offset: 0x0C) DMA Disable Register */\r
+  RoReg   CRCCU_DMASR;       /**< \brief (CRCCU Offset: 0x10) DMA Status Register */\r
+  WoReg   CRCCU_DMAIER;      /**< \brief (CRCCU Offset: 0x14) DMA Interrupt Enable Register */\r
+  WoReg   CRCCU_DMAIDR;      /**< \brief (CRCCU Offset: 0x18) DMA Interrupt Disable Register */\r
+  RoReg   CRCCU_DMAIMR;      /**< \brief (CRCCU Offset: 0x1C) DMA Interrupt Mask Register */\r
+  RoReg   CRCCU_DMAISR;      /**< \brief (CRCCU Offset: 0x20) DMA Interrupt Status Register */\r
+  RoReg   Reserved2[4];\r
+  WoReg   CRCCU_CR;          /**< \brief (CRCCU Offset: 0x34) Control Register */\r
+  RwReg   CRCCU_MR;          /**< \brief (CRCCU Offset: 0x38) Mode Register */\r
+  RoReg   CRCCU_SR;          /**< \brief (CRCCU Offset: 0x3C) Status Register */\r
+  WoReg   CRCCU_IER;         /**< \brief (CRCCU Offset: 0x40) Interrupt Enable Register */\r
+  WoReg   CRCCU_IDR;         /**< \brief (CRCCU Offset: 0x44) Interrupt Disable Register */\r
+  RoReg   CRCCU_IMR;         /**< \brief (CRCCU Offset: 0x48) Interrupt Mask Register */\r
+  RoReg   CRCCU_ISR;         /**< \brief (CRCCU Offset: 0x4C) Interrupt Status Register */\r
+  RoReg   Reserved3[43];\r
+  RoReg   CRCCU_VERSION;     /**< \brief (CRCCU Offset: 0xFC) Version Register */\r
+} Crccu;\r
+#endif /* __ASSEMBLY__ */\r
+/* -------- CRCCU_DSCR : (CRCCU Offset: 0x00) Descriptor Base Register -------- */\r
+#define CRCCU_DSCR_DSCR_Pos         9\r
+#define CRCCU_DSCR_DSCR_Msk         (0x7FFFFFu << CRCCU_DSCR_DSCR_Pos) /**< \brief (CRCCU_DSCR) Description Base Address */\r
+#define CRCCU_DSCR_DSCR(value)      ((CRCCU_DSCR_DSCR_Msk & ((value) << CRCCU_DSCR_DSCR_Pos)))\r
+/* -------- CRCCU_DMAEN : (CRCCU Offset: 0x08) DMA Enable Register -------- */\r
+#define CRCCU_DMAEN_DMAEN           (0x1u <<  0) /**< \brief (CRCCU_DMAEN) DMA Enable */\r
+/* -------- CRCCU_DMADIS : (CRCCU Offset: 0x0C) DMA Disable Register -------- */\r
+#define CRCCU_DMADIS_DMADIS         (0x1u <<  0) /**< \brief (CRCCU_DMADIS) DMA Disable */\r
+/* -------- CRCCU_DMASR : (CRCCU Offset: 0x10) DMA Status Register -------- */\r
+#define CRCCU_DMASR_DMASR           (0x1u <<  0) /**< \brief (CRCCU_DMASR) DMA Channel Status */\r
+/* -------- CRCCU_DMAIER : (CRCCU Offset: 0x14) DMA Interrupt Enable Register -------- */\r
+#define CRCCU_DMAIER_DMAIER         (0x1u <<  0) /**< \brief (CRCCU_DMAIER) DMA Interrupt Enable */\r
+/* -------- CRCCU_DMAIDR : (CRCCU Offset: 0x18) DMA Interrupt Disable Register -------- */\r
+#define CRCCU_DMAIDR_DMAIDR         (0x1u <<  0) /**< \brief (CRCCU_DMAIDR) DMA Interrupt Disable */\r
+/* -------- CRCCU_DMAIMR : (CRCCU Offset: 0x1C) DMA Interrupt Mask Register -------- */\r
+#define CRCCU_DMAIMR_DMAIMR         (0x1u <<  0) /**< \brief (CRCCU_DMAIMR) DMA Interrupt Mask */\r
+/* -------- CRCCU_DMAISR : (CRCCU Offset: 0x20) DMA Interrupt Status Register -------- */\r
+#define CRCCU_DMAISR_DMAISR         (0x1u <<  0) /**< \brief (CRCCU_DMAISR) DMA Interrupt Status */\r
+/* -------- CRCCU_CR : (CRCCU Offset: 0x34) Control Register -------- */\r
+#define CRCCU_CR_RESET              (0x1u <<  0) /**< \brief (CRCCU_CR) Reset CRCComputation */\r
+/* -------- CRCCU_MR : (CRCCU Offset: 0x38) Mode Register -------- */\r
+#define CRCCU_MR_ENABLE             (0x1u <<  0) /**< \brief (CRCCU_MR) CRC Computation Enable */\r
+#define CRCCU_MR_COMPARE            (0x1u <<  1) /**< \brief (CRCCU_MR) CRC Compare */\r
+#define CRCCU_MR_PTYPE_Pos          2\r
+#define CRCCU_MR_PTYPE_Msk          (0x3u << CRCCU_MR_PTYPE_Pos) /**< \brief (CRCCU_MR) Polynomial Type */\r
+#define CRCCU_MR_PTYPE(value)       ((CRCCU_MR_PTYPE_Msk & ((value) << CRCCU_MR_PTYPE_Pos)))\r
+#define CRCCU_MR_DIVIDER_Pos        4\r
+#define CRCCU_MR_DIVIDER_Msk        (0xFu << CRCCU_MR_DIVIDER_Pos) /**< \brief (CRCCU_MR) Bandwidth Divider */\r
+#define CRCCU_MR_DIVIDER(value)     ((CRCCU_MR_DIVIDER_Msk & ((value) << CRCCU_MR_DIVIDER_Pos)))\r
+/* -------- CRCCU_SR : (CRCCU Offset: 0x3C) Status Register -------- */\r
+#define CRCCU_SR_CRC_Pos            0\r
+#define CRCCU_SR_CRC_Msk            (0xFFFFFFFFu << CRCCU_SR_CRC_Pos) /**< \brief (CRCCU_SR) Cyclic Redundancy Check Value */\r
+#define CRCCU_SR_CRC(value)         ((CRCCU_SR_CRC_Msk & ((value) << CRCCU_SR_CRC_Pos)))\r
+/* -------- CRCCU_IER : (CRCCU Offset: 0x40) Interrupt Enable Register -------- */\r
+#define CRCCU_IER_ERRIER            (0x1u <<  0) /**< \brief (CRCCU_IER) CRC Error Interrupt Enable */\r
+/* -------- CRCCU_IDR : (CRCCU Offset: 0x44) Interrupt Disable Register -------- */\r
+#define CRCCU_IDR_ERRIDR            (0x1u <<  0) /**< \brief (CRCCU_IDR) CRC Error Interrupt Disable */\r
+/* -------- CRCCU_IMR : (CRCCU Offset: 0x48) Interrupt Mask Register -------- */\r
+#define CRCCU_IMR_ERRIMR            (0x1u <<  0) /**< \brief (CRCCU_IMR) CRC Error Interrupt Mask */\r
+/* -------- CRCCU_ISR : (CRCCU Offset: 0x4C) Interrupt Status Register -------- */\r
+#define CRCCU_ISR_ERRISR            (0x1u <<  0) /**< \brief (CRCCU_ISR) CRC Error Interrupt Status */\r
+/* -------- CRCCU_VERSION : (CRCCU Offset: 0xFC) Version Register -------- */\r
+#define CRCCU_VERSION_VERSION_Pos    0\r
+#define CRCCU_VERSION_VERSION_Msk    (0xFFFu << CRCCU_VERSION_VERSION_Pos) /**< \brief (CRCCU_VERSION) Version Number */\r
+#define CRCCU_VERSION_VERSION(value) ((CRCCU_VERSION_VERSION_Msk & ((value) << CRCCU_VERSION_VERSION_Pos)))\r
+#define CRCCU_VERSION_VARIANT_Pos    16\r
+#define CRCCU_VERSION_VARIANT_Msk    (0xFu << CRCCU_VERSION_VARIANT_Pos) /**< \brief (CRCCU_VERSION) Variant Number */\r
+#define CRCCU_VERSION_VARIANT(value) ((CRCCU_VERSION_VARIANT_Msk & ((value) << CRCCU_VERSION_VARIANT_Pos)))\r
+\r
+/*@}*/\r
+\r
+/* ============================================================================= */\r
+/**  SOFTWARE API DEFINITION FOR DACC */\r
+/* ============================================================================= */\r
+/** \addtogroup SAM4L_DACC DAC Controller */\r
+/*@{*/\r
+\r
+#define REV_DACC       0x111\r
+\r
+#ifndef __ASSEMBLY__\r
+/** \brief DACC hardware registers */\r
+typedef struct {\r
+  WoReg   DACC_CR;          /**< \brief (DACC Offset: 0x00) Control Register */\r
+  RwReg   DACC_MR;          /**< \brief (DACC Offset: 0x04) Mode Register */\r
+  WoReg   DACC_CDR;         /**< \brief (DACC Offset: 0x08) Conversion Data Register */\r
+  WoReg   DACC_IER;         /**< \brief (DACC Offset: 0x0C) Interrupt Enable Register */\r
+  WoReg   DACC_IDR;         /**< \brief (DACC Offset: 0x10) Interrupt Disable Register */\r
+  RoReg   DACC_IMR;         /**< \brief (DACC Offset: 0x14) Interrupt Mask Register */\r
+  RoReg   DACC_ISR;         /**< \brief (DACC Offset: 0x18) Interrupt Status Register */\r
+  RoReg   Reserved1[50];\r
+  RwReg   DACC_WPMR;        /**< \brief (DACC Offset: 0xE4) Write Protect Mode Register */\r
+  RoReg   DACC_WPSR;        /**< \brief (DACC Offset: 0xE8) Write Protect Status Register */\r
+  RoReg   Reserved2[4];\r
+  RoReg   DACC_VERSION;     /**< \brief (DACC Offset: 0xFC) Version Register */\r
+} Dacc;\r
+#endif /* __ASSEMBLY__ */\r
+/* -------- DACC_CR : (DACC Offset: 0x00) Control Register -------- */\r
+#define DACC_CR_SWRST               (0x1u <<  0) /**< \brief (DACC_CR) Software Reset */\r
+/* -------- DACC_MR : (DACC Offset: 0x04) Mode Register -------- */\r
+#define DACC_MR_TRGEN               (0x1u <<  0) /**< \brief (DACC_MR) Trigger Enable */\r
+#define DACC_MR_TRGSEL_Pos          1\r
+#define DACC_MR_TRGSEL_Msk          (0x7u << DACC_MR_TRGSEL_Pos) /**< \brief (DACC_MR) Trigger Selection */\r
+#define DACC_MR_TRGSEL(value)       ((DACC_MR_TRGSEL_Msk & ((value) << DACC_MR_TRGSEL_Pos)))\r
+#define DACC_MR_DACEN               (0x1u <<  4) /**< \brief (DACC_MR) DAC Enable */\r
+#define DACC_MR_WORD                (0x1u <<  5) /**< \brief (DACC_MR) Word Transfer */\r
+#define DACC_MR_STARTUP_Pos         8\r
+#define DACC_MR_STARTUP_Msk         (0xFFu << DACC_MR_STARTUP_Pos) /**< \brief (DACC_MR) Startup Time Selection */\r
+#define DACC_MR_STARTUP(value)      ((DACC_MR_STARTUP_Msk & ((value) << DACC_MR_STARTUP_Pos)))\r
+#define DACC_MR_CLKDIV_Pos          16\r
+#define DACC_MR_CLKDIV_Msk          (0xFFFFu << DACC_MR_CLKDIV_Pos) /**< \brief (DACC_MR) Clock Divider for Internal Trigger */\r
+#define DACC_MR_CLKDIV(value)       ((DACC_MR_CLKDIV_Msk & ((value) << DACC_MR_CLKDIV_Pos)))\r
+/* -------- DACC_CDR : (DACC Offset: 0x08) Conversion Data Register -------- */\r
+#define DACC_CDR_DATA_Pos           0\r
+#define DACC_CDR_DATA_Msk           (0xFFFFFFFFu << DACC_CDR_DATA_Pos) /**< \brief (DACC_CDR) Data to Convert */\r
+#define DACC_CDR_DATA(value)        ((DACC_CDR_DATA_Msk & ((value) << DACC_CDR_DATA_Pos)))\r
+/* -------- DACC_IER : (DACC Offset: 0x0C) Interrupt Enable Register -------- */\r
+#define DACC_IER_TXRDY              (0x1u <<  0) /**< \brief (DACC_IER) Transmit Ready Interrupt Enable */\r
+/* -------- DACC_IDR : (DACC Offset: 0x10) Interrupt Disable Register -------- */\r
+#define DACC_IDR_TXRDY              (0x1u <<  0) /**< \brief (DACC_IDR) Transmit Ready Interrupt Disable */\r
+/* -------- DACC_IMR : (DACC Offset: 0x14) Interrupt Mask Register -------- */\r
+#define DACC_IMR_TXRDY              (0x1u <<  0) /**< \brief (DACC_IMR) Transmit Ready Interrupt Mask */\r
+/* -------- DACC_ISR : (DACC Offset: 0x18) Interrupt Status Register -------- */\r
+#define DACC_ISR_TXRDY              (0x1u <<  0) /**< \brief (DACC_ISR) Transmit Ready Interrupt Status */\r
+/* -------- DACC_WPMR : (DACC Offset: 0xE4) Write Protect Mode Register -------- */\r
+#define DACC_WPMR_WPEN              (0x1u <<  0) /**< \brief (DACC_WPMR) Write Protect Enable */\r
+#define DACC_WPMR_WPKEY_Pos         8\r
+#define DACC_WPMR_WPKEY_Msk         (0xFFFFFFu << DACC_WPMR_WPKEY_Pos) /**< \brief (DACC_WPMR) Write Protect Key */\r
+#define DACC_WPMR_WPKEY(value)      ((DACC_WPMR_WPKEY_Msk & ((value) << DACC_WPMR_WPKEY_Pos)))\r
+/* -------- DACC_WPSR : (DACC Offset: 0xE8) Write Protect Status Register -------- */\r
+#define DACC_WPSR_WPROTERR          (0x1u <<  0) /**< \brief (DACC_WPSR) Write Protection Error */\r
+#define DACC_WPSR_WPROTADDR_Pos     8\r
+#define DACC_WPSR_WPROTADDR_Msk     (0xFFu << DACC_WPSR_WPROTADDR_Pos) /**< \brief (DACC_WPSR) Write Protection Error Address */\r
+#define DACC_WPSR_WPROTADDR(value)  ((DACC_WPSR_WPROTADDR_Msk & ((value) << DACC_WPSR_WPROTADDR_Pos)))\r
+/* -------- DACC_VERSION : (DACC Offset: 0xFC) Version Register -------- */\r
+#define DACC_VERSION_VERSION_Pos    0\r
+#define DACC_VERSION_VERSION_Msk    (0xFFFu << DACC_VERSION_VERSION_Pos) /**< \brief (DACC_VERSION) Version Number */\r
+#define DACC_VERSION_VERSION(value) ((DACC_VERSION_VERSION_Msk & ((value) << DACC_VERSION_VERSION_Pos)))\r
+#define DACC_VERSION_VARIANT_Pos    16\r
+#define DACC_VERSION_VARIANT_Msk    (0x7u << DACC_VERSION_VARIANT_Pos) /**< \brief (DACC_VERSION) Variant Number */\r
+#define DACC_VERSION_VARIANT(value) ((DACC_VERSION_VARIANT_Msk & ((value) << DACC_VERSION_VARIANT_Pos)))\r
+\r
+/*@}*/\r
+\r
+/* ============================================================================= */\r
+/**  SOFTWARE API DEFINITION FOR EIC */\r
+/* ============================================================================= */\r
+/** \addtogroup SAM4L_EIC External Interrupt Controller */\r
+/*@{*/\r
+\r
+#define REV_EIC        0x302\r
+\r
+#ifndef __ASSEMBLY__\r
+/** \brief EIC hardware registers */\r
+typedef struct {\r
+  WoReg   EIC_IER;         /**< \brief (EIC Offset: 0x000) Interrupt Enable Register */\r
+  WoReg   EIC_IDR;         /**< \brief (EIC Offset: 0x004) Interrupt Disable Register */\r
+  RoReg   EIC_IMR;         /**< \brief (EIC Offset: 0x008) Interrupt Mask Register */\r
+  RoReg   EIC_ISR;         /**< \brief (EIC Offset: 0x00C) Interrupt Status Register */\r
+  WoReg   EIC_ICR;         /**< \brief (EIC Offset: 0x010) Interrupt Clear Register */\r
+  RwReg   EIC_MODE;        /**< \brief (EIC Offset: 0x014) Mode Register */\r
+  RwReg   EIC_EDGE;        /**< \brief (EIC Offset: 0x018) Edge Register */\r
+  RwReg   EIC_LEVEL;       /**< \brief (EIC Offset: 0x01C) Level Register */\r
+  RwReg   EIC_FILTER;      /**< \brief (EIC Offset: 0x020) Filter Register */\r
+  RoReg   Reserved1[1];\r
+  RwReg   EIC_ASYNC;       /**< \brief (EIC Offset: 0x028) Asynchronous Register */\r
+  RoReg   Reserved2[1];\r
+  WoReg   EIC_EN;          /**< \brief (EIC Offset: 0x030) Enable Register */\r
+  WoReg   EIC_DIS;         /**< \brief (EIC Offset: 0x034) Disable Register */\r
+  RoReg   EIC_CTRL;        /**< \brief (EIC Offset: 0x038) Control Register */\r
+  RoReg   Reserved3[240];\r
+  RoReg   EIC_VERSION;     /**< \brief (EIC Offset: 0x3FC) Version Register */\r
+} Eic;\r
+#endif /* __ASSEMBLY__ */\r
+/* -------- EIC_IER : (EIC Offset: 0x000) Interrupt Enable Register -------- */\r
+#define EIC_IER_NMI                 (0x1u <<  0) /**< \brief (EIC_IER) External Non Maskable CPU interrupt */\r
+#define EIC_IER_INT1                (0x1u <<  1) /**< \brief (EIC_IER) External Interrupt 1 */\r
+#define   EIC_IER_INT1_0            (0x0u <<  1) /**< \brief (EIC_IER) No effect */\r
+#define   EIC_IER_INT1_1            (0x1u <<  1) /**< \brief (EIC_IER) Enable Interrupt. */\r
+#define EIC_IER_INT2                (0x1u <<  2) /**< \brief (EIC_IER) External Interrupt 2 */\r
+#define   EIC_IER_INT2_0            (0x0u <<  2) /**< \brief (EIC_IER) No effect */\r
+#define   EIC_IER_INT2_1            (0x1u <<  2) /**< \brief (EIC_IER) Enable Interrupt. */\r
+#define EIC_IER_INT3                (0x1u <<  3) /**< \brief (EIC_IER) External Interrupt 3 */\r
+#define   EIC_IER_INT3_0            (0x0u <<  3) /**< \brief (EIC_IER) No effect */\r
+#define   EIC_IER_INT3_1            (0x1u <<  3) /**< \brief (EIC_IER) Enable Interrupt. */\r
+#define EIC_IER_INT4                (0x1u <<  4) /**< \brief (EIC_IER) External Interrupt 4 */\r
+#define   EIC_IER_INT4_0            (0x0u <<  4) /**< \brief (EIC_IER) No effect */\r
+#define   EIC_IER_INT4_1            (0x1u <<  4) /**< \brief (EIC_IER) Enable Interrupt. */\r
+#define EIC_IER_INT5                (0x1u <<  5) /**< \brief (EIC_IER) External Interrupt 5 */\r
+#define EIC_IER_INT6                (0x1u <<  6) /**< \brief (EIC_IER) External Interrupt 6 */\r
+#define EIC_IER_INT7                (0x1u <<  7) /**< \brief (EIC_IER) External Interrupt 7 */\r
+#define EIC_IER_INT8                (0x1u <<  8) /**< \brief (EIC_IER) External Interrupt 8 */\r
+#define EIC_IER_INT9                (0x1u <<  9) /**< \brief (EIC_IER) External Interrupt 9 */\r
+#define EIC_IER_INT10               (0x1u << 10) /**< \brief (EIC_IER) External Interrupt 10 */\r
+#define EIC_IER_INT11               (0x1u << 11) /**< \brief (EIC_IER) External Interrupt 11 */\r
+#define EIC_IER_INT12               (0x1u << 12) /**< \brief (EIC_IER) External Interrupt 12 */\r
+#define EIC_IER_INT13               (0x1u << 13) /**< \brief (EIC_IER) External Interrupt 13 */\r
+#define EIC_IER_INT14               (0x1u << 14) /**< \brief (EIC_IER) External Interrupt 14 */\r
+#define EIC_IER_INT15               (0x1u << 15) /**< \brief (EIC_IER) External Interrupt 15 */\r
+/* -------- EIC_IDR : (EIC Offset: 0x004) Interrupt Disable Register -------- */\r
+#define EIC_IDR_NMI                 (0x1u <<  0) /**< \brief (EIC_IDR) External Non Maskable CPU interrupt */\r
+#define EIC_IDR_INT1                (0x1u <<  1) /**< \brief (EIC_IDR) External Interrupt 1 */\r
+#define   EIC_IDR_INT1_0            (0x0u <<  1) /**< \brief (EIC_IDR) No effect */\r
+#define   EIC_IDR_INT1_1            (0x1u <<  1) /**< \brief (EIC_IDR) Disable Interrupt. */\r
+#define EIC_IDR_INT2                (0x1u <<  2) /**< \brief (EIC_IDR) External Interrupt 2 */\r
+#define   EIC_IDR_INT2_0            (0x0u <<  2) /**< \brief (EIC_IDR) No effect */\r
+#define   EIC_IDR_INT2_1            (0x1u <<  2) /**< \brief (EIC_IDR) Disable Interrupt. */\r
+#define EIC_IDR_INT3                (0x1u <<  3) /**< \brief (EIC_IDR) External Interrupt 3 */\r
+#define   EIC_IDR_INT3_0            (0x0u <<  3) /**< \brief (EIC_IDR) No effect */\r
+#define   EIC_IDR_INT3_1            (0x1u <<  3) /**< \brief (EIC_IDR) Disable Interrupt. */\r
+#define EIC_IDR_INT4                (0x1u <<  4) /**< \brief (EIC_IDR) External Interrupt 4 */\r
+#define   EIC_IDR_INT4_0            (0x0u <<  4) /**< \brief (EIC_IDR) No effect */\r
+#define   EIC_IDR_INT4_1            (0x1u <<  4) /**< \brief (EIC_IDR) Disable Interrupt. */\r
+#define EIC_IDR_INT5                (0x1u <<  5) /**< \brief (EIC_IDR) External Interrupt 5 */\r
+#define EIC_IDR_INT6                (0x1u <<  6) /**< \brief (EIC_IDR) External Interrupt 6 */\r
+#define EIC_IDR_INT7                (0x1u <<  7) /**< \brief (EIC_IDR) External Interrupt 7 */\r
+#define EIC_IDR_INT8                (0x1u <<  8) /**< \brief (EIC_IDR) External Interrupt 8 */\r
+#define EIC_IDR_INT9                (0x1u <<  9) /**< \brief (EIC_IDR) External Interrupt 9 */\r
+#define EIC_IDR_INT10               (0x1u << 10) /**< \brief (EIC_IDR) External Interrupt 10 */\r
+#define EIC_IDR_INT11               (0x1u << 11) /**< \brief (EIC_IDR) External Interrupt 11 */\r
+#define EIC_IDR_INT12               (0x1u << 12) /**< \brief (EIC_IDR) External Interrupt 12 */\r
+#define EIC_IDR_INT13               (0x1u << 13) /**< \brief (EIC_IDR) External Interrupt 13 */\r
+#define EIC_IDR_INT14               (0x1u << 14) /**< \brief (EIC_IDR) External Interrupt 14 */\r
+#define EIC_IDR_INT15               (0x1u << 15) /**< \brief (EIC_IDR) External Interrupt 15 */\r
+/* -------- EIC_IMR : (EIC Offset: 0x008) Interrupt Mask Register -------- */\r
+#define EIC_IMR_NMI                 (0x1u <<  0) /**< \brief (EIC_IMR) External Non Maskable CPU interrupt */\r
+#define EIC_IMR_INT1                (0x1u <<  1) /**< \brief (EIC_IMR) External Interrupt 1 */\r
+#define   EIC_IMR_INT1_0            (0x0u <<  1) /**< \brief (EIC_IMR) Interrupt is disabled */\r
+#define   EIC_IMR_INT1_1            (0x1u <<  1) /**< \brief (EIC_IMR) Interrupt is enabled. */\r
+#define EIC_IMR_INT2                (0x1u <<  2) /**< \brief (EIC_IMR) External Interrupt 2 */\r
+#define   EIC_IMR_INT2_0            (0x0u <<  2) /**< \brief (EIC_IMR) Interrupt is disabled */\r
+#define   EIC_IMR_INT2_1            (0x1u <<  2) /**< \brief (EIC_IMR) Interrupt is enabled. */\r
+#define EIC_IMR_INT3                (0x1u <<  3) /**< \brief (EIC_IMR) External Interrupt 3 */\r
+#define   EIC_IMR_INT3_0            (0x0u <<  3) /**< \brief (EIC_IMR) Interrupt is disabled */\r
+#define   EIC_IMR_INT3_1            (0x1u <<  3) /**< \brief (EIC_IMR) Interrupt is enabled. */\r
+#define EIC_IMR_INT4                (0x1u <<  4) /**< \brief (EIC_IMR) External Interrupt 4 */\r
+#define   EIC_IMR_INT4_0            (0x0u <<  4) /**< \brief (EIC_IMR) Interrupt is disabled */\r
+#define   EIC_IMR_INT4_1            (0x1u <<  4) /**< \brief (EIC_IMR) Interrupt is enabled. */\r
+#define EIC_IMR_INT5                (0x1u <<  5) /**< \brief (EIC_IMR) External Interrupt 5 */\r
+#define EIC_IMR_INT6                (0x1u <<  6) /**< \brief (EIC_IMR) External Interrupt 6 */\r
+#define EIC_IMR_INT7                (0x1u <<  7) /**< \brief (EIC_IMR) External Interrupt 7 */\r
+#define EIC_IMR_INT8                (0x1u <<  8) /**< \brief (EIC_IMR) External Interrupt 8 */\r
+#define EIC_IMR_INT9                (0x1u <<  9) /**< \brief (EIC_IMR) External Interrupt 9 */\r
+#define EIC_IMR_INT10               (0x1u << 10) /**< \brief (EIC_IMR) External Interrupt 10 */\r
+#define EIC_IMR_INT11               (0x1u << 11) /**< \brief (EIC_IMR) External Interrupt 11 */\r
+#define EIC_IMR_INT12               (0x1u << 12) /**< \brief (EIC_IMR) External Interrupt 12 */\r
+#define EIC_IMR_INT13               (0x1u << 13) /**< \brief (EIC_IMR) External Interrupt 13 */\r
+#define EIC_IMR_INT14               (0x1u << 14) /**< \brief (EIC_IMR) External Interrupt 14 */\r
+#define EIC_IMR_INT15               (0x1u << 15) /**< \brief (EIC_IMR) External Interrupt 15 */\r
+/* -------- EIC_ISR : (EIC Offset: 0x00C) Interrupt Status Register -------- */\r
+#define EIC_ISR_NMI                 (0x1u <<  0) /**< \brief (EIC_ISR) External Non Maskable CPU interrupt */\r
+#define EIC_ISR_INT1                (0x1u <<  1) /**< \brief (EIC_ISR) External Interrupt 1 */\r
+#define   EIC_ISR_INT1_0            (0x0u <<  1) /**< \brief (EIC_ISR) An interrupt event has not occurred */\r
+#define   EIC_ISR_INT1_1            (0x1u <<  1) /**< \brief (EIC_ISR) An interrupt event has occurred. */\r
+#define EIC_ISR_INT2                (0x1u <<  2) /**< \brief (EIC_ISR) External Interrupt 2 */\r
+#define   EIC_ISR_INT2_0            (0x0u <<  2) /**< \brief (EIC_ISR) An interrupt event has not occurred */\r
+#define   EIC_ISR_INT2_1            (0x1u <<  2) /**< \brief (EIC_ISR) An interrupt event has occurred. */\r
+#define EIC_ISR_INT3                (0x1u <<  3) /**< \brief (EIC_ISR) External Interrupt 3 */\r
+#define   EIC_ISR_INT3_0            (0x0u <<  3) /**< \brief (EIC_ISR) An interrupt event has not occurred */\r
+#define   EIC_ISR_INT3_1            (0x1u <<  3) /**< \brief (EIC_ISR) An interrupt event has occurred. */\r
+#define EIC_ISR_INT4                (0x1u <<  4) /**< \brief (EIC_ISR) External Interrupt 4 */\r
+#define   EIC_ISR_INT4_0            (0x0u <<  4) /**< \brief (EIC_ISR) An interrupt event has not occurred */\r
+#define   EIC_ISR_INT4_1            (0x1u <<  4) /**< \brief (EIC_ISR) An interrupt event has occurred. */\r
+#define EIC_ISR_INT5                (0x1u <<  5) /**< \brief (EIC_ISR) External Interrupt 5 */\r
+#define EIC_ISR_INT6                (0x1u <<  6) /**< \brief (EIC_ISR) External Interrupt 6 */\r
+#define EIC_ISR_INT7                (0x1u <<  7) /**< \brief (EIC_ISR) External Interrupt 7 */\r
+#define EIC_ISR_INT8                (0x1u <<  8) /**< \brief (EIC_ISR) External Interrupt 8 */\r
+#define EIC_ISR_INT9                (0x1u <<  9) /**< \brief (EIC_ISR) External Interrupt 9 */\r
+#define EIC_ISR_INT10               (0x1u << 10) /**< \brief (EIC_ISR) External Interrupt 10 */\r
+#define EIC_ISR_INT11               (0x1u << 11) /**< \brief (EIC_ISR) External Interrupt 11 */\r
+#define EIC_ISR_INT12               (0x1u << 12) /**< \brief (EIC_ISR) External Interrupt 12 */\r
+#define EIC_ISR_INT13               (0x1u << 13) /**< \brief (EIC_ISR) External Interrupt 13 */\r
+#define EIC_ISR_INT14               (0x1u << 14) /**< \brief (EIC_ISR) External Interrupt 14 */\r
+#define EIC_ISR_INT15               (0x1u << 15) /**< \brief (EIC_ISR) External Interrupt 15 */\r
+/* -------- EIC_ICR : (EIC Offset: 0x010) Interrupt Clear Register -------- */\r
+#define EIC_ICR_NMI                 (0x1u <<  0) /**< \brief (EIC_ICR) External Non Maskable CPU interrupt */\r
+#define EIC_ICR_INT1                (0x1u <<  1) /**< \brief (EIC_ICR) External Interrupt 1 */\r
+#define   EIC_ICR_INT1_0            (0x0u <<  1) /**< \brief (EIC_ICR) No effect */\r
+#define   EIC_ICR_INT1_1            (0x1u <<  1) /**< \brief (EIC_ICR) Clear Interrupt. */\r
+#define EIC_ICR_INT2                (0x1u <<  2) /**< \brief (EIC_ICR) External Interrupt 2 */\r
+#define   EIC_ICR_INT2_0            (0x0u <<  2) /**< \brief (EIC_ICR) No effect */\r
+#define   EIC_ICR_INT2_1            (0x1u <<  2) /**< \brief (EIC_ICR) Clear Interrupt. */\r
+#define EIC_ICR_INT3                (0x1u <<  3) /**< \brief (EIC_ICR) External Interrupt 3 */\r
+#define   EIC_ICR_INT3_0            (0x0u <<  3) /**< \brief (EIC_ICR) No effect */\r
+#define   EIC_ICR_INT3_1            (0x1u <<  3) /**< \brief (EIC_ICR) Clear Interrupt. */\r
+#define EIC_ICR_INT4                (0x1u <<  4) /**< \brief (EIC_ICR) External Interrupt 4 */\r
+#define   EIC_ICR_INT4_0            (0x0u <<  4) /**< \brief (EIC_ICR) No effect */\r
+#define   EIC_ICR_INT4_1            (0x1u <<  4) /**< \brief (EIC_ICR) Clear Interrupt. */\r
+#define EIC_ICR_INT5                (0x1u <<  5) /**< \brief (EIC_ICR) External Interrupt 5 */\r
+#define EIC_ICR_INT6                (0x1u <<  6) /**< \brief (EIC_ICR) External Interrupt 6 */\r
+#define EIC_ICR_INT7                (0x1u <<  7) /**< \brief (EIC_ICR) External Interrupt 7 */\r
+#define EIC_ICR_INT8                (0x1u <<  8) /**< \brief (EIC_ICR) External Interrupt 8 */\r
+#define EIC_ICR_INT9                (0x1u <<  9) /**< \brief (EIC_ICR) External Interrupt 9 */\r
+#define EIC_ICR_INT10               (0x1u << 10) /**< \brief (EIC_ICR) External Interrupt 10 */\r
+#define EIC_ICR_INT11               (0x1u << 11) /**< \brief (EIC_ICR) External Interrupt 11 */\r
+#define EIC_ICR_INT12               (0x1u << 12) /**< \brief (EIC_ICR) External Interrupt 12 */\r
+#define EIC_ICR_INT13               (0x1u << 13) /**< \brief (EIC_ICR) External Interrupt 13 */\r
+#define EIC_ICR_INT14               (0x1u << 14) /**< \brief (EIC_ICR) External Interrupt 14 */\r
+#define EIC_ICR_INT15               (0x1u << 15) /**< \brief (EIC_ICR) External Interrupt 15 */\r
+/* -------- EIC_MODE : (EIC Offset: 0x014) Mode Register -------- */\r
+#define EIC_MODE_NMI                (0x1u <<  0) /**< \brief (EIC_MODE) External Non Maskable CPU interrupt */\r
+#define EIC_MODE_INT1               (0x1u <<  1) /**< \brief (EIC_MODE) External Interrupt 1 */\r
+#define   EIC_MODE_INT1_0           (0x0u <<  1) /**< \brief (EIC_MODE) Edge triggered interrupt */\r
+#define   EIC_MODE_INT1_1           (0x1u <<  1) /**< \brief (EIC_MODE) Level triggered interrupt */\r
+#define EIC_MODE_INT2               (0x1u <<  2) /**< \brief (EIC_MODE) External Interrupt 2 */\r
+#define   EIC_MODE_INT2_0           (0x0u <<  2) /**< \brief (EIC_MODE) Edge triggered interrupt */\r
+#define   EIC_MODE_INT2_1           (0x1u <<  2) /**< \brief (EIC_MODE) Level triggered interrupt */\r
+#define EIC_MODE_INT3               (0x1u <<  3) /**< \brief (EIC_MODE) External Interrupt 3 */\r
+#define   EIC_MODE_INT3_0           (0x0u <<  3) /**< \brief (EIC_MODE) Edge triggered interrupt */\r
+#define   EIC_MODE_INT3_1           (0x1u <<  3) /**< \brief (EIC_MODE) Level triggered interrupt */\r
+#define EIC_MODE_INT4               (0x1u <<  4) /**< \brief (EIC_MODE) External Interrupt 4 */\r
+#define   EIC_MODE_INT4_0           (0x0u <<  4) /**< \brief (EIC_MODE) Edge triggered interrupt */\r
+#define   EIC_MODE_INT4_1           (0x1u <<  4) /**< \brief (EIC_MODE) Level triggered interrupt */\r
+#define EIC_MODE_INT5               (0x1u <<  5) /**< \brief (EIC_MODE) External Interrupt 5 */\r
+#define EIC_MODE_INT6               (0x1u <<  6) /**< \brief (EIC_MODE) External Interrupt 6 */\r
+#define EIC_MODE_INT7               (0x1u <<  7) /**< \brief (EIC_MODE) External Interrupt 7 */\r
+#define EIC_MODE_INT8               (0x1u <<  8) /**< \brief (EIC_MODE) External Interrupt 8 */\r
+#define EIC_MODE_INT9               (0x1u <<  9) /**< \brief (EIC_MODE) External Interrupt 9 */\r
+#define EIC_MODE_INT10              (0x1u << 10) /**< \brief (EIC_MODE) External Interrupt 10 */\r
+#define EIC_MODE_INT11              (0x1u << 11) /**< \brief (EIC_MODE) External Interrupt 11 */\r
+#define EIC_MODE_INT12              (0x1u << 12) /**< \brief (EIC_MODE) External Interrupt 12 */\r
+#define EIC_MODE_INT13              (0x1u << 13) /**< \brief (EIC_MODE) External Interrupt 13 */\r
+#define EIC_MODE_INT14              (0x1u << 14) /**< \brief (EIC_MODE) External Interrupt 14 */\r
+#define EIC_MODE_INT15              (0x1u << 15) /**< \brief (EIC_MODE) External Interrupt 15 */\r
+/* -------- EIC_EDGE : (EIC Offset: 0x018) Edge Register -------- */\r
+#define EIC_EDGE_NMI                (0x1u <<  0) /**< \brief (EIC_EDGE) External Non Maskable CPU interrupt */\r
+#define EIC_EDGE_INT1               (0x1u <<  1) /**< \brief (EIC_EDGE) External Interrupt 1 */\r
+#define   EIC_EDGE_INT1_0           (0x0u <<  1) /**< \brief (EIC_EDGE) Triggers on falling edge */\r
+#define   EIC_EDGE_INT1_1           (0x1u <<  1) /**< \brief (EIC_EDGE) Triggers on rising edge. */\r
+#define EIC_EDGE_INT2               (0x1u <<  2) /**< \brief (EIC_EDGE) External Interrupt 2 */\r
+#define   EIC_EDGE_INT2_0           (0x0u <<  2) /**< \brief (EIC_EDGE) Triggers on falling edge */\r
+#define   EIC_EDGE_INT2_1           (0x1u <<  2) /**< \brief (EIC_EDGE) Triggers on rising edge. */\r
+#define EIC_EDGE_INT3               (0x1u <<  3) /**< \brief (EIC_EDGE) External Interrupt 3 */\r
+#define   EIC_EDGE_INT3_0           (0x0u <<  3) /**< \brief (EIC_EDGE) Triggers on falling edge */\r
+#define   EIC_EDGE_INT3_1           (0x1u <<  3) /**< \brief (EIC_EDGE) Triggers on rising edge. */\r
+#define EIC_EDGE_INT4               (0x1u <<  4) /**< \brief (EIC_EDGE) External Interrupt 4 */\r
+#define   EIC_EDGE_INT4_0           (0x0u <<  4) /**< \brief (EIC_EDGE) Triggers on falling edge */\r
+#define   EIC_EDGE_INT4_1           (0x1u <<  4) /**< \brief (EIC_EDGE) Triggers on rising edge. */\r
+#define EIC_EDGE_INT5               (0x1u <<  5) /**< \brief (EIC_EDGE) External Interrupt 5 */\r
+#define EIC_EDGE_INT6               (0x1u <<  6) /**< \brief (EIC_EDGE) External Interrupt 6 */\r
+#define EIC_EDGE_INT7               (0x1u <<  7) /**< \brief (EIC_EDGE) External Interrupt 7 */\r
+#define EIC_EDGE_INT8               (0x1u <<  8) /**< \brief (EIC_EDGE) External Interrupt 8 */\r
+#define EIC_EDGE_INT9               (0x1u <<  9) /**< \brief (EIC_EDGE) External Interrupt 9 */\r
+#define EIC_EDGE_INT10              (0x1u << 10) /**< \brief (EIC_EDGE) External Interrupt 10 */\r
+#define EIC_EDGE_INT11              (0x1u << 11) /**< \brief (EIC_EDGE) External Interrupt 11 */\r
+#define EIC_EDGE_INT12              (0x1u << 12) /**< \brief (EIC_EDGE) External Interrupt 12 */\r
+#define EIC_EDGE_INT13              (0x1u << 13) /**< \brief (EIC_EDGE) External Interrupt 13 */\r
+#define EIC_EDGE_INT14              (0x1u << 14) /**< \brief (EIC_EDGE) External Interrupt 14 */\r
+#define EIC_EDGE_INT15              (0x1u << 15) /**< \brief (EIC_EDGE) External Interrupt 15 */\r
+/* -------- EIC_LEVEL : (EIC Offset: 0x01C) Level Register -------- */\r
+#define EIC_LEVEL_NMI               (0x1u <<  0) /**< \brief (EIC_LEVEL) External Non Maskable CPU interrupt */\r
+#define EIC_LEVEL_INT1              (0x1u <<  1) /**< \brief (EIC_LEVEL) External Interrupt 1 */\r
+#define EIC_LEVEL_INT2              (0x1u <<  2) /**< \brief (EIC_LEVEL) External Interrupt 2 */\r
+#define EIC_LEVEL_INT3              (0x1u <<  3) /**< \brief (EIC_LEVEL) External Interrupt 3 */\r
+#define EIC_LEVEL_INT4              (0x1u <<  4) /**< \brief (EIC_LEVEL) External Interrupt 4 */\r
+#define EIC_LEVEL_INT5              (0x1u <<  5) /**< \brief (EIC_LEVEL) External Interrupt 5 */\r
+#define EIC_LEVEL_INT6              (0x1u <<  6) /**< \brief (EIC_LEVEL) External Interrupt 6 */\r
+#define EIC_LEVEL_INT7              (0x1u <<  7) /**< \brief (EIC_LEVEL) External Interrupt 7 */\r
+#define EIC_LEVEL_INT8              (0x1u <<  8) /**< \brief (EIC_LEVEL) External Interrupt 8 */\r
+#define EIC_LEVEL_INT9              (0x1u <<  9) /**< \brief (EIC_LEVEL) External Interrupt 9 */\r
+#define EIC_LEVEL_INT10             (0x1u << 10) /**< \brief (EIC_LEVEL) External Interrupt 10 */\r
+#define EIC_LEVEL_INT11             (0x1u << 11) /**< \brief (EIC_LEVEL) External Interrupt 11 */\r
+#define EIC_LEVEL_INT12             (0x1u << 12) /**< \brief (EIC_LEVEL) External Interrupt 12 */\r
+#define EIC_LEVEL_INT13             (0x1u << 13) /**< \brief (EIC_LEVEL) External Interrupt 13 */\r
+#define EIC_LEVEL_INT14             (0x1u << 14) /**< \brief (EIC_LEVEL) External Interrupt 14 */\r
+#define EIC_LEVEL_INT15             (0x1u << 15) /**< \brief (EIC_LEVEL) External Interrupt 15 */\r
+/* -------- EIC_FILTER : (EIC Offset: 0x020) Filter Register -------- */\r
+#define EIC_FILTER_NMI              (0x1u <<  0) /**< \brief (EIC_FILTER) External Non Maskable CPU interrupt */\r
+#define EIC_FILTER_INT1             (0x1u <<  1) /**< \brief (EIC_FILTER) External Interrupt 1 */\r
+#define EIC_FILTER_INT2             (0x1u <<  2) /**< \brief (EIC_FILTER) External Interrupt 2 */\r
+#define EIC_FILTER_INT3             (0x1u <<  3) /**< \brief (EIC_FILTER) External Interrupt 3 */\r
+#define EIC_FILTER_INT4             (0x1u <<  4) /**< \brief (EIC_FILTER) External Interrupt 4 */\r
+#define EIC_FILTER_INT5             (0x1u <<  5) /**< \brief (EIC_FILTER) External Interrupt 5 */\r
+#define EIC_FILTER_INT6             (0x1u <<  6) /**< \brief (EIC_FILTER) External Interrupt 6 */\r
+#define EIC_FILTER_INT7             (0x1u <<  7) /**< \brief (EIC_FILTER) External Interrupt 7 */\r
+#define EIC_FILTER_INT8             (0x1u <<  8) /**< \brief (EIC_FILTER) External Interrupt 8 */\r
+#define EIC_FILTER_INT9             (0x1u <<  9) /**< \brief (EIC_FILTER) External Interrupt 9 */\r
+#define EIC_FILTER_INT10            (0x1u << 10) /**< \brief (EIC_FILTER) External Interrupt 10 */\r
+#define EIC_FILTER_INT11            (0x1u << 11) /**< \brief (EIC_FILTER) External Interrupt 11 */\r
+#define EIC_FILTER_INT12            (0x1u << 12) /**< \brief (EIC_FILTER) External Interrupt 12 */\r
+#define EIC_FILTER_INT13            (0x1u << 13) /**< \brief (EIC_FILTER) External Interrupt 13 */\r
+#define EIC_FILTER_INT14            (0x1u << 14) /**< \brief (EIC_FILTER) External Interrupt 14 */\r
+#define EIC_FILTER_INT15            (0x1u << 15) /**< \brief (EIC_FILTER) External Interrupt 15 */\r
+/* -------- EIC_ASYNC : (EIC Offset: 0x028) Asynchronous Register -------- */\r
+#define EIC_ASYNC_NMI               (0x1u <<  0) /**< \brief (EIC_ASYNC) External Non Maskable CPU interrupt */\r
+#define EIC_ASYNC_INT1              (0x1u <<  1) /**< \brief (EIC_ASYNC) External Interrupt 1 */\r
+#define EIC_ASYNC_INT2              (0x1u <<  2) /**< \brief (EIC_ASYNC) External Interrupt 2 */\r
+#define EIC_ASYNC_INT3              (0x1u <<  3) /**< \brief (EIC_ASYNC) External Interrupt 3 */\r
+#define EIC_ASYNC_INT4              (0x1u <<  4) /**< \brief (EIC_ASYNC) External Interrupt 4 */\r
+#define EIC_ASYNC_INT5              (0x1u <<  5) /**< \brief (EIC_ASYNC) External Interrupt 5 */\r
+#define EIC_ASYNC_INT6              (0x1u <<  6) /**< \brief (EIC_ASYNC) External Interrupt 6 */\r
+#define EIC_ASYNC_INT7              (0x1u <<  7) /**< \brief (EIC_ASYNC) External Interrupt 7 */\r
+#define EIC_ASYNC_INT8              (0x1u <<  8) /**< \brief (EIC_ASYNC) External Interrupt 8 */\r
+#define EIC_ASYNC_INT9              (0x1u <<  9) /**< \brief (EIC_ASYNC) External Interrupt 9 */\r
+#define EIC_ASYNC_INT10             (0x1u << 10) /**< \brief (EIC_ASYNC) External Interrupt 10 */\r
+#define EIC_ASYNC_INT11             (0x1u << 11) /**< \brief (EIC_ASYNC) External Interrupt 11 */\r
+#define EIC_ASYNC_INT12             (0x1u << 12) /**< \brief (EIC_ASYNC) External Interrupt 12 */\r
+#define EIC_ASYNC_INT13             (0x1u << 13) /**< \brief (EIC_ASYNC) External Interrupt 13 */\r
+#define EIC_ASYNC_INT14             (0x1u << 14) /**< \brief (EIC_ASYNC) External Interrupt 14 */\r
+#define EIC_ASYNC_INT15             (0x1u << 15) /**< \brief (EIC_ASYNC) External Interrupt 15 */\r
+/* -------- EIC_EN : (EIC Offset: 0x030) Enable Register -------- */\r
+#define EIC_EN_NMI                  (0x1u <<  0) /**< \brief (EIC_EN) External Non Maskable CPU interrupt */\r
+#define EIC_EN_INT1                 (0x1u <<  1) /**< \brief (EIC_EN) External Interrupt 1 */\r
+#define EIC_EN_INT2                 (0x1u <<  2) /**< \brief (EIC_EN) External Interrupt 2 */\r
+#define EIC_EN_INT3                 (0x1u <<  3) /**< \brief (EIC_EN) External Interrupt 3 */\r
+#define EIC_EN_INT4                 (0x1u <<  4) /**< \brief (EIC_EN) External Interrupt 4 */\r
+#define EIC_EN_INT5                 (0x1u <<  5) /**< \brief (EIC_EN) External Interrupt 5 */\r
+#define EIC_EN_INT6                 (0x1u <<  6) /**< \brief (EIC_EN) External Interrupt 6 */\r
+#define EIC_EN_INT7                 (0x1u <<  7) /**< \brief (EIC_EN) External Interrupt 7 */\r
+#define EIC_EN_INT8                 (0x1u <<  8) /**< \brief (EIC_EN) External Interrupt 8 */\r
+#define EIC_EN_INT9                 (0x1u <<  9) /**< \brief (EIC_EN) External Interrupt 9 */\r
+#define EIC_EN_INT10                (0x1u << 10) /**< \brief (EIC_EN) External Interrupt 10 */\r
+#define EIC_EN_INT11                (0x1u << 11) /**< \brief (EIC_EN) External Interrupt 11 */\r
+#define EIC_EN_INT12                (0x1u << 12) /**< \brief (EIC_EN) External Interrupt 12 */\r
+#define EIC_EN_INT13                (0x1u << 13) /**< \brief (EIC_EN) External Interrupt 13 */\r
+#define EIC_EN_INT14                (0x1u << 14) /**< \brief (EIC_EN) External Interrupt 14 */\r
+#define EIC_EN_INT15                (0x1u << 15) /**< \brief (EIC_EN) External Interrupt 15 */\r
+/* -------- EIC_DIS : (EIC Offset: 0x034) Disable Register -------- */\r
+#define EIC_DIS_NMI                 (0x1u <<  0) /**< \brief (EIC_DIS) External Non Maskable CPU interrupt */\r
+#define EIC_DIS_INT1                (0x1u <<  1) /**< \brief (EIC_DIS) External Interrupt 1 */\r
+#define EIC_DIS_INT2                (0x1u <<  2) /**< \brief (EIC_DIS) External Interrupt 2 */\r
+#define EIC_DIS_INT3                (0x1u <<  3) /**< \brief (EIC_DIS) External Interrupt 3 */\r
+#define EIC_DIS_INT4                (0x1u <<  4) /**< \brief (EIC_DIS) External Interrupt 4 */\r
+#define EIC_DIS_INT5                (0x1u <<  5) /**< \brief (EIC_DIS) External Interrupt 5 */\r
+#define EIC_DIS_INT6                (0x1u <<  6) /**< \brief (EIC_DIS) External Interrupt 6 */\r
+#define EIC_DIS_INT7                (0x1u <<  7) /**< \brief (EIC_DIS) External Interrupt 7 */\r
+#define EIC_DIS_INT8                (0x1u <<  8) /**< \brief (EIC_DIS) External Interrupt 8 */\r
+#define EIC_DIS_INT9                (0x1u <<  9) /**< \brief (EIC_DIS) External Interrupt 9 */\r
+#define EIC_DIS_INT10               (0x1u << 10) /**< \brief (EIC_DIS) External Interrupt 10 */\r
+#define EIC_DIS_INT11               (0x1u << 11) /**< \brief (EIC_DIS) External Interrupt 11 */\r
+#define EIC_DIS_INT12               (0x1u << 12) /**< \brief (EIC_DIS) External Interrupt 12 */\r
+#define EIC_DIS_INT13               (0x1u << 13) /**< \brief (EIC_DIS) External Interrupt 13 */\r
+#define EIC_DIS_INT14               (0x1u << 14) /**< \brief (EIC_DIS) External Interrupt 14 */\r
+#define EIC_DIS_INT15               (0x1u << 15) /**< \brief (EIC_DIS) External Interrupt 15 */\r
+/* -------- EIC_CTRL : (EIC Offset: 0x038) Control Register -------- */\r
+#define EIC_CTRL_NMI                (0x1u <<  0) /**< \brief (EIC_CTRL) External Non Maskable CPU interrupt */\r
+#define EIC_CTRL_INT1               (0x1u <<  1) /**< \brief (EIC_CTRL) External Interrupt 1 */\r
+#define EIC_CTRL_INT2               (0x1u <<  2) /**< \brief (EIC_CTRL) External Interrupt 2 */\r
+#define EIC_CTRL_INT3               (0x1u <<  3) /**< \brief (EIC_CTRL) External Interrupt 3 */\r
+#define EIC_CTRL_INT4               (0x1u <<  4) /**< \brief (EIC_CTRL) External Interrupt 4 */\r
+#define EIC_CTRL_INT5               (0x1u <<  5) /**< \brief (EIC_CTRL) External Interrupt 5 */\r
+#define EIC_CTRL_INT6               (0x1u <<  6) /**< \brief (EIC_CTRL) External Interrupt 6 */\r
+#define EIC_CTRL_INT7               (0x1u <<  7) /**< \brief (EIC_CTRL) External Interrupt 7 */\r
+#define EIC_CTRL_INT8               (0x1u <<  8) /**< \brief (EIC_CTRL) External Interrupt 8 */\r
+#define EIC_CTRL_INT9               (0x1u <<  9) /**< \brief (EIC_CTRL) External Interrupt 9 */\r
+#define EIC_CTRL_INT10              (0x1u << 10) /**< \brief (EIC_CTRL) External Interrupt 10 */\r
+#define EIC_CTRL_INT11              (0x1u << 11) /**< \brief (EIC_CTRL) External Interrupt 11 */\r
+#define EIC_CTRL_INT12              (0x1u << 12) /**< \brief (EIC_CTRL) External Interrupt 12 */\r
+#define EIC_CTRL_INT13              (0x1u << 13) /**< \brief (EIC_CTRL) External Interrupt 13 */\r
+#define EIC_CTRL_INT14              (0x1u << 14) /**< \brief (EIC_CTRL) External Interrupt 14 */\r
+#define EIC_CTRL_INT15              (0x1u << 15) /**< \brief (EIC_CTRL) External Interrupt 15 */\r
+/* -------- EIC_VERSION : (EIC Offset: 0x3FC) Version Register -------- */\r
+#define EIC_VERSION_VERSION_Pos     0\r
+#define EIC_VERSION_VERSION_Msk     (0xFFFu << EIC_VERSION_VERSION_Pos) /**< \brief (EIC_VERSION) Version bits */\r
+#define EIC_VERSION_VERSION(value)  ((EIC_VERSION_VERSION_Msk & ((value) << EIC_VERSION_VERSION_Pos)))\r
+\r
+/*@}*/\r
+\r
+/* ============================================================================= */\r
+/**  SOFTWARE API DEFINITION FOR FLASHCALW */\r
+/* ============================================================================= */\r
+/** \addtogroup SAM4L_FLASHCALW Flash Controller */\r
+/*@{*/\r
+\r
+#define REV_FLASHCALW  0x110\r
+\r
+#ifndef __ASSEMBLY__\r
+/** \brief FLASHCALW hardware registers */\r
+typedef struct {\r
+  RwReg   FLASHCALW_FCR;         /**< \brief (FLASHCALW Offset: 0x00) Flash Controller Control Register */\r
+  RwReg   FLASHCALW_FCMD;        /**< \brief (FLASHCALW Offset: 0x04) Flash Controller Command Register */\r
+  RwReg   FLASHCALW_FSR;         /**< \brief (FLASHCALW Offset: 0x08) Flash Controller Status Register */\r
+  RoReg   FLASHCALW_FPR;         /**< \brief (FLASHCALW Offset: 0x0C) Flash Controller Parameter Register */\r
+  RoReg   FLASHCALW_VERSION;     /**< \brief (FLASHCALW Offset: 0x10) Flash Controller Version Register */\r
+  RwReg   FLASHCALW_FGPFRHI;     /**< \brief (FLASHCALW Offset: 0x14) Flash Controller General Purpose Fuse Register High */\r
+  RwReg   FLASHCALW_FGPFRLO;     /**< \brief (FLASHCALW Offset: 0x18) Flash Controller General Purpose Fuse Register Low */\r
+} Flashcalw;\r
+#endif /* __ASSEMBLY__ */\r
+/* -------- FLASHCALW_FCR : (FLASHCALW Offset: 0x00) Flash Controller Control Register -------- */\r
+#define FLASHCALW_FCR_FRDY          (0x1u <<  0) /**< \brief (FLASHCALW_FCR) Flash Ready Interrupt Enable */\r
+#define   FLASHCALW_FCR_FRDY_0      (0x0u <<  0) /**< \brief (FLASHCALW_FCR) Flash Ready does not generate an interrupt */\r
+#define   FLASHCALW_FCR_FRDY_1      (0x1u <<  0) /**< \brief (FLASHCALW_FCR) Flash Ready generates an interrupt */\r
+#define FLASHCALW_FCR_LOCKE         (0x1u <<  2) /**< \brief (FLASHCALW_FCR) Lock Error Interrupt Enable */\r
+#define   FLASHCALW_FCR_LOCKE_0     (0x0u <<  2) /**< \brief (FLASHCALW_FCR) Lock Error does not generate an interrupt */\r
+#define   FLASHCALW_FCR_LOCKE_1     (0x1u <<  2) /**< \brief (FLASHCALW_FCR) Lock Error generates an interrupt */\r
+#define FLASHCALW_FCR_PROGE         (0x1u <<  3) /**< \brief (FLASHCALW_FCR) Programming Error Interrupt Enable */\r
+#define   FLASHCALW_FCR_PROGE_0     (0x0u <<  3) /**< \brief (FLASHCALW_FCR) Programming Error does not generate an interrupt */\r
+#define   FLASHCALW_FCR_PROGE_1     (0x1u <<  3) /**< \brief (FLASHCALW_FCR) Programming Error generates an interrupt */\r
+#define FLASHCALW_FCR_FWS           (0x1u <<  6) /**< \brief (FLASHCALW_FCR) Flash Wait State */\r
+#define   FLASHCALW_FCR_FWS_0       (0x0u <<  6) /**< \brief (FLASHCALW_FCR) The flash is read with 0 wait states */\r
+#define   FLASHCALW_FCR_FWS_1       (0x1u <<  6) /**< \brief (FLASHCALW_FCR) The flash is read with 1 wait states */\r
+#define FLASHCALW_FCR_WS1OPT        (0x1u <<  7) /**< \brief (FLASHCALW_FCR) Wait State 1 Optimization */\r
+/* -------- FLASHCALW_FCMD : (FLASHCALW Offset: 0x04) Flash Controller Command Register -------- */\r
+#define FLASHCALW_FCMD_CMD_Pos      0\r
+#define FLASHCALW_FCMD_CMD_Msk      (0x3Fu << FLASHCALW_FCMD_CMD_Pos) /**< \brief (FLASHCALW_FCMD) Command */\r
+#define FLASHCALW_FCMD_CMD(value)   ((FLASHCALW_FCMD_CMD_Msk & ((value) << FLASHCALW_FCMD_CMD_Pos)))\r
+#define   FLASHCALW_FCMD_CMD_NOP    (0x0u <<  0) /**< \brief (FLASHCALW_FCMD) No Operation */\r
+#define   FLASHCALW_FCMD_CMD_WP     (0x1u <<  0) /**< \brief (FLASHCALW_FCMD) Write Page */\r
+#define   FLASHCALW_FCMD_CMD_EP     (0x2u <<  0) /**< \brief (FLASHCALW_FCMD) Erase Page */\r
+#define   FLASHCALW_FCMD_CMD_CPB    (0x3u <<  0) /**< \brief (FLASHCALW_FCMD) Clear Page Buffer */\r
+#define   FLASHCALW_FCMD_CMD_LP     (0x4u <<  0) /**< \brief (FLASHCALW_FCMD) Lock Region containing page */\r
+#define   FLASHCALW_FCMD_CMD_UP     (0x5u <<  0) /**< \brief (FLASHCALW_FCMD) Unlock Region containing page */\r
+#define   FLASHCALW_FCMD_CMD_EA     (0x6u <<  0) /**< \brief (FLASHCALW_FCMD) Erase All, including secuity and fuse bits */\r
+#define   FLASHCALW_FCMD_CMD_WGPB   (0x7u <<  0) /**< \brief (FLASHCALW_FCMD) Write General-Purpose fuse Bit */\r
+#define   FLASHCALW_FCMD_CMD_EGPB   (0x8u <<  0) /**< \brief (FLASHCALW_FCMD) Erase General-Purpose fuse Bit */\r
+#define   FLASHCALW_FCMD_CMD_SSB    (0x9u <<  0) /**< \brief (FLASHCALW_FCMD) Set Security Bit */\r
+#define   FLASHCALW_FCMD_CMD_PGPFB  (0xAu <<  0) /**< \brief (FLASHCALW_FCMD) Program GPFuse Byte */\r
+#define   FLASHCALW_FCMD_CMD_EAGPF  (0xBu <<  0) /**< \brief (FLASHCALW_FCMD) Erase All GP Fuses */\r
+#define   FLASHCALW_FCMD_CMD_QPR    (0xCu <<  0) /**< \brief (FLASHCALW_FCMD) Quick Page Read */\r
+#define   FLASHCALW_FCMD_CMD_WUP    (0xDu <<  0) /**< \brief (FLASHCALW_FCMD) Write User Page */\r
+#define   FLASHCALW_FCMD_CMD_EUP    (0xEu <<  0) /**< \brief (FLASHCALW_FCMD) Erase User Page */\r
+#define   FLASHCALW_FCMD_CMD_QPRUP  (0xFu <<  0) /**< \brief (FLASHCALW_FCMD) Quick Page Read User Page */\r
+#define FLASHCALW_FCMD_PAGEN_Pos    8\r
+#define FLASHCALW_FCMD_PAGEN_Msk    (0xFFFFu << FLASHCALW_FCMD_PAGEN_Pos) /**< \brief (FLASHCALW_FCMD) Page number */\r
+#define FLASHCALW_FCMD_PAGEN(value) ((FLASHCALW_FCMD_PAGEN_Msk & ((value) << FLASHCALW_FCMD_PAGEN_Pos)))\r
+#define FLASHCALW_FCMD_KEY_Pos      24\r
+#define FLASHCALW_FCMD_KEY_Msk      (0xFFu << FLASHCALW_FCMD_KEY_Pos) /**< \brief (FLASHCALW_FCMD) Write protection key */\r
+#define FLASHCALW_FCMD_KEY(value)   ((FLASHCALW_FCMD_KEY_Msk & ((value) << FLASHCALW_FCMD_KEY_Pos)))\r
+#define   FLASHCALW_FCMD_KEY_KEY    (0xA5u << 24) /**< \brief (FLASHCALW_FCMD)  */\r
+/* -------- FLASHCALW_FSR : (FLASHCALW Offset: 0x08) Flash Controller Status Register -------- */\r
+#define FLASHCALW_FSR_FRDY          (0x1u <<  0) /**< \brief (FLASHCALW_FSR) Flash Ready Status */\r
+#define FLASHCALW_FSR_LOCKE         (0x1u <<  2) /**< \brief (FLASHCALW_FSR) Lock Error Status */\r
+#define FLASHCALW_FSR_PROGE         (0x1u <<  3) /**< \brief (FLASHCALW_FSR) Programming Error Status */\r
+#define FLASHCALW_FSR_SECURITY      (0x1u <<  4) /**< \brief (FLASHCALW_FSR) Security Bit Status */\r
+#define FLASHCALW_FSR_QPRR          (0x1u <<  5) /**< \brief (FLASHCALW_FSR) Quick Page Read Result */\r
+#define FLASHCALW_FSR_HSMODE        (0x1u <<  6) /**< \brief (FLASHCALW_FSR) High Speed Mode */\r
+#define FLASHCALW_FSR_ECCERR_Pos    8\r
+#define FLASHCALW_FSR_ECCERR_Msk    (0x3u << FLASHCALW_FSR_ECCERR_Pos) /**< \brief (FLASHCALW_FSR) ECC Error Status */\r
+#define FLASHCALW_FSR_ECCERR(value) ((FLASHCALW_FSR_ECCERR_Msk & ((value) << FLASHCALW_FSR_ECCERR_Pos)))\r
+#define   FLASHCALW_FSR_ECCERR_NOERROR (0x0u <<  8) /**< \brief (FLASHCALW_FSR) no error */\r
+#define   FLASHCALW_FSR_ECCERR_ONEECCERR (0x1u <<  8) /**< \brief (FLASHCALW_FSR) one ECC error detected */\r
+#define   FLASHCALW_FSR_ECCERR_TWOECCERR (0x2u <<  8) /**< \brief (FLASHCALW_FSR) two ECC errors detected */\r
+#define FLASHCALW_FSR_LOCK0         (0x1u << 16) /**< \brief (FLASHCALW_FSR) Lock Region 0 Lock Status */\r
+#define FLASHCALW_FSR_LOCK1         (0x1u << 17) /**< \brief (FLASHCALW_FSR) Lock Region 1 Lock Status */\r
+#define FLASHCALW_FSR_LOCK2         (0x1u << 18) /**< \brief (FLASHCALW_FSR) Lock Region 2 Lock Status */\r
+#define FLASHCALW_FSR_LOCK3         (0x1u << 19) /**< \brief (FLASHCALW_FSR) Lock Region 3 Lock Status */\r
+#define FLASHCALW_FSR_LOCK4         (0x1u << 20) /**< \brief (FLASHCALW_FSR) Lock Region 4 Lock Status */\r
+#define FLASHCALW_FSR_LOCK5         (0x1u << 21) /**< \brief (FLASHCALW_FSR) Lock Region 5 Lock Status */\r
+#define FLASHCALW_FSR_LOCK6         (0x1u << 22) /**< \brief (FLASHCALW_FSR) Lock Region 6 Lock Status */\r
+#define FLASHCALW_FSR_LOCK7         (0x1u << 23) /**< \brief (FLASHCALW_FSR) Lock Region 7 Lock Status */\r
+#define FLASHCALW_FSR_LOCK8         (0x1u << 24) /**< \brief (FLASHCALW_FSR) Lock Region 8 Lock Status */\r
+#define FLASHCALW_FSR_LOCK9         (0x1u << 25) /**< \brief (FLASHCALW_FSR) Lock Region 9 Lock Status */\r
+#define FLASHCALW_FSR_LOCK10        (0x1u << 26) /**< \brief (FLASHCALW_FSR) Lock Region 10 Lock Status */\r
+#define FLASHCALW_FSR_LOCK11        (0x1u << 27) /**< \brief (FLASHCALW_FSR) Lock Region 11 Lock Status */\r
+#define FLASHCALW_FSR_LOCK12        (0x1u << 28) /**< \brief (FLASHCALW_FSR) Lock Region 12 Lock Status */\r
+#define FLASHCALW_FSR_LOCK13        (0x1u << 29) /**< \brief (FLASHCALW_FSR) Lock Region 13 Lock Status */\r
+#define FLASHCALW_FSR_LOCK14        (0x1u << 30) /**< \brief (FLASHCALW_FSR) Lock Region 14 Lock Status */\r
+#define FLASHCALW_FSR_LOCK15        (0x1u << 31) /**< \brief (FLASHCALW_FSR) Lock Region 15 Lock Status */\r
+/* -------- FLASHCALW_FPR : (FLASHCALW Offset: 0x0C) Flash Controller Parameter Register -------- */\r
+#define FLASHCALW_FPR_FSZ_Pos       0\r
+#define FLASHCALW_FPR_FSZ_Msk       (0xFu << FLASHCALW_FPR_FSZ_Pos) /**< \brief (FLASHCALW_FPR) Flash Size */\r
+#define FLASHCALW_FPR_FSZ(value)    ((FLASHCALW_FPR_FSZ_Msk & ((value) << FLASHCALW_FPR_FSZ_Pos)))\r
+#define FLASHCALW_FPR_PSZ_Pos       8\r
+#define FLASHCALW_FPR_PSZ_Msk       (0x7u << FLASHCALW_FPR_PSZ_Pos) /**< \brief (FLASHCALW_FPR) Page Size */\r
+#define FLASHCALW_FPR_PSZ(value)    ((FLASHCALW_FPR_PSZ_Msk & ((value) << FLASHCALW_FPR_PSZ_Pos)))\r
+/* -------- FLASHCALW_VERSION : (FLASHCALW Offset: 0x10) Flash Controller Version Register -------- */\r
+#define FLASHCALW_VERSION_VERSION_Pos    0\r
+#define FLASHCALW_VERSION_VERSION_Msk    (0xFFFu << FLASHCALW_VERSION_VERSION_Pos) /**< \brief (FLASHCALW_VERSION) Version Number */\r
+#define FLASHCALW_VERSION_VERSION(value) ((FLASHCALW_VERSION_VERSION_Msk & ((value) << FLASHCALW_VERSION_VERSION_Pos)))\r
+#define FLASHCALW_VERSION_VARIANT_Pos    16\r
+#define FLASHCALW_VERSION_VARIANT_Msk    (0xFu << FLASHCALW_VERSION_VARIANT_Pos) /**< \brief (FLASHCALW_VERSION) Variant Number */\r
+#define FLASHCALW_VERSION_VARIANT(value) ((FLASHCALW_VERSION_VARIANT_Msk & ((value) << FLASHCALW_VERSION_VARIANT_Pos)))\r
+/* -------- FLASHCALW_FGPFRHI : (FLASHCALW Offset: 0x14) Flash Controller General Purpose Fuse Register High -------- */\r
+#define FLASHCALW_FGPFRHI_GPF32     (0x1u <<  0) /**< \brief (FLASHCALW_FGPFRHI) General Purpose Fuse 32 */\r
+#define FLASHCALW_FGPFRHI_GPF33     (0x1u <<  1) /**< \brief (FLASHCALW_FGPFRHI) General Purpose Fuse 33 */\r
+#define FLASHCALW_FGPFRHI_GPF34     (0x1u <<  2) /**< \brief (FLASHCALW_FGPFRHI) General Purpose Fuse 34 */\r
+#define FLASHCALW_FGPFRHI_GPF35     (0x1u <<  3) /**< \brief (FLASHCALW_FGPFRHI) General Purpose Fuse 35 */\r
+#define FLASHCALW_FGPFRHI_GPF36     (0x1u <<  4) /**< \brief (FLASHCALW_FGPFRHI) General Purpose Fuse 36 */\r
+#define FLASHCALW_FGPFRHI_GPF37     (0x1u <<  5) /**< \brief (FLASHCALW_FGPFRHI) General Purpose Fuse 37 */\r
+#define FLASHCALW_FGPFRHI_GPF38     (0x1u <<  6) /**< \brief (FLASHCALW_FGPFRHI) General Purpose Fuse 38 */\r
+#define FLASHCALW_FGPFRHI_GPF39     (0x1u <<  7) /**< \brief (FLASHCALW_FGPFRHI) General Purpose Fuse 39 */\r
+#define FLASHCALW_FGPFRHI_GPF40     (0x1u <<  8) /**< \brief (FLASHCALW_FGPFRHI) General Purpose Fuse 40 */\r
+#define FLASHCALW_FGPFRHI_GPF41     (0x1u <<  9) /**< \brief (FLASHCALW_FGPFRHI) General Purpose Fuse 41 */\r
+#define FLASHCALW_FGPFRHI_GPF42     (0x1u << 10) /**< \brief (FLASHCALW_FGPFRHI) General Purpose Fuse 42 */\r
+#define FLASHCALW_FGPFRHI_GPF43     (0x1u << 11) /**< \brief (FLASHCALW_FGPFRHI) General Purpose Fuse 43 */\r
+#define FLASHCALW_FGPFRHI_GPF44     (0x1u << 12) /**< \brief (FLASHCALW_FGPFRHI) General Purpose Fuse 44 */\r
+#define FLASHCALW_FGPFRHI_GPF45     (0x1u << 13) /**< \brief (FLASHCALW_FGPFRHI) General Purpose Fuse 45 */\r
+#define FLASHCALW_FGPFRHI_GPF46     (0x1u << 14) /**< \brief (FLASHCALW_FGPFRHI) General Purpose Fuse 46 */\r
+#define FLASHCALW_FGPFRHI_GPF47     (0x1u << 15) /**< \brief (FLASHCALW_FGPFRHI) General Purpose Fuse 47 */\r
+#define FLASHCALW_FGPFRHI_GPF48     (0x1u << 16) /**< \brief (FLASHCALW_FGPFRHI) General Purpose Fuse 48 */\r
+#define FLASHCALW_FGPFRHI_GPF49     (0x1u << 17) /**< \brief (FLASHCALW_FGPFRHI) General Purpose Fuse 49 */\r
+#define FLASHCALW_FGPFRHI_GPF50     (0x1u << 18) /**< \brief (FLASHCALW_FGPFRHI) General Purpose Fuse 50 */\r
+#define FLASHCALW_FGPFRHI_GPF51     (0x1u << 19) /**< \brief (FLASHCALW_FGPFRHI) General Purpose Fuse 51 */\r
+#define FLASHCALW_FGPFRHI_GPF52     (0x1u << 20) /**< \brief (FLASHCALW_FGPFRHI) General Purpose Fuse 52 */\r
+#define FLASHCALW_FGPFRHI_GPF53     (0x1u << 21) /**< \brief (FLASHCALW_FGPFRHI) General Purpose Fuse 53 */\r
+#define FLASHCALW_FGPFRHI_GPF54     (0x1u << 22) /**< \brief (FLASHCALW_FGPFRHI) General Purpose Fuse 54 */\r
+#define FLASHCALW_FGPFRHI_GPF55     (0x1u << 23) /**< \brief (FLASHCALW_FGPFRHI) General Purpose Fuse 55 */\r
+#define FLASHCALW_FGPFRHI_GPF56     (0x1u << 24) /**< \brief (FLASHCALW_FGPFRHI) General Purpose Fuse 56 */\r
+#define FLASHCALW_FGPFRHI_GPF57     (0x1u << 25) /**< \brief (FLASHCALW_FGPFRHI) General Purpose Fuse 57 */\r
+#define FLASHCALW_FGPFRHI_GPF58     (0x1u << 26) /**< \brief (FLASHCALW_FGPFRHI) General Purpose Fuse 58 */\r
+#define FLASHCALW_FGPFRHI_GPF59     (0x1u << 27) /**< \brief (FLASHCALW_FGPFRHI) General Purpose Fuse 59 */\r
+#define FLASHCALW_FGPFRHI_GPF60     (0x1u << 28) /**< \brief (FLASHCALW_FGPFRHI) General Purpose Fuse 60 */\r
+#define FLASHCALW_FGPFRHI_GPF61     (0x1u << 29) /**< \brief (FLASHCALW_FGPFRHI) General Purpose Fuse 61 */\r
+#define FLASHCALW_FGPFRHI_GPF62     (0x1u << 30) /**< \brief (FLASHCALW_FGPFRHI) General Purpose Fuse 62 */\r
+#define FLASHCALW_FGPFRHI_GPF63     (0x1u << 31) /**< \brief (FLASHCALW_FGPFRHI) General Purpose Fuse 63 */\r
+/* -------- FLASHCALW_FGPFRLO : (FLASHCALW Offset: 0x18) Flash Controller General Purpose Fuse Register Low -------- */\r
+#define FLASHCALW_FGPFRLO_LOCK0     (0x1u <<  0) /**< \brief (FLASHCALW_FGPFRLO) Lock Bit 0 */\r
+#define FLASHCALW_FGPFRLO_LOCK1     (0x1u <<  1) /**< \brief (FLASHCALW_FGPFRLO) Lock Bit 1 */\r
+#define FLASHCALW_FGPFRLO_LOCK2     (0x1u <<  2) /**< \brief (FLASHCALW_FGPFRLO) Lock Bit 2 */\r
+#define FLASHCALW_FGPFRLO_LOCK3     (0x1u <<  3) /**< \brief (FLASHCALW_FGPFRLO) Lock Bit 3 */\r
+#define FLASHCALW_FGPFRLO_LOCK4     (0x1u <<  4) /**< \brief (FLASHCALW_FGPFRLO) Lock Bit 4 */\r
+#define FLASHCALW_FGPFRLO_LOCK5     (0x1u <<  5) /**< \brief (FLASHCALW_FGPFRLO) Lock Bit 5 */\r
+#define FLASHCALW_FGPFRLO_LOCK6     (0x1u <<  6) /**< \brief (FLASHCALW_FGPFRLO) Lock Bit 6 */\r
+#define FLASHCALW_FGPFRLO_LOCK7     (0x1u <<  7) /**< \brief (FLASHCALW_FGPFRLO) Lock Bit 7 */\r
+#define FLASHCALW_FGPFRLO_LOCK8     (0x1u <<  8) /**< \brief (FLASHCALW_FGPFRLO) Lock Bit 8 */\r
+#define FLASHCALW_FGPFRLO_LOCK9     (0x1u <<  9) /**< \brief (FLASHCALW_FGPFRLO) Lock Bit 9 */\r
+#define FLASHCALW_FGPFRLO_LOCK10    (0x1u << 10) /**< \brief (FLASHCALW_FGPFRLO) Lock Bit 10 */\r
+#define FLASHCALW_FGPFRLO_LOCK11    (0x1u << 11) /**< \brief (FLASHCALW_FGPFRLO) Lock Bit 11 */\r
+#define FLASHCALW_FGPFRLO_LOCK12    (0x1u << 12) /**< \brief (FLASHCALW_FGPFRLO) Lock Bit 12 */\r
+#define FLASHCALW_FGPFRLO_LOCK13    (0x1u << 13) /**< \brief (FLASHCALW_FGPFRLO) Lock Bit 13 */\r
+#define FLASHCALW_FGPFRLO_LOCK14    (0x1u << 14) /**< \brief (FLASHCALW_FGPFRLO) Lock Bit 14 */\r
+#define FLASHCALW_FGPFRLO_LOCK15    (0x1u << 15) /**< \brief (FLASHCALW_FGPFRLO) Lock Bit 15 */\r
+#define FLASHCALW_FGPFRLO_GPF16     (0x1u << 16) /**< \brief (FLASHCALW_FGPFRLO) General Purpose Fuse 16 */\r
+#define FLASHCALW_FGPFRLO_GPF17     (0x1u << 17) /**< \brief (FLASHCALW_FGPFRLO) General Purpose Fuse 17 */\r
+#define FLASHCALW_FGPFRLO_GPF18     (0x1u << 18) /**< \brief (FLASHCALW_FGPFRLO) General Purpose Fuse 18 */\r
+#define FLASHCALW_FGPFRLO_GPF19     (0x1u << 19) /**< \brief (FLASHCALW_FGPFRLO) General Purpose Fuse 19 */\r
+#define FLASHCALW_FGPFRLO_GPF20     (0x1u << 20) /**< \brief (FLASHCALW_FGPFRLO) General Purpose Fuse 20 */\r
+#define FLASHCALW_FGPFRLO_GPF21     (0x1u << 21) /**< \brief (FLASHCALW_FGPFRLO) General Purpose Fuse 21 */\r
+#define FLASHCALW_FGPFRLO_GPF22     (0x1u << 22) /**< \brief (FLASHCALW_FGPFRLO) General Purpose Fuse 22 */\r
+#define FLASHCALW_FGPFRLO_GPF23     (0x1u << 23) /**< \brief (FLASHCALW_FGPFRLO) General Purpose Fuse 23 */\r
+#define FLASHCALW_FGPFRLO_GPF24     (0x1u << 24) /**< \brief (FLASHCALW_FGPFRLO) General Purpose Fuse 24 */\r
+#define FLASHCALW_FGPFRLO_GPF25     (0x1u << 25) /**< \brief (FLASHCALW_FGPFRLO) General Purpose Fuse 25 */\r
+#define FLASHCALW_FGPFRLO_GPF26     (0x1u << 26) /**< \brief (FLASHCALW_FGPFRLO) General Purpose Fuse 26 */\r
+#define FLASHCALW_FGPFRLO_GPF27     (0x1u << 27) /**< \brief (FLASHCALW_FGPFRLO) General Purpose Fuse 27 */\r
+#define FLASHCALW_FGPFRLO_GPF28     (0x1u << 28) /**< \brief (FLASHCALW_FGPFRLO) General Purpose Fuse 28 */\r
+#define FLASHCALW_FGPFRLO_GPF29     (0x1u << 29) /**< \brief (FLASHCALW_FGPFRLO) General Purpose Fuse 29 */\r
+#define FLASHCALW_FGPFRLO_GPF30     (0x1u << 30) /**< \brief (FLASHCALW_FGPFRLO) General Purpose Fuse 30 */\r
+#define FLASHCALW_FGPFRLO_GPF31     (0x1u << 31) /**< \brief (FLASHCALW_FGPFRLO) General Purpose Fuse 31 */\r
+\r
+/*@}*/\r
+\r
+/* ============================================================================= */\r
+/**  SOFTWARE API DEFINITION FOR FREQM */\r
+/* ============================================================================= */\r
+/** \addtogroup SAM4L_FREQM Frequency Meter */\r
+/*@{*/\r
+\r
+#define REV_FREQM      0x311\r
+\r
+#ifndef __ASSEMBLY__\r
+/** \brief FREQM hardware registers */\r
+typedef struct {\r
+  WoReg   FREQM_CTRL;        /**< \brief (FREQM Offset: 0x000) Control register */\r
+  RwReg   FREQM_MODE;        /**< \brief (FREQM Offset: 0x004) Mode  register */\r
+  RoReg   FREQM_STATUS;      /**< \brief (FREQM Offset: 0x008) Status  register */\r
+  RoReg   FREQM_VALUE;       /**< \brief (FREQM Offset: 0x00C) Value register */\r
+  WoReg   FREQM_IER;         /**< \brief (FREQM Offset: 0x010) Interrupt Enable Register */\r
+  WoReg   FREQM_IDR;         /**< \brief (FREQM Offset: 0x014) Interrupt Diable Register */\r
+  RoReg   FREQM_IMR;         /**< \brief (FREQM Offset: 0x018) Interrupt Mask Register */\r
+  RoReg   FREQM_ISR;         /**< \brief (FREQM Offset: 0x01C) Interrupt Status Register */\r
+  WoReg   FREQM_ICR;         /**< \brief (FREQM Offset: 0x020) Interrupt Clear Register */\r
+  RoReg   Reserved1[246];\r
+  RoReg   FREQM_VERSION;     /**< \brief (FREQM Offset: 0x3FC) Version Register */\r
+} Freqm;\r
+#endif /* __ASSEMBLY__ */\r
+/* -------- FREQM_CTRL : (FREQM Offset: 0x000) Control register -------- */\r
+#define FREQM_CTRL_START            (0x1u <<  0) /**< \brief (FREQM_CTRL) Start frequency measurement */\r
+/* -------- FREQM_MODE : (FREQM Offset: 0x004) Mode  register -------- */\r
+#define FREQM_MODE_REFSEL_Pos       0\r
+#define FREQM_MODE_REFSEL_Msk       (0x3u << FREQM_MODE_REFSEL_Pos) /**< \brief (FREQM_MODE) Reference Clock Selection */\r
+#define FREQM_MODE_REFSEL(value)    ((FREQM_MODE_REFSEL_Msk & ((value) << FREQM_MODE_REFSEL_Pos)))\r
+#define FREQM_MODE_REFNUM_Pos       8\r
+#define FREQM_MODE_REFNUM_Msk       (0xFFu << FREQM_MODE_REFNUM_Pos) /**< \brief (FREQM_MODE) Number of Reference CLock Cycles */\r
+#define FREQM_MODE_REFNUM(value)    ((FREQM_MODE_REFNUM_Msk & ((value) << FREQM_MODE_REFNUM_Pos)))\r
+#define FREQM_MODE_CLKSEL_Pos       16\r
+#define FREQM_MODE_CLKSEL_Msk       (0x1Fu << FREQM_MODE_CLKSEL_Pos) /**< \brief (FREQM_MODE) Clock Source Selection */\r
+#define FREQM_MODE_CLKSEL(value)    ((FREQM_MODE_CLKSEL_Msk & ((value) << FREQM_MODE_CLKSEL_Pos)))\r
+#define FREQM_MODE_REFCEN           (0x1u << 31) /**< \brief (FREQM_MODE) Reference Clock Enable */\r
+/* -------- FREQM_STATUS : (FREQM Offset: 0x008) Status  register -------- */\r
+#define FREQM_STATUS_BUSY           (0x1u <<  0) /**< \brief (FREQM_STATUS) Frequency measurement on-going */\r
+#define FREQM_STATUS_RCLKBUSY       (0x1u <<  1) /**< \brief (FREQM_STATUS) Reference Clock busy */\r
+/* -------- FREQM_VALUE : (FREQM Offset: 0x00C) Value register -------- */\r
+#define FREQM_VALUE_VALUE_Pos       0\r
+#define FREQM_VALUE_VALUE_Msk       (0xFFFFFFu << FREQM_VALUE_VALUE_Pos) /**< \brief (FREQM_VALUE) Measured frequency */\r
+#define FREQM_VALUE_VALUE(value)    ((FREQM_VALUE_VALUE_Msk & ((value) << FREQM_VALUE_VALUE_Pos)))\r
+/* -------- FREQM_IER : (FREQM Offset: 0x010) Interrupt Enable Register -------- */\r
+#define FREQM_IER_DONE              (0x1u <<  0) /**< \brief (FREQM_IER) Frequency measurment done */\r
+#define FREQM_IER_RCLKRDY           (0x1u <<  1) /**< \brief (FREQM_IER) Reference Clock ready */\r
+/* -------- FREQM_IDR : (FREQM Offset: 0x014) Interrupt Diable Register -------- */\r
+#define FREQM_IDR_DONE              (0x1u <<  0) /**< \brief (FREQM_IDR) Frequency measurment done */\r
+#define FREQM_IDR_RCLKRDY           (0x1u <<  1) /**< \brief (FREQM_IDR) Reference Clock ready */\r
+/* -------- FREQM_IMR : (FREQM Offset: 0x018) Interrupt Mask Register -------- */\r
+#define FREQM_IMR_DONE              (0x1u <<  0) /**< \brief (FREQM_IMR) Frequency measurment done */\r
+#define FREQM_IMR_RCLKRDY           (0x1u <<  1) /**< \brief (FREQM_IMR) Reference Clock ready */\r
+/* -------- FREQM_ISR : (FREQM Offset: 0x01C) Interrupt Status Register -------- */\r
+#define FREQM_ISR_DONE              (0x1u <<  0) /**< \brief (FREQM_ISR) Frequency measurment done */\r
+#define FREQM_ISR_RCLKRDY           (0x1u <<  1) /**< \brief (FREQM_ISR) Reference Clock ready */\r
+/* -------- FREQM_ICR : (FREQM Offset: 0x020) Interrupt Clear Register -------- */\r
+#define FREQM_ICR_DONE              (0x1u <<  0) /**< \brief (FREQM_ICR) Frequency measurment done */\r
+#define FREQM_ICR_RCLKRDY           (0x1u <<  1) /**< \brief (FREQM_ICR) Reference Clock ready */\r
+/* -------- FREQM_VERSION : (FREQM Offset: 0x3FC) Version Register -------- */\r
+#define FREQM_VERSION_VERSION_Pos    0\r
+#define FREQM_VERSION_VERSION_Msk    (0xFFFu << FREQM_VERSION_VERSION_Pos) /**< \brief (FREQM_VERSION) Version number */\r
+#define FREQM_VERSION_VERSION(value) ((FREQM_VERSION_VERSION_Msk & ((value) << FREQM_VERSION_VERSION_Pos)))\r
+#define FREQM_VERSION_VARIANT_Pos    16\r
+#define FREQM_VERSION_VARIANT_Msk    (0xFu << FREQM_VERSION_VARIANT_Pos) /**< \brief (FREQM_VERSION) Variant number */\r
+#define FREQM_VERSION_VARIANT(value) ((FREQM_VERSION_VARIANT_Msk & ((value) << FREQM_VERSION_VARIANT_Pos)))\r
+\r
+/*@}*/\r
+\r
+/* ============================================================================= */\r
+/**  SOFTWARE API DEFINITION FOR GLOC */\r
+/* ============================================================================= */\r
+/** \addtogroup SAM4L_GLOC Glue Logic Controller */\r
+/*@{*/\r
+\r
+#define REV_GLOC       0x102\r
+\r
+#ifndef __ASSEMBLY__\r
+/** \brief GlocLut hardware registers */\r
+typedef struct {\r
+  RwReg   GLOC_CR;     /**< \brief (GlocLut Offset: 0x00) Control Register */\r
+  RwReg   GLOC_TRUTH;  /**< \brief (GlocLut Offset: 0x04) Truth Register */\r
+} GlocLut;\r
+/** \brief GLOC hardware registers */\r
+#define GLOC_LUTS 2\r
+typedef struct {\r
+  GlocLut GLOC_LUT[GLOC_LUTS]; /**< \brief (GLOC Offset: 0x00) GlocLut groups */\r
+  GlocLut Reserved1[7 - GLOC_LUTS];\r
+  RoReg   GLOC_PARAMETER;   /**< \brief (GLOC Offset: 0x38) Parameter Register */\r
+  RoReg   GLOC_VERSION;     /**< \brief (GLOC Offset: 0x3C) Version Register */\r
+} Gloc;\r
+#endif /* __ASSEMBLY__ */\r
+/* -------- GLOC_CR : (GLOC Offset: 0x00) Lut Control Register -------- */\r
+#define GLOC_CR_AEN_Pos             0\r
+#define GLOC_CR_AEN_Msk             (0xFu << GLOC_CR_AEN_Pos) /**< \brief (GLOC_CR) Input mask */\r
+#define GLOC_CR_AEN(value)          ((GLOC_CR_AEN_Msk & ((value) << GLOC_CR_AEN_Pos)))\r
+#define GLOC_CR_FILTEN              (0x1u << 31) /**< \brief (GLOC_CR) Filter enable */\r
+/* -------- GLOC_TRUTH : (GLOC Offset: 0x04) Lut Truth Register -------- */\r
+#define GLOC_TRUTH_TRUTH_Pos        0\r
+#define GLOC_TRUTH_TRUTH_Msk        (0xFFFFu << GLOC_TRUTH_TRUTH_Pos) /**< \brief (GLOC_TRUTH) Truth */\r
+#define GLOC_TRUTH_TRUTH(value)     ((GLOC_TRUTH_TRUTH_Msk & ((value) << GLOC_TRUTH_TRUTH_Pos)))\r
+/* -------- GLOC_PARAMETER : (GLOC Offset: 0x38) Parameter Register -------- */\r
+#define GLOC_PARAMETER_LUTS_Pos     0\r
+#define GLOC_PARAMETER_LUTS_Msk     (0xFFu << GLOC_PARAMETER_LUTS_Pos) /**< \brief (GLOC_PARAMETER) LUTs */\r
+#define GLOC_PARAMETER_LUTS(value)  ((GLOC_PARAMETER_LUTS_Msk & ((value) << GLOC_PARAMETER_LUTS_Pos)))\r
+/* -------- GLOC_VERSION : (GLOC Offset: 0x3C) Version Register -------- */\r
+#define GLOC_VERSION_VERSION_Pos    0\r
+#define GLOC_VERSION_VERSION_Msk    (0xFFFu << GLOC_VERSION_VERSION_Pos) /**< \brief (GLOC_VERSION) Version */\r
+#define GLOC_VERSION_VERSION(value) ((GLOC_VERSION_VERSION_Msk & ((value) << GLOC_VERSION_VERSION_Pos)))\r
+#define GLOC_VERSION_VARIANT_Pos    16\r
+#define GLOC_VERSION_VARIANT_Msk    (0xFu << GLOC_VERSION_VARIANT_Pos) /**< \brief (GLOC_VERSION) Variant */\r
+#define GLOC_VERSION_VARIANT(value) ((GLOC_VERSION_VARIANT_Msk & ((value) << GLOC_VERSION_VARIANT_Pos)))\r
+\r
+/*@}*/\r
+\r
+/* ============================================================================= */\r
+/**  SOFTWARE API DEFINITION FOR GPIO */\r
+/* ============================================================================= */\r
+/** \addtogroup SAM4L_GPIO General-Purpose Input/Output Controller */\r
+/*@{*/\r
+\r
+#define REV_GPIO       0x215\r
+\r
+#ifndef __ASSEMBLY__\r
+/** \brief GpioPort hardware registers */\r
+typedef struct {\r
+  RwReg   GPIO_GPER;   /**< \brief (GpioPort Offset: 0x000) GPIO Enable Register */\r
+  WoReg   GPIO_GPERS;  /**< \brief (GpioPort Offset: 0x004) GPIO Enable Register - Set */\r
+  WoReg   GPIO_GPERC;  /**< \brief (GpioPort Offset: 0x008) GPIO Enable Register - Clear */\r
+  WoReg   GPIO_GPERT;  /**< \brief (GpioPort Offset: 0x00C) GPIO Enable Register - Toggle */\r
+  RwReg   GPIO_PMR0;   /**< \brief (GpioPort Offset: 0x010) Peripheral Mux Register 0 */\r
+  WoReg   GPIO_PMR0S;  /**< \brief (GpioPort Offset: 0x014) Peripheral Mux Register 0 - Set */\r
+  WoReg   GPIO_PMR0C;  /**< \brief (GpioPort Offset: 0x018) Peripheral Mux Register 0 - Clear */\r
+  WoReg   GPIO_PMR0T;  /**< \brief (GpioPort Offset: 0x01C) Peripheral Mux Register 0 - Toggle */\r
+  RwReg   GPIO_PMR1;   /**< \brief (GpioPort Offset: 0x020) Peripheral Mux Register 1 */\r
+  WoReg   GPIO_PMR1S;  /**< \brief (GpioPort Offset: 0x024) Peripheral Mux Register 1 - Set */\r
+  WoReg   GPIO_PMR1C;  /**< \brief (GpioPort Offset: 0x028) Peripheral Mux Register 1 - Clear */\r
+  WoReg   GPIO_PMR1T;  /**< \brief (GpioPort Offset: 0x02C) Peripheral Mux Register 1 - Toggle */\r
+  RwReg   GPIO_PMR2;   /**< \brief (GpioPort Offset: 0x030) Peripheral Mux Register 2 */\r
+  WoReg   GPIO_PMR2S;  /**< \brief (GpioPort Offset: 0x034) Peripheral Mux Register 2 - Set */\r
+  WoReg   GPIO_PMR2C;  /**< \brief (GpioPort Offset: 0x038) Peripheral Mux Register 2 - Clear */\r
+  WoReg   GPIO_PMR2T;  /**< \brief (GpioPort Offset: 0x03C) Peripheral Mux Register 2 - Toggle */\r
+  RwReg   GPIO_ODER;   /**< \brief (GpioPort Offset: 0x040) Output Driver Enable Register */\r
+  WoReg   GPIO_ODERS;  /**< \brief (GpioPort Offset: 0x044) Output Driver Enable Register - Set */\r
+  WoReg   GPIO_ODERC;  /**< \brief (GpioPort Offset: 0x048) Output Driver Enable Register - Clear */\r
+  WoReg   GPIO_ODERT;  /**< \brief (GpioPort Offset: 0x04C) Output Driver Enable Register - Toggle */\r
+  RwReg   GPIO_OVR;    /**< \brief (GpioPort Offset: 0x050) Output Value Register */\r
+  WoReg   GPIO_OVRS;   /**< \brief (GpioPort Offset: 0x054) Output Value Register - Set */\r
+  WoReg   GPIO_OVRC;   /**< \brief (GpioPort Offset: 0x058) Output Value Register - Clear */\r
+  WoReg   GPIO_OVRT;   /**< \brief (GpioPort Offset: 0x05C) Output Value Register - Toggle */\r
+  RoReg   GPIO_PVR;    /**< \brief (GpioPort Offset: 0x060) Pin Value Register */\r
+  RoReg   Reserved1[3];\r
+  RwReg   GPIO_PUER;   /**< \brief (GpioPort Offset: 0x070) Pull-up Enable Register */\r
+  WoReg   GPIO_PUERS;  /**< \brief (GpioPort Offset: 0x074) Pull-up Enable Register - Set */\r
+  WoReg   GPIO_PUERC;  /**< \brief (GpioPort Offset: 0x078) Pull-up Enable Register - Clear */\r
+  WoReg   GPIO_PUERT;  /**< \brief (GpioPort Offset: 0x07C) Pull-up Enable Register - Toggle */\r
+  RwReg   GPIO_PDER;   /**< \brief (GpioPort Offset: 0x080) Pull-down Enable Register */\r
+  WoReg   GPIO_PDERS;  /**< \brief (GpioPort Offset: 0x084) Pull-down Enable Register - Set */\r
+  WoReg   GPIO_PDERC;  /**< \brief (GpioPort Offset: 0x088) Pull-down Enable Register - Clear */\r
+  WoReg   GPIO_PDERT;  /**< \brief (GpioPort Offset: 0x08C) Pull-down Enable Register - Toggle */\r
+  RwReg   GPIO_IER;    /**< \brief (GpioPort Offset: 0x090) Interrupt Enable Register */\r
+  WoReg   GPIO_IERS;   /**< \brief (GpioPort Offset: 0x094) Interrupt Enable Register - Set */\r
+  WoReg   GPIO_IERC;   /**< \brief (GpioPort Offset: 0x098) Interrupt Enable Register - Clear */\r
+  WoReg   GPIO_IERT;   /**< \brief (GpioPort Offset: 0x09C) Interrupt Enable Register - Toggle */\r
+  RwReg   GPIO_IMR0;   /**< \brief (GpioPort Offset: 0x0A0) Interrupt Mode Register 0 */\r
+  WoReg   GPIO_IMR0S;  /**< \brief (GpioPort Offset: 0x0A4) Interrupt Mode Register 0 - Set */\r
+  WoReg   GPIO_IMR0C;  /**< \brief (GpioPort Offset: 0x0A8) Interrupt Mode Register 0 - Clear */\r
+  WoReg   GPIO_IMR0T;  /**< \brief (GpioPort Offset: 0x0AC) Interrupt Mode Register 0 - Toggle */\r
+  RwReg   GPIO_IMR1;   /**< \brief (GpioPort Offset: 0x0B0) Interrupt Mode Register 1 */\r
+  WoReg   GPIO_IMR1S;  /**< \brief (GpioPort Offset: 0x0B4) Interrupt Mode Register 1 - Set */\r
+  WoReg   GPIO_IMR1C;  /**< \brief (GpioPort Offset: 0x0B8) Interrupt Mode Register 1 - Clear */\r
+  WoReg   GPIO_IMR1T;  /**< \brief (GpioPort Offset: 0x0BC) Interrupt Mode Register 1 - Toggle */\r
+  RwReg   GPIO_GFER;   /**< \brief (GpioPort Offset: 0x0C0) Glitch Filter Enable Register */\r
+  WoReg   GPIO_GFERS;  /**< \brief (GpioPort Offset: 0x0C4) Glitch Filter Enable Register - Set */\r
+  WoReg   GPIO_GFERC;  /**< \brief (GpioPort Offset: 0x0C8) Glitch Filter Enable Register - Clear */\r
+  WoReg   GPIO_GFERT;  /**< \brief (GpioPort Offset: 0x0CC) Glitch Filter Enable Register - Toggle */\r
+  RoReg   GPIO_IFR;    /**< \brief (GpioPort Offset: 0x0D0) Interrupt Flag Register */\r
+  RoReg   Reserved2[1];\r
+  WoReg   GPIO_IFRC;   /**< \brief (GpioPort Offset: 0x0D8) Interrupt Flag Register - Clear */\r
+  RoReg   Reserved3[1];\r
+  RwReg   GPIO_ODMER;  /**< \brief (GpioPort Offset: 0x0E0) Open Drain Mode Register */\r
+  WoReg   GPIO_ODMERS; /**< \brief (GpioPort Offset: 0x0E4) Open Drain Mode Register - Set */\r
+  WoReg   GPIO_ODMERC; /**< \brief (GpioPort Offset: 0x0E8) Open Drain Mode Register - Clear */\r
+  WoReg   GPIO_ODMERT; /**< \brief (GpioPort Offset: 0x0EC) Open Drain Mode Register - Toggle */\r
+  RoReg   Reserved4[4];\r
+  RwReg   GPIO_ODCR0;  /**< \brief (GpioPort Offset: 0x100) Output Driving Capability Register 0 */\r
+  RwReg   GPIO_ODCR0S; /**< \brief (GpioPort Offset: 0x104) Output Driving Capability Register 0 - Set */\r
+  RwReg   GPIO_ODCR0C; /**< \brief (GpioPort Offset: 0x108) Output Driving Capability Register 0 - Clear */\r
+  RwReg   GPIO_ODCR0T; /**< \brief (GpioPort Offset: 0x10C) Output Driving Capability Register 0 - Toggle */\r
+  RwReg   GPIO_ODCR1;  /**< \brief (GpioPort Offset: 0x110) Output Driving Capability Register 1 */\r
+  RwReg   GPIO_ODCR1S; /**< \brief (GpioPort Offset: 0x114) Output Driving Capability Register 1 - Set */\r
+  RwReg   GPIO_ODCR1C; /**< \brief (GpioPort Offset: 0x118) Output Driving Capability Register 1 - Clear */\r
+  RwReg   GPIO_ODCR1T; /**< \brief (GpioPort Offset: 0x11C) Output Driving Capability Register 1 - Toggle */\r
+  RoReg   Reserved5[4];\r
+  RwReg   GPIO_OSRR0;  /**< \brief (GpioPort Offset: 0x130) Output Slew Rate Register 0 */\r
+  RwReg   GPIO_OSRR0S; /**< \brief (GpioPort Offset: 0x134) Output Slew Rate Register 0 - Set */\r
+  RwReg   GPIO_OSRR0C; /**< \brief (GpioPort Offset: 0x138) Output Slew Rate Register 0 - Clear */\r
+  RwReg   GPIO_OSRR0T; /**< \brief (GpioPort Offset: 0x13C) Output Slew Rate Register 0 - Toggle */\r
+  RoReg   Reserved6[8];\r
+  RwReg   GPIO_STER;   /**< \brief (GpioPort Offset: 0x160) Schmitt Trigger Enable Register */\r
+  RwReg   GPIO_STERS;  /**< \brief (GpioPort Offset: 0x164) Schmitt Trigger Enable Register - Set */\r
+  RwReg   GPIO_STERC;  /**< \brief (GpioPort Offset: 0x168) Schmitt Trigger Enable Register - Clear */\r
+  RwReg   GPIO_STERT;  /**< \brief (GpioPort Offset: 0x16C) Schmitt Trigger Enable Register - Toggle */\r
+  RoReg   Reserved7[4];\r
+  RwReg   GPIO_EVER;   /**< \brief (GpioPort Offset: 0x180) Event Enable Register */\r
+  WoReg   GPIO_EVERS;  /**< \brief (GpioPort Offset: 0x184) Event Enable Register - Set */\r
+  WoReg   GPIO_EVERC;  /**< \brief (GpioPort Offset: 0x188) Event Enable Register - Clear */\r
+  WoReg   GPIO_EVERT;  /**< \brief (GpioPort Offset: 0x18C) Event Enable Register - Toggle */\r
+  RoReg   Reserved8[4];\r
+  RwReg   GPIO_LOCK;   /**< \brief (GpioPort Offset: 0x1A0) Lock Register */\r
+  WoReg   GPIO_LOCKS;  /**< \brief (GpioPort Offset: 0x1A4) Lock Register - Set */\r
+  WoReg   GPIO_LOCKC;  /**< \brief (GpioPort Offset: 0x1A8) Lock Register - Clear */\r
+  WoReg   GPIO_LOCKT;  /**< \brief (GpioPort Offset: 0x1AC) Lock Register - Toggle */\r
+  RoReg   Reserved9[12];\r
+  WoReg   GPIO_UNLOCK; /**< \brief (GpioPort Offset: 0x1E0) Unlock Register */\r
+  RwReg   GPIO_ASR;    /**< \brief (GpioPort Offset: 0x1E4) Access Status Register */\r
+  RoReg   Reserved10[4];\r
+  RoReg   GPIO_PARAMETER; /**< \brief (GpioPort Offset: 0x1F8) Parameter Register */\r
+  RoReg   GPIO_VERSION; /**< \brief (GpioPort Offset: 0x1FC) Version Register */\r
+} GpioPort;\r
+/** \brief GPIO hardware registers */\r
+#define GPIO_PORT_LENGTH 3\r
+typedef struct {\r
+  GpioPort GPIO_PORT[GPIO_PORT_LENGTH]; /**< \brief (GPIO Offset: 0x000) GpioPort groups */\r
+  GpioPort Reserved1[64 - GPIO_PORT_LENGTH];\r
+} Gpio;\r
+#endif /* __ASSEMBLY__ */\r
+/* -------- GPIO_GPER : (GPIO Offset: 0x000) Port GPIO Enable Register -------- */\r
+#define GPIO_GPER_P0                (0x1u <<  0) /**< \brief (GPIO_GPER) GPIO Enable */\r
+#define GPIO_GPER_P1                (0x1u <<  1) /**< \brief (GPIO_GPER) GPIO Enable */\r
+#define GPIO_GPER_P2                (0x1u <<  2) /**< \brief (GPIO_GPER) GPIO Enable */\r
+#define GPIO_GPER_P3                (0x1u <<  3) /**< \brief (GPIO_GPER) GPIO Enable */\r
+#define GPIO_GPER_P4                (0x1u <<  4) /**< \brief (GPIO_GPER) GPIO Enable */\r
+#define GPIO_GPER_P5                (0x1u <<  5) /**< \brief (GPIO_GPER) GPIO Enable */\r
+#define GPIO_GPER_P6                (0x1u <<  6) /**< \brief (GPIO_GPER) GPIO Enable */\r
+#define GPIO_GPER_P7                (0x1u <<  7) /**< \brief (GPIO_GPER) GPIO Enable */\r
+#define GPIO_GPER_P8                (0x1u <<  8) /**< \brief (GPIO_GPER) GPIO Enable */\r
+#define GPIO_GPER_P9                (0x1u <<  9) /**< \brief (GPIO_GPER) GPIO Enable */\r
+#define GPIO_GPER_P10               (0x1u << 10) /**< \brief (GPIO_GPER) GPIO Enable */\r
+#define GPIO_GPER_P11               (0x1u << 11) /**< \brief (GPIO_GPER) GPIO Enable */\r
+#define GPIO_GPER_P12               (0x1u << 12) /**< \brief (GPIO_GPER) GPIO Enable */\r
+#define GPIO_GPER_P13               (0x1u << 13) /**< \brief (GPIO_GPER) GPIO Enable */\r
+#define GPIO_GPER_P14               (0x1u << 14) /**< \brief (GPIO_GPER) GPIO Enable */\r
+#define GPIO_GPER_P15               (0x1u << 15) /**< \brief (GPIO_GPER) GPIO Enable */\r
+#define GPIO_GPER_P16               (0x1u << 16) /**< \brief (GPIO_GPER) GPIO Enable */\r
+#define GPIO_GPER_P17               (0x1u << 17) /**< \brief (GPIO_GPER) GPIO Enable */\r
+#define GPIO_GPER_P18               (0x1u << 18) /**< \brief (GPIO_GPER) GPIO Enable */\r
+#define GPIO_GPER_P19               (0x1u << 19) /**< \brief (GPIO_GPER) GPIO Enable */\r
+#define GPIO_GPER_P20               (0x1u << 20) /**< \brief (GPIO_GPER) GPIO Enable */\r
+#define GPIO_GPER_P21               (0x1u << 21) /**< \brief (GPIO_GPER) GPIO Enable */\r
+#define GPIO_GPER_P22               (0x1u << 22) /**< \brief (GPIO_GPER) GPIO Enable */\r
+#define GPIO_GPER_P23               (0x1u << 23) /**< \brief (GPIO_GPER) GPIO Enable */\r
+#define GPIO_GPER_P24               (0x1u << 24) /**< \brief (GPIO_GPER) GPIO Enable */\r
+#define GPIO_GPER_P25               (0x1u << 25) /**< \brief (GPIO_GPER) GPIO Enable */\r
+#define GPIO_GPER_P26               (0x1u << 26) /**< \brief (GPIO_GPER) GPIO Enable */\r
+#define GPIO_GPER_P27               (0x1u << 27) /**< \brief (GPIO_GPER) GPIO Enable */\r
+#define GPIO_GPER_P28               (0x1u << 28) /**< \brief (GPIO_GPER) GPIO Enable */\r
+#define GPIO_GPER_P29               (0x1u << 29) /**< \brief (GPIO_GPER) GPIO Enable */\r
+#define GPIO_GPER_P30               (0x1u << 30) /**< \brief (GPIO_GPER) GPIO Enable */\r
+#define GPIO_GPER_P31               (0x1u << 31) /**< \brief (GPIO_GPER) GPIO Enable */\r
+/* -------- GPIO_GPERS : (GPIO Offset: 0x004) Port GPIO Enable Register - Set -------- */\r
+#define GPIO_GPERS_P0               (0x1u <<  0) /**< \brief (GPIO_GPERS) GPIO Enable */\r
+#define GPIO_GPERS_P1               (0x1u <<  1) /**< \brief (GPIO_GPERS) GPIO Enable */\r
+#define GPIO_GPERS_P2               (0x1u <<  2) /**< \brief (GPIO_GPERS) GPIO Enable */\r
+#define GPIO_GPERS_P3               (0x1u <<  3) /**< \brief (GPIO_GPERS) GPIO Enable */\r
+#define GPIO_GPERS_P4               (0x1u <<  4) /**< \brief (GPIO_GPERS) GPIO Enable */\r
+#define GPIO_GPERS_P5               (0x1u <<  5) /**< \brief (GPIO_GPERS) GPIO Enable */\r
+#define GPIO_GPERS_P6               (0x1u <<  6) /**< \brief (GPIO_GPERS) GPIO Enable */\r
+#define GPIO_GPERS_P7               (0x1u <<  7) /**< \brief (GPIO_GPERS) GPIO Enable */\r
+#define GPIO_GPERS_P8               (0x1u <<  8) /**< \brief (GPIO_GPERS) GPIO Enable */\r
+#define GPIO_GPERS_P9               (0x1u <<  9) /**< \brief (GPIO_GPERS) GPIO Enable */\r
+#define GPIO_GPERS_P10              (0x1u << 10) /**< \brief (GPIO_GPERS) GPIO Enable */\r
+#define GPIO_GPERS_P11              (0x1u << 11) /**< \brief (GPIO_GPERS) GPIO Enable */\r
+#define GPIO_GPERS_P12              (0x1u << 12) /**< \brief (GPIO_GPERS) GPIO Enable */\r
+#define GPIO_GPERS_P13              (0x1u << 13) /**< \brief (GPIO_GPERS) GPIO Enable */\r
+#define GPIO_GPERS_P14              (0x1u << 14) /**< \brief (GPIO_GPERS) GPIO Enable */\r
+#define GPIO_GPERS_P15              (0x1u << 15) /**< \brief (GPIO_GPERS) GPIO Enable */\r
+#define GPIO_GPERS_P16              (0x1u << 16) /**< \brief (GPIO_GPERS) GPIO Enable */\r
+#define GPIO_GPERS_P17              (0x1u << 17) /**< \brief (GPIO_GPERS) GPIO Enable */\r
+#define GPIO_GPERS_P18              (0x1u << 18) /**< \brief (GPIO_GPERS) GPIO Enable */\r
+#define GPIO_GPERS_P19              (0x1u << 19) /**< \brief (GPIO_GPERS) GPIO Enable */\r
+#define GPIO_GPERS_P20              (0x1u << 20) /**< \brief (GPIO_GPERS) GPIO Enable */\r
+#define GPIO_GPERS_P21              (0x1u << 21) /**< \brief (GPIO_GPERS) GPIO Enable */\r
+#define GPIO_GPERS_P22              (0x1u << 22) /**< \brief (GPIO_GPERS) GPIO Enable */\r
+#define GPIO_GPERS_P23              (0x1u << 23) /**< \brief (GPIO_GPERS) GPIO Enable */\r
+#define GPIO_GPERS_P24              (0x1u << 24) /**< \brief (GPIO_GPERS) GPIO Enable */\r
+#define GPIO_GPERS_P25              (0x1u << 25) /**< \brief (GPIO_GPERS) GPIO Enable */\r
+#define GPIO_GPERS_P26              (0x1u << 26) /**< \brief (GPIO_GPERS) GPIO Enable */\r
+#define GPIO_GPERS_P27              (0x1u << 27) /**< \brief (GPIO_GPERS) GPIO Enable */\r
+#define GPIO_GPERS_P28              (0x1u << 28) /**< \brief (GPIO_GPERS) GPIO Enable */\r
+#define GPIO_GPERS_P29              (0x1u << 29) /**< \brief (GPIO_GPERS) GPIO Enable */\r
+#define GPIO_GPERS_P30              (0x1u << 30) /**< \brief (GPIO_GPERS) GPIO Enable */\r
+#define GPIO_GPERS_P31              (0x1u << 31) /**< \brief (GPIO_GPERS) GPIO Enable */\r
+/* -------- GPIO_GPERC : (GPIO Offset: 0x008) Port GPIO Enable Register - Clear -------- */\r
+#define GPIO_GPERC_P0               (0x1u <<  0) /**< \brief (GPIO_GPERC) GPIO Enable */\r
+#define GPIO_GPERC_P1               (0x1u <<  1) /**< \brief (GPIO_GPERC) GPIO Enable */\r
+#define GPIO_GPERC_P2               (0x1u <<  2) /**< \brief (GPIO_GPERC) GPIO Enable */\r
+#define GPIO_GPERC_P3               (0x1u <<  3) /**< \brief (GPIO_GPERC) GPIO Enable */\r
+#define GPIO_GPERC_P4               (0x1u <<  4) /**< \brief (GPIO_GPERC) GPIO Enable */\r
+#define GPIO_GPERC_P5               (0x1u <<  5) /**< \brief (GPIO_GPERC) GPIO Enable */\r
+#define GPIO_GPERC_P6               (0x1u <<  6) /**< \brief (GPIO_GPERC) GPIO Enable */\r
+#define GPIO_GPERC_P7               (0x1u <<  7) /**< \brief (GPIO_GPERC) GPIO Enable */\r
+#define GPIO_GPERC_P8               (0x1u <<  8) /**< \brief (GPIO_GPERC) GPIO Enable */\r
+#define GPIO_GPERC_P9               (0x1u <<  9) /**< \brief (GPIO_GPERC) GPIO Enable */\r
+#define GPIO_GPERC_P10              (0x1u << 10) /**< \brief (GPIO_GPERC) GPIO Enable */\r
+#define GPIO_GPERC_P11              (0x1u << 11) /**< \brief (GPIO_GPERC) GPIO Enable */\r
+#define GPIO_GPERC_P12              (0x1u << 12) /**< \brief (GPIO_GPERC) GPIO Enable */\r
+#define GPIO_GPERC_P13              (0x1u << 13) /**< \brief (GPIO_GPERC) GPIO Enable */\r
+#define GPIO_GPERC_P14              (0x1u << 14) /**< \brief (GPIO_GPERC) GPIO Enable */\r
+#define GPIO_GPERC_P15              (0x1u << 15) /**< \brief (GPIO_GPERC) GPIO Enable */\r
+#define GPIO_GPERC_P16              (0x1u << 16) /**< \brief (GPIO_GPERC) GPIO Enable */\r
+#define GPIO_GPERC_P17              (0x1u << 17) /**< \brief (GPIO_GPERC) GPIO Enable */\r
+#define GPIO_GPERC_P18              (0x1u << 18) /**< \brief (GPIO_GPERC) GPIO Enable */\r
+#define GPIO_GPERC_P19              (0x1u << 19) /**< \brief (GPIO_GPERC) GPIO Enable */\r
+#define GPIO_GPERC_P20              (0x1u << 20) /**< \brief (GPIO_GPERC) GPIO Enable */\r
+#define GPIO_GPERC_P21              (0x1u << 21) /**< \brief (GPIO_GPERC) GPIO Enable */\r
+#define GPIO_GPERC_P22              (0x1u << 22) /**< \brief (GPIO_GPERC) GPIO Enable */\r
+#define GPIO_GPERC_P23              (0x1u << 23) /**< \brief (GPIO_GPERC) GPIO Enable */\r
+#define GPIO_GPERC_P24              (0x1u << 24) /**< \brief (GPIO_GPERC) GPIO Enable */\r
+#define GPIO_GPERC_P25              (0x1u << 25) /**< \brief (GPIO_GPERC) GPIO Enable */\r
+#define GPIO_GPERC_P26              (0x1u << 26) /**< \brief (GPIO_GPERC) GPIO Enable */\r
+#define GPIO_GPERC_P27              (0x1u << 27) /**< \brief (GPIO_GPERC) GPIO Enable */\r
+#define GPIO_GPERC_P28              (0x1u << 28) /**< \brief (GPIO_GPERC) GPIO Enable */\r
+#define GPIO_GPERC_P29              (0x1u << 29) /**< \brief (GPIO_GPERC) GPIO Enable */\r
+#define GPIO_GPERC_P30              (0x1u << 30) /**< \brief (GPIO_GPERC) GPIO Enable */\r
+#define GPIO_GPERC_P31              (0x1u << 31) /**< \brief (GPIO_GPERC) GPIO Enable */\r
+/* -------- GPIO_GPERT : (GPIO Offset: 0x00C) Port GPIO Enable Register - Toggle -------- */\r
+#define GPIO_GPERT_P0               (0x1u <<  0) /**< \brief (GPIO_GPERT) GPIO Enable */\r
+#define GPIO_GPERT_P1               (0x1u <<  1) /**< \brief (GPIO_GPERT) GPIO Enable */\r
+#define GPIO_GPERT_P2               (0x1u <<  2) /**< \brief (GPIO_GPERT) GPIO Enable */\r
+#define GPIO_GPERT_P3               (0x1u <<  3) /**< \brief (GPIO_GPERT) GPIO Enable */\r
+#define GPIO_GPERT_P4               (0x1u <<  4) /**< \brief (GPIO_GPERT) GPIO Enable */\r
+#define GPIO_GPERT_P5               (0x1u <<  5) /**< \brief (GPIO_GPERT) GPIO Enable */\r
+#define GPIO_GPERT_P6               (0x1u <<  6) /**< \brief (GPIO_GPERT) GPIO Enable */\r
+#define GPIO_GPERT_P7               (0x1u <<  7) /**< \brief (GPIO_GPERT) GPIO Enable */\r
+#define GPIO_GPERT_P8               (0x1u <<  8) /**< \brief (GPIO_GPERT) GPIO Enable */\r
+#define GPIO_GPERT_P9               (0x1u <<  9) /**< \brief (GPIO_GPERT) GPIO Enable */\r
+#define GPIO_GPERT_P10              (0x1u << 10) /**< \brief (GPIO_GPERT) GPIO Enable */\r
+#define GPIO_GPERT_P11              (0x1u << 11) /**< \brief (GPIO_GPERT) GPIO Enable */\r
+#define GPIO_GPERT_P12              (0x1u << 12) /**< \brief (GPIO_GPERT) GPIO Enable */\r
+#define GPIO_GPERT_P13              (0x1u << 13) /**< \brief (GPIO_GPERT) GPIO Enable */\r
+#define GPIO_GPERT_P14              (0x1u << 14) /**< \brief (GPIO_GPERT) GPIO Enable */\r
+#define GPIO_GPERT_P15              (0x1u << 15) /**< \brief (GPIO_GPERT) GPIO Enable */\r
+#define GPIO_GPERT_P16              (0x1u << 16) /**< \brief (GPIO_GPERT) GPIO Enable */\r
+#define GPIO_GPERT_P17              (0x1u << 17) /**< \brief (GPIO_GPERT) GPIO Enable */\r
+#define GPIO_GPERT_P18              (0x1u << 18) /**< \brief (GPIO_GPERT) GPIO Enable */\r
+#define GPIO_GPERT_P19              (0x1u << 19) /**< \brief (GPIO_GPERT) GPIO Enable */\r
+#define GPIO_GPERT_P20              (0x1u << 20) /**< \brief (GPIO_GPERT) GPIO Enable */\r
+#define GPIO_GPERT_P21              (0x1u << 21) /**< \brief (GPIO_GPERT) GPIO Enable */\r
+#define GPIO_GPERT_P22              (0x1u << 22) /**< \brief (GPIO_GPERT) GPIO Enable */\r
+#define GPIO_GPERT_P23              (0x1u << 23) /**< \brief (GPIO_GPERT) GPIO Enable */\r
+#define GPIO_GPERT_P24              (0x1u << 24) /**< \brief (GPIO_GPERT) GPIO Enable */\r
+#define GPIO_GPERT_P25              (0x1u << 25) /**< \brief (GPIO_GPERT) GPIO Enable */\r
+#define GPIO_GPERT_P26              (0x1u << 26) /**< \brief (GPIO_GPERT) GPIO Enable */\r
+#define GPIO_GPERT_P27              (0x1u << 27) /**< \brief (GPIO_GPERT) GPIO Enable */\r
+#define GPIO_GPERT_P28              (0x1u << 28) /**< \brief (GPIO_GPERT) GPIO Enable */\r
+#define GPIO_GPERT_P29              (0x1u << 29) /**< \brief (GPIO_GPERT) GPIO Enable */\r
+#define GPIO_GPERT_P30              (0x1u << 30) /**< \brief (GPIO_GPERT) GPIO Enable */\r
+#define GPIO_GPERT_P31              (0x1u << 31) /**< \brief (GPIO_GPERT) GPIO Enable */\r
+/* -------- GPIO_PMR0 : (GPIO Offset: 0x010) Port Peripheral Mux Register 0 -------- */\r
+#define GPIO_PMR0_P0                (0x1u <<  0) /**< \brief (GPIO_PMR0) Peripheral Multiplexer Select bit 0 */\r
+#define GPIO_PMR0_P1                (0x1u <<  1) /**< \brief (GPIO_PMR0) Peripheral Multiplexer Select bit 0 */\r
+#define GPIO_PMR0_P2                (0x1u <<  2) /**< \brief (GPIO_PMR0) Peripheral Multiplexer Select bit 0 */\r
+#define GPIO_PMR0_P3                (0x1u <<  3) /**< \brief (GPIO_PMR0) Peripheral Multiplexer Select bit 0 */\r
+#define GPIO_PMR0_P4                (0x1u <<  4) /**< \brief (GPIO_PMR0) Peripheral Multiplexer Select bit 0 */\r
+#define GPIO_PMR0_P5                (0x1u <<  5) /**< \brief (GPIO_PMR0) Peripheral Multiplexer Select bit 0 */\r
+#define GPIO_PMR0_P6                (0x1u <<  6) /**< \brief (GPIO_PMR0) Peripheral Multiplexer Select bit 0 */\r
+#define GPIO_PMR0_P7                (0x1u <<  7) /**< \brief (GPIO_PMR0) Peripheral Multiplexer Select bit 0 */\r
+#define GPIO_PMR0_P8                (0x1u <<  8) /**< \brief (GPIO_PMR0) Peripheral Multiplexer Select bit 0 */\r
+#define GPIO_PMR0_P9                (0x1u <<  9) /**< \brief (GPIO_PMR0) Peripheral Multiplexer Select bit 0 */\r
+#define GPIO_PMR0_P10               (0x1u << 10) /**< \brief (GPIO_PMR0) Peripheral Multiplexer Select bit 0 */\r
+#define GPIO_PMR0_P11               (0x1u << 11) /**< \brief (GPIO_PMR0) Peripheral Multiplexer Select bit 0 */\r
+#define GPIO_PMR0_P12               (0x1u << 12) /**< \brief (GPIO_PMR0) Peripheral Multiplexer Select bit 0 */\r
+#define GPIO_PMR0_P13               (0x1u << 13) /**< \brief (GPIO_PMR0) Peripheral Multiplexer Select bit 0 */\r
+#define GPIO_PMR0_P14               (0x1u << 14) /**< \brief (GPIO_PMR0) Peripheral Multiplexer Select bit 0 */\r
+#define GPIO_PMR0_P15               (0x1u << 15) /**< \brief (GPIO_PMR0) Peripheral Multiplexer Select bit 0 */\r
+#define GPIO_PMR0_P16               (0x1u << 16) /**< \brief (GPIO_PMR0) Peripheral Multiplexer Select bit 0 */\r
+#define GPIO_PMR0_P17               (0x1u << 17) /**< \brief (GPIO_PMR0) Peripheral Multiplexer Select bit 0 */\r
+#define GPIO_PMR0_P18               (0x1u << 18) /**< \brief (GPIO_PMR0) Peripheral Multiplexer Select bit 0 */\r
+#define GPIO_PMR0_P19               (0x1u << 19) /**< \brief (GPIO_PMR0) Peripheral Multiplexer Select bit 0 */\r
+#define GPIO_PMR0_P20               (0x1u << 20) /**< \brief (GPIO_PMR0) Peripheral Multiplexer Select bit 0 */\r
+#define GPIO_PMR0_P21               (0x1u << 21) /**< \brief (GPIO_PMR0) Peripheral Multiplexer Select bit 0 */\r
+#define GPIO_PMR0_P22               (0x1u << 22) /**< \brief (GPIO_PMR0) Peripheral Multiplexer Select bit 0 */\r
+#define GPIO_PMR0_P23               (0x1u << 23) /**< \brief (GPIO_PMR0) Peripheral Multiplexer Select bit 0 */\r
+#define GPIO_PMR0_P24               (0x1u << 24) /**< \brief (GPIO_PMR0) Peripheral Multiplexer Select bit 0 */\r
+#define GPIO_PMR0_P25               (0x1u << 25) /**< \brief (GPIO_PMR0) Peripheral Multiplexer Select bit 0 */\r
+#define GPIO_PMR0_P26               (0x1u << 26) /**< \brief (GPIO_PMR0) Peripheral Multiplexer Select bit 0 */\r
+#define GPIO_PMR0_P27               (0x1u << 27) /**< \brief (GPIO_PMR0) Peripheral Multiplexer Select bit 0 */\r
+#define GPIO_PMR0_P28               (0x1u << 28) /**< \brief (GPIO_PMR0) Peripheral Multiplexer Select bit 0 */\r
+#define GPIO_PMR0_P29               (0x1u << 29) /**< \brief (GPIO_PMR0) Peripheral Multiplexer Select bit 0 */\r
+#define GPIO_PMR0_P30               (0x1u << 30) /**< \brief (GPIO_PMR0) Peripheral Multiplexer Select bit 0 */\r
+#define GPIO_PMR0_P31               (0x1u << 31) /**< \brief (GPIO_PMR0) Peripheral Multiplexer Select bit 0 */\r
+/* -------- GPIO_PMR0S : (GPIO Offset: 0x014) Port Peripheral Mux Register 0 - Set -------- */\r
+#define GPIO_PMR0S_P0               (0x1u <<  0) /**< \brief (GPIO_PMR0S) Peripheral Multiplexer Select bit 0 */\r
+#define GPIO_PMR0S_P1               (0x1u <<  1) /**< \brief (GPIO_PMR0S) Peripheral Multiplexer Select bit 0 */\r
+#define GPIO_PMR0S_P2               (0x1u <<  2) /**< \brief (GPIO_PMR0S) Peripheral Multiplexer Select bit 0 */\r
+#define GPIO_PMR0S_P3               (0x1u <<  3) /**< \brief (GPIO_PMR0S) Peripheral Multiplexer Select bit 0 */\r
+#define GPIO_PMR0S_P4               (0x1u <<  4) /**< \brief (GPIO_PMR0S) Peripheral Multiplexer Select bit 0 */\r
+#define GPIO_PMR0S_P5               (0x1u <<  5) /**< \brief (GPIO_PMR0S) Peripheral Multiplexer Select bit 0 */\r
+#define GPIO_PMR0S_P6               (0x1u <<  6) /**< \brief (GPIO_PMR0S) Peripheral Multiplexer Select bit 0 */\r
+#define GPIO_PMR0S_P7               (0x1u <<  7) /**< \brief (GPIO_PMR0S) Peripheral Multiplexer Select bit 0 */\r
+#define GPIO_PMR0S_P8               (0x1u <<  8) /**< \brief (GPIO_PMR0S) Peripheral Multiplexer Select bit 0 */\r
+#define GPIO_PMR0S_P9               (0x1u <<  9) /**< \brief (GPIO_PMR0S) Peripheral Multiplexer Select bit 0 */\r
+#define GPIO_PMR0S_P10              (0x1u << 10) /**< \brief (GPIO_PMR0S) Peripheral Multiplexer Select bit 0 */\r
+#define GPIO_PMR0S_P11              (0x1u << 11) /**< \brief (GPIO_PMR0S) Peripheral Multiplexer Select bit 0 */\r
+#define GPIO_PMR0S_P12              (0x1u << 12) /**< \brief (GPIO_PMR0S) Peripheral Multiplexer Select bit 0 */\r
+#define GPIO_PMR0S_P13              (0x1u << 13) /**< \brief (GPIO_PMR0S) Peripheral Multiplexer Select bit 0 */\r
+#define GPIO_PMR0S_P14              (0x1u << 14) /**< \brief (GPIO_PMR0S) Peripheral Multiplexer Select bit 0 */\r
+#define GPIO_PMR0S_P15              (0x1u << 15) /**< \brief (GPIO_PMR0S) Peripheral Multiplexer Select bit 0 */\r
+#define GPIO_PMR0S_P16              (0x1u << 16) /**< \brief (GPIO_PMR0S) Peripheral Multiplexer Select bit 0 */\r
+#define GPIO_PMR0S_P17              (0x1u << 17) /**< \brief (GPIO_PMR0S) Peripheral Multiplexer Select bit 0 */\r
+#define GPIO_PMR0S_P18              (0x1u << 18) /**< \brief (GPIO_PMR0S) Peripheral Multiplexer Select bit 0 */\r
+#define GPIO_PMR0S_P19              (0x1u << 19) /**< \brief (GPIO_PMR0S) Peripheral Multiplexer Select bit 0 */\r
+#define GPIO_PMR0S_P20              (0x1u << 20) /**< \brief (GPIO_PMR0S) Peripheral Multiplexer Select bit 0 */\r
+#define GPIO_PMR0S_P21              (0x1u << 21) /**< \brief (GPIO_PMR0S) Peripheral Multiplexer Select bit 0 */\r
+#define GPIO_PMR0S_P22              (0x1u << 22) /**< \brief (GPIO_PMR0S) Peripheral Multiplexer Select bit 0 */\r
+#define GPIO_PMR0S_P23              (0x1u << 23) /**< \brief (GPIO_PMR0S) Peripheral Multiplexer Select bit 0 */\r
+#define GPIO_PMR0S_P24              (0x1u << 24) /**< \brief (GPIO_PMR0S) Peripheral Multiplexer Select bit 0 */\r
+#define GPIO_PMR0S_P25              (0x1u << 25) /**< \brief (GPIO_PMR0S) Peripheral Multiplexer Select bit 0 */\r
+#define GPIO_PMR0S_P26              (0x1u << 26) /**< \brief (GPIO_PMR0S) Peripheral Multiplexer Select bit 0 */\r
+#define GPIO_PMR0S_P27              (0x1u << 27) /**< \brief (GPIO_PMR0S) Peripheral Multiplexer Select bit 0 */\r
+#define GPIO_PMR0S_P28              (0x1u << 28) /**< \brief (GPIO_PMR0S) Peripheral Multiplexer Select bit 0 */\r
+#define GPIO_PMR0S_P29              (0x1u << 29) /**< \brief (GPIO_PMR0S) Peripheral Multiplexer Select bit 0 */\r
+#define GPIO_PMR0S_P30              (0x1u << 30) /**< \brief (GPIO_PMR0S) Peripheral Multiplexer Select bit 0 */\r
+#define GPIO_PMR0S_P31              (0x1u << 31) /**< \brief (GPIO_PMR0S) Peripheral Multiplexer Select bit 0 */\r
+/* -------- GPIO_PMR0C : (GPIO Offset: 0x018) Port Peripheral Mux Register 0 - Clear -------- */\r
+#define GPIO_PMR0C_P0               (0x1u <<  0) /**< \brief (GPIO_PMR0C) Peripheral Multiplexer Select bit 0 */\r
+#define GPIO_PMR0C_P1               (0x1u <<  1) /**< \brief (GPIO_PMR0C) Peripheral Multiplexer Select bit 0 */\r
+#define GPIO_PMR0C_P2               (0x1u <<  2) /**< \brief (GPIO_PMR0C) Peripheral Multiplexer Select bit 0 */\r
+#define GPIO_PMR0C_P3               (0x1u <<  3) /**< \brief (GPIO_PMR0C) Peripheral Multiplexer Select bit 0 */\r
+#define GPIO_PMR0C_P4               (0x1u <<  4) /**< \brief (GPIO_PMR0C) Peripheral Multiplexer Select bit 0 */\r
+#define GPIO_PMR0C_P5               (0x1u <<  5) /**< \brief (GPIO_PMR0C) Peripheral Multiplexer Select bit 0 */\r
+#define GPIO_PMR0C_P6               (0x1u <<  6) /**< \brief (GPIO_PMR0C) Peripheral Multiplexer Select bit 0 */\r
+#define GPIO_PMR0C_P7               (0x1u <<  7) /**< \brief (GPIO_PMR0C) Peripheral Multiplexer Select bit 0 */\r
+#define GPIO_PMR0C_P8               (0x1u <<  8) /**< \brief (GPIO_PMR0C) Peripheral Multiplexer Select bit 0 */\r
+#define GPIO_PMR0C_P9               (0x1u <<  9) /**< \brief (GPIO_PMR0C) Peripheral Multiplexer Select bit 0 */\r
+#define GPIO_PMR0C_P10              (0x1u << 10) /**< \brief (GPIO_PMR0C) Peripheral Multiplexer Select bit 0 */\r
+#define GPIO_PMR0C_P11              (0x1u << 11) /**< \brief (GPIO_PMR0C) Peripheral Multiplexer Select bit 0 */\r
+#define GPIO_PMR0C_P12              (0x1u << 12) /**< \brief (GPIO_PMR0C) Peripheral Multiplexer Select bit 0 */\r
+#define GPIO_PMR0C_P13              (0x1u << 13) /**< \brief (GPIO_PMR0C) Peripheral Multiplexer Select bit 0 */\r
+#define GPIO_PMR0C_P14              (0x1u << 14) /**< \brief (GPIO_PMR0C) Peripheral Multiplexer Select bit 0 */\r
+#define GPIO_PMR0C_P15              (0x1u << 15) /**< \brief (GPIO_PMR0C) Peripheral Multiplexer Select bit 0 */\r
+#define GPIO_PMR0C_P16              (0x1u << 16) /**< \brief (GPIO_PMR0C) Peripheral Multiplexer Select bit 0 */\r
+#define GPIO_PMR0C_P17              (0x1u << 17) /**< \brief (GPIO_PMR0C) Peripheral Multiplexer Select bit 0 */\r
+#define GPIO_PMR0C_P18              (0x1u << 18) /**< \brief (GPIO_PMR0C) Peripheral Multiplexer Select bit 0 */\r
+#define GPIO_PMR0C_P19              (0x1u << 19) /**< \brief (GPIO_PMR0C) Peripheral Multiplexer Select bit 0 */\r
+#define GPIO_PMR0C_P20              (0x1u << 20) /**< \brief (GPIO_PMR0C) Peripheral Multiplexer Select bit 0 */\r
+#define GPIO_PMR0C_P21              (0x1u << 21) /**< \brief (GPIO_PMR0C) Peripheral Multiplexer Select bit 0 */\r
+#define GPIO_PMR0C_P22              (0x1u << 22) /**< \brief (GPIO_PMR0C) Peripheral Multiplexer Select bit 0 */\r
+#define GPIO_PMR0C_P23              (0x1u << 23) /**< \brief (GPIO_PMR0C) Peripheral Multiplexer Select bit 0 */\r
+#define GPIO_PMR0C_P24              (0x1u << 24) /**< \brief (GPIO_PMR0C) Peripheral Multiplexer Select bit 0 */\r
+#define GPIO_PMR0C_P25              (0x1u << 25) /**< \brief (GPIO_PMR0C) Peripheral Multiplexer Select bit 0 */\r
+#define GPIO_PMR0C_P26              (0x1u << 26) /**< \brief (GPIO_PMR0C) Peripheral Multiplexer Select bit 0 */\r
+#define GPIO_PMR0C_P27              (0x1u << 27) /**< \brief (GPIO_PMR0C) Peripheral Multiplexer Select bit 0 */\r
+#define GPIO_PMR0C_P28              (0x1u << 28) /**< \brief (GPIO_PMR0C) Peripheral Multiplexer Select bit 0 */\r
+#define GPIO_PMR0C_P29              (0x1u << 29) /**< \brief (GPIO_PMR0C) Peripheral Multiplexer Select bit 0 */\r
+#define GPIO_PMR0C_P30              (0x1u << 30) /**< \brief (GPIO_PMR0C) Peripheral Multiplexer Select bit 0 */\r
+#define GPIO_PMR0C_P31              (0x1u << 31) /**< \brief (GPIO_PMR0C) Peripheral Multiplexer Select bit 0 */\r
+/* -------- GPIO_PMR0T : (GPIO Offset: 0x01C) Port Peripheral Mux Register 0 - Toggle -------- */\r
+#define GPIO_PMR0T_P0               (0x1u <<  0) /**< \brief (GPIO_PMR0T) Peripheral Multiplexer Select bit 0 */\r
+#define GPIO_PMR0T_P1               (0x1u <<  1) /**< \brief (GPIO_PMR0T) Peripheral Multiplexer Select bit 0 */\r
+#define GPIO_PMR0T_P2               (0x1u <<  2) /**< \brief (GPIO_PMR0T) Peripheral Multiplexer Select bit 0 */\r
+#define GPIO_PMR0T_P3               (0x1u <<  3) /**< \brief (GPIO_PMR0T) Peripheral Multiplexer Select bit 0 */\r
+#define GPIO_PMR0T_P4               (0x1u <<  4) /**< \brief (GPIO_PMR0T) Peripheral Multiplexer Select bit 0 */\r
+#define GPIO_PMR0T_P5               (0x1u <<  5) /**< \brief (GPIO_PMR0T) Peripheral Multiplexer Select bit 0 */\r
+#define GPIO_PMR0T_P6               (0x1u <<  6) /**< \brief (GPIO_PMR0T) Peripheral Multiplexer Select bit 0 */\r
+#define GPIO_PMR0T_P7               (0x1u <<  7) /**< \brief (GPIO_PMR0T) Peripheral Multiplexer Select bit 0 */\r
+#define GPIO_PMR0T_P8               (0x1u <<  8) /**< \brief (GPIO_PMR0T) Peripheral Multiplexer Select bit 0 */\r
+#define GPIO_PMR0T_P9               (0x1u <<  9) /**< \brief (GPIO_PMR0T) Peripheral Multiplexer Select bit 0 */\r
+#define GPIO_PMR0T_P10              (0x1u << 10) /**< \brief (GPIO_PMR0T) Peripheral Multiplexer Select bit 0 */\r
+#define GPIO_PMR0T_P11              (0x1u << 11) /**< \brief (GPIO_PMR0T) Peripheral Multiplexer Select bit 0 */\r
+#define GPIO_PMR0T_P12              (0x1u << 12) /**< \brief (GPIO_PMR0T) Peripheral Multiplexer Select bit 0 */\r
+#define GPIO_PMR0T_P13              (0x1u << 13) /**< \brief (GPIO_PMR0T) Peripheral Multiplexer Select bit 0 */\r
+#define GPIO_PMR0T_P14              (0x1u << 14) /**< \brief (GPIO_PMR0T) Peripheral Multiplexer Select bit 0 */\r
+#define GPIO_PMR0T_P15              (0x1u << 15) /**< \brief (GPIO_PMR0T) Peripheral Multiplexer Select bit 0 */\r
+#define GPIO_PMR0T_P16              (0x1u << 16) /**< \brief (GPIO_PMR0T) Peripheral Multiplexer Select bit 0 */\r
+#define GPIO_PMR0T_P17              (0x1u << 17) /**< \brief (GPIO_PMR0T) Peripheral Multiplexer Select bit 0 */\r
+#define GPIO_PMR0T_P18              (0x1u << 18) /**< \brief (GPIO_PMR0T) Peripheral Multiplexer Select bit 0 */\r
+#define GPIO_PMR0T_P19              (0x1u << 19) /**< \brief (GPIO_PMR0T) Peripheral Multiplexer Select bit 0 */\r
+#define GPIO_PMR0T_P20              (0x1u << 20) /**< \brief (GPIO_PMR0T) Peripheral Multiplexer Select bit 0 */\r
+#define GPIO_PMR0T_P21              (0x1u << 21) /**< \brief (GPIO_PMR0T) Peripheral Multiplexer Select bit 0 */\r
+#define GPIO_PMR0T_P22              (0x1u << 22) /**< \brief (GPIO_PMR0T) Peripheral Multiplexer Select bit 0 */\r
+#define GPIO_PMR0T_P23              (0x1u << 23) /**< \brief (GPIO_PMR0T) Peripheral Multiplexer Select bit 0 */\r
+#define GPIO_PMR0T_P24              (0x1u << 24) /**< \brief (GPIO_PMR0T) Peripheral Multiplexer Select bit 0 */\r
+#define GPIO_PMR0T_P25              (0x1u << 25) /**< \brief (GPIO_PMR0T) Peripheral Multiplexer Select bit 0 */\r
+#define GPIO_PMR0T_P26              (0x1u << 26) /**< \brief (GPIO_PMR0T) Peripheral Multiplexer Select bit 0 */\r
+#define GPIO_PMR0T_P27              (0x1u << 27) /**< \brief (GPIO_PMR0T) Peripheral Multiplexer Select bit 0 */\r
+#define GPIO_PMR0T_P28              (0x1u << 28) /**< \brief (GPIO_PMR0T) Peripheral Multiplexer Select bit 0 */\r
+#define GPIO_PMR0T_P29              (0x1u << 29) /**< \brief (GPIO_PMR0T) Peripheral Multiplexer Select bit 0 */\r
+#define GPIO_PMR0T_P30              (0x1u << 30) /**< \brief (GPIO_PMR0T) Peripheral Multiplexer Select bit 0 */\r
+#define GPIO_PMR0T_P31              (0x1u << 31) /**< \brief (GPIO_PMR0T) Peripheral Multiplexer Select bit 0 */\r
+/* -------- GPIO_PMR1 : (GPIO Offset: 0x020) Port Peripheral Mux Register 1 -------- */\r
+#define GPIO_PMR1_P0                (0x1u <<  0) /**< \brief (GPIO_PMR1) Peripheral Multiplexer Select bit 1 */\r
+#define GPIO_PMR1_P1                (0x1u <<  1) /**< \brief (GPIO_PMR1) Peripheral Multiplexer Select bit 1 */\r
+#define GPIO_PMR1_P2                (0x1u <<  2) /**< \brief (GPIO_PMR1) Peripheral Multiplexer Select bit 1 */\r
+#define GPIO_PMR1_P3                (0x1u <<  3) /**< \brief (GPIO_PMR1) Peripheral Multiplexer Select bit 1 */\r
+#define GPIO_PMR1_P4                (0x1u <<  4) /**< \brief (GPIO_PMR1) Peripheral Multiplexer Select bit 1 */\r
+#define GPIO_PMR1_P5                (0x1u <<  5) /**< \brief (GPIO_PMR1) Peripheral Multiplexer Select bit 1 */\r
+#define GPIO_PMR1_P6                (0x1u <<  6) /**< \brief (GPIO_PMR1) Peripheral Multiplexer Select bit 1 */\r
+#define GPIO_PMR1_P7                (0x1u <<  7) /**< \brief (GPIO_PMR1) Peripheral Multiplexer Select bit 1 */\r
+#define GPIO_PMR1_P8                (0x1u <<  8) /**< \brief (GPIO_PMR1) Peripheral Multiplexer Select bit 1 */\r
+#define GPIO_PMR1_P9                (0x1u <<  9) /**< \brief (GPIO_PMR1) Peripheral Multiplexer Select bit 1 */\r
+#define GPIO_PMR1_P10               (0x1u << 10) /**< \brief (GPIO_PMR1) Peripheral Multiplexer Select bit 1 */\r
+#define GPIO_PMR1_P11               (0x1u << 11) /**< \brief (GPIO_PMR1) Peripheral Multiplexer Select bit 1 */\r
+#define GPIO_PMR1_P12               (0x1u << 12) /**< \brief (GPIO_PMR1) Peripheral Multiplexer Select bit 1 */\r
+#define GPIO_PMR1_P13               (0x1u << 13) /**< \brief (GPIO_PMR1) Peripheral Multiplexer Select bit 1 */\r
+#define GPIO_PMR1_P14               (0x1u << 14) /**< \brief (GPIO_PMR1) Peripheral Multiplexer Select bit 1 */\r
+#define GPIO_PMR1_P15               (0x1u << 15) /**< \brief (GPIO_PMR1) Peripheral Multiplexer Select bit 1 */\r
+#define GPIO_PMR1_P16               (0x1u << 16) /**< \brief (GPIO_PMR1) Peripheral Multiplexer Select bit 1 */\r
+#define GPIO_PMR1_P17               (0x1u << 17) /**< \brief (GPIO_PMR1) Peripheral Multiplexer Select bit 1 */\r
+#define GPIO_PMR1_P18               (0x1u << 18) /**< \brief (GPIO_PMR1) Peripheral Multiplexer Select bit 1 */\r
+#define GPIO_PMR1_P19               (0x1u << 19) /**< \brief (GPIO_PMR1) Peripheral Multiplexer Select bit 1 */\r
+#define GPIO_PMR1_P20               (0x1u << 20) /**< \brief (GPIO_PMR1) Peripheral Multiplexer Select bit 1 */\r
+#define GPIO_PMR1_P21               (0x1u << 21) /**< \brief (GPIO_PMR1) Peripheral Multiplexer Select bit 1 */\r
+#define GPIO_PMR1_P22               (0x1u << 22) /**< \brief (GPIO_PMR1) Peripheral Multiplexer Select bit 1 */\r
+#define GPIO_PMR1_P23               (0x1u << 23) /**< \brief (GPIO_PMR1) Peripheral Multiplexer Select bit 1 */\r
+#define GPIO_PMR1_P24               (0x1u << 24) /**< \brief (GPIO_PMR1) Peripheral Multiplexer Select bit 1 */\r
+#define GPIO_PMR1_P25               (0x1u << 25) /**< \brief (GPIO_PMR1) Peripheral Multiplexer Select bit 1 */\r
+#define GPIO_PMR1_P26               (0x1u << 26) /**< \brief (GPIO_PMR1) Peripheral Multiplexer Select bit 1 */\r
+#define GPIO_PMR1_P27               (0x1u << 27) /**< \brief (GPIO_PMR1) Peripheral Multiplexer Select bit 1 */\r
+#define GPIO_PMR1_P28               (0x1u << 28) /**< \brief (GPIO_PMR1) Peripheral Multiplexer Select bit 1 */\r
+#define GPIO_PMR1_P29               (0x1u << 29) /**< \brief (GPIO_PMR1) Peripheral Multiplexer Select bit 1 */\r
+#define GPIO_PMR1_P30               (0x1u << 30) /**< \brief (GPIO_PMR1) Peripheral Multiplexer Select bit 1 */\r
+#define GPIO_PMR1_P31               (0x1u << 31) /**< \brief (GPIO_PMR1) Peripheral Multiplexer Select bit 1 */\r
+/* -------- GPIO_PMR1S : (GPIO Offset: 0x024) Port Peripheral Mux Register 1 - Set -------- */\r
+#define GPIO_PMR1S_P0               (0x1u <<  0) /**< \brief (GPIO_PMR1S) Peripheral Multiplexer Select bit 1 */\r
+#define GPIO_PMR1S_P1               (0x1u <<  1) /**< \brief (GPIO_PMR1S) Peripheral Multiplexer Select bit 1 */\r
+#define GPIO_PMR1S_P2               (0x1u <<  2) /**< \brief (GPIO_PMR1S) Peripheral Multiplexer Select bit 1 */\r
+#define GPIO_PMR1S_P3               (0x1u <<  3) /**< \brief (GPIO_PMR1S) Peripheral Multiplexer Select bit 1 */\r
+#define GPIO_PMR1S_P4               (0x1u <<  4) /**< \brief (GPIO_PMR1S) Peripheral Multiplexer Select bit 1 */\r
+#define GPIO_PMR1S_P5               (0x1u <<  5) /**< \brief (GPIO_PMR1S) Peripheral Multiplexer Select bit 1 */\r
+#define GPIO_PMR1S_P6               (0x1u <<  6) /**< \brief (GPIO_PMR1S) Peripheral Multiplexer Select bit 1 */\r
+#define GPIO_PMR1S_P7               (0x1u <<  7) /**< \brief (GPIO_PMR1S) Peripheral Multiplexer Select bit 1 */\r
+#define GPIO_PMR1S_P8               (0x1u <<  8) /**< \brief (GPIO_PMR1S) Peripheral Multiplexer Select bit 1 */\r
+#define GPIO_PMR1S_P9               (0x1u <<  9) /**< \brief (GPIO_PMR1S) Peripheral Multiplexer Select bit 1 */\r
+#define GPIO_PMR1S_P10              (0x1u << 10) /**< \brief (GPIO_PMR1S) Peripheral Multiplexer Select bit 1 */\r
+#define GPIO_PMR1S_P11              (0x1u << 11) /**< \brief (GPIO_PMR1S) Peripheral Multiplexer Select bit 1 */\r
+#define GPIO_PMR1S_P12              (0x1u << 12) /**< \brief (GPIO_PMR1S) Peripheral Multiplexer Select bit 1 */\r
+#define GPIO_PMR1S_P13              (0x1u << 13) /**< \brief (GPIO_PMR1S) Peripheral Multiplexer Select bit 1 */\r
+#define GPIO_PMR1S_P14              (0x1u << 14) /**< \brief (GPIO_PMR1S) Peripheral Multiplexer Select bit 1 */\r
+#define GPIO_PMR1S_P15              (0x1u << 15) /**< \brief (GPIO_PMR1S) Peripheral Multiplexer Select bit 1 */\r
+#define GPIO_PMR1S_P16              (0x1u << 16) /**< \brief (GPIO_PMR1S) Peripheral Multiplexer Select bit 1 */\r
+#define GPIO_PMR1S_P17              (0x1u << 17) /**< \brief (GPIO_PMR1S) Peripheral Multiplexer Select bit 1 */\r
+#define GPIO_PMR1S_P18              (0x1u << 18) /**< \brief (GPIO_PMR1S) Peripheral Multiplexer Select bit 1 */\r
+#define GPIO_PMR1S_P19              (0x1u << 19) /**< \brief (GPIO_PMR1S) Peripheral Multiplexer Select bit 1 */\r
+#define GPIO_PMR1S_P20              (0x1u << 20) /**< \brief (GPIO_PMR1S) Peripheral Multiplexer Select bit 1 */\r
+#define GPIO_PMR1S_P21              (0x1u << 21) /**< \brief (GPIO_PMR1S) Peripheral Multiplexer Select bit 1 */\r
+#define GPIO_PMR1S_P22              (0x1u << 22) /**< \brief (GPIO_PMR1S) Peripheral Multiplexer Select bit 1 */\r
+#define GPIO_PMR1S_P23              (0x1u << 23) /**< \brief (GPIO_PMR1S) Peripheral Multiplexer Select bit 1 */\r
+#define GPIO_PMR1S_P24              (0x1u << 24) /**< \brief (GPIO_PMR1S) Peripheral Multiplexer Select bit 1 */\r
+#define GPIO_PMR1S_P25              (0x1u << 25) /**< \brief (GPIO_PMR1S) Peripheral Multiplexer Select bit 1 */\r
+#define GPIO_PMR1S_P26              (0x1u << 26) /**< \brief (GPIO_PMR1S) Peripheral Multiplexer Select bit 1 */\r
+#define GPIO_PMR1S_P27              (0x1u << 27) /**< \brief (GPIO_PMR1S) Peripheral Multiplexer Select bit 1 */\r
+#define GPIO_PMR1S_P28              (0x1u << 28) /**< \brief (GPIO_PMR1S) Peripheral Multiplexer Select bit 1 */\r
+#define GPIO_PMR1S_P29              (0x1u << 29) /**< \brief (GPIO_PMR1S) Peripheral Multiplexer Select bit 1 */\r
+#define GPIO_PMR1S_P30              (0x1u << 30) /**< \brief (GPIO_PMR1S) Peripheral Multiplexer Select bit 1 */\r
+#define GPIO_PMR1S_P31              (0x1u << 31) /**< \brief (GPIO_PMR1S) Peripheral Multiplexer Select bit 1 */\r
+/* -------- GPIO_PMR1C : (GPIO Offset: 0x028) Port Peripheral Mux Register 1 - Clear -------- */\r
+#define GPIO_PMR1C_P0               (0x1u <<  0) /**< \brief (GPIO_PMR1C) Peripheral Multiplexer Select bit 1 */\r
+#define GPIO_PMR1C_P1               (0x1u <<  1) /**< \brief (GPIO_PMR1C) Peripheral Multiplexer Select bit 1 */\r
+#define GPIO_PMR1C_P2               (0x1u <<  2) /**< \brief (GPIO_PMR1C) Peripheral Multiplexer Select bit 1 */\r
+#define GPIO_PMR1C_P3               (0x1u <<  3) /**< \brief (GPIO_PMR1C) Peripheral Multiplexer Select bit 1 */\r
+#define GPIO_PMR1C_P4               (0x1u <<  4) /**< \brief (GPIO_PMR1C) Peripheral Multiplexer Select bit 1 */\r
+#define GPIO_PMR1C_P5               (0x1u <<  5) /**< \brief (GPIO_PMR1C) Peripheral Multiplexer Select bit 1 */\r
+#define GPIO_PMR1C_P6               (0x1u <<  6) /**< \brief (GPIO_PMR1C) Peripheral Multiplexer Select bit 1 */\r
+#define GPIO_PMR1C_P7               (0x1u <<  7) /**< \brief (GPIO_PMR1C) Peripheral Multiplexer Select bit 1 */\r
+#define GPIO_PMR1C_P8               (0x1u <<  8) /**< \brief (GPIO_PMR1C) Peripheral Multiplexer Select bit 1 */\r
+#define GPIO_PMR1C_P9               (0x1u <<  9) /**< \brief (GPIO_PMR1C) Peripheral Multiplexer Select bit 1 */\r
+#define GPIO_PMR1C_P10              (0x1u << 10) /**< \brief (GPIO_PMR1C) Peripheral Multiplexer Select bit 1 */\r
+#define GPIO_PMR1C_P11              (0x1u << 11) /**< \brief (GPIO_PMR1C) Peripheral Multiplexer Select bit 1 */\r
+#define GPIO_PMR1C_P12              (0x1u << 12) /**< \brief (GPIO_PMR1C) Peripheral Multiplexer Select bit 1 */\r
+#define GPIO_PMR1C_P13              (0x1u << 13) /**< \brief (GPIO_PMR1C) Peripheral Multiplexer Select bit 1 */\r
+#define GPIO_PMR1C_P14              (0x1u << 14) /**< \brief (GPIO_PMR1C) Peripheral Multiplexer Select bit 1 */\r
+#define GPIO_PMR1C_P15              (0x1u << 15) /**< \brief (GPIO_PMR1C) Peripheral Multiplexer Select bit 1 */\r
+#define GPIO_PMR1C_P16              (0x1u << 16) /**< \brief (GPIO_PMR1C) Peripheral Multiplexer Select bit 1 */\r
+#define GPIO_PMR1C_P17              (0x1u << 17) /**< \brief (GPIO_PMR1C) Peripheral Multiplexer Select bit 1 */\r
+#define GPIO_PMR1C_P18              (0x1u << 18) /**< \brief (GPIO_PMR1C) Peripheral Multiplexer Select bit 1 */\r
+#define GPIO_PMR1C_P19              (0x1u << 19) /**< \brief (GPIO_PMR1C) Peripheral Multiplexer Select bit 1 */\r
+#define GPIO_PMR1C_P20              (0x1u << 20) /**< \brief (GPIO_PMR1C) Peripheral Multiplexer Select bit 1 */\r
+#define GPIO_PMR1C_P21              (0x1u << 21) /**< \brief (GPIO_PMR1C) Peripheral Multiplexer Select bit 1 */\r
+#define GPIO_PMR1C_P22              (0x1u << 22) /**< \brief (GPIO_PMR1C) Peripheral Multiplexer Select bit 1 */\r
+#define GPIO_PMR1C_P23              (0x1u << 23) /**< \brief (GPIO_PMR1C) Peripheral Multiplexer Select bit 1 */\r
+#define GPIO_PMR1C_P24              (0x1u << 24) /**< \brief (GPIO_PMR1C) Peripheral Multiplexer Select bit 1 */\r
+#define GPIO_PMR1C_P25              (0x1u << 25) /**< \brief (GPIO_PMR1C) Peripheral Multiplexer Select bit 1 */\r
+#define GPIO_PMR1C_P26              (0x1u << 26) /**< \brief (GPIO_PMR1C) Peripheral Multiplexer Select bit 1 */\r
+#define GPIO_PMR1C_P27              (0x1u << 27) /**< \brief (GPIO_PMR1C) Peripheral Multiplexer Select bit 1 */\r
+#define GPIO_PMR1C_P28              (0x1u << 28) /**< \brief (GPIO_PMR1C) Peripheral Multiplexer Select bit 1 */\r
+#define GPIO_PMR1C_P29              (0x1u << 29) /**< \brief (GPIO_PMR1C) Peripheral Multiplexer Select bit 1 */\r
+#define GPIO_PMR1C_P30              (0x1u << 30) /**< \brief (GPIO_PMR1C) Peripheral Multiplexer Select bit 1 */\r
+#define GPIO_PMR1C_P31              (0x1u << 31) /**< \brief (GPIO_PMR1C) Peripheral Multiplexer Select bit 1 */\r
+/* -------- GPIO_PMR1T : (GPIO Offset: 0x02C) Port Peripheral Mux Register 1 - Toggle -------- */\r
+#define GPIO_PMR1T_P0               (0x1u <<  0) /**< \brief (GPIO_PMR1T) Peripheral Multiplexer Select bit 1 */\r
+#define GPIO_PMR1T_P1               (0x1u <<  1) /**< \brief (GPIO_PMR1T) Peripheral Multiplexer Select bit 1 */\r
+#define GPIO_PMR1T_P2               (0x1u <<  2) /**< \brief (GPIO_PMR1T) Peripheral Multiplexer Select bit 1 */\r
+#define GPIO_PMR1T_P3               (0x1u <<  3) /**< \brief (GPIO_PMR1T) Peripheral Multiplexer Select bit 1 */\r
+#define GPIO_PMR1T_P4               (0x1u <<  4) /**< \brief (GPIO_PMR1T) Peripheral Multiplexer Select bit 1 */\r
+#define GPIO_PMR1T_P5               (0x1u <<  5) /**< \brief (GPIO_PMR1T) Peripheral Multiplexer Select bit 1 */\r
+#define GPIO_PMR1T_P6               (0x1u <<  6) /**< \brief (GPIO_PMR1T) Peripheral Multiplexer Select bit 1 */\r
+#define GPIO_PMR1T_P7               (0x1u <<  7) /**< \brief (GPIO_PMR1T) Peripheral Multiplexer Select bit 1 */\r
+#define GPIO_PMR1T_P8               (0x1u <<  8) /**< \brief (GPIO_PMR1T) Peripheral Multiplexer Select bit 1 */\r
+#define GPIO_PMR1T_P9               (0x1u <<  9) /**< \brief (GPIO_PMR1T) Peripheral Multiplexer Select bit 1 */\r
+#define GPIO_PMR1T_P10              (0x1u << 10) /**< \brief (GPIO_PMR1T) Peripheral Multiplexer Select bit 1 */\r
+#define GPIO_PMR1T_P11              (0x1u << 11) /**< \brief (GPIO_PMR1T) Peripheral Multiplexer Select bit 1 */\r
+#define GPIO_PMR1T_P12              (0x1u << 12) /**< \brief (GPIO_PMR1T) Peripheral Multiplexer Select bit 1 */\r
+#define GPIO_PMR1T_P13              (0x1u << 13) /**< \brief (GPIO_PMR1T) Peripheral Multiplexer Select bit 1 */\r
+#define GPIO_PMR1T_P14              (0x1u << 14) /**< \brief (GPIO_PMR1T) Peripheral Multiplexer Select bit 1 */\r
+#define GPIO_PMR1T_P15              (0x1u << 15) /**< \brief (GPIO_PMR1T) Peripheral Multiplexer Select bit 1 */\r
+#define GPIO_PMR1T_P16              (0x1u << 16) /**< \brief (GPIO_PMR1T) Peripheral Multiplexer Select bit 1 */\r
+#define GPIO_PMR1T_P17              (0x1u << 17) /**< \brief (GPIO_PMR1T) Peripheral Multiplexer Select bit 1 */\r
+#define GPIO_PMR1T_P18              (0x1u << 18) /**< \brief (GPIO_PMR1T) Peripheral Multiplexer Select bit 1 */\r
+#define GPIO_PMR1T_P19              (0x1u << 19) /**< \brief (GPIO_PMR1T) Peripheral Multiplexer Select bit 1 */\r
+#define GPIO_PMR1T_P20              (0x1u << 20) /**< \brief (GPIO_PMR1T) Peripheral Multiplexer Select bit 1 */\r
+#define GPIO_PMR1T_P21              (0x1u << 21) /**< \brief (GPIO_PMR1T) Peripheral Multiplexer Select bit 1 */\r
+#define GPIO_PMR1T_P22              (0x1u << 22) /**< \brief (GPIO_PMR1T) Peripheral Multiplexer Select bit 1 */\r
+#define GPIO_PMR1T_P23              (0x1u << 23) /**< \brief (GPIO_PMR1T) Peripheral Multiplexer Select bit 1 */\r
+#define GPIO_PMR1T_P24              (0x1u << 24) /**< \brief (GPIO_PMR1T) Peripheral Multiplexer Select bit 1 */\r
+#define GPIO_PMR1T_P25              (0x1u << 25) /**< \brief (GPIO_PMR1T) Peripheral Multiplexer Select bit 1 */\r
+#define GPIO_PMR1T_P26              (0x1u << 26) /**< \brief (GPIO_PMR1T) Peripheral Multiplexer Select bit 1 */\r
+#define GPIO_PMR1T_P27              (0x1u << 27) /**< \brief (GPIO_PMR1T) Peripheral Multiplexer Select bit 1 */\r
+#define GPIO_PMR1T_P28              (0x1u << 28) /**< \brief (GPIO_PMR1T) Peripheral Multiplexer Select bit 1 */\r
+#define GPIO_PMR1T_P29              (0x1u << 29) /**< \brief (GPIO_PMR1T) Peripheral Multiplexer Select bit 1 */\r
+#define GPIO_PMR1T_P30              (0x1u << 30) /**< \brief (GPIO_PMR1T) Peripheral Multiplexer Select bit 1 */\r
+#define GPIO_PMR1T_P31              (0x1u << 31) /**< \brief (GPIO_PMR1T) Peripheral Multiplexer Select bit 1 */\r
+/* -------- GPIO_PMR2 : (GPIO Offset: 0x030) Port Peripheral Mux Register 2 -------- */\r
+#define GPIO_PMR2_P0                (0x1u <<  0) /**< \brief (GPIO_PMR2) Peripheral Multiplexer Select bit 2 */\r
+#define GPIO_PMR2_P1                (0x1u <<  1) /**< \brief (GPIO_PMR2) Peripheral Multiplexer Select bit 2 */\r
+#define GPIO_PMR2_P2                (0x1u <<  2) /**< \brief (GPIO_PMR2) Peripheral Multiplexer Select bit 2 */\r
+#define GPIO_PMR2_P3                (0x1u <<  3) /**< \brief (GPIO_PMR2) Peripheral Multiplexer Select bit 2 */\r
+#define GPIO_PMR2_P4                (0x1u <<  4) /**< \brief (GPIO_PMR2) Peripheral Multiplexer Select bit 2 */\r
+#define GPIO_PMR2_P5                (0x1u <<  5) /**< \brief (GPIO_PMR2) Peripheral Multiplexer Select bit 2 */\r
+#define GPIO_PMR2_P6                (0x1u <<  6) /**< \brief (GPIO_PMR2) Peripheral Multiplexer Select bit 2 */\r
+#define GPIO_PMR2_P7                (0x1u <<  7) /**< \brief (GPIO_PMR2) Peripheral Multiplexer Select bit 2 */\r
+#define GPIO_PMR2_P8                (0x1u <<  8) /**< \brief (GPIO_PMR2) Peripheral Multiplexer Select bit 2 */\r
+#define GPIO_PMR2_P9                (0x1u <<  9) /**< \brief (GPIO_PMR2) Peripheral Multiplexer Select bit 2 */\r
+#define GPIO_PMR2_P10               (0x1u << 10) /**< \brief (GPIO_PMR2) Peripheral Multiplexer Select bit 2 */\r
+#define GPIO_PMR2_P11               (0x1u << 11) /**< \brief (GPIO_PMR2) Peripheral Multiplexer Select bit 2 */\r
+#define GPIO_PMR2_P12               (0x1u << 12) /**< \brief (GPIO_PMR2) Peripheral Multiplexer Select bit 2 */\r
+#define GPIO_PMR2_P13               (0x1u << 13) /**< \brief (GPIO_PMR2) Peripheral Multiplexer Select bit 2 */\r
+#define GPIO_PMR2_P14               (0x1u << 14) /**< \brief (GPIO_PMR2) Peripheral Multiplexer Select bit 2 */\r
+#define GPIO_PMR2_P15               (0x1u << 15) /**< \brief (GPIO_PMR2) Peripheral Multiplexer Select bit 2 */\r
+#define GPIO_PMR2_P16               (0x1u << 16) /**< \brief (GPIO_PMR2) Peripheral Multiplexer Select bit 2 */\r
+#define GPIO_PMR2_P17               (0x1u << 17) /**< \brief (GPIO_PMR2) Peripheral Multiplexer Select bit 2 */\r
+#define GPIO_PMR2_P18               (0x1u << 18) /**< \brief (GPIO_PMR2) Peripheral Multiplexer Select bit 2 */\r
+#define GPIO_PMR2_P19               (0x1u << 19) /**< \brief (GPIO_PMR2) Peripheral Multiplexer Select bit 2 */\r
+#define GPIO_PMR2_P20               (0x1u << 20) /**< \brief (GPIO_PMR2) Peripheral Multiplexer Select bit 2 */\r
+#define GPIO_PMR2_P21               (0x1u << 21) /**< \brief (GPIO_PMR2) Peripheral Multiplexer Select bit 2 */\r
+#define GPIO_PMR2_P22               (0x1u << 22) /**< \brief (GPIO_PMR2) Peripheral Multiplexer Select bit 2 */\r
+#define GPIO_PMR2_P23               (0x1u << 23) /**< \brief (GPIO_PMR2) Peripheral Multiplexer Select bit 2 */\r
+#define GPIO_PMR2_P24               (0x1u << 24) /**< \brief (GPIO_PMR2) Peripheral Multiplexer Select bit 2 */\r
+#define GPIO_PMR2_P25               (0x1u << 25) /**< \brief (GPIO_PMR2) Peripheral Multiplexer Select bit 2 */\r
+#define GPIO_PMR2_P26               (0x1u << 26) /**< \brief (GPIO_PMR2) Peripheral Multiplexer Select bit 2 */\r
+#define GPIO_PMR2_P27               (0x1u << 27) /**< \brief (GPIO_PMR2) Peripheral Multiplexer Select bit 2 */\r
+#define GPIO_PMR2_P28               (0x1u << 28) /**< \brief (GPIO_PMR2) Peripheral Multiplexer Select bit 2 */\r
+#define GPIO_PMR2_P29               (0x1u << 29) /**< \brief (GPIO_PMR2) Peripheral Multiplexer Select bit 2 */\r
+#define GPIO_PMR2_P30               (0x1u << 30) /**< \brief (GPIO_PMR2) Peripheral Multiplexer Select bit 2 */\r
+#define GPIO_PMR2_P31               (0x1u << 31) /**< \brief (GPIO_PMR2) Peripheral Multiplexer Select bit 2 */\r
+/* -------- GPIO_PMR2S : (GPIO Offset: 0x034) Port Peripheral Mux Register 2 - Set -------- */\r
+#define GPIO_PMR2S_P0               (0x1u <<  0) /**< \brief (GPIO_PMR2S) Peripheral Multiplexer Select bit 2 */\r
+#define GPIO_PMR2S_P1               (0x1u <<  1) /**< \brief (GPIO_PMR2S) Peripheral Multiplexer Select bit 2 */\r
+#define GPIO_PMR2S_P2               (0x1u <<  2) /**< \brief (GPIO_PMR2S) Peripheral Multiplexer Select bit 2 */\r
+#define GPIO_PMR2S_P3               (0x1u <<  3) /**< \brief (GPIO_PMR2S) Peripheral Multiplexer Select bit 2 */\r
+#define GPIO_PMR2S_P4               (0x1u <<  4) /**< \brief (GPIO_PMR2S) Peripheral Multiplexer Select bit 2 */\r
+#define GPIO_PMR2S_P5               (0x1u <<  5) /**< \brief (GPIO_PMR2S) Peripheral Multiplexer Select bit 2 */\r
+#define GPIO_PMR2S_P6               (0x1u <<  6) /**< \brief (GPIO_PMR2S) Peripheral Multiplexer Select bit 2 */\r
+#define GPIO_PMR2S_P7               (0x1u <<  7) /**< \brief (GPIO_PMR2S) Peripheral Multiplexer Select bit 2 */\r
+#define GPIO_PMR2S_P8               (0x1u <<  8) /**< \brief (GPIO_PMR2S) Peripheral Multiplexer Select bit 2 */\r
+#define GPIO_PMR2S_P9               (0x1u <<  9) /**< \brief (GPIO_PMR2S) Peripheral Multiplexer Select bit 2 */\r
+#define GPIO_PMR2S_P10              (0x1u << 10) /**< \brief (GPIO_PMR2S) Peripheral Multiplexer Select bit 2 */\r
+#define GPIO_PMR2S_P11              (0x1u << 11) /**< \brief (GPIO_PMR2S) Peripheral Multiplexer Select bit 2 */\r
+#define GPIO_PMR2S_P12              (0x1u << 12) /**< \brief (GPIO_PMR2S) Peripheral Multiplexer Select bit 2 */\r
+#define GPIO_PMR2S_P13              (0x1u << 13) /**< \brief (GPIO_PMR2S) Peripheral Multiplexer Select bit 2 */\r
+#define GPIO_PMR2S_P14              (0x1u << 14) /**< \brief (GPIO_PMR2S) Peripheral Multiplexer Select bit 2 */\r
+#define GPIO_PMR2S_P15              (0x1u << 15) /**< \brief (GPIO_PMR2S) Peripheral Multiplexer Select bit 2 */\r
+#define GPIO_PMR2S_P16              (0x1u << 16) /**< \brief (GPIO_PMR2S) Peripheral Multiplexer Select bit 2 */\r
+#define GPIO_PMR2S_P17              (0x1u << 17) /**< \brief (GPIO_PMR2S) Peripheral Multiplexer Select bit 2 */\r
+#define GPIO_PMR2S_P18              (0x1u << 18) /**< \brief (GPIO_PMR2S) Peripheral Multiplexer Select bit 2 */\r
+#define GPIO_PMR2S_P19              (0x1u << 19) /**< \brief (GPIO_PMR2S) Peripheral Multiplexer Select bit 2 */\r
+#define GPIO_PMR2S_P20              (0x1u << 20) /**< \brief (GPIO_PMR2S) Peripheral Multiplexer Select bit 2 */\r
+#define GPIO_PMR2S_P21              (0x1u << 21) /**< \brief (GPIO_PMR2S) Peripheral Multiplexer Select bit 2 */\r
+#define GPIO_PMR2S_P22              (0x1u << 22) /**< \brief (GPIO_PMR2S) Peripheral Multiplexer Select bit 2 */\r
+#define GPIO_PMR2S_P23              (0x1u << 23) /**< \brief (GPIO_PMR2S) Peripheral Multiplexer Select bit 2 */\r
+#define GPIO_PMR2S_P24              (0x1u << 24) /**< \brief (GPIO_PMR2S) Peripheral Multiplexer Select bit 2 */\r
+#define GPIO_PMR2S_P25              (0x1u << 25) /**< \brief (GPIO_PMR2S) Peripheral Multiplexer Select bit 2 */\r
+#define GPIO_PMR2S_P26              (0x1u << 26) /**< \brief (GPIO_PMR2S) Peripheral Multiplexer Select bit 2 */\r
+#define GPIO_PMR2S_P27              (0x1u << 27) /**< \brief (GPIO_PMR2S) Peripheral Multiplexer Select bit 2 */\r
+#define GPIO_PMR2S_P28              (0x1u << 28) /**< \brief (GPIO_PMR2S) Peripheral Multiplexer Select bit 2 */\r
+#define GPIO_PMR2S_P29              (0x1u << 29) /**< \brief (GPIO_PMR2S) Peripheral Multiplexer Select bit 2 */\r
+#define GPIO_PMR2S_P30              (0x1u << 30) /**< \brief (GPIO_PMR2S) Peripheral Multiplexer Select bit 2 */\r
+#define GPIO_PMR2S_P31              (0x1u << 31) /**< \brief (GPIO_PMR2S) Peripheral Multiplexer Select bit 2 */\r
+/* -------- GPIO_PMR2C : (GPIO Offset: 0x038) Port Peripheral Mux Register 2 - Clear -------- */\r
+#define GPIO_PMR2C_P0               (0x1u <<  0) /**< \brief (GPIO_PMR2C) Peripheral Multiplexer Select bit 2 */\r
+#define GPIO_PMR2C_P1               (0x1u <<  1) /**< \brief (GPIO_PMR2C) Peripheral Multiplexer Select bit 2 */\r
+#define GPIO_PMR2C_P2               (0x1u <<  2) /**< \brief (GPIO_PMR2C) Peripheral Multiplexer Select bit 2 */\r
+#define GPIO_PMR2C_P3               (0x1u <<  3) /**< \brief (GPIO_PMR2C) Peripheral Multiplexer Select bit 2 */\r
+#define GPIO_PMR2C_P4               (0x1u <<  4) /**< \brief (GPIO_PMR2C) Peripheral Multiplexer Select bit 2 */\r
+#define GPIO_PMR2C_P5               (0x1u <<  5) /**< \brief (GPIO_PMR2C) Peripheral Multiplexer Select bit 2 */\r
+#define GPIO_PMR2C_P6               (0x1u <<  6) /**< \brief (GPIO_PMR2C) Peripheral Multiplexer Select bit 2 */\r
+#define GPIO_PMR2C_P7               (0x1u <<  7) /**< \brief (GPIO_PMR2C) Peripheral Multiplexer Select bit 2 */\r
+#define GPIO_PMR2C_P8               (0x1u <<  8) /**< \brief (GPIO_PMR2C) Peripheral Multiplexer Select bit 2 */\r
+#define GPIO_PMR2C_P9               (0x1u <<  9) /**< \brief (GPIO_PMR2C) Peripheral Multiplexer Select bit 2 */\r
+#define GPIO_PMR2C_P10              (0x1u << 10) /**< \brief (GPIO_PMR2C) Peripheral Multiplexer Select bit 2 */\r
+#define GPIO_PMR2C_P11              (0x1u << 11) /**< \brief (GPIO_PMR2C) Peripheral Multiplexer Select bit 2 */\r
+#define GPIO_PMR2C_P12              (0x1u << 12) /**< \brief (GPIO_PMR2C) Peripheral Multiplexer Select bit 2 */\r
+#define GPIO_PMR2C_P13              (0x1u << 13) /**< \brief (GPIO_PMR2C) Peripheral Multiplexer Select bit 2 */\r
+#define GPIO_PMR2C_P14              (0x1u << 14) /**< \brief (GPIO_PMR2C) Peripheral Multiplexer Select bit 2 */\r
+#define GPIO_PMR2C_P15              (0x1u << 15) /**< \brief (GPIO_PMR2C) Peripheral Multiplexer Select bit 2 */\r
+#define GPIO_PMR2C_P16              (0x1u << 16) /**< \brief (GPIO_PMR2C) Peripheral Multiplexer Select bit 2 */\r
+#define GPIO_PMR2C_P17              (0x1u << 17) /**< \brief (GPIO_PMR2C) Peripheral Multiplexer Select bit 2 */\r
+#define GPIO_PMR2C_P18              (0x1u << 18) /**< \brief (GPIO_PMR2C) Peripheral Multiplexer Select bit 2 */\r
+#define GPIO_PMR2C_P19              (0x1u << 19) /**< \brief (GPIO_PMR2C) Peripheral Multiplexer Select bit 2 */\r
+#define GPIO_PMR2C_P20              (0x1u << 20) /**< \brief (GPIO_PMR2C) Peripheral Multiplexer Select bit 2 */\r
+#define GPIO_PMR2C_P21              (0x1u << 21) /**< \brief (GPIO_PMR2C) Peripheral Multiplexer Select bit 2 */\r
+#define GPIO_PMR2C_P22              (0x1u << 22) /**< \brief (GPIO_PMR2C) Peripheral Multiplexer Select bit 2 */\r
+#define GPIO_PMR2C_P23              (0x1u << 23) /**< \brief (GPIO_PMR2C) Peripheral Multiplexer Select bit 2 */\r
+#define GPIO_PMR2C_P24              (0x1u << 24) /**< \brief (GPIO_PMR2C) Peripheral Multiplexer Select bit 2 */\r
+#define GPIO_PMR2C_P25              (0x1u << 25) /**< \brief (GPIO_PMR2C) Peripheral Multiplexer Select bit 2 */\r
+#define GPIO_PMR2C_P26              (0x1u << 26) /**< \brief (GPIO_PMR2C) Peripheral Multiplexer Select bit 2 */\r
+#define GPIO_PMR2C_P27              (0x1u << 27) /**< \brief (GPIO_PMR2C) Peripheral Multiplexer Select bit 2 */\r
+#define GPIO_PMR2C_P28              (0x1u << 28) /**< \brief (GPIO_PMR2C) Peripheral Multiplexer Select bit 2 */\r
+#define GPIO_PMR2C_P29              (0x1u << 29) /**< \brief (GPIO_PMR2C) Peripheral Multiplexer Select bit 2 */\r
+#define GPIO_PMR2C_P30              (0x1u << 30) /**< \brief (GPIO_PMR2C) Peripheral Multiplexer Select bit 2 */\r
+#define GPIO_PMR2C_P31              (0x1u << 31) /**< \brief (GPIO_PMR2C) Peripheral Multiplexer Select bit 2 */\r
+/* -------- GPIO_PMR2T : (GPIO Offset: 0x03C) Port Peripheral Mux Register 2 - Toggle -------- */\r
+#define GPIO_PMR2T_P0               (0x1u <<  0) /**< \brief (GPIO_PMR2T) Peripheral Multiplexer Select bit 2 */\r
+#define GPIO_PMR2T_P1               (0x1u <<  1) /**< \brief (GPIO_PMR2T) Peripheral Multiplexer Select bit 2 */\r
+#define GPIO_PMR2T_P2               (0x1u <<  2) /**< \brief (GPIO_PMR2T) Peripheral Multiplexer Select bit 2 */\r
+#define GPIO_PMR2T_P3               (0x1u <<  3) /**< \brief (GPIO_PMR2T) Peripheral Multiplexer Select bit 2 */\r
+#define GPIO_PMR2T_P4               (0x1u <<  4) /**< \brief (GPIO_PMR2T) Peripheral Multiplexer Select bit 2 */\r
+#define GPIO_PMR2T_P5               (0x1u <<  5) /**< \brief (GPIO_PMR2T) Peripheral Multiplexer Select bit 2 */\r
+#define GPIO_PMR2T_P6               (0x1u <<  6) /**< \brief (GPIO_PMR2T) Peripheral Multiplexer Select bit 2 */\r
+#define GPIO_PMR2T_P7               (0x1u <<  7) /**< \brief (GPIO_PMR2T) Peripheral Multiplexer Select bit 2 */\r
+#define GPIO_PMR2T_P8               (0x1u <<  8) /**< \brief (GPIO_PMR2T) Peripheral Multiplexer Select bit 2 */\r
+#define GPIO_PMR2T_P9               (0x1u <<  9) /**< \brief (GPIO_PMR2T) Peripheral Multiplexer Select bit 2 */\r
+#define GPIO_PMR2T_P10              (0x1u << 10) /**< \brief (GPIO_PMR2T) Peripheral Multiplexer Select bit 2 */\r
+#define GPIO_PMR2T_P11              (0x1u << 11) /**< \brief (GPIO_PMR2T) Peripheral Multiplexer Select bit 2 */\r
+#define GPIO_PMR2T_P12              (0x1u << 12) /**< \brief (GPIO_PMR2T) Peripheral Multiplexer Select bit 2 */\r
+#define GPIO_PMR2T_P13              (0x1u << 13) /**< \brief (GPIO_PMR2T) Peripheral Multiplexer Select bit 2 */\r
+#define GPIO_PMR2T_P14              (0x1u << 14) /**< \brief (GPIO_PMR2T) Peripheral Multiplexer Select bit 2 */\r
+#define GPIO_PMR2T_P15              (0x1u << 15) /**< \brief (GPIO_PMR2T) Peripheral Multiplexer Select bit 2 */\r
+#define GPIO_PMR2T_P16              (0x1u << 16) /**< \brief (GPIO_PMR2T) Peripheral Multiplexer Select bit 2 */\r
+#define GPIO_PMR2T_P17              (0x1u << 17) /**< \brief (GPIO_PMR2T) Peripheral Multiplexer Select bit 2 */\r
+#define GPIO_PMR2T_P18              (0x1u << 18) /**< \brief (GPIO_PMR2T) Peripheral Multiplexer Select bit 2 */\r
+#define GPIO_PMR2T_P19              (0x1u << 19) /**< \brief (GPIO_PMR2T) Peripheral Multiplexer Select bit 2 */\r
+#define GPIO_PMR2T_P20              (0x1u << 20) /**< \brief (GPIO_PMR2T) Peripheral Multiplexer Select bit 2 */\r
+#define GPIO_PMR2T_P21              (0x1u << 21) /**< \brief (GPIO_PMR2T) Peripheral Multiplexer Select bit 2 */\r
+#define GPIO_PMR2T_P22              (0x1u << 22) /**< \brief (GPIO_PMR2T) Peripheral Multiplexer Select bit 2 */\r
+#define GPIO_PMR2T_P23              (0x1u << 23) /**< \brief (GPIO_PMR2T) Peripheral Multiplexer Select bit 2 */\r
+#define GPIO_PMR2T_P24              (0x1u << 24) /**< \brief (GPIO_PMR2T) Peripheral Multiplexer Select bit 2 */\r
+#define GPIO_PMR2T_P25              (0x1u << 25) /**< \brief (GPIO_PMR2T) Peripheral Multiplexer Select bit 2 */\r
+#define GPIO_PMR2T_P26              (0x1u << 26) /**< \brief (GPIO_PMR2T) Peripheral Multiplexer Select bit 2 */\r
+#define GPIO_PMR2T_P27              (0x1u << 27) /**< \brief (GPIO_PMR2T) Peripheral Multiplexer Select bit 2 */\r
+#define GPIO_PMR2T_P28              (0x1u << 28) /**< \brief (GPIO_PMR2T) Peripheral Multiplexer Select bit 2 */\r
+#define GPIO_PMR2T_P29              (0x1u << 29) /**< \brief (GPIO_PMR2T) Peripheral Multiplexer Select bit 2 */\r
+#define GPIO_PMR2T_P30              (0x1u << 30) /**< \brief (GPIO_PMR2T) Peripheral Multiplexer Select bit 2 */\r
+#define GPIO_PMR2T_P31              (0x1u << 31) /**< \brief (GPIO_PMR2T) Peripheral Multiplexer Select bit 2 */\r
+/* -------- GPIO_ODER : (GPIO Offset: 0x040) Port Output Driver Enable Register -------- */\r
+#define GPIO_ODER_P0                (0x1u <<  0) /**< \brief (GPIO_ODER) Output Driver Enable */\r
+#define GPIO_ODER_P1                (0x1u <<  1) /**< \brief (GPIO_ODER) Output Driver Enable */\r
+#define GPIO_ODER_P2                (0x1u <<  2) /**< \brief (GPIO_ODER) Output Driver Enable */\r
+#define GPIO_ODER_P3                (0x1u <<  3) /**< \brief (GPIO_ODER) Output Driver Enable */\r
+#define GPIO_ODER_P4                (0x1u <<  4) /**< \brief (GPIO_ODER) Output Driver Enable */\r
+#define GPIO_ODER_P5                (0x1u <<  5) /**< \brief (GPIO_ODER) Output Driver Enable */\r
+#define GPIO_ODER_P6                (0x1u <<  6) /**< \brief (GPIO_ODER) Output Driver Enable */\r
+#define GPIO_ODER_P7                (0x1u <<  7) /**< \brief (GPIO_ODER) Output Driver Enable */\r
+#define GPIO_ODER_P8                (0x1u <<  8) /**< \brief (GPIO_ODER) Output Driver Enable */\r
+#define GPIO_ODER_P9                (0x1u <<  9) /**< \brief (GPIO_ODER) Output Driver Enable */\r
+#define GPIO_ODER_P10               (0x1u << 10) /**< \brief (GPIO_ODER) Output Driver Enable */\r
+#define GPIO_ODER_P11               (0x1u << 11) /**< \brief (GPIO_ODER) Output Driver Enable */\r
+#define GPIO_ODER_P12               (0x1u << 12) /**< \brief (GPIO_ODER) Output Driver Enable */\r
+#define GPIO_ODER_P13               (0x1u << 13) /**< \brief (GPIO_ODER) Output Driver Enable */\r
+#define GPIO_ODER_P14               (0x1u << 14) /**< \brief (GPIO_ODER) Output Driver Enable */\r
+#define GPIO_ODER_P15               (0x1u << 15) /**< \brief (GPIO_ODER) Output Driver Enable */\r
+#define GPIO_ODER_P16               (0x1u << 16) /**< \brief (GPIO_ODER) Output Driver Enable */\r
+#define GPIO_ODER_P17               (0x1u << 17) /**< \brief (GPIO_ODER) Output Driver Enable */\r
+#define GPIO_ODER_P18               (0x1u << 18) /**< \brief (GPIO_ODER) Output Driver Enable */\r
+#define GPIO_ODER_P19               (0x1u << 19) /**< \brief (GPIO_ODER) Output Driver Enable */\r
+#define GPIO_ODER_P20               (0x1u << 20) /**< \brief (GPIO_ODER) Output Driver Enable */\r
+#define GPIO_ODER_P21               (0x1u << 21) /**< \brief (GPIO_ODER) Output Driver Enable */\r
+#define GPIO_ODER_P22               (0x1u << 22) /**< \brief (GPIO_ODER) Output Driver Enable */\r
+#define GPIO_ODER_P23               (0x1u << 23) /**< \brief (GPIO_ODER) Output Driver Enable */\r
+#define GPIO_ODER_P24               (0x1u << 24) /**< \brief (GPIO_ODER) Output Driver Enable */\r
+#define GPIO_ODER_P25               (0x1u << 25) /**< \brief (GPIO_ODER) Output Driver Enable */\r
+#define GPIO_ODER_P26               (0x1u << 26) /**< \brief (GPIO_ODER) Output Driver Enable */\r
+#define GPIO_ODER_P27               (0x1u << 27) /**< \brief (GPIO_ODER) Output Driver Enable */\r
+#define GPIO_ODER_P28               (0x1u << 28) /**< \brief (GPIO_ODER) Output Driver Enable */\r
+#define GPIO_ODER_P29               (0x1u << 29) /**< \brief (GPIO_ODER) Output Driver Enable */\r
+#define GPIO_ODER_P30               (0x1u << 30) /**< \brief (GPIO_ODER) Output Driver Enable */\r
+#define GPIO_ODER_P31               (0x1u << 31) /**< \brief (GPIO_ODER) Output Driver Enable */\r
+/* -------- GPIO_ODERS : (GPIO Offset: 0x044) Port Output Driver Enable Register - Set -------- */\r
+#define GPIO_ODERS_P0               (0x1u <<  0) /**< \brief (GPIO_ODERS) Output Driver Enable */\r
+#define GPIO_ODERS_P1               (0x1u <<  1) /**< \brief (GPIO_ODERS) Output Driver Enable */\r
+#define GPIO_ODERS_P2               (0x1u <<  2) /**< \brief (GPIO_ODERS) Output Driver Enable */\r
+#define GPIO_ODERS_P3               (0x1u <<  3) /**< \brief (GPIO_ODERS) Output Driver Enable */\r
+#define GPIO_ODERS_P4               (0x1u <<  4) /**< \brief (GPIO_ODERS) Output Driver Enable */\r
+#define GPIO_ODERS_P5               (0x1u <<  5) /**< \brief (GPIO_ODERS) Output Driver Enable */\r
+#define GPIO_ODERS_P6               (0x1u <<  6) /**< \brief (GPIO_ODERS) Output Driver Enable */\r
+#define GPIO_ODERS_P7               (0x1u <<  7) /**< \brief (GPIO_ODERS) Output Driver Enable */\r
+#define GPIO_ODERS_P8               (0x1u <<  8) /**< \brief (GPIO_ODERS) Output Driver Enable */\r
+#define GPIO_ODERS_P9               (0x1u <<  9) /**< \brief (GPIO_ODERS) Output Driver Enable */\r
+#define GPIO_ODERS_P10              (0x1u << 10) /**< \brief (GPIO_ODERS) Output Driver Enable */\r
+#define GPIO_ODERS_P11              (0x1u << 11) /**< \brief (GPIO_ODERS) Output Driver Enable */\r
+#define GPIO_ODERS_P12              (0x1u << 12) /**< \brief (GPIO_ODERS) Output Driver Enable */\r
+#define GPIO_ODERS_P13              (0x1u << 13) /**< \brief (GPIO_ODERS) Output Driver Enable */\r
+#define GPIO_ODERS_P14              (0x1u << 14) /**< \brief (GPIO_ODERS) Output Driver Enable */\r
+#define GPIO_ODERS_P15              (0x1u << 15) /**< \brief (GPIO_ODERS) Output Driver Enable */\r
+#define GPIO_ODERS_P16              (0x1u << 16) /**< \brief (GPIO_ODERS) Output Driver Enable */\r
+#define GPIO_ODERS_P17              (0x1u << 17) /**< \brief (GPIO_ODERS) Output Driver Enable */\r
+#define GPIO_ODERS_P18              (0x1u << 18) /**< \brief (GPIO_ODERS) Output Driver Enable */\r
+#define GPIO_ODERS_P19              (0x1u << 19) /**< \brief (GPIO_ODERS) Output Driver Enable */\r
+#define GPIO_ODERS_P20              (0x1u << 20) /**< \brief (GPIO_ODERS) Output Driver Enable */\r
+#define GPIO_ODERS_P21              (0x1u << 21) /**< \brief (GPIO_ODERS) Output Driver Enable */\r
+#define GPIO_ODERS_P22              (0x1u << 22) /**< \brief (GPIO_ODERS) Output Driver Enable */\r
+#define GPIO_ODERS_P23              (0x1u << 23) /**< \brief (GPIO_ODERS) Output Driver Enable */\r
+#define GPIO_ODERS_P24              (0x1u << 24) /**< \brief (GPIO_ODERS) Output Driver Enable */\r
+#define GPIO_ODERS_P25              (0x1u << 25) /**< \brief (GPIO_ODERS) Output Driver Enable */\r
+#define GPIO_ODERS_P26              (0x1u << 26) /**< \brief (GPIO_ODERS) Output Driver Enable */\r
+#define GPIO_ODERS_P27              (0x1u << 27) /**< \brief (GPIO_ODERS) Output Driver Enable */\r
+#define GPIO_ODERS_P28              (0x1u << 28) /**< \brief (GPIO_ODERS) Output Driver Enable */\r
+#define GPIO_ODERS_P29              (0x1u << 29) /**< \brief (GPIO_ODERS) Output Driver Enable */\r
+#define GPIO_ODERS_P30              (0x1u << 30) /**< \brief (GPIO_ODERS) Output Driver Enable */\r
+#define GPIO_ODERS_P31              (0x1u << 31) /**< \brief (GPIO_ODERS) Output Driver Enable */\r
+/* -------- GPIO_ODERC : (GPIO Offset: 0x048) Port Output Driver Enable Register - Clear -------- */\r
+#define GPIO_ODERC_P0               (0x1u <<  0) /**< \brief (GPIO_ODERC) Output Driver Enable */\r
+#define GPIO_ODERC_P1               (0x1u <<  1) /**< \brief (GPIO_ODERC) Output Driver Enable */\r
+#define GPIO_ODERC_P2               (0x1u <<  2) /**< \brief (GPIO_ODERC) Output Driver Enable */\r
+#define GPIO_ODERC_P3               (0x1u <<  3) /**< \brief (GPIO_ODERC) Output Driver Enable */\r
+#define GPIO_ODERC_P4               (0x1u <<  4) /**< \brief (GPIO_ODERC) Output Driver Enable */\r
+#define GPIO_ODERC_P5               (0x1u <<  5) /**< \brief (GPIO_ODERC) Output Driver Enable */\r
+#define GPIO_ODERC_P6               (0x1u <<  6) /**< \brief (GPIO_ODERC) Output Driver Enable */\r
+#define GPIO_ODERC_P7               (0x1u <<  7) /**< \brief (GPIO_ODERC) Output Driver Enable */\r
+#define GPIO_ODERC_P8               (0x1u <<  8) /**< \brief (GPIO_ODERC) Output Driver Enable */\r
+#define GPIO_ODERC_P9               (0x1u <<  9) /**< \brief (GPIO_ODERC) Output Driver Enable */\r
+#define GPIO_ODERC_P10              (0x1u << 10) /**< \brief (GPIO_ODERC) Output Driver Enable */\r
+#define GPIO_ODERC_P11              (0x1u << 11) /**< \brief (GPIO_ODERC) Output Driver Enable */\r
+#define GPIO_ODERC_P12              (0x1u << 12) /**< \brief (GPIO_ODERC) Output Driver Enable */\r
+#define GPIO_ODERC_P13              (0x1u << 13) /**< \brief (GPIO_ODERC) Output Driver Enable */\r
+#define GPIO_ODERC_P14              (0x1u << 14) /**< \brief (GPIO_ODERC) Output Driver Enable */\r
+#define GPIO_ODERC_P15              (0x1u << 15) /**< \brief (GPIO_ODERC) Output Driver Enable */\r
+#define GPIO_ODERC_P16              (0x1u << 16) /**< \brief (GPIO_ODERC) Output Driver Enable */\r
+#define GPIO_ODERC_P17              (0x1u << 17) /**< \brief (GPIO_ODERC) Output Driver Enable */\r
+#define GPIO_ODERC_P18              (0x1u << 18) /**< \brief (GPIO_ODERC) Output Driver Enable */\r
+#define GPIO_ODERC_P19              (0x1u << 19) /**< \brief (GPIO_ODERC) Output Driver Enable */\r
+#define GPIO_ODERC_P20              (0x1u << 20) /**< \brief (GPIO_ODERC) Output Driver Enable */\r
+#define GPIO_ODERC_P21              (0x1u << 21) /**< \brief (GPIO_ODERC) Output Driver Enable */\r
+#define GPIO_ODERC_P22              (0x1u << 22) /**< \brief (GPIO_ODERC) Output Driver Enable */\r
+#define GPIO_ODERC_P23              (0x1u << 23) /**< \brief (GPIO_ODERC) Output Driver Enable */\r
+#define GPIO_ODERC_P24              (0x1u << 24) /**< \brief (GPIO_ODERC) Output Driver Enable */\r
+#define GPIO_ODERC_P25              (0x1u << 25) /**< \brief (GPIO_ODERC) Output Driver Enable */\r
+#define GPIO_ODERC_P26              (0x1u << 26) /**< \brief (GPIO_ODERC) Output Driver Enable */\r
+#define GPIO_ODERC_P27              (0x1u << 27) /**< \brief (GPIO_ODERC) Output Driver Enable */\r
+#define GPIO_ODERC_P28              (0x1u << 28) /**< \brief (GPIO_ODERC) Output Driver Enable */\r
+#define GPIO_ODERC_P29              (0x1u << 29) /**< \brief (GPIO_ODERC) Output Driver Enable */\r
+#define GPIO_ODERC_P30              (0x1u << 30) /**< \brief (GPIO_ODERC) Output Driver Enable */\r
+#define GPIO_ODERC_P31              (0x1u << 31) /**< \brief (GPIO_ODERC) Output Driver Enable */\r
+/* -------- GPIO_ODERT : (GPIO Offset: 0x04C) Port Output Driver Enable Register - Toggle -------- */\r
+#define GPIO_ODERT_P0               (0x1u <<  0) /**< \brief (GPIO_ODERT) Output Driver Enable */\r
+#define GPIO_ODERT_P1               (0x1u <<  1) /**< \brief (GPIO_ODERT) Output Driver Enable */\r
+#define GPIO_ODERT_P2               (0x1u <<  2) /**< \brief (GPIO_ODERT) Output Driver Enable */\r
+#define GPIO_ODERT_P3               (0x1u <<  3) /**< \brief (GPIO_ODERT) Output Driver Enable */\r
+#define GPIO_ODERT_P4               (0x1u <<  4) /**< \brief (GPIO_ODERT) Output Driver Enable */\r
+#define GPIO_ODERT_P5               (0x1u <<  5) /**< \brief (GPIO_ODERT) Output Driver Enable */\r
+#define GPIO_ODERT_P6               (0x1u <<  6) /**< \brief (GPIO_ODERT) Output Driver Enable */\r
+#define GPIO_ODERT_P7               (0x1u <<  7) /**< \brief (GPIO_ODERT) Output Driver Enable */\r
+#define GPIO_ODERT_P8               (0x1u <<  8) /**< \brief (GPIO_ODERT) Output Driver Enable */\r
+#define GPIO_ODERT_P9               (0x1u <<  9) /**< \brief (GPIO_ODERT) Output Driver Enable */\r
+#define GPIO_ODERT_P10              (0x1u << 10) /**< \brief (GPIO_ODERT) Output Driver Enable */\r
+#define GPIO_ODERT_P11              (0x1u << 11) /**< \brief (GPIO_ODERT) Output Driver Enable */\r
+#define GPIO_ODERT_P12              (0x1u << 12) /**< \brief (GPIO_ODERT) Output Driver Enable */\r
+#define GPIO_ODERT_P13              (0x1u << 13) /**< \brief (GPIO_ODERT) Output Driver Enable */\r
+#define GPIO_ODERT_P14              (0x1u << 14) /**< \brief (GPIO_ODERT) Output Driver Enable */\r
+#define GPIO_ODERT_P15              (0x1u << 15) /**< \brief (GPIO_ODERT) Output Driver Enable */\r
+#define GPIO_ODERT_P16              (0x1u << 16) /**< \brief (GPIO_ODERT) Output Driver Enable */\r
+#define GPIO_ODERT_P17              (0x1u << 17) /**< \brief (GPIO_ODERT) Output Driver Enable */\r
+#define GPIO_ODERT_P18              (0x1u << 18) /**< \brief (GPIO_ODERT) Output Driver Enable */\r
+#define GPIO_ODERT_P19              (0x1u << 19) /**< \brief (GPIO_ODERT) Output Driver Enable */\r
+#define GPIO_ODERT_P20              (0x1u << 20) /**< \brief (GPIO_ODERT) Output Driver Enable */\r
+#define GPIO_ODERT_P21              (0x1u << 21) /**< \brief (GPIO_ODERT) Output Driver Enable */\r
+#define GPIO_ODERT_P22              (0x1u << 22) /**< \brief (GPIO_ODERT) Output Driver Enable */\r
+#define GPIO_ODERT_P23              (0x1u << 23) /**< \brief (GPIO_ODERT) Output Driver Enable */\r
+#define GPIO_ODERT_P24              (0x1u << 24) /**< \brief (GPIO_ODERT) Output Driver Enable */\r
+#define GPIO_ODERT_P25              (0x1u << 25) /**< \brief (GPIO_ODERT) Output Driver Enable */\r
+#define GPIO_ODERT_P26              (0x1u << 26) /**< \brief (GPIO_ODERT) Output Driver Enable */\r
+#define GPIO_ODERT_P27              (0x1u << 27) /**< \brief (GPIO_ODERT) Output Driver Enable */\r
+#define GPIO_ODERT_P28              (0x1u << 28) /**< \brief (GPIO_ODERT) Output Driver Enable */\r
+#define GPIO_ODERT_P29              (0x1u << 29) /**< \brief (GPIO_ODERT) Output Driver Enable */\r
+#define GPIO_ODERT_P30              (0x1u << 30) /**< \brief (GPIO_ODERT) Output Driver Enable */\r
+#define GPIO_ODERT_P31              (0x1u << 31) /**< \brief (GPIO_ODERT) Output Driver Enable */\r
+/* -------- GPIO_OVR : (GPIO Offset: 0x050) Port Output Value Register -------- */\r
+#define GPIO_OVR_P0                 (0x1u <<  0) /**< \brief (GPIO_OVR) Output Value */\r
+#define GPIO_OVR_P1                 (0x1u <<  1) /**< \brief (GPIO_OVR) Output Value */\r
+#define GPIO_OVR_P2                 (0x1u <<  2) /**< \brief (GPIO_OVR) Output Value */\r
+#define GPIO_OVR_P3                 (0x1u <<  3) /**< \brief (GPIO_OVR) Output Value */\r
+#define GPIO_OVR_P4                 (0x1u <<  4) /**< \brief (GPIO_OVR) Output Value */\r
+#define GPIO_OVR_P5                 (0x1u <<  5) /**< \brief (GPIO_OVR) Output Value */\r
+#define GPIO_OVR_P6                 (0x1u <<  6) /**< \brief (GPIO_OVR) Output Value */\r
+#define GPIO_OVR_P7                 (0x1u <<  7) /**< \brief (GPIO_OVR) Output Value */\r
+#define GPIO_OVR_P8                 (0x1u <<  8) /**< \brief (GPIO_OVR) Output Value */\r
+#define GPIO_OVR_P9                 (0x1u <<  9) /**< \brief (GPIO_OVR) Output Value */\r
+#define GPIO_OVR_P10                (0x1u << 10) /**< \brief (GPIO_OVR) Output Value */\r
+#define GPIO_OVR_P11                (0x1u << 11) /**< \brief (GPIO_OVR) Output Value */\r
+#define GPIO_OVR_P12                (0x1u << 12) /**< \brief (GPIO_OVR) Output Value */\r
+#define GPIO_OVR_P13                (0x1u << 13) /**< \brief (GPIO_OVR) Output Value */\r
+#define GPIO_OVR_P14                (0x1u << 14) /**< \brief (GPIO_OVR) Output Value */\r
+#define GPIO_OVR_P15                (0x1u << 15) /**< \brief (GPIO_OVR) Output Value */\r
+#define GPIO_OVR_P16                (0x1u << 16) /**< \brief (GPIO_OVR) Output Value */\r
+#define GPIO_OVR_P17                (0x1u << 17) /**< \brief (GPIO_OVR) Output Value */\r
+#define GPIO_OVR_P18                (0x1u << 18) /**< \brief (GPIO_OVR) Output Value */\r
+#define GPIO_OVR_P19                (0x1u << 19) /**< \brief (GPIO_OVR) Output Value */\r
+#define GPIO_OVR_P20                (0x1u << 20) /**< \brief (GPIO_OVR) Output Value */\r
+#define GPIO_OVR_P21                (0x1u << 21) /**< \brief (GPIO_OVR) Output Value */\r
+#define GPIO_OVR_P22                (0x1u << 22) /**< \brief (GPIO_OVR) Output Value */\r
+#define GPIO_OVR_P23                (0x1u << 23) /**< \brief (GPIO_OVR) Output Value */\r
+#define GPIO_OVR_P24                (0x1u << 24) /**< \brief (GPIO_OVR) Output Value */\r
+#define GPIO_OVR_P25                (0x1u << 25) /**< \brief (GPIO_OVR) Output Value */\r
+#define GPIO_OVR_P26                (0x1u << 26) /**< \brief (GPIO_OVR) Output Value */\r
+#define GPIO_OVR_P27                (0x1u << 27) /**< \brief (GPIO_OVR) Output Value */\r
+#define GPIO_OVR_P28                (0x1u << 28) /**< \brief (GPIO_OVR) Output Value */\r
+#define GPIO_OVR_P29                (0x1u << 29) /**< \brief (GPIO_OVR) Output Value */\r
+#define GPIO_OVR_P30                (0x1u << 30) /**< \brief (GPIO_OVR) Output Value */\r
+#define GPIO_OVR_P31                (0x1u << 31) /**< \brief (GPIO_OVR) Output Value */\r
+/* -------- GPIO_OVRS : (GPIO Offset: 0x054) Port Output Value Register - Set -------- */\r
+#define GPIO_OVRS_P0                (0x1u <<  0) /**< \brief (GPIO_OVRS) Output Value */\r
+#define GPIO_OVRS_P1                (0x1u <<  1) /**< \brief (GPIO_OVRS) Output Value */\r
+#define GPIO_OVRS_P2                (0x1u <<  2) /**< \brief (GPIO_OVRS) Output Value */\r
+#define GPIO_OVRS_P3                (0x1u <<  3) /**< \brief (GPIO_OVRS) Output Value */\r
+#define GPIO_OVRS_P4                (0x1u <<  4) /**< \brief (GPIO_OVRS) Output Value */\r
+#define GPIO_OVRS_P5                (0x1u <<  5) /**< \brief (GPIO_OVRS) Output Value */\r
+#define GPIO_OVRS_P6                (0x1u <<  6) /**< \brief (GPIO_OVRS) Output Value */\r
+#define GPIO_OVRS_P7                (0x1u <<  7) /**< \brief (GPIO_OVRS) Output Value */\r
+#define GPIO_OVRS_P8                (0x1u <<  8) /**< \brief (GPIO_OVRS) Output Value */\r
+#define GPIO_OVRS_P9                (0x1u <<  9) /**< \brief (GPIO_OVRS) Output Value */\r
+#define GPIO_OVRS_P10               (0x1u << 10) /**< \brief (GPIO_OVRS) Output Value */\r
+#define GPIO_OVRS_P11               (0x1u << 11) /**< \brief (GPIO_OVRS) Output Value */\r
+#define GPIO_OVRS_P12               (0x1u << 12) /**< \brief (GPIO_OVRS) Output Value */\r
+#define GPIO_OVRS_P13               (0x1u << 13) /**< \brief (GPIO_OVRS) Output Value */\r
+#define GPIO_OVRS_P14               (0x1u << 14) /**< \brief (GPIO_OVRS) Output Value */\r
+#define GPIO_OVRS_P15               (0x1u << 15) /**< \brief (GPIO_OVRS) Output Value */\r
+#define GPIO_OVRS_P16               (0x1u << 16) /**< \brief (GPIO_OVRS) Output Value */\r
+#define GPIO_OVRS_P17               (0x1u << 17) /**< \brief (GPIO_OVRS) Output Value */\r
+#define GPIO_OVRS_P18               (0x1u << 18) /**< \brief (GPIO_OVRS) Output Value */\r
+#define GPIO_OVRS_P19               (0x1u << 19) /**< \brief (GPIO_OVRS) Output Value */\r
+#define GPIO_OVRS_P20               (0x1u << 20) /**< \brief (GPIO_OVRS) Output Value */\r
+#define GPIO_OVRS_P21               (0x1u << 21) /**< \brief (GPIO_OVRS) Output Value */\r
+#define GPIO_OVRS_P22               (0x1u << 22) /**< \brief (GPIO_OVRS) Output Value */\r
+#define GPIO_OVRS_P23               (0x1u << 23) /**< \brief (GPIO_OVRS) Output Value */\r
+#define GPIO_OVRS_P24               (0x1u << 24) /**< \brief (GPIO_OVRS) Output Value */\r
+#define GPIO_OVRS_P25               (0x1u << 25) /**< \brief (GPIO_OVRS) Output Value */\r
+#define GPIO_OVRS_P26               (0x1u << 26) /**< \brief (GPIO_OVRS) Output Value */\r
+#define GPIO_OVRS_P27               (0x1u << 27) /**< \brief (GPIO_OVRS) Output Value */\r
+#define GPIO_OVRS_P28               (0x1u << 28) /**< \brief (GPIO_OVRS) Output Value */\r
+#define GPIO_OVRS_P29               (0x1u << 29) /**< \brief (GPIO_OVRS) Output Value */\r
+#define GPIO_OVRS_P30               (0x1u << 30) /**< \brief (GPIO_OVRS) Output Value */\r
+#define GPIO_OVRS_P31               (0x1u << 31) /**< \brief (GPIO_OVRS) Output Value */\r
+/* -------- GPIO_OVRC : (GPIO Offset: 0x058) Port Output Value Register - Clear -------- */\r
+#define GPIO_OVRC_P0                (0x1u <<  0) /**< \brief (GPIO_OVRC) Output Value */\r
+#define GPIO_OVRC_P1                (0x1u <<  1) /**< \brief (GPIO_OVRC) Output Value */\r
+#define GPIO_OVRC_P2                (0x1u <<  2) /**< \brief (GPIO_OVRC) Output Value */\r
+#define GPIO_OVRC_P3                (0x1u <<  3) /**< \brief (GPIO_OVRC) Output Value */\r
+#define GPIO_OVRC_P4                (0x1u <<  4) /**< \brief (GPIO_OVRC) Output Value */\r
+#define GPIO_OVRC_P5                (0x1u <<  5) /**< \brief (GPIO_OVRC) Output Value */\r
+#define GPIO_OVRC_P6                (0x1u <<  6) /**< \brief (GPIO_OVRC) Output Value */\r
+#define GPIO_OVRC_P7                (0x1u <<  7) /**< \brief (GPIO_OVRC) Output Value */\r
+#define GPIO_OVRC_P8                (0x1u <<  8) /**< \brief (GPIO_OVRC) Output Value */\r
+#define GPIO_OVRC_P9                (0x1u <<  9) /**< \brief (GPIO_OVRC) Output Value */\r
+#define GPIO_OVRC_P10               (0x1u << 10) /**< \brief (GPIO_OVRC) Output Value */\r
+#define GPIO_OVRC_P11               (0x1u << 11) /**< \brief (GPIO_OVRC) Output Value */\r
+#define GPIO_OVRC_P12               (0x1u << 12) /**< \brief (GPIO_OVRC) Output Value */\r
+#define GPIO_OVRC_P13               (0x1u << 13) /**< \brief (GPIO_OVRC) Output Value */\r
+#define GPIO_OVRC_P14               (0x1u << 14) /**< \brief (GPIO_OVRC) Output Value */\r
+#define GPIO_OVRC_P15               (0x1u << 15) /**< \brief (GPIO_OVRC) Output Value */\r
+#define GPIO_OVRC_P16               (0x1u << 16) /**< \brief (GPIO_OVRC) Output Value */\r
+#define GPIO_OVRC_P17               (0x1u << 17) /**< \brief (GPIO_OVRC) Output Value */\r
+#define GPIO_OVRC_P18               (0x1u << 18) /**< \brief (GPIO_OVRC) Output Value */\r
+#define GPIO_OVRC_P19               (0x1u << 19) /**< \brief (GPIO_OVRC) Output Value */\r
+#define GPIO_OVRC_P20               (0x1u << 20) /**< \brief (GPIO_OVRC) Output Value */\r
+#define GPIO_OVRC_P21               (0x1u << 21) /**< \brief (GPIO_OVRC) Output Value */\r
+#define GPIO_OVRC_P22               (0x1u << 22) /**< \brief (GPIO_OVRC) Output Value */\r
+#define GPIO_OVRC_P23               (0x1u << 23) /**< \brief (GPIO_OVRC) Output Value */\r
+#define GPIO_OVRC_P24               (0x1u << 24) /**< \brief (GPIO_OVRC) Output Value */\r
+#define GPIO_OVRC_P25               (0x1u << 25) /**< \brief (GPIO_OVRC) Output Value */\r
+#define GPIO_OVRC_P26               (0x1u << 26) /**< \brief (GPIO_OVRC) Output Value */\r
+#define GPIO_OVRC_P27               (0x1u << 27) /**< \brief (GPIO_OVRC) Output Value */\r
+#define GPIO_OVRC_P28               (0x1u << 28) /**< \brief (GPIO_OVRC) Output Value */\r
+#define GPIO_OVRC_P29               (0x1u << 29) /**< \brief (GPIO_OVRC) Output Value */\r
+#define GPIO_OVRC_P30               (0x1u << 30) /**< \brief (GPIO_OVRC) Output Value */\r
+#define GPIO_OVRC_P31               (0x1u << 31) /**< \brief (GPIO_OVRC) Output Value */\r
+/* -------- GPIO_OVRT : (GPIO Offset: 0x05C) Port Output Value Register - Toggle -------- */\r
+#define GPIO_OVRT_P0                (0x1u <<  0) /**< \brief (GPIO_OVRT) Output Value */\r
+#define GPIO_OVRT_P1                (0x1u <<  1) /**< \brief (GPIO_OVRT) Output Value */\r
+#define GPIO_OVRT_P2                (0x1u <<  2) /**< \brief (GPIO_OVRT) Output Value */\r
+#define GPIO_OVRT_P3                (0x1u <<  3) /**< \brief (GPIO_OVRT) Output Value */\r
+#define GPIO_OVRT_P4                (0x1u <<  4) /**< \brief (GPIO_OVRT) Output Value */\r
+#define GPIO_OVRT_P5                (0x1u <<  5) /**< \brief (GPIO_OVRT) Output Value */\r
+#define GPIO_OVRT_P6                (0x1u <<  6) /**< \brief (GPIO_OVRT) Output Value */\r
+#define GPIO_OVRT_P7                (0x1u <<  7) /**< \brief (GPIO_OVRT) Output Value */\r
+#define GPIO_OVRT_P8                (0x1u <<  8) /**< \brief (GPIO_OVRT) Output Value */\r
+#define GPIO_OVRT_P9                (0x1u <<  9) /**< \brief (GPIO_OVRT) Output Value */\r
+#define GPIO_OVRT_P10               (0x1u << 10) /**< \brief (GPIO_OVRT) Output Value */\r
+#define GPIO_OVRT_P11               (0x1u << 11) /**< \brief (GPIO_OVRT) Output Value */\r
+#define GPIO_OVRT_P12               (0x1u << 12) /**< \brief (GPIO_OVRT) Output Value */\r
+#define GPIO_OVRT_P13               (0x1u << 13) /**< \brief (GPIO_OVRT) Output Value */\r
+#define GPIO_OVRT_P14               (0x1u << 14) /**< \brief (GPIO_OVRT) Output Value */\r
+#define GPIO_OVRT_P15               (0x1u << 15) /**< \brief (GPIO_OVRT) Output Value */\r
+#define GPIO_OVRT_P16               (0x1u << 16) /**< \brief (GPIO_OVRT) Output Value */\r
+#define GPIO_OVRT_P17               (0x1u << 17) /**< \brief (GPIO_OVRT) Output Value */\r
+#define GPIO_OVRT_P18               (0x1u << 18) /**< \brief (GPIO_OVRT) Output Value */\r
+#define GPIO_OVRT_P19               (0x1u << 19) /**< \brief (GPIO_OVRT) Output Value */\r
+#define GPIO_OVRT_P20               (0x1u << 20) /**< \brief (GPIO_OVRT) Output Value */\r
+#define GPIO_OVRT_P21               (0x1u << 21) /**< \brief (GPIO_OVRT) Output Value */\r
+#define GPIO_OVRT_P22               (0x1u << 22) /**< \brief (GPIO_OVRT) Output Value */\r
+#define GPIO_OVRT_P23               (0x1u << 23) /**< \brief (GPIO_OVRT) Output Value */\r
+#define GPIO_OVRT_P24               (0x1u << 24) /**< \brief (GPIO_OVRT) Output Value */\r
+#define GPIO_OVRT_P25               (0x1u << 25) /**< \brief (GPIO_OVRT) Output Value */\r
+#define GPIO_OVRT_P26               (0x1u << 26) /**< \brief (GPIO_OVRT) Output Value */\r
+#define GPIO_OVRT_P27               (0x1u << 27) /**< \brief (GPIO_OVRT) Output Value */\r
+#define GPIO_OVRT_P28               (0x1u << 28) /**< \brief (GPIO_OVRT) Output Value */\r
+#define GPIO_OVRT_P29               (0x1u << 29) /**< \brief (GPIO_OVRT) Output Value */\r
+#define GPIO_OVRT_P30               (0x1u << 30) /**< \brief (GPIO_OVRT) Output Value */\r
+#define GPIO_OVRT_P31               (0x1u << 31) /**< \brief (GPIO_OVRT) Output Value */\r
+/* -------- GPIO_PVR : (GPIO Offset: 0x060) Port Pin Value Register -------- */\r
+#define GPIO_PVR_P0                 (0x1u <<  0) /**< \brief (GPIO_PVR) Pin Value */\r
+#define GPIO_PVR_P1                 (0x1u <<  1) /**< \brief (GPIO_PVR) Pin Value */\r
+#define GPIO_PVR_P2                 (0x1u <<  2) /**< \brief (GPIO_PVR) Pin Value */\r
+#define GPIO_PVR_P3                 (0x1u <<  3) /**< \brief (GPIO_PVR) Pin Value */\r
+#define GPIO_PVR_P4                 (0x1u <<  4) /**< \brief (GPIO_PVR) Pin Value */\r
+#define GPIO_PVR_P5                 (0x1u <<  5) /**< \brief (GPIO_PVR) Pin Value */\r
+#define GPIO_PVR_P6                 (0x1u <<  6) /**< \brief (GPIO_PVR) Pin Value */\r
+#define GPIO_PVR_P7                 (0x1u <<  7) /**< \brief (GPIO_PVR) Pin Value */\r
+#define GPIO_PVR_P8                 (0x1u <<  8) /**< \brief (GPIO_PVR) Pin Value */\r
+#define GPIO_PVR_P9                 (0x1u <<  9) /**< \brief (GPIO_PVR) Pin Value */\r
+#define GPIO_PVR_P10                (0x1u << 10) /**< \brief (GPIO_PVR) Pin Value */\r
+#define GPIO_PVR_P11                (0x1u << 11) /**< \brief (GPIO_PVR) Pin Value */\r
+#define GPIO_PVR_P12                (0x1u << 12) /**< \brief (GPIO_PVR) Pin Value */\r
+#define GPIO_PVR_P13                (0x1u << 13) /**< \brief (GPIO_PVR) Pin Value */\r
+#define GPIO_PVR_P14                (0x1u << 14) /**< \brief (GPIO_PVR) Pin Value */\r
+#define GPIO_PVR_P15                (0x1u << 15) /**< \brief (GPIO_PVR) Pin Value */\r
+#define GPIO_PVR_P16                (0x1u << 16) /**< \brief (GPIO_PVR) Pin Value */\r
+#define GPIO_PVR_P17                (0x1u << 17) /**< \brief (GPIO_PVR) Pin Value */\r
+#define GPIO_PVR_P18                (0x1u << 18) /**< \brief (GPIO_PVR) Pin Value */\r
+#define GPIO_PVR_P19                (0x1u << 19) /**< \brief (GPIO_PVR) Pin Value */\r
+#define GPIO_PVR_P20                (0x1u << 20) /**< \brief (GPIO_PVR) Pin Value */\r
+#define GPIO_PVR_P21                (0x1u << 21) /**< \brief (GPIO_PVR) Pin Value */\r
+#define GPIO_PVR_P22                (0x1u << 22) /**< \brief (GPIO_PVR) Pin Value */\r
+#define GPIO_PVR_P23                (0x1u << 23) /**< \brief (GPIO_PVR) Pin Value */\r
+#define GPIO_PVR_P24                (0x1u << 24) /**< \brief (GPIO_PVR) Pin Value */\r
+#define GPIO_PVR_P25                (0x1u << 25) /**< \brief (GPIO_PVR) Pin Value */\r
+#define GPIO_PVR_P26                (0x1u << 26) /**< \brief (GPIO_PVR) Pin Value */\r
+#define GPIO_PVR_P27                (0x1u << 27) /**< \brief (GPIO_PVR) Pin Value */\r
+#define GPIO_PVR_P28                (0x1u << 28) /**< \brief (GPIO_PVR) Pin Value */\r
+#define GPIO_PVR_P29                (0x1u << 29) /**< \brief (GPIO_PVR) Pin Value */\r
+#define GPIO_PVR_P30                (0x1u << 30) /**< \brief (GPIO_PVR) Pin Value */\r
+#define GPIO_PVR_P31                (0x1u << 31) /**< \brief (GPIO_PVR) Pin Value */\r
+/* -------- GPIO_PUER : (GPIO Offset: 0x070) Port Pull-up Enable Register -------- */\r
+#define GPIO_PUER_P0                (0x1u <<  0) /**< \brief (GPIO_PUER) Pull-up Enable */\r
+#define GPIO_PUER_P1                (0x1u <<  1) /**< \brief (GPIO_PUER) Pull-up Enable */\r
+#define GPIO_PUER_P2                (0x1u <<  2) /**< \brief (GPIO_PUER) Pull-up Enable */\r
+#define GPIO_PUER_P3                (0x1u <<  3) /**< \brief (GPIO_PUER) Pull-up Enable */\r
+#define GPIO_PUER_P4                (0x1u <<  4) /**< \brief (GPIO_PUER) Pull-up Enable */\r
+#define GPIO_PUER_P5                (0x1u <<  5) /**< \brief (GPIO_PUER) Pull-up Enable */\r
+#define GPIO_PUER_P6                (0x1u <<  6) /**< \brief (GPIO_PUER) Pull-up Enable */\r
+#define GPIO_PUER_P7                (0x1u <<  7) /**< \brief (GPIO_PUER) Pull-up Enable */\r
+#define GPIO_PUER_P8                (0x1u <<  8) /**< \brief (GPIO_PUER) Pull-up Enable */\r
+#define GPIO_PUER_P9                (0x1u <<  9) /**< \brief (GPIO_PUER) Pull-up Enable */\r
+#define GPIO_PUER_P10               (0x1u << 10) /**< \brief (GPIO_PUER) Pull-up Enable */\r
+#define GPIO_PUER_P11               (0x1u << 11) /**< \brief (GPIO_PUER) Pull-up Enable */\r
+#define GPIO_PUER_P12               (0x1u << 12) /**< \brief (GPIO_PUER) Pull-up Enable */\r
+#define GPIO_PUER_P13               (0x1u << 13) /**< \brief (GPIO_PUER) Pull-up Enable */\r
+#define GPIO_PUER_P14               (0x1u << 14) /**< \brief (GPIO_PUER) Pull-up Enable */\r
+#define GPIO_PUER_P15               (0x1u << 15) /**< \brief (GPIO_PUER) Pull-up Enable */\r
+#define GPIO_PUER_P16               (0x1u << 16) /**< \brief (GPIO_PUER) Pull-up Enable */\r
+#define GPIO_PUER_P17               (0x1u << 17) /**< \brief (GPIO_PUER) Pull-up Enable */\r
+#define GPIO_PUER_P18               (0x1u << 18) /**< \brief (GPIO_PUER) Pull-up Enable */\r
+#define GPIO_PUER_P19               (0x1u << 19) /**< \brief (GPIO_PUER) Pull-up Enable */\r
+#define GPIO_PUER_P20               (0x1u << 20) /**< \brief (GPIO_PUER) Pull-up Enable */\r
+#define GPIO_PUER_P21               (0x1u << 21) /**< \brief (GPIO_PUER) Pull-up Enable */\r
+#define GPIO_PUER_P22               (0x1u << 22) /**< \brief (GPIO_PUER) Pull-up Enable */\r
+#define GPIO_PUER_P23               (0x1u << 23) /**< \brief (GPIO_PUER) Pull-up Enable */\r
+#define GPIO_PUER_P24               (0x1u << 24) /**< \brief (GPIO_PUER) Pull-up Enable */\r
+#define GPIO_PUER_P25               (0x1u << 25) /**< \brief (GPIO_PUER) Pull-up Enable */\r
+#define GPIO_PUER_P26               (0x1u << 26) /**< \brief (GPIO_PUER) Pull-up Enable */\r
+#define GPIO_PUER_P27               (0x1u << 27) /**< \brief (GPIO_PUER) Pull-up Enable */\r
+#define GPIO_PUER_P28               (0x1u << 28) /**< \brief (GPIO_PUER) Pull-up Enable */\r
+#define GPIO_PUER_P29               (0x1u << 29) /**< \brief (GPIO_PUER) Pull-up Enable */\r
+#define GPIO_PUER_P30               (0x1u << 30) /**< \brief (GPIO_PUER) Pull-up Enable */\r
+#define GPIO_PUER_P31               (0x1u << 31) /**< \brief (GPIO_PUER) Pull-up Enable */\r
+/* -------- GPIO_PUERS : (GPIO Offset: 0x074) Port Pull-up Enable Register - Set -------- */\r
+#define GPIO_PUERS_P0               (0x1u <<  0) /**< \brief (GPIO_PUERS) Pull-up Enable */\r
+#define GPIO_PUERS_P1               (0x1u <<  1) /**< \brief (GPIO_PUERS) Pull-up Enable */\r
+#define GPIO_PUERS_P2               (0x1u <<  2) /**< \brief (GPIO_PUERS) Pull-up Enable */\r
+#define GPIO_PUERS_P3               (0x1u <<  3) /**< \brief (GPIO_PUERS) Pull-up Enable */\r
+#define GPIO_PUERS_P4               (0x1u <<  4) /**< \brief (GPIO_PUERS) Pull-up Enable */\r
+#define GPIO_PUERS_P5               (0x1u <<  5) /**< \brief (GPIO_PUERS) Pull-up Enable */\r
+#define GPIO_PUERS_P6               (0x1u <<  6) /**< \brief (GPIO_PUERS) Pull-up Enable */\r
+#define GPIO_PUERS_P7               (0x1u <<  7) /**< \brief (GPIO_PUERS) Pull-up Enable */\r
+#define GPIO_PUERS_P8               (0x1u <<  8) /**< \brief (GPIO_PUERS) Pull-up Enable */\r
+#define GPIO_PUERS_P9               (0x1u <<  9) /**< \brief (GPIO_PUERS) Pull-up Enable */\r
+#define GPIO_PUERS_P10              (0x1u << 10) /**< \brief (GPIO_PUERS) Pull-up Enable */\r
+#define GPIO_PUERS_P11              (0x1u << 11) /**< \brief (GPIO_PUERS) Pull-up Enable */\r
+#define GPIO_PUERS_P12              (0x1u << 12) /**< \brief (GPIO_PUERS) Pull-up Enable */\r
+#define GPIO_PUERS_P13              (0x1u << 13) /**< \brief (GPIO_PUERS) Pull-up Enable */\r
+#define GPIO_PUERS_P14              (0x1u << 14) /**< \brief (GPIO_PUERS) Pull-up Enable */\r
+#define GPIO_PUERS_P15              (0x1u << 15) /**< \brief (GPIO_PUERS) Pull-up Enable */\r
+#define GPIO_PUERS_P16              (0x1u << 16) /**< \brief (GPIO_PUERS) Pull-up Enable */\r
+#define GPIO_PUERS_P17              (0x1u << 17) /**< \brief (GPIO_PUERS) Pull-up Enable */\r
+#define GPIO_PUERS_P18              (0x1u << 18) /**< \brief (GPIO_PUERS) Pull-up Enable */\r
+#define GPIO_PUERS_P19              (0x1u << 19) /**< \brief (GPIO_PUERS) Pull-up Enable */\r
+#define GPIO_PUERS_P20              (0x1u << 20) /**< \brief (GPIO_PUERS) Pull-up Enable */\r
+#define GPIO_PUERS_P21              (0x1u << 21) /**< \brief (GPIO_PUERS) Pull-up Enable */\r
+#define GPIO_PUERS_P22              (0x1u << 22) /**< \brief (GPIO_PUERS) Pull-up Enable */\r
+#define GPIO_PUERS_P23              (0x1u << 23) /**< \brief (GPIO_PUERS) Pull-up Enable */\r
+#define GPIO_PUERS_P24              (0x1u << 24) /**< \brief (GPIO_PUERS) Pull-up Enable */\r
+#define GPIO_PUERS_P25              (0x1u << 25) /**< \brief (GPIO_PUERS) Pull-up Enable */\r
+#define GPIO_PUERS_P26              (0x1u << 26) /**< \brief (GPIO_PUERS) Pull-up Enable */\r
+#define GPIO_PUERS_P27              (0x1u << 27) /**< \brief (GPIO_PUERS) Pull-up Enable */\r
+#define GPIO_PUERS_P28              (0x1u << 28) /**< \brief (GPIO_PUERS) Pull-up Enable */\r
+#define GPIO_PUERS_P29              (0x1u << 29) /**< \brief (GPIO_PUERS) Pull-up Enable */\r
+#define GPIO_PUERS_P30              (0x1u << 30) /**< \brief (GPIO_PUERS) Pull-up Enable */\r
+#define GPIO_PUERS_P31              (0x1u << 31) /**< \brief (GPIO_PUERS) Pull-up Enable */\r
+/* -------- GPIO_PUERC : (GPIO Offset: 0x078) Port Pull-up Enable Register - Clear -------- */\r
+#define GPIO_PUERC_P0               (0x1u <<  0) /**< \brief (GPIO_PUERC) Pull-up Enable */\r
+#define GPIO_PUERC_P1               (0x1u <<  1) /**< \brief (GPIO_PUERC) Pull-up Enable */\r
+#define GPIO_PUERC_P2               (0x1u <<  2) /**< \brief (GPIO_PUERC) Pull-up Enable */\r
+#define GPIO_PUERC_P3               (0x1u <<  3) /**< \brief (GPIO_PUERC) Pull-up Enable */\r
+#define GPIO_PUERC_P4               (0x1u <<  4) /**< \brief (GPIO_PUERC) Pull-up Enable */\r
+#define GPIO_PUERC_P5               (0x1u <<  5) /**< \brief (GPIO_PUERC) Pull-up Enable */\r
+#define GPIO_PUERC_P6               (0x1u <<  6) /**< \brief (GPIO_PUERC) Pull-up Enable */\r
+#define GPIO_PUERC_P7               (0x1u <<  7) /**< \brief (GPIO_PUERC) Pull-up Enable */\r
+#define GPIO_PUERC_P8               (0x1u <<  8) /**< \brief (GPIO_PUERC) Pull-up Enable */\r
+#define GPIO_PUERC_P9               (0x1u <<  9) /**< \brief (GPIO_PUERC) Pull-up Enable */\r
+#define GPIO_PUERC_P10              (0x1u << 10) /**< \brief (GPIO_PUERC) Pull-up Enable */\r
+#define GPIO_PUERC_P11              (0x1u << 11) /**< \brief (GPIO_PUERC) Pull-up Enable */\r
+#define GPIO_PUERC_P12              (0x1u << 12) /**< \brief (GPIO_PUERC) Pull-up Enable */\r
+#define GPIO_PUERC_P13              (0x1u << 13) /**< \brief (GPIO_PUERC) Pull-up Enable */\r
+#define GPIO_PUERC_P14              (0x1u << 14) /**< \brief (GPIO_PUERC) Pull-up Enable */\r
+#define GPIO_PUERC_P15              (0x1u << 15) /**< \brief (GPIO_PUERC) Pull-up Enable */\r
+#define GPIO_PUERC_P16              (0x1u << 16) /**< \brief (GPIO_PUERC) Pull-up Enable */\r
+#define GPIO_PUERC_P17              (0x1u << 17) /**< \brief (GPIO_PUERC) Pull-up Enable */\r
+#define GPIO_PUERC_P18              (0x1u << 18) /**< \brief (GPIO_PUERC) Pull-up Enable */\r
+#define GPIO_PUERC_P19              (0x1u << 19) /**< \brief (GPIO_PUERC) Pull-up Enable */\r
+#define GPIO_PUERC_P20              (0x1u << 20) /**< \brief (GPIO_PUERC) Pull-up Enable */\r
+#define GPIO_PUERC_P21              (0x1u << 21) /**< \brief (GPIO_PUERC) Pull-up Enable */\r
+#define GPIO_PUERC_P22              (0x1u << 22) /**< \brief (GPIO_PUERC) Pull-up Enable */\r
+#define GPIO_PUERC_P23              (0x1u << 23) /**< \brief (GPIO_PUERC) Pull-up Enable */\r
+#define GPIO_PUERC_P24              (0x1u << 24) /**< \brief (GPIO_PUERC) Pull-up Enable */\r
+#define GPIO_PUERC_P25              (0x1u << 25) /**< \brief (GPIO_PUERC) Pull-up Enable */\r
+#define GPIO_PUERC_P26              (0x1u << 26) /**< \brief (GPIO_PUERC) Pull-up Enable */\r
+#define GPIO_PUERC_P27              (0x1u << 27) /**< \brief (GPIO_PUERC) Pull-up Enable */\r
+#define GPIO_PUERC_P28              (0x1u << 28) /**< \brief (GPIO_PUERC) Pull-up Enable */\r
+#define GPIO_PUERC_P29              (0x1u << 29) /**< \brief (GPIO_PUERC) Pull-up Enable */\r
+#define GPIO_PUERC_P30              (0x1u << 30) /**< \brief (GPIO_PUERC) Pull-up Enable */\r
+#define GPIO_PUERC_P31              (0x1u << 31) /**< \brief (GPIO_PUERC) Pull-up Enable */\r
+/* -------- GPIO_PUERT : (GPIO Offset: 0x07C) Port Pull-up Enable Register - Toggle -------- */\r
+#define GPIO_PUERT_P0               (0x1u <<  0) /**< \brief (GPIO_PUERT) Pull-up Enable */\r
+#define GPIO_PUERT_P1               (0x1u <<  1) /**< \brief (GPIO_PUERT) Pull-up Enable */\r
+#define GPIO_PUERT_P2               (0x1u <<  2) /**< \brief (GPIO_PUERT) Pull-up Enable */\r
+#define GPIO_PUERT_P3               (0x1u <<  3) /**< \brief (GPIO_PUERT) Pull-up Enable */\r
+#define GPIO_PUERT_P4               (0x1u <<  4) /**< \brief (GPIO_PUERT) Pull-up Enable */\r
+#define GPIO_PUERT_P5               (0x1u <<  5) /**< \brief (GPIO_PUERT) Pull-up Enable */\r
+#define GPIO_PUERT_P6               (0x1u <<  6) /**< \brief (GPIO_PUERT) Pull-up Enable */\r
+#define GPIO_PUERT_P7               (0x1u <<  7) /**< \brief (GPIO_PUERT) Pull-up Enable */\r
+#define GPIO_PUERT_P8               (0x1u <<  8) /**< \brief (GPIO_PUERT) Pull-up Enable */\r
+#define GPIO_PUERT_P9               (0x1u <<  9) /**< \brief (GPIO_PUERT) Pull-up Enable */\r
+#define GPIO_PUERT_P10              (0x1u << 10) /**< \brief (GPIO_PUERT) Pull-up Enable */\r
+#define GPIO_PUERT_P11              (0x1u << 11) /**< \brief (GPIO_PUERT) Pull-up Enable */\r
+#define GPIO_PUERT_P12              (0x1u << 12) /**< \brief (GPIO_PUERT) Pull-up Enable */\r
+#define GPIO_PUERT_P13              (0x1u << 13) /**< \brief (GPIO_PUERT) Pull-up Enable */\r
+#define GPIO_PUERT_P14              (0x1u << 14) /**< \brief (GPIO_PUERT) Pull-up Enable */\r
+#define GPIO_PUERT_P15              (0x1u << 15) /**< \brief (GPIO_PUERT) Pull-up Enable */\r
+#define GPIO_PUERT_P16              (0x1u << 16) /**< \brief (GPIO_PUERT) Pull-up Enable */\r
+#define GPIO_PUERT_P17              (0x1u << 17) /**< \brief (GPIO_PUERT) Pull-up Enable */\r
+#define GPIO_PUERT_P18              (0x1u << 18) /**< \brief (GPIO_PUERT) Pull-up Enable */\r
+#define GPIO_PUERT_P19              (0x1u << 19) /**< \brief (GPIO_PUERT) Pull-up Enable */\r
+#define GPIO_PUERT_P20              (0x1u << 20) /**< \brief (GPIO_PUERT) Pull-up Enable */\r
+#define GPIO_PUERT_P21              (0x1u << 21) /**< \brief (GPIO_PUERT) Pull-up Enable */\r
+#define GPIO_PUERT_P22              (0x1u << 22) /**< \brief (GPIO_PUERT) Pull-up Enable */\r
+#define GPIO_PUERT_P23              (0x1u << 23) /**< \brief (GPIO_PUERT) Pull-up Enable */\r
+#define GPIO_PUERT_P24              (0x1u << 24) /**< \brief (GPIO_PUERT) Pull-up Enable */\r
+#define GPIO_PUERT_P25              (0x1u << 25) /**< \brief (GPIO_PUERT) Pull-up Enable */\r
+#define GPIO_PUERT_P26              (0x1u << 26) /**< \brief (GPIO_PUERT) Pull-up Enable */\r
+#define GPIO_PUERT_P27              (0x1u << 27) /**< \brief (GPIO_PUERT) Pull-up Enable */\r
+#define GPIO_PUERT_P28              (0x1u << 28) /**< \brief (GPIO_PUERT) Pull-up Enable */\r
+#define GPIO_PUERT_P29              (0x1u << 29) /**< \brief (GPIO_PUERT) Pull-up Enable */\r
+#define GPIO_PUERT_P30              (0x1u << 30) /**< \brief (GPIO_PUERT) Pull-up Enable */\r
+#define GPIO_PUERT_P31              (0x1u << 31) /**< \brief (GPIO_PUERT) Pull-up Enable */\r
+/* -------- GPIO_PDER : (GPIO Offset: 0x080) Port Pull-down Enable Register -------- */\r
+#define GPIO_PDER_P0                (0x1u <<  0) /**< \brief (GPIO_PDER) Pull-down Enable */\r
+#define GPIO_PDER_P1                (0x1u <<  1) /**< \brief (GPIO_PDER) Pull-down Enable */\r
+#define GPIO_PDER_P2                (0x1u <<  2) /**< \brief (GPIO_PDER) Pull-down Enable */\r
+#define GPIO_PDER_P3                (0x1u <<  3) /**< \brief (GPIO_PDER) Pull-down Enable */\r
+#define GPIO_PDER_P4                (0x1u <<  4) /**< \brief (GPIO_PDER) Pull-down Enable */\r
+#define GPIO_PDER_P5                (0x1u <<  5) /**< \brief (GPIO_PDER) Pull-down Enable */\r
+#define GPIO_PDER_P6                (0x1u <<  6) /**< \brief (GPIO_PDER) Pull-down Enable */\r
+#define GPIO_PDER_P7                (0x1u <<  7) /**< \brief (GPIO_PDER) Pull-down Enable */\r
+#define GPIO_PDER_P8                (0x1u <<  8) /**< \brief (GPIO_PDER) Pull-down Enable */\r
+#define GPIO_PDER_P9                (0x1u <<  9) /**< \brief (GPIO_PDER) Pull-down Enable */\r
+#define GPIO_PDER_P10               (0x1u << 10) /**< \brief (GPIO_PDER) Pull-down Enable */\r
+#define GPIO_PDER_P11               (0x1u << 11) /**< \brief (GPIO_PDER) Pull-down Enable */\r
+#define GPIO_PDER_P12               (0x1u << 12) /**< \brief (GPIO_PDER) Pull-down Enable */\r
+#define GPIO_PDER_P13               (0x1u << 13) /**< \brief (GPIO_PDER) Pull-down Enable */\r
+#define GPIO_PDER_P14               (0x1u << 14) /**< \brief (GPIO_PDER) Pull-down Enable */\r
+#define GPIO_PDER_P15               (0x1u << 15) /**< \brief (GPIO_PDER) Pull-down Enable */\r
+#define GPIO_PDER_P16               (0x1u << 16) /**< \brief (GPIO_PDER) Pull-down Enable */\r
+#define GPIO_PDER_P17               (0x1u << 17) /**< \brief (GPIO_PDER) Pull-down Enable */\r
+#define GPIO_PDER_P18               (0x1u << 18) /**< \brief (GPIO_PDER) Pull-down Enable */\r
+#define GPIO_PDER_P19               (0x1u << 19) /**< \brief (GPIO_PDER) Pull-down Enable */\r
+#define GPIO_PDER_P20               (0x1u << 20) /**< \brief (GPIO_PDER) Pull-down Enable */\r
+#define GPIO_PDER_P21               (0x1u << 21) /**< \brief (GPIO_PDER) Pull-down Enable */\r
+#define GPIO_PDER_P22               (0x1u << 22) /**< \brief (GPIO_PDER) Pull-down Enable */\r
+#define GPIO_PDER_P23               (0x1u << 23) /**< \brief (GPIO_PDER) Pull-down Enable */\r
+#define GPIO_PDER_P24               (0x1u << 24) /**< \brief (GPIO_PDER) Pull-down Enable */\r
+#define GPIO_PDER_P25               (0x1u << 25) /**< \brief (GPIO_PDER) Pull-down Enable */\r
+#define GPIO_PDER_P26               (0x1u << 26) /**< \brief (GPIO_PDER) Pull-down Enable */\r
+#define GPIO_PDER_P27               (0x1u << 27) /**< \brief (GPIO_PDER) Pull-down Enable */\r
+#define GPIO_PDER_P28               (0x1u << 28) /**< \brief (GPIO_PDER) Pull-down Enable */\r
+#define GPIO_PDER_P29               (0x1u << 29) /**< \brief (GPIO_PDER) Pull-down Enable */\r
+#define GPIO_PDER_P30               (0x1u << 30) /**< \brief (GPIO_PDER) Pull-down Enable */\r
+#define GPIO_PDER_P31               (0x1u << 31) /**< \brief (GPIO_PDER) Pull-down Enable */\r
+/* -------- GPIO_PDERS : (GPIO Offset: 0x084) Port Pull-down Enable Register - Set -------- */\r
+#define GPIO_PDERS_P0               (0x1u <<  0) /**< \brief (GPIO_PDERS) Pull-down Enable */\r
+#define GPIO_PDERS_P1               (0x1u <<  1) /**< \brief (GPIO_PDERS) Pull-down Enable */\r
+#define GPIO_PDERS_P2               (0x1u <<  2) /**< \brief (GPIO_PDERS) Pull-down Enable */\r
+#define GPIO_PDERS_P3               (0x1u <<  3) /**< \brief (GPIO_PDERS) Pull-down Enable */\r
+#define GPIO_PDERS_P4               (0x1u <<  4) /**< \brief (GPIO_PDERS) Pull-down Enable */\r
+#define GPIO_PDERS_P5               (0x1u <<  5) /**< \brief (GPIO_PDERS) Pull-down Enable */\r
+#define GPIO_PDERS_P6               (0x1u <<  6) /**< \brief (GPIO_PDERS) Pull-down Enable */\r
+#define GPIO_PDERS_P7               (0x1u <<  7) /**< \brief (GPIO_PDERS) Pull-down Enable */\r
+#define GPIO_PDERS_P8               (0x1u <<  8) /**< \brief (GPIO_PDERS) Pull-down Enable */\r
+#define GPIO_PDERS_P9               (0x1u <<  9) /**< \brief (GPIO_PDERS) Pull-down Enable */\r
+#define GPIO_PDERS_P10              (0x1u << 10) /**< \brief (GPIO_PDERS) Pull-down Enable */\r
+#define GPIO_PDERS_P11              (0x1u << 11) /**< \brief (GPIO_PDERS) Pull-down Enable */\r
+#define GPIO_PDERS_P12              (0x1u << 12) /**< \brief (GPIO_PDERS) Pull-down Enable */\r
+#define GPIO_PDERS_P13              (0x1u << 13) /**< \brief (GPIO_PDERS) Pull-down Enable */\r
+#define GPIO_PDERS_P14              (0x1u << 14) /**< \brief (GPIO_PDERS) Pull-down Enable */\r
+#define GPIO_PDERS_P15              (0x1u << 15) /**< \brief (GPIO_PDERS) Pull-down Enable */\r
+#define GPIO_PDERS_P16              (0x1u << 16) /**< \brief (GPIO_PDERS) Pull-down Enable */\r
+#define GPIO_PDERS_P17              (0x1u << 17) /**< \brief (GPIO_PDERS) Pull-down Enable */\r
+#define GPIO_PDERS_P18              (0x1u << 18) /**< \brief (GPIO_PDERS) Pull-down Enable */\r
+#define GPIO_PDERS_P19              (0x1u << 19) /**< \brief (GPIO_PDERS) Pull-down Enable */\r
+#define GPIO_PDERS_P20              (0x1u << 20) /**< \brief (GPIO_PDERS) Pull-down Enable */\r
+#define GPIO_PDERS_P21              (0x1u << 21) /**< \brief (GPIO_PDERS) Pull-down Enable */\r
+#define GPIO_PDERS_P22              (0x1u << 22) /**< \brief (GPIO_PDERS) Pull-down Enable */\r
+#define GPIO_PDERS_P23              (0x1u << 23) /**< \brief (GPIO_PDERS) Pull-down Enable */\r
+#define GPIO_PDERS_P24              (0x1u << 24) /**< \brief (GPIO_PDERS) Pull-down Enable */\r
+#define GPIO_PDERS_P25              (0x1u << 25) /**< \brief (GPIO_PDERS) Pull-down Enable */\r
+#define GPIO_PDERS_P26              (0x1u << 26) /**< \brief (GPIO_PDERS) Pull-down Enable */\r
+#define GPIO_PDERS_P27              (0x1u << 27) /**< \brief (GPIO_PDERS) Pull-down Enable */\r
+#define GPIO_PDERS_P28              (0x1u << 28) /**< \brief (GPIO_PDERS) Pull-down Enable */\r
+#define GPIO_PDERS_P29              (0x1u << 29) /**< \brief (GPIO_PDERS) Pull-down Enable */\r
+#define GPIO_PDERS_P30              (0x1u << 30) /**< \brief (GPIO_PDERS) Pull-down Enable */\r
+#define GPIO_PDERS_P31              (0x1u << 31) /**< \brief (GPIO_PDERS) Pull-down Enable */\r
+/* -------- GPIO_PDERC : (GPIO Offset: 0x088) Port Pull-down Enable Register - Clear -------- */\r
+#define GPIO_PDERC_P0               (0x1u <<  0) /**< \brief (GPIO_PDERC) Pull-down Enable */\r
+#define GPIO_PDERC_P1               (0x1u <<  1) /**< \brief (GPIO_PDERC) Pull-down Enable */\r
+#define GPIO_PDERC_P2               (0x1u <<  2) /**< \brief (GPIO_PDERC) Pull-down Enable */\r
+#define GPIO_PDERC_P3               (0x1u <<  3) /**< \brief (GPIO_PDERC) Pull-down Enable */\r
+#define GPIO_PDERC_P4               (0x1u <<  4) /**< \brief (GPIO_PDERC) Pull-down Enable */\r
+#define GPIO_PDERC_P5               (0x1u <<  5) /**< \brief (GPIO_PDERC) Pull-down Enable */\r
+#define GPIO_PDERC_P6               (0x1u <<  6) /**< \brief (GPIO_PDERC) Pull-down Enable */\r
+#define GPIO_PDERC_P7               (0x1u <<  7) /**< \brief (GPIO_PDERC) Pull-down Enable */\r
+#define GPIO_PDERC_P8               (0x1u <<  8) /**< \brief (GPIO_PDERC) Pull-down Enable */\r
+#define GPIO_PDERC_P9               (0x1u <<  9) /**< \brief (GPIO_PDERC) Pull-down Enable */\r
+#define GPIO_PDERC_P10              (0x1u << 10) /**< \brief (GPIO_PDERC) Pull-down Enable */\r
+#define GPIO_PDERC_P11              (0x1u << 11) /**< \brief (GPIO_PDERC) Pull-down Enable */\r
+#define GPIO_PDERC_P12              (0x1u << 12) /**< \brief (GPIO_PDERC) Pull-down Enable */\r
+#define GPIO_PDERC_P13              (0x1u << 13) /**< \brief (GPIO_PDERC) Pull-down Enable */\r
+#define GPIO_PDERC_P14              (0x1u << 14) /**< \brief (GPIO_PDERC) Pull-down Enable */\r
+#define GPIO_PDERC_P15              (0x1u << 15) /**< \brief (GPIO_PDERC) Pull-down Enable */\r
+#define GPIO_PDERC_P16              (0x1u << 16) /**< \brief (GPIO_PDERC) Pull-down Enable */\r
+#define GPIO_PDERC_P17              (0x1u << 17) /**< \brief (GPIO_PDERC) Pull-down Enable */\r
+#define GPIO_PDERC_P18              (0x1u << 18) /**< \brief (GPIO_PDERC) Pull-down Enable */\r
+#define GPIO_PDERC_P19              (0x1u << 19) /**< \brief (GPIO_PDERC) Pull-down Enable */\r
+#define GPIO_PDERC_P20              (0x1u << 20) /**< \brief (GPIO_PDERC) Pull-down Enable */\r
+#define GPIO_PDERC_P21              (0x1u << 21) /**< \brief (GPIO_PDERC) Pull-down Enable */\r
+#define GPIO_PDERC_P22              (0x1u << 22) /**< \brief (GPIO_PDERC) Pull-down Enable */\r
+#define GPIO_PDERC_P23              (0x1u << 23) /**< \brief (GPIO_PDERC) Pull-down Enable */\r
+#define GPIO_PDERC_P24              (0x1u << 24) /**< \brief (GPIO_PDERC) Pull-down Enable */\r
+#define GPIO_PDERC_P25              (0x1u << 25) /**< \brief (GPIO_PDERC) Pull-down Enable */\r
+#define GPIO_PDERC_P26              (0x1u << 26) /**< \brief (GPIO_PDERC) Pull-down Enable */\r
+#define GPIO_PDERC_P27              (0x1u << 27) /**< \brief (GPIO_PDERC) Pull-down Enable */\r
+#define GPIO_PDERC_P28              (0x1u << 28) /**< \brief (GPIO_PDERC) Pull-down Enable */\r
+#define GPIO_PDERC_P29              (0x1u << 29) /**< \brief (GPIO_PDERC) Pull-down Enable */\r
+#define GPIO_PDERC_P30              (0x1u << 30) /**< \brief (GPIO_PDERC) Pull-down Enable */\r
+#define GPIO_PDERC_P31              (0x1u << 31) /**< \brief (GPIO_PDERC) Pull-down Enable */\r
+/* -------- GPIO_PDERT : (GPIO Offset: 0x08C) Port Pull-down Enable Register - Toggle -------- */\r
+#define GPIO_PDERT_P0               (0x1u <<  0) /**< \brief (GPIO_PDERT) Pull-down Enable */\r
+#define GPIO_PDERT_P1               (0x1u <<  1) /**< \brief (GPIO_PDERT) Pull-down Enable */\r
+#define GPIO_PDERT_P2               (0x1u <<  2) /**< \brief (GPIO_PDERT) Pull-down Enable */\r
+#define GPIO_PDERT_P3               (0x1u <<  3) /**< \brief (GPIO_PDERT) Pull-down Enable */\r
+#define GPIO_PDERT_P4               (0x1u <<  4) /**< \brief (GPIO_PDERT) Pull-down Enable */\r
+#define GPIO_PDERT_P5               (0x1u <<  5) /**< \brief (GPIO_PDERT) Pull-down Enable */\r
+#define GPIO_PDERT_P6               (0x1u <<  6) /**< \brief (GPIO_PDERT) Pull-down Enable */\r
+#define GPIO_PDERT_P7               (0x1u <<  7) /**< \brief (GPIO_PDERT) Pull-down Enable */\r
+#define GPIO_PDERT_P8               (0x1u <<  8) /**< \brief (GPIO_PDERT) Pull-down Enable */\r
+#define GPIO_PDERT_P9               (0x1u <<  9) /**< \brief (GPIO_PDERT) Pull-down Enable */\r
+#define GPIO_PDERT_P10              (0x1u << 10) /**< \brief (GPIO_PDERT) Pull-down Enable */\r
+#define GPIO_PDERT_P11              (0x1u << 11) /**< \brief (GPIO_PDERT) Pull-down Enable */\r
+#define GPIO_PDERT_P12              (0x1u << 12) /**< \brief (GPIO_PDERT) Pull-down Enable */\r
+#define GPIO_PDERT_P13              (0x1u << 13) /**< \brief (GPIO_PDERT) Pull-down Enable */\r
+#define GPIO_PDERT_P14              (0x1u << 14) /**< \brief (GPIO_PDERT) Pull-down Enable */\r
+#define GPIO_PDERT_P15              (0x1u << 15) /**< \brief (GPIO_PDERT) Pull-down Enable */\r
+#define GPIO_PDERT_P16              (0x1u << 16) /**< \brief (GPIO_PDERT) Pull-down Enable */\r
+#define GPIO_PDERT_P17              (0x1u << 17) /**< \brief (GPIO_PDERT) Pull-down Enable */\r
+#define GPIO_PDERT_P18              (0x1u << 18) /**< \brief (GPIO_PDERT) Pull-down Enable */\r
+#define GPIO_PDERT_P19              (0x1u << 19) /**< \brief (GPIO_PDERT) Pull-down Enable */\r
+#define GPIO_PDERT_P20              (0x1u << 20) /**< \brief (GPIO_PDERT) Pull-down Enable */\r
+#define GPIO_PDERT_P21              (0x1u << 21) /**< \brief (GPIO_PDERT) Pull-down Enable */\r
+#define GPIO_PDERT_P22              (0x1u << 22) /**< \brief (GPIO_PDERT) Pull-down Enable */\r
+#define GPIO_PDERT_P23              (0x1u << 23) /**< \brief (GPIO_PDERT) Pull-down Enable */\r
+#define GPIO_PDERT_P24              (0x1u << 24) /**< \brief (GPIO_PDERT) Pull-down Enable */\r
+#define GPIO_PDERT_P25              (0x1u << 25) /**< \brief (GPIO_PDERT) Pull-down Enable */\r
+#define GPIO_PDERT_P26              (0x1u << 26) /**< \brief (GPIO_PDERT) Pull-down Enable */\r
+#define GPIO_PDERT_P27              (0x1u << 27) /**< \brief (GPIO_PDERT) Pull-down Enable */\r
+#define GPIO_PDERT_P28              (0x1u << 28) /**< \brief (GPIO_PDERT) Pull-down Enable */\r
+#define GPIO_PDERT_P29              (0x1u << 29) /**< \brief (GPIO_PDERT) Pull-down Enable */\r
+#define GPIO_PDERT_P30              (0x1u << 30) /**< \brief (GPIO_PDERT) Pull-down Enable */\r
+#define GPIO_PDERT_P31              (0x1u << 31) /**< \brief (GPIO_PDERT) Pull-down Enable */\r
+/* -------- GPIO_IER : (GPIO Offset: 0x090) Port Interrupt Enable Register -------- */\r
+#define GPIO_IER_P0                 (0x1u <<  0) /**< \brief (GPIO_IER) Interrupt Enable */\r
+#define GPIO_IER_P1                 (0x1u <<  1) /**< \brief (GPIO_IER) Interrupt Enable */\r
+#define GPIO_IER_P2                 (0x1u <<  2) /**< \brief (GPIO_IER) Interrupt Enable */\r
+#define GPIO_IER_P3                 (0x1u <<  3) /**< \brief (GPIO_IER) Interrupt Enable */\r
+#define GPIO_IER_P4                 (0x1u <<  4) /**< \brief (GPIO_IER) Interrupt Enable */\r
+#define GPIO_IER_P5                 (0x1u <<  5) /**< \brief (GPIO_IER) Interrupt Enable */\r
+#define GPIO_IER_P6                 (0x1u <<  6) /**< \brief (GPIO_IER) Interrupt Enable */\r
+#define GPIO_IER_P7                 (0x1u <<  7) /**< \brief (GPIO_IER) Interrupt Enable */\r
+#define GPIO_IER_P8                 (0x1u <<  8) /**< \brief (GPIO_IER) Interrupt Enable */\r
+#define GPIO_IER_P9                 (0x1u <<  9) /**< \brief (GPIO_IER) Interrupt Enable */\r
+#define GPIO_IER_P10                (0x1u << 10) /**< \brief (GPIO_IER) Interrupt Enable */\r
+#define GPIO_IER_P11                (0x1u << 11) /**< \brief (GPIO_IER) Interrupt Enable */\r
+#define GPIO_IER_P12                (0x1u << 12) /**< \brief (GPIO_IER) Interrupt Enable */\r
+#define GPIO_IER_P13                (0x1u << 13) /**< \brief (GPIO_IER) Interrupt Enable */\r
+#define GPIO_IER_P14                (0x1u << 14) /**< \brief (GPIO_IER) Interrupt Enable */\r
+#define GPIO_IER_P15                (0x1u << 15) /**< \brief (GPIO_IER) Interrupt Enable */\r
+#define GPIO_IER_P16                (0x1u << 16) /**< \brief (GPIO_IER) Interrupt Enable */\r
+#define GPIO_IER_P17                (0x1u << 17) /**< \brief (GPIO_IER) Interrupt Enable */\r
+#define GPIO_IER_P18                (0x1u << 18) /**< \brief (GPIO_IER) Interrupt Enable */\r
+#define GPIO_IER_P19                (0x1u << 19) /**< \brief (GPIO_IER) Interrupt Enable */\r
+#define GPIO_IER_P20                (0x1u << 20) /**< \brief (GPIO_IER) Interrupt Enable */\r
+#define GPIO_IER_P21                (0x1u << 21) /**< \brief (GPIO_IER) Interrupt Enable */\r
+#define GPIO_IER_P22                (0x1u << 22) /**< \brief (GPIO_IER) Interrupt Enable */\r
+#define GPIO_IER_P23                (0x1u << 23) /**< \brief (GPIO_IER) Interrupt Enable */\r
+#define GPIO_IER_P24                (0x1u << 24) /**< \brief (GPIO_IER) Interrupt Enable */\r
+#define GPIO_IER_P25                (0x1u << 25) /**< \brief (GPIO_IER) Interrupt Enable */\r
+#define GPIO_IER_P26                (0x1u << 26) /**< \brief (GPIO_IER) Interrupt Enable */\r
+#define GPIO_IER_P27                (0x1u << 27) /**< \brief (GPIO_IER) Interrupt Enable */\r
+#define GPIO_IER_P28                (0x1u << 28) /**< \brief (GPIO_IER) Interrupt Enable */\r
+#define GPIO_IER_P29                (0x1u << 29) /**< \brief (GPIO_IER) Interrupt Enable */\r
+#define GPIO_IER_P30                (0x1u << 30) /**< \brief (GPIO_IER) Interrupt Enable */\r
+#define GPIO_IER_P31                (0x1u << 31) /**< \brief (GPIO_IER) Interrupt Enable */\r
+/* -------- GPIO_IERS : (GPIO Offset: 0x094) Port Interrupt Enable Register - Set -------- */\r
+#define GPIO_IERS_P0                (0x1u <<  0) /**< \brief (GPIO_IERS) Interrupt Enable */\r
+#define GPIO_IERS_P1                (0x1u <<  1) /**< \brief (GPIO_IERS) Interrupt Enable */\r
+#define GPIO_IERS_P2                (0x1u <<  2) /**< \brief (GPIO_IERS) Interrupt Enable */\r
+#define GPIO_IERS_P3                (0x1u <<  3) /**< \brief (GPIO_IERS) Interrupt Enable */\r
+#define GPIO_IERS_P4                (0x1u <<  4) /**< \brief (GPIO_IERS) Interrupt Enable */\r
+#define GPIO_IERS_P5                (0x1u <<  5) /**< \brief (GPIO_IERS) Interrupt Enable */\r
+#define GPIO_IERS_P6                (0x1u <<  6) /**< \brief (GPIO_IERS) Interrupt Enable */\r
+#define GPIO_IERS_P7                (0x1u <<  7) /**< \brief (GPIO_IERS) Interrupt Enable */\r
+#define GPIO_IERS_P8                (0x1u <<  8) /**< \brief (GPIO_IERS) Interrupt Enable */\r
+#define GPIO_IERS_P9                (0x1u <<  9) /**< \brief (GPIO_IERS) Interrupt Enable */\r
+#define GPIO_IERS_P10               (0x1u << 10) /**< \brief (GPIO_IERS) Interrupt Enable */\r
+#define GPIO_IERS_P11               (0x1u << 11) /**< \brief (GPIO_IERS) Interrupt Enable */\r
+#define GPIO_IERS_P12               (0x1u << 12) /**< \brief (GPIO_IERS) Interrupt Enable */\r
+#define GPIO_IERS_P13               (0x1u << 13) /**< \brief (GPIO_IERS) Interrupt Enable */\r
+#define GPIO_IERS_P14               (0x1u << 14) /**< \brief (GPIO_IERS) Interrupt Enable */\r
+#define GPIO_IERS_P15               (0x1u << 15) /**< \brief (GPIO_IERS) Interrupt Enable */\r
+#define GPIO_IERS_P16               (0x1u << 16) /**< \brief (GPIO_IERS) Interrupt Enable */\r
+#define GPIO_IERS_P17               (0x1u << 17) /**< \brief (GPIO_IERS) Interrupt Enable */\r
+#define GPIO_IERS_P18               (0x1u << 18) /**< \brief (GPIO_IERS) Interrupt Enable */\r
+#define GPIO_IERS_P19               (0x1u << 19) /**< \brief (GPIO_IERS) Interrupt Enable */\r
+#define GPIO_IERS_P20               (0x1u << 20) /**< \brief (GPIO_IERS) Interrupt Enable */\r
+#define GPIO_IERS_P21               (0x1u << 21) /**< \brief (GPIO_IERS) Interrupt Enable */\r
+#define GPIO_IERS_P22               (0x1u << 22) /**< \brief (GPIO_IERS) Interrupt Enable */\r
+#define GPIO_IERS_P23               (0x1u << 23) /**< \brief (GPIO_IERS) Interrupt Enable */\r
+#define GPIO_IERS_P24               (0x1u << 24) /**< \brief (GPIO_IERS) Interrupt Enable */\r
+#define GPIO_IERS_P25               (0x1u << 25) /**< \brief (GPIO_IERS) Interrupt Enable */\r
+#define GPIO_IERS_P26               (0x1u << 26) /**< \brief (GPIO_IERS) Interrupt Enable */\r
+#define GPIO_IERS_P27               (0x1u << 27) /**< \brief (GPIO_IERS) Interrupt Enable */\r
+#define GPIO_IERS_P28               (0x1u << 28) /**< \brief (GPIO_IERS) Interrupt Enable */\r
+#define GPIO_IERS_P29               (0x1u << 29) /**< \brief (GPIO_IERS) Interrupt Enable */\r
+#define GPIO_IERS_P30               (0x1u << 30) /**< \brief (GPIO_IERS) Interrupt Enable */\r
+#define GPIO_IERS_P31               (0x1u << 31) /**< \brief (GPIO_IERS) Interrupt Enable */\r
+/* -------- GPIO_IERC : (GPIO Offset: 0x098) Port Interrupt Enable Register - Clear -------- */\r
+#define GPIO_IERC_P0                (0x1u <<  0) /**< \brief (GPIO_IERC) Interrupt Enable */\r
+#define GPIO_IERC_P1                (0x1u <<  1) /**< \brief (GPIO_IERC) Interrupt Enable */\r
+#define GPIO_IERC_P2                (0x1u <<  2) /**< \brief (GPIO_IERC) Interrupt Enable */\r
+#define GPIO_IERC_P3                (0x1u <<  3) /**< \brief (GPIO_IERC) Interrupt Enable */\r
+#define GPIO_IERC_P4                (0x1u <<  4) /**< \brief (GPIO_IERC) Interrupt Enable */\r
+#define GPIO_IERC_P5                (0x1u <<  5) /**< \brief (GPIO_IERC) Interrupt Enable */\r
+#define GPIO_IERC_P6                (0x1u <<  6) /**< \brief (GPIO_IERC) Interrupt Enable */\r
+#define GPIO_IERC_P7                (0x1u <<  7) /**< \brief (GPIO_IERC) Interrupt Enable */\r
+#define GPIO_IERC_P8                (0x1u <<  8) /**< \brief (GPIO_IERC) Interrupt Enable */\r
+#define GPIO_IERC_P9                (0x1u <<  9) /**< \brief (GPIO_IERC) Interrupt Enable */\r
+#define GPIO_IERC_P10               (0x1u << 10) /**< \brief (GPIO_IERC) Interrupt Enable */\r
+#define GPIO_IERC_P11               (0x1u << 11) /**< \brief (GPIO_IERC) Interrupt Enable */\r
+#define GPIO_IERC_P12               (0x1u << 12) /**< \brief (GPIO_IERC) Interrupt Enable */\r
+#define GPIO_IERC_P13               (0x1u << 13) /**< \brief (GPIO_IERC) Interrupt Enable */\r
+#define GPIO_IERC_P14               (0x1u << 14) /**< \brief (GPIO_IERC) Interrupt Enable */\r
+#define GPIO_IERC_P15               (0x1u << 15) /**< \brief (GPIO_IERC) Interrupt Enable */\r
+#define GPIO_IERC_P16               (0x1u << 16) /**< \brief (GPIO_IERC) Interrupt Enable */\r
+#define GPIO_IERC_P17               (0x1u << 17) /**< \brief (GPIO_IERC) Interrupt Enable */\r
+#define GPIO_IERC_P18               (0x1u << 18) /**< \brief (GPIO_IERC) Interrupt Enable */\r
+#define GPIO_IERC_P19               (0x1u << 19) /**< \brief (GPIO_IERC) Interrupt Enable */\r
+#define GPIO_IERC_P20               (0x1u << 20) /**< \brief (GPIO_IERC) Interrupt Enable */\r
+#define GPIO_IERC_P21               (0x1u << 21) /**< \brief (GPIO_IERC) Interrupt Enable */\r
+#define GPIO_IERC_P22               (0x1u << 22) /**< \brief (GPIO_IERC) Interrupt Enable */\r
+#define GPIO_IERC_P23               (0x1u << 23) /**< \brief (GPIO_IERC) Interrupt Enable */\r
+#define GPIO_IERC_P24               (0x1u << 24) /**< \brief (GPIO_IERC) Interrupt Enable */\r
+#define GPIO_IERC_P25               (0x1u << 25) /**< \brief (GPIO_IERC) Interrupt Enable */\r
+#define GPIO_IERC_P26               (0x1u << 26) /**< \brief (GPIO_IERC) Interrupt Enable */\r
+#define GPIO_IERC_P27               (0x1u << 27) /**< \brief (GPIO_IERC) Interrupt Enable */\r
+#define GPIO_IERC_P28               (0x1u << 28) /**< \brief (GPIO_IERC) Interrupt Enable */\r
+#define GPIO_IERC_P29               (0x1u << 29) /**< \brief (GPIO_IERC) Interrupt Enable */\r
+#define GPIO_IERC_P30               (0x1u << 30) /**< \brief (GPIO_IERC) Interrupt Enable */\r
+#define GPIO_IERC_P31               (0x1u << 31) /**< \brief (GPIO_IERC) Interrupt Enable */\r
+/* -------- GPIO_IERT : (GPIO Offset: 0x09C) Port Interrupt Enable Register - Toggle -------- */\r
+#define GPIO_IERT_P0                (0x1u <<  0) /**< \brief (GPIO_IERT) Interrupt Enable */\r
+#define GPIO_IERT_P1                (0x1u <<  1) /**< \brief (GPIO_IERT) Interrupt Enable */\r
+#define GPIO_IERT_P2                (0x1u <<  2) /**< \brief (GPIO_IERT) Interrupt Enable */\r
+#define GPIO_IERT_P3                (0x1u <<  3) /**< \brief (GPIO_IERT) Interrupt Enable */\r
+#define GPIO_IERT_P4                (0x1u <<  4) /**< \brief (GPIO_IERT) Interrupt Enable */\r
+#define GPIO_IERT_P5                (0x1u <<  5) /**< \brief (GPIO_IERT) Interrupt Enable */\r
+#define GPIO_IERT_P6                (0x1u <<  6) /**< \brief (GPIO_IERT) Interrupt Enable */\r
+#define GPIO_IERT_P7                (0x1u <<  7) /**< \brief (GPIO_IERT) Interrupt Enable */\r
+#define GPIO_IERT_P8                (0x1u <<  8) /**< \brief (GPIO_IERT) Interrupt Enable */\r
+#define GPIO_IERT_P9                (0x1u <<  9) /**< \brief (GPIO_IERT) Interrupt Enable */\r
+#define GPIO_IERT_P10               (0x1u << 10) /**< \brief (GPIO_IERT) Interrupt Enable */\r
+#define GPIO_IERT_P11               (0x1u << 11) /**< \brief (GPIO_IERT) Interrupt Enable */\r
+#define GPIO_IERT_P12               (0x1u << 12) /**< \brief (GPIO_IERT) Interrupt Enable */\r
+#define GPIO_IERT_P13               (0x1u << 13) /**< \brief (GPIO_IERT) Interrupt Enable */\r
+#define GPIO_IERT_P14               (0x1u << 14) /**< \brief (GPIO_IERT) Interrupt Enable */\r
+#define GPIO_IERT_P15               (0x1u << 15) /**< \brief (GPIO_IERT) Interrupt Enable */\r
+#define GPIO_IERT_P16               (0x1u << 16) /**< \brief (GPIO_IERT) Interrupt Enable */\r
+#define GPIO_IERT_P17               (0x1u << 17) /**< \brief (GPIO_IERT) Interrupt Enable */\r
+#define GPIO_IERT_P18               (0x1u << 18) /**< \brief (GPIO_IERT) Interrupt Enable */\r
+#define GPIO_IERT_P19               (0x1u << 19) /**< \brief (GPIO_IERT) Interrupt Enable */\r
+#define GPIO_IERT_P20               (0x1u << 20) /**< \brief (GPIO_IERT) Interrupt Enable */\r
+#define GPIO_IERT_P21               (0x1u << 21) /**< \brief (GPIO_IERT) Interrupt Enable */\r
+#define GPIO_IERT_P22               (0x1u << 22) /**< \brief (GPIO_IERT) Interrupt Enable */\r
+#define GPIO_IERT_P23               (0x1u << 23) /**< \brief (GPIO_IERT) Interrupt Enable */\r
+#define GPIO_IERT_P24               (0x1u << 24) /**< \brief (GPIO_IERT) Interrupt Enable */\r
+#define GPIO_IERT_P25               (0x1u << 25) /**< \brief (GPIO_IERT) Interrupt Enable */\r
+#define GPIO_IERT_P26               (0x1u << 26) /**< \brief (GPIO_IERT) Interrupt Enable */\r
+#define GPIO_IERT_P27               (0x1u << 27) /**< \brief (GPIO_IERT) Interrupt Enable */\r
+#define GPIO_IERT_P28               (0x1u << 28) /**< \brief (GPIO_IERT) Interrupt Enable */\r
+#define GPIO_IERT_P29               (0x1u << 29) /**< \brief (GPIO_IERT) Interrupt Enable */\r
+#define GPIO_IERT_P30               (0x1u << 30) /**< \brief (GPIO_IERT) Interrupt Enable */\r
+#define GPIO_IERT_P31               (0x1u << 31) /**< \brief (GPIO_IERT) Interrupt Enable */\r
+/* -------- GPIO_IMR0 : (GPIO Offset: 0x0A0) Port Interrupt Mode Register 0 -------- */\r
+#define GPIO_IMR0_P0                (0x1u <<  0) /**< \brief (GPIO_IMR0) Interrupt Mode Bit 0 */\r
+#define GPIO_IMR0_P1                (0x1u <<  1) /**< \brief (GPIO_IMR0) Interrupt Mode Bit 0 */\r
+#define GPIO_IMR0_P2                (0x1u <<  2) /**< \brief (GPIO_IMR0) Interrupt Mode Bit 0 */\r
+#define GPIO_IMR0_P3                (0x1u <<  3) /**< \brief (GPIO_IMR0) Interrupt Mode Bit 0 */\r
+#define GPIO_IMR0_P4                (0x1u <<  4) /**< \brief (GPIO_IMR0) Interrupt Mode Bit 0 */\r
+#define GPIO_IMR0_P5                (0x1u <<  5) /**< \brief (GPIO_IMR0) Interrupt Mode Bit 0 */\r
+#define GPIO_IMR0_P6                (0x1u <<  6) /**< \brief (GPIO_IMR0) Interrupt Mode Bit 0 */\r
+#define GPIO_IMR0_P7                (0x1u <<  7) /**< \brief (GPIO_IMR0) Interrupt Mode Bit 0 */\r
+#define GPIO_IMR0_P8                (0x1u <<  8) /**< \brief (GPIO_IMR0) Interrupt Mode Bit 0 */\r
+#define GPIO_IMR0_P9                (0x1u <<  9) /**< \brief (GPIO_IMR0) Interrupt Mode Bit 0 */\r
+#define GPIO_IMR0_P10               (0x1u << 10) /**< \brief (GPIO_IMR0) Interrupt Mode Bit 0 */\r
+#define GPIO_IMR0_P11               (0x1u << 11) /**< \brief (GPIO_IMR0) Interrupt Mode Bit 0 */\r
+#define GPIO_IMR0_P12               (0x1u << 12) /**< \brief (GPIO_IMR0) Interrupt Mode Bit 0 */\r
+#define GPIO_IMR0_P13               (0x1u << 13) /**< \brief (GPIO_IMR0) Interrupt Mode Bit 0 */\r
+#define GPIO_IMR0_P14               (0x1u << 14) /**< \brief (GPIO_IMR0) Interrupt Mode Bit 0 */\r
+#define GPIO_IMR0_P15               (0x1u << 15) /**< \brief (GPIO_IMR0) Interrupt Mode Bit 0 */\r
+#define GPIO_IMR0_P16               (0x1u << 16) /**< \brief (GPIO_IMR0) Interrupt Mode Bit 0 */\r
+#define GPIO_IMR0_P17               (0x1u << 17) /**< \brief (GPIO_IMR0) Interrupt Mode Bit 0 */\r
+#define GPIO_IMR0_P18               (0x1u << 18) /**< \brief (GPIO_IMR0) Interrupt Mode Bit 0 */\r
+#define GPIO_IMR0_P19               (0x1u << 19) /**< \brief (GPIO_IMR0) Interrupt Mode Bit 0 */\r
+#define GPIO_IMR0_P20               (0x1u << 20) /**< \brief (GPIO_IMR0) Interrupt Mode Bit 0 */\r
+#define GPIO_IMR0_P21               (0x1u << 21) /**< \brief (GPIO_IMR0) Interrupt Mode Bit 0 */\r
+#define GPIO_IMR0_P22               (0x1u << 22) /**< \brief (GPIO_IMR0) Interrupt Mode Bit 0 */\r
+#define GPIO_IMR0_P23               (0x1u << 23) /**< \brief (GPIO_IMR0) Interrupt Mode Bit 0 */\r
+#define GPIO_IMR0_P24               (0x1u << 24) /**< \brief (GPIO_IMR0) Interrupt Mode Bit 0 */\r
+#define GPIO_IMR0_P25               (0x1u << 25) /**< \brief (GPIO_IMR0) Interrupt Mode Bit 0 */\r
+#define GPIO_IMR0_P26               (0x1u << 26) /**< \brief (GPIO_IMR0) Interrupt Mode Bit 0 */\r
+#define GPIO_IMR0_P27               (0x1u << 27) /**< \brief (GPIO_IMR0) Interrupt Mode Bit 0 */\r
+#define GPIO_IMR0_P28               (0x1u << 28) /**< \brief (GPIO_IMR0) Interrupt Mode Bit 0 */\r
+#define GPIO_IMR0_P29               (0x1u << 29) /**< \brief (GPIO_IMR0) Interrupt Mode Bit 0 */\r
+#define GPIO_IMR0_P30               (0x1u << 30) /**< \brief (GPIO_IMR0) Interrupt Mode Bit 0 */\r
+#define GPIO_IMR0_P31               (0x1u << 31) /**< \brief (GPIO_IMR0) Interrupt Mode Bit 0 */\r
+/* -------- GPIO_IMR0S : (GPIO Offset: 0x0A4) Port Interrupt Mode Register 0 - Set -------- */\r
+#define GPIO_IMR0S_P0               (0x1u <<  0) /**< \brief (GPIO_IMR0S) Interrupt Mode Bit 0 */\r
+#define GPIO_IMR0S_P1               (0x1u <<  1) /**< \brief (GPIO_IMR0S) Interrupt Mode Bit 0 */\r
+#define GPIO_IMR0S_P2               (0x1u <<  2) /**< \brief (GPIO_IMR0S) Interrupt Mode Bit 0 */\r
+#define GPIO_IMR0S_P3               (0x1u <<  3) /**< \brief (GPIO_IMR0S) Interrupt Mode Bit 0 */\r
+#define GPIO_IMR0S_P4               (0x1u <<  4) /**< \brief (GPIO_IMR0S) Interrupt Mode Bit 0 */\r
+#define GPIO_IMR0S_P5               (0x1u <<  5) /**< \brief (GPIO_IMR0S) Interrupt Mode Bit 0 */\r
+#define GPIO_IMR0S_P6               (0x1u <<  6) /**< \brief (GPIO_IMR0S) Interrupt Mode Bit 0 */\r
+#define GPIO_IMR0S_P7               (0x1u <<  7) /**< \brief (GPIO_IMR0S) Interrupt Mode Bit 0 */\r
+#define GPIO_IMR0S_P8               (0x1u <<  8) /**< \brief (GPIO_IMR0S) Interrupt Mode Bit 0 */\r
+#define GPIO_IMR0S_P9               (0x1u <<  9) /**< \brief (GPIO_IMR0S) Interrupt Mode Bit 0 */\r
+#define GPIO_IMR0S_P10              (0x1u << 10) /**< \brief (GPIO_IMR0S) Interrupt Mode Bit 0 */\r
+#define GPIO_IMR0S_P11              (0x1u << 11) /**< \brief (GPIO_IMR0S) Interrupt Mode Bit 0 */\r
+#define GPIO_IMR0S_P12              (0x1u << 12) /**< \brief (GPIO_IMR0S) Interrupt Mode Bit 0 */\r
+#define GPIO_IMR0S_P13              (0x1u << 13) /**< \brief (GPIO_IMR0S) Interrupt Mode Bit 0 */\r
+#define GPIO_IMR0S_P14              (0x1u << 14) /**< \brief (GPIO_IMR0S) Interrupt Mode Bit 0 */\r
+#define GPIO_IMR0S_P15              (0x1u << 15) /**< \brief (GPIO_IMR0S) Interrupt Mode Bit 0 */\r
+#define GPIO_IMR0S_P16              (0x1u << 16) /**< \brief (GPIO_IMR0S) Interrupt Mode Bit 0 */\r
+#define GPIO_IMR0S_P17              (0x1u << 17) /**< \brief (GPIO_IMR0S) Interrupt Mode Bit 0 */\r
+#define GPIO_IMR0S_P18              (0x1u << 18) /**< \brief (GPIO_IMR0S) Interrupt Mode Bit 0 */\r
+#define GPIO_IMR0S_P19              (0x1u << 19) /**< \brief (GPIO_IMR0S) Interrupt Mode Bit 0 */\r
+#define GPIO_IMR0S_P20              (0x1u << 20) /**< \brief (GPIO_IMR0S) Interrupt Mode Bit 0 */\r
+#define GPIO_IMR0S_P21              (0x1u << 21) /**< \brief (GPIO_IMR0S) Interrupt Mode Bit 0 */\r
+#define GPIO_IMR0S_P22              (0x1u << 22) /**< \brief (GPIO_IMR0S) Interrupt Mode Bit 0 */\r
+#define GPIO_IMR0S_P23              (0x1u << 23) /**< \brief (GPIO_IMR0S) Interrupt Mode Bit 0 */\r
+#define GPIO_IMR0S_P24              (0x1u << 24) /**< \brief (GPIO_IMR0S) Interrupt Mode Bit 0 */\r
+#define GPIO_IMR0S_P25              (0x1u << 25) /**< \brief (GPIO_IMR0S) Interrupt Mode Bit 0 */\r
+#define GPIO_IMR0S_P26              (0x1u << 26) /**< \brief (GPIO_IMR0S) Interrupt Mode Bit 0 */\r
+#define GPIO_IMR0S_P27              (0x1u << 27) /**< \brief (GPIO_IMR0S) Interrupt Mode Bit 0 */\r
+#define GPIO_IMR0S_P28              (0x1u << 28) /**< \brief (GPIO_IMR0S) Interrupt Mode Bit 0 */\r
+#define GPIO_IMR0S_P29              (0x1u << 29) /**< \brief (GPIO_IMR0S) Interrupt Mode Bit 0 */\r
+#define GPIO_IMR0S_P30              (0x1u << 30) /**< \brief (GPIO_IMR0S) Interrupt Mode Bit 0 */\r
+#define GPIO_IMR0S_P31              (0x1u << 31) /**< \brief (GPIO_IMR0S) Interrupt Mode Bit 0 */\r
+/* -------- GPIO_IMR0C : (GPIO Offset: 0x0A8) Port Interrupt Mode Register 0 - Clear -------- */\r
+#define GPIO_IMR0C_P0               (0x1u <<  0) /**< \brief (GPIO_IMR0C) Interrupt Mode Bit 0 */\r
+#define GPIO_IMR0C_P1               (0x1u <<  1) /**< \brief (GPIO_IMR0C) Interrupt Mode Bit 0 */\r
+#define GPIO_IMR0C_P2               (0x1u <<  2) /**< \brief (GPIO_IMR0C) Interrupt Mode Bit 0 */\r
+#define GPIO_IMR0C_P3               (0x1u <<  3) /**< \brief (GPIO_IMR0C) Interrupt Mode Bit 0 */\r
+#define GPIO_IMR0C_P4               (0x1u <<  4) /**< \brief (GPIO_IMR0C) Interrupt Mode Bit 0 */\r
+#define GPIO_IMR0C_P5               (0x1u <<  5) /**< \brief (GPIO_IMR0C) Interrupt Mode Bit 0 */\r
+#define GPIO_IMR0C_P6               (0x1u <<  6) /**< \brief (GPIO_IMR0C) Interrupt Mode Bit 0 */\r
+#define GPIO_IMR0C_P7               (0x1u <<  7) /**< \brief (GPIO_IMR0C) Interrupt Mode Bit 0 */\r
+#define GPIO_IMR0C_P8               (0x1u <<  8) /**< \brief (GPIO_IMR0C) Interrupt Mode Bit 0 */\r
+#define GPIO_IMR0C_P9               (0x1u <<  9) /**< \brief (GPIO_IMR0C) Interrupt Mode Bit 0 */\r
+#define GPIO_IMR0C_P10              (0x1u << 10) /**< \brief (GPIO_IMR0C) Interrupt Mode Bit 0 */\r
+#define GPIO_IMR0C_P11              (0x1u << 11) /**< \brief (GPIO_IMR0C) Interrupt Mode Bit 0 */\r
+#define GPIO_IMR0C_P12              (0x1u << 12) /**< \brief (GPIO_IMR0C) Interrupt Mode Bit 0 */\r
+#define GPIO_IMR0C_P13              (0x1u << 13) /**< \brief (GPIO_IMR0C) Interrupt Mode Bit 0 */\r
+#define GPIO_IMR0C_P14              (0x1u << 14) /**< \brief (GPIO_IMR0C) Interrupt Mode Bit 0 */\r
+#define GPIO_IMR0C_P15              (0x1u << 15) /**< \brief (GPIO_IMR0C) Interrupt Mode Bit 0 */\r
+#define GPIO_IMR0C_P16              (0x1u << 16) /**< \brief (GPIO_IMR0C) Interrupt Mode Bit 0 */\r
+#define GPIO_IMR0C_P17              (0x1u << 17) /**< \brief (GPIO_IMR0C) Interrupt Mode Bit 0 */\r
+#define GPIO_IMR0C_P18              (0x1u << 18) /**< \brief (GPIO_IMR0C) Interrupt Mode Bit 0 */\r
+#define GPIO_IMR0C_P19              (0x1u << 19) /**< \brief (GPIO_IMR0C) Interrupt Mode Bit 0 */\r
+#define GPIO_IMR0C_P20              (0x1u << 20) /**< \brief (GPIO_IMR0C) Interrupt Mode Bit 0 */\r
+#define GPIO_IMR0C_P21              (0x1u << 21) /**< \brief (GPIO_IMR0C) Interrupt Mode Bit 0 */\r
+#define GPIO_IMR0C_P22              (0x1u << 22) /**< \brief (GPIO_IMR0C) Interrupt Mode Bit 0 */\r
+#define GPIO_IMR0C_P23              (0x1u << 23) /**< \brief (GPIO_IMR0C) Interrupt Mode Bit 0 */\r
+#define GPIO_IMR0C_P24              (0x1u << 24) /**< \brief (GPIO_IMR0C) Interrupt Mode Bit 0 */\r
+#define GPIO_IMR0C_P25              (0x1u << 25) /**< \brief (GPIO_IMR0C) Interrupt Mode Bit 0 */\r
+#define GPIO_IMR0C_P26              (0x1u << 26) /**< \brief (GPIO_IMR0C) Interrupt Mode Bit 0 */\r
+#define GPIO_IMR0C_P27              (0x1u << 27) /**< \brief (GPIO_IMR0C) Interrupt Mode Bit 0 */\r
+#define GPIO_IMR0C_P28              (0x1u << 28) /**< \brief (GPIO_IMR0C) Interrupt Mode Bit 0 */\r
+#define GPIO_IMR0C_P29              (0x1u << 29) /**< \brief (GPIO_IMR0C) Interrupt Mode Bit 0 */\r
+#define GPIO_IMR0C_P30              (0x1u << 30) /**< \brief (GPIO_IMR0C) Interrupt Mode Bit 0 */\r
+#define GPIO_IMR0C_P31              (0x1u << 31) /**< \brief (GPIO_IMR0C) Interrupt Mode Bit 0 */\r
+/* -------- GPIO_IMR0T : (GPIO Offset: 0x0AC) Port Interrupt Mode Register 0 - Toggle -------- */\r
+#define GPIO_IMR0T_P0               (0x1u <<  0) /**< \brief (GPIO_IMR0T) Interrupt Mode Bit 0 */\r
+#define GPIO_IMR0T_P1               (0x1u <<  1) /**< \brief (GPIO_IMR0T) Interrupt Mode Bit 0 */\r
+#define GPIO_IMR0T_P2               (0x1u <<  2) /**< \brief (GPIO_IMR0T) Interrupt Mode Bit 0 */\r
+#define GPIO_IMR0T_P3               (0x1u <<  3) /**< \brief (GPIO_IMR0T) Interrupt Mode Bit 0 */\r
+#define GPIO_IMR0T_P4               (0x1u <<  4) /**< \brief (GPIO_IMR0T) Interrupt Mode Bit 0 */\r
+#define GPIO_IMR0T_P5               (0x1u <<  5) /**< \brief (GPIO_IMR0T) Interrupt Mode Bit 0 */\r
+#define GPIO_IMR0T_P6               (0x1u <<  6) /**< \brief (GPIO_IMR0T) Interrupt Mode Bit 0 */\r
+#define GPIO_IMR0T_P7               (0x1u <<  7) /**< \brief (GPIO_IMR0T) Interrupt Mode Bit 0 */\r
+#define GPIO_IMR0T_P8               (0x1u <<  8) /**< \brief (GPIO_IMR0T) Interrupt Mode Bit 0 */\r
+#define GPIO_IMR0T_P9               (0x1u <<  9) /**< \brief (GPIO_IMR0T) Interrupt Mode Bit 0 */\r
+#define GPIO_IMR0T_P10              (0x1u << 10) /**< \brief (GPIO_IMR0T) Interrupt Mode Bit 0 */\r
+#define GPIO_IMR0T_P11              (0x1u << 11) /**< \brief (GPIO_IMR0T) Interrupt Mode Bit 0 */\r
+#define GPIO_IMR0T_P12              (0x1u << 12) /**< \brief (GPIO_IMR0T) Interrupt Mode Bit 0 */\r
+#define GPIO_IMR0T_P13              (0x1u << 13) /**< \brief (GPIO_IMR0T) Interrupt Mode Bit 0 */\r
+#define GPIO_IMR0T_P14              (0x1u << 14) /**< \brief (GPIO_IMR0T) Interrupt Mode Bit 0 */\r
+#define GPIO_IMR0T_P15              (0x1u << 15) /**< \brief (GPIO_IMR0T) Interrupt Mode Bit 0 */\r
+#define GPIO_IMR0T_P16              (0x1u << 16) /**< \brief (GPIO_IMR0T) Interrupt Mode Bit 0 */\r
+#define GPIO_IMR0T_P17              (0x1u << 17) /**< \brief (GPIO_IMR0T) Interrupt Mode Bit 0 */\r
+#define GPIO_IMR0T_P18              (0x1u << 18) /**< \brief (GPIO_IMR0T) Interrupt Mode Bit 0 */\r
+#define GPIO_IMR0T_P19              (0x1u << 19) /**< \brief (GPIO_IMR0T) Interrupt Mode Bit 0 */\r
+#define GPIO_IMR0T_P20              (0x1u << 20) /**< \brief (GPIO_IMR0T) Interrupt Mode Bit 0 */\r
+#define GPIO_IMR0T_P21              (0x1u << 21) /**< \brief (GPIO_IMR0T) Interrupt Mode Bit 0 */\r
+#define GPIO_IMR0T_P22              (0x1u << 22) /**< \brief (GPIO_IMR0T) Interrupt Mode Bit 0 */\r
+#define GPIO_IMR0T_P23              (0x1u << 23) /**< \brief (GPIO_IMR0T) Interrupt Mode Bit 0 */\r
+#define GPIO_IMR0T_P24              (0x1u << 24) /**< \brief (GPIO_IMR0T) Interrupt Mode Bit 0 */\r
+#define GPIO_IMR0T_P25              (0x1u << 25) /**< \brief (GPIO_IMR0T) Interrupt Mode Bit 0 */\r
+#define GPIO_IMR0T_P26              (0x1u << 26) /**< \brief (GPIO_IMR0T) Interrupt Mode Bit 0 */\r
+#define GPIO_IMR0T_P27              (0x1u << 27) /**< \brief (GPIO_IMR0T) Interrupt Mode Bit 0 */\r
+#define GPIO_IMR0T_P28              (0x1u << 28) /**< \brief (GPIO_IMR0T) Interrupt Mode Bit 0 */\r
+#define GPIO_IMR0T_P29              (0x1u << 29) /**< \brief (GPIO_IMR0T) Interrupt Mode Bit 0 */\r
+#define GPIO_IMR0T_P30              (0x1u << 30) /**< \brief (GPIO_IMR0T) Interrupt Mode Bit 0 */\r
+#define GPIO_IMR0T_P31              (0x1u << 31) /**< \brief (GPIO_IMR0T) Interrupt Mode Bit 0 */\r
+/* -------- GPIO_IMR1 : (GPIO Offset: 0x0B0) Port Interrupt Mode Register 1 -------- */\r
+#define GPIO_IMR1_P0                (0x1u <<  0) /**< \brief (GPIO_IMR1) Interrupt Mode Bit 1 */\r
+#define GPIO_IMR1_P1                (0x1u <<  1) /**< \brief (GPIO_IMR1) Interrupt Mode Bit 1 */\r
+#define GPIO_IMR1_P2                (0x1u <<  2) /**< \brief (GPIO_IMR1) Interrupt Mode Bit 1 */\r
+#define GPIO_IMR1_P3                (0x1u <<  3) /**< \brief (GPIO_IMR1) Interrupt Mode Bit 1 */\r
+#define GPIO_IMR1_P4                (0x1u <<  4) /**< \brief (GPIO_IMR1) Interrupt Mode Bit 1 */\r
+#define GPIO_IMR1_P5                (0x1u <<  5) /**< \brief (GPIO_IMR1) Interrupt Mode Bit 1 */\r
+#define GPIO_IMR1_P6                (0x1u <<  6) /**< \brief (GPIO_IMR1) Interrupt Mode Bit 1 */\r
+#define GPIO_IMR1_P7                (0x1u <<  7) /**< \brief (GPIO_IMR1) Interrupt Mode Bit 1 */\r
+#define GPIO_IMR1_P8                (0x1u <<  8) /**< \brief (GPIO_IMR1) Interrupt Mode Bit 1 */\r
+#define GPIO_IMR1_P9                (0x1u <<  9) /**< \brief (GPIO_IMR1) Interrupt Mode Bit 1 */\r
+#define GPIO_IMR1_P10               (0x1u << 10) /**< \brief (GPIO_IMR1) Interrupt Mode Bit 1 */\r
+#define GPIO_IMR1_P11               (0x1u << 11) /**< \brief (GPIO_IMR1) Interrupt Mode Bit 1 */\r
+#define GPIO_IMR1_P12               (0x1u << 12) /**< \brief (GPIO_IMR1) Interrupt Mode Bit 1 */\r
+#define GPIO_IMR1_P13               (0x1u << 13) /**< \brief (GPIO_IMR1) Interrupt Mode Bit 1 */\r
+#define GPIO_IMR1_P14               (0x1u << 14) /**< \brief (GPIO_IMR1) Interrupt Mode Bit 1 */\r
+#define GPIO_IMR1_P15               (0x1u << 15) /**< \brief (GPIO_IMR1) Interrupt Mode Bit 1 */\r
+#define GPIO_IMR1_P16               (0x1u << 16) /**< \brief (GPIO_IMR1) Interrupt Mode Bit 1 */\r
+#define GPIO_IMR1_P17               (0x1u << 17) /**< \brief (GPIO_IMR1) Interrupt Mode Bit 1 */\r
+#define GPIO_IMR1_P18               (0x1u << 18) /**< \brief (GPIO_IMR1) Interrupt Mode Bit 1 */\r
+#define GPIO_IMR1_P19               (0x1u << 19) /**< \brief (GPIO_IMR1) Interrupt Mode Bit 1 */\r
+#define GPIO_IMR1_P20               (0x1u << 20) /**< \brief (GPIO_IMR1) Interrupt Mode Bit 1 */\r
+#define GPIO_IMR1_P21               (0x1u << 21) /**< \brief (GPIO_IMR1) Interrupt Mode Bit 1 */\r
+#define GPIO_IMR1_P22               (0x1u << 22) /**< \brief (GPIO_IMR1) Interrupt Mode Bit 1 */\r
+#define GPIO_IMR1_P23               (0x1u << 23) /**< \brief (GPIO_IMR1) Interrupt Mode Bit 1 */\r
+#define GPIO_IMR1_P24               (0x1u << 24) /**< \brief (GPIO_IMR1) Interrupt Mode Bit 1 */\r
+#define GPIO_IMR1_P25               (0x1u << 25) /**< \brief (GPIO_IMR1) Interrupt Mode Bit 1 */\r
+#define GPIO_IMR1_P26               (0x1u << 26) /**< \brief (GPIO_IMR1) Interrupt Mode Bit 1 */\r
+#define GPIO_IMR1_P27               (0x1u << 27) /**< \brief (GPIO_IMR1) Interrupt Mode Bit 1 */\r
+#define GPIO_IMR1_P28               (0x1u << 28) /**< \brief (GPIO_IMR1) Interrupt Mode Bit 1 */\r
+#define GPIO_IMR1_P29               (0x1u << 29) /**< \brief (GPIO_IMR1) Interrupt Mode Bit 1 */\r
+#define GPIO_IMR1_P30               (0x1u << 30) /**< \brief (GPIO_IMR1) Interrupt Mode Bit 1 */\r
+#define GPIO_IMR1_P31               (0x1u << 31) /**< \brief (GPIO_IMR1) Interrupt Mode Bit 1 */\r
+/* -------- GPIO_IMR1S : (GPIO Offset: 0x0B4) Port Interrupt Mode Register 1 - Set -------- */\r
+#define GPIO_IMR1S_P0               (0x1u <<  0) /**< \brief (GPIO_IMR1S) Interrupt Mode Bit 1 */\r
+#define GPIO_IMR1S_P1               (0x1u <<  1) /**< \brief (GPIO_IMR1S) Interrupt Mode Bit 1 */\r
+#define GPIO_IMR1S_P2               (0x1u <<  2) /**< \brief (GPIO_IMR1S) Interrupt Mode Bit 1 */\r
+#define GPIO_IMR1S_P3               (0x1u <<  3) /**< \brief (GPIO_IMR1S) Interrupt Mode Bit 1 */\r
+#define GPIO_IMR1S_P4               (0x1u <<  4) /**< \brief (GPIO_IMR1S) Interrupt Mode Bit 1 */\r
+#define GPIO_IMR1S_P5               (0x1u <<  5) /**< \brief (GPIO_IMR1S) Interrupt Mode Bit 1 */\r
+#define GPIO_IMR1S_P6               (0x1u <<  6) /**< \brief (GPIO_IMR1S) Interrupt Mode Bit 1 */\r
+#define GPIO_IMR1S_P7               (0x1u <<  7) /**< \brief (GPIO_IMR1S) Interrupt Mode Bit 1 */\r
+#define GPIO_IMR1S_P8               (0x1u <<  8) /**< \brief (GPIO_IMR1S) Interrupt Mode Bit 1 */\r
+#define GPIO_IMR1S_P9               (0x1u <<  9) /**< \brief (GPIO_IMR1S) Interrupt Mode Bit 1 */\r
+#define GPIO_IMR1S_P10              (0x1u << 10) /**< \brief (GPIO_IMR1S) Interrupt Mode Bit 1 */\r
+#define GPIO_IMR1S_P11              (0x1u << 11) /**< \brief (GPIO_IMR1S) Interrupt Mode Bit 1 */\r
+#define GPIO_IMR1S_P12              (0x1u << 12) /**< \brief (GPIO_IMR1S) Interrupt Mode Bit 1 */\r
+#define GPIO_IMR1S_P13              (0x1u << 13) /**< \brief (GPIO_IMR1S) Interrupt Mode Bit 1 */\r
+#define GPIO_IMR1S_P14              (0x1u << 14) /**< \brief (GPIO_IMR1S) Interrupt Mode Bit 1 */\r
+#define GPIO_IMR1S_P15              (0x1u << 15) /**< \brief (GPIO_IMR1S) Interrupt Mode Bit 1 */\r
+#define GPIO_IMR1S_P16              (0x1u << 16) /**< \brief (GPIO_IMR1S) Interrupt Mode Bit 1 */\r
+#define GPIO_IMR1S_P17              (0x1u << 17) /**< \brief (GPIO_IMR1S) Interrupt Mode Bit 1 */\r
+#define GPIO_IMR1S_P18              (0x1u << 18) /**< \brief (GPIO_IMR1S) Interrupt Mode Bit 1 */\r
+#define GPIO_IMR1S_P19              (0x1u << 19) /**< \brief (GPIO_IMR1S) Interrupt Mode Bit 1 */\r
+#define GPIO_IMR1S_P20              (0x1u << 20) /**< \brief (GPIO_IMR1S) Interrupt Mode Bit 1 */\r
+#define GPIO_IMR1S_P21              (0x1u << 21) /**< \brief (GPIO_IMR1S) Interrupt Mode Bit 1 */\r
+#define GPIO_IMR1S_P22              (0x1u << 22) /**< \brief (GPIO_IMR1S) Interrupt Mode Bit 1 */\r
+#define GPIO_IMR1S_P23              (0x1u << 23) /**< \brief (GPIO_IMR1S) Interrupt Mode Bit 1 */\r
+#define GPIO_IMR1S_P24              (0x1u << 24) /**< \brief (GPIO_IMR1S) Interrupt Mode Bit 1 */\r
+#define GPIO_IMR1S_P25              (0x1u << 25) /**< \brief (GPIO_IMR1S) Interrupt Mode Bit 1 */\r
+#define GPIO_IMR1S_P26              (0x1u << 26) /**< \brief (GPIO_IMR1S) Interrupt Mode Bit 1 */\r
+#define GPIO_IMR1S_P27              (0x1u << 27) /**< \brief (GPIO_IMR1S) Interrupt Mode Bit 1 */\r
+#define GPIO_IMR1S_P28              (0x1u << 28) /**< \brief (GPIO_IMR1S) Interrupt Mode Bit 1 */\r
+#define GPIO_IMR1S_P29              (0x1u << 29) /**< \brief (GPIO_IMR1S) Interrupt Mode Bit 1 */\r
+#define GPIO_IMR1S_P30              (0x1u << 30) /**< \brief (GPIO_IMR1S) Interrupt Mode Bit 1 */\r
+#define GPIO_IMR1S_P31              (0x1u << 31) /**< \brief (GPIO_IMR1S) Interrupt Mode Bit 1 */\r
+/* -------- GPIO_IMR1C : (GPIO Offset: 0x0B8) Port Interrupt Mode Register 1 - Clear -------- */\r
+#define GPIO_IMR1C_P0               (0x1u <<  0) /**< \brief (GPIO_IMR1C) Interrupt Mode Bit 1 */\r
+#define GPIO_IMR1C_P1               (0x1u <<  1) /**< \brief (GPIO_IMR1C) Interrupt Mode Bit 1 */\r
+#define GPIO_IMR1C_P2               (0x1u <<  2) /**< \brief (GPIO_IMR1C) Interrupt Mode Bit 1 */\r
+#define GPIO_IMR1C_P3               (0x1u <<  3) /**< \brief (GPIO_IMR1C) Interrupt Mode Bit 1 */\r
+#define GPIO_IMR1C_P4               (0x1u <<  4) /**< \brief (GPIO_IMR1C) Interrupt Mode Bit 1 */\r
+#define GPIO_IMR1C_P5               (0x1u <<  5) /**< \brief (GPIO_IMR1C) Interrupt Mode Bit 1 */\r
+#define GPIO_IMR1C_P6               (0x1u <<  6) /**< \brief (GPIO_IMR1C) Interrupt Mode Bit 1 */\r
+#define GPIO_IMR1C_P7               (0x1u <<  7) /**< \brief (GPIO_IMR1C) Interrupt Mode Bit 1 */\r
+#define GPIO_IMR1C_P8               (0x1u <<  8) /**< \brief (GPIO_IMR1C) Interrupt Mode Bit 1 */\r
+#define GPIO_IMR1C_P9               (0x1u <<  9) /**< \brief (GPIO_IMR1C) Interrupt Mode Bit 1 */\r
+#define GPIO_IMR1C_P10              (0x1u << 10) /**< \brief (GPIO_IMR1C) Interrupt Mode Bit 1 */\r
+#define GPIO_IMR1C_P11              (0x1u << 11) /**< \brief (GPIO_IMR1C) Interrupt Mode Bit 1 */\r
+#define GPIO_IMR1C_P12              (0x1u << 12) /**< \brief (GPIO_IMR1C) Interrupt Mode Bit 1 */\r
+#define GPIO_IMR1C_P13              (0x1u << 13) /**< \brief (GPIO_IMR1C) Interrupt Mode Bit 1 */\r
+#define GPIO_IMR1C_P14              (0x1u << 14) /**< \brief (GPIO_IMR1C) Interrupt Mode Bit 1 */\r
+#define GPIO_IMR1C_P15              (0x1u << 15) /**< \brief (GPIO_IMR1C) Interrupt Mode Bit 1 */\r
+#define GPIO_IMR1C_P16              (0x1u << 16) /**< \brief (GPIO_IMR1C) Interrupt Mode Bit 1 */\r
+#define GPIO_IMR1C_P17              (0x1u << 17) /**< \brief (GPIO_IMR1C) Interrupt Mode Bit 1 */\r
+#define GPIO_IMR1C_P18              (0x1u << 18) /**< \brief (GPIO_IMR1C) Interrupt Mode Bit 1 */\r
+#define GPIO_IMR1C_P19              (0x1u << 19) /**< \brief (GPIO_IMR1C) Interrupt Mode Bit 1 */\r
+#define GPIO_IMR1C_P20              (0x1u << 20) /**< \brief (GPIO_IMR1C) Interrupt Mode Bit 1 */\r
+#define GPIO_IMR1C_P21              (0x1u << 21) /**< \brief (GPIO_IMR1C) Interrupt Mode Bit 1 */\r
+#define GPIO_IMR1C_P22              (0x1u << 22) /**< \brief (GPIO_IMR1C) Interrupt Mode Bit 1 */\r
+#define GPIO_IMR1C_P23              (0x1u << 23) /**< \brief (GPIO_IMR1C) Interrupt Mode Bit 1 */\r
+#define GPIO_IMR1C_P24              (0x1u << 24) /**< \brief (GPIO_IMR1C) Interrupt Mode Bit 1 */\r
+#define GPIO_IMR1C_P25              (0x1u << 25) /**< \brief (GPIO_IMR1C) Interrupt Mode Bit 1 */\r
+#define GPIO_IMR1C_P26              (0x1u << 26) /**< \brief (GPIO_IMR1C) Interrupt Mode Bit 1 */\r
+#define GPIO_IMR1C_P27              (0x1u << 27) /**< \brief (GPIO_IMR1C) Interrupt Mode Bit 1 */\r
+#define GPIO_IMR1C_P28              (0x1u << 28) /**< \brief (GPIO_IMR1C) Interrupt Mode Bit 1 */\r
+#define GPIO_IMR1C_P29              (0x1u << 29) /**< \brief (GPIO_IMR1C) Interrupt Mode Bit 1 */\r
+#define GPIO_IMR1C_P30              (0x1u << 30) /**< \brief (GPIO_IMR1C) Interrupt Mode Bit 1 */\r
+#define GPIO_IMR1C_P31              (0x1u << 31) /**< \brief (GPIO_IMR1C) Interrupt Mode Bit 1 */\r
+/* -------- GPIO_IMR1T : (GPIO Offset: 0x0BC) Port Interrupt Mode Register 1 - Toggle -------- */\r
+#define GPIO_IMR1T_P0               (0x1u <<  0) /**< \brief (GPIO_IMR1T) Interrupt Mode Bit 1 */\r
+#define GPIO_IMR1T_P1               (0x1u <<  1) /**< \brief (GPIO_IMR1T) Interrupt Mode Bit 1 */\r
+#define GPIO_IMR1T_P2               (0x1u <<  2) /**< \brief (GPIO_IMR1T) Interrupt Mode Bit 1 */\r
+#define GPIO_IMR1T_P3               (0x1u <<  3) /**< \brief (GPIO_IMR1T) Interrupt Mode Bit 1 */\r
+#define GPIO_IMR1T_P4               (0x1u <<  4) /**< \brief (GPIO_IMR1T) Interrupt Mode Bit 1 */\r
+#define GPIO_IMR1T_P5               (0x1u <<  5) /**< \brief (GPIO_IMR1T) Interrupt Mode Bit 1 */\r
+#define GPIO_IMR1T_P6               (0x1u <<  6) /**< \brief (GPIO_IMR1T) Interrupt Mode Bit 1 */\r
+#define GPIO_IMR1T_P7               (0x1u <<  7) /**< \brief (GPIO_IMR1T) Interrupt Mode Bit 1 */\r
+#define GPIO_IMR1T_P8               (0x1u <<  8) /**< \brief (GPIO_IMR1T) Interrupt Mode Bit 1 */\r
+#define GPIO_IMR1T_P9               (0x1u <<  9) /**< \brief (GPIO_IMR1T) Interrupt Mode Bit 1 */\r
+#define GPIO_IMR1T_P10              (0x1u << 10) /**< \brief (GPIO_IMR1T) Interrupt Mode Bit 1 */\r
+#define GPIO_IMR1T_P11              (0x1u << 11) /**< \brief (GPIO_IMR1T) Interrupt Mode Bit 1 */\r
+#define GPIO_IMR1T_P12              (0x1u << 12) /**< \brief (GPIO_IMR1T) Interrupt Mode Bit 1 */\r
+#define GPIO_IMR1T_P13              (0x1u << 13) /**< \brief (GPIO_IMR1T) Interrupt Mode Bit 1 */\r
+#define GPIO_IMR1T_P14              (0x1u << 14) /**< \brief (GPIO_IMR1T) Interrupt Mode Bit 1 */\r
+#define GPIO_IMR1T_P15              (0x1u << 15) /**< \brief (GPIO_IMR1T) Interrupt Mode Bit 1 */\r
+#define GPIO_IMR1T_P16              (0x1u << 16) /**< \brief (GPIO_IMR1T) Interrupt Mode Bit 1 */\r
+#define GPIO_IMR1T_P17              (0x1u << 17) /**< \brief (GPIO_IMR1T) Interrupt Mode Bit 1 */\r
+#define GPIO_IMR1T_P18              (0x1u << 18) /**< \brief (GPIO_IMR1T) Interrupt Mode Bit 1 */\r
+#define GPIO_IMR1T_P19              (0x1u << 19) /**< \brief (GPIO_IMR1T) Interrupt Mode Bit 1 */\r
+#define GPIO_IMR1T_P20              (0x1u << 20) /**< \brief (GPIO_IMR1T) Interrupt Mode Bit 1 */\r
+#define GPIO_IMR1T_P21              (0x1u << 21) /**< \brief (GPIO_IMR1T) Interrupt Mode Bit 1 */\r
+#define GPIO_IMR1T_P22              (0x1u << 22) /**< \brief (GPIO_IMR1T) Interrupt Mode Bit 1 */\r
+#define GPIO_IMR1T_P23              (0x1u << 23) /**< \brief (GPIO_IMR1T) Interrupt Mode Bit 1 */\r
+#define GPIO_IMR1T_P24              (0x1u << 24) /**< \brief (GPIO_IMR1T) Interrupt Mode Bit 1 */\r
+#define GPIO_IMR1T_P25              (0x1u << 25) /**< \brief (GPIO_IMR1T) Interrupt Mode Bit 1 */\r
+#define GPIO_IMR1T_P26              (0x1u << 26) /**< \brief (GPIO_IMR1T) Interrupt Mode Bit 1 */\r
+#define GPIO_IMR1T_P27              (0x1u << 27) /**< \brief (GPIO_IMR1T) Interrupt Mode Bit 1 */\r
+#define GPIO_IMR1T_P28              (0x1u << 28) /**< \brief (GPIO_IMR1T) Interrupt Mode Bit 1 */\r
+#define GPIO_IMR1T_P29              (0x1u << 29) /**< \brief (GPIO_IMR1T) Interrupt Mode Bit 1 */\r
+#define GPIO_IMR1T_P30              (0x1u << 30) /**< \brief (GPIO_IMR1T) Interrupt Mode Bit 1 */\r
+#define GPIO_IMR1T_P31              (0x1u << 31) /**< \brief (GPIO_IMR1T) Interrupt Mode Bit 1 */\r
+/* -------- GPIO_GFER : (GPIO Offset: 0x0C0) Port Glitch Filter Enable Register -------- */\r
+#define GPIO_GFER_P0                (0x1u <<  0) /**< \brief (GPIO_GFER) Glitch Filter Enable */\r
+#define GPIO_GFER_P1                (0x1u <<  1) /**< \brief (GPIO_GFER) Glitch Filter Enable */\r
+#define GPIO_GFER_P2                (0x1u <<  2) /**< \brief (GPIO_GFER) Glitch Filter Enable */\r
+#define GPIO_GFER_P3                (0x1u <<  3) /**< \brief (GPIO_GFER) Glitch Filter Enable */\r
+#define GPIO_GFER_P4                (0x1u <<  4) /**< \brief (GPIO_GFER) Glitch Filter Enable */\r
+#define GPIO_GFER_P5                (0x1u <<  5) /**< \brief (GPIO_GFER) Glitch Filter Enable */\r
+#define GPIO_GFER_P6                (0x1u <<  6) /**< \brief (GPIO_GFER) Glitch Filter Enable */\r
+#define GPIO_GFER_P7                (0x1u <<  7) /**< \brief (GPIO_GFER) Glitch Filter Enable */\r
+#define GPIO_GFER_P8                (0x1u <<  8) /**< \brief (GPIO_GFER) Glitch Filter Enable */\r
+#define GPIO_GFER_P9                (0x1u <<  9) /**< \brief (GPIO_GFER) Glitch Filter Enable */\r
+#define GPIO_GFER_P10               (0x1u << 10) /**< \brief (GPIO_GFER) Glitch Filter Enable */\r
+#define GPIO_GFER_P11               (0x1u << 11) /**< \brief (GPIO_GFER) Glitch Filter Enable */\r
+#define GPIO_GFER_P12               (0x1u << 12) /**< \brief (GPIO_GFER) Glitch Filter Enable */\r
+#define GPIO_GFER_P13               (0x1u << 13) /**< \brief (GPIO_GFER) Glitch Filter Enable */\r
+#define GPIO_GFER_P14               (0x1u << 14) /**< \brief (GPIO_GFER) Glitch Filter Enable */\r
+#define GPIO_GFER_P15               (0x1u << 15) /**< \brief (GPIO_GFER) Glitch Filter Enable */\r
+#define GPIO_GFER_P16               (0x1u << 16) /**< \brief (GPIO_GFER) Glitch Filter Enable */\r
+#define GPIO_GFER_P17               (0x1u << 17) /**< \brief (GPIO_GFER) Glitch Filter Enable */\r
+#define GPIO_GFER_P18               (0x1u << 18) /**< \brief (GPIO_GFER) Glitch Filter Enable */\r
+#define GPIO_GFER_P19               (0x1u << 19) /**< \brief (GPIO_GFER) Glitch Filter Enable */\r
+#define GPIO_GFER_P20               (0x1u << 20) /**< \brief (GPIO_GFER) Glitch Filter Enable */\r
+#define GPIO_GFER_P21               (0x1u << 21) /**< \brief (GPIO_GFER) Glitch Filter Enable */\r
+#define GPIO_GFER_P22               (0x1u << 22) /**< \brief (GPIO_GFER) Glitch Filter Enable */\r
+#define GPIO_GFER_P23               (0x1u << 23) /**< \brief (GPIO_GFER) Glitch Filter Enable */\r
+#define GPIO_GFER_P24               (0x1u << 24) /**< \brief (GPIO_GFER) Glitch Filter Enable */\r
+#define GPIO_GFER_P25               (0x1u << 25) /**< \brief (GPIO_GFER) Glitch Filter Enable */\r
+#define GPIO_GFER_P26               (0x1u << 26) /**< \brief (GPIO_GFER) Glitch Filter Enable */\r
+#define GPIO_GFER_P27               (0x1u << 27) /**< \brief (GPIO_GFER) Glitch Filter Enable */\r
+#define GPIO_GFER_P28               (0x1u << 28) /**< \brief (GPIO_GFER) Glitch Filter Enable */\r
+#define GPIO_GFER_P29               (0x1u << 29) /**< \brief (GPIO_GFER) Glitch Filter Enable */\r
+#define GPIO_GFER_P30               (0x1u << 30) /**< \brief (GPIO_GFER) Glitch Filter Enable */\r
+#define GPIO_GFER_P31               (0x1u << 31) /**< \brief (GPIO_GFER) Glitch Filter Enable */\r
+/* -------- GPIO_GFERS : (GPIO Offset: 0x0C4) Port Glitch Filter Enable Register - Set -------- */\r
+#define GPIO_GFERS_P0               (0x1u <<  0) /**< \brief (GPIO_GFERS) Glitch Filter Enable */\r
+#define GPIO_GFERS_P1               (0x1u <<  1) /**< \brief (GPIO_GFERS) Glitch Filter Enable */\r
+#define GPIO_GFERS_P2               (0x1u <<  2) /**< \brief (GPIO_GFERS) Glitch Filter Enable */\r
+#define GPIO_GFERS_P3               (0x1u <<  3) /**< \brief (GPIO_GFERS) Glitch Filter Enable */\r
+#define GPIO_GFERS_P4               (0x1u <<  4) /**< \brief (GPIO_GFERS) Glitch Filter Enable */\r
+#define GPIO_GFERS_P5               (0x1u <<  5) /**< \brief (GPIO_GFERS) Glitch Filter Enable */\r
+#define GPIO_GFERS_P6               (0x1u <<  6) /**< \brief (GPIO_GFERS) Glitch Filter Enable */\r
+#define GPIO_GFERS_P7               (0x1u <<  7) /**< \brief (GPIO_GFERS) Glitch Filter Enable */\r
+#define GPIO_GFERS_P8               (0x1u <<  8) /**< \brief (GPIO_GFERS) Glitch Filter Enable */\r
+#define GPIO_GFERS_P9               (0x1u <<  9) /**< \brief (GPIO_GFERS) Glitch Filter Enable */\r
+#define GPIO_GFERS_P10              (0x1u << 10) /**< \brief (GPIO_GFERS) Glitch Filter Enable */\r
+#define GPIO_GFERS_P11              (0x1u << 11) /**< \brief (GPIO_GFERS) Glitch Filter Enable */\r
+#define GPIO_GFERS_P12              (0x1u << 12) /**< \brief (GPIO_GFERS) Glitch Filter Enable */\r
+#define GPIO_GFERS_P13              (0x1u << 13) /**< \brief (GPIO_GFERS) Glitch Filter Enable */\r
+#define GPIO_GFERS_P14              (0x1u << 14) /**< \brief (GPIO_GFERS) Glitch Filter Enable */\r
+#define GPIO_GFERS_P15              (0x1u << 15) /**< \brief (GPIO_GFERS) Glitch Filter Enable */\r
+#define GPIO_GFERS_P16              (0x1u << 16) /**< \brief (GPIO_GFERS) Glitch Filter Enable */\r
+#define GPIO_GFERS_P17              (0x1u << 17) /**< \brief (GPIO_GFERS) Glitch Filter Enable */\r
+#define GPIO_GFERS_P18              (0x1u << 18) /**< \brief (GPIO_GFERS) Glitch Filter Enable */\r
+#define GPIO_GFERS_P19              (0x1u << 19) /**< \brief (GPIO_GFERS) Glitch Filter Enable */\r
+#define GPIO_GFERS_P20              (0x1u << 20) /**< \brief (GPIO_GFERS) Glitch Filter Enable */\r
+#define GPIO_GFERS_P21              (0x1u << 21) /**< \brief (GPIO_GFERS) Glitch Filter Enable */\r
+#define GPIO_GFERS_P22              (0x1u << 22) /**< \brief (GPIO_GFERS) Glitch Filter Enable */\r
+#define GPIO_GFERS_P23              (0x1u << 23) /**< \brief (GPIO_GFERS) Glitch Filter Enable */\r
+#define GPIO_GFERS_P24              (0x1u << 24) /**< \brief (GPIO_GFERS) Glitch Filter Enable */\r
+#define GPIO_GFERS_P25              (0x1u << 25) /**< \brief (GPIO_GFERS) Glitch Filter Enable */\r
+#define GPIO_GFERS_P26              (0x1u << 26) /**< \brief (GPIO_GFERS) Glitch Filter Enable */\r
+#define GPIO_GFERS_P27              (0x1u << 27) /**< \brief (GPIO_GFERS) Glitch Filter Enable */\r
+#define GPIO_GFERS_P28              (0x1u << 28) /**< \brief (GPIO_GFERS) Glitch Filter Enable */\r
+#define GPIO_GFERS_P29              (0x1u << 29) /**< \brief (GPIO_GFERS) Glitch Filter Enable */\r
+#define GPIO_GFERS_P30              (0x1u << 30) /**< \brief (GPIO_GFERS) Glitch Filter Enable */\r
+#define GPIO_GFERS_P31              (0x1u << 31) /**< \brief (GPIO_GFERS) Glitch Filter Enable */\r
+/* -------- GPIO_GFERC : (GPIO Offset: 0x0C8) Port Glitch Filter Enable Register - Clear -------- */\r
+#define GPIO_GFERC_P0               (0x1u <<  0) /**< \brief (GPIO_GFERC) Glitch Filter Enable */\r
+#define GPIO_GFERC_P1               (0x1u <<  1) /**< \brief (GPIO_GFERC) Glitch Filter Enable */\r
+#define GPIO_GFERC_P2               (0x1u <<  2) /**< \brief (GPIO_GFERC) Glitch Filter Enable */\r
+#define GPIO_GFERC_P3               (0x1u <<  3) /**< \brief (GPIO_GFERC) Glitch Filter Enable */\r
+#define GPIO_GFERC_P4               (0x1u <<  4) /**< \brief (GPIO_GFERC) Glitch Filter Enable */\r
+#define GPIO_GFERC_P5               (0x1u <<  5) /**< \brief (GPIO_GFERC) Glitch Filter Enable */\r
+#define GPIO_GFERC_P6               (0x1u <<  6) /**< \brief (GPIO_GFERC) Glitch Filter Enable */\r
+#define GPIO_GFERC_P7               (0x1u <<  7) /**< \brief (GPIO_GFERC) Glitch Filter Enable */\r
+#define GPIO_GFERC_P8               (0x1u <<  8) /**< \brief (GPIO_GFERC) Glitch Filter Enable */\r
+#define GPIO_GFERC_P9               (0x1u <<  9) /**< \brief (GPIO_GFERC) Glitch Filter Enable */\r
+#define GPIO_GFERC_P10              (0x1u << 10) /**< \brief (GPIO_GFERC) Glitch Filter Enable */\r
+#define GPIO_GFERC_P11              (0x1u << 11) /**< \brief (GPIO_GFERC) Glitch Filter Enable */\r
+#define GPIO_GFERC_P12              (0x1u << 12) /**< \brief (GPIO_GFERC) Glitch Filter Enable */\r
+#define GPIO_GFERC_P13              (0x1u << 13) /**< \brief (GPIO_GFERC) Glitch Filter Enable */\r
+#define GPIO_GFERC_P14              (0x1u << 14) /**< \brief (GPIO_GFERC) Glitch Filter Enable */\r
+#define GPIO_GFERC_P15              (0x1u << 15) /**< \brief (GPIO_GFERC) Glitch Filter Enable */\r
+#define GPIO_GFERC_P16              (0x1u << 16) /**< \brief (GPIO_GFERC) Glitch Filter Enable */\r
+#define GPIO_GFERC_P17              (0x1u << 17) /**< \brief (GPIO_GFERC) Glitch Filter Enable */\r
+#define GPIO_GFERC_P18              (0x1u << 18) /**< \brief (GPIO_GFERC) Glitch Filter Enable */\r
+#define GPIO_GFERC_P19              (0x1u << 19) /**< \brief (GPIO_GFERC) Glitch Filter Enable */\r
+#define GPIO_GFERC_P20              (0x1u << 20) /**< \brief (GPIO_GFERC) Glitch Filter Enable */\r
+#define GPIO_GFERC_P21              (0x1u << 21) /**< \brief (GPIO_GFERC) Glitch Filter Enable */\r
+#define GPIO_GFERC_P22              (0x1u << 22) /**< \brief (GPIO_GFERC) Glitch Filter Enable */\r
+#define GPIO_GFERC_P23              (0x1u << 23) /**< \brief (GPIO_GFERC) Glitch Filter Enable */\r
+#define GPIO_GFERC_P24              (0x1u << 24) /**< \brief (GPIO_GFERC) Glitch Filter Enable */\r
+#define GPIO_GFERC_P25              (0x1u << 25) /**< \brief (GPIO_GFERC) Glitch Filter Enable */\r
+#define GPIO_GFERC_P26              (0x1u << 26) /**< \brief (GPIO_GFERC) Glitch Filter Enable */\r
+#define GPIO_GFERC_P27              (0x1u << 27) /**< \brief (GPIO_GFERC) Glitch Filter Enable */\r
+#define GPIO_GFERC_P28              (0x1u << 28) /**< \brief (GPIO_GFERC) Glitch Filter Enable */\r
+#define GPIO_GFERC_P29              (0x1u << 29) /**< \brief (GPIO_GFERC) Glitch Filter Enable */\r
+#define GPIO_GFERC_P30              (0x1u << 30) /**< \brief (GPIO_GFERC) Glitch Filter Enable */\r
+#define GPIO_GFERC_P31              (0x1u << 31) /**< \brief (GPIO_GFERC) Glitch Filter Enable */\r
+/* -------- GPIO_GFERT : (GPIO Offset: 0x0CC) Port Glitch Filter Enable Register - Toggle -------- */\r
+#define GPIO_GFERT_P0               (0x1u <<  0) /**< \brief (GPIO_GFERT) Glitch Filter Enable */\r
+#define GPIO_GFERT_P1               (0x1u <<  1) /**< \brief (GPIO_GFERT) Glitch Filter Enable */\r
+#define GPIO_GFERT_P2               (0x1u <<  2) /**< \brief (GPIO_GFERT) Glitch Filter Enable */\r
+#define GPIO_GFERT_P3               (0x1u <<  3) /**< \brief (GPIO_GFERT) Glitch Filter Enable */\r
+#define GPIO_GFERT_P4               (0x1u <<  4) /**< \brief (GPIO_GFERT) Glitch Filter Enable */\r
+#define GPIO_GFERT_P5               (0x1u <<  5) /**< \brief (GPIO_GFERT) Glitch Filter Enable */\r
+#define GPIO_GFERT_P6               (0x1u <<  6) /**< \brief (GPIO_GFERT) Glitch Filter Enable */\r
+#define GPIO_GFERT_P7               (0x1u <<  7) /**< \brief (GPIO_GFERT) Glitch Filter Enable */\r
+#define GPIO_GFERT_P8               (0x1u <<  8) /**< \brief (GPIO_GFERT) Glitch Filter Enable */\r
+#define GPIO_GFERT_P9               (0x1u <<  9) /**< \brief (GPIO_GFERT) Glitch Filter Enable */\r
+#define GPIO_GFERT_P10              (0x1u << 10) /**< \brief (GPIO_GFERT) Glitch Filter Enable */\r
+#define GPIO_GFERT_P11              (0x1u << 11) /**< \brief (GPIO_GFERT) Glitch Filter Enable */\r
+#define GPIO_GFERT_P12              (0x1u << 12) /**< \brief (GPIO_GFERT) Glitch Filter Enable */\r
+#define GPIO_GFERT_P13              (0x1u << 13) /**< \brief (GPIO_GFERT) Glitch Filter Enable */\r
+#define GPIO_GFERT_P14              (0x1u << 14) /**< \brief (GPIO_GFERT) Glitch Filter Enable */\r
+#define GPIO_GFERT_P15              (0x1u << 15) /**< \brief (GPIO_GFERT) Glitch Filter Enable */\r
+#define GPIO_GFERT_P16              (0x1u << 16) /**< \brief (GPIO_GFERT) Glitch Filter Enable */\r
+#define GPIO_GFERT_P17              (0x1u << 17) /**< \brief (GPIO_GFERT) Glitch Filter Enable */\r
+#define GPIO_GFERT_P18              (0x1u << 18) /**< \brief (GPIO_GFERT) Glitch Filter Enable */\r
+#define GPIO_GFERT_P19              (0x1u << 19) /**< \brief (GPIO_GFERT) Glitch Filter Enable */\r
+#define GPIO_GFERT_P20              (0x1u << 20) /**< \brief (GPIO_GFERT) Glitch Filter Enable */\r
+#define GPIO_GFERT_P21              (0x1u << 21) /**< \brief (GPIO_GFERT) Glitch Filter Enable */\r
+#define GPIO_GFERT_P22              (0x1u << 22) /**< \brief (GPIO_GFERT) Glitch Filter Enable */\r
+#define GPIO_GFERT_P23              (0x1u << 23) /**< \brief (GPIO_GFERT) Glitch Filter Enable */\r
+#define GPIO_GFERT_P24              (0x1u << 24) /**< \brief (GPIO_GFERT) Glitch Filter Enable */\r
+#define GPIO_GFERT_P25              (0x1u << 25) /**< \brief (GPIO_GFERT) Glitch Filter Enable */\r
+#define GPIO_GFERT_P26              (0x1u << 26) /**< \brief (GPIO_GFERT) Glitch Filter Enable */\r
+#define GPIO_GFERT_P27              (0x1u << 27) /**< \brief (GPIO_GFERT) Glitch Filter Enable */\r
+#define GPIO_GFERT_P28              (0x1u << 28) /**< \brief (GPIO_GFERT) Glitch Filter Enable */\r
+#define GPIO_GFERT_P29              (0x1u << 29) /**< \brief (GPIO_GFERT) Glitch Filter Enable */\r
+#define GPIO_GFERT_P30              (0x1u << 30) /**< \brief (GPIO_GFERT) Glitch Filter Enable */\r
+#define GPIO_GFERT_P31              (0x1u << 31) /**< \brief (GPIO_GFERT) Glitch Filter Enable */\r
+/* -------- GPIO_IFR : (GPIO Offset: 0x0D0) Port Interrupt Flag Register -------- */\r
+#define GPIO_IFR_P0                 (0x1u <<  0) /**< \brief (GPIO_IFR) Interrupt Flag */\r
+#define GPIO_IFR_P1                 (0x1u <<  1) /**< \brief (GPIO_IFR) Interrupt Flag */\r
+#define GPIO_IFR_P2                 (0x1u <<  2) /**< \brief (GPIO_IFR) Interrupt Flag */\r
+#define GPIO_IFR_P3                 (0x1u <<  3) /**< \brief (GPIO_IFR) Interrupt Flag */\r
+#define GPIO_IFR_P4                 (0x1u <<  4) /**< \brief (GPIO_IFR) Interrupt Flag */\r
+#define GPIO_IFR_P5                 (0x1u <<  5) /**< \brief (GPIO_IFR) Interrupt Flag */\r
+#define GPIO_IFR_P6                 (0x1u <<  6) /**< \brief (GPIO_IFR) Interrupt Flag */\r
+#define GPIO_IFR_P7                 (0x1u <<  7) /**< \brief (GPIO_IFR) Interrupt Flag */\r
+#define GPIO_IFR_P8                 (0x1u <<  8) /**< \brief (GPIO_IFR) Interrupt Flag */\r
+#define GPIO_IFR_P9                 (0x1u <<  9) /**< \brief (GPIO_IFR) Interrupt Flag */\r
+#define GPIO_IFR_P10                (0x1u << 10) /**< \brief (GPIO_IFR) Interrupt Flag */\r
+#define GPIO_IFR_P11                (0x1u << 11) /**< \brief (GPIO_IFR) Interrupt Flag */\r
+#define GPIO_IFR_P12                (0x1u << 12) /**< \brief (GPIO_IFR) Interrupt Flag */\r
+#define GPIO_IFR_P13                (0x1u << 13) /**< \brief (GPIO_IFR) Interrupt Flag */\r
+#define GPIO_IFR_P14                (0x1u << 14) /**< \brief (GPIO_IFR) Interrupt Flag */\r
+#define GPIO_IFR_P15                (0x1u << 15) /**< \brief (GPIO_IFR) Interrupt Flag */\r
+#define GPIO_IFR_P16                (0x1u << 16) /**< \brief (GPIO_IFR) Interrupt Flag */\r
+#define GPIO_IFR_P17                (0x1u << 17) /**< \brief (GPIO_IFR) Interrupt Flag */\r
+#define GPIO_IFR_P18                (0x1u << 18) /**< \brief (GPIO_IFR) Interrupt Flag */\r
+#define GPIO_IFR_P19                (0x1u << 19) /**< \brief (GPIO_IFR) Interrupt Flag */\r
+#define GPIO_IFR_P20                (0x1u << 20) /**< \brief (GPIO_IFR) Interrupt Flag */\r
+#define GPIO_IFR_P21                (0x1u << 21) /**< \brief (GPIO_IFR) Interrupt Flag */\r
+#define GPIO_IFR_P22                (0x1u << 22) /**< \brief (GPIO_IFR) Interrupt Flag */\r
+#define GPIO_IFR_P23                (0x1u << 23) /**< \brief (GPIO_IFR) Interrupt Flag */\r
+#define GPIO_IFR_P24                (0x1u << 24) /**< \brief (GPIO_IFR) Interrupt Flag */\r
+#define GPIO_IFR_P25                (0x1u << 25) /**< \brief (GPIO_IFR) Interrupt Flag */\r
+#define GPIO_IFR_P26                (0x1u << 26) /**< \brief (GPIO_IFR) Interrupt Flag */\r
+#define GPIO_IFR_P27                (0x1u << 27) /**< \brief (GPIO_IFR) Interrupt Flag */\r
+#define GPIO_IFR_P28                (0x1u << 28) /**< \brief (GPIO_IFR) Interrupt Flag */\r
+#define GPIO_IFR_P29                (0x1u << 29) /**< \brief (GPIO_IFR) Interrupt Flag */\r
+#define GPIO_IFR_P30                (0x1u << 30) /**< \brief (GPIO_IFR) Interrupt Flag */\r
+#define GPIO_IFR_P31                (0x1u << 31) /**< \brief (GPIO_IFR) Interrupt Flag */\r
+/* -------- GPIO_IFRC : (GPIO Offset: 0x0D8) Port Interrupt Flag Register - Clear -------- */\r
+#define GPIO_IFRC_P0                (0x1u <<  0) /**< \brief (GPIO_IFRC) Interrupt Flag */\r
+#define GPIO_IFRC_P1                (0x1u <<  1) /**< \brief (GPIO_IFRC) Interrupt Flag */\r
+#define GPIO_IFRC_P2                (0x1u <<  2) /**< \brief (GPIO_IFRC) Interrupt Flag */\r
+#define GPIO_IFRC_P3                (0x1u <<  3) /**< \brief (GPIO_IFRC) Interrupt Flag */\r
+#define GPIO_IFRC_P4                (0x1u <<  4) /**< \brief (GPIO_IFRC) Interrupt Flag */\r
+#define GPIO_IFRC_P5                (0x1u <<  5) /**< \brief (GPIO_IFRC) Interrupt Flag */\r
+#define GPIO_IFRC_P6                (0x1u <<  6) /**< \brief (GPIO_IFRC) Interrupt Flag */\r
+#define GPIO_IFRC_P7                (0x1u <<  7) /**< \brief (GPIO_IFRC) Interrupt Flag */\r
+#define GPIO_IFRC_P8                (0x1u <<  8) /**< \brief (GPIO_IFRC) Interrupt Flag */\r
+#define GPIO_IFRC_P9                (0x1u <<  9) /**< \brief (GPIO_IFRC) Interrupt Flag */\r
+#define GPIO_IFRC_P10               (0x1u << 10) /**< \brief (GPIO_IFRC) Interrupt Flag */\r
+#define GPIO_IFRC_P11               (0x1u << 11) /**< \brief (GPIO_IFRC) Interrupt Flag */\r
+#define GPIO_IFRC_P12               (0x1u << 12) /**< \brief (GPIO_IFRC) Interrupt Flag */\r
+#define GPIO_IFRC_P13               (0x1u << 13) /**< \brief (GPIO_IFRC) Interrupt Flag */\r
+#define GPIO_IFRC_P14               (0x1u << 14) /**< \brief (GPIO_IFRC) Interrupt Flag */\r
+#define GPIO_IFRC_P15               (0x1u << 15) /**< \brief (GPIO_IFRC) Interrupt Flag */\r
+#define GPIO_IFRC_P16               (0x1u << 16) /**< \brief (GPIO_IFRC) Interrupt Flag */\r
+#define GPIO_IFRC_P17               (0x1u << 17) /**< \brief (GPIO_IFRC) Interrupt Flag */\r
+#define GPIO_IFRC_P18               (0x1u << 18) /**< \brief (GPIO_IFRC) Interrupt Flag */\r
+#define GPIO_IFRC_P19               (0x1u << 19) /**< \brief (GPIO_IFRC) Interrupt Flag */\r
+#define GPIO_IFRC_P20               (0x1u << 20) /**< \brief (GPIO_IFRC) Interrupt Flag */\r
+#define GPIO_IFRC_P21               (0x1u << 21) /**< \brief (GPIO_IFRC) Interrupt Flag */\r
+#define GPIO_IFRC_P22               (0x1u << 22) /**< \brief (GPIO_IFRC) Interrupt Flag */\r
+#define GPIO_IFRC_P23               (0x1u << 23) /**< \brief (GPIO_IFRC) Interrupt Flag */\r
+#define GPIO_IFRC_P24               (0x1u << 24) /**< \brief (GPIO_IFRC) Interrupt Flag */\r
+#define GPIO_IFRC_P25               (0x1u << 25) /**< \brief (GPIO_IFRC) Interrupt Flag */\r
+#define GPIO_IFRC_P26               (0x1u << 26) /**< \brief (GPIO_IFRC) Interrupt Flag */\r
+#define GPIO_IFRC_P27               (0x1u << 27) /**< \brief (GPIO_IFRC) Interrupt Flag */\r
+#define GPIO_IFRC_P28               (0x1u << 28) /**< \brief (GPIO_IFRC) Interrupt Flag */\r
+#define GPIO_IFRC_P29               (0x1u << 29) /**< \brief (GPIO_IFRC) Interrupt Flag */\r
+#define GPIO_IFRC_P30               (0x1u << 30) /**< \brief (GPIO_IFRC) Interrupt Flag */\r
+#define GPIO_IFRC_P31               (0x1u << 31) /**< \brief (GPIO_IFRC) Interrupt Flag */\r
+/* -------- GPIO_ODMER : (GPIO Offset: 0x0E0) Port Open Drain Mode Register -------- */\r
+#define GPIO_ODMER_P0               (0x1u <<  0) /**< \brief (GPIO_ODMER) Open Drain Mode Enable */\r
+#define GPIO_ODMER_P1               (0x1u <<  1) /**< \brief (GPIO_ODMER) Open Drain Mode Enable */\r
+#define GPIO_ODMER_P2               (0x1u <<  2) /**< \brief (GPIO_ODMER) Open Drain Mode Enable */\r
+#define GPIO_ODMER_P3               (0x1u <<  3) /**< \brief (GPIO_ODMER) Open Drain Mode Enable */\r
+#define GPIO_ODMER_P4               (0x1u <<  4) /**< \brief (GPIO_ODMER) Open Drain Mode Enable */\r
+#define GPIO_ODMER_P5               (0x1u <<  5) /**< \brief (GPIO_ODMER) Open Drain Mode Enable */\r
+#define GPIO_ODMER_P6               (0x1u <<  6) /**< \brief (GPIO_ODMER) Open Drain Mode Enable */\r
+#define GPIO_ODMER_P7               (0x1u <<  7) /**< \brief (GPIO_ODMER) Open Drain Mode Enable */\r
+#define GPIO_ODMER_P8               (0x1u <<  8) /**< \brief (GPIO_ODMER) Open Drain Mode Enable */\r
+#define GPIO_ODMER_P9               (0x1u <<  9) /**< \brief (GPIO_ODMER) Open Drain Mode Enable */\r
+#define GPIO_ODMER_P10              (0x1u << 10) /**< \brief (GPIO_ODMER) Open Drain Mode Enable */\r
+#define GPIO_ODMER_P11              (0x1u << 11) /**< \brief (GPIO_ODMER) Open Drain Mode Enable */\r
+#define GPIO_ODMER_P12              (0x1u << 12) /**< \brief (GPIO_ODMER) Open Drain Mode Enable */\r
+#define GPIO_ODMER_P13              (0x1u << 13) /**< \brief (GPIO_ODMER) Open Drain Mode Enable */\r
+#define GPIO_ODMER_P14              (0x1u << 14) /**< \brief (GPIO_ODMER) Open Drain Mode Enable */\r
+#define GPIO_ODMER_P15              (0x1u << 15) /**< \brief (GPIO_ODMER) Open Drain Mode Enable */\r
+#define GPIO_ODMER_P16              (0x1u << 16) /**< \brief (GPIO_ODMER) Open Drain Mode Enable */\r
+#define GPIO_ODMER_P17              (0x1u << 17) /**< \brief (GPIO_ODMER) Open Drain Mode Enable */\r
+#define GPIO_ODMER_P18              (0x1u << 18) /**< \brief (GPIO_ODMER) Open Drain Mode Enable */\r
+#define GPIO_ODMER_P19              (0x1u << 19) /**< \brief (GPIO_ODMER) Open Drain Mode Enable */\r
+#define GPIO_ODMER_P20              (0x1u << 20) /**< \brief (GPIO_ODMER) Open Drain Mode Enable */\r
+#define GPIO_ODMER_P21              (0x1u << 21) /**< \brief (GPIO_ODMER) Open Drain Mode Enable */\r
+#define GPIO_ODMER_P22              (0x1u << 22) /**< \brief (GPIO_ODMER) Open Drain Mode Enable */\r
+#define GPIO_ODMER_P23              (0x1u << 23) /**< \brief (GPIO_ODMER) Open Drain Mode Enable */\r
+#define GPIO_ODMER_P24              (0x1u << 24) /**< \brief (GPIO_ODMER) Open Drain Mode Enable */\r
+#define GPIO_ODMER_P25              (0x1u << 25) /**< \brief (GPIO_ODMER) Open Drain Mode Enable */\r
+#define GPIO_ODMER_P26              (0x1u << 26) /**< \brief (GPIO_ODMER) Open Drain Mode Enable */\r
+#define GPIO_ODMER_P27              (0x1u << 27) /**< \brief (GPIO_ODMER) Open Drain Mode Enable */\r
+#define GPIO_ODMER_P28              (0x1u << 28) /**< \brief (GPIO_ODMER) Open Drain Mode Enable */\r
+#define GPIO_ODMER_P29              (0x1u << 29) /**< \brief (GPIO_ODMER) Open Drain Mode Enable */\r
+#define GPIO_ODMER_P30              (0x1u << 30) /**< \brief (GPIO_ODMER) Open Drain Mode Enable */\r
+#define GPIO_ODMER_P31              (0x1u << 31) /**< \brief (GPIO_ODMER) Open Drain Mode Enable */\r
+/* -------- GPIO_ODMERS : (GPIO Offset: 0x0E4) Port Open Drain Mode Register - Set -------- */\r
+#define GPIO_ODMERS_P0              (0x1u <<  0) /**< \brief (GPIO_ODMERS) Open Drain Mode Enable */\r
+#define GPIO_ODMERS_P1              (0x1u <<  1) /**< \brief (GPIO_ODMERS) Open Drain Mode Enable */\r
+#define GPIO_ODMERS_P2              (0x1u <<  2) /**< \brief (GPIO_ODMERS) Open Drain Mode Enable */\r
+#define GPIO_ODMERS_P3              (0x1u <<  3) /**< \brief (GPIO_ODMERS) Open Drain Mode Enable */\r
+#define GPIO_ODMERS_P4              (0x1u <<  4) /**< \brief (GPIO_ODMERS) Open Drain Mode Enable */\r
+#define GPIO_ODMERS_P5              (0x1u <<  5) /**< \brief (GPIO_ODMERS) Open Drain Mode Enable */\r
+#define GPIO_ODMERS_P6              (0x1u <<  6) /**< \brief (GPIO_ODMERS) Open Drain Mode Enable */\r
+#define GPIO_ODMERS_P7              (0x1u <<  7) /**< \brief (GPIO_ODMERS) Open Drain Mode Enable */\r
+#define GPIO_ODMERS_P8              (0x1u <<  8) /**< \brief (GPIO_ODMERS) Open Drain Mode Enable */\r
+#define GPIO_ODMERS_P9              (0x1u <<  9) /**< \brief (GPIO_ODMERS) Open Drain Mode Enable */\r
+#define GPIO_ODMERS_P10             (0x1u << 10) /**< \brief (GPIO_ODMERS) Open Drain Mode Enable */\r
+#define GPIO_ODMERS_P11             (0x1u << 11) /**< \brief (GPIO_ODMERS) Open Drain Mode Enable */\r
+#define GPIO_ODMERS_P12             (0x1u << 12) /**< \brief (GPIO_ODMERS) Open Drain Mode Enable */\r
+#define GPIO_ODMERS_P13             (0x1u << 13) /**< \brief (GPIO_ODMERS) Open Drain Mode Enable */\r
+#define GPIO_ODMERS_P14             (0x1u << 14) /**< \brief (GPIO_ODMERS) Open Drain Mode Enable */\r
+#define GPIO_ODMERS_P15             (0x1u << 15) /**< \brief (GPIO_ODMERS) Open Drain Mode Enable */\r
+#define GPIO_ODMERS_P16             (0x1u << 16) /**< \brief (GPIO_ODMERS) Open Drain Mode Enable */\r
+#define GPIO_ODMERS_P17             (0x1u << 17) /**< \brief (GPIO_ODMERS) Open Drain Mode Enable */\r
+#define GPIO_ODMERS_P18             (0x1u << 18) /**< \brief (GPIO_ODMERS) Open Drain Mode Enable */\r
+#define GPIO_ODMERS_P19             (0x1u << 19) /**< \brief (GPIO_ODMERS) Open Drain Mode Enable */\r
+#define GPIO_ODMERS_P20             (0x1u << 20) /**< \brief (GPIO_ODMERS) Open Drain Mode Enable */\r
+#define GPIO_ODMERS_P21             (0x1u << 21) /**< \brief (GPIO_ODMERS) Open Drain Mode Enable */\r
+#define GPIO_ODMERS_P22             (0x1u << 22) /**< \brief (GPIO_ODMERS) Open Drain Mode Enable */\r
+#define GPIO_ODMERS_P23             (0x1u << 23) /**< \brief (GPIO_ODMERS) Open Drain Mode Enable */\r
+#define GPIO_ODMERS_P24             (0x1u << 24) /**< \brief (GPIO_ODMERS) Open Drain Mode Enable */\r
+#define GPIO_ODMERS_P25             (0x1u << 25) /**< \brief (GPIO_ODMERS) Open Drain Mode Enable */\r
+#define GPIO_ODMERS_P26             (0x1u << 26) /**< \brief (GPIO_ODMERS) Open Drain Mode Enable */\r
+#define GPIO_ODMERS_P27             (0x1u << 27) /**< \brief (GPIO_ODMERS) Open Drain Mode Enable */\r
+#define GPIO_ODMERS_P28             (0x1u << 28) /**< \brief (GPIO_ODMERS) Open Drain Mode Enable */\r
+#define GPIO_ODMERS_P29             (0x1u << 29) /**< \brief (GPIO_ODMERS) Open Drain Mode Enable */\r
+#define GPIO_ODMERS_P30             (0x1u << 30) /**< \brief (GPIO_ODMERS) Open Drain Mode Enable */\r
+#define GPIO_ODMERS_P31             (0x1u << 31) /**< \brief (GPIO_ODMERS) Open Drain Mode Enable */\r
+/* -------- GPIO_ODMERC : (GPIO Offset: 0x0E8) Port Open Drain Mode Register - Clear -------- */\r
+#define GPIO_ODMERC_P0              (0x1u <<  0) /**< \brief (GPIO_ODMERC) Open Drain Mode Enable */\r
+#define GPIO_ODMERC_P1              (0x1u <<  1) /**< \brief (GPIO_ODMERC) Open Drain Mode Enable */\r
+#define GPIO_ODMERC_P2              (0x1u <<  2) /**< \brief (GPIO_ODMERC) Open Drain Mode Enable */\r
+#define GPIO_ODMERC_P3              (0x1u <<  3) /**< \brief (GPIO_ODMERC) Open Drain Mode Enable */\r
+#define GPIO_ODMERC_P4              (0x1u <<  4) /**< \brief (GPIO_ODMERC) Open Drain Mode Enable */\r
+#define GPIO_ODMERC_P5              (0x1u <<  5) /**< \brief (GPIO_ODMERC) Open Drain Mode Enable */\r
+#define GPIO_ODMERC_P6              (0x1u <<  6) /**< \brief (GPIO_ODMERC) Open Drain Mode Enable */\r
+#define GPIO_ODMERC_P7              (0x1u <<  7) /**< \brief (GPIO_ODMERC) Open Drain Mode Enable */\r
+#define GPIO_ODMERC_P8              (0x1u <<  8) /**< \brief (GPIO_ODMERC) Open Drain Mode Enable */\r
+#define GPIO_ODMERC_P9              (0x1u <<  9) /**< \brief (GPIO_ODMERC) Open Drain Mode Enable */\r
+#define GPIO_ODMERC_P10             (0x1u << 10) /**< \brief (GPIO_ODMERC) Open Drain Mode Enable */\r
+#define GPIO_ODMERC_P11             (0x1u << 11) /**< \brief (GPIO_ODMERC) Open Drain Mode Enable */\r
+#define GPIO_ODMERC_P12             (0x1u << 12) /**< \brief (GPIO_ODMERC) Open Drain Mode Enable */\r
+#define GPIO_ODMERC_P13             (0x1u << 13) /**< \brief (GPIO_ODMERC) Open Drain Mode Enable */\r
+#define GPIO_ODMERC_P14             (0x1u << 14) /**< \brief (GPIO_ODMERC) Open Drain Mode Enable */\r
+#define GPIO_ODMERC_P15             (0x1u << 15) /**< \brief (GPIO_ODMERC) Open Drain Mode Enable */\r
+#define GPIO_ODMERC_P16             (0x1u << 16) /**< \brief (GPIO_ODMERC) Open Drain Mode Enable */\r
+#define GPIO_ODMERC_P17             (0x1u << 17) /**< \brief (GPIO_ODMERC) Open Drain Mode Enable */\r
+#define GPIO_ODMERC_P18             (0x1u << 18) /**< \brief (GPIO_ODMERC) Open Drain Mode Enable */\r
+#define GPIO_ODMERC_P19             (0x1u << 19) /**< \brief (GPIO_ODMERC) Open Drain Mode Enable */\r
+#define GPIO_ODMERC_P20             (0x1u << 20) /**< \brief (GPIO_ODMERC) Open Drain Mode Enable */\r
+#define GPIO_ODMERC_P21             (0x1u << 21) /**< \brief (GPIO_ODMERC) Open Drain Mode Enable */\r
+#define GPIO_ODMERC_P22             (0x1u << 22) /**< \brief (GPIO_ODMERC) Open Drain Mode Enable */\r
+#define GPIO_ODMERC_P23             (0x1u << 23) /**< \brief (GPIO_ODMERC) Open Drain Mode Enable */\r
+#define GPIO_ODMERC_P24             (0x1u << 24) /**< \brief (GPIO_ODMERC) Open Drain Mode Enable */\r
+#define GPIO_ODMERC_P25             (0x1u << 25) /**< \brief (GPIO_ODMERC) Open Drain Mode Enable */\r
+#define GPIO_ODMERC_P26             (0x1u << 26) /**< \brief (GPIO_ODMERC) Open Drain Mode Enable */\r
+#define GPIO_ODMERC_P27             (0x1u << 27) /**< \brief (GPIO_ODMERC) Open Drain Mode Enable */\r
+#define GPIO_ODMERC_P28             (0x1u << 28) /**< \brief (GPIO_ODMERC) Open Drain Mode Enable */\r
+#define GPIO_ODMERC_P29             (0x1u << 29) /**< \brief (GPIO_ODMERC) Open Drain Mode Enable */\r
+#define GPIO_ODMERC_P30             (0x1u << 30) /**< \brief (GPIO_ODMERC) Open Drain Mode Enable */\r
+#define GPIO_ODMERC_P31             (0x1u << 31) /**< \brief (GPIO_ODMERC) Open Drain Mode Enable */\r
+/* -------- GPIO_ODMERT : (GPIO Offset: 0x0EC) Port Open Drain Mode Register - Toggle -------- */\r
+#define GPIO_ODMERT_P0              (0x1u <<  0) /**< \brief (GPIO_ODMERT) Open Drain Mode Enable */\r
+#define GPIO_ODMERT_P1              (0x1u <<  1) /**< \brief (GPIO_ODMERT) Open Drain Mode Enable */\r
+#define GPIO_ODMERT_P2              (0x1u <<  2) /**< \brief (GPIO_ODMERT) Open Drain Mode Enable */\r
+#define GPIO_ODMERT_P3              (0x1u <<  3) /**< \brief (GPIO_ODMERT) Open Drain Mode Enable */\r
+#define GPIO_ODMERT_P4              (0x1u <<  4) /**< \brief (GPIO_ODMERT) Open Drain Mode Enable */\r
+#define GPIO_ODMERT_P5              (0x1u <<  5) /**< \brief (GPIO_ODMERT) Open Drain Mode Enable */\r
+#define GPIO_ODMERT_P6              (0x1u <<  6) /**< \brief (GPIO_ODMERT) Open Drain Mode Enable */\r
+#define GPIO_ODMERT_P7              (0x1u <<  7) /**< \brief (GPIO_ODMERT) Open Drain Mode Enable */\r
+#define GPIO_ODMERT_P8              (0x1u <<  8) /**< \brief (GPIO_ODMERT) Open Drain Mode Enable */\r
+#define GPIO_ODMERT_P9              (0x1u <<  9) /**< \brief (GPIO_ODMERT) Open Drain Mode Enable */\r
+#define GPIO_ODMERT_P10             (0x1u << 10) /**< \brief (GPIO_ODMERT) Open Drain Mode Enable */\r
+#define GPIO_ODMERT_P11             (0x1u << 11) /**< \brief (GPIO_ODMERT) Open Drain Mode Enable */\r
+#define GPIO_ODMERT_P12             (0x1u << 12) /**< \brief (GPIO_ODMERT) Open Drain Mode Enable */\r
+#define GPIO_ODMERT_P13             (0x1u << 13) /**< \brief (GPIO_ODMERT) Open Drain Mode Enable */\r
+#define GPIO_ODMERT_P14             (0x1u << 14) /**< \brief (GPIO_ODMERT) Open Drain Mode Enable */\r
+#define GPIO_ODMERT_P15             (0x1u << 15) /**< \brief (GPIO_ODMERT) Open Drain Mode Enable */\r
+#define GPIO_ODMERT_P16             (0x1u << 16) /**< \brief (GPIO_ODMERT) Open Drain Mode Enable */\r
+#define GPIO_ODMERT_P17             (0x1u << 17) /**< \brief (GPIO_ODMERT) Open Drain Mode Enable */\r
+#define GPIO_ODMERT_P18             (0x1u << 18) /**< \brief (GPIO_ODMERT) Open Drain Mode Enable */\r
+#define GPIO_ODMERT_P19             (0x1u << 19) /**< \brief (GPIO_ODMERT) Open Drain Mode Enable */\r
+#define GPIO_ODMERT_P20             (0x1u << 20) /**< \brief (GPIO_ODMERT) Open Drain Mode Enable */\r
+#define GPIO_ODMERT_P21             (0x1u << 21) /**< \brief (GPIO_ODMERT) Open Drain Mode Enable */\r
+#define GPIO_ODMERT_P22             (0x1u << 22) /**< \brief (GPIO_ODMERT) Open Drain Mode Enable */\r
+#define GPIO_ODMERT_P23             (0x1u << 23) /**< \brief (GPIO_ODMERT) Open Drain Mode Enable */\r
+#define GPIO_ODMERT_P24             (0x1u << 24) /**< \brief (GPIO_ODMERT) Open Drain Mode Enable */\r
+#define GPIO_ODMERT_P25             (0x1u << 25) /**< \brief (GPIO_ODMERT) Open Drain Mode Enable */\r
+#define GPIO_ODMERT_P26             (0x1u << 26) /**< \brief (GPIO_ODMERT) Open Drain Mode Enable */\r
+#define GPIO_ODMERT_P27             (0x1u << 27) /**< \brief (GPIO_ODMERT) Open Drain Mode Enable */\r
+#define GPIO_ODMERT_P28             (0x1u << 28) /**< \brief (GPIO_ODMERT) Open Drain Mode Enable */\r
+#define GPIO_ODMERT_P29             (0x1u << 29) /**< \brief (GPIO_ODMERT) Open Drain Mode Enable */\r
+#define GPIO_ODMERT_P30             (0x1u << 30) /**< \brief (GPIO_ODMERT) Open Drain Mode Enable */\r
+#define GPIO_ODMERT_P31             (0x1u << 31) /**< \brief (GPIO_ODMERT) Open Drain Mode Enable */\r
+/* -------- GPIO_ODCR0 : (GPIO Offset: 0x100) Port Output Driving Capability Register 0 -------- */\r
+#define GPIO_ODCR0_P0               (0x1u <<  0) /**< \brief (GPIO_ODCR0) Output Driving Capability Register Bit 0 */\r
+#define GPIO_ODCR0_P1               (0x1u <<  1) /**< \brief (GPIO_ODCR0) Output Driving Capability Register Bit 0 */\r
+#define GPIO_ODCR0_P2               (0x1u <<  2) /**< \brief (GPIO_ODCR0) Output Driving Capability Register Bit 0 */\r
+#define GPIO_ODCR0_P3               (0x1u <<  3) /**< \brief (GPIO_ODCR0) Output Driving Capability Register Bit 0 */\r
+#define GPIO_ODCR0_P4               (0x1u <<  4) /**< \brief (GPIO_ODCR0) Output Driving Capability Register Bit 0 */\r
+#define GPIO_ODCR0_P5               (0x1u <<  5) /**< \brief (GPIO_ODCR0) Output Driving Capability Register Bit 0 */\r
+#define GPIO_ODCR0_P6               (0x1u <<  6) /**< \brief (GPIO_ODCR0) Output Driving Capability Register Bit 0 */\r
+#define GPIO_ODCR0_P7               (0x1u <<  7) /**< \brief (GPIO_ODCR0) Output Driving Capability Register Bit 0 */\r
+#define GPIO_ODCR0_P8               (0x1u <<  8) /**< \brief (GPIO_ODCR0) Output Driving Capability Register Bit 0 */\r
+#define GPIO_ODCR0_P9               (0x1u <<  9) /**< \brief (GPIO_ODCR0) Output Driving Capability Register Bit 0 */\r
+#define GPIO_ODCR0_P10              (0x1u << 10) /**< \brief (GPIO_ODCR0) Output Driving Capability Register Bit 0 */\r
+#define GPIO_ODCR0_P11              (0x1u << 11) /**< \brief (GPIO_ODCR0) Output Driving Capability Register Bit 0 */\r
+#define GPIO_ODCR0_P12              (0x1u << 12) /**< \brief (GPIO_ODCR0) Output Driving Capability Register Bit 0 */\r
+#define GPIO_ODCR0_P13              (0x1u << 13) /**< \brief (GPIO_ODCR0) Output Driving Capability Register Bit 0 */\r
+#define GPIO_ODCR0_P14              (0x1u << 14) /**< \brief (GPIO_ODCR0) Output Driving Capability Register Bit 0 */\r
+#define GPIO_ODCR0_P15              (0x1u << 15) /**< \brief (GPIO_ODCR0) Output Driving Capability Register Bit 0 */\r
+#define GPIO_ODCR0_P16              (0x1u << 16) /**< \brief (GPIO_ODCR0) Output Driving Capability Register Bit 0 */\r
+#define GPIO_ODCR0_P17              (0x1u << 17) /**< \brief (GPIO_ODCR0) Output Driving Capability Register Bit 0 */\r
+#define GPIO_ODCR0_P18              (0x1u << 18) /**< \brief (GPIO_ODCR0) Output Driving Capability Register Bit 0 */\r
+#define GPIO_ODCR0_P19              (0x1u << 19) /**< \brief (GPIO_ODCR0) Output Driving Capability Register Bit 0 */\r
+#define GPIO_ODCR0_P20              (0x1u << 20) /**< \brief (GPIO_ODCR0) Output Driving Capability Register Bit 0 */\r
+#define GPIO_ODCR0_P21              (0x1u << 21) /**< \brief (GPIO_ODCR0) Output Driving Capability Register Bit 0 */\r
+#define GPIO_ODCR0_P22              (0x1u << 22) /**< \brief (GPIO_ODCR0) Output Driving Capability Register Bit 0 */\r
+#define GPIO_ODCR0_P23              (0x1u << 23) /**< \brief (GPIO_ODCR0) Output Driving Capability Register Bit 0 */\r
+#define GPIO_ODCR0_P24              (0x1u << 24) /**< \brief (GPIO_ODCR0) Output Driving Capability Register Bit 0 */\r
+#define GPIO_ODCR0_P25              (0x1u << 25) /**< \brief (GPIO_ODCR0) Output Driving Capability Register Bit 0 */\r
+#define GPIO_ODCR0_P26              (0x1u << 26) /**< \brief (GPIO_ODCR0) Output Driving Capability Register Bit 0 */\r
+#define GPIO_ODCR0_P27              (0x1u << 27) /**< \brief (GPIO_ODCR0) Output Driving Capability Register Bit 0 */\r
+#define GPIO_ODCR0_P28              (0x1u << 28) /**< \brief (GPIO_ODCR0) Output Driving Capability Register Bit 0 */\r
+#define GPIO_ODCR0_P29              (0x1u << 29) /**< \brief (GPIO_ODCR0) Output Driving Capability Register Bit 0 */\r
+#define GPIO_ODCR0_P30              (0x1u << 30) /**< \brief (GPIO_ODCR0) Output Driving Capability Register Bit 0 */\r
+#define GPIO_ODCR0_P31              (0x1u << 31) /**< \brief (GPIO_ODCR0) Output Driving Capability Register Bit 0 */\r
+/* -------- GPIO_ODCR0S : (GPIO Offset: 0x104) Port Output Driving Capability Register 0 - Set -------- */\r
+#define GPIO_ODCR0S_P0              (0x1u <<  0) /**< \brief (GPIO_ODCR0S) Output Driving Capability Register Bit 0 */\r
+#define GPIO_ODCR0S_P1              (0x1u <<  1) /**< \brief (GPIO_ODCR0S) Output Driving Capability Register Bit 0 */\r
+#define GPIO_ODCR0S_P2              (0x1u <<  2) /**< \brief (GPIO_ODCR0S) Output Driving Capability Register Bit 0 */\r
+#define GPIO_ODCR0S_P3              (0x1u <<  3) /**< \brief (GPIO_ODCR0S) Output Driving Capability Register Bit 0 */\r
+#define GPIO_ODCR0S_P4              (0x1u <<  4) /**< \brief (GPIO_ODCR0S) Output Driving Capability Register Bit 0 */\r
+#define GPIO_ODCR0S_P5              (0x1u <<  5) /**< \brief (GPIO_ODCR0S) Output Driving Capability Register Bit 0 */\r
+#define GPIO_ODCR0S_P6              (0x1u <<  6) /**< \brief (GPIO_ODCR0S) Output Driving Capability Register Bit 0 */\r
+#define GPIO_ODCR0S_P7              (0x1u <<  7) /**< \brief (GPIO_ODCR0S) Output Driving Capability Register Bit 0 */\r
+#define GPIO_ODCR0S_P8              (0x1u <<  8) /**< \brief (GPIO_ODCR0S) Output Driving Capability Register Bit 0 */\r
+#define GPIO_ODCR0S_P9              (0x1u <<  9) /**< \brief (GPIO_ODCR0S) Output Driving Capability Register Bit 0 */\r
+#define GPIO_ODCR0S_P10             (0x1u << 10) /**< \brief (GPIO_ODCR0S) Output Driving Capability Register Bit 0 */\r
+#define GPIO_ODCR0S_P11             (0x1u << 11) /**< \brief (GPIO_ODCR0S) Output Driving Capability Register Bit 0 */\r
+#define GPIO_ODCR0S_P12             (0x1u << 12) /**< \brief (GPIO_ODCR0S) Output Driving Capability Register Bit 0 */\r
+#define GPIO_ODCR0S_P13             (0x1u << 13) /**< \brief (GPIO_ODCR0S) Output Driving Capability Register Bit 0 */\r
+#define GPIO_ODCR0S_P14             (0x1u << 14) /**< \brief (GPIO_ODCR0S) Output Driving Capability Register Bit 0 */\r
+#define GPIO_ODCR0S_P15             (0x1u << 15) /**< \brief (GPIO_ODCR0S) Output Driving Capability Register Bit 0 */\r
+#define GPIO_ODCR0S_P16             (0x1u << 16) /**< \brief (GPIO_ODCR0S) Output Driving Capability Register Bit 0 */\r
+#define GPIO_ODCR0S_P17             (0x1u << 17) /**< \brief (GPIO_ODCR0S) Output Driving Capability Register Bit 0 */\r
+#define GPIO_ODCR0S_P18             (0x1u << 18) /**< \brief (GPIO_ODCR0S) Output Driving Capability Register Bit 0 */\r
+#define GPIO_ODCR0S_P19             (0x1u << 19) /**< \brief (GPIO_ODCR0S) Output Driving Capability Register Bit 0 */\r
+#define GPIO_ODCR0S_P20             (0x1u << 20) /**< \brief (GPIO_ODCR0S) Output Driving Capability Register Bit 0 */\r
+#define GPIO_ODCR0S_P21             (0x1u << 21) /**< \brief (GPIO_ODCR0S) Output Driving Capability Register Bit 0 */\r
+#define GPIO_ODCR0S_P22             (0x1u << 22) /**< \brief (GPIO_ODCR0S) Output Driving Capability Register Bit 0 */\r
+#define GPIO_ODCR0S_P23             (0x1u << 23) /**< \brief (GPIO_ODCR0S) Output Driving Capability Register Bit 0 */\r
+#define GPIO_ODCR0S_P24             (0x1u << 24) /**< \brief (GPIO_ODCR0S) Output Driving Capability Register Bit 0 */\r
+#define GPIO_ODCR0S_P25             (0x1u << 25) /**< \brief (GPIO_ODCR0S) Output Driving Capability Register Bit 0 */\r
+#define GPIO_ODCR0S_P26             (0x1u << 26) /**< \brief (GPIO_ODCR0S) Output Driving Capability Register Bit 0 */\r
+#define GPIO_ODCR0S_P27             (0x1u << 27) /**< \brief (GPIO_ODCR0S) Output Driving Capability Register Bit 0 */\r
+#define GPIO_ODCR0S_P28             (0x1u << 28) /**< \brief (GPIO_ODCR0S) Output Driving Capability Register Bit 0 */\r
+#define GPIO_ODCR0S_P29             (0x1u << 29) /**< \brief (GPIO_ODCR0S) Output Driving Capability Register Bit 0 */\r
+#define GPIO_ODCR0S_P30             (0x1u << 30) /**< \brief (GPIO_ODCR0S) Output Driving Capability Register Bit 0 */\r
+#define GPIO_ODCR0S_P31             (0x1u << 31) /**< \brief (GPIO_ODCR0S) Output Driving Capability Register Bit 0 */\r
+/* -------- GPIO_ODCR0C : (GPIO Offset: 0x108) Port Output Driving Capability Register 0 - Clear -------- */\r
+#define GPIO_ODCR0C_P0              (0x1u <<  0) /**< \brief (GPIO_ODCR0C) Output Driving Capability Register Bit 0 */\r
+#define GPIO_ODCR0C_P1              (0x1u <<  1) /**< \brief (GPIO_ODCR0C) Output Driving Capability Register Bit 0 */\r
+#define GPIO_ODCR0C_P2              (0x1u <<  2) /**< \brief (GPIO_ODCR0C) Output Driving Capability Register Bit 0 */\r
+#define GPIO_ODCR0C_P3              (0x1u <<  3) /**< \brief (GPIO_ODCR0C) Output Driving Capability Register Bit 0 */\r
+#define GPIO_ODCR0C_P4              (0x1u <<  4) /**< \brief (GPIO_ODCR0C) Output Driving Capability Register Bit 0 */\r
+#define GPIO_ODCR0C_P5              (0x1u <<  5) /**< \brief (GPIO_ODCR0C) Output Driving Capability Register Bit 0 */\r
+#define GPIO_ODCR0C_P6              (0x1u <<  6) /**< \brief (GPIO_ODCR0C) Output Driving Capability Register Bit 0 */\r
+#define GPIO_ODCR0C_P7              (0x1u <<  7) /**< \brief (GPIO_ODCR0C) Output Driving Capability Register Bit 0 */\r
+#define GPIO_ODCR0C_P8              (0x1u <<  8) /**< \brief (GPIO_ODCR0C) Output Driving Capability Register Bit 0 */\r
+#define GPIO_ODCR0C_P9              (0x1u <<  9) /**< \brief (GPIO_ODCR0C) Output Driving Capability Register Bit 0 */\r
+#define GPIO_ODCR0C_P10             (0x1u << 10) /**< \brief (GPIO_ODCR0C) Output Driving Capability Register Bit 0 */\r
+#define GPIO_ODCR0C_P11             (0x1u << 11) /**< \brief (GPIO_ODCR0C) Output Driving Capability Register Bit 0 */\r
+#define GPIO_ODCR0C_P12             (0x1u << 12) /**< \brief (GPIO_ODCR0C) Output Driving Capability Register Bit 0 */\r
+#define GPIO_ODCR0C_P13             (0x1u << 13) /**< \brief (GPIO_ODCR0C) Output Driving Capability Register Bit 0 */\r
+#define GPIO_ODCR0C_P14             (0x1u << 14) /**< \brief (GPIO_ODCR0C) Output Driving Capability Register Bit 0 */\r
+#define GPIO_ODCR0C_P15             (0x1u << 15) /**< \brief (GPIO_ODCR0C) Output Driving Capability Register Bit 0 */\r
+#define GPIO_ODCR0C_P16             (0x1u << 16) /**< \brief (GPIO_ODCR0C) Output Driving Capability Register Bit 0 */\r
+#define GPIO_ODCR0C_P17             (0x1u << 17) /**< \brief (GPIO_ODCR0C) Output Driving Capability Register Bit 0 */\r
+#define GPIO_ODCR0C_P18             (0x1u << 18) /**< \brief (GPIO_ODCR0C) Output Driving Capability Register Bit 0 */\r
+#define GPIO_ODCR0C_P19             (0x1u << 19) /**< \brief (GPIO_ODCR0C) Output Driving Capability Register Bit 0 */\r
+#define GPIO_ODCR0C_P20             (0x1u << 20) /**< \brief (GPIO_ODCR0C) Output Driving Capability Register Bit 0 */\r
+#define GPIO_ODCR0C_P21             (0x1u << 21) /**< \brief (GPIO_ODCR0C) Output Driving Capability Register Bit 0 */\r
+#define GPIO_ODCR0C_P22             (0x1u << 22) /**< \brief (GPIO_ODCR0C) Output Driving Capability Register Bit 0 */\r
+#define GPIO_ODCR0C_P23             (0x1u << 23) /**< \brief (GPIO_ODCR0C) Output Driving Capability Register Bit 0 */\r
+#define GPIO_ODCR0C_P24             (0x1u << 24) /**< \brief (GPIO_ODCR0C) Output Driving Capability Register Bit 0 */\r
+#define GPIO_ODCR0C_P25             (0x1u << 25) /**< \brief (GPIO_ODCR0C) Output Driving Capability Register Bit 0 */\r
+#define GPIO_ODCR0C_P26             (0x1u << 26) /**< \brief (GPIO_ODCR0C) Output Driving Capability Register Bit 0 */\r
+#define GPIO_ODCR0C_P27             (0x1u << 27) /**< \brief (GPIO_ODCR0C) Output Driving Capability Register Bit 0 */\r
+#define GPIO_ODCR0C_P28             (0x1u << 28) /**< \brief (GPIO_ODCR0C) Output Driving Capability Register Bit 0 */\r
+#define GPIO_ODCR0C_P29             (0x1u << 29) /**< \brief (GPIO_ODCR0C) Output Driving Capability Register Bit 0 */\r
+#define GPIO_ODCR0C_P30             (0x1u << 30) /**< \brief (GPIO_ODCR0C) Output Driving Capability Register Bit 0 */\r
+#define GPIO_ODCR0C_P31             (0x1u << 31) /**< \brief (GPIO_ODCR0C) Output Driving Capability Register Bit 0 */\r
+/* -------- GPIO_ODCR0T : (GPIO Offset: 0x10C) Port Output Driving Capability Register 0 - Toggle -------- */\r
+#define GPIO_ODCR0T_P0              (0x1u <<  0) /**< \brief (GPIO_ODCR0T) Output Driving Capability Register Bit 0 */\r
+#define GPIO_ODCR0T_P1              (0x1u <<  1) /**< \brief (GPIO_ODCR0T) Output Driving Capability Register Bit 0 */\r
+#define GPIO_ODCR0T_P2              (0x1u <<  2) /**< \brief (GPIO_ODCR0T) Output Driving Capability Register Bit 0 */\r
+#define GPIO_ODCR0T_P3              (0x1u <<  3) /**< \brief (GPIO_ODCR0T) Output Driving Capability Register Bit 0 */\r
+#define GPIO_ODCR0T_P4              (0x1u <<  4) /**< \brief (GPIO_ODCR0T) Output Driving Capability Register Bit 0 */\r
+#define GPIO_ODCR0T_P5              (0x1u <<  5) /**< \brief (GPIO_ODCR0T) Output Driving Capability Register Bit 0 */\r
+#define GPIO_ODCR0T_P6              (0x1u <<  6) /**< \brief (GPIO_ODCR0T) Output Driving Capability Register Bit 0 */\r
+#define GPIO_ODCR0T_P7              (0x1u <<  7) /**< \brief (GPIO_ODCR0T) Output Driving Capability Register Bit 0 */\r
+#define GPIO_ODCR0T_P8              (0x1u <<  8) /**< \brief (GPIO_ODCR0T) Output Driving Capability Register Bit 0 */\r
+#define GPIO_ODCR0T_P9              (0x1u <<  9) /**< \brief (GPIO_ODCR0T) Output Driving Capability Register Bit 0 */\r
+#define GPIO_ODCR0T_P10             (0x1u << 10) /**< \brief (GPIO_ODCR0T) Output Driving Capability Register Bit 0 */\r
+#define GPIO_ODCR0T_P11             (0x1u << 11) /**< \brief (GPIO_ODCR0T) Output Driving Capability Register Bit 0 */\r
+#define GPIO_ODCR0T_P12             (0x1u << 12) /**< \brief (GPIO_ODCR0T) Output Driving Capability Register Bit 0 */\r
+#define GPIO_ODCR0T_P13             (0x1u << 13) /**< \brief (GPIO_ODCR0T) Output Driving Capability Register Bit 0 */\r
+#define GPIO_ODCR0T_P14             (0x1u << 14) /**< \brief (GPIO_ODCR0T) Output Driving Capability Register Bit 0 */\r
+#define GPIO_ODCR0T_P15             (0x1u << 15) /**< \brief (GPIO_ODCR0T) Output Driving Capability Register Bit 0 */\r
+#define GPIO_ODCR0T_P16             (0x1u << 16) /**< \brief (GPIO_ODCR0T) Output Driving Capability Register Bit 0 */\r
+#define GPIO_ODCR0T_P17             (0x1u << 17) /**< \brief (GPIO_ODCR0T) Output Driving Capability Register Bit 0 */\r
+#define GPIO_ODCR0T_P18             (0x1u << 18) /**< \brief (GPIO_ODCR0T) Output Driving Capability Register Bit 0 */\r
+#define GPIO_ODCR0T_P19             (0x1u << 19) /**< \brief (GPIO_ODCR0T) Output Driving Capability Register Bit 0 */\r
+#define GPIO_ODCR0T_P20             (0x1u << 20) /**< \brief (GPIO_ODCR0T) Output Driving Capability Register Bit 0 */\r
+#define GPIO_ODCR0T_P21             (0x1u << 21) /**< \brief (GPIO_ODCR0T) Output Driving Capability Register Bit 0 */\r
+#define GPIO_ODCR0T_P22             (0x1u << 22) /**< \brief (GPIO_ODCR0T) Output Driving Capability Register Bit 0 */\r
+#define GPIO_ODCR0T_P23             (0x1u << 23) /**< \brief (GPIO_ODCR0T) Output Driving Capability Register Bit 0 */\r
+#define GPIO_ODCR0T_P24             (0x1u << 24) /**< \brief (GPIO_ODCR0T) Output Driving Capability Register Bit 0 */\r
+#define GPIO_ODCR0T_P25             (0x1u << 25) /**< \brief (GPIO_ODCR0T) Output Driving Capability Register Bit 0 */\r
+#define GPIO_ODCR0T_P26             (0x1u << 26) /**< \brief (GPIO_ODCR0T) Output Driving Capability Register Bit 0 */\r
+#define GPIO_ODCR0T_P27             (0x1u << 27) /**< \brief (GPIO_ODCR0T) Output Driving Capability Register Bit 0 */\r
+#define GPIO_ODCR0T_P28             (0x1u << 28) /**< \brief (GPIO_ODCR0T) Output Driving Capability Register Bit 0 */\r
+#define GPIO_ODCR0T_P29             (0x1u << 29) /**< \brief (GPIO_ODCR0T) Output Driving Capability Register Bit 0 */\r
+#define GPIO_ODCR0T_P30             (0x1u << 30) /**< \brief (GPIO_ODCR0T) Output Driving Capability Register Bit 0 */\r
+#define GPIO_ODCR0T_P31             (0x1u << 31) /**< \brief (GPIO_ODCR0T) Output Driving Capability Register Bit 0 */\r
+/* -------- GPIO_ODCR1 : (GPIO Offset: 0x110) Port Output Driving Capability Register 1 -------- */\r
+#define GPIO_ODCR1_P0               (0x1u <<  0) /**< \brief (GPIO_ODCR1) Output Driving Capability Register Bit 1 */\r
+#define GPIO_ODCR1_P1               (0x1u <<  1) /**< \brief (GPIO_ODCR1) Output Driving Capability Register Bit 1 */\r
+#define GPIO_ODCR1_P2               (0x1u <<  2) /**< \brief (GPIO_ODCR1) Output Driving Capability Register Bit 1 */\r
+#define GPIO_ODCR1_P3               (0x1u <<  3) /**< \brief (GPIO_ODCR1) Output Driving Capability Register Bit 1 */\r
+#define GPIO_ODCR1_P4               (0x1u <<  4) /**< \brief (GPIO_ODCR1) Output Driving Capability Register Bit 1 */\r
+#define GPIO_ODCR1_P5               (0x1u <<  5) /**< \brief (GPIO_ODCR1) Output Driving Capability Register Bit 1 */\r
+#define GPIO_ODCR1_P6               (0x1u <<  6) /**< \brief (GPIO_ODCR1) Output Driving Capability Register Bit 1 */\r
+#define GPIO_ODCR1_P7               (0x1u <<  7) /**< \brief (GPIO_ODCR1) Output Driving Capability Register Bit 1 */\r
+#define GPIO_ODCR1_P8               (0x1u <<  8) /**< \brief (GPIO_ODCR1) Output Driving Capability Register Bit 1 */\r
+#define GPIO_ODCR1_P9               (0x1u <<  9) /**< \brief (GPIO_ODCR1) Output Driving Capability Register Bit 1 */\r
+#define GPIO_ODCR1_P10              (0x1u << 10) /**< \brief (GPIO_ODCR1) Output Driving Capability Register Bit 1 */\r
+#define GPIO_ODCR1_P11              (0x1u << 11) /**< \brief (GPIO_ODCR1) Output Driving Capability Register Bit 1 */\r
+#define GPIO_ODCR1_P12              (0x1u << 12) /**< \brief (GPIO_ODCR1) Output Driving Capability Register Bit 1 */\r
+#define GPIO_ODCR1_P13              (0x1u << 13) /**< \brief (GPIO_ODCR1) Output Driving Capability Register Bit 1 */\r
+#define GPIO_ODCR1_P14              (0x1u << 14) /**< \brief (GPIO_ODCR1) Output Driving Capability Register Bit 1 */\r
+#define GPIO_ODCR1_P15              (0x1u << 15) /**< \brief (GPIO_ODCR1) Output Driving Capability Register Bit 1 */\r
+#define GPIO_ODCR1_P16              (0x1u << 16) /**< \brief (GPIO_ODCR1) Output Driving Capability Register Bit 1 */\r
+#define GPIO_ODCR1_P17              (0x1u << 17) /**< \brief (GPIO_ODCR1) Output Driving Capability Register Bit 1 */\r
+#define GPIO_ODCR1_P18              (0x1u << 18) /**< \brief (GPIO_ODCR1) Output Driving Capability Register Bit 1 */\r
+#define GPIO_ODCR1_P19              (0x1u << 19) /**< \brief (GPIO_ODCR1) Output Driving Capability Register Bit 1 */\r
+#define GPIO_ODCR1_P20              (0x1u << 20) /**< \brief (GPIO_ODCR1) Output Driving Capability Register Bit 1 */\r
+#define GPIO_ODCR1_P21              (0x1u << 21) /**< \brief (GPIO_ODCR1) Output Driving Capability Register Bit 1 */\r
+#define GPIO_ODCR1_P22              (0x1u << 22) /**< \brief (GPIO_ODCR1) Output Driving Capability Register Bit 1 */\r
+#define GPIO_ODCR1_P23              (0x1u << 23) /**< \brief (GPIO_ODCR1) Output Driving Capability Register Bit 1 */\r
+#define GPIO_ODCR1_P24              (0x1u << 24) /**< \brief (GPIO_ODCR1) Output Driving Capability Register Bit 1 */\r
+#define GPIO_ODCR1_P25              (0x1u << 25) /**< \brief (GPIO_ODCR1) Output Driving Capability Register Bit 1 */\r
+#define GPIO_ODCR1_P26              (0x1u << 26) /**< \brief (GPIO_ODCR1) Output Driving Capability Register Bit 1 */\r
+#define GPIO_ODCR1_P27              (0x1u << 27) /**< \brief (GPIO_ODCR1) Output Driving Capability Register Bit 1 */\r
+#define GPIO_ODCR1_P28              (0x1u << 28) /**< \brief (GPIO_ODCR1) Output Driving Capability Register Bit 1 */\r
+#define GPIO_ODCR1_P29              (0x1u << 29) /**< \brief (GPIO_ODCR1) Output Driving Capability Register Bit 1 */\r
+#define GPIO_ODCR1_P30              (0x1u << 30) /**< \brief (GPIO_ODCR1) Output Driving Capability Register Bit 1 */\r
+#define GPIO_ODCR1_P31              (0x1u << 31) /**< \brief (GPIO_ODCR1) Output Driving Capability Register Bit 1 */\r
+/* -------- GPIO_ODCR1S : (GPIO Offset: 0x114) Port Output Driving Capability Register 1 - Set -------- */\r
+#define GPIO_ODCR1S_P0              (0x1u <<  0) /**< \brief (GPIO_ODCR1S) Output Driving Capability Register Bit 1 */\r
+#define GPIO_ODCR1S_P1              (0x1u <<  1) /**< \brief (GPIO_ODCR1S) Output Driving Capability Register Bit 1 */\r
+#define GPIO_ODCR1S_P2              (0x1u <<  2) /**< \brief (GPIO_ODCR1S) Output Driving Capability Register Bit 1 */\r
+#define GPIO_ODCR1S_P3              (0x1u <<  3) /**< \brief (GPIO_ODCR1S) Output Driving Capability Register Bit 1 */\r
+#define GPIO_ODCR1S_P4              (0x1u <<  4) /**< \brief (GPIO_ODCR1S) Output Driving Capability Register Bit 1 */\r
+#define GPIO_ODCR1S_P5              (0x1u <<  5) /**< \brief (GPIO_ODCR1S) Output Driving Capability Register Bit 1 */\r
+#define GPIO_ODCR1S_P6              (0x1u <<  6) /**< \brief (GPIO_ODCR1S) Output Driving Capability Register Bit 1 */\r
+#define GPIO_ODCR1S_P7              (0x1u <<  7) /**< \brief (GPIO_ODCR1S) Output Driving Capability Register Bit 1 */\r
+#define GPIO_ODCR1S_P8              (0x1u <<  8) /**< \brief (GPIO_ODCR1S) Output Driving Capability Register Bit 1 */\r
+#define GPIO_ODCR1S_P9              (0x1u <<  9) /**< \brief (GPIO_ODCR1S) Output Driving Capability Register Bit 1 */\r
+#define GPIO_ODCR1S_P10             (0x1u << 10) /**< \brief (GPIO_ODCR1S) Output Driving Capability Register Bit 1 */\r
+#define GPIO_ODCR1S_P11             (0x1u << 11) /**< \brief (GPIO_ODCR1S) Output Driving Capability Register Bit 1 */\r
+#define GPIO_ODCR1S_P12             (0x1u << 12) /**< \brief (GPIO_ODCR1S) Output Driving Capability Register Bit 1 */\r
+#define GPIO_ODCR1S_P13             (0x1u << 13) /**< \brief (GPIO_ODCR1S) Output Driving Capability Register Bit 1 */\r
+#define GPIO_ODCR1S_P14             (0x1u << 14) /**< \brief (GPIO_ODCR1S) Output Driving Capability Register Bit 1 */\r
+#define GPIO_ODCR1S_P15             (0x1u << 15) /**< \brief (GPIO_ODCR1S) Output Driving Capability Register Bit 1 */\r
+#define GPIO_ODCR1S_P16             (0x1u << 16) /**< \brief (GPIO_ODCR1S) Output Driving Capability Register Bit 1 */\r
+#define GPIO_ODCR1S_P17             (0x1u << 17) /**< \brief (GPIO_ODCR1S) Output Driving Capability Register Bit 1 */\r
+#define GPIO_ODCR1S_P18             (0x1u << 18) /**< \brief (GPIO_ODCR1S) Output Driving Capability Register Bit 1 */\r
+#define GPIO_ODCR1S_P19             (0x1u << 19) /**< \brief (GPIO_ODCR1S) Output Driving Capability Register Bit 1 */\r
+#define GPIO_ODCR1S_P20             (0x1u << 20) /**< \brief (GPIO_ODCR1S) Output Driving Capability Register Bit 1 */\r
+#define GPIO_ODCR1S_P21             (0x1u << 21) /**< \brief (GPIO_ODCR1S) Output Driving Capability Register Bit 1 */\r
+#define GPIO_ODCR1S_P22             (0x1u << 22) /**< \brief (GPIO_ODCR1S) Output Driving Capability Register Bit 1 */\r
+#define GPIO_ODCR1S_P23             (0x1u << 23) /**< \brief (GPIO_ODCR1S) Output Driving Capability Register Bit 1 */\r
+#define GPIO_ODCR1S_P24             (0x1u << 24) /**< \brief (GPIO_ODCR1S) Output Driving Capability Register Bit 1 */\r
+#define GPIO_ODCR1S_P25             (0x1u << 25) /**< \brief (GPIO_ODCR1S) Output Driving Capability Register Bit 1 */\r
+#define GPIO_ODCR1S_P26             (0x1u << 26) /**< \brief (GPIO_ODCR1S) Output Driving Capability Register Bit 1 */\r
+#define GPIO_ODCR1S_P27             (0x1u << 27) /**< \brief (GPIO_ODCR1S) Output Driving Capability Register Bit 1 */\r
+#define GPIO_ODCR1S_P28             (0x1u << 28) /**< \brief (GPIO_ODCR1S) Output Driving Capability Register Bit 1 */\r
+#define GPIO_ODCR1S_P29             (0x1u << 29) /**< \brief (GPIO_ODCR1S) Output Driving Capability Register Bit 1 */\r
+#define GPIO_ODCR1S_P30             (0x1u << 30) /**< \brief (GPIO_ODCR1S) Output Driving Capability Register Bit 1 */\r
+#define GPIO_ODCR1S_P31             (0x1u << 31) /**< \brief (GPIO_ODCR1S) Output Driving Capability Register Bit 1 */\r
+/* -------- GPIO_ODCR1C : (GPIO Offset: 0x118) Port Output Driving Capability Register 1 - Clear -------- */\r
+#define GPIO_ODCR1C_P0              (0x1u <<  0) /**< \brief (GPIO_ODCR1C) Output Driving Capability Register Bit 1 */\r
+#define GPIO_ODCR1C_P1              (0x1u <<  1) /**< \brief (GPIO_ODCR1C) Output Driving Capability Register Bit 1 */\r
+#define GPIO_ODCR1C_P2              (0x1u <<  2) /**< \brief (GPIO_ODCR1C) Output Driving Capability Register Bit 1 */\r
+#define GPIO_ODCR1C_P3              (0x1u <<  3) /**< \brief (GPIO_ODCR1C) Output Driving Capability Register Bit 1 */\r
+#define GPIO_ODCR1C_P4              (0x1u <<  4) /**< \brief (GPIO_ODCR1C) Output Driving Capability Register Bit 1 */\r
+#define GPIO_ODCR1C_P5              (0x1u <<  5) /**< \brief (GPIO_ODCR1C) Output Driving Capability Register Bit 1 */\r
+#define GPIO_ODCR1C_P6              (0x1u <<  6) /**< \brief (GPIO_ODCR1C) Output Driving Capability Register Bit 1 */\r
+#define GPIO_ODCR1C_P7              (0x1u <<  7) /**< \brief (GPIO_ODCR1C) Output Driving Capability Register Bit 1 */\r
+#define GPIO_ODCR1C_P8              (0x1u <<  8) /**< \brief (GPIO_ODCR1C) Output Driving Capability Register Bit 1 */\r
+#define GPIO_ODCR1C_P9              (0x1u <<  9) /**< \brief (GPIO_ODCR1C) Output Driving Capability Register Bit 1 */\r
+#define GPIO_ODCR1C_P10             (0x1u << 10) /**< \brief (GPIO_ODCR1C) Output Driving Capability Register Bit 1 */\r
+#define GPIO_ODCR1C_P11             (0x1u << 11) /**< \brief (GPIO_ODCR1C) Output Driving Capability Register Bit 1 */\r
+#define GPIO_ODCR1C_P12             (0x1u << 12) /**< \brief (GPIO_ODCR1C) Output Driving Capability Register Bit 1 */\r
+#define GPIO_ODCR1C_P13             (0x1u << 13) /**< \brief (GPIO_ODCR1C) Output Driving Capability Register Bit 1 */\r
+#define GPIO_ODCR1C_P14             (0x1u << 14) /**< \brief (GPIO_ODCR1C) Output Driving Capability Register Bit 1 */\r
+#define GPIO_ODCR1C_P15             (0x1u << 15) /**< \brief (GPIO_ODCR1C) Output Driving Capability Register Bit 1 */\r
+#define GPIO_ODCR1C_P16             (0x1u << 16) /**< \brief (GPIO_ODCR1C) Output Driving Capability Register Bit 1 */\r
+#define GPIO_ODCR1C_P17             (0x1u << 17) /**< \brief (GPIO_ODCR1C) Output Driving Capability Register Bit 1 */\r
+#define GPIO_ODCR1C_P18             (0x1u << 18) /**< \brief (GPIO_ODCR1C) Output Driving Capability Register Bit 1 */\r
+#define GPIO_ODCR1C_P19             (0x1u << 19) /**< \brief (GPIO_ODCR1C) Output Driving Capability Register Bit 1 */\r
+#define GPIO_ODCR1C_P20             (0x1u << 20) /**< \brief (GPIO_ODCR1C) Output Driving Capability Register Bit 1 */\r
+#define GPIO_ODCR1C_P21             (0x1u << 21) /**< \brief (GPIO_ODCR1C) Output Driving Capability Register Bit 1 */\r
+#define GPIO_ODCR1C_P22             (0x1u << 22) /**< \brief (GPIO_ODCR1C) Output Driving Capability Register Bit 1 */\r
+#define GPIO_ODCR1C_P23             (0x1u << 23) /**< \brief (GPIO_ODCR1C) Output Driving Capability Register Bit 1 */\r
+#define GPIO_ODCR1C_P24             (0x1u << 24) /**< \brief (GPIO_ODCR1C) Output Driving Capability Register Bit 1 */\r
+#define GPIO_ODCR1C_P25             (0x1u << 25) /**< \brief (GPIO_ODCR1C) Output Driving Capability Register Bit 1 */\r
+#define GPIO_ODCR1C_P26             (0x1u << 26) /**< \brief (GPIO_ODCR1C) Output Driving Capability Register Bit 1 */\r
+#define GPIO_ODCR1C_P27             (0x1u << 27) /**< \brief (GPIO_ODCR1C) Output Driving Capability Register Bit 1 */\r
+#define GPIO_ODCR1C_P28             (0x1u << 28) /**< \brief (GPIO_ODCR1C) Output Driving Capability Register Bit 1 */\r
+#define GPIO_ODCR1C_P29             (0x1u << 29) /**< \brief (GPIO_ODCR1C) Output Driving Capability Register Bit 1 */\r
+#define GPIO_ODCR1C_P30             (0x1u << 30) /**< \brief (GPIO_ODCR1C) Output Driving Capability Register Bit 1 */\r
+#define GPIO_ODCR1C_P31             (0x1u << 31) /**< \brief (GPIO_ODCR1C) Output Driving Capability Register Bit 1 */\r
+/* -------- GPIO_ODCR1T : (GPIO Offset: 0x11C) Port Output Driving Capability Register 1 - Toggle -------- */\r
+#define GPIO_ODCR1T_P0              (0x1u <<  0) /**< \brief (GPIO_ODCR1T) Output Driving Capability Register Bit 1 */\r
+#define GPIO_ODCR1T_P1              (0x1u <<  1) /**< \brief (GPIO_ODCR1T) Output Driving Capability Register Bit 1 */\r
+#define GPIO_ODCR1T_P2              (0x1u <<  2) /**< \brief (GPIO_ODCR1T) Output Driving Capability Register Bit 1 */\r
+#define GPIO_ODCR1T_P3              (0x1u <<  3) /**< \brief (GPIO_ODCR1T) Output Driving Capability Register Bit 1 */\r
+#define GPIO_ODCR1T_P4              (0x1u <<  4) /**< \brief (GPIO_ODCR1T) Output Driving Capability Register Bit 1 */\r
+#define GPIO_ODCR1T_P5              (0x1u <<  5) /**< \brief (GPIO_ODCR1T) Output Driving Capability Register Bit 1 */\r
+#define GPIO_ODCR1T_P6              (0x1u <<  6) /**< \brief (GPIO_ODCR1T) Output Driving Capability Register Bit 1 */\r
+#define GPIO_ODCR1T_P7              (0x1u <<  7) /**< \brief (GPIO_ODCR1T) Output Driving Capability Register Bit 1 */\r
+#define GPIO_ODCR1T_P8              (0x1u <<  8) /**< \brief (GPIO_ODCR1T) Output Driving Capability Register Bit 1 */\r
+#define GPIO_ODCR1T_P9              (0x1u <<  9) /**< \brief (GPIO_ODCR1T) Output Driving Capability Register Bit 1 */\r
+#define GPIO_ODCR1T_P10             (0x1u << 10) /**< \brief (GPIO_ODCR1T) Output Driving Capability Register Bit 1 */\r
+#define GPIO_ODCR1T_P11             (0x1u << 11) /**< \brief (GPIO_ODCR1T) Output Driving Capability Register Bit 1 */\r
+#define GPIO_ODCR1T_P12             (0x1u << 12) /**< \brief (GPIO_ODCR1T) Output Driving Capability Register Bit 1 */\r
+#define GPIO_ODCR1T_P13             (0x1u << 13) /**< \brief (GPIO_ODCR1T) Output Driving Capability Register Bit 1 */\r
+#define GPIO_ODCR1T_P14             (0x1u << 14) /**< \brief (GPIO_ODCR1T) Output Driving Capability Register Bit 1 */\r
+#define GPIO_ODCR1T_P15             (0x1u << 15) /**< \brief (GPIO_ODCR1T) Output Driving Capability Register Bit 1 */\r
+#define GPIO_ODCR1T_P16             (0x1u << 16) /**< \brief (GPIO_ODCR1T) Output Driving Capability Register Bit 1 */\r
+#define GPIO_ODCR1T_P17             (0x1u << 17) /**< \brief (GPIO_ODCR1T) Output Driving Capability Register Bit 1 */\r
+#define GPIO_ODCR1T_P18             (0x1u << 18) /**< \brief (GPIO_ODCR1T) Output Driving Capability Register Bit 1 */\r
+#define GPIO_ODCR1T_P19             (0x1u << 19) /**< \brief (GPIO_ODCR1T) Output Driving Capability Register Bit 1 */\r
+#define GPIO_ODCR1T_P20             (0x1u << 20) /**< \brief (GPIO_ODCR1T) Output Driving Capability Register Bit 1 */\r
+#define GPIO_ODCR1T_P21             (0x1u << 21) /**< \brief (GPIO_ODCR1T) Output Driving Capability Register Bit 1 */\r
+#define GPIO_ODCR1T_P22             (0x1u << 22) /**< \brief (GPIO_ODCR1T) Output Driving Capability Register Bit 1 */\r
+#define GPIO_ODCR1T_P23             (0x1u << 23) /**< \brief (GPIO_ODCR1T) Output Driving Capability Register Bit 1 */\r
+#define GPIO_ODCR1T_P24             (0x1u << 24) /**< \brief (GPIO_ODCR1T) Output Driving Capability Register Bit 1 */\r
+#define GPIO_ODCR1T_P25             (0x1u << 25) /**< \brief (GPIO_ODCR1T) Output Driving Capability Register Bit 1 */\r
+#define GPIO_ODCR1T_P26             (0x1u << 26) /**< \brief (GPIO_ODCR1T) Output Driving Capability Register Bit 1 */\r
+#define GPIO_ODCR1T_P27             (0x1u << 27) /**< \brief (GPIO_ODCR1T) Output Driving Capability Register Bit 1 */\r
+#define GPIO_ODCR1T_P28             (0x1u << 28) /**< \brief (GPIO_ODCR1T) Output Driving Capability Register Bit 1 */\r
+#define GPIO_ODCR1T_P29             (0x1u << 29) /**< \brief (GPIO_ODCR1T) Output Driving Capability Register Bit 1 */\r
+#define GPIO_ODCR1T_P30             (0x1u << 30) /**< \brief (GPIO_ODCR1T) Output Driving Capability Register Bit 1 */\r
+#define GPIO_ODCR1T_P31             (0x1u << 31) /**< \brief (GPIO_ODCR1T) Output Driving Capability Register Bit 1 */\r
+/* -------- GPIO_OSRR0 : (GPIO Offset: 0x130) Port Output Slew Rate Register 0 -------- */\r
+#define GPIO_OSRR0_P0               (0x1u <<  0) /**< \brief (GPIO_OSRR0) Output Slew Rate Control Enable */\r
+#define GPIO_OSRR0_P1               (0x1u <<  1) /**< \brief (GPIO_OSRR0) Output Slew Rate Control Enable */\r
+#define GPIO_OSRR0_P2               (0x1u <<  2) /**< \brief (GPIO_OSRR0) Output Slew Rate Control Enable */\r
+#define GPIO_OSRR0_P3               (0x1u <<  3) /**< \brief (GPIO_OSRR0) Output Slew Rate Control Enable */\r
+#define GPIO_OSRR0_P4               (0x1u <<  4) /**< \brief (GPIO_OSRR0) Output Slew Rate Control Enable */\r
+#define GPIO_OSRR0_P5               (0x1u <<  5) /**< \brief (GPIO_OSRR0) Output Slew Rate Control Enable */\r
+#define GPIO_OSRR0_P6               (0x1u <<  6) /**< \brief (GPIO_OSRR0) Output Slew Rate Control Enable */\r
+#define GPIO_OSRR0_P7               (0x1u <<  7) /**< \brief (GPIO_OSRR0) Output Slew Rate Control Enable */\r
+#define GPIO_OSRR0_P8               (0x1u <<  8) /**< \brief (GPIO_OSRR0) Output Slew Rate Control Enable */\r
+#define GPIO_OSRR0_P9               (0x1u <<  9) /**< \brief (GPIO_OSRR0) Output Slew Rate Control Enable */\r
+#define GPIO_OSRR0_P10              (0x1u << 10) /**< \brief (GPIO_OSRR0) Output Slew Rate Control Enable */\r
+#define GPIO_OSRR0_P11              (0x1u << 11) /**< \brief (GPIO_OSRR0) Output Slew Rate Control Enable */\r
+#define GPIO_OSRR0_P12              (0x1u << 12) /**< \brief (GPIO_OSRR0) Output Slew Rate Control Enable */\r
+#define GPIO_OSRR0_P13              (0x1u << 13) /**< \brief (GPIO_OSRR0) Output Slew Rate Control Enable */\r
+#define GPIO_OSRR0_P14              (0x1u << 14) /**< \brief (GPIO_OSRR0) Output Slew Rate Control Enable */\r
+#define GPIO_OSRR0_P15              (0x1u << 15) /**< \brief (GPIO_OSRR0) Output Slew Rate Control Enable */\r
+#define GPIO_OSRR0_P16              (0x1u << 16) /**< \brief (GPIO_OSRR0) Output Slew Rate Control Enable */\r
+#define GPIO_OSRR0_P17              (0x1u << 17) /**< \brief (GPIO_OSRR0) Output Slew Rate Control Enable */\r
+#define GPIO_OSRR0_P18              (0x1u << 18) /**< \brief (GPIO_OSRR0) Output Slew Rate Control Enable */\r
+#define GPIO_OSRR0_P19              (0x1u << 19) /**< \brief (GPIO_OSRR0) Output Slew Rate Control Enable */\r
+#define GPIO_OSRR0_P20              (0x1u << 20) /**< \brief (GPIO_OSRR0) Output Slew Rate Control Enable */\r
+#define GPIO_OSRR0_P21              (0x1u << 21) /**< \brief (GPIO_OSRR0) Output Slew Rate Control Enable */\r
+#define GPIO_OSRR0_P22              (0x1u << 22) /**< \brief (GPIO_OSRR0) Output Slew Rate Control Enable */\r
+#define GPIO_OSRR0_P23              (0x1u << 23) /**< \brief (GPIO_OSRR0) Output Slew Rate Control Enable */\r
+#define GPIO_OSRR0_P24              (0x1u << 24) /**< \brief (GPIO_OSRR0) Output Slew Rate Control Enable */\r
+#define GPIO_OSRR0_P25              (0x1u << 25) /**< \brief (GPIO_OSRR0) Output Slew Rate Control Enable */\r
+#define GPIO_OSRR0_P26              (0x1u << 26) /**< \brief (GPIO_OSRR0) Output Slew Rate Control Enable */\r
+#define GPIO_OSRR0_P27              (0x1u << 27) /**< \brief (GPIO_OSRR0) Output Slew Rate Control Enable */\r
+#define GPIO_OSRR0_P28              (0x1u << 28) /**< \brief (GPIO_OSRR0) Output Slew Rate Control Enable */\r
+#define GPIO_OSRR0_P29              (0x1u << 29) /**< \brief (GPIO_OSRR0) Output Slew Rate Control Enable */\r
+#define GPIO_OSRR0_P30              (0x1u << 30) /**< \brief (GPIO_OSRR0) Output Slew Rate Control Enable */\r
+#define GPIO_OSRR0_P31              (0x1u << 31) /**< \brief (GPIO_OSRR0) Output Slew Rate Control Enable */\r
+/* -------- GPIO_OSRR0S : (GPIO Offset: 0x134) Port Output Slew Rate Register 0 - Set -------- */\r
+#define GPIO_OSRR0S_P0              (0x1u <<  0) /**< \brief (GPIO_OSRR0S) Output Slew Rate Control Enable */\r
+#define GPIO_OSRR0S_P1              (0x1u <<  1) /**< \brief (GPIO_OSRR0S) Output Slew Rate Control Enable */\r
+#define GPIO_OSRR0S_P2              (0x1u <<  2) /**< \brief (GPIO_OSRR0S) Output Slew Rate Control Enable */\r
+#define GPIO_OSRR0S_P3              (0x1u <<  3) /**< \brief (GPIO_OSRR0S) Output Slew Rate Control Enable */\r
+#define GPIO_OSRR0S_P4              (0x1u <<  4) /**< \brief (GPIO_OSRR0S) Output Slew Rate Control Enable */\r
+#define GPIO_OSRR0S_P5              (0x1u <<  5) /**< \brief (GPIO_OSRR0S) Output Slew Rate Control Enable */\r
+#define GPIO_OSRR0S_P6              (0x1u <<  6) /**< \brief (GPIO_OSRR0S) Output Slew Rate Control Enable */\r
+#define GPIO_OSRR0S_P7              (0x1u <<  7) /**< \brief (GPIO_OSRR0S) Output Slew Rate Control Enable */\r
+#define GPIO_OSRR0S_P8              (0x1u <<  8) /**< \brief (GPIO_OSRR0S) Output Slew Rate Control Enable */\r
+#define GPIO_OSRR0S_P9              (0x1u <<  9) /**< \brief (GPIO_OSRR0S) Output Slew Rate Control Enable */\r
+#define GPIO_OSRR0S_P10             (0x1u << 10) /**< \brief (GPIO_OSRR0S) Output Slew Rate Control Enable */\r
+#define GPIO_OSRR0S_P11             (0x1u << 11) /**< \brief (GPIO_OSRR0S) Output Slew Rate Control Enable */\r
+#define GPIO_OSRR0S_P12             (0x1u << 12) /**< \brief (GPIO_OSRR0S) Output Slew Rate Control Enable */\r
+#define GPIO_OSRR0S_P13             (0x1u << 13) /**< \brief (GPIO_OSRR0S) Output Slew Rate Control Enable */\r
+#define GPIO_OSRR0S_P14             (0x1u << 14) /**< \brief (GPIO_OSRR0S) Output Slew Rate Control Enable */\r
+#define GPIO_OSRR0S_P15             (0x1u << 15) /**< \brief (GPIO_OSRR0S) Output Slew Rate Control Enable */\r
+#define GPIO_OSRR0S_P16             (0x1u << 16) /**< \brief (GPIO_OSRR0S) Output Slew Rate Control Enable */\r
+#define GPIO_OSRR0S_P17             (0x1u << 17) /**< \brief (GPIO_OSRR0S) Output Slew Rate Control Enable */\r
+#define GPIO_OSRR0S_P18             (0x1u << 18) /**< \brief (GPIO_OSRR0S) Output Slew Rate Control Enable */\r
+#define GPIO_OSRR0S_P19             (0x1u << 19) /**< \brief (GPIO_OSRR0S) Output Slew Rate Control Enable */\r
+#define GPIO_OSRR0S_P20             (0x1u << 20) /**< \brief (GPIO_OSRR0S) Output Slew Rate Control Enable */\r
+#define GPIO_OSRR0S_P21             (0x1u << 21) /**< \brief (GPIO_OSRR0S) Output Slew Rate Control Enable */\r
+#define GPIO_OSRR0S_P22             (0x1u << 22) /**< \brief (GPIO_OSRR0S) Output Slew Rate Control Enable */\r
+#define GPIO_OSRR0S_P23             (0x1u << 23) /**< \brief (GPIO_OSRR0S) Output Slew Rate Control Enable */\r
+#define GPIO_OSRR0S_P24             (0x1u << 24) /**< \brief (GPIO_OSRR0S) Output Slew Rate Control Enable */\r
+#define GPIO_OSRR0S_P25             (0x1u << 25) /**< \brief (GPIO_OSRR0S) Output Slew Rate Control Enable */\r
+#define GPIO_OSRR0S_P26             (0x1u << 26) /**< \brief (GPIO_OSRR0S) Output Slew Rate Control Enable */\r
+#define GPIO_OSRR0S_P27             (0x1u << 27) /**< \brief (GPIO_OSRR0S) Output Slew Rate Control Enable */\r
+#define GPIO_OSRR0S_P28             (0x1u << 28) /**< \brief (GPIO_OSRR0S) Output Slew Rate Control Enable */\r
+#define GPIO_OSRR0S_P29             (0x1u << 29) /**< \brief (GPIO_OSRR0S) Output Slew Rate Control Enable */\r
+#define GPIO_OSRR0S_P30             (0x1u << 30) /**< \brief (GPIO_OSRR0S) Output Slew Rate Control Enable */\r
+#define GPIO_OSRR0S_P31             (0x1u << 31) /**< \brief (GPIO_OSRR0S) Output Slew Rate Control Enable */\r
+/* -------- GPIO_OSRR0C : (GPIO Offset: 0x138) Port Output Slew Rate Register 0 - Clear -------- */\r
+#define GPIO_OSRR0C_P0              (0x1u <<  0) /**< \brief (GPIO_OSRR0C) Output Slew Rate Control Enable */\r
+#define GPIO_OSRR0C_P1              (0x1u <<  1) /**< \brief (GPIO_OSRR0C) Output Slew Rate Control Enable */\r
+#define GPIO_OSRR0C_P2              (0x1u <<  2) /**< \brief (GPIO_OSRR0C) Output Slew Rate Control Enable */\r
+#define GPIO_OSRR0C_P3              (0x1u <<  3) /**< \brief (GPIO_OSRR0C) Output Slew Rate Control Enable */\r
+#define GPIO_OSRR0C_P4              (0x1u <<  4) /**< \brief (GPIO_OSRR0C) Output Slew Rate Control Enable */\r
+#define GPIO_OSRR0C_P5              (0x1u <<  5) /**< \brief (GPIO_OSRR0C) Output Slew Rate Control Enable */\r
+#define GPIO_OSRR0C_P6              (0x1u <<  6) /**< \brief (GPIO_OSRR0C) Output Slew Rate Control Enable */\r
+#define GPIO_OSRR0C_P7              (0x1u <<  7) /**< \brief (GPIO_OSRR0C) Output Slew Rate Control Enable */\r
+#define GPIO_OSRR0C_P8              (0x1u <<  8) /**< \brief (GPIO_OSRR0C) Output Slew Rate Control Enable */\r
+#define GPIO_OSRR0C_P9              (0x1u <<  9) /**< \brief (GPIO_OSRR0C) Output Slew Rate Control Enable */\r
+#define GPIO_OSRR0C_P10             (0x1u << 10) /**< \brief (GPIO_OSRR0C) Output Slew Rate Control Enable */\r
+#define GPIO_OSRR0C_P11             (0x1u << 11) /**< \brief (GPIO_OSRR0C) Output Slew Rate Control Enable */\r
+#define GPIO_OSRR0C_P12             (0x1u << 12) /**< \brief (GPIO_OSRR0C) Output Slew Rate Control Enable */\r
+#define GPIO_OSRR0C_P13             (0x1u << 13) /**< \brief (GPIO_OSRR0C) Output Slew Rate Control Enable */\r
+#define GPIO_OSRR0C_P14             (0x1u << 14) /**< \brief (GPIO_OSRR0C) Output Slew Rate Control Enable */\r
+#define GPIO_OSRR0C_P15             (0x1u << 15) /**< \brief (GPIO_OSRR0C) Output Slew Rate Control Enable */\r
+#define GPIO_OSRR0C_P16             (0x1u << 16) /**< \brief (GPIO_OSRR0C) Output Slew Rate Control Enable */\r
+#define GPIO_OSRR0C_P17             (0x1u << 17) /**< \brief (GPIO_OSRR0C) Output Slew Rate Control Enable */\r
+#define GPIO_OSRR0C_P18             (0x1u << 18) /**< \brief (GPIO_OSRR0C) Output Slew Rate Control Enable */\r
+#define GPIO_OSRR0C_P19             (0x1u << 19) /**< \brief (GPIO_OSRR0C) Output Slew Rate Control Enable */\r
+#define GPIO_OSRR0C_P20             (0x1u << 20) /**< \brief (GPIO_OSRR0C) Output Slew Rate Control Enable */\r
+#define GPIO_OSRR0C_P21             (0x1u << 21) /**< \brief (GPIO_OSRR0C) Output Slew Rate Control Enable */\r
+#define GPIO_OSRR0C_P22             (0x1u << 22) /**< \brief (GPIO_OSRR0C) Output Slew Rate Control Enable */\r
+#define GPIO_OSRR0C_P23             (0x1u << 23) /**< \brief (GPIO_OSRR0C) Output Slew Rate Control Enable */\r
+#define GPIO_OSRR0C_P24             (0x1u << 24) /**< \brief (GPIO_OSRR0C) Output Slew Rate Control Enable */\r
+#define GPIO_OSRR0C_P25             (0x1u << 25) /**< \brief (GPIO_OSRR0C) Output Slew Rate Control Enable */\r
+#define GPIO_OSRR0C_P26             (0x1u << 26) /**< \brief (GPIO_OSRR0C) Output Slew Rate Control Enable */\r
+#define GPIO_OSRR0C_P27             (0x1u << 27) /**< \brief (GPIO_OSRR0C) Output Slew Rate Control Enable */\r
+#define GPIO_OSRR0C_P28             (0x1u << 28) /**< \brief (GPIO_OSRR0C) Output Slew Rate Control Enable */\r
+#define GPIO_OSRR0C_P29             (0x1u << 29) /**< \brief (GPIO_OSRR0C) Output Slew Rate Control Enable */\r
+#define GPIO_OSRR0C_P30             (0x1u << 30) /**< \brief (GPIO_OSRR0C) Output Slew Rate Control Enable */\r
+#define GPIO_OSRR0C_P31             (0x1u << 31) /**< \brief (GPIO_OSRR0C) Output Slew Rate Control Enable */\r
+/* -------- GPIO_OSRR0T : (GPIO Offset: 0x13C) Port Output Slew Rate Register 0 - Toggle -------- */\r
+#define GPIO_OSRR0T_P0              (0x1u <<  0) /**< \brief (GPIO_OSRR0T) Output Slew Rate Control Enable */\r
+#define GPIO_OSRR0T_P1              (0x1u <<  1) /**< \brief (GPIO_OSRR0T) Output Slew Rate Control Enable */\r
+#define GPIO_OSRR0T_P2              (0x1u <<  2) /**< \brief (GPIO_OSRR0T) Output Slew Rate Control Enable */\r
+#define GPIO_OSRR0T_P3              (0x1u <<  3) /**< \brief (GPIO_OSRR0T) Output Slew Rate Control Enable */\r
+#define GPIO_OSRR0T_P4              (0x1u <<  4) /**< \brief (GPIO_OSRR0T) Output Slew Rate Control Enable */\r
+#define GPIO_OSRR0T_P5              (0x1u <<  5) /**< \brief (GPIO_OSRR0T) Output Slew Rate Control Enable */\r
+#define GPIO_OSRR0T_P6              (0x1u <<  6) /**< \brief (GPIO_OSRR0T) Output Slew Rate Control Enable */\r
+#define GPIO_OSRR0T_P7              (0x1u <<  7) /**< \brief (GPIO_OSRR0T) Output Slew Rate Control Enable */\r
+#define GPIO_OSRR0T_P8              (0x1u <<  8) /**< \brief (GPIO_OSRR0T) Output Slew Rate Control Enable */\r
+#define GPIO_OSRR0T_P9              (0x1u <<  9) /**< \brief (GPIO_OSRR0T) Output Slew Rate Control Enable */\r
+#define GPIO_OSRR0T_P10             (0x1u << 10) /**< \brief (GPIO_OSRR0T) Output Slew Rate Control Enable */\r
+#define GPIO_OSRR0T_P11             (0x1u << 11) /**< \brief (GPIO_OSRR0T) Output Slew Rate Control Enable */\r
+#define GPIO_OSRR0T_P12             (0x1u << 12) /**< \brief (GPIO_OSRR0T) Output Slew Rate Control Enable */\r
+#define GPIO_OSRR0T_P13             (0x1u << 13) /**< \brief (GPIO_OSRR0T) Output Slew Rate Control Enable */\r
+#define GPIO_OSRR0T_P14             (0x1u << 14) /**< \brief (GPIO_OSRR0T) Output Slew Rate Control Enable */\r
+#define GPIO_OSRR0T_P15             (0x1u << 15) /**< \brief (GPIO_OSRR0T) Output Slew Rate Control Enable */\r
+#define GPIO_OSRR0T_P16             (0x1u << 16) /**< \brief (GPIO_OSRR0T) Output Slew Rate Control Enable */\r
+#define GPIO_OSRR0T_P17             (0x1u << 17) /**< \brief (GPIO_OSRR0T) Output Slew Rate Control Enable */\r
+#define GPIO_OSRR0T_P18             (0x1u << 18) /**< \brief (GPIO_OSRR0T) Output Slew Rate Control Enable */\r
+#define GPIO_OSRR0T_P19             (0x1u << 19) /**< \brief (GPIO_OSRR0T) Output Slew Rate Control Enable */\r
+#define GPIO_OSRR0T_P20             (0x1u << 20) /**< \brief (GPIO_OSRR0T) Output Slew Rate Control Enable */\r
+#define GPIO_OSRR0T_P21             (0x1u << 21) /**< \brief (GPIO_OSRR0T) Output Slew Rate Control Enable */\r
+#define GPIO_OSRR0T_P22             (0x1u << 22) /**< \brief (GPIO_OSRR0T) Output Slew Rate Control Enable */\r
+#define GPIO_OSRR0T_P23             (0x1u << 23) /**< \brief (GPIO_OSRR0T) Output Slew Rate Control Enable */\r
+#define GPIO_OSRR0T_P24             (0x1u << 24) /**< \brief (GPIO_OSRR0T) Output Slew Rate Control Enable */\r
+#define GPIO_OSRR0T_P25             (0x1u << 25) /**< \brief (GPIO_OSRR0T) Output Slew Rate Control Enable */\r
+#define GPIO_OSRR0T_P26             (0x1u << 26) /**< \brief (GPIO_OSRR0T) Output Slew Rate Control Enable */\r
+#define GPIO_OSRR0T_P27             (0x1u << 27) /**< \brief (GPIO_OSRR0T) Output Slew Rate Control Enable */\r
+#define GPIO_OSRR0T_P28             (0x1u << 28) /**< \brief (GPIO_OSRR0T) Output Slew Rate Control Enable */\r
+#define GPIO_OSRR0T_P29             (0x1u << 29) /**< \brief (GPIO_OSRR0T) Output Slew Rate Control Enable */\r
+#define GPIO_OSRR0T_P30             (0x1u << 30) /**< \brief (GPIO_OSRR0T) Output Slew Rate Control Enable */\r
+#define GPIO_OSRR0T_P31             (0x1u << 31) /**< \brief (GPIO_OSRR0T) Output Slew Rate Control Enable */\r
+/* -------- GPIO_STER : (GPIO Offset: 0x160) Port Schmitt Trigger Enable Register -------- */\r
+#define GPIO_STER_P0                (0x1u <<  0) /**< \brief (GPIO_STER) Schmitt Trigger Enable */\r
+#define GPIO_STER_P1                (0x1u <<  1) /**< \brief (GPIO_STER) Schmitt Trigger Enable */\r
+#define GPIO_STER_P2                (0x1u <<  2) /**< \brief (GPIO_STER) Schmitt Trigger Enable */\r
+#define GPIO_STER_P3                (0x1u <<  3) /**< \brief (GPIO_STER) Schmitt Trigger Enable */\r
+#define GPIO_STER_P4                (0x1u <<  4) /**< \brief (GPIO_STER) Schmitt Trigger Enable */\r
+#define GPIO_STER_P5                (0x1u <<  5) /**< \brief (GPIO_STER) Schmitt Trigger Enable */\r
+#define GPIO_STER_P6                (0x1u <<  6) /**< \brief (GPIO_STER) Schmitt Trigger Enable */\r
+#define GPIO_STER_P7                (0x1u <<  7) /**< \brief (GPIO_STER) Schmitt Trigger Enable */\r
+#define GPIO_STER_P8                (0x1u <<  8) /**< \brief (GPIO_STER) Schmitt Trigger Enable */\r
+#define GPIO_STER_P9                (0x1u <<  9) /**< \brief (GPIO_STER) Schmitt Trigger Enable */\r
+#define GPIO_STER_P10               (0x1u << 10) /**< \brief (GPIO_STER) Schmitt Trigger Enable */\r
+#define GPIO_STER_P11               (0x1u << 11) /**< \brief (GPIO_STER) Schmitt Trigger Enable */\r
+#define GPIO_STER_P12               (0x1u << 12) /**< \brief (GPIO_STER) Schmitt Trigger Enable */\r
+#define GPIO_STER_P13               (0x1u << 13) /**< \brief (GPIO_STER) Schmitt Trigger Enable */\r
+#define GPIO_STER_P14               (0x1u << 14) /**< \brief (GPIO_STER) Schmitt Trigger Enable */\r
+#define GPIO_STER_P15               (0x1u << 15) /**< \brief (GPIO_STER) Schmitt Trigger Enable */\r
+#define GPIO_STER_P16               (0x1u << 16) /**< \brief (GPIO_STER) Schmitt Trigger Enable */\r
+#define GPIO_STER_P17               (0x1u << 17) /**< \brief (GPIO_STER) Schmitt Trigger Enable */\r
+#define GPIO_STER_P18               (0x1u << 18) /**< \brief (GPIO_STER) Schmitt Trigger Enable */\r
+#define GPIO_STER_P19               (0x1u << 19) /**< \brief (GPIO_STER) Schmitt Trigger Enable */\r
+#define GPIO_STER_P20               (0x1u << 20) /**< \brief (GPIO_STER) Schmitt Trigger Enable */\r
+#define GPIO_STER_P21               (0x1u << 21) /**< \brief (GPIO_STER) Schmitt Trigger Enable */\r
+#define GPIO_STER_P22               (0x1u << 22) /**< \brief (GPIO_STER) Schmitt Trigger Enable */\r
+#define GPIO_STER_P23               (0x1u << 23) /**< \brief (GPIO_STER) Schmitt Trigger Enable */\r
+#define GPIO_STER_P24               (0x1u << 24) /**< \brief (GPIO_STER) Schmitt Trigger Enable */\r
+#define GPIO_STER_P25               (0x1u << 25) /**< \brief (GPIO_STER) Schmitt Trigger Enable */\r
+#define GPIO_STER_P26               (0x1u << 26) /**< \brief (GPIO_STER) Schmitt Trigger Enable */\r
+#define GPIO_STER_P27               (0x1u << 27) /**< \brief (GPIO_STER) Schmitt Trigger Enable */\r
+#define GPIO_STER_P28               (0x1u << 28) /**< \brief (GPIO_STER) Schmitt Trigger Enable */\r
+#define GPIO_STER_P29               (0x1u << 29) /**< \brief (GPIO_STER) Schmitt Trigger Enable */\r
+#define GPIO_STER_P30               (0x1u << 30) /**< \brief (GPIO_STER) Schmitt Trigger Enable */\r
+#define GPIO_STER_P31               (0x1u << 31) /**< \brief (GPIO_STER) Schmitt Trigger Enable */\r
+/* -------- GPIO_STERS : (GPIO Offset: 0x164) Port Schmitt Trigger Enable Register - Set -------- */\r
+#define GPIO_STERS_P0               (0x1u <<  0) /**< \brief (GPIO_STERS) Schmitt Trigger Enable */\r
+#define GPIO_STERS_P1               (0x1u <<  1) /**< \brief (GPIO_STERS) Schmitt Trigger Enable */\r
+#define GPIO_STERS_P2               (0x1u <<  2) /**< \brief (GPIO_STERS) Schmitt Trigger Enable */\r
+#define GPIO_STERS_P3               (0x1u <<  3) /**< \brief (GPIO_STERS) Schmitt Trigger Enable */\r
+#define GPIO_STERS_P4               (0x1u <<  4) /**< \brief (GPIO_STERS) Schmitt Trigger Enable */\r
+#define GPIO_STERS_P5               (0x1u <<  5) /**< \brief (GPIO_STERS) Schmitt Trigger Enable */\r
+#define GPIO_STERS_P6               (0x1u <<  6) /**< \brief (GPIO_STERS) Schmitt Trigger Enable */\r
+#define GPIO_STERS_P7               (0x1u <<  7) /**< \brief (GPIO_STERS) Schmitt Trigger Enable */\r
+#define GPIO_STERS_P8               (0x1u <<  8) /**< \brief (GPIO_STERS) Schmitt Trigger Enable */\r
+#define GPIO_STERS_P9               (0x1u <<  9) /**< \brief (GPIO_STERS) Schmitt Trigger Enable */\r
+#define GPIO_STERS_P10              (0x1u << 10) /**< \brief (GPIO_STERS) Schmitt Trigger Enable */\r
+#define GPIO_STERS_P11              (0x1u << 11) /**< \brief (GPIO_STERS) Schmitt Trigger Enable */\r
+#define GPIO_STERS_P12              (0x1u << 12) /**< \brief (GPIO_STERS) Schmitt Trigger Enable */\r
+#define GPIO_STERS_P13              (0x1u << 13) /**< \brief (GPIO_STERS) Schmitt Trigger Enable */\r
+#define GPIO_STERS_P14              (0x1u << 14) /**< \brief (GPIO_STERS) Schmitt Trigger Enable */\r
+#define GPIO_STERS_P15              (0x1u << 15) /**< \brief (GPIO_STERS) Schmitt Trigger Enable */\r
+#define GPIO_STERS_P16              (0x1u << 16) /**< \brief (GPIO_STERS) Schmitt Trigger Enable */\r
+#define GPIO_STERS_P17              (0x1u << 17) /**< \brief (GPIO_STERS) Schmitt Trigger Enable */\r
+#define GPIO_STERS_P18              (0x1u << 18) /**< \brief (GPIO_STERS) Schmitt Trigger Enable */\r
+#define GPIO_STERS_P19              (0x1u << 19) /**< \brief (GPIO_STERS) Schmitt Trigger Enable */\r
+#define GPIO_STERS_P20              (0x1u << 20) /**< \brief (GPIO_STERS) Schmitt Trigger Enable */\r
+#define GPIO_STERS_P21              (0x1u << 21) /**< \brief (GPIO_STERS) Schmitt Trigger Enable */\r
+#define GPIO_STERS_P22              (0x1u << 22) /**< \brief (GPIO_STERS) Schmitt Trigger Enable */\r
+#define GPIO_STERS_P23              (0x1u << 23) /**< \brief (GPIO_STERS) Schmitt Trigger Enable */\r
+#define GPIO_STERS_P24              (0x1u << 24) /**< \brief (GPIO_STERS) Schmitt Trigger Enable */\r
+#define GPIO_STERS_P25              (0x1u << 25) /**< \brief (GPIO_STERS) Schmitt Trigger Enable */\r
+#define GPIO_STERS_P26              (0x1u << 26) /**< \brief (GPIO_STERS) Schmitt Trigger Enable */\r
+#define GPIO_STERS_P27              (0x1u << 27) /**< \brief (GPIO_STERS) Schmitt Trigger Enable */\r
+#define GPIO_STERS_P28              (0x1u << 28) /**< \brief (GPIO_STERS) Schmitt Trigger Enable */\r
+#define GPIO_STERS_P29              (0x1u << 29) /**< \brief (GPIO_STERS) Schmitt Trigger Enable */\r
+#define GPIO_STERS_P30              (0x1u << 30) /**< \brief (GPIO_STERS) Schmitt Trigger Enable */\r
+#define GPIO_STERS_P31              (0x1u << 31) /**< \brief (GPIO_STERS) Schmitt Trigger Enable */\r
+/* -------- GPIO_STERC : (GPIO Offset: 0x168) Port Schmitt Trigger Enable Register - Clear -------- */\r
+#define GPIO_STERC_P0               (0x1u <<  0) /**< \brief (GPIO_STERC) Schmitt Trigger Enable */\r
+#define GPIO_STERC_P1               (0x1u <<  1) /**< \brief (GPIO_STERC) Schmitt Trigger Enable */\r
+#define GPIO_STERC_P2               (0x1u <<  2) /**< \brief (GPIO_STERC) Schmitt Trigger Enable */\r
+#define GPIO_STERC_P3               (0x1u <<  3) /**< \brief (GPIO_STERC) Schmitt Trigger Enable */\r
+#define GPIO_STERC_P4               (0x1u <<  4) /**< \brief (GPIO_STERC) Schmitt Trigger Enable */\r
+#define GPIO_STERC_P5               (0x1u <<  5) /**< \brief (GPIO_STERC) Schmitt Trigger Enable */\r
+#define GPIO_STERC_P6               (0x1u <<  6) /**< \brief (GPIO_STERC) Schmitt Trigger Enable */\r
+#define GPIO_STERC_P7               (0x1u <<  7) /**< \brief (GPIO_STERC) Schmitt Trigger Enable */\r
+#define GPIO_STERC_P8               (0x1u <<  8) /**< \brief (GPIO_STERC) Schmitt Trigger Enable */\r
+#define GPIO_STERC_P9               (0x1u <<  9) /**< \brief (GPIO_STERC) Schmitt Trigger Enable */\r
+#define GPIO_STERC_P10              (0x1u << 10) /**< \brief (GPIO_STERC) Schmitt Trigger Enable */\r
+#define GPIO_STERC_P11              (0x1u << 11) /**< \brief (GPIO_STERC) Schmitt Trigger Enable */\r
+#define GPIO_STERC_P12              (0x1u << 12) /**< \brief (GPIO_STERC) Schmitt Trigger Enable */\r
+#define GPIO_STERC_P13              (0x1u << 13) /**< \brief (GPIO_STERC) Schmitt Trigger Enable */\r
+#define GPIO_STERC_P14              (0x1u << 14) /**< \brief (GPIO_STERC) Schmitt Trigger Enable */\r
+#define GPIO_STERC_P15              (0x1u << 15) /**< \brief (GPIO_STERC) Schmitt Trigger Enable */\r
+#define GPIO_STERC_P16              (0x1u << 16) /**< \brief (GPIO_STERC) Schmitt Trigger Enable */\r
+#define GPIO_STERC_P17              (0x1u << 17) /**< \brief (GPIO_STERC) Schmitt Trigger Enable */\r
+#define GPIO_STERC_P18              (0x1u << 18) /**< \brief (GPIO_STERC) Schmitt Trigger Enable */\r
+#define GPIO_STERC_P19              (0x1u << 19) /**< \brief (GPIO_STERC) Schmitt Trigger Enable */\r
+#define GPIO_STERC_P20              (0x1u << 20) /**< \brief (GPIO_STERC) Schmitt Trigger Enable */\r
+#define GPIO_STERC_P21              (0x1u << 21) /**< \brief (GPIO_STERC) Schmitt Trigger Enable */\r
+#define GPIO_STERC_P22              (0x1u << 22) /**< \brief (GPIO_STERC) Schmitt Trigger Enable */\r
+#define GPIO_STERC_P23              (0x1u << 23) /**< \brief (GPIO_STERC) Schmitt Trigger Enable */\r
+#define GPIO_STERC_P24              (0x1u << 24) /**< \brief (GPIO_STERC) Schmitt Trigger Enable */\r
+#define GPIO_STERC_P25              (0x1u << 25) /**< \brief (GPIO_STERC) Schmitt Trigger Enable */\r
+#define GPIO_STERC_P26              (0x1u << 26) /**< \brief (GPIO_STERC) Schmitt Trigger Enable */\r
+#define GPIO_STERC_P27              (0x1u << 27) /**< \brief (GPIO_STERC) Schmitt Trigger Enable */\r
+#define GPIO_STERC_P28              (0x1u << 28) /**< \brief (GPIO_STERC) Schmitt Trigger Enable */\r
+#define GPIO_STERC_P29              (0x1u << 29) /**< \brief (GPIO_STERC) Schmitt Trigger Enable */\r
+#define GPIO_STERC_P30              (0x1u << 30) /**< \brief (GPIO_STERC) Schmitt Trigger Enable */\r
+#define GPIO_STERC_P31              (0x1u << 31) /**< \brief (GPIO_STERC) Schmitt Trigger Enable */\r
+/* -------- GPIO_STERT : (GPIO Offset: 0x16C) Port Schmitt Trigger Enable Register - Toggle -------- */\r
+#define GPIO_STERT_P0               (0x1u <<  0) /**< \brief (GPIO_STERT) Schmitt Trigger Enable */\r
+#define GPIO_STERT_P1               (0x1u <<  1) /**< \brief (GPIO_STERT) Schmitt Trigger Enable */\r
+#define GPIO_STERT_P2               (0x1u <<  2) /**< \brief (GPIO_STERT) Schmitt Trigger Enable */\r
+#define GPIO_STERT_P3               (0x1u <<  3) /**< \brief (GPIO_STERT) Schmitt Trigger Enable */\r
+#define GPIO_STERT_P4               (0x1u <<  4) /**< \brief (GPIO_STERT) Schmitt Trigger Enable */\r
+#define GPIO_STERT_P5               (0x1u <<  5) /**< \brief (GPIO_STERT) Schmitt Trigger Enable */\r
+#define GPIO_STERT_P6               (0x1u <<  6) /**< \brief (GPIO_STERT) Schmitt Trigger Enable */\r
+#define GPIO_STERT_P7               (0x1u <<  7) /**< \brief (GPIO_STERT) Schmitt Trigger Enable */\r
+#define GPIO_STERT_P8               (0x1u <<  8) /**< \brief (GPIO_STERT) Schmitt Trigger Enable */\r
+#define GPIO_STERT_P9               (0x1u <<  9) /**< \brief (GPIO_STERT) Schmitt Trigger Enable */\r
+#define GPIO_STERT_P10              (0x1u << 10) /**< \brief (GPIO_STERT) Schmitt Trigger Enable */\r
+#define GPIO_STERT_P11              (0x1u << 11) /**< \brief (GPIO_STERT) Schmitt Trigger Enable */\r
+#define GPIO_STERT_P12              (0x1u << 12) /**< \brief (GPIO_STERT) Schmitt Trigger Enable */\r
+#define GPIO_STERT_P13              (0x1u << 13) /**< \brief (GPIO_STERT) Schmitt Trigger Enable */\r
+#define GPIO_STERT_P14              (0x1u << 14) /**< \brief (GPIO_STERT) Schmitt Trigger Enable */\r
+#define GPIO_STERT_P15              (0x1u << 15) /**< \brief (GPIO_STERT) Schmitt Trigger Enable */\r
+#define GPIO_STERT_P16              (0x1u << 16) /**< \brief (GPIO_STERT) Schmitt Trigger Enable */\r
+#define GPIO_STERT_P17              (0x1u << 17) /**< \brief (GPIO_STERT) Schmitt Trigger Enable */\r
+#define GPIO_STERT_P18              (0x1u << 18) /**< \brief (GPIO_STERT) Schmitt Trigger Enable */\r
+#define GPIO_STERT_P19              (0x1u << 19) /**< \brief (GPIO_STERT) Schmitt Trigger Enable */\r
+#define GPIO_STERT_P20              (0x1u << 20) /**< \brief (GPIO_STERT) Schmitt Trigger Enable */\r
+#define GPIO_STERT_P21              (0x1u << 21) /**< \brief (GPIO_STERT) Schmitt Trigger Enable */\r
+#define GPIO_STERT_P22              (0x1u << 22) /**< \brief (GPIO_STERT) Schmitt Trigger Enable */\r
+#define GPIO_STERT_P23              (0x1u << 23) /**< \brief (GPIO_STERT) Schmitt Trigger Enable */\r
+#define GPIO_STERT_P24              (0x1u << 24) /**< \brief (GPIO_STERT) Schmitt Trigger Enable */\r
+#define GPIO_STERT_P25              (0x1u << 25) /**< \brief (GPIO_STERT) Schmitt Trigger Enable */\r
+#define GPIO_STERT_P26              (0x1u << 26) /**< \brief (GPIO_STERT) Schmitt Trigger Enable */\r
+#define GPIO_STERT_P27              (0x1u << 27) /**< \brief (GPIO_STERT) Schmitt Trigger Enable */\r
+#define GPIO_STERT_P28              (0x1u << 28) /**< \brief (GPIO_STERT) Schmitt Trigger Enable */\r
+#define GPIO_STERT_P29              (0x1u << 29) /**< \brief (GPIO_STERT) Schmitt Trigger Enable */\r
+#define GPIO_STERT_P30              (0x1u << 30) /**< \brief (GPIO_STERT) Schmitt Trigger Enable */\r
+#define GPIO_STERT_P31              (0x1u << 31) /**< \brief (GPIO_STERT) Schmitt Trigger Enable */\r
+/* -------- GPIO_EVER : (GPIO Offset: 0x180) Port Event Enable Register -------- */\r
+#define GPIO_EVER_P0                (0x1u <<  0) /**< \brief (GPIO_EVER) Event Enable */\r
+#define GPIO_EVER_P1                (0x1u <<  1) /**< \brief (GPIO_EVER) Event Enable */\r
+#define GPIO_EVER_P2                (0x1u <<  2) /**< \brief (GPIO_EVER) Event Enable */\r
+#define GPIO_EVER_P3                (0x1u <<  3) /**< \brief (GPIO_EVER) Event Enable */\r
+#define GPIO_EVER_P4                (0x1u <<  4) /**< \brief (GPIO_EVER) Event Enable */\r
+#define GPIO_EVER_P5                (0x1u <<  5) /**< \brief (GPIO_EVER) Event Enable */\r
+#define GPIO_EVER_P6                (0x1u <<  6) /**< \brief (GPIO_EVER) Event Enable */\r
+#define GPIO_EVER_P7                (0x1u <<  7) /**< \brief (GPIO_EVER) Event Enable */\r
+#define GPIO_EVER_P8                (0x1u <<  8) /**< \brief (GPIO_EVER) Event Enable */\r
+#define GPIO_EVER_P9                (0x1u <<  9) /**< \brief (GPIO_EVER) Event Enable */\r
+#define GPIO_EVER_P10               (0x1u << 10) /**< \brief (GPIO_EVER) Event Enable */\r
+#define GPIO_EVER_P11               (0x1u << 11) /**< \brief (GPIO_EVER) Event Enable */\r
+#define GPIO_EVER_P12               (0x1u << 12) /**< \brief (GPIO_EVER) Event Enable */\r
+#define GPIO_EVER_P13               (0x1u << 13) /**< \brief (GPIO_EVER) Event Enable */\r
+#define GPIO_EVER_P14               (0x1u << 14) /**< \brief (GPIO_EVER) Event Enable */\r
+#define GPIO_EVER_P15               (0x1u << 15) /**< \brief (GPIO_EVER) Event Enable */\r
+#define GPIO_EVER_P16               (0x1u << 16) /**< \brief (GPIO_EVER) Event Enable */\r
+#define GPIO_EVER_P17               (0x1u << 17) /**< \brief (GPIO_EVER) Event Enable */\r
+#define GPIO_EVER_P18               (0x1u << 18) /**< \brief (GPIO_EVER) Event Enable */\r
+#define GPIO_EVER_P19               (0x1u << 19) /**< \brief (GPIO_EVER) Event Enable */\r
+#define GPIO_EVER_P20               (0x1u << 20) /**< \brief (GPIO_EVER) Event Enable */\r
+#define GPIO_EVER_P21               (0x1u << 21) /**< \brief (GPIO_EVER) Event Enable */\r
+#define GPIO_EVER_P22               (0x1u << 22) /**< \brief (GPIO_EVER) Event Enable */\r
+#define GPIO_EVER_P23               (0x1u << 23) /**< \brief (GPIO_EVER) Event Enable */\r
+#define GPIO_EVER_P24               (0x1u << 24) /**< \brief (GPIO_EVER) Event Enable */\r
+#define GPIO_EVER_P25               (0x1u << 25) /**< \brief (GPIO_EVER) Event Enable */\r
+#define GPIO_EVER_P26               (0x1u << 26) /**< \brief (GPIO_EVER) Event Enable */\r
+#define GPIO_EVER_P27               (0x1u << 27) /**< \brief (GPIO_EVER) Event Enable */\r
+#define GPIO_EVER_P28               (0x1u << 28) /**< \brief (GPIO_EVER) Event Enable */\r
+#define GPIO_EVER_P29               (0x1u << 29) /**< \brief (GPIO_EVER) Event Enable */\r
+#define GPIO_EVER_P30               (0x1u << 30) /**< \brief (GPIO_EVER) Event Enable */\r
+#define GPIO_EVER_P31               (0x1u << 31) /**< \brief (GPIO_EVER) Event Enable */\r
+/* -------- GPIO_EVERS : (GPIO Offset: 0x184) Port Event Enable Register - Set -------- */\r
+#define GPIO_EVERS_P0               (0x1u <<  0) /**< \brief (GPIO_EVERS) Event Enable */\r
+#define GPIO_EVERS_P1               (0x1u <<  1) /**< \brief (GPIO_EVERS) Event Enable */\r
+#define GPIO_EVERS_P2               (0x1u <<  2) /**< \brief (GPIO_EVERS) Event Enable */\r
+#define GPIO_EVERS_P3               (0x1u <<  3) /**< \brief (GPIO_EVERS) Event Enable */\r
+#define GPIO_EVERS_P4               (0x1u <<  4) /**< \brief (GPIO_EVERS) Event Enable */\r
+#define GPIO_EVERS_P5               (0x1u <<  5) /**< \brief (GPIO_EVERS) Event Enable */\r
+#define GPIO_EVERS_P6               (0x1u <<  6) /**< \brief (GPIO_EVERS) Event Enable */\r
+#define GPIO_EVERS_P7               (0x1u <<  7) /**< \brief (GPIO_EVERS) Event Enable */\r
+#define GPIO_EVERS_P8               (0x1u <<  8) /**< \brief (GPIO_EVERS) Event Enable */\r
+#define GPIO_EVERS_P9               (0x1u <<  9) /**< \brief (GPIO_EVERS) Event Enable */\r
+#define GPIO_EVERS_P10              (0x1u << 10) /**< \brief (GPIO_EVERS) Event Enable */\r
+#define GPIO_EVERS_P11              (0x1u << 11) /**< \brief (GPIO_EVERS) Event Enable */\r
+#define GPIO_EVERS_P12              (0x1u << 12) /**< \brief (GPIO_EVERS) Event Enable */\r
+#define GPIO_EVERS_P13              (0x1u << 13) /**< \brief (GPIO_EVERS) Event Enable */\r
+#define GPIO_EVERS_P14              (0x1u << 14) /**< \brief (GPIO_EVERS) Event Enable */\r
+#define GPIO_EVERS_P15              (0x1u << 15) /**< \brief (GPIO_EVERS) Event Enable */\r
+#define GPIO_EVERS_P16              (0x1u << 16) /**< \brief (GPIO_EVERS) Event Enable */\r
+#define GPIO_EVERS_P17              (0x1u << 17) /**< \brief (GPIO_EVERS) Event Enable */\r
+#define GPIO_EVERS_P18              (0x1u << 18) /**< \brief (GPIO_EVERS) Event Enable */\r
+#define GPIO_EVERS_P19              (0x1u << 19) /**< \brief (GPIO_EVERS) Event Enable */\r
+#define GPIO_EVERS_P20              (0x1u << 20) /**< \brief (GPIO_EVERS) Event Enable */\r
+#define GPIO_EVERS_P21              (0x1u << 21) /**< \brief (GPIO_EVERS) Event Enable */\r
+#define GPIO_EVERS_P22              (0x1u << 22) /**< \brief (GPIO_EVERS) Event Enable */\r
+#define GPIO_EVERS_P23              (0x1u << 23) /**< \brief (GPIO_EVERS) Event Enable */\r
+#define GPIO_EVERS_P24              (0x1u << 24) /**< \brief (GPIO_EVERS) Event Enable */\r
+#define GPIO_EVERS_P25              (0x1u << 25) /**< \brief (GPIO_EVERS) Event Enable */\r
+#define GPIO_EVERS_P26              (0x1u << 26) /**< \brief (GPIO_EVERS) Event Enable */\r
+#define GPIO_EVERS_P27              (0x1u << 27) /**< \brief (GPIO_EVERS) Event Enable */\r
+#define GPIO_EVERS_P28              (0x1u << 28) /**< \brief (GPIO_EVERS) Event Enable */\r
+#define GPIO_EVERS_P29              (0x1u << 29) /**< \brief (GPIO_EVERS) Event Enable */\r
+#define GPIO_EVERS_P30              (0x1u << 30) /**< \brief (GPIO_EVERS) Event Enable */\r
+#define GPIO_EVERS_P31              (0x1u << 31) /**< \brief (GPIO_EVERS) Event Enable */\r
+/* -------- GPIO_EVERC : (GPIO Offset: 0x188) Port Event Enable Register - Clear -------- */\r
+#define GPIO_EVERC_P0               (0x1u <<  0) /**< \brief (GPIO_EVERC) Event Enable */\r
+#define GPIO_EVERC_P1               (0x1u <<  1) /**< \brief (GPIO_EVERC) Event Enable */\r
+#define GPIO_EVERC_P2               (0x1u <<  2) /**< \brief (GPIO_EVERC) Event Enable */\r
+#define GPIO_EVERC_P3               (0x1u <<  3) /**< \brief (GPIO_EVERC) Event Enable */\r
+#define GPIO_EVERC_P4               (0x1u <<  4) /**< \brief (GPIO_EVERC) Event Enable */\r
+#define GPIO_EVERC_P5               (0x1u <<  5) /**< \brief (GPIO_EVERC) Event Enable */\r
+#define GPIO_EVERC_P6               (0x1u <<  6) /**< \brief (GPIO_EVERC) Event Enable */\r
+#define GPIO_EVERC_P7               (0x1u <<  7) /**< \brief (GPIO_EVERC) Event Enable */\r
+#define GPIO_EVERC_P8               (0x1u <<  8) /**< \brief (GPIO_EVERC) Event Enable */\r
+#define GPIO_EVERC_P9               (0x1u <<  9) /**< \brief (GPIO_EVERC) Event Enable */\r
+#define GPIO_EVERC_P10              (0x1u << 10) /**< \brief (GPIO_EVERC) Event Enable */\r
+#define GPIO_EVERC_P11              (0x1u << 11) /**< \brief (GPIO_EVERC) Event Enable */\r
+#define GPIO_EVERC_P12              (0x1u << 12) /**< \brief (GPIO_EVERC) Event Enable */\r
+#define GPIO_EVERC_P13              (0x1u << 13) /**< \brief (GPIO_EVERC) Event Enable */\r
+#define GPIO_EVERC_P14              (0x1u << 14) /**< \brief (GPIO_EVERC) Event Enable */\r
+#define GPIO_EVERC_P15              (0x1u << 15) /**< \brief (GPIO_EVERC) Event Enable */\r
+#define GPIO_EVERC_P16              (0x1u << 16) /**< \brief (GPIO_EVERC) Event Enable */\r
+#define GPIO_EVERC_P17              (0x1u << 17) /**< \brief (GPIO_EVERC) Event Enable */\r
+#define GPIO_EVERC_P18              (0x1u << 18) /**< \brief (GPIO_EVERC) Event Enable */\r
+#define GPIO_EVERC_P19              (0x1u << 19) /**< \brief (GPIO_EVERC) Event Enable */\r
+#define GPIO_EVERC_P20              (0x1u << 20) /**< \brief (GPIO_EVERC) Event Enable */\r
+#define GPIO_EVERC_P21              (0x1u << 21) /**< \brief (GPIO_EVERC) Event Enable */\r
+#define GPIO_EVERC_P22              (0x1u << 22) /**< \brief (GPIO_EVERC) Event Enable */\r
+#define GPIO_EVERC_P23              (0x1u << 23) /**< \brief (GPIO_EVERC) Event Enable */\r
+#define GPIO_EVERC_P24              (0x1u << 24) /**< \brief (GPIO_EVERC) Event Enable */\r
+#define GPIO_EVERC_P25              (0x1u << 25) /**< \brief (GPIO_EVERC) Event Enable */\r
+#define GPIO_EVERC_P26              (0x1u << 26) /**< \brief (GPIO_EVERC) Event Enable */\r
+#define GPIO_EVERC_P27              (0x1u << 27) /**< \brief (GPIO_EVERC) Event Enable */\r
+#define GPIO_EVERC_P28              (0x1u << 28) /**< \brief (GPIO_EVERC) Event Enable */\r
+#define GPIO_EVERC_P29              (0x1u << 29) /**< \brief (GPIO_EVERC) Event Enable */\r
+#define GPIO_EVERC_P30              (0x1u << 30) /**< \brief (GPIO_EVERC) Event Enable */\r
+#define GPIO_EVERC_P31              (0x1u << 31) /**< \brief (GPIO_EVERC) Event Enable */\r
+/* -------- GPIO_EVERT : (GPIO Offset: 0x18C) Port Event Enable Register - Toggle -------- */\r
+#define GPIO_EVERT_P0               (0x1u <<  0) /**< \brief (GPIO_EVERT) Event Enable */\r
+#define GPIO_EVERT_P1               (0x1u <<  1) /**< \brief (GPIO_EVERT) Event Enable */\r
+#define GPIO_EVERT_P2               (0x1u <<  2) /**< \brief (GPIO_EVERT) Event Enable */\r
+#define GPIO_EVERT_P3               (0x1u <<  3) /**< \brief (GPIO_EVERT) Event Enable */\r
+#define GPIO_EVERT_P4               (0x1u <<  4) /**< \brief (GPIO_EVERT) Event Enable */\r
+#define GPIO_EVERT_P5               (0x1u <<  5) /**< \brief (GPIO_EVERT) Event Enable */\r
+#define GPIO_EVERT_P6               (0x1u <<  6) /**< \brief (GPIO_EVERT) Event Enable */\r
+#define GPIO_EVERT_P7               (0x1u <<  7) /**< \brief (GPIO_EVERT) Event Enable */\r
+#define GPIO_EVERT_P8               (0x1u <<  8) /**< \brief (GPIO_EVERT) Event Enable */\r
+#define GPIO_EVERT_P9               (0x1u <<  9) /**< \brief (GPIO_EVERT) Event Enable */\r
+#define GPIO_EVERT_P10              (0x1u << 10) /**< \brief (GPIO_EVERT) Event Enable */\r
+#define GPIO_EVERT_P11              (0x1u << 11) /**< \brief (GPIO_EVERT) Event Enable */\r
+#define GPIO_EVERT_P12              (0x1u << 12) /**< \brief (GPIO_EVERT) Event Enable */\r
+#define GPIO_EVERT_P13              (0x1u << 13) /**< \brief (GPIO_EVERT) Event Enable */\r
+#define GPIO_EVERT_P14              (0x1u << 14) /**< \brief (GPIO_EVERT) Event Enable */\r
+#define GPIO_EVERT_P15              (0x1u << 15) /**< \brief (GPIO_EVERT) Event Enable */\r
+#define GPIO_EVERT_P16              (0x1u << 16) /**< \brief (GPIO_EVERT) Event Enable */\r
+#define GPIO_EVERT_P17              (0x1u << 17) /**< \brief (GPIO_EVERT) Event Enable */\r
+#define GPIO_EVERT_P18              (0x1u << 18) /**< \brief (GPIO_EVERT) Event Enable */\r
+#define GPIO_EVERT_P19              (0x1u << 19) /**< \brief (GPIO_EVERT) Event Enable */\r
+#define GPIO_EVERT_P20              (0x1u << 20) /**< \brief (GPIO_EVERT) Event Enable */\r
+#define GPIO_EVERT_P21              (0x1u << 21) /**< \brief (GPIO_EVERT) Event Enable */\r
+#define GPIO_EVERT_P22              (0x1u << 22) /**< \brief (GPIO_EVERT) Event Enable */\r
+#define GPIO_EVERT_P23              (0x1u << 23) /**< \brief (GPIO_EVERT) Event Enable */\r
+#define GPIO_EVERT_P24              (0x1u << 24) /**< \brief (GPIO_EVERT) Event Enable */\r
+#define GPIO_EVERT_P25              (0x1u << 25) /**< \brief (GPIO_EVERT) Event Enable */\r
+#define GPIO_EVERT_P26              (0x1u << 26) /**< \brief (GPIO_EVERT) Event Enable */\r
+#define GPIO_EVERT_P27              (0x1u << 27) /**< \brief (GPIO_EVERT) Event Enable */\r
+#define GPIO_EVERT_P28              (0x1u << 28) /**< \brief (GPIO_EVERT) Event Enable */\r
+#define GPIO_EVERT_P29              (0x1u << 29) /**< \brief (GPIO_EVERT) Event Enable */\r
+#define GPIO_EVERT_P30              (0x1u << 30) /**< \brief (GPIO_EVERT) Event Enable */\r
+#define GPIO_EVERT_P31              (0x1u << 31) /**< \brief (GPIO_EVERT) Event Enable */\r
+/* -------- GPIO_LOCK : (GPIO Offset: 0x1A0) Port Lock Register -------- */\r
+#define GPIO_LOCK_P0                (0x1u <<  0) /**< \brief (GPIO_LOCK) Lock State */\r
+#define GPIO_LOCK_P1                (0x1u <<  1) /**< \brief (GPIO_LOCK) Lock State */\r
+#define GPIO_LOCK_P2                (0x1u <<  2) /**< \brief (GPIO_LOCK) Lock State */\r
+#define GPIO_LOCK_P3                (0x1u <<  3) /**< \brief (GPIO_LOCK) Lock State */\r
+#define GPIO_LOCK_P4                (0x1u <<  4) /**< \brief (GPIO_LOCK) Lock State */\r
+#define GPIO_LOCK_P5                (0x1u <<  5) /**< \brief (GPIO_LOCK) Lock State */\r
+#define GPIO_LOCK_P6                (0x1u <<  6) /**< \brief (GPIO_LOCK) Lock State */\r
+#define GPIO_LOCK_P7                (0x1u <<  7) /**< \brief (GPIO_LOCK) Lock State */\r
+#define GPIO_LOCK_P8                (0x1u <<  8) /**< \brief (GPIO_LOCK) Lock State */\r
+#define GPIO_LOCK_P9                (0x1u <<  9) /**< \brief (GPIO_LOCK) Lock State */\r
+#define GPIO_LOCK_P10               (0x1u << 10) /**< \brief (GPIO_LOCK) Lock State */\r
+#define GPIO_LOCK_P11               (0x1u << 11) /**< \brief (GPIO_LOCK) Lock State */\r
+#define GPIO_LOCK_P12               (0x1u << 12) /**< \brief (GPIO_LOCK) Lock State */\r
+#define GPIO_LOCK_P13               (0x1u << 13) /**< \brief (GPIO_LOCK) Lock State */\r
+#define GPIO_LOCK_P14               (0x1u << 14) /**< \brief (GPIO_LOCK) Lock State */\r
+#define GPIO_LOCK_P15               (0x1u << 15) /**< \brief (GPIO_LOCK) Lock State */\r
+#define GPIO_LOCK_P16               (0x1u << 16) /**< \brief (GPIO_LOCK) Lock State */\r
+#define GPIO_LOCK_P17               (0x1u << 17) /**< \brief (GPIO_LOCK) Lock State */\r
+#define GPIO_LOCK_P18               (0x1u << 18) /**< \brief (GPIO_LOCK) Lock State */\r
+#define GPIO_LOCK_P19               (0x1u << 19) /**< \brief (GPIO_LOCK) Lock State */\r
+#define GPIO_LOCK_P20               (0x1u << 20) /**< \brief (GPIO_LOCK) Lock State */\r
+#define GPIO_LOCK_P21               (0x1u << 21) /**< \brief (GPIO_LOCK) Lock State */\r
+#define GPIO_LOCK_P22               (0x1u << 22) /**< \brief (GPIO_LOCK) Lock State */\r
+#define GPIO_LOCK_P23               (0x1u << 23) /**< \brief (GPIO_LOCK) Lock State */\r
+#define GPIO_LOCK_P24               (0x1u << 24) /**< \brief (GPIO_LOCK) Lock State */\r
+#define GPIO_LOCK_P25               (0x1u << 25) /**< \brief (GPIO_LOCK) Lock State */\r
+#define GPIO_LOCK_P26               (0x1u << 26) /**< \brief (GPIO_LOCK) Lock State */\r
+#define GPIO_LOCK_P27               (0x1u << 27) /**< \brief (GPIO_LOCK) Lock State */\r
+#define GPIO_LOCK_P28               (0x1u << 28) /**< \brief (GPIO_LOCK) Lock State */\r
+#define GPIO_LOCK_P29               (0x1u << 29) /**< \brief (GPIO_LOCK) Lock State */\r
+#define GPIO_LOCK_P30               (0x1u << 30) /**< \brief (GPIO_LOCK) Lock State */\r
+#define GPIO_LOCK_P31               (0x1u << 31) /**< \brief (GPIO_LOCK) Lock State */\r
+/* -------- GPIO_LOCKS : (GPIO Offset: 0x1A4) Port Lock Register - Set -------- */\r
+#define GPIO_LOCKS_P0               (0x1u <<  0) /**< \brief (GPIO_LOCKS) Lock State */\r
+#define GPIO_LOCKS_P1               (0x1u <<  1) /**< \brief (GPIO_LOCKS) Lock State */\r
+#define GPIO_LOCKS_P2               (0x1u <<  2) /**< \brief (GPIO_LOCKS) Lock State */\r
+#define GPIO_LOCKS_P3               (0x1u <<  3) /**< \brief (GPIO_LOCKS) Lock State */\r
+#define GPIO_LOCKS_P4               (0x1u <<  4) /**< \brief (GPIO_LOCKS) Lock State */\r
+#define GPIO_LOCKS_P5               (0x1u <<  5) /**< \brief (GPIO_LOCKS) Lock State */\r
+#define GPIO_LOCKS_P6               (0x1u <<  6) /**< \brief (GPIO_LOCKS) Lock State */\r
+#define GPIO_LOCKS_P7               (0x1u <<  7) /**< \brief (GPIO_LOCKS) Lock State */\r
+#define GPIO_LOCKS_P8               (0x1u <<  8) /**< \brief (GPIO_LOCKS) Lock State */\r
+#define GPIO_LOCKS_P9               (0x1u <<  9) /**< \brief (GPIO_LOCKS) Lock State */\r
+#define GPIO_LOCKS_P10              (0x1u << 10) /**< \brief (GPIO_LOCKS) Lock State */\r
+#define GPIO_LOCKS_P11              (0x1u << 11) /**< \brief (GPIO_LOCKS) Lock State */\r
+#define GPIO_LOCKS_P12              (0x1u << 12) /**< \brief (GPIO_LOCKS) Lock State */\r
+#define GPIO_LOCKS_P13              (0x1u << 13) /**< \brief (GPIO_LOCKS) Lock State */\r
+#define GPIO_LOCKS_P14              (0x1u << 14) /**< \brief (GPIO_LOCKS) Lock State */\r
+#define GPIO_LOCKS_P15              (0x1u << 15) /**< \brief (GPIO_LOCKS) Lock State */\r
+#define GPIO_LOCKS_P16              (0x1u << 16) /**< \brief (GPIO_LOCKS) Lock State */\r
+#define GPIO_LOCKS_P17              (0x1u << 17) /**< \brief (GPIO_LOCKS) Lock State */\r
+#define GPIO_LOCKS_P18              (0x1u << 18) /**< \brief (GPIO_LOCKS) Lock State */\r
+#define GPIO_LOCKS_P19              (0x1u << 19) /**< \brief (GPIO_LOCKS) Lock State */\r
+#define GPIO_LOCKS_P20              (0x1u << 20) /**< \brief (GPIO_LOCKS) Lock State */\r
+#define GPIO_LOCKS_P21              (0x1u << 21) /**< \brief (GPIO_LOCKS) Lock State */\r
+#define GPIO_LOCKS_P22              (0x1u << 22) /**< \brief (GPIO_LOCKS) Lock State */\r
+#define GPIO_LOCKS_P23              (0x1u << 23) /**< \brief (GPIO_LOCKS) Lock State */\r
+#define GPIO_LOCKS_P24              (0x1u << 24) /**< \brief (GPIO_LOCKS) Lock State */\r
+#define GPIO_LOCKS_P25              (0x1u << 25) /**< \brief (GPIO_LOCKS) Lock State */\r
+#define GPIO_LOCKS_P26              (0x1u << 26) /**< \brief (GPIO_LOCKS) Lock State */\r
+#define GPIO_LOCKS_P27              (0x1u << 27) /**< \brief (GPIO_LOCKS) Lock State */\r
+#define GPIO_LOCKS_P28              (0x1u << 28) /**< \brief (GPIO_LOCKS) Lock State */\r
+#define GPIO_LOCKS_P29              (0x1u << 29) /**< \brief (GPIO_LOCKS) Lock State */\r
+#define GPIO_LOCKS_P30              (0x1u << 30) /**< \brief (GPIO_LOCKS) Lock State */\r
+#define GPIO_LOCKS_P31              (0x1u << 31) /**< \brief (GPIO_LOCKS) Lock State */\r
+/* -------- GPIO_LOCKC : (GPIO Offset: 0x1A8) Port Lock Register - Clear -------- */\r
+#define GPIO_LOCKC_P0               (0x1u <<  0) /**< \brief (GPIO_LOCKC) Lock State */\r
+#define GPIO_LOCKC_P1               (0x1u <<  1) /**< \brief (GPIO_LOCKC) Lock State */\r
+#define GPIO_LOCKC_P2               (0x1u <<  2) /**< \brief (GPIO_LOCKC) Lock State */\r
+#define GPIO_LOCKC_P3               (0x1u <<  3) /**< \brief (GPIO_LOCKC) Lock State */\r
+#define GPIO_LOCKC_P4               (0x1u <<  4) /**< \brief (GPIO_LOCKC) Lock State */\r
+#define GPIO_LOCKC_P5               (0x1u <<  5) /**< \brief (GPIO_LOCKC) Lock State */\r
+#define GPIO_LOCKC_P6               (0x1u <<  6) /**< \brief (GPIO_LOCKC) Lock State */\r
+#define GPIO_LOCKC_P7               (0x1u <<  7) /**< \brief (GPIO_LOCKC) Lock State */\r
+#define GPIO_LOCKC_P8               (0x1u <<  8) /**< \brief (GPIO_LOCKC) Lock State */\r
+#define GPIO_LOCKC_P9               (0x1u <<  9) /**< \brief (GPIO_LOCKC) Lock State */\r
+#define GPIO_LOCKC_P10              (0x1u << 10) /**< \brief (GPIO_LOCKC) Lock State */\r
+#define GPIO_LOCKC_P11              (0x1u << 11) /**< \brief (GPIO_LOCKC) Lock State */\r
+#define GPIO_LOCKC_P12              (0x1u << 12) /**< \brief (GPIO_LOCKC) Lock State */\r
+#define GPIO_LOCKC_P13              (0x1u << 13) /**< \brief (GPIO_LOCKC) Lock State */\r
+#define GPIO_LOCKC_P14              (0x1u << 14) /**< \brief (GPIO_LOCKC) Lock State */\r
+#define GPIO_LOCKC_P15              (0x1u << 15) /**< \brief (GPIO_LOCKC) Lock State */\r
+#define GPIO_LOCKC_P16              (0x1u << 16) /**< \brief (GPIO_LOCKC) Lock State */\r
+#define GPIO_LOCKC_P17              (0x1u << 17) /**< \brief (GPIO_LOCKC) Lock State */\r
+#define GPIO_LOCKC_P18              (0x1u << 18) /**< \brief (GPIO_LOCKC) Lock State */\r
+#define GPIO_LOCKC_P19              (0x1u << 19) /**< \brief (GPIO_LOCKC) Lock State */\r
+#define GPIO_LOCKC_P20              (0x1u << 20) /**< \brief (GPIO_LOCKC) Lock State */\r
+#define GPIO_LOCKC_P21              (0x1u << 21) /**< \brief (GPIO_LOCKC) Lock State */\r
+#define GPIO_LOCKC_P22              (0x1u << 22) /**< \brief (GPIO_LOCKC) Lock State */\r
+#define GPIO_LOCKC_P23              (0x1u << 23) /**< \brief (GPIO_LOCKC) Lock State */\r
+#define GPIO_LOCKC_P24              (0x1u << 24) /**< \brief (GPIO_LOCKC) Lock State */\r
+#define GPIO_LOCKC_P25              (0x1u << 25) /**< \brief (GPIO_LOCKC) Lock State */\r
+#define GPIO_LOCKC_P26              (0x1u << 26) /**< \brief (GPIO_LOCKC) Lock State */\r
+#define GPIO_LOCKC_P27              (0x1u << 27) /**< \brief (GPIO_LOCKC) Lock State */\r
+#define GPIO_LOCKC_P28              (0x1u << 28) /**< \brief (GPIO_LOCKC) Lock State */\r
+#define GPIO_LOCKC_P29              (0x1u << 29) /**< \brief (GPIO_LOCKC) Lock State */\r
+#define GPIO_LOCKC_P30              (0x1u << 30) /**< \brief (GPIO_LOCKC) Lock State */\r
+#define GPIO_LOCKC_P31              (0x1u << 31) /**< \brief (GPIO_LOCKC) Lock State */\r
+/* -------- GPIO_LOCKT : (GPIO Offset: 0x1AC) Port Lock Register - Toggle -------- */\r
+#define GPIO_LOCKT_P0               (0x1u <<  0) /**< \brief (GPIO_LOCKT) Lock State */\r
+#define GPIO_LOCKT_P1               (0x1u <<  1) /**< \brief (GPIO_LOCKT) Lock State */\r
+#define GPIO_LOCKT_P2               (0x1u <<  2) /**< \brief (GPIO_LOCKT) Lock State */\r
+#define GPIO_LOCKT_P3               (0x1u <<  3) /**< \brief (GPIO_LOCKT) Lock State */\r
+#define GPIO_LOCKT_P4               (0x1u <<  4) /**< \brief (GPIO_LOCKT) Lock State */\r
+#define GPIO_LOCKT_P5               (0x1u <<  5) /**< \brief (GPIO_LOCKT) Lock State */\r
+#define GPIO_LOCKT_P6               (0x1u <<  6) /**< \brief (GPIO_LOCKT) Lock State */\r
+#define GPIO_LOCKT_P7               (0x1u <<  7) /**< \brief (GPIO_LOCKT) Lock State */\r
+#define GPIO_LOCKT_P8               (0x1u <<  8) /**< \brief (GPIO_LOCKT) Lock State */\r
+#define GPIO_LOCKT_P9               (0x1u <<  9) /**< \brief (GPIO_LOCKT) Lock State */\r
+#define GPIO_LOCKT_P10              (0x1u << 10) /**< \brief (GPIO_LOCKT) Lock State */\r
+#define GPIO_LOCKT_P11              (0x1u << 11) /**< \brief (GPIO_LOCKT) Lock State */\r
+#define GPIO_LOCKT_P12              (0x1u << 12) /**< \brief (GPIO_LOCKT) Lock State */\r
+#define GPIO_LOCKT_P13              (0x1u << 13) /**< \brief (GPIO_LOCKT) Lock State */\r
+#define GPIO_LOCKT_P14              (0x1u << 14) /**< \brief (GPIO_LOCKT) Lock State */\r
+#define GPIO_LOCKT_P15              (0x1u << 15) /**< \brief (GPIO_LOCKT) Lock State */\r
+#define GPIO_LOCKT_P16              (0x1u << 16) /**< \brief (GPIO_LOCKT) Lock State */\r
+#define GPIO_LOCKT_P17              (0x1u << 17) /**< \brief (GPIO_LOCKT) Lock State */\r
+#define GPIO_LOCKT_P18              (0x1u << 18) /**< \brief (GPIO_LOCKT) Lock State */\r
+#define GPIO_LOCKT_P19              (0x1u << 19) /**< \brief (GPIO_LOCKT) Lock State */\r
+#define GPIO_LOCKT_P20              (0x1u << 20) /**< \brief (GPIO_LOCKT) Lock State */\r
+#define GPIO_LOCKT_P21              (0x1u << 21) /**< \brief (GPIO_LOCKT) Lock State */\r
+#define GPIO_LOCKT_P22              (0x1u << 22) /**< \brief (GPIO_LOCKT) Lock State */\r
+#define GPIO_LOCKT_P23              (0x1u << 23) /**< \brief (GPIO_LOCKT) Lock State */\r
+#define GPIO_LOCKT_P24              (0x1u << 24) /**< \brief (GPIO_LOCKT) Lock State */\r
+#define GPIO_LOCKT_P25              (0x1u << 25) /**< \brief (GPIO_LOCKT) Lock State */\r
+#define GPIO_LOCKT_P26              (0x1u << 26) /**< \brief (GPIO_LOCKT) Lock State */\r
+#define GPIO_LOCKT_P27              (0x1u << 27) /**< \brief (GPIO_LOCKT) Lock State */\r
+#define GPIO_LOCKT_P28              (0x1u << 28) /**< \brief (GPIO_LOCKT) Lock State */\r
+#define GPIO_LOCKT_P29              (0x1u << 29) /**< \brief (GPIO_LOCKT) Lock State */\r
+#define GPIO_LOCKT_P30              (0x1u << 30) /**< \brief (GPIO_LOCKT) Lock State */\r
+#define GPIO_LOCKT_P31              (0x1u << 31) /**< \brief (GPIO_LOCKT) Lock State */\r
+/* -------- GPIO_UNLOCK : (GPIO Offset: 0x1E0) Port Unlock Register -------- */\r
+#define GPIO_UNLOCK_OFFSET_Pos      0\r
+#define GPIO_UNLOCK_OFFSET_Msk      (0x3FFu << GPIO_UNLOCK_OFFSET_Pos) /**< \brief (GPIO_UNLOCK) Offset Register */\r
+#define GPIO_UNLOCK_OFFSET(value)   ((GPIO_UNLOCK_OFFSET_Msk & ((value) << GPIO_UNLOCK_OFFSET_Pos)))\r
+#define GPIO_UNLOCK_KEY_Pos         24\r
+#define GPIO_UNLOCK_KEY_Msk         (0xFFu << GPIO_UNLOCK_KEY_Pos) /**< \brief (GPIO_UNLOCK) Unlocking Key */\r
+#define GPIO_UNLOCK_KEY(value)      ((GPIO_UNLOCK_KEY_Msk & ((value) << GPIO_UNLOCK_KEY_Pos)))\r
+/* -------- GPIO_ASR : (GPIO Offset: 0x1E4) Port Access Status Register -------- */\r
+#define GPIO_ASR_AR                 (0x1u <<  0) /**< \brief (GPIO_ASR) Access Error */\r
+/* -------- GPIO_PARAMETER : (GPIO Offset: 0x1F8) Port Parameter Register -------- */\r
+#define GPIO_PARAMETER_PARAMETER_Pos    0\r
+#define GPIO_PARAMETER_PARAMETER_Msk    (0xFFFFFFFFu << GPIO_PARAMETER_PARAMETER_Pos) /**< \brief (GPIO_PARAMETER) Parameter */\r
+#define GPIO_PARAMETER_PARAMETER(value) ((GPIO_PARAMETER_PARAMETER_Msk & ((value) << GPIO_PARAMETER_PARAMETER_Pos)))\r
+/* -------- GPIO_VERSION : (GPIO Offset: 0x1FC) Port Version Register -------- */\r
+#define GPIO_VERSION_VERSION_Pos    0\r
+#define GPIO_VERSION_VERSION_Msk    (0xFFFu << GPIO_VERSION_VERSION_Pos) /**< \brief (GPIO_VERSION) Version Number */\r
+#define GPIO_VERSION_VERSION(value) ((GPIO_VERSION_VERSION_Msk & ((value) << GPIO_VERSION_VERSION_Pos)))\r
+#define GPIO_VERSION_VARIANT_Pos    16\r
+#define GPIO_VERSION_VARIANT_Msk    (0xFu << GPIO_VERSION_VARIANT_Pos) /**< \brief (GPIO_VERSION) Variant Number */\r
+#define GPIO_VERSION_VARIANT(value) ((GPIO_VERSION_VARIANT_Msk & ((value) << GPIO_VERSION_VARIANT_Pos)))\r
+\r
+/*@}*/\r
+\r
+/* ============================================================================= */\r
+/**  SOFTWARE API DEFINITION FOR HCACHE */\r
+/* ============================================================================= */\r
+/** \addtogroup SAM4L_HCACHE Cortex M I&D Cache Controller */\r
+/*@{*/\r
+\r
+#define REV_HCACHE     0x101\r
+\r
+#ifndef __ASSEMBLY__\r
+/** \brief HCACHE hardware registers */\r
+typedef struct {\r
+  RoReg   Reserved1[2];\r
+  WoReg   HCACHE_CTRL;        /**< \brief (HCACHE Offset: 0x08) Control Register */\r
+  RwReg   HCACHE_SR;          /**< \brief (HCACHE Offset: 0x0C) Status Register */\r
+  RoReg   Reserved2[4];\r
+  WoReg   HCACHE_MAINT0;      /**< \brief (HCACHE Offset: 0x20) Maintenance Register 0 */\r
+  WoReg   HCACHE_MAINT1;      /**< \brief (HCACHE Offset: 0x24) Maintenance Register 1 */\r
+  RwReg   HCACHE_MCFG;        /**< \brief (HCACHE Offset: 0x28) Monitor Configuration Register */\r
+  RwReg   HCACHE_MEN;         /**< \brief (HCACHE Offset: 0x2C) Monitor Enable Register */\r
+  WoReg   HCACHE_MCTRL;       /**< \brief (HCACHE Offset: 0x30) Monitor Control Register */\r
+  RoReg   HCACHE_MSR;         /**< \brief (HCACHE Offset: 0x34) Monitor Status Register */\r
+  RoReg   Reserved3[49];\r
+  RoReg   HCACHE_VERSION;     /**< \brief (HCACHE Offset: 0xFC) Version Register */\r
+} Hcache;\r
+#endif /* __ASSEMBLY__ */\r
+/* -------- HCACHE_CTRL : (HCACHE Offset: 0x08) Control Register -------- */\r
+#define HCACHE_CTRL_CEN             (0x1u <<  0) /**< \brief (HCACHE_CTRL) Cache Enable */\r
+#define   HCACHE_CTRL_CEN_NO        (0x0u <<  0) /**< \brief (HCACHE_CTRL) Disable Cache Controller */\r
+#define   HCACHE_CTRL_CEN_YES       (0x1u <<  0) /**< \brief (HCACHE_CTRL) Enable Cache Controller */\r
+/* -------- HCACHE_SR : (HCACHE Offset: 0x0C) Status Register -------- */\r
+#define HCACHE_SR_CSTS              (0x1u <<  0) /**< \brief (HCACHE_SR) Cache Controller Status */\r
+#define   HCACHE_SR_CSTS_DIS        (0x0u <<  0) /**< \brief (HCACHE_SR) Cache Controller Disabled */\r
+#define   HCACHE_SR_CSTS_EN         (0x1u <<  0) /**< \brief (HCACHE_SR) Cache Controller Enabled */\r
+/* -------- HCACHE_MAINT0 : (HCACHE Offset: 0x20) Maintenance Register 0 -------- */\r
+#define HCACHE_MAINT0_INVALL        (0x1u <<  0) /**< \brief (HCACHE_MAINT0) Cache Controller Invalidate All */\r
+#define   HCACHE_MAINT0_INVALL_NO   (0x0u <<  0) /**< \brief (HCACHE_MAINT0) No effect */\r
+#define   HCACHE_MAINT0_INVALL_YES  (0x1u <<  0) /**< \brief (HCACHE_MAINT0) Invalidate all cache entries */\r
+/* -------- HCACHE_MAINT1 : (HCACHE Offset: 0x24) Maintenance Register 1 -------- */\r
+#define HCACHE_MAINT1_INDEX_Pos     4\r
+#define HCACHE_MAINT1_INDEX_Msk     (0xFu << HCACHE_MAINT1_INDEX_Pos) /**< \brief (HCACHE_MAINT1) Invalidate Index */\r
+#define HCACHE_MAINT1_INDEX(value)  ((HCACHE_MAINT1_INDEX_Msk & ((value) << HCACHE_MAINT1_INDEX_Pos)))\r
+/* -------- HCACHE_MCFG : (HCACHE Offset: 0x28) Monitor Configuration Register -------- */\r
+#define HCACHE_MCFG_MODE_Pos        0\r
+#define HCACHE_MCFG_MODE_Msk        (0x3u << HCACHE_MCFG_MODE_Pos) /**< \brief (HCACHE_MCFG) Cache Controller Monitor Counter Mode */\r
+#define HCACHE_MCFG_MODE(value)     ((HCACHE_MCFG_MODE_Msk & ((value) << HCACHE_MCFG_MODE_Pos)))\r
+#define   HCACHE_MCFG_MODE_CYCLE    (0x0u <<  0) /**< \brief (HCACHE_MCFG) Cycle Counter */\r
+#define   HCACHE_MCFG_MODE_IHIT     (0x1u <<  0) /**< \brief (HCACHE_MCFG) Instruction Hit Counter */\r
+#define   HCACHE_MCFG_MODE_DHIT     (0x2u <<  0) /**< \brief (HCACHE_MCFG) Data Hit Counter */\r
+/* -------- HCACHE_MEN : (HCACHE Offset: 0x2C) Monitor Enable Register -------- */\r
+#define HCACHE_MEN_MENABLE          (0x1u <<  0) /**< \brief (HCACHE_MEN) Monitor Enable */\r
+#define   HCACHE_MEN_MENABLE_DIS    (0x0u <<  0) /**< \brief (HCACHE_MEN) Disable Monitor Counter */\r
+#define   HCACHE_MEN_MENABLE_EN     (0x1u <<  0) /**< \brief (HCACHE_MEN) Enable Monitor Counter */\r
+/* -------- HCACHE_MCTRL : (HCACHE Offset: 0x30) Monitor Control Register -------- */\r
+#define HCACHE_MCTRL_SWRST          (0x1u <<  0) /**< \brief (HCACHE_MCTRL) Monitor Software Reset */\r
+#define   HCACHE_MCTRL_SWRST_NO     (0x0u <<  0) /**< \brief (HCACHE_MCTRL) No effect */\r
+#define   HCACHE_MCTRL_SWRST_YES    (0x1u <<  0) /**< \brief (HCACHE_MCTRL) Reset event counter register */\r
+/* -------- HCACHE_MSR : (HCACHE Offset: 0x34) Monitor Status Register -------- */\r
+#define HCACHE_MSR_EVENTCNT_Pos     0\r
+#define HCACHE_MSR_EVENTCNT_Msk     (0xFFFFFFFFu << HCACHE_MSR_EVENTCNT_Pos) /**< \brief (HCACHE_MSR) Monitor Event Counter */\r
+#define HCACHE_MSR_EVENTCNT(value)  ((HCACHE_MSR_EVENTCNT_Msk & ((value) << HCACHE_MSR_EVENTCNT_Pos)))\r
+/* -------- HCACHE_VERSION : (HCACHE Offset: 0xFC) Version Register -------- */\r
+#define HCACHE_VERSION_VERSION_Pos    0\r
+#define HCACHE_VERSION_VERSION_Msk    (0xFFFu << HCACHE_VERSION_VERSION_Pos) /**< \brief (HCACHE_VERSION) VERSION */\r
+#define HCACHE_VERSION_VERSION(value) ((HCACHE_VERSION_VERSION_Msk & ((value) << HCACHE_VERSION_VERSION_Pos)))\r
+#define HCACHE_VERSION_MFN_Pos      16\r
+#define HCACHE_VERSION_MFN_Msk      (0xFu << HCACHE_VERSION_MFN_Pos) /**< \brief (HCACHE_VERSION) MFN */\r
+#define HCACHE_VERSION_MFN(value)   ((HCACHE_VERSION_MFN_Msk & ((value) << HCACHE_VERSION_MFN_Pos)))\r
+\r
+/*@}*/\r
+\r
+/* ============================================================================= */\r
+/**  SOFTWARE API DEFINITION FOR HMATRIXB */\r
+/* ============================================================================= */\r
+/** \addtogroup SAM4L_HMATRIXB HSB Matrix */\r
+/*@{*/\r
+\r
+#define REV_HMATRIXB   0x130\r
+\r
+#ifndef __ASSEMBLY__\r
+/** \brief HmatrixbMcfg hardware registers */\r
+typedef struct {\r
+  RwReg   HMATRIXB_MCFG; /**< \brief (HmatrixbMcfg Offset: 0x000) Master Configuration Register 0 */\r
+} HmatrixbMcfg;\r
+/** \brief HmatrixbPrs hardware registers */\r
+typedef struct {\r
+  RwReg   HMATRIXB_PRAS; /**< \brief (HmatrixbPrs Offset: 0x000) Priority Register A for Slave 0 */\r
+  RwReg   HMATRIXB_PRBS; /**< \brief (HmatrixbPrs Offset: 0x004) Priority Register B for Slave 0 */\r
+} HmatrixbPrs;\r
+/** \brief HmatrixbScfg hardware registers */\r
+typedef struct {\r
+  RwReg   HMATRIXB_SCFG; /**< \brief (HmatrixbScfg Offset: 0x000) Slave Configuration Register 0 */\r
+} HmatrixbScfg;\r
+/** \brief HmatrixbSfr hardware registers */\r
+typedef struct {\r
+  RwReg   HMATRIXB_SFR; /**< \brief (HmatrixbSfr Offset: 0x000) Special Function Register 0 */\r
+} HmatrixbSfr;\r
+/** \brief HMATRIXB hardware registers */\r
+typedef struct {\r
+  HmatrixbMcfg HMATRIXB_MCFG[16]; /**< \brief (HMATRIXB Offset: 0x000) HmatrixbMcfg groups */\r
+  HmatrixbScfg HMATRIXB_SCFG[16]; /**< \brief (HMATRIXB Offset: 0x040) HmatrixbScfg groups */\r
+  HmatrixbPrs HMATRIXB_PRS[16]; /**< \brief (HMATRIXB Offset: 0x080) HmatrixbPrs groups */\r
+  RwReg   HMATRIXB_MRCR;        /**< \brief (HMATRIXB Offset: 0x100) Master Remap Control Register */\r
+  RoReg   Reserved1[3];\r
+  HmatrixbSfr HMATRIXB_SFR[16]; /**< \brief (HMATRIXB Offset: 0x110) HmatrixbSfr groups */\r
+} Hmatrixb;\r
+#endif /* __ASSEMBLY__ */\r
+/* -------- HMATRIXB_MCFG : (HMATRIXB Offset: 0x000) Mcfg Master Configuration Register 0 -------- */\r
+#define HMATRIXB_MCFG_ULBT_Pos      0\r
+#define HMATRIXB_MCFG_ULBT_Msk      (0x7u << HMATRIXB_MCFG_ULBT_Pos) /**< \brief (HMATRIXB_MCFG) Undefined Length Burst Type */\r
+#define HMATRIXB_MCFG_ULBT(value)   ((HMATRIXB_MCFG_ULBT_Msk & ((value) << HMATRIXB_MCFG_ULBT_Pos)))\r
+#define   HMATRIXB_MCFG_ULBT_INFINITE (0x0u <<  0) /**< \brief (HMATRIXB_MCFG) Infinite Length */\r
+#define   HMATRIXB_MCFG_ULBT_SINGLE (0x1u <<  0) /**< \brief (HMATRIXB_MCFG) Single Access */\r
+#define   HMATRIXB_MCFG_ULBT_FOUR_BEAT (0x2u <<  0) /**< \brief (HMATRIXB_MCFG) Four Beat Burst */\r
+#define   HMATRIXB_MCFG_ULBT_EIGHT_BEAT (0x3u <<  0) /**< \brief (HMATRIXB_MCFG) Eight Beat Burst */\r
+#define   HMATRIXB_MCFG_ULBT_SIXTEEN_BEAT (0x4u <<  0) /**< \brief (HMATRIXB_MCFG) Sixteen Beat Burst */\r
+/* -------- HMATRIXB_SCFG : (HMATRIXB Offset: 0x040) Scfg Slave Configuration Register 0 -------- */\r
+#define HMATRIXB_SCFG_SLOT_CYCLE_Pos    0\r
+#define HMATRIXB_SCFG_SLOT_CYCLE_Msk    (0xFFu << HMATRIXB_SCFG_SLOT_CYCLE_Pos) /**< \brief (HMATRIXB_SCFG) Maximum Number of Allowed Cycles for a Burst */\r
+#define HMATRIXB_SCFG_SLOT_CYCLE(value) ((HMATRIXB_SCFG_SLOT_CYCLE_Msk & ((value) << HMATRIXB_SCFG_SLOT_CYCLE_Pos)))\r
+#define HMATRIXB_SCFG_DEFMSTR_TYPE_Pos    16\r
+#define HMATRIXB_SCFG_DEFMSTR_TYPE_Msk    (0x3u << HMATRIXB_SCFG_DEFMSTR_TYPE_Pos) /**< \brief (HMATRIXB_SCFG) Default Master Type */\r
+#define HMATRIXB_SCFG_DEFMSTR_TYPE(value) ((HMATRIXB_SCFG_DEFMSTR_TYPE_Msk & ((value) << HMATRIXB_SCFG_DEFMSTR_TYPE_Pos)))\r
+#define   HMATRIXB_SCFG_DEFMSTR_TYPE_NO_DEFAULT (0x0u << 16) /**< \brief (HMATRIXB_SCFG) No Default Master. At the end of current slave access, if no other master request is pending, the slave is deconnected from all masters. This resusts in having a one cycle latency for the first transfer of a burst. */\r
+#define   HMATRIXB_SCFG_DEFMSTR_TYPE_LAST_DEFAULT (0x1u << 16) /**< \brief (HMATRIXB_SCFG) Last Default Master At the end of current slave access, if no other master request is pending, the slave stay connected with the last master havingaccessed it.This resusts in not having the one cycle latency when the last master re-trying access on the slave. */\r
+#define   HMATRIXB_SCFG_DEFMSTR_TYPE_FIXED_DEFAULT (0x2u << 16) /**< \brief (HMATRIXB_SCFG) Fixed Default Master At the end of current slave access, if no other master request is pending, the slave connects with fixed master which numberis in FIXED_DEFMSTR register.This resusts in not having the one cycle latency when the fixed master re-trying access on the slave. */\r
+#define HMATRIXB_SCFG_FIXED_DEFMSTR_Pos    18\r
+#define HMATRIXB_SCFG_FIXED_DEFMSTR_Msk    (0xFu << HMATRIXB_SCFG_FIXED_DEFMSTR_Pos) /**< \brief (HMATRIXB_SCFG) Fixed Index of Default Master */\r
+#define HMATRIXB_SCFG_FIXED_DEFMSTR(value) ((HMATRIXB_SCFG_FIXED_DEFMSTR_Msk & ((value) << HMATRIXB_SCFG_FIXED_DEFMSTR_Pos)))\r
+#define HMATRIXB_SCFG_ARBT          (0x1u << 24) /**< \brief (HMATRIXB_SCFG) Arbitration Type */\r
+#define   HMATRIXB_SCFG_ARBT_ROUND_ROBIN (0x0u << 24) /**< \brief (HMATRIXB_SCFG) Round-Robin Arbitration */\r
+#define   HMATRIXB_SCFG_ARBT_FIXED_PRIORITY (0x1u << 24) /**< \brief (HMATRIXB_SCFG) Fixed Priority Arbitration */\r
+/* -------- HMATRIXB_PRAS : (HMATRIXB Offset: 0x080) Prs Priority Register A for Slave 0 -------- */\r
+#define HMATRIXB_PRAS_M0PR_Pos      0\r
+#define HMATRIXB_PRAS_M0PR_Msk      (0xFu << HMATRIXB_PRAS_M0PR_Pos) /**< \brief (HMATRIXB_PRAS) Master 0 Priority */\r
+#define HMATRIXB_PRAS_M0PR(value)   ((HMATRIXB_PRAS_M0PR_Msk & ((value) << HMATRIXB_PRAS_M0PR_Pos)))\r
+#define HMATRIXB_PRAS_M1PR_Pos      4\r
+#define HMATRIXB_PRAS_M1PR_Msk      (0xFu << HMATRIXB_PRAS_M1PR_Pos) /**< \brief (HMATRIXB_PRAS) Master 1 Priority */\r
+#define HMATRIXB_PRAS_M1PR(value)   ((HMATRIXB_PRAS_M1PR_Msk & ((value) << HMATRIXB_PRAS_M1PR_Pos)))\r
+#define HMATRIXB_PRAS_M2PR_Pos      8\r
+#define HMATRIXB_PRAS_M2PR_Msk      (0xFu << HMATRIXB_PRAS_M2PR_Pos) /**< \brief (HMATRIXB_PRAS) Master 2 Priority */\r
+#define HMATRIXB_PRAS_M2PR(value)   ((HMATRIXB_PRAS_M2PR_Msk & ((value) << HMATRIXB_PRAS_M2PR_Pos)))\r
+#define HMATRIXB_PRAS_M3PR_Pos      12\r
+#define HMATRIXB_PRAS_M3PR_Msk      (0xFu << HMATRIXB_PRAS_M3PR_Pos) /**< \brief (HMATRIXB_PRAS) Master 3 Priority */\r
+#define HMATRIXB_PRAS_M3PR(value)   ((HMATRIXB_PRAS_M3PR_Msk & ((value) << HMATRIXB_PRAS_M3PR_Pos)))\r
+#define HMATRIXB_PRAS_M4PR_Pos      16\r
+#define HMATRIXB_PRAS_M4PR_Msk      (0xFu << HMATRIXB_PRAS_M4PR_Pos) /**< \brief (HMATRIXB_PRAS) Master 4 Priority */\r
+#define HMATRIXB_PRAS_M4PR(value)   ((HMATRIXB_PRAS_M4PR_Msk & ((value) << HMATRIXB_PRAS_M4PR_Pos)))\r
+#define HMATRIXB_PRAS_M5PR_Pos      20\r
+#define HMATRIXB_PRAS_M5PR_Msk      (0xFu << HMATRIXB_PRAS_M5PR_Pos) /**< \brief (HMATRIXB_PRAS) Master 5 Priority */\r
+#define HMATRIXB_PRAS_M5PR(value)   ((HMATRIXB_PRAS_M5PR_Msk & ((value) << HMATRIXB_PRAS_M5PR_Pos)))\r
+#define HMATRIXB_PRAS_M6PR_Pos      24\r
+#define HMATRIXB_PRAS_M6PR_Msk      (0xFu << HMATRIXB_PRAS_M6PR_Pos) /**< \brief (HMATRIXB_PRAS) Master 6 Priority */\r
+#define HMATRIXB_PRAS_M6PR(value)   ((HMATRIXB_PRAS_M6PR_Msk & ((value) << HMATRIXB_PRAS_M6PR_Pos)))\r
+#define HMATRIXB_PRAS_M7PR_Pos      28\r
+#define HMATRIXB_PRAS_M7PR_Msk      (0xFu << HMATRIXB_PRAS_M7PR_Pos) /**< \brief (HMATRIXB_PRAS) Master 7 Priority */\r
+#define HMATRIXB_PRAS_M7PR(value)   ((HMATRIXB_PRAS_M7PR_Msk & ((value) << HMATRIXB_PRAS_M7PR_Pos)))\r
+/* -------- HMATRIXB_PRBS : (HMATRIXB Offset: 0x084) Prs Priority Register B for Slave 0 -------- */\r
+#define HMATRIXB_PRBS_M8PR_Pos      0\r
+#define HMATRIXB_PRBS_M8PR_Msk      (0xFu << HMATRIXB_PRBS_M8PR_Pos) /**< \brief (HMATRIXB_PRBS) Master 8 Priority */\r
+#define HMATRIXB_PRBS_M8PR(value)   ((HMATRIXB_PRBS_M8PR_Msk & ((value) << HMATRIXB_PRBS_M8PR_Pos)))\r
+#define HMATRIXB_PRBS_M9PR_Pos      4\r
+#define HMATRIXB_PRBS_M9PR_Msk      (0xFu << HMATRIXB_PRBS_M9PR_Pos) /**< \brief (HMATRIXB_PRBS) Master 9 Priority */\r
+#define HMATRIXB_PRBS_M9PR(value)   ((HMATRIXB_PRBS_M9PR_Msk & ((value) << HMATRIXB_PRBS_M9PR_Pos)))\r
+#define HMATRIXB_PRBS_M10PR_Pos     8\r
+#define HMATRIXB_PRBS_M10PR_Msk     (0xFu << HMATRIXB_PRBS_M10PR_Pos) /**< \brief (HMATRIXB_PRBS) Master 10 Priority */\r
+#define HMATRIXB_PRBS_M10PR(value)  ((HMATRIXB_PRBS_M10PR_Msk & ((value) << HMATRIXB_PRBS_M10PR_Pos)))\r
+#define HMATRIXB_PRBS_M11PR_Pos     12\r
+#define HMATRIXB_PRBS_M11PR_Msk     (0xFu << HMATRIXB_PRBS_M11PR_Pos) /**< \brief (HMATRIXB_PRBS) Master 11 Priority */\r
+#define HMATRIXB_PRBS_M11PR(value)  ((HMATRIXB_PRBS_M11PR_Msk & ((value) << HMATRIXB_PRBS_M11PR_Pos)))\r
+#define HMATRIXB_PRBS_M12PR_Pos     16\r
+#define HMATRIXB_PRBS_M12PR_Msk     (0xFu << HMATRIXB_PRBS_M12PR_Pos) /**< \brief (HMATRIXB_PRBS) Master 12 Priority */\r
+#define HMATRIXB_PRBS_M12PR(value)  ((HMATRIXB_PRBS_M12PR_Msk & ((value) << HMATRIXB_PRBS_M12PR_Pos)))\r
+#define HMATRIXB_PRBS_M13PR_Pos     20\r
+#define HMATRIXB_PRBS_M13PR_Msk     (0xFu << HMATRIXB_PRBS_M13PR_Pos) /**< \brief (HMATRIXB_PRBS) Master 13 Priority */\r
+#define HMATRIXB_PRBS_M13PR(value)  ((HMATRIXB_PRBS_M13PR_Msk & ((value) << HMATRIXB_PRBS_M13PR_Pos)))\r
+#define HMATRIXB_PRBS_M14PR_Pos     24\r
+#define HMATRIXB_PRBS_M14PR_Msk     (0xFu << HMATRIXB_PRBS_M14PR_Pos) /**< \brief (HMATRIXB_PRBS) Master 14 Priority */\r
+#define HMATRIXB_PRBS_M14PR(value)  ((HMATRIXB_PRBS_M14PR_Msk & ((value) << HMATRIXB_PRBS_M14PR_Pos)))\r
+#define HMATRIXB_PRBS_M15PR_Pos     28\r
+#define HMATRIXB_PRBS_M15PR_Msk     (0xFu << HMATRIXB_PRBS_M15PR_Pos) /**< \brief (HMATRIXB_PRBS) Master 15 Priority */\r
+#define HMATRIXB_PRBS_M15PR(value)  ((HMATRIXB_PRBS_M15PR_Msk & ((value) << HMATRIXB_PRBS_M15PR_Pos)))\r
+/* -------- HMATRIXB_MRCR : (HMATRIXB Offset: 0x100) Master Remap Control Register -------- */\r
+#define HMATRIXB_MRCR_RCB0          (0x1u <<  0) /**< \brief (HMATRIXB_MRCR) Remap Command bit for Master 0 */\r
+#define   HMATRIXB_MRCR_RCB0_0      (0x0u <<  0) /**< \brief (HMATRIXB_MRCR) Disable remapped address decoding for master */\r
+#define   HMATRIXB_MRCR_RCB0_1      (0x1u <<  0) /**< \brief (HMATRIXB_MRCR) Enable remapped address decoding for master */\r
+#define HMATRIXB_MRCR_RCB1          (0x1u <<  1) /**< \brief (HMATRIXB_MRCR) Remap Command bit for Master 1 */\r
+#define   HMATRIXB_MRCR_RCB1_0      (0x0u <<  1) /**< \brief (HMATRIXB_MRCR) Disable remapped address decoding for master */\r
+#define   HMATRIXB_MRCR_RCB1_1      (0x1u <<  1) /**< \brief (HMATRIXB_MRCR) Enable remapped address decoding for master */\r
+#define HMATRIXB_MRCR_RCB2          (0x1u <<  2) /**< \brief (HMATRIXB_MRCR) Remap Command bit for Master 2 */\r
+#define   HMATRIXB_MRCR_RCB2_0      (0x0u <<  2) /**< \brief (HMATRIXB_MRCR) Disable remapped address decoding for master */\r
+#define   HMATRIXB_MRCR_RCB2_1      (0x1u <<  2) /**< \brief (HMATRIXB_MRCR) Enable remapped address decoding for master */\r
+#define HMATRIXB_MRCR_RCB3          (0x1u <<  3) /**< \brief (HMATRIXB_MRCR) Remap Command bit for Master 3 */\r
+#define   HMATRIXB_MRCR_RCB3_0      (0x0u <<  3) /**< \brief (HMATRIXB_MRCR) Disable remapped address decoding for master */\r
+#define   HMATRIXB_MRCR_RCB3_1      (0x1u <<  3) /**< \brief (HMATRIXB_MRCR) Enable remapped address decoding for master */\r
+#define HMATRIXB_MRCR_RCB4          (0x1u <<  4) /**< \brief (HMATRIXB_MRCR) Remap Command bit for Master 4 */\r
+#define   HMATRIXB_MRCR_RCB4_0      (0x0u <<  4) /**< \brief (HMATRIXB_MRCR) Disable remapped address decoding for master */\r
+#define   HMATRIXB_MRCR_RCB4_1      (0x1u <<  4) /**< \brief (HMATRIXB_MRCR) Enable remapped address decoding for master */\r
+#define HMATRIXB_MRCR_RCB5          (0x1u <<  5) /**< \brief (HMATRIXB_MRCR) Remap Command bit for Master 5 */\r
+#define   HMATRIXB_MRCR_RCB5_0      (0x0u <<  5) /**< \brief (HMATRIXB_MRCR) Disable remapped address decoding for master */\r
+#define   HMATRIXB_MRCR_RCB5_1      (0x1u <<  5) /**< \brief (HMATRIXB_MRCR) Enable remapped address decoding for master */\r
+#define HMATRIXB_MRCR_RCB6          (0x1u <<  6) /**< \brief (HMATRIXB_MRCR) Remap Command bit for Master 6 */\r
+#define   HMATRIXB_MRCR_RCB6_0      (0x0u <<  6) /**< \brief (HMATRIXB_MRCR) Disable remapped address decoding for master */\r
+#define   HMATRIXB_MRCR_RCB6_1      (0x1u <<  6) /**< \brief (HMATRIXB_MRCR) Enable remapped address decoding for master */\r
+#define HMATRIXB_MRCR_RCB7          (0x1u <<  7) /**< \brief (HMATRIXB_MRCR) Remap Command bit for Master 7 */\r
+#define   HMATRIXB_MRCR_RCB7_0      (0x0u <<  7) /**< \brief (HMATRIXB_MRCR) Disable remapped address decoding for master */\r
+#define   HMATRIXB_MRCR_RCB7_1      (0x1u <<  7) /**< \brief (HMATRIXB_MRCR) Enable remapped address decoding for master */\r
+#define HMATRIXB_MRCR_RCB8          (0x1u <<  8) /**< \brief (HMATRIXB_MRCR) Remap Command bit for Master 8 */\r
+#define   HMATRIXB_MRCR_RCB8_0      (0x0u <<  8) /**< \brief (HMATRIXB_MRCR) Disable remapped address decoding for master */\r
+#define   HMATRIXB_MRCR_RCB8_1      (0x1u <<  8) /**< \brief (HMATRIXB_MRCR) Enable remapped address decoding for master */\r
+#define HMATRIXB_MRCR_RCB9          (0x1u <<  9) /**< \brief (HMATRIXB_MRCR) Remap Command bit for Master 9 */\r
+#define   HMATRIXB_MRCR_RCB9_0      (0x0u <<  9) /**< \brief (HMATRIXB_MRCR) Disable remapped address decoding for master */\r
+#define   HMATRIXB_MRCR_RCB9_1      (0x1u <<  9) /**< \brief (HMATRIXB_MRCR) Enable remapped address decoding for master */\r
+#define HMATRIXB_MRCR_RCB10         (0x1u << 10) /**< \brief (HMATRIXB_MRCR) Remap Command bit for Master 10 */\r
+#define   HMATRIXB_MRCR_RCB10_0     (0x0u << 10) /**< \brief (HMATRIXB_MRCR) Disable remapped address decoding for master */\r
+#define   HMATRIXB_MRCR_RCB10_1     (0x1u << 10) /**< \brief (HMATRIXB_MRCR) Enable remapped address decoding for master */\r
+#define HMATRIXB_MRCR_RCB11         (0x1u << 11) /**< \brief (HMATRIXB_MRCR) Remap Command bit for Master 11 */\r
+#define   HMATRIXB_MRCR_RCB11_0     (0x0u << 11) /**< \brief (HMATRIXB_MRCR) Disable remapped address decoding for master */\r
+#define   HMATRIXB_MRCR_RCB11_1     (0x1u << 11) /**< \brief (HMATRIXB_MRCR) Enable remapped address decoding for master */\r
+#define HMATRIXB_MRCR_RCB12         (0x1u << 12) /**< \brief (HMATRIXB_MRCR) Remap Command bit for Master 12 */\r
+#define   HMATRIXB_MRCR_RCB12_0     (0x0u << 12) /**< \brief (HMATRIXB_MRCR) Disable remapped address decoding for master */\r
+#define   HMATRIXB_MRCR_RCB12_1     (0x1u << 12) /**< \brief (HMATRIXB_MRCR) Enable remapped address decoding for master */\r
+#define HMATRIXB_MRCR_RCB13         (0x1u << 13) /**< \brief (HMATRIXB_MRCR) Remap Command bit for Master 13 */\r
+#define   HMATRIXB_MRCR_RCB13_0     (0x0u << 13) /**< \brief (HMATRIXB_MRCR) Disable remapped address decoding for master */\r
+#define   HMATRIXB_MRCR_RCB13_1     (0x1u << 13) /**< \brief (HMATRIXB_MRCR) Enable remapped address decoding for master */\r
+#define HMATRIXB_MRCR_RCB14         (0x1u << 14) /**< \brief (HMATRIXB_MRCR) Remap Command bit for Master 14 */\r
+#define   HMATRIXB_MRCR_RCB14_0     (0x0u << 14) /**< \brief (HMATRIXB_MRCR) Disable remapped address decoding for master */\r
+#define   HMATRIXB_MRCR_RCB14_1     (0x1u << 14) /**< \brief (HMATRIXB_MRCR) Enable remapped address decoding for master */\r
+#define HMATRIXB_MRCR_RCB15         (0x1u << 15) /**< \brief (HMATRIXB_MRCR) Remap Command bit for Master 15 */\r
+#define   HMATRIXB_MRCR_RCB15_0     (0x0u << 15) /**< \brief (HMATRIXB_MRCR) Disable remapped address decoding for master */\r
+#define   HMATRIXB_MRCR_RCB15_1     (0x1u << 15) /**< \brief (HMATRIXB_MRCR) Enable remapped address decoding for master */\r
+/* -------- HMATRIXB_SFR : (HMATRIXB Offset: 0x110) Sfr Special Function Register 0 -------- */\r
+#define HMATRIXB_SFR_SFR_Pos        0\r
+#define HMATRIXB_SFR_SFR_Msk        (0xFFFFFFFFu << HMATRIXB_SFR_SFR_Pos) /**< \brief (HMATRIXB_SFR) Special Function Register */\r
+#define HMATRIXB_SFR_SFR(value)     ((HMATRIXB_SFR_SFR_Msk & ((value) << HMATRIXB_SFR_SFR_Pos)))\r
+\r
+/*@}*/\r
+\r
+/* ============================================================================= */\r
+/**  SOFTWARE API DEFINITION FOR IISC */\r
+/* ============================================================================= */\r
+/** \addtogroup SAM4L_IISC Inter-IC Sound (I2S) Controller */\r
+/*@{*/\r
+\r
+#define REV_IISC       0x100\r
+\r
+#ifndef __ASSEMBLY__\r
+/** \brief IISC hardware registers */\r
+typedef struct {\r
+  WoReg   IISC_CR;          /**< \brief (IISC Offset: 0x00) Control Register */\r
+  RwReg   IISC_MR;          /**< \brief (IISC Offset: 0x04) Mode Register */\r
+  RoReg   IISC_SR;          /**< \brief (IISC Offset: 0x08) Status Register */\r
+  WoReg   IISC_SCR;         /**< \brief (IISC Offset: 0x0C) Status Clear Register */\r
+  WoReg   IISC_SSR;         /**< \brief (IISC Offset: 0x10) Status Set Register */\r
+  WoReg   IISC_IER;         /**< \brief (IISC Offset: 0x14) Interrupt Enable Register */\r
+  WoReg   IISC_IDR;         /**< \brief (IISC Offset: 0x18) Interrupt Disable Register */\r
+  RoReg   IISC_IMR;         /**< \brief (IISC Offset: 0x1C) Interrupt Mask Register */\r
+  RoReg   IISC_RHR;         /**< \brief (IISC Offset: 0x20) Receive Holding Register */\r
+  WoReg   IISC_THR;         /**< \brief (IISC Offset: 0x24) Transmit Holding Register */\r
+  RoReg   IISC_VERSION;     /**< \brief (IISC Offset: 0x28) Version Register */\r
+  RoReg   IISC_PARAMETER;   /**< \brief (IISC Offset: 0x2C) Parameter Register */\r
+} Iisc;\r
+#endif /* __ASSEMBLY__ */\r
+/* -------- IISC_CR : (IISC Offset: 0x00) Control Register -------- */\r
+#define IISC_CR_RXEN                (0x1u <<  0) /**< \brief (IISC_CR) Receive Enable */\r
+#define   IISC_CR_RXEN_OFF          (0x0u <<  0) /**< \brief (IISC_CR) No effect */\r
+#define   IISC_CR_RXEN_ON           (0x1u <<  0) /**< \brief (IISC_CR) Enables Data Receive if RXDIS is not set */\r
+#define IISC_CR_RXDIS               (0x1u <<  1) /**< \brief (IISC_CR) Receive Disable */\r
+#define   IISC_CR_RXDIS_OFF         (0x0u <<  1) /**< \brief (IISC_CR) No effect */\r
+#define   IISC_CR_RXDIS_ON          (0x1u <<  1) /**< \brief (IISC_CR) Disables Data Receive */\r
+#define IISC_CR_CKEN                (0x1u <<  2) /**< \brief (IISC_CR) Clocks Enable */\r
+#define   IISC_CR_CKEN_OFF          (0x0u <<  2) /**< \brief (IISC_CR) No effect */\r
+#define   IISC_CR_CKEN_ON           (0x1u <<  2) /**< \brief (IISC_CR) Enables clocks if CKDIS is not set */\r
+#define IISC_CR_CKDIS               (0x1u <<  3) /**< \brief (IISC_CR) Clocks Disable */\r
+#define   IISC_CR_CKDIS_OFF         (0x0u <<  3) /**< \brief (IISC_CR) No effect */\r
+#define   IISC_CR_CKDIS_ON          (0x1u <<  3) /**< \brief (IISC_CR) Disables clocks */\r
+#define IISC_CR_TXEN                (0x1u <<  4) /**< \brief (IISC_CR) Transmit Enable */\r
+#define   IISC_CR_TXEN_OFF          (0x0u <<  4) /**< \brief (IISC_CR) No effect */\r
+#define   IISC_CR_TXEN_ON           (0x1u <<  4) /**< \brief (IISC_CR) Enables Data Transmit if TXDIS is not set */\r
+#define IISC_CR_TXDIS               (0x1u <<  5) /**< \brief (IISC_CR) Transmit Disable */\r
+#define   IISC_CR_TXDIS_OFF         (0x0u <<  5) /**< \brief (IISC_CR) No effect */\r
+#define   IISC_CR_TXDIS_ON          (0x1u <<  5) /**< \brief (IISC_CR) Disables Data Transmit */\r
+#define IISC_CR_SWRST               (0x1u <<  7) /**< \brief (IISC_CR) Software Reset */\r
+#define   IISC_CR_SWRST_OFF         (0x0u <<  7) /**< \brief (IISC_CR) No effect */\r
+#define   IISC_CR_SWRST_ON          (0x1u <<  7) /**< \brief (IISC_CR) Performs a software reset. Has priority on any other bit in CR */\r
+/* -------- IISC_MR : (IISC Offset: 0x04) Mode Register -------- */\r
+#define IISC_MR_MODE                (0x1u <<  0) /**< \brief (IISC_MR) Master/Slave/Controller Mode */\r
+#define   IISC_MR_MODE_SLAVE        (0x0u <<  0) /**< \brief (IISC_MR) Slave mode (only serial data handled, clocks received from external master or controller) */\r
+#define   IISC_MR_MODE_MASTER       (0x1u <<  0) /**< \brief (IISC_MR) Master mode (clocks generated and output by IISC, serial data handled if CR.RXEN and/or CR.TXEN written to 1) */\r
+#define IISC_MR_DATALENGTH_Pos      2\r
+#define IISC_MR_DATALENGTH_Msk      (0x7u << IISC_MR_DATALENGTH_Pos) /**< \brief (IISC_MR) Data Word Length */\r
+#define IISC_MR_DATALENGTH(value)   ((IISC_MR_DATALENGTH_Msk & ((value) << IISC_MR_DATALENGTH_Pos)))\r
+#define   IISC_MR_DATALENGTH_32     (0x0u <<  2) /**< \brief (IISC_MR) 32 bits */\r
+#define   IISC_MR_DATALENGTH_24     (0x1u <<  2) /**< \brief (IISC_MR) 24 bits */\r
+#define   IISC_MR_DATALENGTH_20     (0x2u <<  2) /**< \brief (IISC_MR) 20 bits */\r
+#define   IISC_MR_DATALENGTH_18     (0x3u <<  2) /**< \brief (IISC_MR) 18 bits */\r
+#define   IISC_MR_DATALENGTH_16     (0x4u <<  2) /**< \brief (IISC_MR) 16 bits */\r
+#define   IISC_MR_DATALENGTH_16C    (0x5u <<  2) /**< \brief (IISC_MR) 16 bits compact stereo */\r
+#define   IISC_MR_DATALENGTH_8      (0x6u <<  2) /**< \brief (IISC_MR) 8 bits */\r
+#define   IISC_MR_DATALENGTH_8C     (0x7u <<  2) /**< \brief (IISC_MR) 8 bits compact stereo */\r
+#define IISC_MR_RXMONO              (0x1u <<  8) /**< \brief (IISC_MR) Receiver Mono */\r
+#define   IISC_MR_RXMONO_STEREO     (0x0u <<  8) /**< \brief (IISC_MR) Normal mode */\r
+#define   IISC_MR_RXMONO_MONO       (0x1u <<  8) /**< \brief (IISC_MR) Left channel data is duplicated to right channel */\r
+#define IISC_MR_RXDMA               (0x1u <<  9) /**< \brief (IISC_MR) Single or Multiple DMA Channels for Receiver */\r
+#define   IISC_MR_RXDMA_SINGLE      (0x0u <<  9) /**< \brief (IISC_MR) Single DMA channel */\r
+#define   IISC_MR_RXDMA_MULTIPLE    (0x1u <<  9) /**< \brief (IISC_MR) One DMA channel per data channel */\r
+#define IISC_MR_RXLOOP              (0x1u << 10) /**< \brief (IISC_MR) Loop-back Test Mode */\r
+#define   IISC_MR_RXLOOP_OFF        (0x0u << 10) /**< \brief (IISC_MR) Normal mode */\r
+#define   IISC_MR_RXLOOP_ON         (0x1u << 10) /**< \brief (IISC_MR) ISDO internally connected to ISDI */\r
+#define IISC_MR_TXMONO              (0x1u << 12) /**< \brief (IISC_MR) Transmitter Mono */\r
+#define   IISC_MR_TXMONO_STEREO     (0x0u << 12) /**< \brief (IISC_MR) Normal mode */\r
+#define   IISC_MR_TXMONO_MONO       (0x1u << 12) /**< \brief (IISC_MR) Left channel data is duplicated to right channel */\r
+#define IISC_MR_TXDMA               (0x1u << 13) /**< \brief (IISC_MR) Single or Multiple DMA Channels for Transmitter */\r
+#define   IISC_MR_TXDMA_SINGLE      (0x0u << 13) /**< \brief (IISC_MR) Single DMA channel */\r
+#define   IISC_MR_TXDMA_MULTIPLE    (0x1u << 13) /**< \brief (IISC_MR) One DMA channel per data channel */\r
+#define IISC_MR_TXSAME              (0x1u << 14) /**< \brief (IISC_MR) Transmit Data when Underrun */\r
+#define   IISC_MR_TXSAME_ZERO       (0x0u << 14) /**< \brief (IISC_MR) Zero data transmitted in case of underrun */\r
+#define   IISC_MR_TXSAME_SAME       (0x1u << 14) /**< \brief (IISC_MR) Last data transmitted in case of underrun */\r
+#define IISC_MR_IMCKFS_Pos          24\r
+#define IISC_MR_IMCKFS_Msk          (0x3Fu << IISC_MR_IMCKFS_Pos) /**< \brief (IISC_MR) Master Clock to fs Ratio */\r
+#define IISC_MR_IMCKFS(value)       ((IISC_MR_IMCKFS_Msk & ((value) << IISC_MR_IMCKFS_Pos)))\r
+#define   IISC_MR_IMCKFS_16         (0x0u << 24) /**< \brief (IISC_MR) 16 fs */\r
+#define   IISC_MR_IMCKFS_32         (0x1u << 24) /**< \brief (IISC_MR) 32 fs */\r
+#define   IISC_MR_IMCKFS_64         (0x3u << 24) /**< \brief (IISC_MR) 64 fs */\r
+#define   IISC_MR_IMCKFS_128        (0x7u << 24) /**< \brief (IISC_MR) 128 fs */\r
+#define   IISC_MR_IMCKFS_256        (0xFu << 24) /**< \brief (IISC_MR) 256 fs */\r
+#define   IISC_MR_IMCKFS_384        (0x17u << 24) /**< \brief (IISC_MR) 384 fs */\r
+#define   IISC_MR_IMCKFS_512        (0x1Fu << 24) /**< \brief (IISC_MR) 512 fs */\r
+#define   IISC_MR_IMCKFS_768        (0x2Fu << 24) /**< \brief (IISC_MR) 768 fs */\r
+#define   IISC_MR_IMCKFS_1024       (0x3Fu << 24) /**< \brief (IISC_MR) 1024 fs */\r
+#define IISC_MR_IMCKMODE            (0x1u << 30) /**< \brief (IISC_MR) Master Clock Mode */\r
+#define   IISC_MR_IMCKMODE_NO_IMCK  (0x0u << 30) /**< \brief (IISC_MR) No IMCK generated */\r
+#define   IISC_MR_IMCKMODE_IMCK     (0x1u << 30) /**< \brief (IISC_MR) IMCK generated */\r
+#define IISC_MR_IWS24               (0x1u << 31) /**< \brief (IISC_MR) IWS Data Slot Width */\r
+#define   IISC_MR_IWS24_32          (0x0u << 31) /**< \brief (IISC_MR) IWS Data Slot is 32-bit wide for DATALENGTH=18/20/24-bit */\r
+#define   IISC_MR_IWS24_24          (0x1u << 31) /**< \brief (IISC_MR) IWS Data Slot is 24-bit wide for DATALENGTH=18/20/24-bit */\r
+/* -------- IISC_SR : (IISC Offset: 0x08) Status Register -------- */\r
+#define IISC_SR_RXEN                (0x1u <<  0) /**< \brief (IISC_SR) Receive Enable */\r
+#define   IISC_SR_RXEN_OFF          (0x0u <<  0) /**< \brief (IISC_SR) Receiver is effectively disabled, following a CR.RXDIS or CR.SWRST request */\r
+#define   IISC_SR_RXEN_ON           (0x1u <<  0) /**< \brief (IISC_SR) Receiver is effectively enabled, following a CR.RXEN request */\r
+#define IISC_SR_RXRDY               (0x1u <<  1) /**< \brief (IISC_SR) Receive Ready */\r
+#define   IISC_SR_RXRDY_EMPTY       (0x0u <<  1) /**< \brief (IISC_SR) The register RHR is empty and can't be read */\r
+#define   IISC_SR_RXRDY_FULL        (0x1u <<  1) /**< \brief (IISC_SR) The register RHR is full and is ready to be read */\r
+#define IISC_SR_RXOR                (0x1u <<  2) /**< \brief (IISC_SR) Receive Overrun */\r
+#define   IISC_SR_RXOR_NO           (0x0u <<  2) /**< \brief (IISC_SR) No overrun */\r
+#define   IISC_SR_RXOR_YES          (0x1u <<  2) /**< \brief (IISC_SR) The previous received data has not been read. This data is lost */\r
+#define IISC_SR_TXEN                (0x1u <<  4) /**< \brief (IISC_SR) Transmit Enable */\r
+#define   IISC_SR_TXEN_OFF          (0x0u <<  4) /**< \brief (IISC_SR) Transmitter is effectively disabled, following a CR.TXDIS or CR.SWRST request */\r
+#define   IISC_SR_TXEN_ON           (0x1u <<  4) /**< \brief (IISC_SR) Transmitter is effectively enabled, following a CR.TXEN request */\r
+#define IISC_SR_TXRDY               (0x1u <<  5) /**< \brief (IISC_SR) Transmit Ready */\r
+#define   IISC_SR_TXRDY_FULL        (0x0u <<  5) /**< \brief (IISC_SR) The register THR is full and can't be written */\r
+#define   IISC_SR_TXRDY_EMPTY       (0x1u <<  5) /**< \brief (IISC_SR) The register THR is empty and is ready to be written */\r
+#define IISC_SR_TXUR                (0x1u <<  6) /**< \brief (IISC_SR) Transmit Underrun */\r
+#define   IISC_SR_TXUR_NO           (0x0u <<  6) /**< \brief (IISC_SR) No underrun */\r
+#define   IISC_SR_TXUR_YES          (0x1u <<  6) /**< \brief (IISC_SR) The last bit of the last data written to the register THR has been set. Until the next write to THR, data will be sent according to MR.TXSAME field */\r
+#define IISC_SR_RXORCH_Pos          8\r
+#define IISC_SR_RXORCH_Msk          (0x3u << IISC_SR_RXORCH_Pos) /**< \brief (IISC_SR) Receive Overrun Channels */\r
+#define IISC_SR_RXORCH(value)       ((IISC_SR_RXORCH_Msk & ((value) << IISC_SR_RXORCH_Pos)))\r
+#define   IISC_SR_RXORCH_LEFT       (0x0u <<  8) /**< \brief (IISC_SR) Overrun first occurred on left channel */\r
+#define   IISC_SR_RXORCH_RIGHT      (0x1u <<  8) /**< \brief (IISC_SR) Overrun first occurred on right channel */\r
+#define IISC_SR_TXURCH_Pos          20\r
+#define IISC_SR_TXURCH_Msk          (0x3u << IISC_SR_TXURCH_Pos) /**< \brief (IISC_SR) Transmit Underrun Channels */\r
+#define IISC_SR_TXURCH(value)       ((IISC_SR_TXURCH_Msk & ((value) << IISC_SR_TXURCH_Pos)))\r
+#define   IISC_SR_TXURCH_LEFT       (0x0u << 20) /**< \brief (IISC_SR) Underrun first occurred on left channel */\r
+#define   IISC_SR_TXURCH_RIGHT      (0x1u << 20) /**< \brief (IISC_SR) Underrun first occurred on right channel */\r
+/* -------- IISC_SCR : (IISC Offset: 0x0C) Status Clear Register -------- */\r
+#define IISC_SCR_RXOR               (0x1u <<  2) /**< \brief (IISC_SCR) Receive Overrun */\r
+#define   IISC_SCR_RXOR_NO          (0x0u <<  2) /**< \brief (IISC_SCR) No effect */\r
+#define   IISC_SCR_RXOR_CLEAR       (0x1u <<  2) /**< \brief (IISC_SCR) Clears the corresponding SR bit */\r
+#define IISC_SCR_TXUR               (0x1u <<  6) /**< \brief (IISC_SCR) Transmit Underrun */\r
+#define   IISC_SCR_TXUR_NO          (0x0u <<  6) /**< \brief (IISC_SCR) No effect */\r
+#define   IISC_SCR_TXUR_CLEAR       (0x1u <<  6) /**< \brief (IISC_SCR) Clears the corresponding SR bit */\r
+#define IISC_SCR_RXORCH_Pos         8\r
+#define IISC_SCR_RXORCH_Msk         (0x3u << IISC_SCR_RXORCH_Pos) /**< \brief (IISC_SCR) Receive Overrun Channels */\r
+#define IISC_SCR_RXORCH(value)      ((IISC_SCR_RXORCH_Msk & ((value) << IISC_SCR_RXORCH_Pos)))\r
+#define IISC_SCR_TXURCH_Pos         20\r
+#define IISC_SCR_TXURCH_Msk         (0x3u << IISC_SCR_TXURCH_Pos) /**< \brief (IISC_SCR) Transmit Underrun Channels */\r
+#define IISC_SCR_TXURCH(value)      ((IISC_SCR_TXURCH_Msk & ((value) << IISC_SCR_TXURCH_Pos)))\r
+/* -------- IISC_SSR : (IISC Offset: 0x10) Status Set Register -------- */\r
+#define IISC_SSR_RXOR               (0x1u <<  2) /**< \brief (IISC_SSR) Receive Overrun */\r
+#define   IISC_SSR_RXOR_NO          (0x0u <<  2) /**< \brief (IISC_SSR) No effect */\r
+#define   IISC_SSR_RXOR_SET         (0x1u <<  2) /**< \brief (IISC_SSR) Sets corresponding SR bit */\r
+#define IISC_SSR_TXUR               (0x1u <<  6) /**< \brief (IISC_SSR) Transmit Underrun */\r
+#define   IISC_SSR_TXUR_NO          (0x0u <<  6) /**< \brief (IISC_SSR) No effect */\r
+#define   IISC_SSR_TXUR_SET         (0x1u <<  6) /**< \brief (IISC_SSR) Sets corresponding SR bit */\r
+#define IISC_SSR_RXORCH_Pos         8\r
+#define IISC_SSR_RXORCH_Msk         (0x3u << IISC_SSR_RXORCH_Pos) /**< \brief (IISC_SSR) Receive Overrun Channels */\r
+#define IISC_SSR_RXORCH(value)      ((IISC_SSR_RXORCH_Msk & ((value) << IISC_SSR_RXORCH_Pos)))\r
+#define IISC_SSR_TXURCH_Pos         20\r
+#define IISC_SSR_TXURCH_Msk         (0x3u << IISC_SSR_TXURCH_Pos) /**< \brief (IISC_SSR) Transmit Underrun Channels */\r
+#define IISC_SSR_TXURCH(value)      ((IISC_SSR_TXURCH_Msk & ((value) << IISC_SSR_TXURCH_Pos)))\r
+/* -------- IISC_IER : (IISC Offset: 0x14) Interrupt Enable Register -------- */\r
+#define IISC_IER_RXRDY              (0x1u <<  1) /**< \brief (IISC_IER) Receiver Ready Interrupt Enable */\r
+#define   IISC_IER_RXRDY_OFF        (0x0u <<  1) /**< \brief (IISC_IER) No effect */\r
+#define   IISC_IER_RXRDY_ON         (0x1u <<  1) /**< \brief (IISC_IER) Enables the corresponding interrupt */\r
+#define IISC_IER_RXOR               (0x1u <<  2) /**< \brief (IISC_IER) Receive Overrun Interrupt Enable */\r
+#define   IISC_IER_RXOR_OFF         (0x0u <<  2) /**< \brief (IISC_IER) No effect */\r
+#define   IISC_IER_RXOR_ON          (0x1u <<  2) /**< \brief (IISC_IER) Enables the corresponding interrupt */\r
+#define IISC_IER_TXRDY              (0x1u <<  5) /**< \brief (IISC_IER) Transmit Ready Interrupt Enable */\r
+#define   IISC_IER_TXRDY_OFF        (0x0u <<  5) /**< \brief (IISC_IER) No effect */\r
+#define   IISC_IER_TXRDY_ON         (0x1u <<  5) /**< \brief (IISC_IER) Enables the corresponding interrupt */\r
+#define IISC_IER_TXUR               (0x1u <<  6) /**< \brief (IISC_IER) Transmit Underrun Interrupt Enable */\r
+#define   IISC_IER_TXUR_OFF         (0x0u <<  6) /**< \brief (IISC_IER) No effect */\r
+#define   IISC_IER_TXUR_ON          (0x1u <<  6) /**< \brief (IISC_IER) Enables the corresponding interrupt */\r
+/* -------- IISC_IDR : (IISC Offset: 0x18) Interrupt Disable Register -------- */\r
+#define IISC_IDR_RXRDY              (0x1u <<  1) /**< \brief (IISC_IDR) Receive Ready Interrupt Disable */\r
+#define   IISC_IDR_RXRDY_OFF        (0x0u <<  1) /**< \brief (IISC_IDR) No effect */\r
+#define   IISC_IDR_RXRDY_ON         (0x1u <<  1) /**< \brief (IISC_IDR) Disables the corresponding interrupt */\r
+#define IISC_IDR_RXOR               (0x1u <<  2) /**< \brief (IISC_IDR) Receive Overrun Interrupt Disable */\r
+#define   IISC_IDR_RXOR_OFF         (0x0u <<  2) /**< \brief (IISC_IDR) No effect */\r
+#define   IISC_IDR_RXOR_ON          (0x1u <<  2) /**< \brief (IISC_IDR) Disables the corresponding interrupt */\r
+#define IISC_IDR_TXRDY              (0x1u <<  5) /**< \brief (IISC_IDR) Transmit Ready Interrupt Disable */\r
+#define   IISC_IDR_TXRDY_OFF        (0x0u <<  5) /**< \brief (IISC_IDR) No effect */\r
+#define   IISC_IDR_TXRDY_ON         (0x1u <<  5) /**< \brief (IISC_IDR) Disables the corresponding interrupt */\r
+#define IISC_IDR_TXUR               (0x1u <<  6) /**< \brief (IISC_IDR) Transmit Underrun Interrupt Disable */\r
+#define   IISC_IDR_TXUR_OFF         (0x0u <<  6) /**< \brief (IISC_IDR) No effect */\r
+#define   IISC_IDR_TXUR_ON          (0x1u <<  6) /**< \brief (IISC_IDR) Disables the corresponding interrupt */\r
+/* -------- IISC_IMR : (IISC Offset: 0x1C) Interrupt Mask Register -------- */\r
+#define IISC_IMR_RXRDY              (0x1u <<  1) /**< \brief (IISC_IMR) Receive Ready Interrupt Mask */\r
+#define   IISC_IMR_RXRDY_DISABLED   (0x0u <<  1) /**< \brief (IISC_IMR) The corresponding interrupt is disabled */\r
+#define   IISC_IMR_RXRDY_ENABLED    (0x1u <<  1) /**< \brief (IISC_IMR) The corresponding interrupt is enabled */\r
+#define IISC_IMR_RXOR               (0x1u <<  2) /**< \brief (IISC_IMR) Receive Overrun Interrupt Mask */\r
+#define   IISC_IMR_RXOR_DISABLED    (0x0u <<  2) /**< \brief (IISC_IMR) The corresponding interrupt is disabled */\r
+#define   IISC_IMR_RXOR_ENABLED     (0x1u <<  2) /**< \brief (IISC_IMR) The corresponding interrupt is enabled */\r
+#define IISC_IMR_TXRDY              (0x1u <<  5) /**< \brief (IISC_IMR) Transmit Ready Interrupt Mask */\r
+#define   IISC_IMR_TXRDY_DISABLED   (0x0u <<  5) /**< \brief (IISC_IMR) The corresponding interrupt is disabled */\r
+#define   IISC_IMR_TXRDY_ENABLED    (0x1u <<  5) /**< \brief (IISC_IMR) The corresponding interrupt is enabled */\r
+#define IISC_IMR_TXUR               (0x1u <<  6) /**< \brief (IISC_IMR) Transmit Underrun Interrupt Mask */\r
+#define   IISC_IMR_TXUR_DISABLED    (0x0u <<  6) /**< \brief (IISC_IMR) The corresponding interrupt is disabled */\r
+#define   IISC_IMR_TXUR_ENABLED     (0x1u <<  6) /**< \brief (IISC_IMR) The corresponding interrupt is enabled */\r
+/* -------- IISC_RHR : (IISC Offset: 0x20) Receive Holding Register -------- */\r
+#define IISC_RHR_RDAT_Pos           0\r
+#define IISC_RHR_RDAT_Msk           (0xFFFFFFFFu << IISC_RHR_RDAT_Pos) /**< \brief (IISC_RHR) Receive Data */\r
+#define IISC_RHR_RDAT(value)        ((IISC_RHR_RDAT_Msk & ((value) << IISC_RHR_RDAT_Pos)))\r
+/* -------- IISC_THR : (IISC Offset: 0x24) Transmit Holding Register -------- */\r
+#define IISC_THR_TDAT_Pos           0\r
+#define IISC_THR_TDAT_Msk           (0xFFFFFFFFu << IISC_THR_TDAT_Pos) /**< \brief (IISC_THR) Transmit Data */\r
+#define IISC_THR_TDAT(value)        ((IISC_THR_TDAT_Msk & ((value) << IISC_THR_TDAT_Pos)))\r
+/* -------- IISC_VERSION : (IISC Offset: 0x28) Version Register -------- */\r
+#define IISC_VERSION_VERSION_Pos    0\r
+#define IISC_VERSION_VERSION_Msk    (0xFFFu << IISC_VERSION_VERSION_Pos) /**< \brief (IISC_VERSION) Reserved. Value subject to change. No functionality associated. This is the Atmel internal version of the macrocell. */\r
+#define IISC_VERSION_VERSION(value) ((IISC_VERSION_VERSION_Msk & ((value) << IISC_VERSION_VERSION_Pos)))\r
+#define IISC_VERSION_VARIANT_Pos    16\r
+#define IISC_VERSION_VARIANT_Msk    (0xFu << IISC_VERSION_VARIANT_Pos) /**< \brief (IISC_VERSION) Reserved. Value subject to change. No functionality associated. */\r
+#define IISC_VERSION_VARIANT(value) ((IISC_VERSION_VARIANT_Msk & ((value) << IISC_VERSION_VARIANT_Pos)))\r
+/* -------- IISC_PARAMETER : (IISC Offset: 0x2C) Parameter Register -------- */\r
+#define IISC_PARAMETER_FORMAT       (0x1u <<  7) /**< \brief (IISC_PARAMETER) Data protocol format */\r
+#define   IISC_PARAMETER_FORMAT_I2S (0x0u <<  7) /**< \brief (IISC_PARAMETER) I2S format, stereo with IWS low for left channel */\r
+#define IISC_PARAMETER_NBCHAN_Pos    16\r
+#define IISC_PARAMETER_NBCHAN_Msk    (0x1Fu << IISC_PARAMETER_NBCHAN_Pos) /**< \brief (IISC_PARAMETER) Maximum number of channels - 1 */\r
+#define IISC_PARAMETER_NBCHAN(value) ((IISC_PARAMETER_NBCHAN_Msk & ((value) << IISC_PARAMETER_NBCHAN_Pos)))\r
+\r
+/*@}*/\r
+\r
+/* ============================================================================= */\r
+/**  SOFTWARE API DEFINITION FOR LCDCA */\r
+/* ============================================================================= */\r
+/** \addtogroup SAM4L_LCDCA LCD Controller */\r
+/*@{*/\r
+\r
+#define REV_LCDCA      0x100\r
+\r
+#ifndef __ASSEMBLY__\r
+/** \brief LCDCA hardware registers */\r
+typedef struct {\r
+  WoReg   LCDCA_CR;          /**< \brief (LCDCA Offset: 0x00) Control Register */\r
+  RwReg   LCDCA_CFG;         /**< \brief (LCDCA Offset: 0x04) Configuration Register */\r
+  RwReg   LCDCA_TIM;         /**< \brief (LCDCA Offset: 0x08) Timing Register */\r
+  RoReg   LCDCA_SR;          /**< \brief (LCDCA Offset: 0x0C) Status Register */\r
+  WoReg   LCDCA_SCR;         /**< \brief (LCDCA Offset: 0x10) Status Clear Register */\r
+  RwReg   LCDCA_DRL0;        /**< \brief (LCDCA Offset: 0x14) Data Register Low 0 */\r
+  RwReg   LCDCA_DRH0;        /**< \brief (LCDCA Offset: 0x18) Data Register High 0 */\r
+  RwReg   LCDCA_DRL1;        /**< \brief (LCDCA Offset: 0x1C) Data Register Low 1 */\r
+  RwReg   LCDCA_DRH1;        /**< \brief (LCDCA Offset: 0x20) Data Register High 1 */\r
+  RwReg   LCDCA_DRL2;        /**< \brief (LCDCA Offset: 0x24) Data Register Low 2 */\r
+  RwReg   LCDCA_DRH2;        /**< \brief (LCDCA Offset: 0x28) Data Register High 2 */\r
+  RwReg   LCDCA_DRL3;        /**< \brief (LCDCA Offset: 0x2C) Data Register Low 3 */\r
+  RwReg   LCDCA_DRH3;        /**< \brief (LCDCA Offset: 0x30) Data Register High 3 */\r
+  WoReg   LCDCA_IADR;        /**< \brief (LCDCA Offset: 0x34) Indirect Access Data Register */\r
+  RwReg   LCDCA_BCFG;        /**< \brief (LCDCA Offset: 0x38) Blink Configuration Register */\r
+  RwReg   LCDCA_CSRCFG;      /**< \brief (LCDCA Offset: 0x3C) Circular Shift Register Configuration */\r
+  RwReg   LCDCA_CMCFG;       /**< \brief (LCDCA Offset: 0x40) Character Mapping Configuration Register */\r
+  WoReg   LCDCA_CMDR;        /**< \brief (LCDCA Offset: 0x44) Character Mapping Data Register */\r
+  RwReg   LCDCA_ACMCFG;      /**< \brief (LCDCA Offset: 0x48) Automated Character Mapping Configuration Register */\r
+  WoReg   LCDCA_ACMDR;       /**< \brief (LCDCA Offset: 0x4C) Automated Character Mapping Data Register */\r
+  RwReg   LCDCA_ABMCFG;      /**< \brief (LCDCA Offset: 0x50) Automated Bit Mapping Configuration Register */\r
+  WoReg   LCDCA_ABMDR;       /**< \brief (LCDCA Offset: 0x54) Automated Bit Mapping Data Register */\r
+  WoReg   LCDCA_IER;         /**< \brief (LCDCA Offset: 0x58) Interrupt Enable Register */\r
+  WoReg   LCDCA_IDR;         /**< \brief (LCDCA Offset: 0x5C) Interrupt Disable Register */\r
+  RoReg   LCDCA_IMR;         /**< \brief (LCDCA Offset: 0x60) Interrupt Mask Register */\r
+  RoReg   LCDCA_VERSION;     /**< \brief (LCDCA Offset: 0x64) Version Register */\r
+} Lcdca;\r
+#endif /* __ASSEMBLY__ */\r
+/* -------- LCDCA_CR : (LCDCA Offset: 0x00) Control Register -------- */\r
+#define LCDCA_CR_DIS                (0x1u <<  0) /**< \brief (LCDCA_CR) Disable */\r
+#define LCDCA_CR_EN                 (0x1u <<  1) /**< \brief (LCDCA_CR) Enable */\r
+#define LCDCA_CR_FC0DIS             (0x1u <<  2) /**< \brief (LCDCA_CR) Frame Counter 0 Disable */\r
+#define LCDCA_CR_FC0EN              (0x1u <<  3) /**< \brief (LCDCA_CR) Frame Counter 0 Enable */\r
+#define LCDCA_CR_FC1DIS             (0x1u <<  4) /**< \brief (LCDCA_CR) Frame Counter 1 Disable */\r
+#define LCDCA_CR_FC1EN              (0x1u <<  5) /**< \brief (LCDCA_CR) Frame Counter 1 Enable */\r
+#define LCDCA_CR_FC2DIS             (0x1u <<  6) /**< \brief (LCDCA_CR) Frame Counter 2 Disable */\r
+#define LCDCA_CR_FC2EN              (0x1u <<  7) /**< \brief (LCDCA_CR) Frame Counter 2 Enable */\r
+#define LCDCA_CR_CDM                (0x1u <<  8) /**< \brief (LCDCA_CR) Clear Display Memory */\r
+#define LCDCA_CR_WDIS               (0x1u <<  9) /**< \brief (LCDCA_CR) Wake up Disable */\r
+#define LCDCA_CR_WEN                (0x1u << 10) /**< \brief (LCDCA_CR) Wake up Enable */\r
+#define LCDCA_CR_BSTART             (0x1u << 11) /**< \brief (LCDCA_CR) Blinking Start */\r
+#define LCDCA_CR_BSTOP              (0x1u << 12) /**< \brief (LCDCA_CR) Blinking Stop */\r
+#define LCDCA_CR_CSTART             (0x1u << 13) /**< \brief (LCDCA_CR) Circular Shift Start */\r
+#define LCDCA_CR_CSTOP              (0x1u << 14) /**< \brief (LCDCA_CR) Circular Shift Stop */\r
+/* -------- LCDCA_CFG : (LCDCA Offset: 0x04) Configuration Register -------- */\r
+#define LCDCA_CFG_XBIAS             (0x1u <<  0) /**< \brief (LCDCA_CFG) External Bias Generation */\r
+#define LCDCA_CFG_WMOD              (0x1u <<  1) /**< \brief (LCDCA_CFG) Waveform Mode */\r
+#define LCDCA_CFG_BLANK             (0x1u <<  2) /**< \brief (LCDCA_CFG) Blank LCD */\r
+#define LCDCA_CFG_LOCK              (0x1u <<  3) /**< \brief (LCDCA_CFG) Lock */\r
+#define LCDCA_CFG_DUTY_Pos          8\r
+#define LCDCA_CFG_DUTY_Msk          (0x3u << LCDCA_CFG_DUTY_Pos) /**< \brief (LCDCA_CFG) Duty Select */\r
+#define LCDCA_CFG_DUTY(value)       ((LCDCA_CFG_DUTY_Msk & ((value) << LCDCA_CFG_DUTY_Pos)))\r
+#define LCDCA_CFG_FCST_Pos          16\r
+#define LCDCA_CFG_FCST_Msk          (0x3Fu << LCDCA_CFG_FCST_Pos) /**< \brief (LCDCA_CFG) Fine Contrast */\r
+#define LCDCA_CFG_FCST(value)       ((LCDCA_CFG_FCST_Msk & ((value) << LCDCA_CFG_FCST_Pos)))\r
+#define LCDCA_CFG_NSU_Pos           24\r
+#define LCDCA_CFG_NSU_Msk           (0x3Fu << LCDCA_CFG_NSU_Pos) /**< \brief (LCDCA_CFG) Number of Segment Terminals in Use */\r
+#define LCDCA_CFG_NSU(value)        ((LCDCA_CFG_NSU_Msk & ((value) << LCDCA_CFG_NSU_Pos)))\r
+/* -------- LCDCA_TIM : (LCDCA Offset: 0x08) Timing Register -------- */\r
+#define LCDCA_TIM_PRESC             (0x1u <<  0) /**< \brief (LCDCA_TIM) LCD Prescaler Select */\r
+#define LCDCA_TIM_CLKDIV_Pos        1\r
+#define LCDCA_TIM_CLKDIV_Msk        (0x7u << LCDCA_TIM_CLKDIV_Pos) /**< \brief (LCDCA_TIM) LCD Clock Division */\r
+#define LCDCA_TIM_CLKDIV(value)     ((LCDCA_TIM_CLKDIV_Msk & ((value) << LCDCA_TIM_CLKDIV_Pos)))\r
+#define LCDCA_TIM_FC0_Pos           8\r
+#define LCDCA_TIM_FC0_Msk           (0x1Fu << LCDCA_TIM_FC0_Pos) /**< \brief (LCDCA_TIM) Frame Counter 0 */\r
+#define LCDCA_TIM_FC0(value)        ((LCDCA_TIM_FC0_Msk & ((value) << LCDCA_TIM_FC0_Pos)))\r
+#define LCDCA_TIM_FC0PB             (0x1u << 13) /**< \brief (LCDCA_TIM) Frame Counter 0 Prescaler Bypass */\r
+#define LCDCA_TIM_FC1_Pos           16\r
+#define LCDCA_TIM_FC1_Msk           (0x1Fu << LCDCA_TIM_FC1_Pos) /**< \brief (LCDCA_TIM) Frame Counter 1 */\r
+#define LCDCA_TIM_FC1(value)        ((LCDCA_TIM_FC1_Msk & ((value) << LCDCA_TIM_FC1_Pos)))\r
+#define LCDCA_TIM_FC2_Pos           24\r
+#define LCDCA_TIM_FC2_Msk           (0x1Fu << LCDCA_TIM_FC2_Pos) /**< \brief (LCDCA_TIM) Frame Counter 2 */\r
+#define LCDCA_TIM_FC2(value)        ((LCDCA_TIM_FC2_Msk & ((value) << LCDCA_TIM_FC2_Pos)))\r
+/* -------- LCDCA_SR : (LCDCA Offset: 0x0C) Status Register -------- */\r
+#define LCDCA_SR_FC0R               (0x1u <<  0) /**< \brief (LCDCA_SR) Frame Counter 0 Rollover */\r
+#define LCDCA_SR_FC0S               (0x1u <<  1) /**< \brief (LCDCA_SR) Frame Counter 0 Status */\r
+#define LCDCA_SR_FC1S               (0x1u <<  2) /**< \brief (LCDCA_SR) Frame Counter 1 Status */\r
+#define LCDCA_SR_FC2S               (0x1u <<  3) /**< \brief (LCDCA_SR) Frame Counter 2 Status */\r
+#define LCDCA_SR_EN                 (0x1u <<  4) /**< \brief (LCDCA_SR) LCDCA Status */\r
+#define LCDCA_SR_WEN                (0x1u <<  5) /**< \brief (LCDCA_SR) Wake up Status */\r
+#define LCDCA_SR_BLKS               (0x1u <<  6) /**< \brief (LCDCA_SR) Blink Status */\r
+#define LCDCA_SR_CSRS               (0x1u <<  7) /**< \brief (LCDCA_SR) Circular Shift Register Status */\r
+#define LCDCA_SR_CPS                (0x1u <<  8) /**< \brief (LCDCA_SR) Charge Pump Status */\r
+/* -------- LCDCA_SCR : (LCDCA Offset: 0x10) Status Clear Register -------- */\r
+#define LCDCA_SCR_FC0R              (0x1u <<  0) /**< \brief (LCDCA_SCR) Frame Counter 0 Rollover */\r
+/* -------- LCDCA_DRL0 : (LCDCA Offset: 0x14) Data Register Low 0 -------- */\r
+#define LCDCA_DRL0_DATA_Pos         0\r
+#define LCDCA_DRL0_DATA_Msk         (0xFFFFFFFFu << LCDCA_DRL0_DATA_Pos) /**< \brief (LCDCA_DRL0) Segments Value */\r
+#define LCDCA_DRL0_DATA(value)      ((LCDCA_DRL0_DATA_Msk & ((value) << LCDCA_DRL0_DATA_Pos)))\r
+/* -------- LCDCA_DRH0 : (LCDCA Offset: 0x18) Data Register High 0 -------- */\r
+#define LCDCA_DRH0_DATA_Pos         0\r
+#define LCDCA_DRH0_DATA_Msk         (0xFFu << LCDCA_DRH0_DATA_Pos) /**< \brief (LCDCA_DRH0) Segments Value */\r
+#define LCDCA_DRH0_DATA(value)      ((LCDCA_DRH0_DATA_Msk & ((value) << LCDCA_DRH0_DATA_Pos)))\r
+/* -------- LCDCA_DRL1 : (LCDCA Offset: 0x1C) Data Register Low 1 -------- */\r
+#define LCDCA_DRL1_DATA_Pos         0\r
+#define LCDCA_DRL1_DATA_Msk         (0xFFFFFFFFu << LCDCA_DRL1_DATA_Pos) /**< \brief (LCDCA_DRL1) Segments Value */\r
+#define LCDCA_DRL1_DATA(value)      ((LCDCA_DRL1_DATA_Msk & ((value) << LCDCA_DRL1_DATA_Pos)))\r
+/* -------- LCDCA_DRH1 : (LCDCA Offset: 0x20) Data Register High 1 -------- */\r
+#define LCDCA_DRH1_DATA_Pos         0\r
+#define LCDCA_DRH1_DATA_Msk         (0xFFu << LCDCA_DRH1_DATA_Pos) /**< \brief (LCDCA_DRH1) Segments Value */\r
+#define LCDCA_DRH1_DATA(value)      ((LCDCA_DRH1_DATA_Msk & ((value) << LCDCA_DRH1_DATA_Pos)))\r
+/* -------- LCDCA_DRL2 : (LCDCA Offset: 0x24) Data Register Low 2 -------- */\r
+#define LCDCA_DRL2_DATA_Pos         0\r
+#define LCDCA_DRL2_DATA_Msk         (0xFFFFFFFFu << LCDCA_DRL2_DATA_Pos) /**< \brief (LCDCA_DRL2) Segments Value */\r
+#define LCDCA_DRL2_DATA(value)      ((LCDCA_DRL2_DATA_Msk & ((value) << LCDCA_DRL2_DATA_Pos)))\r
+/* -------- LCDCA_DRH2 : (LCDCA Offset: 0x28) Data Register High 2 -------- */\r
+#define LCDCA_DRH2_DATA_Pos         0\r
+#define LCDCA_DRH2_DATA_Msk         (0xFFu << LCDCA_DRH2_DATA_Pos) /**< \brief (LCDCA_DRH2) Segments Value */\r
+#define LCDCA_DRH2_DATA(value)      ((LCDCA_DRH2_DATA_Msk & ((value) << LCDCA_DRH2_DATA_Pos)))\r
+/* -------- LCDCA_DRL3 : (LCDCA Offset: 0x2C) Data Register Low 3 -------- */\r
+#define LCDCA_DRL3_DATA_Pos         0\r
+#define LCDCA_DRL3_DATA_Msk         (0xFFFFFFFFu << LCDCA_DRL3_DATA_Pos) /**< \brief (LCDCA_DRL3) Segments Value */\r
+#define LCDCA_DRL3_DATA(value)      ((LCDCA_DRL3_DATA_Msk & ((value) << LCDCA_DRL3_DATA_Pos)))\r
+/* -------- LCDCA_DRH3 : (LCDCA Offset: 0x30) Data Register High 3 -------- */\r
+#define LCDCA_DRH3_DATA_Pos         0\r
+#define LCDCA_DRH3_DATA_Msk         (0xFFu << LCDCA_DRH3_DATA_Pos) /**< \brief (LCDCA_DRH3) Segments Value */\r
+#define LCDCA_DRH3_DATA(value)      ((LCDCA_DRH3_DATA_Msk & ((value) << LCDCA_DRH3_DATA_Pos)))\r
+/* -------- LCDCA_IADR : (LCDCA Offset: 0x34) Indirect Access Data Register -------- */\r
+#define LCDCA_IADR_DATA_Pos         0\r
+#define LCDCA_IADR_DATA_Msk         (0xFFu << LCDCA_IADR_DATA_Pos) /**< \brief (LCDCA_IADR) Segments Value */\r
+#define LCDCA_IADR_DATA(value)      ((LCDCA_IADR_DATA_Msk & ((value) << LCDCA_IADR_DATA_Pos)))\r
+#define LCDCA_IADR_DMASK_Pos        8\r
+#define LCDCA_IADR_DMASK_Msk        (0xFFu << LCDCA_IADR_DMASK_Pos) /**< \brief (LCDCA_IADR) Data Mask */\r
+#define LCDCA_IADR_DMASK(value)     ((LCDCA_IADR_DMASK_Msk & ((value) << LCDCA_IADR_DMASK_Pos)))\r
+#define LCDCA_IADR_OFF_Pos          16\r
+#define LCDCA_IADR_OFF_Msk          (0x1Fu << LCDCA_IADR_OFF_Pos) /**< \brief (LCDCA_IADR) Byte Offset */\r
+#define LCDCA_IADR_OFF(value)       ((LCDCA_IADR_OFF_Msk & ((value) << LCDCA_IADR_OFF_Pos)))\r
+/* -------- LCDCA_BCFG : (LCDCA Offset: 0x38) Blink Configuration Register -------- */\r
+#define LCDCA_BCFG_MODE             (0x1u <<  0) /**< \brief (LCDCA_BCFG) Blinking Mode */\r
+#define LCDCA_BCFG_FCS_Pos          1\r
+#define LCDCA_BCFG_FCS_Msk          (0x3u << LCDCA_BCFG_FCS_Pos) /**< \brief (LCDCA_BCFG) Frame Counter Selection */\r
+#define LCDCA_BCFG_FCS(value)       ((LCDCA_BCFG_FCS_Msk & ((value) << LCDCA_BCFG_FCS_Pos)))\r
+#define LCDCA_BCFG_BSS0_Pos         8\r
+#define LCDCA_BCFG_BSS0_Msk         (0xFu << LCDCA_BCFG_BSS0_Pos) /**< \brief (LCDCA_BCFG) Blink Segment Selection 0 */\r
+#define LCDCA_BCFG_BSS0(value)      ((LCDCA_BCFG_BSS0_Msk & ((value) << LCDCA_BCFG_BSS0_Pos)))\r
+#define LCDCA_BCFG_BSS1_Pos         12\r
+#define LCDCA_BCFG_BSS1_Msk         (0xFu << LCDCA_BCFG_BSS1_Pos) /**< \brief (LCDCA_BCFG) Blink Segment Selection 1 */\r
+#define LCDCA_BCFG_BSS1(value)      ((LCDCA_BCFG_BSS1_Msk & ((value) << LCDCA_BCFG_BSS1_Pos)))\r
+/* -------- LCDCA_CSRCFG : (LCDCA Offset: 0x3C) Circular Shift Register Configuration -------- */\r
+#define LCDCA_CSRCFG_DIR            (0x1u <<  0) /**< \brief (LCDCA_CSRCFG) Direction */\r
+#define LCDCA_CSRCFG_FCS_Pos        1\r
+#define LCDCA_CSRCFG_FCS_Msk        (0x3u << LCDCA_CSRCFG_FCS_Pos) /**< \brief (LCDCA_CSRCFG) Frame Counter Selection */\r
+#define LCDCA_CSRCFG_FCS(value)     ((LCDCA_CSRCFG_FCS_Msk & ((value) << LCDCA_CSRCFG_FCS_Pos)))\r
+#define LCDCA_CSRCFG_SIZE_Pos       3\r
+#define LCDCA_CSRCFG_SIZE_Msk       (0x7u << LCDCA_CSRCFG_SIZE_Pos) /**< \brief (LCDCA_CSRCFG) Size */\r
+#define LCDCA_CSRCFG_SIZE(value)    ((LCDCA_CSRCFG_SIZE_Msk & ((value) << LCDCA_CSRCFG_SIZE_Pos)))\r
+#define LCDCA_CSRCFG_DATA_Pos       8\r
+#define LCDCA_CSRCFG_DATA_Msk       (0xFFu << LCDCA_CSRCFG_DATA_Pos) /**< \brief (LCDCA_CSRCFG) Circular Shift Register Value */\r
+#define LCDCA_CSRCFG_DATA(value)    ((LCDCA_CSRCFG_DATA_Msk & ((value) << LCDCA_CSRCFG_DATA_Pos)))\r
+/* -------- LCDCA_CMCFG : (LCDCA Offset: 0x40) Character Mapping Configuration Register -------- */\r
+#define LCDCA_CMCFG_DREV            (0x1u <<  0) /**< \brief (LCDCA_CMCFG) Digit Reverse Mode */\r
+#define LCDCA_CMCFG_TDG_Pos         1\r
+#define LCDCA_CMCFG_TDG_Msk         (0x3u << LCDCA_CMCFG_TDG_Pos) /**< \brief (LCDCA_CMCFG) Type of Digit */\r
+#define LCDCA_CMCFG_TDG(value)      ((LCDCA_CMCFG_TDG_Msk & ((value) << LCDCA_CMCFG_TDG_Pos)))\r
+#define LCDCA_CMCFG_STSEG_Pos       8\r
+#define LCDCA_CMCFG_STSEG_Msk       (0x3Fu << LCDCA_CMCFG_STSEG_Pos) /**< \brief (LCDCA_CMCFG) Start Segment */\r
+#define LCDCA_CMCFG_STSEG(value)    ((LCDCA_CMCFG_STSEG_Msk & ((value) << LCDCA_CMCFG_STSEG_Pos)))\r
+/* -------- LCDCA_CMDR : (LCDCA Offset: 0x44) Character Mapping Data Register -------- */\r
+#define LCDCA_CMDR_ASCII_Pos        0\r
+#define LCDCA_CMDR_ASCII_Msk        (0x7Fu << LCDCA_CMDR_ASCII_Pos) /**< \brief (LCDCA_CMDR) ASCII Code */\r
+#define LCDCA_CMDR_ASCII(value)     ((LCDCA_CMDR_ASCII_Msk & ((value) << LCDCA_CMDR_ASCII_Pos)))\r
+/* -------- LCDCA_ACMCFG : (LCDCA Offset: 0x48) Automated Character Mapping Configuration Register -------- */\r
+#define LCDCA_ACMCFG_EN             (0x1u <<  0) /**< \brief (LCDCA_ACMCFG) Enable */\r
+#define LCDCA_ACMCFG_FCS_Pos        1\r
+#define LCDCA_ACMCFG_FCS_Msk        (0x3u << LCDCA_ACMCFG_FCS_Pos) /**< \brief (LCDCA_ACMCFG) Frame Counter Selection */\r
+#define LCDCA_ACMCFG_FCS(value)     ((LCDCA_ACMCFG_FCS_Msk & ((value) << LCDCA_ACMCFG_FCS_Pos)))\r
+#define LCDCA_ACMCFG_MODE           (0x1u <<  3) /**< \brief (LCDCA_ACMCFG) Mode (sequential or scrolling) */\r
+#define LCDCA_ACMCFG_DREV           (0x1u <<  4) /**< \brief (LCDCA_ACMCFG) Digit Reverse */\r
+#define LCDCA_ACMCFG_TDG_Pos        5\r
+#define LCDCA_ACMCFG_TDG_Msk        (0x3u << LCDCA_ACMCFG_TDG_Pos) /**< \brief (LCDCA_ACMCFG) Type of Digit */\r
+#define LCDCA_ACMCFG_TDG(value)     ((LCDCA_ACMCFG_TDG_Msk & ((value) << LCDCA_ACMCFG_TDG_Pos)))\r
+#define LCDCA_ACMCFG_STSEG_Pos      8\r
+#define LCDCA_ACMCFG_STSEG_Msk      (0x3Fu << LCDCA_ACMCFG_STSEG_Pos) /**< \brief (LCDCA_ACMCFG) Start Segment */\r
+#define LCDCA_ACMCFG_STSEG(value)   ((LCDCA_ACMCFG_STSEG_Msk & ((value) << LCDCA_ACMCFG_STSEG_Pos)))\r
+#define LCDCA_ACMCFG_STEPS_Pos      16\r
+#define LCDCA_ACMCFG_STEPS_Msk      (0xFFu << LCDCA_ACMCFG_STEPS_Pos) /**< \brief (LCDCA_ACMCFG) Scrolling Steps */\r
+#define LCDCA_ACMCFG_STEPS(value)   ((LCDCA_ACMCFG_STEPS_Msk & ((value) << LCDCA_ACMCFG_STEPS_Pos)))\r
+#define LCDCA_ACMCFG_DIGN_Pos       24\r
+#define LCDCA_ACMCFG_DIGN_Msk       (0xFu << LCDCA_ACMCFG_DIGN_Pos) /**< \brief (LCDCA_ACMCFG) Digit Number */\r
+#define LCDCA_ACMCFG_DIGN(value)    ((LCDCA_ACMCFG_DIGN_Msk & ((value) << LCDCA_ACMCFG_DIGN_Pos)))\r
+/* -------- LCDCA_ACMDR : (LCDCA Offset: 0x4C) Automated Character Mapping Data Register -------- */\r
+#define LCDCA_ACMDR_ASCII_Pos       0\r
+#define LCDCA_ACMDR_ASCII_Msk       (0x7Fu << LCDCA_ACMDR_ASCII_Pos) /**< \brief (LCDCA_ACMDR) ASCII Code */\r
+#define LCDCA_ACMDR_ASCII(value)    ((LCDCA_ACMDR_ASCII_Msk & ((value) << LCDCA_ACMDR_ASCII_Pos)))\r
+/* -------- LCDCA_ABMCFG : (LCDCA Offset: 0x50) Automated Bit Mapping Configuration Register -------- */\r
+#define LCDCA_ABMCFG_EN             (0x1u <<  0) /**< \brief (LCDCA_ABMCFG) Enable */\r
+#define LCDCA_ABMCFG_FCS_Pos        1\r
+#define LCDCA_ABMCFG_FCS_Msk        (0x3u << LCDCA_ABMCFG_FCS_Pos) /**< \brief (LCDCA_ABMCFG) Frame Counter Selection */\r
+#define LCDCA_ABMCFG_FCS(value)     ((LCDCA_ABMCFG_FCS_Msk & ((value) << LCDCA_ABMCFG_FCS_Pos)))\r
+#define LCDCA_ABMCFG_SIZE_Pos       8\r
+#define LCDCA_ABMCFG_SIZE_Msk       (0x1Fu << LCDCA_ABMCFG_SIZE_Pos) /**< \brief (LCDCA_ABMCFG) Size */\r
+#define LCDCA_ABMCFG_SIZE(value)    ((LCDCA_ABMCFG_SIZE_Msk & ((value) << LCDCA_ABMCFG_SIZE_Pos)))\r
+/* -------- LCDCA_ABMDR : (LCDCA Offset: 0x54) Automated Bit Mapping Data Register -------- */\r
+#define LCDCA_ABMDR_DATA_Pos        0\r
+#define LCDCA_ABMDR_DATA_Msk        (0xFFu << LCDCA_ABMDR_DATA_Pos) /**< \brief (LCDCA_ABMDR) Segments Value */\r
+#define LCDCA_ABMDR_DATA(value)     ((LCDCA_ABMDR_DATA_Msk & ((value) << LCDCA_ABMDR_DATA_Pos)))\r
+#define LCDCA_ABMDR_DMASK_Pos       8\r
+#define LCDCA_ABMDR_DMASK_Msk       (0xFFu << LCDCA_ABMDR_DMASK_Pos) /**< \brief (LCDCA_ABMDR) Data Mask */\r
+#define LCDCA_ABMDR_DMASK(value)    ((LCDCA_ABMDR_DMASK_Msk & ((value) << LCDCA_ABMDR_DMASK_Pos)))\r
+#define LCDCA_ABMDR_OFF_Pos         16\r
+#define LCDCA_ABMDR_OFF_Msk         (0x1Fu << LCDCA_ABMDR_OFF_Pos) /**< \brief (LCDCA_ABMDR) Byte Offset */\r
+#define LCDCA_ABMDR_OFF(value)      ((LCDCA_ABMDR_OFF_Msk & ((value) << LCDCA_ABMDR_OFF_Pos)))\r
+/* -------- LCDCA_IER : (LCDCA Offset: 0x58) Interrupt Enable Register -------- */\r
+#define LCDCA_IER_FC0R              (0x1u <<  0) /**< \brief (LCDCA_IER) Frame Counter 0 Rollover */\r
+/* -------- LCDCA_IDR : (LCDCA Offset: 0x5C) Interrupt Disable Register -------- */\r
+#define LCDCA_IDR_FC0R              (0x1u <<  0) /**< \brief (LCDCA_IDR) Frame Counter 0 Rollover */\r
+/* -------- LCDCA_IMR : (LCDCA Offset: 0x60) Interrupt Mask Register -------- */\r
+#define LCDCA_IMR_FC0R              (0x1u <<  0) /**< \brief (LCDCA_IMR) Frame Counter 0 Rollover */\r
+/* -------- LCDCA_VERSION : (LCDCA Offset: 0x64) Version Register -------- */\r
+#define LCDCA_VERSION_VERSION_Pos    0\r
+#define LCDCA_VERSION_VERSION_Msk    (0xFFFu << LCDCA_VERSION_VERSION_Pos) /**< \brief (LCDCA_VERSION) Version Number */\r
+#define LCDCA_VERSION_VERSION(value) ((LCDCA_VERSION_VERSION_Msk & ((value) << LCDCA_VERSION_VERSION_Pos)))\r
+#define LCDCA_VERSION_VARIANT_Pos    16\r
+#define LCDCA_VERSION_VARIANT_Msk    (0xFu << LCDCA_VERSION_VARIANT_Pos) /**< \brief (LCDCA_VERSION) Variant Number */\r
+#define LCDCA_VERSION_VARIANT(value) ((LCDCA_VERSION_VARIANT_Msk & ((value) << LCDCA_VERSION_VARIANT_Pos)))\r
+\r
+/*@}*/\r
+\r
+/* ============================================================================= */\r
+/**  SOFTWARE API DEFINITION FOR PARC */\r
+/* ============================================================================= */\r
+/** \addtogroup SAM4L_PARC Parallel Capture */\r
+/*@{*/\r
+\r
+#define REV_PARC       0x100\r
+\r
+#ifndef __ASSEMBLY__\r
+/** \brief PARC hardware registers */\r
+typedef struct {\r
+  RwReg   PARC_CFG;         /**< \brief (PARC Offset: 0x00) Configuration Register */\r
+  RwReg   PARC_CR;          /**< \brief (PARC Offset: 0x04) Control Register */\r
+  WoReg   PARC_IER;         /**< \brief (PARC Offset: 0x08) Interrupt Enable Register */\r
+  WoReg   PARC_IDR;         /**< \brief (PARC Offset: 0x0C) Interrupt Disable Register */\r
+  RoReg   PARC_IMR;         /**< \brief (PARC Offset: 0x10) Interrupt Mask Register */\r
+  RoReg   PARC_SR;          /**< \brief (PARC Offset: 0x14) Status Register */\r
+  WoReg   PARC_ICR;         /**< \brief (PARC Offset: 0x18) Interrupt Status Clear Register */\r
+  RoReg   PARC_RHR;         /**< \brief (PARC Offset: 0x1C) Receive Holding Register */\r
+  RoReg   PARC_VERSION;     /**< \brief (PARC Offset: 0x20) Version Register */\r
+} Parc;\r
+#endif /* __ASSEMBLY__ */\r
+/* -------- PARC_CFG : (PARC Offset: 0x00) Configuration Register -------- */\r
+#define PARC_CFG_DSIZE_Pos          0\r
+#define PARC_CFG_DSIZE_Msk          (0x3u << PARC_CFG_DSIZE_Pos) /**< \brief (PARC_CFG) Data Size */\r
+#define PARC_CFG_DSIZE(value)       ((PARC_CFG_DSIZE_Msk & ((value) << PARC_CFG_DSIZE_Pos)))\r
+#define PARC_CFG_SMODE_Pos          2\r
+#define PARC_CFG_SMODE_Msk          (0x3u << PARC_CFG_SMODE_Pos) /**< \brief (PARC_CFG) Sampling Mode */\r
+#define PARC_CFG_SMODE(value)       ((PARC_CFG_SMODE_Msk & ((value) << PARC_CFG_SMODE_Pos)))\r
+#define PARC_CFG_EMODE              (0x1u <<  4) /**< \brief (PARC_CFG) Events Mode */\r
+#define PARC_CFG_EDGE               (0x1u <<  5) /**< \brief (PARC_CFG) Sampling Edge Select */\r
+#define PARC_CFG_HALF               (0x1u <<  6) /**< \brief (PARC_CFG) Half Capture */\r
+#define PARC_CFG_ODD                (0x1u <<  7) /**< \brief (PARC_CFG) Odd Capture */\r
+/* -------- PARC_CR : (PARC Offset: 0x04) Control Register -------- */\r
+#define PARC_CR_EN                  (0x1u <<  0) /**< \brief (PARC_CR) Enable */\r
+#define PARC_CR_DIS                 (0x1u <<  1) /**< \brief (PARC_CR) Disable */\r
+#define PARC_CR_START               (0x1u <<  2) /**< \brief (PARC_CR) Start Capture */\r
+#define PARC_CR_STOP                (0x1u <<  3) /**< \brief (PARC_CR) Stop Capture */\r
+/* -------- PARC_IER : (PARC Offset: 0x08) Interrupt Enable Register -------- */\r
+#define PARC_IER_DRDY               (0x1u <<  2) /**< \brief (PARC_IER) Data Ready Interrupt Enable */\r
+#define PARC_IER_OVR                (0x1u <<  3) /**< \brief (PARC_IER) Overrun Interrupt Enable */\r
+/* -------- PARC_IDR : (PARC Offset: 0x0C) Interrupt Disable Register -------- */\r
+#define PARC_IDR_DRDY               (0x1u <<  2) /**< \brief (PARC_IDR) Data Ready Interrupt Disable */\r
+#define PARC_IDR_OVR                (0x1u <<  3) /**< \brief (PARC_IDR) Overrun Interrupt Disable */\r
+/* -------- PARC_IMR : (PARC Offset: 0x10) Interrupt Mask Register -------- */\r
+#define PARC_IMR_DRDY               (0x1u <<  2) /**< \brief (PARC_IMR) Data Ready Interrupt Mask */\r
+#define PARC_IMR_OVR                (0x1u <<  3) /**< \brief (PARC_IMR) Overrun Interrupt Mask */\r
+/* -------- PARC_SR : (PARC Offset: 0x14) Status Register -------- */\r
+#define PARC_SR_EN                  (0x1u <<  0) /**< \brief (PARC_SR) Enable Status */\r
+#define PARC_SR_CS                  (0x1u <<  1) /**< \brief (PARC_SR) Capture Status */\r
+#define PARC_SR_DRDY                (0x1u <<  2) /**< \brief (PARC_SR) Data Ready Interrupt Status */\r
+#define PARC_SR_OVR                 (0x1u <<  3) /**< \brief (PARC_SR) Overrun Interrupt Status */\r
+/* -------- PARC_ICR : (PARC Offset: 0x18) Interrupt Status Clear Register -------- */\r
+#define PARC_ICR_DRDY               (0x1u <<  2) /**< \brief (PARC_ICR) Data Ready Interrupt Status Clear */\r
+#define PARC_ICR_OVR                (0x1u <<  3) /**< \brief (PARC_ICR) Overrun Interrupt Status Clear */\r
+/* -------- PARC_RHR : (PARC Offset: 0x1C) Receive Holding Register -------- */\r
+#define PARC_RHR_CDATA_Pos          0\r
+#define PARC_RHR_CDATA_Msk          (0xFFFFFFFFu << PARC_RHR_CDATA_Pos) /**< \brief (PARC_RHR) Captured Data */\r
+#define PARC_RHR_CDATA(value)       ((PARC_RHR_CDATA_Msk & ((value) << PARC_RHR_CDATA_Pos)))\r
+/* -------- PARC_VERSION : (PARC Offset: 0x20) Version Register -------- */\r
+#define PARC_VERSION_VERSION_Pos    0\r
+#define PARC_VERSION_VERSION_Msk    (0xFFFu << PARC_VERSION_VERSION_Pos) /**< \brief (PARC_VERSION) Version Number */\r
+#define PARC_VERSION_VERSION(value) ((PARC_VERSION_VERSION_Msk & ((value) << PARC_VERSION_VERSION_Pos)))\r
+#define PARC_VERSION_VARIANT_Pos    16\r
+#define PARC_VERSION_VARIANT_Msk    (0xFu << PARC_VERSION_VARIANT_Pos) /**< \brief (PARC_VERSION) Variant Number */\r
+#define PARC_VERSION_VARIANT(value) ((PARC_VERSION_VARIANT_Msk & ((value) << PARC_VERSION_VARIANT_Pos)))\r
+\r
+/*@}*/\r
+\r
+/* ============================================================================= */\r
+/**  SOFTWARE API DEFINITION FOR PDCA */\r
+/* ============================================================================= */\r
+/** \addtogroup SAM4L_PDCA Peripheral DMA Controller */\r
+/*@{*/\r
+\r
+#define REV_PDCA       0x124\r
+\r
+#ifndef __ASSEMBLY__\r
+/** \brief PdcaChannel hardware registers */\r
+typedef struct {\r
+  RwReg   PDCA_MAR;    /**< \brief (PdcaChannel Offset: 0x000) Memory Address Register */\r
+  RwReg   PDCA_PSR;    /**< \brief (PdcaChannel Offset: 0x004) Peripheral Select Register */\r
+  RwReg   PDCA_TCR;    /**< \brief (PdcaChannel Offset: 0x008) Transfer Counter Register */\r
+  RwReg   PDCA_MARR;   /**< \brief (PdcaChannel Offset: 0x00C) Memory Address Reload Register */\r
+  RwReg   PDCA_TCRR;   /**< \brief (PdcaChannel Offset: 0x010) Transfer Counter Reload Register */\r
+  WoReg   PDCA_CR;     /**< \brief (PdcaChannel Offset: 0x014) Control Register */\r
+  RwReg   PDCA_MR;     /**< \brief (PdcaChannel Offset: 0x018) Mode Register */\r
+  RoReg   PDCA_SR;     /**< \brief (PdcaChannel Offset: 0x01C) Status Register */\r
+  WoReg   PDCA_IER;    /**< \brief (PdcaChannel Offset: 0x020) Interrupt Enable Register */\r
+  WoReg   PDCA_IDR;    /**< \brief (PdcaChannel Offset: 0x024) Interrupt Disable Register */\r
+  RoReg   PDCA_IMR;    /**< \brief (PdcaChannel Offset: 0x028) Interrupt Mask Register */\r
+  RoReg   PDCA_ISR;    /**< \brief (PdcaChannel Offset: 0x02C) Interrupt Status Register */\r
+  RoReg   Reserved1[4];\r
+} PdcaChannel;\r
+/** \brief PDCA hardware registers */\r
+#define PDCA_CHANNEL_LENGTH 16\r
+typedef struct {\r
+  PdcaChannel PDCA_CHANNEL[PDCA_CHANNEL_LENGTH]; /**< \brief (PDCA Offset: 0x000) PdcaChannel groups */\r
+  PdcaChannel Reserved1[32 - PDCA_CHANNEL_LENGTH];\r
+  RwReg   PDCA_PCONTROL;    /**< \brief (PDCA Offset: 0x800) Performance Control Register */\r
+  RoReg   PDCA_PRDATA0;     /**< \brief (PDCA Offset: 0x804) Channel 0 Read Data Cycles */\r
+  RoReg   PDCA_PRSTALL0;    /**< \brief (PDCA Offset: 0x808) Channel 0 Read Stall Cycles */\r
+  RoReg   PDCA_PRLAT0;      /**< \brief (PDCA Offset: 0x80C) Channel 0 Read Max Latency */\r
+  RoReg   PDCA_PWDATA0;     /**< \brief (PDCA Offset: 0x810) Channel 0 Write Data Cycles */\r
+  RoReg   PDCA_PWSTALL0;    /**< \brief (PDCA Offset: 0x814) Channel 0 Write Stall Cycles */\r
+  RoReg   PDCA_PWLAT0;      /**< \brief (PDCA Offset: 0x818) Channel0 Write Max Latency */\r
+  RoReg   PDCA_PRDATA1;     /**< \brief (PDCA Offset: 0x81C) Channel 1 Read Data Cycles */\r
+  RoReg   PDCA_PRSTALL1;    /**< \brief (PDCA Offset: 0x820) Channel Read Stall Cycles */\r
+  RoReg   PDCA_PRLAT1;      /**< \brief (PDCA Offset: 0x824) Channel 1 Read Max Latency */\r
+  RoReg   PDCA_PWDATA1;     /**< \brief (PDCA Offset: 0x828) Channel 1 Write Data Cycles */\r
+  RoReg   PDCA_PWSTALL1;    /**< \brief (PDCA Offset: 0x82C) Channel 1 Write stall Cycles */\r
+  RoReg   PDCA_PWLAT1;      /**< \brief (PDCA Offset: 0x830) Channel 1 Read Max Latency */\r
+  RoReg   PDCA_VERSION;     /**< \brief (PDCA Offset: 0x834) Version Register */\r
+} Pdca;\r
+#endif /* __ASSEMBLY__ */\r
+/* -------- PDCA_MAR : (PDCA Offset: 0x000) Channel Memory Address Register -------- */\r
+#define PDCA_MAR_MADDR_Pos          0\r
+#define PDCA_MAR_MADDR_Msk          (0xFFFFFFFFu << PDCA_MAR_MADDR_Pos) /**< \brief (PDCA_MAR) Memory Address */\r
+#define PDCA_MAR_MADDR(value)       ((PDCA_MAR_MADDR_Msk & ((value) << PDCA_MAR_MADDR_Pos)))\r
+/* -------- PDCA_PSR : (PDCA Offset: 0x004) Channel Peripheral Select Register -------- */\r
+#define PDCA_PSR_PID_Pos            0\r
+#define PDCA_PSR_PID_Msk            (0xFFu << PDCA_PSR_PID_Pos) /**< \brief (PDCA_PSR) Peripheral Identifier */\r
+#define PDCA_PSR_PID(value)         ((PDCA_PSR_PID_Msk & ((value) << PDCA_PSR_PID_Pos)))\r
+/* -------- PDCA_TCR : (PDCA Offset: 0x008) Channel Transfer Counter Register -------- */\r
+#define PDCA_TCR_TCV_Pos            0\r
+#define PDCA_TCR_TCV_Msk            (0xFFFFu << PDCA_TCR_TCV_Pos) /**< \brief (PDCA_TCR) Transfer Counter Value */\r
+#define PDCA_TCR_TCV(value)         ((PDCA_TCR_TCV_Msk & ((value) << PDCA_TCR_TCV_Pos)))\r
+/* -------- PDCA_MARR : (PDCA Offset: 0x00C) Channel Memory Address Reload Register -------- */\r
+#define PDCA_MARR_MARV_Pos          0\r
+#define PDCA_MARR_MARV_Msk          (0xFFFFFFFFu << PDCA_MARR_MARV_Pos) /**< \brief (PDCA_MARR) Memory Address Reload Value */\r
+#define PDCA_MARR_MARV(value)       ((PDCA_MARR_MARV_Msk & ((value) << PDCA_MARR_MARV_Pos)))\r
+/* -------- PDCA_TCRR : (PDCA Offset: 0x010) Channel Transfer Counter Reload Register -------- */\r
+#define PDCA_TCRR_TCRV_Pos          0\r
+#define PDCA_TCRR_TCRV_Msk          (0xFFFFu << PDCA_TCRR_TCRV_Pos) /**< \brief (PDCA_TCRR) Transfer Counter Reload Value */\r
+#define PDCA_TCRR_TCRV(value)       ((PDCA_TCRR_TCRV_Msk & ((value) << PDCA_TCRR_TCRV_Pos)))\r
+/* -------- PDCA_CR : (PDCA Offset: 0x014) Channel Control Register -------- */\r
+#define PDCA_CR_TEN                 (0x1u <<  0) /**< \brief (PDCA_CR) Transfer Enable */\r
+#define PDCA_CR_TDIS                (0x1u <<  1) /**< \brief (PDCA_CR) Transfer Disable */\r
+#define PDCA_CR_ECLR                (0x1u <<  8) /**< \brief (PDCA_CR) Error Clear */\r
+/* -------- PDCA_MR : (PDCA Offset: 0x018) Channel Mode Register -------- */\r
+#define PDCA_MR_SIZE_Pos            0\r
+#define PDCA_MR_SIZE_Msk            (0x3u << PDCA_MR_SIZE_Pos) /**< \brief (PDCA_MR) Transfer size */\r
+#define PDCA_MR_SIZE(value)         ((PDCA_MR_SIZE_Msk & ((value) << PDCA_MR_SIZE_Pos)))\r
+#define   PDCA_MR_SIZE_BYTE         (0x0u <<  0) /**< \brief (PDCA_MR)  */\r
+#define   PDCA_MR_SIZE_HALF_WORD    (0x1u <<  0) /**< \brief (PDCA_MR)  */\r
+#define   PDCA_MR_SIZE_WORD         (0x2u <<  0) /**< \brief (PDCA_MR)  */\r
+#define PDCA_MR_ETRIG               (0x1u <<  2) /**< \brief (PDCA_MR) Event trigger */\r
+#define PDCA_MR_RING                (0x1u <<  3) /**< \brief (PDCA_MR) Ring Buffer */\r
+/* -------- PDCA_SR : (PDCA Offset: 0x01C) Channel Status Register -------- */\r
+#define PDCA_SR_TEN                 (0x1u <<  0) /**< \brief (PDCA_SR) Transfer Enabled */\r
+/* -------- PDCA_IER : (PDCA Offset: 0x020) Channel Interrupt Enable Register -------- */\r
+#define PDCA_IER_RCZ                (0x1u <<  0) /**< \brief (PDCA_IER) Reload Counter Zero */\r
+#define PDCA_IER_TRC                (0x1u <<  1) /**< \brief (PDCA_IER) Transfer Complete */\r
+#define PDCA_IER_TERR               (0x1u <<  2) /**< \brief (PDCA_IER) Transfer Error */\r
+/* -------- PDCA_IDR : (PDCA Offset: 0x024) Channel Interrupt Disable Register -------- */\r
+#define PDCA_IDR_RCZ                (0x1u <<  0) /**< \brief (PDCA_IDR) Reload Counter Zero */\r
+#define PDCA_IDR_TRC                (0x1u <<  1) /**< \brief (PDCA_IDR) Transfer Complete */\r
+#define PDCA_IDR_TERR               (0x1u <<  2) /**< \brief (PDCA_IDR) Transfer Error */\r
+/* -------- PDCA_IMR : (PDCA Offset: 0x028) Channel Interrupt Mask Register -------- */\r
+#define PDCA_IMR_RCZ                (0x1u <<  0) /**< \brief (PDCA_IMR) Reload Counter Zero */\r
+#define PDCA_IMR_TRC                (0x1u <<  1) /**< \brief (PDCA_IMR) Transfer Complete */\r
+#define PDCA_IMR_TERR               (0x1u <<  2) /**< \brief (PDCA_IMR) Transfer Error */\r
+/* -------- PDCA_ISR : (PDCA Offset: 0x02C) Channel Interrupt Status Register -------- */\r
+#define PDCA_ISR_RCZ                (0x1u <<  0) /**< \brief (PDCA_ISR) Reload Counter Zero */\r
+#define PDCA_ISR_TRC                (0x1u <<  1) /**< \brief (PDCA_ISR) Transfer Complete */\r
+#define PDCA_ISR_TERR               (0x1u <<  2) /**< \brief (PDCA_ISR) Transfer Error */\r
+/* -------- PDCA_PCONTROL : (PDCA Offset: 0x800) Performance Control Register -------- */\r
+#define PDCA_PCONTROL_CH0EN         (0x1u <<  0) /**< \brief (PDCA_PCONTROL) Channel 0 Enabled */\r
+#define PDCA_PCONTROL_CH1EN         (0x1u <<  1) /**< \brief (PDCA_PCONTROL) Channel 1 Enabled. */\r
+#define PDCA_PCONTROL_CH0OF         (0x1u <<  4) /**< \brief (PDCA_PCONTROL) Channel 0 Overflow Freeze */\r
+#define PDCA_PCONTROL_CH1OF         (0x1u <<  5) /**< \brief (PDCA_PCONTROL) Channel 1 overflow freeze */\r
+#define PDCA_PCONTROL_CH0RES        (0x1u <<  8) /**< \brief (PDCA_PCONTROL) Channel 0 counter reset */\r
+#define PDCA_PCONTROL_CH1RES        (0x1u <<  9) /**< \brief (PDCA_PCONTROL) Channel 1 counter reset */\r
+#define PDCA_PCONTROL_MON0CH_Pos    16\r
+#define PDCA_PCONTROL_MON0CH_Msk    (0x3Fu << PDCA_PCONTROL_MON0CH_Pos) /**< \brief (PDCA_PCONTROL) PDCA Channel to monitor with counter 0 */\r
+#define PDCA_PCONTROL_MON0CH(value) ((PDCA_PCONTROL_MON0CH_Msk & ((value) << PDCA_PCONTROL_MON0CH_Pos)))\r
+#define PDCA_PCONTROL_MON1CH_Pos    24\r
+#define PDCA_PCONTROL_MON1CH_Msk    (0x3Fu << PDCA_PCONTROL_MON1CH_Pos) /**< \brief (PDCA_PCONTROL) PDCA Channel to monitor with counter 1 */\r
+#define PDCA_PCONTROL_MON1CH(value) ((PDCA_PCONTROL_MON1CH_Msk & ((value) << PDCA_PCONTROL_MON1CH_Pos)))\r
+/* -------- PDCA_PRDATA0 : (PDCA Offset: 0x804) Channel 0 Read Data Cycles -------- */\r
+#define PDCA_PRDATA0_DATA_Pos       0\r
+#define PDCA_PRDATA0_DATA_Msk       (0xFFFFFFFFu << PDCA_PRDATA0_DATA_Pos) /**< \brief (PDCA_PRDATA0) Data Cycles Counted Since Last reset */\r
+#define PDCA_PRDATA0_DATA(value)    ((PDCA_PRDATA0_DATA_Msk & ((value) << PDCA_PRDATA0_DATA_Pos)))\r
+/* -------- PDCA_PRSTALL0 : (PDCA Offset: 0x808) Channel 0 Read Stall Cycles -------- */\r
+#define PDCA_PRSTALL0_STALL_Pos     0\r
+#define PDCA_PRSTALL0_STALL_Msk     (0xFFFFFFFFu << PDCA_PRSTALL0_STALL_Pos) /**< \brief (PDCA_PRSTALL0) Stall Cycles counted since last reset */\r
+#define PDCA_PRSTALL0_STALL(value)  ((PDCA_PRSTALL0_STALL_Msk & ((value) << PDCA_PRSTALL0_STALL_Pos)))\r
+/* -------- PDCA_PRLAT0 : (PDCA Offset: 0x80C) Channel 0 Read Max Latency -------- */\r
+#define PDCA_PRLAT0_LAT_Pos         0\r
+#define PDCA_PRLAT0_LAT_Msk         (0xFFFFu << PDCA_PRLAT0_LAT_Pos) /**< \brief (PDCA_PRLAT0) Maximum Transfer Initiation cycles counted since last reset */\r
+#define PDCA_PRLAT0_LAT(value)      ((PDCA_PRLAT0_LAT_Msk & ((value) << PDCA_PRLAT0_LAT_Pos)))\r
+/* -------- PDCA_PWDATA0 : (PDCA Offset: 0x810) Channel 0 Write Data Cycles -------- */\r
+#define PDCA_PWDATA0_DATA_Pos       0\r
+#define PDCA_PWDATA0_DATA_Msk       (0xFFFFFFFFu << PDCA_PWDATA0_DATA_Pos) /**< \brief (PDCA_PWDATA0) Data Cycles Counted since last Reset */\r
+#define PDCA_PWDATA0_DATA(value)    ((PDCA_PWDATA0_DATA_Msk & ((value) << PDCA_PWDATA0_DATA_Pos)))\r
+/* -------- PDCA_PWSTALL0 : (PDCA Offset: 0x814) Channel 0 Write Stall Cycles -------- */\r
+#define PDCA_PWSTALL0_STALL_Pos     0\r
+#define PDCA_PWSTALL0_STALL_Msk     (0xFFFFFFFFu << PDCA_PWSTALL0_STALL_Pos) /**< \brief (PDCA_PWSTALL0) Stall cycles counted since last reset */\r
+#define PDCA_PWSTALL0_STALL(value)  ((PDCA_PWSTALL0_STALL_Msk & ((value) << PDCA_PWSTALL0_STALL_Pos)))\r
+/* -------- PDCA_PWLAT0 : (PDCA Offset: 0x818) Channel0 Write Max Latency -------- */\r
+#define PDCA_PWLAT0_LAT_Pos         0\r
+#define PDCA_PWLAT0_LAT_Msk         (0xFFFFu << PDCA_PWLAT0_LAT_Pos) /**< \brief (PDCA_PWLAT0) Maximum transfer initiation cycles counted since last reset */\r
+#define PDCA_PWLAT0_LAT(value)      ((PDCA_PWLAT0_LAT_Msk & ((value) << PDCA_PWLAT0_LAT_Pos)))\r
+/* -------- PDCA_PRDATA1 : (PDCA Offset: 0x81C) Channel 1 Read Data Cycles -------- */\r
+#define PDCA_PRDATA1_DATA_Pos       0\r
+#define PDCA_PRDATA1_DATA_Msk       (0xFFFFFFFFu << PDCA_PRDATA1_DATA_Pos) /**< \brief (PDCA_PRDATA1) Data Cycles Counted Since Last reset */\r
+#define PDCA_PRDATA1_DATA(value)    ((PDCA_PRDATA1_DATA_Msk & ((value) << PDCA_PRDATA1_DATA_Pos)))\r
+/* -------- PDCA_PRSTALL1 : (PDCA Offset: 0x820) Channel Read Stall Cycles -------- */\r
+#define PDCA_PRSTALL1_STALL_Pos     0\r
+#define PDCA_PRSTALL1_STALL_Msk     (0xFFFFFFFFu << PDCA_PRSTALL1_STALL_Pos) /**< \brief (PDCA_PRSTALL1) Stall Cycles Counted since last reset */\r
+#define PDCA_PRSTALL1_STALL(value)  ((PDCA_PRSTALL1_STALL_Msk & ((value) << PDCA_PRSTALL1_STALL_Pos)))\r
+/* -------- PDCA_PRLAT1 : (PDCA Offset: 0x824) Channel 1 Read Max Latency -------- */\r
+#define PDCA_PRLAT1_LAT_Pos         0\r
+#define PDCA_PRLAT1_LAT_Msk         (0xFFFFu << PDCA_PRLAT1_LAT_Pos) /**< \brief (PDCA_PRLAT1) Maximum Transfer initiation cycles counted since last reset */\r
+#define PDCA_PRLAT1_LAT(value)      ((PDCA_PRLAT1_LAT_Msk & ((value) << PDCA_PRLAT1_LAT_Pos)))\r
+/* -------- PDCA_PWDATA1 : (PDCA Offset: 0x828) Channel 1 Write Data Cycles -------- */\r
+#define PDCA_PWDATA1_DATA_Pos       0\r
+#define PDCA_PWDATA1_DATA_Msk       (0xFFFFFFFFu << PDCA_PWDATA1_DATA_Pos) /**< \brief (PDCA_PWDATA1) Data cycles Counted Since last reset */\r
+#define PDCA_PWDATA1_DATA(value)    ((PDCA_PWDATA1_DATA_Msk & ((value) << PDCA_PWDATA1_DATA_Pos)))\r
+/* -------- PDCA_PWSTALL1 : (PDCA Offset: 0x82C) Channel 1 Write stall Cycles -------- */\r
+#define PDCA_PWSTALL1_STALL_Pos     0\r
+#define PDCA_PWSTALL1_STALL_Msk     (0xFFFFFFFFu << PDCA_PWSTALL1_STALL_Pos) /**< \brief (PDCA_PWSTALL1) Stall cycles counted since last reset */\r
+#define PDCA_PWSTALL1_STALL(value)  ((PDCA_PWSTALL1_STALL_Msk & ((value) << PDCA_PWSTALL1_STALL_Pos)))\r
+/* -------- PDCA_PWLAT1 : (PDCA Offset: 0x830) Channel 1 Read Max Latency -------- */\r
+#define PDCA_PWLAT1_LAT_Pos         0\r
+#define PDCA_PWLAT1_LAT_Msk         (0xFFFFu << PDCA_PWLAT1_LAT_Pos) /**< \brief (PDCA_PWLAT1) Maximum transfer initiation cycles counted since last reset */\r
+#define PDCA_PWLAT1_LAT(value)      ((PDCA_PWLAT1_LAT_Msk & ((value) << PDCA_PWLAT1_LAT_Pos)))\r
+/* -------- PDCA_VERSION : (PDCA Offset: 0x834) Version Register -------- */\r
+#define PDCA_VERSION_VERSION_Pos    0\r
+#define PDCA_VERSION_VERSION_Msk    (0xFFFu << PDCA_VERSION_VERSION_Pos) /**< \brief (PDCA_VERSION) Version Number */\r
+#define PDCA_VERSION_VERSION(value) ((PDCA_VERSION_VERSION_Msk & ((value) << PDCA_VERSION_VERSION_Pos)))\r
+#define PDCA_VERSION_VARIANT_Pos    16\r
+#define PDCA_VERSION_VARIANT_Msk    (0xFu << PDCA_VERSION_VARIANT_Pos) /**< \brief (PDCA_VERSION) Variant Number */\r
+#define PDCA_VERSION_VARIANT(value) ((PDCA_VERSION_VARIANT_Msk & ((value) << PDCA_VERSION_VARIANT_Pos)))\r
+\r
+/*@}*/\r
+\r
+/* ============================================================================= */\r
+/**  SOFTWARE API DEFINITION FOR PEVC */\r
+/* ============================================================================= */\r
+/** \addtogroup SAM4L_PEVC Peripheral Event Controller */\r
+/*@{*/\r
+\r
+#define REV_PEVC       0x200\r
+\r
+#ifndef __ASSEMBLY__\r
+/** \brief PevcChmx hardware registers */\r
+typedef struct {\r
+  RwReg   PEVC_CHMX;   /**< \brief (PevcChmx Offset: 0x000) Channel Multiplexer 0 */\r
+} PevcChmx;\r
+/** \brief PevcEvs hardware registers */\r
+typedef struct {\r
+  RwReg   PEVC_EVS;    /**< \brief (PevcEvs Offset: 0x000) Event Shaper 0 */\r
+} PevcEvs;\r
+/** \brief PEVC hardware registers */\r
+#define PEVC_TRIGOUT_BITS 19\r
+#define PEVC_EVIN_BITS 31\r
+typedef struct {\r
+  RoReg   PEVC_CHSR;        /**< \brief (PEVC Offset: 0x000) Channel Status Register */\r
+  WoReg   PEVC_CHER;        /**< \brief (PEVC Offset: 0x004) Channel Enable Register */\r
+  WoReg   PEVC_CHDR;        /**< \brief (PEVC Offset: 0x008) Channel Disable Register */\r
+  RoReg   Reserved1[1];\r
+  WoReg   PEVC_SEV;         /**< \brief (PEVC Offset: 0x010) Software Event */\r
+  RoReg   PEVC_BUSY;        /**< \brief (PEVC Offset: 0x014) Channel / User Busy */\r
+  RoReg   Reserved2[2];\r
+  WoReg   PEVC_TRIER;       /**< \brief (PEVC Offset: 0x020) Trigger Interrupt Mask Enable Register */\r
+  WoReg   PEVC_TRIDR;       /**< \brief (PEVC Offset: 0x024) Trigger Interrupt Mask Disable Register */\r
+  RoReg   PEVC_TRIMR;       /**< \brief (PEVC Offset: 0x028) Trigger Interrupt Mask Register */\r
+  RoReg   Reserved3[1];\r
+  RoReg   PEVC_TRSR;        /**< \brief (PEVC Offset: 0x030) Trigger Status Register */\r
+  WoReg   PEVC_TRSCR;       /**< \brief (PEVC Offset: 0x034) Trigger Status Clear Register */\r
+  RoReg   Reserved4[2];\r
+  WoReg   PEVC_OVIER;       /**< \brief (PEVC Offset: 0x040) Overrun Interrupt Mask Enable Register */\r
+  WoReg   PEVC_OVIDR;       /**< \brief (PEVC Offset: 0x044) Overrun Interrupt Mask Disable Register */\r
+  RoReg   PEVC_OVIMR;       /**< \brief (PEVC Offset: 0x048) Overrun Interrupt Mask Register */\r
+  RoReg   Reserved5[1];\r
+  RoReg   PEVC_OVSR;        /**< \brief (PEVC Offset: 0x050) Overrun Status Register */\r
+  WoReg   PEVC_OVSCR;       /**< \brief (PEVC Offset: 0x054) Overrun Status Clear Register */\r
+  RoReg   Reserved6[42];\r
+  PevcChmx PEVC_CHMX[PEVC_TRIGOUT_BITS]; /**< \brief (PEVC Offset: 0x100) PevcChmx groups */\r
+  PevcChmx Reserved7[32 - PEVC_TRIGOUT_BITS];\r
+  RoReg   Reserved8[32];\r
+  PevcEvs PEVC_EVS[PEVC_EVIN_BITS]; /**< \brief (PEVC Offset: 0x200) PevcEvs groups */\r
+  PevcEvs Reserved9[64 - PEVC_EVIN_BITS];\r
+  RwReg   PEVC_IGFDR;       /**< \brief (PEVC Offset: 0x300) Input Glitch Filter Divider Register */\r
+  RoReg   Reserved10[61];\r
+  RoReg   PEVC_PARAMETER;   /**< \brief (PEVC Offset: 0x3F8) Parameter */\r
+  RoReg   PEVC_VERSION;     /**< \brief (PEVC Offset: 0x3FC) Version */\r
+} Pevc;\r
+#endif /* __ASSEMBLY__ */\r
+/* -------- PEVC_CHSR : (PEVC Offset: 0x000) Channel Status Register -------- */\r
+#define PEVC_CHSR_CHS_Pos           0\r
+#define PEVC_CHSR_CHS_Msk           (0xFFFFFFFFu << PEVC_CHSR_CHS_Pos) /**< \brief (PEVC_CHSR) Channel Status */\r
+#define PEVC_CHSR_CHS(value)        ((PEVC_CHSR_CHS_Msk & ((value) << PEVC_CHSR_CHS_Pos)))\r
+#define   PEVC_CHSR_CHS_0           (0x0u <<  0) /**< \brief (PEVC_CHSR) Channel j Disabled */\r
+#define   PEVC_CHSR_CHS_1           (0x1u <<  0) /**< \brief (PEVC_CHSR) Channel j Enabled */\r
+/* -------- PEVC_CHER : (PEVC Offset: 0x004) Channel Enable Register -------- */\r
+#define PEVC_CHER_CHE_Pos           0\r
+#define PEVC_CHER_CHE_Msk           (0xFFFFFFFFu << PEVC_CHER_CHE_Pos) /**< \brief (PEVC_CHER) Channel Enable */\r
+#define PEVC_CHER_CHE(value)        ((PEVC_CHER_CHE_Msk & ((value) << PEVC_CHER_CHE_Pos)))\r
+#define   PEVC_CHER_CHE_0           (0x0u <<  0) /**< \brief (PEVC_CHER) No Action */\r
+#define   PEVC_CHER_CHE_1           (0x1u <<  0) /**< \brief (PEVC_CHER) Enable Channel j */\r
+/* -------- PEVC_CHDR : (PEVC Offset: 0x008) Channel Disable Register -------- */\r
+#define PEVC_CHDR_CHD_Pos           0\r
+#define PEVC_CHDR_CHD_Msk           (0xFFFFFFFFu << PEVC_CHDR_CHD_Pos) /**< \brief (PEVC_CHDR) Channel Disable */\r
+#define PEVC_CHDR_CHD(value)        ((PEVC_CHDR_CHD_Msk & ((value) << PEVC_CHDR_CHD_Pos)))\r
+#define   PEVC_CHDR_CHD_0           (0x0u <<  0) /**< \brief (PEVC_CHDR) No Action */\r
+#define   PEVC_CHDR_CHD_1           (0x1u <<  0) /**< \brief (PEVC_CHDR) Disable Channel j */\r
+/* -------- PEVC_SEV : (PEVC Offset: 0x010) Software Event -------- */\r
+#define PEVC_SEV_SEV_Pos            0\r
+#define PEVC_SEV_SEV_Msk            (0xFFFFFFFFu << PEVC_SEV_SEV_Pos) /**< \brief (PEVC_SEV) Software Event */\r
+#define PEVC_SEV_SEV(value)         ((PEVC_SEV_SEV_Msk & ((value) << PEVC_SEV_SEV_Pos)))\r
+#define   PEVC_SEV_SEV_0            (0x0u <<  0) /**< \brief (PEVC_SEV) No Action */\r
+#define   PEVC_SEV_SEV_1            (0x1u <<  0) /**< \brief (PEVC_SEV) CPU forces software event to channel j */\r
+/* -------- PEVC_BUSY : (PEVC Offset: 0x014) Channel / User Busy -------- */\r
+#define PEVC_BUSY_BUSY_Pos          0\r
+#define PEVC_BUSY_BUSY_Msk          (0xFFFFFFFFu << PEVC_BUSY_BUSY_Pos) /**< \brief (PEVC_BUSY) Channel Status */\r
+#define PEVC_BUSY_BUSY(value)       ((PEVC_BUSY_BUSY_Msk & ((value) << PEVC_BUSY_BUSY_Pos)))\r
+#define   PEVC_BUSY_BUSY_0          (0x0u <<  0) /**< \brief (PEVC_BUSY) No Action */\r
+#define   PEVC_BUSY_BUSY_1          (0x1u <<  0) /**< \brief (PEVC_BUSY) Channel j or User j is Busy */\r
+/* -------- PEVC_TRIER : (PEVC Offset: 0x020) Trigger Interrupt Mask Enable Register -------- */\r
+#define PEVC_TRIER_TRIE_Pos         0\r
+#define PEVC_TRIER_TRIE_Msk         (0xFFFFFFFFu << PEVC_TRIER_TRIE_Pos) /**< \brief (PEVC_TRIER) Trigger Interrupt Enable */\r
+#define PEVC_TRIER_TRIE(value)      ((PEVC_TRIER_TRIE_Msk & ((value) << PEVC_TRIER_TRIE_Pos)))\r
+#define   PEVC_TRIER_TRIE_0         (0x0u <<  0) /**< \brief (PEVC_TRIER) No Action */\r
+#define   PEVC_TRIER_TRIE_1         (0x1u <<  0) /**< \brief (PEVC_TRIER) Enable Trigger j Interrupt */\r
+/* -------- PEVC_TRIDR : (PEVC Offset: 0x024) Trigger Interrupt Mask Disable Register -------- */\r
+#define PEVC_TRIDR_TRID_Pos         0\r
+#define PEVC_TRIDR_TRID_Msk         (0xFFFFFFFFu << PEVC_TRIDR_TRID_Pos) /**< \brief (PEVC_TRIDR) Trigger Interrupt Disable */\r
+#define PEVC_TRIDR_TRID(value)      ((PEVC_TRIDR_TRID_Msk & ((value) << PEVC_TRIDR_TRID_Pos)))\r
+#define   PEVC_TRIDR_TRID_0         (0x0u <<  0) /**< \brief (PEVC_TRIDR) No Action */\r
+#define   PEVC_TRIDR_TRID_1         (0x1u <<  0) /**< \brief (PEVC_TRIDR) Disable Trigger j Interrupt */\r
+/* -------- PEVC_TRIMR : (PEVC Offset: 0x028) Trigger Interrupt Mask Register -------- */\r
+#define PEVC_TRIMR_TRIM_Pos         0\r
+#define PEVC_TRIMR_TRIM_Msk         (0xFFFFFFFFu << PEVC_TRIMR_TRIM_Pos) /**< \brief (PEVC_TRIMR) Trigger Interrupt Mask */\r
+#define PEVC_TRIMR_TRIM(value)      ((PEVC_TRIMR_TRIM_Msk & ((value) << PEVC_TRIMR_TRIM_Pos)))\r
+#define   PEVC_TRIMR_TRIM_0         (0x0u <<  0) /**< \brief (PEVC_TRIMR) Trigger j Interrupt Disabled */\r
+#define   PEVC_TRIMR_TRIM_1         (0x1u <<  0) /**< \brief (PEVC_TRIMR) Trigger j Interrupt Enabled */\r
+/* -------- PEVC_TRSR : (PEVC Offset: 0x030) Trigger Status Register -------- */\r
+#define PEVC_TRSR_TRS_Pos           0\r
+#define PEVC_TRSR_TRS_Msk           (0xFFFFFFFFu << PEVC_TRSR_TRS_Pos) /**< \brief (PEVC_TRSR) Trigger Interrupt Status */\r
+#define PEVC_TRSR_TRS(value)        ((PEVC_TRSR_TRS_Msk & ((value) << PEVC_TRSR_TRS_Pos)))\r
+#define   PEVC_TRSR_TRS_0           (0x0u <<  0) /**< \brief (PEVC_TRSR) Channel j did not send out an Event in the past */\r
+#define   PEVC_TRSR_TRS_1           (0x1u <<  0) /**< \brief (PEVC_TRSR) Channel j did send out an Event in the past */\r
+/* -------- PEVC_TRSCR : (PEVC Offset: 0x034) Trigger Status Clear Register -------- */\r
+#define PEVC_TRSCR_TRSC_Pos         0\r
+#define PEVC_TRSCR_TRSC_Msk         (0xFFFFFFFFu << PEVC_TRSCR_TRSC_Pos) /**< \brief (PEVC_TRSCR) Trigger Interrupt Status Clear */\r
+#define PEVC_TRSCR_TRSC(value)      ((PEVC_TRSCR_TRSC_Msk & ((value) << PEVC_TRSCR_TRSC_Pos)))\r
+#define   PEVC_TRSCR_TRSC_0         (0x0u <<  0) /**< \brief (PEVC_TRSCR) No Action */\r
+#define   PEVC_TRSCR_TRSC_1         (0x1u <<  0) /**< \brief (PEVC_TRSCR) Clear TRSR[j] */\r
+/* -------- PEVC_OVIER : (PEVC Offset: 0x040) Overrun Interrupt Mask Enable Register -------- */\r
+#define PEVC_OVIER_OVIE_Pos         0\r
+#define PEVC_OVIER_OVIE_Msk         (0xFFFFFFFFu << PEVC_OVIER_OVIE_Pos) /**< \brief (PEVC_OVIER) Overrun Interrupt Enable */\r
+#define PEVC_OVIER_OVIE(value)      ((PEVC_OVIER_OVIE_Msk & ((value) << PEVC_OVIER_OVIE_Pos)))\r
+#define   PEVC_OVIER_OVIE_0         (0x0u <<  0) /**< \brief (PEVC_OVIER) No Action */\r
+#define   PEVC_OVIER_OVIE_1         (0x1u <<  0) /**< \brief (PEVC_OVIER) Enable Overrun Interrupt for Channel j */\r
+/* -------- PEVC_OVIDR : (PEVC Offset: 0x044) Overrun Interrupt Mask Disable Register -------- */\r
+#define PEVC_OVIDR_OVID_Pos         0\r
+#define PEVC_OVIDR_OVID_Msk         (0xFFFFFFFFu << PEVC_OVIDR_OVID_Pos) /**< \brief (PEVC_OVIDR) Overrun Interrupt Disable */\r
+#define PEVC_OVIDR_OVID(value)      ((PEVC_OVIDR_OVID_Msk & ((value) << PEVC_OVIDR_OVID_Pos)))\r
+#define   PEVC_OVIDR_OVID_0         (0x0u <<  0) /**< \brief (PEVC_OVIDR) No Action */\r
+#define   PEVC_OVIDR_OVID_1         (0x1u <<  0) /**< \brief (PEVC_OVIDR) Enable Overrun Interrupt for Channel j */\r
+/* -------- PEVC_OVIMR : (PEVC Offset: 0x048) Overrun Interrupt Mask Register -------- */\r
+#define PEVC_OVIMR_OVIM_Pos         0\r
+#define PEVC_OVIMR_OVIM_Msk         (0xFFFFFFFFu << PEVC_OVIMR_OVIM_Pos) /**< \brief (PEVC_OVIMR) Overrun Interrupt Mask */\r
+#define PEVC_OVIMR_OVIM(value)      ((PEVC_OVIMR_OVIM_Msk & ((value) << PEVC_OVIMR_OVIM_Pos)))\r
+#define   PEVC_OVIMR_OVIM_0         (0x0u <<  0) /**< \brief (PEVC_OVIMR) Overrun Interrupt for Channel j Disabled */\r
+#define   PEVC_OVIMR_OVIM_1         (0x1u <<  0) /**< \brief (PEVC_OVIMR) Overrun Interrupt for Channel j Enabled */\r
+/* -------- PEVC_OVSR : (PEVC Offset: 0x050) Overrun Status Register -------- */\r
+#define PEVC_OVSR_OVS_Pos           0\r
+#define PEVC_OVSR_OVS_Msk           (0xFFFFFFFFu << PEVC_OVSR_OVS_Pos) /**< \brief (PEVC_OVSR) Overrun Interrupt Status */\r
+#define PEVC_OVSR_OVS(value)        ((PEVC_OVSR_OVS_Msk & ((value) << PEVC_OVSR_OVS_Pos)))\r
+#define   PEVC_OVSR_OVS_0           (0x0u <<  0) /**< \brief (PEVC_OVSR) No Overrun occured on Channel j */\r
+#define   PEVC_OVSR_OVS_1           (0x1u <<  0) /**< \brief (PEVC_OVSR) Overrun occured on Channel j */\r
+/* -------- PEVC_OVSCR : (PEVC Offset: 0x054) Overrun Status Clear Register -------- */\r
+#define PEVC_OVSCR_OVSC_Pos         0\r
+#define PEVC_OVSCR_OVSC_Msk         (0xFFFFFFFFu << PEVC_OVSCR_OVSC_Pos) /**< \brief (PEVC_OVSCR) Overrun Interrupt Status Clear */\r
+#define PEVC_OVSCR_OVSC(value)      ((PEVC_OVSCR_OVSC_Msk & ((value) << PEVC_OVSCR_OVSC_Pos)))\r
+#define   PEVC_OVSCR_OVSC_0         (0x0u <<  0) /**< \brief (PEVC_OVSCR) No Action */\r
+#define   PEVC_OVSCR_OVSC_1         (0x1u <<  0) /**< \brief (PEVC_OVSCR) Clear Overrun Status Bit j */\r
+/* -------- PEVC_CHMX : (PEVC Offset: 0x100) Chmx Channel Multiplexer 0 -------- */\r
+#define PEVC_CHMX_EVMX_Pos          0\r
+#define PEVC_CHMX_EVMX_Msk          (0x3Fu << PEVC_CHMX_EVMX_Pos) /**< \brief (PEVC_CHMX) Event Multiplexer */\r
+#define PEVC_CHMX_EVMX(value)       ((PEVC_CHMX_EVMX_Msk & ((value) << PEVC_CHMX_EVMX_Pos)))\r
+#define   PEVC_CHMX_EVMX_0          (0x0u <<  0) /**< \brief (PEVC_CHMX) Event 0 */\r
+#define   PEVC_CHMX_EVMX_1          (0x1u <<  0) /**< \brief (PEVC_CHMX) Event 1 */\r
+#define PEVC_CHMX_SMX               (0x1u <<  8) /**< \brief (PEVC_CHMX) Software Event Multiplexer */\r
+#define   PEVC_CHMX_SMX_0           (0x0u <<  8) /**< \brief (PEVC_CHMX) Hardware events */\r
+#define   PEVC_CHMX_SMX_1           (0x1u <<  8) /**< \brief (PEVC_CHMX) Software event */\r
+/* -------- PEVC_EVS : (PEVC Offset: 0x200) Evs Event Shaper 0 -------- */\r
+#define PEVC_EVS_EN                 (0x1u <<  0) /**< \brief (PEVC_EVS) Event Shaper Enable */\r
+#define   PEVC_EVS_EN_0             (0x0u <<  0) /**< \brief (PEVC_EVS) No Action */\r
+#define   PEVC_EVS_EN_1             (0x1u <<  0) /**< \brief (PEVC_EVS) Event Shaper enable */\r
+#define PEVC_EVS_IGFR               (0x1u << 16) /**< \brief (PEVC_EVS) Input Glitch Filter Rise */\r
+#define   PEVC_EVS_IGFR_0           (0x0u << 16) /**< \brief (PEVC_EVS) No Action */\r
+#define   PEVC_EVS_IGFR_1           (0x1u << 16) /**< \brief (PEVC_EVS) Input Glitch Filter : a rising edge on event input will raise trigger output */\r
+#define PEVC_EVS_IGFF               (0x1u << 17) /**< \brief (PEVC_EVS) Input Glitch Filter Fall */\r
+#define   PEVC_EVS_IGFF_0           (0x0u << 17) /**< \brief (PEVC_EVS) No Action */\r
+#define   PEVC_EVS_IGFF_1           (0x1u << 17) /**< \brief (PEVC_EVS) Input Glitch Filter : a falling edge on event input will raise trigger output */\r
+#define PEVC_EVS_IGFON              (0x1u << 18) /**< \brief (PEVC_EVS) Input Glitch Filter Status */\r
+/* -------- PEVC_IGFDR : (PEVC Offset: 0x300) Input Glitch Filter Divider Register -------- */\r
+#define PEVC_IGFDR_IGFDR_Pos        0\r
+#define PEVC_IGFDR_IGFDR_Msk        (0xFu << PEVC_IGFDR_IGFDR_Pos) /**< \brief (PEVC_IGFDR) Input Glitch Filter Divider Register */\r
+#define PEVC_IGFDR_IGFDR(value)     ((PEVC_IGFDR_IGFDR_Msk & ((value) << PEVC_IGFDR_IGFDR_Pos)))\r
+/* -------- PEVC_PARAMETER : (PEVC Offset: 0x3F8) Parameter -------- */\r
+#define PEVC_PARAMETER_IGF_COUNT_Pos    0\r
+#define PEVC_PARAMETER_IGF_COUNT_Msk    (0xFFu << PEVC_PARAMETER_IGF_COUNT_Pos) /**< \brief (PEVC_PARAMETER) Number of Input Glitch Filters */\r
+#define PEVC_PARAMETER_IGF_COUNT(value) ((PEVC_PARAMETER_IGF_COUNT_Msk & ((value) << PEVC_PARAMETER_IGF_COUNT_Pos)))\r
+#define PEVC_PARAMETER_EVS_COUNT_Pos    8\r
+#define PEVC_PARAMETER_EVS_COUNT_Msk    (0xFFu << PEVC_PARAMETER_EVS_COUNT_Pos) /**< \brief (PEVC_PARAMETER) Number of Event Shapers */\r
+#define PEVC_PARAMETER_EVS_COUNT(value) ((PEVC_PARAMETER_EVS_COUNT_Msk & ((value) << PEVC_PARAMETER_EVS_COUNT_Pos)))\r
+#define PEVC_PARAMETER_EVIN_Pos     16\r
+#define PEVC_PARAMETER_EVIN_Msk     (0xFFu << PEVC_PARAMETER_EVIN_Pos) /**< \brief (PEVC_PARAMETER) Number of Event Inputs / Generators */\r
+#define PEVC_PARAMETER_EVIN(value)  ((PEVC_PARAMETER_EVIN_Msk & ((value) << PEVC_PARAMETER_EVIN_Pos)))\r
+#define PEVC_PARAMETER_TRIGOUT_Pos    24\r
+#define PEVC_PARAMETER_TRIGOUT_Msk    (0xFFu << PEVC_PARAMETER_TRIGOUT_Pos) /**< \brief (PEVC_PARAMETER) Number of Trigger Outputs / Channels / Users */\r
+#define PEVC_PARAMETER_TRIGOUT(value) ((PEVC_PARAMETER_TRIGOUT_Msk & ((value) << PEVC_PARAMETER_TRIGOUT_Pos)))\r
+/* -------- PEVC_VERSION : (PEVC Offset: 0x3FC) Version -------- */\r
+#define PEVC_VERSION_VERSION_Pos    0\r
+#define PEVC_VERSION_VERSION_Msk    (0xFFFu << PEVC_VERSION_VERSION_Pos) /**< \brief (PEVC_VERSION) Version Number */\r
+#define PEVC_VERSION_VERSION(value) ((PEVC_VERSION_VERSION_Msk & ((value) << PEVC_VERSION_VERSION_Pos)))\r
+#define PEVC_VERSION_VARIANT_Pos    16\r
+#define PEVC_VERSION_VARIANT_Msk    (0xFu << PEVC_VERSION_VARIANT_Pos) /**< \brief (PEVC_VERSION) Variant Number */\r
+#define PEVC_VERSION_VARIANT(value) ((PEVC_VERSION_VARIANT_Msk & ((value) << PEVC_VERSION_VARIANT_Pos)))\r
+\r
+/*@}*/\r
+\r
+/* ============================================================================= */\r
+/**  SOFTWARE API DEFINITION FOR PICOUART */\r
+/* ============================================================================= */\r
+/** \addtogroup SAM4L_PICOUART Pico UART */\r
+/*@{*/\r
+\r
+#define REV_PICOUART   0x101\r
+\r
+#ifndef __ASSEMBLY__\r
+/** \brief PICOUART hardware registers */\r
+typedef struct {\r
+  WoReg   PICOUART_CR;          /**< \brief (PICOUART Offset: 0x00) Control Register */\r
+  RwReg   PICOUART_CFG;         /**< \brief (PICOUART Offset: 0x04) Configuration Register */\r
+  RoReg   PICOUART_SR;          /**< \brief (PICOUART Offset: 0x08) Status Register */\r
+  RoReg   PICOUART_RHR;         /**< \brief (PICOUART Offset: 0x0C) Receive Holding Register */\r
+  RoReg   Reserved1[4];\r
+  RoReg   PICOUART_VERSION;     /**< \brief (PICOUART Offset: 0x20) Version Register */\r
+} Picouart;\r
+#endif /* __ASSEMBLY__ */\r
+/* -------- PICOUART_CR : (PICOUART Offset: 0x00) Control Register -------- */\r
+#define PICOUART_CR_EN              (0x1u <<  0) /**< \brief (PICOUART_CR) Enable */\r
+#define PICOUART_CR_DIS             (0x1u <<  1) /**< \brief (PICOUART_CR) Disable */\r
+/* -------- PICOUART_CFG : (PICOUART Offset: 0x04) Configuration Register -------- */\r
+#define PICOUART_CFG_SOURCE_Pos     0\r
+#define PICOUART_CFG_SOURCE_Msk     (0x3u << PICOUART_CFG_SOURCE_Pos) /**< \brief (PICOUART_CFG) Source Enable Mode */\r
+#define PICOUART_CFG_SOURCE(value)  ((PICOUART_CFG_SOURCE_Msk & ((value) << PICOUART_CFG_SOURCE_Pos)))\r
+#define PICOUART_CFG_ACTION         (0x1u <<  2) /**< \brief (PICOUART_CFG) Action to perform */\r
+#define PICOUART_CFG_MATCH_Pos      8\r
+#define PICOUART_CFG_MATCH_Msk      (0xFFu << PICOUART_CFG_MATCH_Pos) /**< \brief (PICOUART_CFG) Data Match */\r
+#define PICOUART_CFG_MATCH(value)   ((PICOUART_CFG_MATCH_Msk & ((value) << PICOUART_CFG_MATCH_Pos)))\r
+/* -------- PICOUART_SR : (PICOUART Offset: 0x08) Status Register -------- */\r
+#define PICOUART_SR_EN              (0x1u <<  0) /**< \brief (PICOUART_SR) Enable Interrupt Status */\r
+#define PICOUART_SR_DRDY            (0x1u <<  1) /**< \brief (PICOUART_SR) Data Ready Interrupt Status */\r
+/* -------- PICOUART_RHR : (PICOUART Offset: 0x0C) Receive Holding Register -------- */\r
+#define PICOUART_RHR_CDATA_Pos      0\r
+#define PICOUART_RHR_CDATA_Msk      (0xFFFFFFFFu << PICOUART_RHR_CDATA_Pos) /**< \brief (PICOUART_RHR) Received Data */\r
+#define PICOUART_RHR_CDATA(value)   ((PICOUART_RHR_CDATA_Msk & ((value) << PICOUART_RHR_CDATA_Pos)))\r
+/* -------- PICOUART_VERSION : (PICOUART Offset: 0x20) Version Register -------- */\r
+#define PICOUART_VERSION_VERSION_Pos    0\r
+#define PICOUART_VERSION_VERSION_Msk    (0xFFFu << PICOUART_VERSION_VERSION_Pos) /**< \brief (PICOUART_VERSION) Version Number */\r
+#define PICOUART_VERSION_VERSION(value) ((PICOUART_VERSION_VERSION_Msk & ((value) << PICOUART_VERSION_VERSION_Pos)))\r
+#define PICOUART_VERSION_VARIANT_Pos    16\r
+#define PICOUART_VERSION_VARIANT_Msk    (0xFu << PICOUART_VERSION_VARIANT_Pos) /**< \brief (PICOUART_VERSION) Variant Number */\r
+#define PICOUART_VERSION_VARIANT(value) ((PICOUART_VERSION_VARIANT_Msk & ((value) << PICOUART_VERSION_VARIANT_Pos)))\r
+\r
+/*@}*/\r
+\r
+/* ============================================================================= */\r
+/**  SOFTWARE API DEFINITION FOR PM */\r
+/* ============================================================================= */\r
+/** \addtogroup SAM4L_PM Power Manager */\r
+/*@{*/\r
+\r
+#define REV_PM         0x441\r
+\r
+#ifndef __ASSEMBLY__\r
+/** \brief PM hardware registers */\r
+typedef struct {\r
+  RwReg   PM_MCCTRL;      /**< \brief (PM Offset: 0x000) Main Clock Control */\r
+  RwReg   PM_CPUSEL;      /**< \brief (PM Offset: 0x004) CPU Clock Select */\r
+  RoReg   Reserved1[1];\r
+  RwReg   PM_PBASEL;      /**< \brief (PM Offset: 0x00C) PBA Clock Select */\r
+  RwReg   PM_PBBSEL;      /**< \brief (PM Offset: 0x010) PBB Clock Select */\r
+  RwReg   PM_PBCSEL;      /**< \brief (PM Offset: 0x014) PBC Clock Select */\r
+  RwReg   PM_PBDSEL;      /**< \brief (PM Offset: 0x018) PBD Clock Select */\r
+  RoReg   Reserved2[1];\r
+  RwReg   PM_CPUMASK;     /**< \brief (PM Offset: 0x020) CPU Mask */\r
+  RwReg   PM_HSBMASK;     /**< \brief (PM Offset: 0x024) HSB Mask */\r
+  RwReg   PM_PBAMASK;     /**< \brief (PM Offset: 0x028) PBA Mask */\r
+  RwReg   PM_PBBMASK;     /**< \brief (PM Offset: 0x02C) PBB Mask */\r
+  RwReg   PM_PBCMASK;     /**< \brief (PM Offset: 0x030) PBC Mask */\r
+  RwReg   PM_PBDMASK;     /**< \brief (PM Offset: 0x034) PBD Mask */\r
+  RoReg   Reserved3[2];\r
+  RwReg   PM_PBADIVMASK;  /**< \brief (PM Offset: 0x040) PBA Divided Clock Mask */\r
+  RoReg   Reserved4[4];\r
+  RwReg   PM_CFDCTRL;     /**< \brief (PM Offset: 0x054) Clock Failure Detector Control */\r
+  WoReg   PM_UNLOCK;      /**< \brief (PM Offset: 0x058) Unlock Register */\r
+  RoReg   Reserved5[25];\r
+  WoReg   PM_IER;         /**< \brief (PM Offset: 0x0C0) Interrupt Enable Register */\r
+  WoReg   PM_IDR;         /**< \brief (PM Offset: 0x0C4) Interrupt Disable Register */\r
+  RoReg   PM_IMR;         /**< \brief (PM Offset: 0x0C8) Interrupt Mask Register */\r
+  RoReg   PM_ISR;         /**< \brief (PM Offset: 0x0CC) Interrupt Status Register */\r
+  WoReg   PM_ICR;         /**< \brief (PM Offset: 0x0D0) Interrupt Clear Register */\r
+  RoReg   PM_SR;          /**< \brief (PM Offset: 0x0D4) Status Register */\r
+  RoReg   Reserved6[34];\r
+  RwReg   PM_PPCR;        /**< \brief (PM Offset: 0x160) Peripheral Power Control Register */\r
+  RoReg   Reserved7[7];\r
+  RoReg   PM_RCAUSE;      /**< \brief (PM Offset: 0x180) Reset Cause Register */\r
+  RoReg   PM_WCAUSE;      /**< \brief (PM Offset: 0x184) Wake Cause Register */\r
+  RwReg   PM_AWEN;        /**< \brief (PM Offset: 0x188) Asynchronous Wake Enable */\r
+  RoReg   Reserved8[1];\r
+  RwReg   PM_OBS;         /**< \brief (PM Offset: 0x190) Obsvervability */\r
+  RwReg   PM_FASTSLEEP;   /**< \brief (PM Offset: 0x194) Fast Sleep Register */\r
+  RoReg   Reserved9[152];\r
+  RoReg   PM_CONFIG;      /**< \brief (PM Offset: 0x3F8) Configuration Register */\r
+  RoReg   PM_VERSION;     /**< \brief (PM Offset: 0x3FC) Version Register */\r
+} Pm;\r
+#endif /* __ASSEMBLY__ */\r
+/* -------- PM_MCCTRL : (PM Offset: 0x000) Main Clock Control -------- */\r
+#define PM_MCCTRL_MCSEL_Pos         0\r
+#define PM_MCCTRL_MCSEL_Msk         (0x7u << PM_MCCTRL_MCSEL_Pos) /**< \brief (PM_MCCTRL) Main Clock Select */\r
+#define PM_MCCTRL_MCSEL(value)      ((PM_MCCTRL_MCSEL_Msk & ((value) << PM_MCCTRL_MCSEL_Pos)))\r
+/* -------- PM_CPUSEL : (PM Offset: 0x004) CPU Clock Select -------- */\r
+#define PM_CPUSEL_CPUSEL_Pos        0\r
+#define PM_CPUSEL_CPUSEL_Msk        (0x7u << PM_CPUSEL_CPUSEL_Pos) /**< \brief (PM_CPUSEL) CPU Clock Select */\r
+#define PM_CPUSEL_CPUSEL(value)     ((PM_CPUSEL_CPUSEL_Msk & ((value) << PM_CPUSEL_CPUSEL_Pos)))\r
+#define   PM_CPUSEL_CPUSEL_0        (0x0u <<  0) /**< \brief (PM_CPUSEL) fCPU:fmain. CPUDIV: */\r
+#define   PM_CPUSEL_CPUSEL_1        (0x1u <<  0) /**< \brief (PM_CPUSEL) fCPU:fmain / 2^(CPUSEL+1) */\r
+#define PM_CPUSEL_CPUDIV            (0x1u <<  7) /**< \brief (PM_CPUSEL) CPU Division */\r
+/* -------- PM_PBASEL : (PM Offset: 0x00C) PBA Clock Select -------- */\r
+#define PM_PBASEL_PBSEL_Pos         0\r
+#define PM_PBASEL_PBSEL_Msk         (0x7u << PM_PBASEL_PBSEL_Pos) /**< \brief (PM_PBASEL) PBA Clock Select */\r
+#define PM_PBASEL_PBSEL(value)      ((PM_PBASEL_PBSEL_Msk & ((value) << PM_PBASEL_PBSEL_Pos)))\r
+#define PM_PBASEL_PBDIV             (0x1u <<  7) /**< \brief (PM_PBASEL) PBA Division Select */\r
+/* -------- PM_PBBSEL : (PM Offset: 0x010) PBB Clock Select -------- */\r
+#define PM_PBBSEL_PBSEL_Pos         0\r
+#define PM_PBBSEL_PBSEL_Msk         (0x7u << PM_PBBSEL_PBSEL_Pos) /**< \brief (PM_PBBSEL) PBB Clock Select */\r
+#define PM_PBBSEL_PBSEL(value)      ((PM_PBBSEL_PBSEL_Msk & ((value) << PM_PBBSEL_PBSEL_Pos)))\r
+#define PM_PBBSEL_PBDIV             (0x1u <<  7) /**< \brief (PM_PBBSEL) PBB Division Select */\r
+/* -------- PM_PBCSEL : (PM Offset: 0x014) PBC Clock Select -------- */\r
+#define PM_PBCSEL_PBSEL_Pos         0\r
+#define PM_PBCSEL_PBSEL_Msk         (0x7u << PM_PBCSEL_PBSEL_Pos) /**< \brief (PM_PBCSEL) PBC Clock Select */\r
+#define PM_PBCSEL_PBSEL(value)      ((PM_PBCSEL_PBSEL_Msk & ((value) << PM_PBCSEL_PBSEL_Pos)))\r
+#define PM_PBCSEL_PBDIV             (0x1u <<  7) /**< \brief (PM_PBCSEL) PBC Division Select */\r
+/* -------- PM_PBDSEL : (PM Offset: 0x018) PBD Clock Select -------- */\r
+#define PM_PBDSEL_PBSEL_Pos         0\r
+#define PM_PBDSEL_PBSEL_Msk         (0x7u << PM_PBDSEL_PBSEL_Pos) /**< \brief (PM_PBDSEL) PBD Clock Select */\r
+#define PM_PBDSEL_PBSEL(value)      ((PM_PBDSEL_PBSEL_Msk & ((value) << PM_PBDSEL_PBSEL_Pos)))\r
+#define PM_PBDSEL_PBDIV             (0x1u <<  7) /**< \brief (PM_PBDSEL) PBD Division Select */\r
+/* -------- PM_CPUMASK : (PM Offset: 0x020) CPU Mask -------- */\r
+#define PM_CPUMASK_OCD              (0x1u <<  0) /**< \brief (PM_CPUMASK) OCD CPU Clock Mask */\r
+/* -------- PM_HSBMASK : (PM Offset: 0x024) HSB Mask -------- */\r
+#define PM_HSBMASK_PDCA             (0x1u <<  0) /**< \brief (PM_HSBMASK) PDCA HSB Clock Mask */\r
+#define PM_HSBMASK_HFLASHC          (0x1u <<  1) /**< \brief (PM_HSBMASK) HFLASHC HSB Clock Mask */\r
+#define PM_HSBMASK_HRAMC1           (0x1u <<  2) /**< \brief (PM_HSBMASK) HRAMC1 HSB Clock Mask */\r
+#define PM_HSBMASK_USBC             (0x1u <<  3) /**< \brief (PM_HSBMASK) USBC HSB Clock Mask */\r
+#define PM_HSBMASK_CRCCU            (0x1u <<  4) /**< \brief (PM_HSBMASK) CRCCU HSB Clock Mask */\r
+#define PM_HSBMASK_HTOP0            (0x1u <<  5) /**< \brief (PM_HSBMASK) HTOP0 HSB Clock Mask */\r
+#define PM_HSBMASK_HTOP1            (0x1u <<  6) /**< \brief (PM_HSBMASK) HTOP1 HSB Clock Mask */\r
+#define PM_HSBMASK_HTOP2            (0x1u <<  7) /**< \brief (PM_HSBMASK) HTOP2 HSB Clock Mask */\r
+#define PM_HSBMASK_HTOP3            (0x1u <<  8) /**< \brief (PM_HSBMASK) HTOP3 HSB Clock Mask */\r
+#define PM_HSBMASK_AESA             (0x1u <<  9) /**< \brief (PM_HSBMASK) AESA HSB Clock Mask */\r
+/* -------- PM_PBAMASK : (PM Offset: 0x028) PBA Mask -------- */\r
+#define PM_PBAMASK_IISC             (0x1u <<  0) /**< \brief (PM_PBAMASK) IISC PB Clock Mask */\r
+#define PM_PBAMASK_SPI              (0x1u <<  1) /**< \brief (PM_PBAMASK) SPI PB Clock Mask */\r
+#define PM_PBAMASK_TC0              (0x1u <<  2) /**< \brief (PM_PBAMASK) TC0 PB Clock Mask */\r
+#define PM_PBAMASK_TC1              (0x1u <<  3) /**< \brief (PM_PBAMASK) TC1 PB Clock Mask */\r
+#define PM_PBAMASK_TWIM0            (0x1u <<  4) /**< \brief (PM_PBAMASK) TWIM0 PB Clock Mask */\r
+#define PM_PBAMASK_TWIS0            (0x1u <<  5) /**< \brief (PM_PBAMASK) TWIS0 PB Clock Mask */\r
+#define PM_PBAMASK_TWIM1            (0x1u <<  6) /**< \brief (PM_PBAMASK) TWIM1 PB Clock Mask */\r
+#define PM_PBAMASK_TWIS1            (0x1u <<  7) /**< \brief (PM_PBAMASK) TWIS1 PB Clock Mask */\r
+#define PM_PBAMASK_USART0           (0x1u <<  8) /**< \brief (PM_PBAMASK) USART0 PB Clock Mask */\r
+#define PM_PBAMASK_USART1           (0x1u <<  9) /**< \brief (PM_PBAMASK) USART1 PB Clock Mask */\r
+#define PM_PBAMASK_USART2           (0x1u << 10) /**< \brief (PM_PBAMASK) USART2 PB Clock Mask */\r
+#define PM_PBAMASK_USART3           (0x1u << 11) /**< \brief (PM_PBAMASK) USART3 PB Clock Mask */\r
+#define PM_PBAMASK_ADCIFE           (0x1u << 12) /**< \brief (PM_PBAMASK) ADCIFE PB Clock Mask */\r
+#define PM_PBAMASK_DACC             (0x1u << 13) /**< \brief (PM_PBAMASK) DACC PB Clock Mask */\r
+#define PM_PBAMASK_ACIFC            (0x1u << 14) /**< \brief (PM_PBAMASK) ACIFC PB Clock Mask */\r
+#define PM_PBAMASK_GLOC             (0x1u << 15) /**< \brief (PM_PBAMASK) GLOC PB Clock Mask */\r
+#define PM_PBAMASK_ABDACB           (0x1u << 16) /**< \brief (PM_PBAMASK) ABDACB PB Clock Mask */\r
+#define PM_PBAMASK_TRNG             (0x1u << 17) /**< \brief (PM_PBAMASK) TRNG PB Clock Mask */\r
+#define PM_PBAMASK_PARC             (0x1u << 18) /**< \brief (PM_PBAMASK) PARC PB Clock Mask */\r
+#define PM_PBAMASK_CATB             (0x1u << 19) /**< \brief (PM_PBAMASK) CATB PB Clock Mask */\r
+#define PM_PBAMASK_TWIM2            (0x1u << 21) /**< \brief (PM_PBAMASK) TWIM2 PB Clock Mask */\r
+#define PM_PBAMASK_TWIM3            (0x1u << 22) /**< \brief (PM_PBAMASK) TWIM3 PB Clock Mask */\r
+#define PM_PBAMASK_LCDCA            (0x1u << 23) /**< \brief (PM_PBAMASK) LCDCA PB Clock Mask */\r
+/* -------- PM_PBBMASK : (PM Offset: 0x02C) PBB Mask -------- */\r
+#define PM_PBBMASK_HFLASHC          (0x1u <<  0) /**< \brief (PM_PBBMASK) HFLASHC PB Clock Mask */\r
+#define PM_PBBMASK_HCACHE           (0x1u <<  1) /**< \brief (PM_PBBMASK) HCACHE PB Clock Mask */\r
+#define PM_PBBMASK_HMATRIX          (0x1u <<  2) /**< \brief (PM_PBBMASK) HMATRIX PB Clock Mask */\r
+#define PM_PBBMASK_PDCA             (0x1u <<  3) /**< \brief (PM_PBBMASK) PDCA PB Clock Mask */\r
+#define PM_PBBMASK_CRCCU            (0x1u <<  4) /**< \brief (PM_PBBMASK) CRCCU PB Clock Mask */\r
+#define PM_PBBMASK_USBC             (0x1u <<  5) /**< \brief (PM_PBBMASK) USBC PB Clock Mask */\r
+#define PM_PBBMASK_PEVC             (0x1u <<  6) /**< \brief (PM_PBBMASK) PEVC PB Clock Mask */\r
+/* -------- PM_PBCMASK : (PM Offset: 0x030) PBC Mask -------- */\r
+#define PM_PBCMASK_PM               (0x1u <<  0) /**< \brief (PM_PBCMASK) PM PB Clock Mask */\r
+#define PM_PBCMASK_CHIPID           (0x1u <<  1) /**< \brief (PM_PBCMASK) CHIPID PB Clock Mask */\r
+#define PM_PBCMASK_SCIF             (0x1u <<  2) /**< \brief (PM_PBCMASK) SCIF PB Clock Mask */\r
+#define PM_PBCMASK_FREQM            (0x1u <<  3) /**< \brief (PM_PBCMASK) FREQM PB Clock Mask */\r
+#define PM_PBCMASK_GPIO             (0x1u <<  4) /**< \brief (PM_PBCMASK) GPIO PB Clock Mask */\r
+/* -------- PM_PBDMASK : (PM Offset: 0x034) PBD Mask -------- */\r
+#define PM_PBDMASK_BPM              (0x1u <<  0) /**< \brief (PM_PBDMASK) BPM PB Clock Mask */\r
+#define PM_PBDMASK_BSCIF            (0x1u <<  1) /**< \brief (PM_PBDMASK) BSCIF PB Clock Mask */\r
+#define PM_PBDMASK_AST              (0x1u <<  2) /**< \brief (PM_PBDMASK) AST PB Clock Mask */\r
+#define PM_PBDMASK_WDT              (0x1u <<  3) /**< \brief (PM_PBDMASK) WDT PB Clock Mask */\r
+#define PM_PBDMASK_EIC              (0x1u <<  4) /**< \brief (PM_PBDMASK) EIC PB Clock Mask */\r
+#define PM_PBDMASK_PICOUART         (0x1u <<  5) /**< \brief (PM_PBDMASK) PICOUART PB Clock Mask */\r
+/* -------- PM_CFDCTRL : (PM Offset: 0x054) Clock Failure Detector Control -------- */\r
+#define PM_CFDCTRL_CFDEN            (0x1u <<  0) /**< \brief (PM_CFDCTRL) Clock Failure Detection Enable */\r
+#define PM_CFDCTRL_SFV              (0x1u << 31) /**< \brief (PM_CFDCTRL) Store Final Value */\r
+/* -------- PM_UNLOCK : (PM Offset: 0x058) Unlock Register -------- */\r
+#define PM_UNLOCK_ADDR_Pos          0\r
+#define PM_UNLOCK_ADDR_Msk          (0x3FFu << PM_UNLOCK_ADDR_Pos) /**< \brief (PM_UNLOCK) Unlock Address */\r
+#define PM_UNLOCK_ADDR(value)       ((PM_UNLOCK_ADDR_Msk & ((value) << PM_UNLOCK_ADDR_Pos)))\r
+#define PM_UNLOCK_KEY_Pos           24\r
+#define PM_UNLOCK_KEY_Msk           (0xFFu << PM_UNLOCK_KEY_Pos) /**< \brief (PM_UNLOCK) Unlock Key */\r
+#define PM_UNLOCK_KEY(value)        ((PM_UNLOCK_KEY_Msk & ((value) << PM_UNLOCK_KEY_Pos)))\r
+/* -------- PM_IER : (PM Offset: 0x0C0) Interrupt Enable Register -------- */\r
+#define PM_IER_CFD                  (0x1u <<  0) /**< \brief (PM_IER) Clock Failure Detected Interrupt Enable */\r
+#define PM_IER_CKRDY                (0x1u <<  5) /**< \brief (PM_IER) Clock Ready Interrupt Enable */\r
+#define PM_IER_WAKE                 (0x1u <<  8) /**< \brief (PM_IER) Wake up Interrupt Enable */\r
+#define   PM_IER_WAKE_0             (0x0u <<  8) /**< \brief (PM_IER) No effect */\r
+#define   PM_IER_WAKE_1             (0x1u <<  8) /**< \brief (PM_IER) Disable Interrupt. */\r
+#define PM_IER_AE                   (0x1u << 31) /**< \brief (PM_IER) Access Error Interrupt Enable */\r
+/* -------- PM_IDR : (PM Offset: 0x0C4) Interrupt Disable Register -------- */\r
+#define PM_IDR_CFD                  (0x1u <<  0) /**< \brief (PM_IDR) Clock Failure Detected Interrupt Disable */\r
+#define PM_IDR_CKRDY                (0x1u <<  5) /**< \brief (PM_IDR) Clock Ready Interrupt Disable */\r
+#define PM_IDR_WAKE                 (0x1u <<  8) /**< \brief (PM_IDR) Wake up Interrupt Disable */\r
+#define   PM_IDR_WAKE_0             (0x0u <<  8) /**< \brief (PM_IDR) No effect */\r
+#define   PM_IDR_WAKE_1             (0x1u <<  8) /**< \brief (PM_IDR) Disable Interrupt. */\r
+#define PM_IDR_AE                   (0x1u << 31) /**< \brief (PM_IDR) Access Error Interrupt Disable */\r
+/* -------- PM_IMR : (PM Offset: 0x0C8) Interrupt Mask Register -------- */\r
+#define PM_IMR_CFD                  (0x1u <<  0) /**< \brief (PM_IMR) Clock Failure Detected Interrupt Mask */\r
+#define PM_IMR_CKRDY                (0x1u <<  5) /**< \brief (PM_IMR) Clock Ready Interrupt Mask */\r
+#define PM_IMR_WAKE                 (0x1u <<  8) /**< \brief (PM_IMR) Wake up Interrupt Mask */\r
+#define   PM_IMR_WAKE_0             (0x0u <<  8) /**< \brief (PM_IMR) No effect */\r
+#define   PM_IMR_WAKE_1             (0x1u <<  8) /**< \brief (PM_IMR) Disable Interrupt. */\r
+#define PM_IMR_AE                   (0x1u << 31) /**< \brief (PM_IMR) Access Error Interrupt Mask */\r
+/* -------- PM_ISR : (PM Offset: 0x0CC) Interrupt Status Register -------- */\r
+#define PM_ISR_CFD                  (0x1u <<  0) /**< \brief (PM_ISR) Clock Failure Detected Interrupt Status */\r
+#define PM_ISR_CKRDY                (0x1u <<  5) /**< \brief (PM_ISR) Clock Ready Interrupt Status */\r
+#define PM_ISR_WAKE                 (0x1u <<  8) /**< \brief (PM_ISR) Wake up Interrupt Status */\r
+#define   PM_ISR_WAKE_0             (0x0u <<  8) /**< \brief (PM_ISR) No effect */\r
+#define   PM_ISR_WAKE_1             (0x1u <<  8) /**< \brief (PM_ISR) Disable Interrupt. */\r
+#define PM_ISR_AE                   (0x1u << 31) /**< \brief (PM_ISR) Access Error Interrupt Status */\r
+/* -------- PM_ICR : (PM Offset: 0x0D0) Interrupt Clear Register -------- */\r
+#define PM_ICR_CFD                  (0x1u <<  0) /**< \brief (PM_ICR) Clock Failure Detected Interrupt Status Clear */\r
+#define PM_ICR_CKRDY                (0x1u <<  5) /**< \brief (PM_ICR) Clock Ready Interrupt Status Clear */\r
+#define PM_ICR_WAKE                 (0x1u <<  8) /**< \brief (PM_ICR) Wake up Interrupt Status Clear */\r
+#define PM_ICR_AE                   (0x1u << 31) /**< \brief (PM_ICR) Access Error Interrupt Status Clear */\r
+/* -------- PM_SR : (PM Offset: 0x0D4) Status Register -------- */\r
+#define PM_SR_CFD                   (0x1u <<  0) /**< \brief (PM_SR) Clock Failure Detected */\r
+#define PM_SR_OCP                   (0x1u <<  1) /**< \brief (PM_SR) Over Clock Detected */\r
+#define PM_SR_CKRDY                 (0x1u <<  5) /**< \brief (PM_SR) Clock Ready */\r
+#define PM_SR_WAKE                  (0x1u <<  8) /**< \brief (PM_SR) Wake up */\r
+#define   PM_SR_WAKE_0              (0x0u <<  8) /**< \brief (PM_SR) No effect */\r
+#define   PM_SR_WAKE_1              (0x1u <<  8) /**< \brief (PM_SR) Disable Interrupt. */\r
+#define PM_SR_PERRDY                (0x1u << 28) /**< \brief (PM_SR) Peripheral Ready */\r
+#define PM_SR_AE                    (0x1u << 31) /**< \brief (PM_SR) Access Error */\r
+/* -------- PM_PPCR : (PM Offset: 0x160) Peripheral Power Control Register -------- */\r
+#define PM_PPCR_RSTPUN              (0x1u <<  0) /**< \brief (PM_PPCR) Reset Pullup */\r
+#define PM_PPCR_CATBRCMASK          (0x1u <<  1) /**< \brief (PM_PPCR) CAT Request Clock Mask */\r
+#define PM_PPCR_ACIFCRCMASK         (0x1u <<  2) /**< \brief (PM_PPCR) ACIFC Request Clock Mask */\r
+#define PM_PPCR_ASTRCMASK           (0x1u <<  3) /**< \brief (PM_PPCR) AST Request Clock Mask */\r
+#define PM_PPCR_TWIS0RCMASK         (0x1u <<  4) /**< \brief (PM_PPCR) TWIS0 Request Clock Mask */\r
+#define PM_PPCR_TWIS1RCMASK         (0x1u <<  5) /**< \brief (PM_PPCR) TWIS1 Request Clock Mask */\r
+#define PM_PPCR_PEVCRCMASK          (0x1u <<  6) /**< \brief (PM_PPCR) PEVC Request Clock Mask */\r
+#define PM_PPCR_ADCIFERCMASK        (0x1u <<  7) /**< \brief (PM_PPCR) ADCIFE Request Clock Mask */\r
+#define PM_PPCR_VREGRCMASK          (0x1u <<  8) /**< \brief (PM_PPCR) VREG Request Clock Mask */\r
+#define PM_PPCR_FWBGREF             (0x1u <<  9) /**< \brief (PM_PPCR) Flash Wait BGREF */\r
+#define PM_PPCR_FWBOD18             (0x1u << 10) /**< \brief (PM_PPCR) Flash Wait BOD18 */\r
+/* -------- PM_RCAUSE : (PM Offset: 0x180) Reset Cause Register -------- */\r
+#define PM_RCAUSE_POR               (0x1u <<  0) /**< \brief (PM_RCAUSE) Power-on Reset */\r
+#define PM_RCAUSE_BOD               (0x1u <<  1) /**< \brief (PM_RCAUSE) Brown-out Reset */\r
+#define PM_RCAUSE_EXT               (0x1u <<  2) /**< \brief (PM_RCAUSE) External Reset Pin */\r
+#define PM_RCAUSE_WDT               (0x1u <<  3) /**< \brief (PM_RCAUSE) Watchdog Reset */\r
+#define PM_RCAUSE_OCDRST            (0x1u <<  8) /**< \brief (PM_RCAUSE) OCD Reset */\r
+#define PM_RCAUSE_POR33             (0x1u << 10) /**< \brief (PM_RCAUSE) Power-on Reset */\r
+#define PM_RCAUSE_BOD33             (0x1u << 13) /**< \brief (PM_RCAUSE) Brown-out 3.3V Reset */\r
+/* -------- PM_WCAUSE : (PM Offset: 0x184) Wake Cause Register -------- */\r
+#define PM_WCAUSE_TWI_SLAVE_0       (0x1u <<  0) /**< \brief (PM_WCAUSE) Two-wire Slave Interface 0 */\r
+#define PM_WCAUSE_TWI_SLAVE_1       (0x1u <<  1) /**< \brief (PM_WCAUSE) Two-wire Slave Interface 1 */\r
+#define PM_WCAUSE_USBC              (0x1u <<  2) /**< \brief (PM_WCAUSE) USB Device and Embedded Host Interface */\r
+#define PM_WCAUSE_PSOK              (0x1u <<  3) /**< \brief (PM_WCAUSE) Power Scaling OK */\r
+#define PM_WCAUSE_BOD18_IRQ         (0x1u <<  4) /**< \brief (PM_WCAUSE) BOD18 Interrupt */\r
+#define PM_WCAUSE_BOD33_IRQ         (0x1u <<  5) /**< \brief (PM_WCAUSE) BOD33 Interrupt */\r
+#define PM_WCAUSE_PICOUART          (0x1u <<  6) /**< \brief (PM_WCAUSE) Picopower UART */\r
+#define PM_WCAUSE_LCDCA             (0x1u <<  7) /**< \brief (PM_WCAUSE) LCD Controller */\r
+#define PM_WCAUSE_EIC               (0x1u << 16) /**< \brief (PM_WCAUSE) External Interrupt Controller */\r
+#define PM_WCAUSE_AST               (0x1u << 17) /**< \brief (PM_WCAUSE) Asynchronous Timer */\r
+/* -------- PM_AWEN : (PM Offset: 0x188) Asynchronous Wake Enable -------- */\r
+#define PM_AWEN_AWEN_Pos            0\r
+#define PM_AWEN_AWEN_Msk            (0xFFFFFFFFu << PM_AWEN_AWEN_Pos) /**< \brief (PM_AWEN) Asynchronous Wake Up */\r
+#define PM_AWEN_AWEN(value)         ((PM_AWEN_AWEN_Msk & ((value) << PM_AWEN_AWEN_Pos)))\r
+/* -------- PM_OBS : (PM Offset: 0x190) Obsvervability -------- */\r
+/* -------- PM_FASTSLEEP : (PM Offset: 0x194) Fast Sleep Register -------- */\r
+#define PM_FASTSLEEP_OSC            (0x1u <<  0) /**< \brief (PM_FASTSLEEP) Oscillator */\r
+#define PM_FASTSLEEP_PLL            (0x1u <<  8) /**< \brief (PM_FASTSLEEP) PLL */\r
+#define PM_FASTSLEEP_FASTRCOSC_Pos    16\r
+#define PM_FASTSLEEP_FASTRCOSC_Msk    (0x1Fu << PM_FASTSLEEP_FASTRCOSC_Pos) /**< \brief (PM_FASTSLEEP) RC80 or FLO */\r
+#define PM_FASTSLEEP_FASTRCOSC(value) ((PM_FASTSLEEP_FASTRCOSC_Msk & ((value) << PM_FASTSLEEP_FASTRCOSC_Pos)))\r
+#define PM_FASTSLEEP_DFLL           (0x1u << 24) /**< \brief (PM_FASTSLEEP) DFLL */\r
+/* -------- PM_CONFIG : (PM Offset: 0x3F8) Configuration Register -------- */\r
+#define PM_CONFIG_PBA               (0x1u <<  0) /**< \brief (PM_CONFIG) APBA Implemented */\r
+#define PM_CONFIG_PBB               (0x1u <<  1) /**< \brief (PM_CONFIG) APBB Implemented */\r
+#define PM_CONFIG_PBC               (0x1u <<  2) /**< \brief (PM_CONFIG) APBC Implemented */\r
+#define PM_CONFIG_PBD               (0x1u <<  3) /**< \brief (PM_CONFIG) APBD Implemented */\r
+#define PM_CONFIG_HSBPEVC           (0x1u <<  7) /**< \brief (PM_CONFIG) HSB PEVC Clock Implemented */\r
+/* -------- PM_VERSION : (PM Offset: 0x3FC) Version Register -------- */\r
+#define PM_VERSION_VERSION_Pos      0\r
+#define PM_VERSION_VERSION_Msk      (0xFFFu << PM_VERSION_VERSION_Pos) /**< \brief (PM_VERSION) Version number */\r
+#define PM_VERSION_VERSION(value)   ((PM_VERSION_VERSION_Msk & ((value) << PM_VERSION_VERSION_Pos)))\r
+#define PM_VERSION_VARIANT_Pos      16\r
+#define PM_VERSION_VARIANT_Msk      (0xFu << PM_VERSION_VARIANT_Pos) /**< \brief (PM_VERSION) Variant number */\r
+#define PM_VERSION_VARIANT(value)   ((PM_VERSION_VARIANT_Msk & ((value) << PM_VERSION_VARIANT_Pos)))\r
+\r
+/*@}*/\r
+\r
+/*@}*/\r
+\r
+/* ============================================================================= */\r
+/**  SOFTWARE API DEFINITION FOR SCIF */\r
+/* ============================================================================= */\r
+/** \addtogroup SAM4L_SCIF System Control Interface */\r
+/*@{*/\r
+\r
+#define REV_SCIF       0x130\r
+\r
+#ifndef __ASSEMBLY__\r
+/** \brief ScifGcctrl hardware registers */\r
+typedef struct {\r
+  RwReg   SCIF_GCCTRL; /**< \brief (ScifGcctrl Offset: 0x000) Generic Clock Control */\r
+} ScifGcctrl;\r
+/** \brief ScifPll hardware registers */\r
+typedef struct {\r
+  RwReg   SCIF_PLL;    /**< \brief (ScifPll Offset: 0x000) PLL0 Control Register */\r
+} ScifPll;\r
+/** \brief SCIF hardware registers */\r
+typedef struct {\r
+  WoReg   SCIF_IER;         /**< \brief (SCIF Offset: 0x000) Interrupt Enable Register */\r
+  WoReg   SCIF_IDR;         /**< \brief (SCIF Offset: 0x004) Interrupt Disable Register */\r
+  RoReg   SCIF_IMR;         /**< \brief (SCIF Offset: 0x008) Interrupt Mask Register */\r
+  RoReg   SCIF_ISR;         /**< \brief (SCIF Offset: 0x00C) Interrupt Status Register */\r
+  WoReg   SCIF_ICR;         /**< \brief (SCIF Offset: 0x010) Interrupt Clear Register */\r
+  RoReg   SCIF_PCLKSR;      /**< \brief (SCIF Offset: 0x014) Power and Clocks Status Register */\r
+  WoReg   SCIF_UNLOCK;      /**< \brief (SCIF Offset: 0x018) Unlock Register */\r
+  RwReg   SCIF_CSCR;        /**< \brief (SCIF Offset: 0x01C) Chip Specific Configuration Register */\r
+  RwReg   SCIF_OSCCTRL0;    /**< \brief (SCIF Offset: 0x020) Oscillator Control Register */\r
+  ScifPll SCIF_PLL[1]; /**< \brief (SCIF Offset: 0x024) ScifPll groups */\r
+  RwReg   SCIF_DFLL0CONF;   /**< \brief (SCIF Offset: 0x028) DFLL0 Config Register */\r
+  RwReg   SCIF_DFLL0VAL;    /**< \brief (SCIF Offset: 0x02C) DFLL Value Register */\r
+  RwReg   SCIF_DFLL0MUL;    /**< \brief (SCIF Offset: 0x030) DFLL0 Multiplier Register */\r
+  RwReg   SCIF_DFLL0STEP;   /**< \brief (SCIF Offset: 0x034) DFLL0 Step Register */\r
+  RwReg   SCIF_DFLL0SSG;    /**< \brief (SCIF Offset: 0x038) DFLL0 Spread Spectrum Generator Control Register */\r
+  RoReg   SCIF_DFLL0RATIO;  /**< \brief (SCIF Offset: 0x03C) DFLL0 Ratio Registe */\r
+  WoReg   SCIF_DFLL0SYNC;   /**< \brief (SCIF Offset: 0x040) DFLL0 Synchronization Register */\r
+  RwReg   SCIF_RCCR;        /**< \brief (SCIF Offset: 0x044) System RC Oscillator Calibration Register */\r
+  RwReg   SCIF_RCFASTCFG;   /**< \brief (SCIF Offset: 0x048) 4/8/12 MHz RC Oscillator Configuration\r
+Register */\r
+  RwReg   SCIF_RCFASTSR;    /**< \brief (SCIF Offset: 0x04C) 4/8/12 MHz RC Oscillator Status Register */\r
+  RwReg   SCIF_RC80MCR;     /**< \brief (SCIF Offset: 0x050) 80 MHz RC Oscillator Register */\r
+  RoReg   Reserved1[4];\r
+  RwReg   SCIF_HRPCR;       /**< \brief (SCIF Offset: 0x064) High Resolution Prescaler Control Register */\r
+  RwReg   SCIF_FPCR;        /**< \brief (SCIF Offset: 0x068) Fractional Prescaler Control Register */\r
+  RwReg   SCIF_FPMUL;       /**< \brief (SCIF Offset: 0x06C) Fractional Prescaler Multiplier Register */\r
+  RwReg   SCIF_FPDIV;       /**< \brief (SCIF Offset: 0x070) Fractional Prescaler DIVIDER Register */\r
+  ScifGcctrl SCIF_GCCTRL[12]; /**< \brief (SCIF Offset: 0x074) ScifGcctrl groups */\r
+  RoReg   Reserved2[205];\r
+  RoReg   SCIF_RCFASTVERSION; /**< \brief (SCIF Offset: 0x3D8) 4/8/12 MHz RC Oscillator Version Register */\r
+  RoReg   SCIF_GCLKPRESCVERSION; /**< \brief (SCIF Offset: 0x3DC) Generic Clock Prescaler Version Register */\r
+  RoReg   SCIF_PLLIFAVERSION; /**< \brief (SCIF Offset: 0x3E0) PLL Version Register */\r
+  RoReg   SCIF_OSCIFAVERSION; /**< \brief (SCIF Offset: 0x3E4) Oscillator 0 Version Register */\r
+  RoReg   SCIF_DFLLIFBVERSION; /**< \brief (SCIF Offset: 0x3E8) DFLL Version Register */\r
+  RoReg   SCIF_RCOSCIFAVERSION; /**< \brief (SCIF Offset: 0x3EC) System RC Oscillator Version Register */\r
+  RoReg   SCIF_FLOVERSION;  /**< \brief (SCIF Offset: 0x3F0) Frequency Locked Oscillator Version Register */\r
+  RoReg   SCIF_RC80MVERSION; /**< \brief (SCIF Offset: 0x3F4) 80MHz RC Oscillator Version Register */\r
+  RoReg   SCIF_GCLKIFVERSION; /**< \brief (SCIF Offset: 0x3F8) Generic Clock Version Register */\r
+  RoReg   SCIF_VERSION;     /**< \brief (SCIF Offset: 0x3FC) SCIF Version Register */\r
+} Scif;\r
+#endif /* __ASSEMBLY__ */\r
+/* -------- SCIF_IER : (SCIF Offset: 0x000) Interrupt Enable Register -------- */\r
+#define SCIF_IER_OSC0RDY            (0x1u <<  0) /**< \brief (SCIF_IER)  */\r
+#define SCIF_IER_DFLL0LOCKC         (0x1u <<  1) /**< \brief (SCIF_IER)  */\r
+#define SCIF_IER_DFLL0LOCKF         (0x1u <<  2) /**< \brief (SCIF_IER)  */\r
+#define SCIF_IER_DFLL0RDY           (0x1u <<  3) /**< \brief (SCIF_IER)  */\r
+#define SCIF_IER_DFLL0RCS           (0x1u <<  4) /**< \brief (SCIF_IER)  */\r
+#define SCIF_IER_DFLL0OOB           (0x1u <<  5) /**< \brief (SCIF_IER)  */\r
+#define SCIF_IER_PLL0LOCK           (0x1u <<  6) /**< \brief (SCIF_IER)  */\r
+#define SCIF_IER_PLL0LOCKLOST       (0x1u <<  7) /**< \brief (SCIF_IER)  */\r
+#define SCIF_IER_RCFASTLOCK         (0x1u << 13) /**< \brief (SCIF_IER)  */\r
+#define SCIF_IER_RCFASTLOCKLOST     (0x1u << 14) /**< \brief (SCIF_IER)  */\r
+#define SCIF_IER_AE                 (0x1u << 31) /**< \brief (SCIF_IER)  */\r
+/* -------- SCIF_IDR : (SCIF Offset: 0x004) Interrupt Disable Register -------- */\r
+#define SCIF_IDR_OSC0RDY            (0x1u <<  0) /**< \brief (SCIF_IDR)  */\r
+#define SCIF_IDR_DFLL0LOCKC         (0x1u <<  1) /**< \brief (SCIF_IDR)  */\r
+#define SCIF_IDR_DFLL0LOCKF         (0x1u <<  2) /**< \brief (SCIF_IDR)  */\r
+#define SCIF_IDR_DFLL0RDY           (0x1u <<  3) /**< \brief (SCIF_IDR)  */\r
+#define SCIF_IDR_DFLL0RCS           (0x1u <<  4) /**< \brief (SCIF_IDR)  */\r
+#define SCIF_IDR_DFLL0OOB           (0x1u <<  5) /**< \brief (SCIF_IDR)  */\r
+#define SCIF_IDR_PLL0LOCK           (0x1u <<  6) /**< \brief (SCIF_IDR)  */\r
+#define SCIF_IDR_PLL0LOCKLOST       (0x1u <<  7) /**< \brief (SCIF_IDR)  */\r
+#define SCIF_IDR_RCFASTLOCK         (0x1u << 13) /**< \brief (SCIF_IDR)  */\r
+#define SCIF_IDR_RCFASTLOCKLOST     (0x1u << 14) /**< \brief (SCIF_IDR)  */\r
+#define SCIF_IDR_AE                 (0x1u << 31) /**< \brief (SCIF_IDR)  */\r
+/* -------- SCIF_IMR : (SCIF Offset: 0x008) Interrupt Mask Register -------- */\r
+#define SCIF_IMR_OSC0RDY            (0x1u <<  0) /**< \brief (SCIF_IMR)  */\r
+#define SCIF_IMR_DFLL0LOCKC         (0x1u <<  1) /**< \brief (SCIF_IMR)  */\r
+#define SCIF_IMR_DFLL0LOCKF         (0x1u <<  2) /**< \brief (SCIF_IMR)  */\r
+#define SCIF_IMR_DFLL0RDY           (0x1u <<  3) /**< \brief (SCIF_IMR)  */\r
+#define SCIF_IMR_DFLL0RCS           (0x1u <<  4) /**< \brief (SCIF_IMR)  */\r
+#define SCIF_IMR_DFLL0OOB           (0x1u <<  5) /**< \brief (SCIF_IMR)  */\r
+#define SCIF_IMR_PLL0LOCK           (0x1u <<  6) /**< \brief (SCIF_IMR)  */\r
+#define SCIF_IMR_PLL0LOCKLOST       (0x1u <<  7) /**< \brief (SCIF_IMR)  */\r
+#define SCIF_IMR_RCFASTLOCK         (0x1u << 13) /**< \brief (SCIF_IMR)  */\r
+#define SCIF_IMR_RCFASTLOCKLOST     (0x1u << 14) /**< \brief (SCIF_IMR)  */\r
+#define SCIF_IMR_AE                 (0x1u << 31) /**< \brief (SCIF_IMR)  */\r
+/* -------- SCIF_ISR : (SCIF Offset: 0x00C) Interrupt Status Register -------- */\r
+#define SCIF_ISR_OSC0RDY            (0x1u <<  0) /**< \brief (SCIF_ISR)  */\r
+#define SCIF_ISR_DFLL0LOCKC         (0x1u <<  1) /**< \brief (SCIF_ISR)  */\r
+#define SCIF_ISR_DFLL0LOCKF         (0x1u <<  2) /**< \brief (SCIF_ISR)  */\r
+#define SCIF_ISR_DFLL0RDY           (0x1u <<  3) /**< \brief (SCIF_ISR)  */\r
+#define SCIF_ISR_DFLL0RCS           (0x1u <<  4) /**< \brief (SCIF_ISR)  */\r
+#define SCIF_ISR_DFLL0OOB           (0x1u <<  5) /**< \brief (SCIF_ISR)  */\r
+#define SCIF_ISR_PLL0LOCK           (0x1u <<  6) /**< \brief (SCIF_ISR)  */\r
+#define SCIF_ISR_PLL0LOCKLOST       (0x1u <<  7) /**< \brief (SCIF_ISR)  */\r
+#define SCIF_ISR_RCFASTLOCK         (0x1u << 13) /**< \brief (SCIF_ISR)  */\r
+#define SCIF_ISR_RCFASTLOCKLOST     (0x1u << 14) /**< \brief (SCIF_ISR)  */\r
+#define SCIF_ISR_AE                 (0x1u << 31) /**< \brief (SCIF_ISR)  */\r
+/* -------- SCIF_ICR : (SCIF Offset: 0x010) Interrupt Clear Register -------- */\r
+#define SCIF_ICR_OSC0RDY            (0x1u <<  0) /**< \brief (SCIF_ICR)  */\r
+#define SCIF_ICR_DFLL0LOCKC         (0x1u <<  1) /**< \brief (SCIF_ICR)  */\r
+#define SCIF_ICR_DFLL0LOCKF         (0x1u <<  2) /**< \brief (SCIF_ICR)  */\r
+#define SCIF_ICR_DFLL0RDY           (0x1u <<  3) /**< \brief (SCIF_ICR)  */\r
+#define SCIF_ICR_DFLL0RCS           (0x1u <<  4) /**< \brief (SCIF_ICR)  */\r
+#define SCIF_ICR_DFLL0OOB           (0x1u <<  5) /**< \brief (SCIF_ICR)  */\r
+#define SCIF_ICR_PLL0LOCK           (0x1u <<  6) /**< \brief (SCIF_ICR)  */\r
+#define SCIF_ICR_PLL0LOCKLOST       (0x1u <<  7) /**< \brief (SCIF_ICR)  */\r
+#define SCIF_ICR_RCFASTLOCK         (0x1u << 13) /**< \brief (SCIF_ICR)  */\r
+#define SCIF_ICR_RCFASTLOCKLOST     (0x1u << 14) /**< \brief (SCIF_ICR)  */\r
+#define SCIF_ICR_AE                 (0x1u << 31) /**< \brief (SCIF_ICR)  */\r
+/* -------- SCIF_PCLKSR : (SCIF Offset: 0x014) Power and Clocks Status Register -------- */\r
+#define SCIF_PCLKSR_OSC0RDY         (0x1u <<  0) /**< \brief (SCIF_PCLKSR) OSC0 Ready */\r
+#define SCIF_PCLKSR_DFLL0LOCKC      (0x1u <<  1) /**< \brief (SCIF_PCLKSR) DFLL0 Locked on Coarse Value */\r
+#define SCIF_PCLKSR_DFLL0LOCKF      (0x1u <<  2) /**< \brief (SCIF_PCLKSR) DFLL0 Locked on Fine Value */\r
+#define SCIF_PCLKSR_DFLL0RDY        (0x1u <<  3) /**< \brief (SCIF_PCLKSR) DFLL0 Synchronization Ready */\r
+#define SCIF_PCLKSR_DFLL0RCS        (0x1u <<  4) /**< \brief (SCIF_PCLKSR) DFLL0 Reference Clock Stopped */\r
+#define SCIF_PCLKSR_DFLL0OOB        (0x1u <<  5) /**< \brief (SCIF_PCLKSR) DFLL0 Track Out Of Bounds */\r
+#define SCIF_PCLKSR_PLL0LOCK        (0x1u <<  6) /**< \brief (SCIF_PCLKSR) PLL0 Locked on Accurate value */\r
+#define SCIF_PCLKSR_PLL0LOCKLOST    (0x1u <<  7) /**< \brief (SCIF_PCLKSR) PLL0 lock lost value */\r
+#define SCIF_PCLKSR_RCFASTLOCK      (0x1u << 13) /**< \brief (SCIF_PCLKSR) RCFAST Locked on Accurate value */\r
+#define SCIF_PCLKSR_RCFASTLOCKLOST  (0x1u << 14) /**< \brief (SCIF_PCLKSR) RCFAST lock lost value */\r
+/* -------- SCIF_UNLOCK : (SCIF Offset: 0x018) Unlock Register -------- */\r
+#define SCIF_UNLOCK_ADDR_Pos        0\r
+#define SCIF_UNLOCK_ADDR_Msk        (0x3FFu << SCIF_UNLOCK_ADDR_Pos) /**< \brief (SCIF_UNLOCK) Unlock Address */\r
+#define SCIF_UNLOCK_ADDR(value)     ((SCIF_UNLOCK_ADDR_Msk & ((value) << SCIF_UNLOCK_ADDR_Pos)))\r
+#define SCIF_UNLOCK_KEY_Pos         24\r
+#define SCIF_UNLOCK_KEY_Msk         (0xFFu << SCIF_UNLOCK_KEY_Pos) /**< \brief (SCIF_UNLOCK) Unlock Key */\r
+#define SCIF_UNLOCK_KEY(value)      ((SCIF_UNLOCK_KEY_Msk & ((value) << SCIF_UNLOCK_KEY_Pos)))\r
+/* -------- SCIF_OSCCTRL0 : (SCIF Offset: 0x020) Oscillator Control Register -------- */\r
+#define SCIF_OSCCTRL0_MODE          (0x1u <<  0) /**< \brief (SCIF_OSCCTRL0) Oscillator Mode */\r
+#define SCIF_OSCCTRL0_GAIN_Pos      1\r
+#define SCIF_OSCCTRL0_GAIN_Msk      (0x3u << SCIF_OSCCTRL0_GAIN_Pos) /**< \brief (SCIF_OSCCTRL0) Gain */\r
+#define SCIF_OSCCTRL0_GAIN(value)   ((SCIF_OSCCTRL0_GAIN_Msk & ((value) << SCIF_OSCCTRL0_GAIN_Pos)))\r
+#define SCIF_OSCCTRL0_AGC           (0x1u <<  3) /**< \brief (SCIF_OSCCTRL0) Automatic Gain Control */\r
+#define SCIF_OSCCTRL0_STARTUP_Pos    8\r
+#define SCIF_OSCCTRL0_STARTUP_Msk    (0xFu << SCIF_OSCCTRL0_STARTUP_Pos) /**< \brief (SCIF_OSCCTRL0) Oscillator Start-up Time */\r
+#define SCIF_OSCCTRL0_STARTUP(value) ((SCIF_OSCCTRL0_STARTUP_Msk & ((value) << SCIF_OSCCTRL0_STARTUP_Pos)))\r
+#define SCIF_OSCCTRL0_OSCEN         (0x1u << 16) /**< \brief (SCIF_OSCCTRL0) Oscillator Enable */\r
+/* -------- SCIF_PLL : (SCIF Offset: 0x024) Pll PLL0 Control Register -------- */\r
+#define SCIF_PLL_PLLEN              (0x1u <<  0) /**< \brief (SCIF_PLL) PLL Enable */\r
+#define SCIF_PLL_PLLOSC_Pos         1\r
+#define SCIF_PLL_PLLOSC_Msk         (0x3u << SCIF_PLL_PLLOSC_Pos) /**< \brief (SCIF_PLL) PLL Oscillator Select */\r
+#define SCIF_PLL_PLLOSC(value)      ((SCIF_PLL_PLLOSC_Msk & ((value) << SCIF_PLL_PLLOSC_Pos)))\r
+#define SCIF_PLL_PLLOPT_Pos         3\r
+#define SCIF_PLL_PLLOPT_Msk         (0x7u << SCIF_PLL_PLLOPT_Pos) /**< \brief (SCIF_PLL) PLL Option */\r
+#define SCIF_PLL_PLLOPT(value)      ((SCIF_PLL_PLLOPT_Msk & ((value) << SCIF_PLL_PLLOPT_Pos)))\r
+#define SCIF_PLL_PLLDIV_Pos         8\r
+#define SCIF_PLL_PLLDIV_Msk         (0xFu << SCIF_PLL_PLLDIV_Pos) /**< \brief (SCIF_PLL) PLL Division Factor */\r
+#define SCIF_PLL_PLLDIV(value)      ((SCIF_PLL_PLLDIV_Msk & ((value) << SCIF_PLL_PLLDIV_Pos)))\r
+#define SCIF_PLL_PLLMUL_Pos         16\r
+#define SCIF_PLL_PLLMUL_Msk         (0xFu << SCIF_PLL_PLLMUL_Pos) /**< \brief (SCIF_PLL) PLL Multiply Factor */\r
+#define SCIF_PLL_PLLMUL(value)      ((SCIF_PLL_PLLMUL_Msk & ((value) << SCIF_PLL_PLLMUL_Pos)))\r
+#define SCIF_PLL_PLLCOUNT_Pos       24\r
+#define SCIF_PLL_PLLCOUNT_Msk       (0x3Fu << SCIF_PLL_PLLCOUNT_Pos) /**< \brief (SCIF_PLL) PLL Count */\r
+#define SCIF_PLL_PLLCOUNT(value)    ((SCIF_PLL_PLLCOUNT_Msk & ((value) << SCIF_PLL_PLLCOUNT_Pos)))\r
+/* -------- SCIF_DFLL0CONF : (SCIF Offset: 0x028) DFLL0 Config Register -------- */\r
+#define SCIF_DFLL0CONF_EN           (0x1u <<  0) /**< \brief (SCIF_DFLL0CONF) Enable */\r
+#define SCIF_DFLL0CONF_MODE         (0x1u <<  1) /**< \brief (SCIF_DFLL0CONF) Mode Selection */\r
+#define SCIF_DFLL0CONF_STABLE       (0x1u <<  2) /**< \brief (SCIF_DFLL0CONF) Stable DFLL Frequency */\r
+#define SCIF_DFLL0CONF_LLAW         (0x1u <<  3) /**< \brief (SCIF_DFLL0CONF) Lose Lock After Wake */\r
+#define SCIF_DFLL0CONF_CCDIS        (0x1u <<  5) /**< \brief (SCIF_DFLL0CONF) Chill Cycle Disable */\r
+#define SCIF_DFLL0CONF_QLDIS        (0x1u <<  6) /**< \brief (SCIF_DFLL0CONF) Quick Lock Disable */\r
+#define SCIF_DFLL0CONF_RANGE_Pos    16\r
+#define SCIF_DFLL0CONF_RANGE_Msk    (0x3u << SCIF_DFLL0CONF_RANGE_Pos) /**< \brief (SCIF_DFLL0CONF) Range Value */\r
+#define SCIF_DFLL0CONF_RANGE(value) ((SCIF_DFLL0CONF_RANGE_Msk & ((value) << SCIF_DFLL0CONF_RANGE_Pos)))\r
+#define SCIF_DFLL0CONF_FCD          (0x1u << 23) /**< \brief (SCIF_DFLL0CONF) Fuse Calibration Done */\r
+#define SCIF_DFLL0CONF_CALIB_Pos    24\r
+#define SCIF_DFLL0CONF_CALIB_Msk    (0xFu << SCIF_DFLL0CONF_CALIB_Pos) /**< \brief (SCIF_DFLL0CONF) Calibration Value */\r
+#define SCIF_DFLL0CONF_CALIB(value) ((SCIF_DFLL0CONF_CALIB_Msk & ((value) << SCIF_DFLL0CONF_CALIB_Pos)))\r
+/* -------- SCIF_DFLL0VAL : (SCIF Offset: 0x02C) DFLL Value Register -------- */\r
+#define SCIF_DFLL0VAL_FINE_Pos      0\r
+#define SCIF_DFLL0VAL_FINE_Msk      (0xFFu << SCIF_DFLL0VAL_FINE_Pos) /**< \brief (SCIF_DFLL0VAL) Fine Value */\r
+#define SCIF_DFLL0VAL_FINE(value)   ((SCIF_DFLL0VAL_FINE_Msk & ((value) << SCIF_DFLL0VAL_FINE_Pos)))\r
+#define SCIF_DFLL0VAL_COARSE_Pos    16\r
+#define SCIF_DFLL0VAL_COARSE_Msk    (0x1Fu << SCIF_DFLL0VAL_COARSE_Pos) /**< \brief (SCIF_DFLL0VAL) Coarse Value */\r
+#define SCIF_DFLL0VAL_COARSE(value) ((SCIF_DFLL0VAL_COARSE_Msk & ((value) << SCIF_DFLL0VAL_COARSE_Pos)))\r
+/* -------- SCIF_DFLL0MUL : (SCIF Offset: 0x030) DFLL0 Multiplier Register -------- */\r
+#define SCIF_DFLL0MUL_MUL_Pos       0\r
+#define SCIF_DFLL0MUL_MUL_Msk       (0xFFFFu << SCIF_DFLL0MUL_MUL_Pos) /**< \brief (SCIF_DFLL0MUL) DFLL Multiply Factor */\r
+#define SCIF_DFLL0MUL_MUL(value)    ((SCIF_DFLL0MUL_MUL_Msk & ((value) << SCIF_DFLL0MUL_MUL_Pos)))\r
+/* -------- SCIF_DFLL0STEP : (SCIF Offset: 0x034) DFLL0 Step Register -------- */\r
+#define SCIF_DFLL0STEP_FSTEP_Pos    0\r
+#define SCIF_DFLL0STEP_FSTEP_Msk    (0xFFu << SCIF_DFLL0STEP_FSTEP_Pos) /**< \brief (SCIF_DFLL0STEP) Fine Maximum Step */\r
+#define SCIF_DFLL0STEP_FSTEP(value) ((SCIF_DFLL0STEP_FSTEP_Msk & ((value) << SCIF_DFLL0STEP_FSTEP_Pos)))\r
+#define SCIF_DFLL0STEP_CSTEP_Pos    16\r
+#define SCIF_DFLL0STEP_CSTEP_Msk    (0x1Fu << SCIF_DFLL0STEP_CSTEP_Pos) /**< \brief (SCIF_DFLL0STEP) Coarse Maximum Step */\r
+#define SCIF_DFLL0STEP_CSTEP(value) ((SCIF_DFLL0STEP_CSTEP_Msk & ((value) << SCIF_DFLL0STEP_CSTEP_Pos)))\r
+/* -------- SCIF_DFLL0SSG : (SCIF Offset: 0x038) DFLL0 Spread Spectrum Generator Control Register -------- */\r
+#define SCIF_DFLL0SSG_EN            (0x1u <<  0) /**< \brief (SCIF_DFLL0SSG) Enable */\r
+#define SCIF_DFLL0SSG_PRBS          (0x1u <<  1) /**< \brief (SCIF_DFLL0SSG) Pseudo Random Bit Sequence */\r
+#define SCIF_DFLL0SSG_AMPLITUDE_Pos    8\r
+#define SCIF_DFLL0SSG_AMPLITUDE_Msk    (0x1Fu << SCIF_DFLL0SSG_AMPLITUDE_Pos) /**< \brief (SCIF_DFLL0SSG) SSG Amplitude */\r
+#define SCIF_DFLL0SSG_AMPLITUDE(value) ((SCIF_DFLL0SSG_AMPLITUDE_Msk & ((value) << SCIF_DFLL0SSG_AMPLITUDE_Pos)))\r
+#define SCIF_DFLL0SSG_STEPSIZE_Pos    16\r
+#define SCIF_DFLL0SSG_STEPSIZE_Msk    (0x1Fu << SCIF_DFLL0SSG_STEPSIZE_Pos) /**< \brief (SCIF_DFLL0SSG) SSG Step Size */\r
+#define SCIF_DFLL0SSG_STEPSIZE(value) ((SCIF_DFLL0SSG_STEPSIZE_Msk & ((value) << SCIF_DFLL0SSG_STEPSIZE_Pos)))\r
+/* -------- SCIF_DFLL0RATIO : (SCIF Offset: 0x03C) DFLL0 Ratio Registe -------- */\r
+#define SCIF_DFLL0RATIO_RATIODIFF_Pos    0\r
+#define SCIF_DFLL0RATIO_RATIODIFF_Msk    (0xFFFFu << SCIF_DFLL0RATIO_RATIODIFF_Pos) /**< \brief (SCIF_DFLL0RATIO) Multiplication Ratio Difference */\r
+#define SCIF_DFLL0RATIO_RATIODIFF(value) ((SCIF_DFLL0RATIO_RATIODIFF_Msk & ((value) << SCIF_DFLL0RATIO_RATIODIFF_Pos)))\r
+/* -------- SCIF_DFLL0SYNC : (SCIF Offset: 0x040) DFLL0 Synchronization Register -------- */\r
+#define SCIF_DFLL0SYNC_SYNC         (0x1u <<  0) /**< \brief (SCIF_DFLL0SYNC) Synchronization */\r
+/* -------- SCIF_RCCR : (SCIF Offset: 0x044) System RC Oscillator Calibration Register -------- */\r
+#define SCIF_RCCR_CALIB_Pos         0\r
+#define SCIF_RCCR_CALIB_Msk         (0x3FFu << SCIF_RCCR_CALIB_Pos) /**< \brief (SCIF_RCCR) Calibration Value */\r
+#define SCIF_RCCR_CALIB(value)      ((SCIF_RCCR_CALIB_Msk & ((value) << SCIF_RCCR_CALIB_Pos)))\r
+#define SCIF_RCCR_FCD               (0x1u << 16) /**< \brief (SCIF_RCCR) Flash Calibration Done */\r
+/* -------- SCIF_RCFASTCFG : (SCIF Offset: 0x048) 4/8/12 MHz RC Oscillator Configuration\r
+Register -------- */\r
+#define SCIF_RCFASTCFG_EN           (0x1u <<  0) /**< \brief (SCIF_RCFASTCFG) Oscillator Enable */\r
+#define SCIF_RCFASTCFG_TUNEEN       (0x1u <<  1) /**< \brief (SCIF_RCFASTCFG) Tuner Enable */\r
+#define SCIF_RCFASTCFG_JITMODE      (0x1u <<  2) /**< \brief (SCIF_RCFASTCFG) Jitter Mode */\r
+#define SCIF_RCFASTCFG_NBPERIODS_Pos    4\r
+#define SCIF_RCFASTCFG_NBPERIODS_Msk    (0x7u << SCIF_RCFASTCFG_NBPERIODS_Pos) /**< \brief (SCIF_RCFASTCFG) Number of 32kHz Periods */\r
+#define SCIF_RCFASTCFG_NBPERIODS(value) ((SCIF_RCFASTCFG_NBPERIODS_Msk & ((value) << SCIF_RCFASTCFG_NBPERIODS_Pos)))\r
+#define SCIF_RCFASTCFG_FCD          (0x1u <<  7) /**< \brief (SCIF_RCFASTCFG) RCFAST Fuse Calibration Done */\r
+#define SCIF_RCFASTCFG_FRANGE_Pos    8\r
+#define SCIF_RCFASTCFG_FRANGE_Msk    (0x3u << SCIF_RCFASTCFG_FRANGE_Pos) /**< \brief (SCIF_RCFASTCFG) Frequency Range */\r
+#define SCIF_RCFASTCFG_FRANGE(value) ((SCIF_RCFASTCFG_FRANGE_Msk & ((value) << SCIF_RCFASTCFG_FRANGE_Pos)))\r
+#define SCIF_RCFASTCFG_LOCKMARGIN_Pos    12\r
+#define SCIF_RCFASTCFG_LOCKMARGIN_Msk    (0xFu << SCIF_RCFASTCFG_LOCKMARGIN_Pos) /**< \brief (SCIF_RCFASTCFG) Accepted Count Error for Lock */\r
+#define SCIF_RCFASTCFG_LOCKMARGIN(value) ((SCIF_RCFASTCFG_LOCKMARGIN_Msk & ((value) << SCIF_RCFASTCFG_LOCKMARGIN_Pos)))\r
+#define SCIF_RCFASTCFG_CALIB_Pos    16\r
+#define SCIF_RCFASTCFG_CALIB_Msk    (0x7Fu << SCIF_RCFASTCFG_CALIB_Pos) /**< \brief (SCIF_RCFASTCFG) Oscillator Calibration Value */\r
+#define SCIF_RCFASTCFG_CALIB(value) ((SCIF_RCFASTCFG_CALIB_Msk & ((value) << SCIF_RCFASTCFG_CALIB_Pos)))\r
+/* -------- SCIF_RCFASTSR : (SCIF Offset: 0x04C) 4/8/12 MHz RC Oscillator Status Register -------- */\r
+#define SCIF_RCFASTSR_CURTRIM_Pos    0\r
+#define SCIF_RCFASTSR_CURTRIM_Msk    (0x7Fu << SCIF_RCFASTSR_CURTRIM_Pos) /**< \brief (SCIF_RCFASTSR) Current Trim Value */\r
+#define SCIF_RCFASTSR_CURTRIM(value) ((SCIF_RCFASTSR_CURTRIM_Msk & ((value) << SCIF_RCFASTSR_CURTRIM_Pos)))\r
+#define SCIF_RCFASTSR_CNTERR_Pos    16\r
+#define SCIF_RCFASTSR_CNTERR_Msk    (0x1Fu << SCIF_RCFASTSR_CNTERR_Pos) /**< \brief (SCIF_RCFASTSR) Current Count Error */\r
+#define SCIF_RCFASTSR_CNTERR(value) ((SCIF_RCFASTSR_CNTERR_Msk & ((value) << SCIF_RCFASTSR_CNTERR_Pos)))\r
+#define SCIF_RCFASTSR_SIGN          (0x1u << 21) /**< \brief (SCIF_RCFASTSR) Sign of Current Count Error */\r
+#define SCIF_RCFASTSR_LOCK          (0x1u << 24) /**< \brief (SCIF_RCFASTSR) Lock */\r
+#define SCIF_RCFASTSR_LOCKLOST      (0x1u << 25) /**< \brief (SCIF_RCFASTSR) Lock Lost */\r
+#define SCIF_RCFASTSR_UPDATED       (0x1u << 31) /**< \brief (SCIF_RCFASTSR) Current Trim Value Updated */\r
+/* -------- SCIF_RC80MCR : (SCIF Offset: 0x050) 80 MHz RC Oscillator Register -------- */\r
+#define SCIF_RC80MCR_EN             (0x1u <<  0) /**< \brief (SCIF_RC80MCR) Enable */\r
+#define SCIF_RC80MCR_FCD            (0x1u <<  7) /**< \brief (SCIF_RC80MCR) Flash Calibration Done */\r
+#define SCIF_RC80MCR_CALIB_Pos      16\r
+#define SCIF_RC80MCR_CALIB_Msk      (0x3u << SCIF_RC80MCR_CALIB_Pos) /**< \brief (SCIF_RC80MCR) Calibration Value */\r
+#define SCIF_RC80MCR_CALIB(value)   ((SCIF_RC80MCR_CALIB_Msk & ((value) << SCIF_RC80MCR_CALIB_Pos)))\r
+/* -------- SCIF_HRPCR : (SCIF Offset: 0x064) High Resolution Prescaler Control Register -------- */\r
+#define SCIF_HRPCR_HRPEN            (0x1u <<  0) /**< \brief (SCIF_HRPCR) High Resolution Prescaler Enable */\r
+#define SCIF_HRPCR_CKSEL_Pos        1\r
+#define SCIF_HRPCR_CKSEL_Msk        (0x7u << SCIF_HRPCR_CKSEL_Pos) /**< \brief (SCIF_HRPCR) Clock Input Selection */\r
+#define SCIF_HRPCR_CKSEL(value)     ((SCIF_HRPCR_CKSEL_Msk & ((value) << SCIF_HRPCR_CKSEL_Pos)))\r
+#define SCIF_HRPCR_HRCOUNT_Pos      8\r
+#define SCIF_HRPCR_HRCOUNT_Msk      (0xFFFFFFu << SCIF_HRPCR_HRCOUNT_Pos) /**< \brief (SCIF_HRPCR) High Resolution Counter */\r
+#define SCIF_HRPCR_HRCOUNT(value)   ((SCIF_HRPCR_HRCOUNT_Msk & ((value) << SCIF_HRPCR_HRCOUNT_Pos)))\r
+/* -------- SCIF_FPCR : (SCIF Offset: 0x068) Fractional Prescaler Control Register -------- */\r
+#define SCIF_FPCR_FPEN              (0x1u <<  0) /**< \brief (SCIF_FPCR) High Resolution Prescaler Enable */\r
+#define SCIF_FPCR_CKSEL_Pos         1\r
+#define SCIF_FPCR_CKSEL_Msk         (0x7u << SCIF_FPCR_CKSEL_Pos) /**< \brief (SCIF_FPCR) Clock Input Selection */\r
+#define SCIF_FPCR_CKSEL(value)      ((SCIF_FPCR_CKSEL_Msk & ((value) << SCIF_FPCR_CKSEL_Pos)))\r
+/* -------- SCIF_FPMUL : (SCIF Offset: 0x06C) Fractional Prescaler Multiplier Register -------- */\r
+#define SCIF_FPMUL_FPMUL_Pos        0\r
+#define SCIF_FPMUL_FPMUL_Msk        (0xFFFFu << SCIF_FPMUL_FPMUL_Pos) /**< \brief (SCIF_FPMUL) Fractional Prescaler Multiplication Factor */\r
+#define SCIF_FPMUL_FPMUL(value)     ((SCIF_FPMUL_FPMUL_Msk & ((value) << SCIF_FPMUL_FPMUL_Pos)))\r
+/* -------- SCIF_FPDIV : (SCIF Offset: 0x070) Fractional Prescaler DIVIDER Register -------- */\r
+#define SCIF_FPDIV_FPDIV_Pos        0\r
+#define SCIF_FPDIV_FPDIV_Msk        (0xFFFFu << SCIF_FPDIV_FPDIV_Pos) /**< \brief (SCIF_FPDIV) Fractional Prescaler Division Factor */\r
+#define SCIF_FPDIV_FPDIV(value)     ((SCIF_FPDIV_FPDIV_Msk & ((value) << SCIF_FPDIV_FPDIV_Pos)))\r
+/* -------- SCIF_GCCTRL : (SCIF Offset: 0x074) Gcctrl Generic Clock Control -------- */\r
+#define SCIF_GCCTRL_CEN             (0x1u <<  0) /**< \brief (SCIF_GCCTRL) Clock Enable */\r
+#define SCIF_GCCTRL_DIVEN           (0x1u <<  1) /**< \brief (SCIF_GCCTRL) Divide Enable */\r
+#define SCIF_GCCTRL_OSCSEL_Pos      8\r
+#define SCIF_GCCTRL_OSCSEL_Msk      (0x1Fu << SCIF_GCCTRL_OSCSEL_Pos) /**< \brief (SCIF_GCCTRL) Clock Select */\r
+#define SCIF_GCCTRL_OSCSEL(value)   ((SCIF_GCCTRL_OSCSEL_Msk & ((value) << SCIF_GCCTRL_OSCSEL_Pos)))\r
+#define SCIF_GCCTRL_DIV_Pos         16\r
+#define SCIF_GCCTRL_DIV_Msk         (0xFFFFu << SCIF_GCCTRL_DIV_Pos) /**< \brief (SCIF_GCCTRL) Division Factor */\r
+#define SCIF_GCCTRL_DIV(value)      ((SCIF_GCCTRL_DIV_Msk & ((value) << SCIF_GCCTRL_DIV_Pos)))\r
+/* -------- SCIF_RCFASTVERSION : (SCIF Offset: 0x3D8) 4/8/12 MHz RC Oscillator Version Register -------- */\r
+#define SCIF_RCFASTVERSION_VERSION_Pos    0\r
+#define SCIF_RCFASTVERSION_VERSION_Msk    (0xFFFu << SCIF_RCFASTVERSION_VERSION_Pos) /**< \brief (SCIF_RCFASTVERSION) Version number */\r
+#define SCIF_RCFASTVERSION_VERSION(value) ((SCIF_RCFASTVERSION_VERSION_Msk & ((value) << SCIF_RCFASTVERSION_VERSION_Pos)))\r
+#define SCIF_RCFASTVERSION_VARIANT_Pos    16\r
+#define SCIF_RCFASTVERSION_VARIANT_Msk    (0xFu << SCIF_RCFASTVERSION_VARIANT_Pos) /**< \brief (SCIF_RCFASTVERSION) Variant number */\r
+#define SCIF_RCFASTVERSION_VARIANT(value) ((SCIF_RCFASTVERSION_VARIANT_Msk & ((value) << SCIF_RCFASTVERSION_VARIANT_Pos)))\r
+/* -------- SCIF_GCLKPRESCVERSION : (SCIF Offset: 0x3DC) Generic Clock Prescaler Version Register -------- */\r
+#define SCIF_GCLKPRESCVERSION_VERSION_Pos    0\r
+#define SCIF_GCLKPRESCVERSION_VERSION_Msk    (0xFFFu << SCIF_GCLKPRESCVERSION_VERSION_Pos) /**< \brief (SCIF_GCLKPRESCVERSION) Version number */\r
+#define SCIF_GCLKPRESCVERSION_VERSION(value) ((SCIF_GCLKPRESCVERSION_VERSION_Msk & ((value) << SCIF_GCLKPRESCVERSION_VERSION_Pos)))\r
+#define SCIF_GCLKPRESCVERSION_VARIANT_Pos    16\r
+#define SCIF_GCLKPRESCVERSION_VARIANT_Msk    (0xFu << SCIF_GCLKPRESCVERSION_VARIANT_Pos) /**< \brief (SCIF_GCLKPRESCVERSION) Variant number */\r
+#define SCIF_GCLKPRESCVERSION_VARIANT(value) ((SCIF_GCLKPRESCVERSION_VARIANT_Msk & ((value) << SCIF_GCLKPRESCVERSION_VARIANT_Pos)))\r
+/* -------- SCIF_PLLIFAVERSION : (SCIF Offset: 0x3E0) PLL Version Register -------- */\r
+#define SCIF_PLLIFAVERSION_VERSION_Pos    0\r
+#define SCIF_PLLIFAVERSION_VERSION_Msk    (0xFFFu << SCIF_PLLIFAVERSION_VERSION_Pos) /**< \brief (SCIF_PLLIFAVERSION) Version number */\r
+#define SCIF_PLLIFAVERSION_VERSION(value) ((SCIF_PLLIFAVERSION_VERSION_Msk & ((value) << SCIF_PLLIFAVERSION_VERSION_Pos)))\r
+#define SCIF_PLLIFAVERSION_VARIANT_Pos    16\r
+#define SCIF_PLLIFAVERSION_VARIANT_Msk    (0xFu << SCIF_PLLIFAVERSION_VARIANT_Pos) /**< \brief (SCIF_PLLIFAVERSION) Variant nubmer */\r
+#define SCIF_PLLIFAVERSION_VARIANT(value) ((SCIF_PLLIFAVERSION_VARIANT_Msk & ((value) << SCIF_PLLIFAVERSION_VARIANT_Pos)))\r
+/* -------- SCIF_OSCIFAVERSION : (SCIF Offset: 0x3E4) Oscillator 0 Version Register -------- */\r
+#define SCIF_OSCIFAVERSION_VERSION_Pos    0\r
+#define SCIF_OSCIFAVERSION_VERSION_Msk    (0xFFFu << SCIF_OSCIFAVERSION_VERSION_Pos) /**< \brief (SCIF_OSCIFAVERSION) Version number */\r
+#define SCIF_OSCIFAVERSION_VERSION(value) ((SCIF_OSCIFAVERSION_VERSION_Msk & ((value) << SCIF_OSCIFAVERSION_VERSION_Pos)))\r
+#define SCIF_OSCIFAVERSION_VARIANT_Pos    16\r
+#define SCIF_OSCIFAVERSION_VARIANT_Msk    (0xFu << SCIF_OSCIFAVERSION_VARIANT_Pos) /**< \brief (SCIF_OSCIFAVERSION) Variant nubmer */\r
+#define SCIF_OSCIFAVERSION_VARIANT(value) ((SCIF_OSCIFAVERSION_VARIANT_Msk & ((value) << SCIF_OSCIFAVERSION_VARIANT_Pos)))\r
+/* -------- SCIF_DFLLIFBVERSION : (SCIF Offset: 0x3E8) DFLL Version Register -------- */\r
+#define SCIF_DFLLIFBVERSION_VERSION_Pos    0\r
+#define SCIF_DFLLIFBVERSION_VERSION_Msk    (0xFFFu << SCIF_DFLLIFBVERSION_VERSION_Pos) /**< \brief (SCIF_DFLLIFBVERSION) Version number */\r
+#define SCIF_DFLLIFBVERSION_VERSION(value) ((SCIF_DFLLIFBVERSION_VERSION_Msk & ((value) << SCIF_DFLLIFBVERSION_VERSION_Pos)))\r
+#define SCIF_DFLLIFBVERSION_VARIANT_Pos    16\r
+#define SCIF_DFLLIFBVERSION_VARIANT_Msk    (0xFu << SCIF_DFLLIFBVERSION_VARIANT_Pos) /**< \brief (SCIF_DFLLIFBVERSION) Variant number */\r
+#define SCIF_DFLLIFBVERSION_VARIANT(value) ((SCIF_DFLLIFBVERSION_VARIANT_Msk & ((value) << SCIF_DFLLIFBVERSION_VARIANT_Pos)))\r
+/* -------- SCIF_RCOSCIFAVERSION : (SCIF Offset: 0x3EC) System RC Oscillator Version Register -------- */\r
+#define SCIF_RCOSCIFAVERSION_VERSION_Pos    0\r
+#define SCIF_RCOSCIFAVERSION_VERSION_Msk    (0xFFFu << SCIF_RCOSCIFAVERSION_VERSION_Pos) /**< \brief (SCIF_RCOSCIFAVERSION) Version number */\r
+#define SCIF_RCOSCIFAVERSION_VERSION(value) ((SCIF_RCOSCIFAVERSION_VERSION_Msk & ((value) << SCIF_RCOSCIFAVERSION_VERSION_Pos)))\r
+#define SCIF_RCOSCIFAVERSION_VARIANT_Pos    16\r
+#define SCIF_RCOSCIFAVERSION_VARIANT_Msk    (0xFu << SCIF_RCOSCIFAVERSION_VARIANT_Pos) /**< \brief (SCIF_RCOSCIFAVERSION) Variant number */\r
+#define SCIF_RCOSCIFAVERSION_VARIANT(value) ((SCIF_RCOSCIFAVERSION_VARIANT_Msk & ((value) << SCIF_RCOSCIFAVERSION_VARIANT_Pos)))\r
+/* -------- SCIF_FLOVERSION : (SCIF Offset: 0x3F0) Frequency Locked Oscillator Version Register -------- */\r
+#define SCIF_FLOVERSION_VERSION_Pos    0\r
+#define SCIF_FLOVERSION_VERSION_Msk    (0xFFFu << SCIF_FLOVERSION_VERSION_Pos) /**< \brief (SCIF_FLOVERSION) Version number */\r
+#define SCIF_FLOVERSION_VERSION(value) ((SCIF_FLOVERSION_VERSION_Msk & ((value) << SCIF_FLOVERSION_VERSION_Pos)))\r
+#define SCIF_FLOVERSION_VARIANT_Pos    16\r
+#define SCIF_FLOVERSION_VARIANT_Msk    (0xFu << SCIF_FLOVERSION_VARIANT_Pos) /**< \brief (SCIF_FLOVERSION) Variant number */\r
+#define SCIF_FLOVERSION_VARIANT(value) ((SCIF_FLOVERSION_VARIANT_Msk & ((value) << SCIF_FLOVERSION_VARIANT_Pos)))\r
+/* -------- SCIF_RC80MVERSION : (SCIF Offset: 0x3F4) 80MHz RC Oscillator Version Register -------- */\r
+#define SCIF_RC80MVERSION_VERSION_Pos    0\r
+#define SCIF_RC80MVERSION_VERSION_Msk    (0xFFFu << SCIF_RC80MVERSION_VERSION_Pos) /**< \brief (SCIF_RC80MVERSION) Version number */\r
+#define SCIF_RC80MVERSION_VERSION(value) ((SCIF_RC80MVERSION_VERSION_Msk & ((value) << SCIF_RC80MVERSION_VERSION_Pos)))\r
+#define SCIF_RC80MVERSION_VARIANT_Pos    16\r
+#define SCIF_RC80MVERSION_VARIANT_Msk    (0xFu << SCIF_RC80MVERSION_VARIANT_Pos) /**< \brief (SCIF_RC80MVERSION) Variant number */\r
+#define SCIF_RC80MVERSION_VARIANT(value) ((SCIF_RC80MVERSION_VARIANT_Msk & ((value) << SCIF_RC80MVERSION_VARIANT_Pos)))\r
+/* -------- SCIF_GCLKIFVERSION : (SCIF Offset: 0x3F8) Generic Clock Version Register -------- */\r
+#define SCIF_GCLKIFVERSION_VERSION_Pos    0\r
+#define SCIF_GCLKIFVERSION_VERSION_Msk    (0xFFFu << SCIF_GCLKIFVERSION_VERSION_Pos) /**< \brief (SCIF_GCLKIFVERSION) Version number */\r
+#define SCIF_GCLKIFVERSION_VERSION(value) ((SCIF_GCLKIFVERSION_VERSION_Msk & ((value) << SCIF_GCLKIFVERSION_VERSION_Pos)))\r
+#define SCIF_GCLKIFVERSION_VARIANT_Pos    16\r
+#define SCIF_GCLKIFVERSION_VARIANT_Msk    (0xFu << SCIF_GCLKIFVERSION_VARIANT_Pos) /**< \brief (SCIF_GCLKIFVERSION) Variant number */\r
+#define SCIF_GCLKIFVERSION_VARIANT(value) ((SCIF_GCLKIFVERSION_VARIANT_Msk & ((value) << SCIF_GCLKIFVERSION_VARIANT_Pos)))\r
+/* -------- SCIF_VERSION : (SCIF Offset: 0x3FC) SCIF Version Register -------- */\r
+#define SCIF_VERSION_VERSION_Pos    0\r
+#define SCIF_VERSION_VERSION_Msk    (0xFFFu << SCIF_VERSION_VERSION_Pos) /**< \brief (SCIF_VERSION) Version number */\r
+#define SCIF_VERSION_VERSION(value) ((SCIF_VERSION_VERSION_Msk & ((value) << SCIF_VERSION_VERSION_Pos)))\r
+#define SCIF_VERSION_VARIANT_Pos    16\r
+#define SCIF_VERSION_VARIANT_Msk    (0xFu << SCIF_VERSION_VARIANT_Pos) /**< \brief (SCIF_VERSION) Variant number */\r
+#define SCIF_VERSION_VARIANT(value) ((SCIF_VERSION_VARIANT_Msk & ((value) << SCIF_VERSION_VARIANT_Pos)))\r
+\r
+/*@}*/\r
+\r
+/* ============================================================================= */\r
+/**  SOFTWARE API DEFINITION FOR SMAP */\r
+/* ============================================================================= */\r
+/** \addtogroup SAM4L_SMAP System Manager Access Port */\r
+/*@{*/\r
+\r
+#define REV_SMAP       0x100\r
+\r
+#ifndef __ASSEMBLY__\r
+/** \brief SMAP hardware registers */\r
+typedef struct {\r
+  WoReg   SMAP_CR;          /**< \brief (SMAP Offset: 0x00) Control Register */\r
+  RoReg   SMAP_SR;          /**< \brief (SMAP Offset: 0x04) Status Register */\r
+  WoReg   SMAP_SCR;         /**< \brief (SMAP Offset: 0x08) Status Clear Register */\r
+  RwReg   SMAP_ADDR;        /**< \brief (SMAP Offset: 0x0C) Address Register */\r
+  RwReg   SMAP_LENGTH;      /**< \brief (SMAP Offset: 0x10) Length Register */\r
+  RwReg   SMAP_DATA;        /**< \brief (SMAP Offset: 0x14) Data Register */\r
+  RoReg   Reserved1[4];\r
+  RoReg   SMAP_VERSION;     /**< \brief (SMAP Offset: 0x28) VERSION register */\r
+  RoReg   Reserved2[49];\r
+  RoReg   SMAP_CIDR;        /**< \brief (SMAP Offset: 0xF0) Chip ID Register */\r
+  RoReg   SMAP_EXID;        /**< \brief (SMAP Offset: 0xF4) Chip ID Extension Register */\r
+  RoReg   Reserved3[1];\r
+  RoReg   SMAP_IDR;         /**< \brief (SMAP Offset: 0xFC) AP Identification register */\r
+} Smap;\r
+#endif /* __ASSEMBLY__ */\r
+/* -------- SMAP_CR : (SMAP Offset: 0x00) Control Register -------- */\r
+#define SMAP_CR_EN                  (0x1u <<  0) /**< \brief (SMAP_CR) Enable */\r
+#define SMAP_CR_DIS                 (0x1u <<  1) /**< \brief (SMAP_CR) Disable */\r
+#define SMAP_CR_CRC                 (0x1u <<  2) /**< \brief (SMAP_CR) User Page Read */\r
+#define SMAP_CR_FSPR                (0x1u <<  3) /**< \brief (SMAP_CR) Flash Supplementary Page Read */\r
+#define SMAP_CR_CE                  (0x1u <<  4) /**< \brief (SMAP_CR) Chip Erase */\r
+/* -------- SMAP_SR : (SMAP Offset: 0x04) Status Register -------- */\r
+#define SMAP_SR_DONE                (0x1u <<  0) /**< \brief (SMAP_SR) Operation done */\r
+#define SMAP_SR_HCR                 (0x1u <<  1) /**< \brief (SMAP_SR) Hold Core reset */\r
+#define SMAP_SR_BERR                (0x1u <<  2) /**< \brief (SMAP_SR) Bus error */\r
+#define SMAP_SR_FAIL                (0x1u <<  3) /**< \brief (SMAP_SR) Failure */\r
+#define SMAP_SR_LCK                 (0x1u <<  4) /**< \brief (SMAP_SR) Lock */\r
+#define SMAP_SR_EN                  (0x1u <<  8) /**< \brief (SMAP_SR) Enabled */\r
+#define SMAP_SR_PROT                (0x1u <<  9) /**< \brief (SMAP_SR) Protected */\r
+#define SMAP_SR_DBGP                (0x1u << 10) /**< \brief (SMAP_SR) Debugger Present */\r
+#define SMAP_SR_STATE_Pos           24\r
+#define SMAP_SR_STATE_Msk           (0x7u << SMAP_SR_STATE_Pos) /**< \brief (SMAP_SR) State */\r
+#define SMAP_SR_STATE(value)        ((SMAP_SR_STATE_Msk & ((value) << SMAP_SR_STATE_Pos)))\r
+/* -------- SMAP_SCR : (SMAP Offset: 0x08) Status Clear Register -------- */\r
+#define SMAP_SCR_DONE               (0x1u <<  0) /**< \brief (SMAP_SCR) Done */\r
+#define SMAP_SCR_HCR                (0x1u <<  1) /**< \brief (SMAP_SCR) Hold Core Register */\r
+#define SMAP_SCR_BERR               (0x1u <<  2) /**< \brief (SMAP_SCR) Bus error */\r
+#define SMAP_SCR_FAIL               (0x1u <<  3) /**< \brief (SMAP_SCR) Failure */\r
+#define SMAP_SCR_LCK                (0x1u <<  4) /**< \brief (SMAP_SCR) Lock error */\r
+/* -------- SMAP_ADDR : (SMAP Offset: 0x0C) Address Register -------- */\r
+#define SMAP_ADDR_ADDR_Pos          2\r
+#define SMAP_ADDR_ADDR_Msk          (0x3FFFFFFFu << SMAP_ADDR_ADDR_Pos) /**< \brief (SMAP_ADDR) Address Value */\r
+#define SMAP_ADDR_ADDR(value)       ((SMAP_ADDR_ADDR_Msk & ((value) << SMAP_ADDR_ADDR_Pos)))\r
+/* -------- SMAP_LENGTH : (SMAP Offset: 0x10) Length Register -------- */\r
+#define SMAP_LENGTH_LENGTH_Pos      2\r
+#define SMAP_LENGTH_LENGTH_Msk      (0x3FFFFFFFu << SMAP_LENGTH_LENGTH_Pos) /**< \brief (SMAP_LENGTH) Length Register */\r
+#define SMAP_LENGTH_LENGTH(value)   ((SMAP_LENGTH_LENGTH_Msk & ((value) << SMAP_LENGTH_LENGTH_Pos)))\r
+/* -------- SMAP_DATA : (SMAP Offset: 0x14) Data Register -------- */\r
+#define SMAP_DATA_DATA_Pos          0\r
+#define SMAP_DATA_DATA_Msk          (0xFFFFFFFFu << SMAP_DATA_DATA_Pos) /**< \brief (SMAP_DATA) Generic data register */\r
+#define SMAP_DATA_DATA(value)       ((SMAP_DATA_DATA_Msk & ((value) << SMAP_DATA_DATA_Pos)))\r
+/* -------- SMAP_VERSION : (SMAP Offset: 0x28) VERSION register -------- */\r
+#define SMAP_VERSION_VERSION_Pos    0\r
+#define SMAP_VERSION_VERSION_Msk    (0xFFFu << SMAP_VERSION_VERSION_Pos) /**< \brief (SMAP_VERSION) Version number */\r
+#define SMAP_VERSION_VERSION(value) ((SMAP_VERSION_VERSION_Msk & ((value) << SMAP_VERSION_VERSION_Pos)))\r
+#define SMAP_VERSION_VARIANT_Pos    16\r
+#define SMAP_VERSION_VARIANT_Msk    (0xFu << SMAP_VERSION_VARIANT_Pos) /**< \brief (SMAP_VERSION) Variant number */\r
+#define SMAP_VERSION_VARIANT(value) ((SMAP_VERSION_VARIANT_Msk & ((value) << SMAP_VERSION_VARIANT_Pos)))\r
+/* -------- SMAP_CIDR : (SMAP Offset: 0xF0) Chip ID Register -------- */\r
+#define SMAP_CIDR_VERSION_Pos       0\r
+#define SMAP_CIDR_VERSION_Msk       (0x1Fu << SMAP_CIDR_VERSION_Pos) /**< \brief (SMAP_CIDR) Version of the Device */\r
+#define SMAP_CIDR_VERSION(value)    ((SMAP_CIDR_VERSION_Msk & ((value) << SMAP_CIDR_VERSION_Pos)))\r
+#define SMAP_CIDR_EPROC_Pos         5\r
+#define SMAP_CIDR_EPROC_Msk         (0x7u << SMAP_CIDR_EPROC_Pos) /**< \brief (SMAP_CIDR) Embedded Processor */\r
+#define SMAP_CIDR_EPROC(value)      ((SMAP_CIDR_EPROC_Msk & ((value) << SMAP_CIDR_EPROC_Pos)))\r
+#define SMAP_CIDR_NVPSIZ_Pos        8\r
+#define SMAP_CIDR_NVPSIZ_Msk        (0xFu << SMAP_CIDR_NVPSIZ_Pos) /**< \brief (SMAP_CIDR) Nonvolatile Program Memory Size */\r
+#define SMAP_CIDR_NVPSIZ(value)     ((SMAP_CIDR_NVPSIZ_Msk & ((value) << SMAP_CIDR_NVPSIZ_Pos)))\r
+#define SMAP_CIDR_NVPSIZ2_Pos       12\r
+#define SMAP_CIDR_NVPSIZ2_Msk       (0xFu << SMAP_CIDR_NVPSIZ2_Pos) /**< \brief (SMAP_CIDR) Second Nonvolatile Program Memory Size */\r
+#define SMAP_CIDR_NVPSIZ2(value)    ((SMAP_CIDR_NVPSIZ2_Msk & ((value) << SMAP_CIDR_NVPSIZ2_Pos)))\r
+#define SMAP_CIDR_SRAMSIZ_Pos       16\r
+#define SMAP_CIDR_SRAMSIZ_Msk       (0x1Fu << SMAP_CIDR_SRAMSIZ_Pos) /**< \brief (SMAP_CIDR) Internal SRAM Size */\r
+#define SMAP_CIDR_SRAMSIZ(value)    ((SMAP_CIDR_SRAMSIZ_Msk & ((value) << SMAP_CIDR_SRAMSIZ_Pos)))\r
+#define SMAP_CIDR_ARCH_Pos          21\r
+#define SMAP_CIDR_ARCH_Msk          (0x7Fu << SMAP_CIDR_ARCH_Pos) /**< \brief (SMAP_CIDR) Architecture Identifier */\r
+#define SMAP_CIDR_ARCH(value)       ((SMAP_CIDR_ARCH_Msk & ((value) << SMAP_CIDR_ARCH_Pos)))\r
+#define SMAP_CIDR_NVPTYP_Pos        28\r
+#define SMAP_CIDR_NVPTYP_Msk        (0x7u << SMAP_CIDR_NVPTYP_Pos) /**< \brief (SMAP_CIDR) Nonvolatile Program Memory Type */\r
+#define SMAP_CIDR_NVPTYP(value)     ((SMAP_CIDR_NVPTYP_Msk & ((value) << SMAP_CIDR_NVPTYP_Pos)))\r
+#define SMAP_CIDR_EXT               (0x1u << 31) /**< \brief (SMAP_CIDR) Extension Flag */\r
+/* -------- SMAP_EXID : (SMAP Offset: 0xF4) Chip ID Extension Register -------- */\r
+#define SMAP_EXID_EXID_Pos          0\r
+#define SMAP_EXID_EXID_Msk          (0xFFFFFFFFu << SMAP_EXID_EXID_Pos) /**< \brief (SMAP_EXID) Chip ID Extension */\r
+#define SMAP_EXID_EXID(value)       ((SMAP_EXID_EXID_Msk & ((value) << SMAP_EXID_EXID_Pos)))\r
+/* -------- SMAP_IDR : (SMAP Offset: 0xFC) AP Identification register -------- */\r
+#define SMAP_IDR_APIDV_Pos          0\r
+#define SMAP_IDR_APIDV_Msk          (0xFu << SMAP_IDR_APIDV_Pos) /**< \brief (SMAP_IDR) AP Identification Variant */\r
+#define SMAP_IDR_APIDV(value)       ((SMAP_IDR_APIDV_Msk & ((value) << SMAP_IDR_APIDV_Pos)))\r
+#define SMAP_IDR_APID_Pos           4\r
+#define SMAP_IDR_APID_Msk           (0xFu << SMAP_IDR_APID_Pos) /**< \brief (SMAP_IDR) AP Identification */\r
+#define SMAP_IDR_APID(value)        ((SMAP_IDR_APID_Msk & ((value) << SMAP_IDR_APID_Pos)))\r
+#define SMAP_IDR_CLSS               (0x1u << 16) /**< \brief (SMAP_IDR) Class */\r
+#define SMAP_IDR_IC_Pos             17\r
+#define SMAP_IDR_IC_Msk             (0x7Fu << SMAP_IDR_IC_Pos) /**< \brief (SMAP_IDR) JEP-106 Identity Code */\r
+#define SMAP_IDR_IC(value)          ((SMAP_IDR_IC_Msk & ((value) << SMAP_IDR_IC_Pos)))\r
+#define SMAP_IDR_CC_Pos             24\r
+#define SMAP_IDR_CC_Msk             (0xFu << SMAP_IDR_CC_Pos) /**< \brief (SMAP_IDR) JEP-106 Continuation Code */\r
+#define SMAP_IDR_CC(value)          ((SMAP_IDR_CC_Msk & ((value) << SMAP_IDR_CC_Pos)))\r
+#define SMAP_IDR_REVISION_Pos       28\r
+#define SMAP_IDR_REVISION_Msk       (0xFu << SMAP_IDR_REVISION_Pos) /**< \brief (SMAP_IDR) Revision */\r
+#define SMAP_IDR_REVISION(value)    ((SMAP_IDR_REVISION_Msk & ((value) << SMAP_IDR_REVISION_Pos)))\r
+\r
+/*@}*/\r
+\r
+/* ============================================================================= */\r
+/**  SOFTWARE API DEFINITION FOR SPI */\r
+/* ============================================================================= */\r
+/** \addtogroup SAM4L_SPI Serial Peripheral Interface */\r
+/*@{*/\r
+\r
+#define REV_SPI        0x211\r
+\r
+#ifndef __ASSEMBLY__\r
+/** \brief SPI hardware registers */\r
+typedef struct {\r
+  WoReg   SPI_CR;          /**< \brief (SPI Offset: 0x00) Control Register */\r
+  RwReg   SPI_MR;          /**< \brief (SPI Offset: 0x04) Mode Register */\r
+  RoReg   SPI_RDR;         /**< \brief (SPI Offset: 0x08) Receive Data Register */\r
+  WoReg   SPI_TDR;         /**< \brief (SPI Offset: 0x0C) Transmit Data Register */\r
+  RoReg   SPI_SR;          /**< \brief (SPI Offset: 0x10) Status Register */\r
+  WoReg   SPI_IER;         /**< \brief (SPI Offset: 0x14) Interrupt Enable Register */\r
+  WoReg   SPI_IDR;         /**< \brief (SPI Offset: 0x18) Interrupt Disable Register */\r
+  RoReg   SPI_IMR;         /**< \brief (SPI Offset: 0x1C) Interrupt Mask Register */\r
+  RoReg   Reserved1[4];\r
+  RwReg   SPI_CSR[4];      /**< \brief (SPI Offset: 0x30) Chip Select Registers */\r
+  RoReg   Reserved2[41];\r
+  RwReg   SPI_WPCR;        /**< \brief (SPI Offset: 0xE4) Write Protection control Register */\r
+  RoReg   SPI_WPSR;        /**< \brief (SPI Offset: 0xE8) Write Protection status Register */\r
+  RoReg   Reserved3[3];\r
+  RoReg   SPI_FEATURES;    /**< \brief (SPI Offset: 0xF8) Features Register */\r
+  RoReg   SPI_VERSION;     /**< \brief (SPI Offset: 0xFC) Version Register */\r
+} Spi;\r
+#endif /* __ASSEMBLY__ */\r
+/* -------- SPI_CR : (SPI Offset: 0x00) Control Register -------- */\r
+#define SPI_CR_SPIEN                (0x1u <<  0) /**< \brief (SPI_CR) SPI Enable */\r
+#define   SPI_CR_SPIEN_0            (0x0u <<  0) /**< \brief (SPI_CR) No effect. */\r
+#define   SPI_CR_SPIEN_1            (0x1u <<  0) /**< \brief (SPI_CR) Enables the SPI to transfer and receive data. */\r
+#define SPI_CR_SPIDIS               (0x1u <<  1) /**< \brief (SPI_CR) SPI Disable */\r
+#define   SPI_CR_SPIDIS_0           (0x0u <<  1) /**< \brief (SPI_CR) No effect. */\r
+#define   SPI_CR_SPIDIS_1           (0x1u <<  1) /**< \brief (SPI_CR) Disables the SPI.All pins are set in input mode and no data is received or transmitted.If a transfer is in progress, the transfer is finished before the SPI is disabled.If both SPIEN and SPIDIS are equal to one when the control register is written, the SPI is disabled. */\r
+#define SPI_CR_SWRST                (0x1u <<  7) /**< \brief (SPI_CR) SPI Software Reset */\r
+#define   SPI_CR_SWRST_0            (0x0u <<  7) /**< \brief (SPI_CR) No effect. */\r
+#define   SPI_CR_SWRST_1            (0x1u <<  7) /**< \brief (SPI_CR) Reset the SPI. A software-triggered hardware reset of the SPI interface is performed. */\r
+#define SPI_CR_FLUSHFIFO            (0x1u <<  8) /**< \brief (SPI_CR) Flush FIFO command */\r
+#define SPI_CR_LASTXFER             (0x1u << 24) /**< \brief (SPI_CR) Last Transfer */\r
+#define   SPI_CR_LASTXFER_0         (0x0u << 24) /**< \brief (SPI_CR) No effect. */\r
+#define   SPI_CR_LASTXFER_1         (0x1u << 24) /**< \brief (SPI_CR) The current NPCS will be deasserted after the character written in TD has been transferred. When CSAAT is set, thisallows to close the communication with the current serial peripheral by raising the corresponding NPCS line as soon as TDtransfer has completed. */\r
+/* -------- SPI_MR : (SPI Offset: 0x04) Mode Register -------- */\r
+#define SPI_MR_MSTR                 (0x1u <<  0) /**< \brief (SPI_MR) Master/Slave Mode */\r
+#define   SPI_MR_MSTR_0             (0x0u <<  0) /**< \brief (SPI_MR) SPI is in Slave mode. */\r
+#define   SPI_MR_MSTR_1             (0x1u <<  0) /**< \brief (SPI_MR) SPI is in Master mode. */\r
+#define SPI_MR_PS                   (0x1u <<  1) /**< \brief (SPI_MR) Peripheral Select */\r
+#define   SPI_MR_PS_0               (0x0u <<  1) /**< \brief (SPI_MR) Fixed Peripheral Select. */\r
+#define   SPI_MR_PS_1               (0x1u <<  1) /**< \brief (SPI_MR) Variable Peripheral Select. */\r
+#define SPI_MR_PCSDEC               (0x1u <<  2) /**< \brief (SPI_MR) Chip Select Decode */\r
+#define   SPI_MR_PCSDEC_0           (0x0u <<  2) /**< \brief (SPI_MR) The chip selects are directly connected to a peripheral device. */\r
+#define   SPI_MR_PCSDEC_1           (0x1u <<  2) /**< \brief (SPI_MR) The four chip select lines are connected to a 4- to 16-bit decoder.When PCSDEC equals one, up to 15 Chip Select signals can be generated with the four lines using an external 4- to 16-bitdecoder. The Chip Select Registers define the characteristics of the 16 chip selects according to the following rules:CSR0 defines peripheral chip select signals 0 to 3.CSR1 defines peripheral chip select signals 4 to 7.CSR2 defines peripheral chip select signals 8 to 11.CSR3 defines peripheral chip select signals 12 to 15. */\r
+#define SPI_MR_MODFDIS              (0x1u <<  4) /**< \brief (SPI_MR) Mode Fault Detection */\r
+#define   SPI_MR_MODFDIS_0          (0x0u <<  4) /**< \brief (SPI_MR) Mode fault detection is enabled. */\r
+#define   SPI_MR_MODFDIS_1          (0x1u <<  4) /**< \brief (SPI_MR) Mode fault detection is disabled. */\r
+#define SPI_MR_WDRBT                (0x1u <<  5) /**< \brief (SPI_MR) wait data read before transfer */\r
+#define SPI_MR_RXFIFOEN             (0x1u <<  6) /**< \brief (SPI_MR) FIFO in Reception Enable */\r
+#define SPI_MR_LLB                  (0x1u <<  7) /**< \brief (SPI_MR) Local Loopback Enable */\r
+#define   SPI_MR_LLB_0              (0x0u <<  7) /**< \brief (SPI_MR) Local loopback path disabled. */\r
+#define   SPI_MR_LLB_1              (0x1u <<  7) /**< \brief (SPI_MR) Local loopback path enabled.LLB controls the local loopback on the data serializer for testing in Master Mode only. */\r
+#define SPI_MR_PCS_Pos              16\r
+#define SPI_MR_PCS_Msk              (0xFu << SPI_MR_PCS_Pos) /**< \brief (SPI_MR) Peripheral Chip Select */\r
+#define SPI_MR_PCS(value)           ((SPI_MR_PCS_Msk & ((value) << SPI_MR_PCS_Pos)))\r
+#define SPI_MR_DLYBCS_Pos           24\r
+#define SPI_MR_DLYBCS_Msk           (0xFFu << SPI_MR_DLYBCS_Pos) /**< \brief (SPI_MR) Delay Between Chip Selects */\r
+#define SPI_MR_DLYBCS(value)        ((SPI_MR_DLYBCS_Msk & ((value) << SPI_MR_DLYBCS_Pos)))\r
+/* -------- SPI_RDR : (SPI Offset: 0x08) Receive Data Register -------- */\r
+#define SPI_RDR_RD_Pos              0\r
+#define SPI_RDR_RD_Msk              (0xFFFFu << SPI_RDR_RD_Pos) /**< \brief (SPI_RDR) Receive Data */\r
+#define SPI_RDR_RD(value)           ((SPI_RDR_RD_Msk & ((value) << SPI_RDR_RD_Pos)))\r
+#define SPI_RDR_PCS_Pos             16\r
+#define SPI_RDR_PCS_Msk             (0xFu << SPI_RDR_PCS_Pos) /**< \brief (SPI_RDR) Peripheral Chip Select */\r
+#define SPI_RDR_PCS(value)          ((SPI_RDR_PCS_Msk & ((value) << SPI_RDR_PCS_Pos)))\r
+/* -------- SPI_TDR : (SPI Offset: 0x0C) Transmit Data Register -------- */\r
+#define SPI_TDR_TD_Pos              0\r
+#define SPI_TDR_TD_Msk              (0xFFFFu << SPI_TDR_TD_Pos) /**< \brief (SPI_TDR) Transmit Data */\r
+#define SPI_TDR_TD(value)           ((SPI_TDR_TD_Msk & ((value) << SPI_TDR_TD_Pos)))\r
+#define SPI_TDR_PCS_Pos             16\r
+#define SPI_TDR_PCS_Msk             (0xFu << SPI_TDR_PCS_Pos) /**< \brief (SPI_TDR) Peripheral Chip Select */\r
+#define SPI_TDR_PCS(value)          ((SPI_TDR_PCS_Msk & ((value) << SPI_TDR_PCS_Pos)))\r
+#define SPI_TDR_LASTXFER            (0x1u << 24) /**< \brief (SPI_TDR) Last Transfer */\r
+#define   SPI_TDR_LASTXFER_0        (0x0u << 24) /**< \brief (SPI_TDR) No effect. */\r
+#define   SPI_TDR_LASTXFER_1        (0x1u << 24) /**< \brief (SPI_TDR) The current NPCS will be deasserted after the character written in TD has been transferred. When CSAAT is set, thisallows to close the communication with the current serial peripheral by raising the corresponding NPCS line as soon as TDtransfer has completed. */\r
+/* -------- SPI_SR : (SPI Offset: 0x10) Status Register -------- */\r
+#define SPI_SR_RDRF                 (0x1u <<  0) /**< \brief (SPI_SR) Receive Data Register Full */\r
+#define   SPI_SR_RDRF_0             (0x0u <<  0) /**< \brief (SPI_SR) No data has been received since the last read of RDR */\r
+#define   SPI_SR_RDRF_1             (0x1u <<  0) /**< \brief (SPI_SR) Data has been received and the received data has been transferred from the serializer to RDR since the last readof RDR. */\r
+#define SPI_SR_TDRE                 (0x1u <<  1) /**< \brief (SPI_SR) Transmit Data Register Empty */\r
+#define   SPI_SR_TDRE_0             (0x0u <<  1) /**< \brief (SPI_SR) Data has been written to TDR and not yet transferred to the serializer. */\r
+#define   SPI_SR_TDRE_1             (0x1u <<  1) /**< \brief (SPI_SR) The last data written in the Transmit Data Register has been transferred to the serializer.TDRE equals zero when the SPI is disabled or at reset. The SPI enable command sets this bit to one. */\r
+#define SPI_SR_MODF                 (0x1u <<  2) /**< \brief (SPI_SR) Mode Fault Error */\r
+#define   SPI_SR_MODF_0             (0x0u <<  2) /**< \brief (SPI_SR) No Mode Fault has been detected since the last read of SR. */\r
+#define   SPI_SR_MODF_1             (0x1u <<  2) /**< \brief (SPI_SR) A Mode Fault occurred since the last read of the SR. */\r
+#define SPI_SR_OVRES                (0x1u <<  3) /**< \brief (SPI_SR) Overrun Error Status */\r
+#define   SPI_SR_OVRES_0            (0x0u <<  3) /**< \brief (SPI_SR) No overrun has been detected since the last read of SR. */\r
+#define   SPI_SR_OVRES_1            (0x1u <<  3) /**< \brief (SPI_SR) An overrun has occurred since the last read of SR. */\r
+#define SPI_SR_ENDRX                (0x1u <<  4) /**< \brief (SPI_SR) End of RX buffer */\r
+#define   SPI_SR_ENDRX_0            (0x0u <<  4) /**< \brief (SPI_SR) The Receive Counter Register has not reached 0 since the last write in RCR or RNCR. */\r
+#define   SPI_SR_ENDRX_1            (0x1u <<  4) /**< \brief (SPI_SR) The Receive Counter Register has reached 0 since the last write in RCR or RNCR. */\r
+#define SPI_SR_ENDTX                (0x1u <<  5) /**< \brief (SPI_SR) End of TX buffer */\r
+#define   SPI_SR_ENDTX_0            (0x0u <<  5) /**< \brief (SPI_SR) The Transmit Counter Register has not reached 0 since the last write in TCR or TNCR. */\r
+#define   SPI_SR_ENDTX_1            (0x1u <<  5) /**< \brief (SPI_SR) The Transmit Counter Register has reached 0 since the last write in TCR or TNCR. */\r
+#define SPI_SR_RXBUFF               (0x1u <<  6) /**< \brief (SPI_SR) RX Buffer Full */\r
+#define   SPI_SR_RXBUFF_0           (0x0u <<  6) /**< \brief (SPI_SR) RCR or RNCR has a value other than 0. */\r
+#define   SPI_SR_RXBUFF_1           (0x1u <<  6) /**< \brief (SPI_SR) Both RCR and RNCR has a value of 0. */\r
+#define SPI_SR_TXBUFE               (0x1u <<  7) /**< \brief (SPI_SR) TX Buffer Empty */\r
+#define   SPI_SR_TXBUFE_0           (0x0u <<  7) /**< \brief (SPI_SR) TCR or TNCR has a value other than 0. */\r
+#define   SPI_SR_TXBUFE_1           (0x1u <<  7) /**< \brief (SPI_SR) Both TCR and TNCR has a value of 0. */\r
+#define SPI_SR_NSSR                 (0x1u <<  8) /**< \brief (SPI_SR) NSS Rising */\r
+#define   SPI_SR_NSSR_0             (0x0u <<  8) /**< \brief (SPI_SR) No rising edge detected on NSS pin since last read. */\r
+#define   SPI_SR_NSSR_1             (0x1u <<  8) /**< \brief (SPI_SR) A rising edge occurred on NSS pin since last read. */\r
+#define SPI_SR_TXEMPTY              (0x1u <<  9) /**< \brief (SPI_SR) Transmission Registers Empty */\r
+#define   SPI_SR_TXEMPTY_0          (0x0u <<  9) /**< \brief (SPI_SR) As soon as data is written in TDR. */\r
+#define   SPI_SR_TXEMPTY_1          (0x1u <<  9) /**< \brief (SPI_SR) TDR and internal shifter are empty. If a transfer delay has been defined, TXEMPTY is set after the completion ofsuch delay. */\r
+#define SPI_SR_UNDES                (0x1u << 10) /**< \brief (SPI_SR) Underrun Error Status (Slave Mode Only) */\r
+#define SPI_SR_SPIENS               (0x1u << 16) /**< \brief (SPI_SR) SPI Enable Status */\r
+#define   SPI_SR_SPIENS_0           (0x0u << 16) /**< \brief (SPI_SR) SPI is disabled. */\r
+#define   SPI_SR_SPIENS_1           (0x1u << 16) /**< \brief (SPI_SR) SPI is enabled. */\r
+/* -------- SPI_IER : (SPI Offset: 0x14) Interrupt Enable Register -------- */\r
+#define SPI_IER_RDRF                (0x1u <<  0) /**< \brief (SPI_IER) Receive Data Register Full Interrupt Enable */\r
+#define   SPI_IER_RDRF_0            (0x0u <<  0) /**< \brief (SPI_IER) No effect. */\r
+#define   SPI_IER_RDRF_1            (0x1u <<  0) /**< \brief (SPI_IER) Enables the corresponding interrupt. */\r
+#define SPI_IER_TDRE                (0x1u <<  1) /**< \brief (SPI_IER) Transmit Data Register Empty Interrupt Enable */\r
+#define   SPI_IER_TDRE_0            (0x0u <<  1) /**< \brief (SPI_IER) No effect. */\r
+#define   SPI_IER_TDRE_1            (0x1u <<  1) /**< \brief (SPI_IER) Enables the corresponding interrupt. */\r
+#define SPI_IER_MODF                (0x1u <<  2) /**< \brief (SPI_IER) Mode Fault Error Interrupt Enable */\r
+#define   SPI_IER_MODF_0            (0x0u <<  2) /**< \brief (SPI_IER) No effect. */\r
+#define   SPI_IER_MODF_1            (0x1u <<  2) /**< \brief (SPI_IER) Enables the corresponding interrupt. */\r
+#define SPI_IER_OVRES               (0x1u <<  3) /**< \brief (SPI_IER) Overrun Error Interrupt Enable */\r
+#define   SPI_IER_OVRES_0           (0x0u <<  3) /**< \brief (SPI_IER) No effect. */\r
+#define   SPI_IER_OVRES_1           (0x1u <<  3) /**< \brief (SPI_IER) Enables the corresponding interrupt. */\r
+#define SPI_IER_ENDRX               (0x1u <<  4) /**< \brief (SPI_IER) End of Receive Buffer Interrupt Enable */\r
+#define   SPI_IER_ENDRX_0           (0x0u <<  4) /**< \brief (SPI_IER) No effect. */\r
+#define   SPI_IER_ENDRX_1           (0x1u <<  4) /**< \brief (SPI_IER) Enables the corresponding interrupt. */\r
+#define SPI_IER_ENDTX               (0x1u <<  5) /**< \brief (SPI_IER) End of Transmit Buffer Interrupt Enable */\r
+#define   SPI_IER_ENDTX_0           (0x0u <<  5) /**< \brief (SPI_IER) No effect. */\r
+#define   SPI_IER_ENDTX_1           (0x1u <<  5) /**< \brief (SPI_IER) Enables the corresponding interrupt. */\r
+#define SPI_IER_RXBUFF              (0x1u <<  6) /**< \brief (SPI_IER) Receive Buffer Full Interrupt Enable */\r
+#define   SPI_IER_RXBUFF_0          (0x0u <<  6) /**< \brief (SPI_IER) No effect. */\r
+#define   SPI_IER_RXBUFF_1          (0x1u <<  6) /**< \brief (SPI_IER) Enables the corresponding interrupt. */\r
+#define SPI_IER_TXBUFE              (0x1u <<  7) /**< \brief (SPI_IER) Transmit Buffer Empty Interrupt Enable */\r
+#define   SPI_IER_TXBUFE_0          (0x0u <<  7) /**< \brief (SPI_IER) No effect. */\r
+#define   SPI_IER_TXBUFE_1          (0x1u <<  7) /**< \brief (SPI_IER) Enables the corresponding interrupt. */\r
+#define SPI_IER_NSSR                (0x1u <<  8) /**< \brief (SPI_IER) NSS Rising Interrupt Enable */\r
+#define   SPI_IER_NSSR_0            (0x0u <<  8) /**< \brief (SPI_IER) No effect. */\r
+#define   SPI_IER_NSSR_1            (0x1u <<  8) /**< \brief (SPI_IER) Enables the corresponding interrupt. */\r
+#define SPI_IER_TXEMPTY             (0x1u <<  9) /**< \brief (SPI_IER) Transmission Registers Empty Enable */\r
+#define   SPI_IER_TXEMPTY_0         (0x0u <<  9) /**< \brief (SPI_IER) No effect. */\r
+#define   SPI_IER_TXEMPTY_1         (0x1u <<  9) /**< \brief (SPI_IER) Enables the corresponding interrupt. */\r
+#define SPI_IER_UNDES               (0x1u << 10) /**< \brief (SPI_IER) Underrun Error Interrupt Enable */\r
+/* -------- SPI_IDR : (SPI Offset: 0x18) Interrupt Disable Register -------- */\r
+#define SPI_IDR_RDRF                (0x1u <<  0) /**< \brief (SPI_IDR) Receive Data Register Full Interrupt Disable */\r
+#define   SPI_IDR_RDRF_0            (0x0u <<  0) /**< \brief (SPI_IDR) No effect. */\r
+#define   SPI_IDR_RDRF_1            (0x1u <<  0) /**< \brief (SPI_IDR) Disables the corresponding interrupt. */\r
+#define SPI_IDR_TDRE                (0x1u <<  1) /**< \brief (SPI_IDR) Transmit Data Register Empty Interrupt Disable */\r
+#define   SPI_IDR_TDRE_0            (0x0u <<  1) /**< \brief (SPI_IDR) No effect. */\r
+#define   SPI_IDR_TDRE_1            (0x1u <<  1) /**< \brief (SPI_IDR) Disables the corresponding interrupt. */\r
+#define SPI_IDR_MODF                (0x1u <<  2) /**< \brief (SPI_IDR) Mode Fault Error Interrupt Disable */\r
+#define   SPI_IDR_MODF_0            (0x0u <<  2) /**< \brief (SPI_IDR) No effect. */\r
+#define   SPI_IDR_MODF_1            (0x1u <<  2) /**< \brief (SPI_IDR) Disables the corresponding interrupt. */\r
+#define SPI_IDR_OVRES               (0x1u <<  3) /**< \brief (SPI_IDR) Overrun Error Interrupt Disable */\r
+#define   SPI_IDR_OVRES_0           (0x0u <<  3) /**< \brief (SPI_IDR) No effect. */\r
+#define   SPI_IDR_OVRES_1           (0x1u <<  3) /**< \brief (SPI_IDR) Disables the corresponding interrupt. */\r
+#define SPI_IDR_ENDRX               (0x1u <<  4) /**< \brief (SPI_IDR) End of Receive Buffer Interrupt Disable */\r
+#define   SPI_IDR_ENDRX_0           (0x0u <<  4) /**< \brief (SPI_IDR) No effect. */\r
+#define   SPI_IDR_ENDRX_1           (0x1u <<  4) /**< \brief (SPI_IDR) Disables the corresponding interrupt. */\r
+#define SPI_IDR_ENDTX               (0x1u <<  5) /**< \brief (SPI_IDR) End of Transmit Buffer Interrupt Disable */\r
+#define   SPI_IDR_ENDTX_0           (0x0u <<  5) /**< \brief (SPI_IDR) No effect. */\r
+#define   SPI_IDR_ENDTX_1           (0x1u <<  5) /**< \brief (SPI_IDR) Disables the corresponding interrupt. */\r
+#define SPI_IDR_RXBUFF              (0x1u <<  6) /**< \brief (SPI_IDR) Receive Buffer Full Interrupt Disable */\r
+#define   SPI_IDR_RXBUFF_0          (0x0u <<  6) /**< \brief (SPI_IDR) No effect. */\r
+#define   SPI_IDR_RXBUFF_1          (0x1u <<  6) /**< \brief (SPI_IDR) Disables the corresponding interrupt. */\r
+#define SPI_IDR_TXBUFE              (0x1u <<  7) /**< \brief (SPI_IDR) Transmit Buffer Empty Interrupt Disable */\r
+#define   SPI_IDR_TXBUFE_0          (0x0u <<  7) /**< \brief (SPI_IDR) No effect. */\r
+#define   SPI_IDR_TXBUFE_1          (0x1u <<  7) /**< \brief (SPI_IDR) Disables the corresponding interrupt. */\r
+#define SPI_IDR_NSSR                (0x1u <<  8) /**< \brief (SPI_IDR) NSS Rising Interrupt Disable */\r
+#define   SPI_IDR_NSSR_0            (0x0u <<  8) /**< \brief (SPI_IDR) No effect. */\r
+#define   SPI_IDR_NSSR_1            (0x1u <<  8) /**< \brief (SPI_IDR) Disables the corresponding interrupt. */\r
+#define SPI_IDR_TXEMPTY             (0x1u <<  9) /**< \brief (SPI_IDR) Transmission Registers Empty Disable */\r
+#define   SPI_IDR_TXEMPTY_0         (0x0u <<  9) /**< \brief (SPI_IDR) No effect. */\r
+#define   SPI_IDR_TXEMPTY_1         (0x1u <<  9) /**< \brief (SPI_IDR) Disables the corresponding interrupt. */\r
+#define SPI_IDR_UNDES               (0x1u << 10) /**< \brief (SPI_IDR) Underrun Error Interrupt Disable */\r
+/* -------- SPI_IMR : (SPI Offset: 0x1C) Interrupt Mask Register -------- */\r
+#define SPI_IMR_RDRF                (0x1u <<  0) /**< \brief (SPI_IMR) Receive Data Register Full Interrupt Mask */\r
+#define   SPI_IMR_RDRF_0            (0x0u <<  0) /**< \brief (SPI_IMR) The corresponding interrupt is not enabled. */\r
+#define   SPI_IMR_RDRF_1            (0x1u <<  0) /**< \brief (SPI_IMR) The corresponding interrupt is enabled. */\r
+#define SPI_IMR_TDRE                (0x1u <<  1) /**< \brief (SPI_IMR) Transmit Data Register Empty Interrupt Mask */\r
+#define   SPI_IMR_TDRE_0            (0x0u <<  1) /**< \brief (SPI_IMR) The corresponding interrupt is not enabled. */\r
+#define   SPI_IMR_TDRE_1            (0x1u <<  1) /**< \brief (SPI_IMR) The corresponding interrupt is enabled. */\r
+#define SPI_IMR_MODF                (0x1u <<  2) /**< \brief (SPI_IMR) Mode Fault Error Interrupt Mask */\r
+#define   SPI_IMR_MODF_0            (0x0u <<  2) /**< \brief (SPI_IMR) The corresponding interrupt is not enabled. */\r
+#define   SPI_IMR_MODF_1            (0x1u <<  2) /**< \brief (SPI_IMR) The corresponding interrupt is enabled. */\r
+#define SPI_IMR_OVRES               (0x1u <<  3) /**< \brief (SPI_IMR) Overrun Error Interrupt Mask */\r
+#define   SPI_IMR_OVRES_0           (0x0u <<  3) /**< \brief (SPI_IMR) The corresponding interrupt is not enabled. */\r
+#define   SPI_IMR_OVRES_1           (0x1u <<  3) /**< \brief (SPI_IMR) The corresponding interrupt is enabled. */\r
+#define SPI_IMR_ENDRX               (0x1u <<  4) /**< \brief (SPI_IMR) End of Receive Buffer Interrupt Mask */\r
+#define   SPI_IMR_ENDRX_0           (0x0u <<  4) /**< \brief (SPI_IMR) The corresponding interrupt is not enabled. */\r
+#define   SPI_IMR_ENDRX_1           (0x1u <<  4) /**< \brief (SPI_IMR) The corresponding interrupt is enabled. */\r
+#define SPI_IMR_ENDTX               (0x1u <<  5) /**< \brief (SPI_IMR) End of Transmit Buffer Interrupt Mask */\r
+#define   SPI_IMR_ENDTX_0           (0x0u <<  5) /**< \brief (SPI_IMR) The corresponding interrupt is not enabled. */\r
+#define   SPI_IMR_ENDTX_1           (0x1u <<  5) /**< \brief (SPI_IMR) The corresponding interrupt is enabled. */\r
+#define SPI_IMR_RXBUFF              (0x1u <<  6) /**< \brief (SPI_IMR) Receive Buffer Full Interrupt Mask */\r
+#define   SPI_IMR_RXBUFF_0          (0x0u <<  6) /**< \brief (SPI_IMR) The corresponding interrupt is not enabled. */\r
+#define   SPI_IMR_RXBUFF_1          (0x1u <<  6) /**< \brief (SPI_IMR) The corresponding interrupt is enabled. */\r
+#define SPI_IMR_TXBUFE              (0x1u <<  7) /**< \brief (SPI_IMR) Transmit Buffer Empty Interrupt Mask */\r
+#define   SPI_IMR_TXBUFE_0          (0x0u <<  7) /**< \brief (SPI_IMR) The corresponding interrupt is not enabled. */\r
+#define   SPI_IMR_TXBUFE_1          (0x1u <<  7) /**< \brief (SPI_IMR) The corresponding interrupt is enabled. */\r
+#define SPI_IMR_NSSR                (0x1u <<  8) /**< \brief (SPI_IMR) NSS Rising Interrupt Mask */\r
+#define   SPI_IMR_NSSR_0            (0x0u <<  8) /**< \brief (SPI_IMR) The corresponding interrupt is not enabled. */\r
+#define   SPI_IMR_NSSR_1            (0x1u <<  8) /**< \brief (SPI_IMR) The corresponding interrupt is enabled. */\r
+#define SPI_IMR_TXEMPTY             (0x1u <<  9) /**< \brief (SPI_IMR) Transmission Registers Empty Mask */\r
+#define   SPI_IMR_TXEMPTY_0         (0x0u <<  9) /**< \brief (SPI_IMR) The corresponding interrupt is not enabled. */\r
+#define   SPI_IMR_TXEMPTY_1         (0x1u <<  9) /**< \brief (SPI_IMR) The corresponding interrupt is enabled. */\r
+#define SPI_IMR_UNDES               (0x1u << 10) /**< \brief (SPI_IMR) Underrun Error Interrupt Mask */\r
+/* -------- SPI_CSR0 : (SPI Offset: 0x30) Chip Select Register 0 -------- */\r
+#define SPI_CSR0_CPOL               (0x1u <<  0) /**< \brief (SPI_CSR0) Clock Polarity */\r
+#define SPI_CSR_CPOL                (0x1u <<  0) /**< \brief (Unified SPI_CSR) Clock Polarity */\r
+#define   SPI_CSR0_CPOL_0           (0x0u <<  0) /**< \brief (SPI_CSR0) The inactive state value of SPCK is logic level zero. */\r
+#define   SPI_CSR_CPOL_0            (0x0u <<  0) /**< \brief (Unified SPI_CSR) The inactive state value of SPCK is logic level zero. */\r
+#define   SPI_CSR0_CPOL_1           (0x1u <<  0) /**< \brief (SPI_CSR0) The inactive state value of SPCK is logic level one.CPOL is used to determine the inactive state value of the serial clock (SPCK). It is used with NCPHA to produce therequired clock/data relationship between master and slave devices. */\r
+#define   SPI_CSR_CPOL_1            (0x1u <<  0) /**< \brief (Unified SPI_CSR) The inactive state value of SPCK is logic level one.CPOL is used to determine the inactive state value of the serial clock (SPCK). It is used with NCPHA to produce therequired clock/data relationship between master and slave devices. */\r
+#define SPI_CSR0_NCPHA              (0x1u <<  1) /**< \brief (SPI_CSR0) Clock Phase */\r
+#define SPI_CSR_NCPHA               (0x1u <<  1) /**< \brief (Unified SPI_CSR) Clock Phase */\r
+#define   SPI_CSR0_NCPHA_0          (0x0u <<  1) /**< \brief (SPI_CSR0) Data is changed on the leading edge of SPCK and captured on the following edge of SPCK. */\r
+#define   SPI_CSR_NCPHA_0           (0x0u <<  1) /**< \brief (Unified SPI_CSR) Data is changed on the leading edge of SPCK and captured on the following edge of SPCK. */\r
+#define   SPI_CSR0_NCPHA_1          (0x1u <<  1) /**< \brief (SPI_CSR0) Data is captured on the leading edge of SPCK and changed on the following edge of SPCK.NCPHA determines which edge of SPCK causes data to change and which edge causes data to be captured. NCPHA isused with CPOL to produce the required clock/data relationship between master and slave devices. */\r
+#define   SPI_CSR_NCPHA_1           (0x1u <<  1) /**< \brief (Unified SPI_CSR) Data is captured on the leading edge of SPCK and changed on the following edge of SPCK.NCPHA determines which edge of SPCK causes data to change and which edge causes data to be captured. NCPHA isused with CPOL to produce the required clock/data relationship between master and slave devices. */\r
+#define SPI_CSR0_CSNAAT             (0x1u <<  2) /**< \brief (SPI_CSR0) Chip Select Not Active After Transfer */\r
+#define SPI_CSR_CSNAAT              (0x1u <<  2) /**< \brief (Unified SPI_CSR) Chip Select Not Active After Transfer */\r
+#define SPI_CSR0_CSAAT              (0x1u <<  3) /**< \brief (SPI_CSR0) Chip Select Active After Transfer */\r
+#define SPI_CSR_CSAAT               (0x1u <<  3) /**< \brief (Unified SPI_CSR) Chip Select Active After Transfer */\r
+#define   SPI_CSR0_CSAAT_0          (0x0u <<  3) /**< \brief (SPI_CSR0) The Peripheral Chip Select Line rises as soon as the last transfer is achieved. */\r
+#define   SPI_CSR_CSAAT_0           (0x0u <<  3) /**< \brief (Unified SPI_CSR) The Peripheral Chip Select Line rises as soon as the last transfer is achieved. */\r
+#define   SPI_CSR0_CSAAT_1          (0x1u <<  3) /**< \brief (SPI_CSR0) The Peripheral Chip Select does not rise after the last transfer is achieved. It remains active until a new transfer isrequested on a different chip select. */\r
+#define   SPI_CSR_CSAAT_1           (0x1u <<  3) /**< \brief (Unified SPI_CSR) The Peripheral Chip Select does not rise after the last transfer is achieved. It remains active until a new transfer isrequested on a different chip select. */\r
+#define SPI_CSR0_BITS_Pos           4\r
+#define SPI_CSR0_BITS_Msk           (0xFu << SPI_CSR0_BITS_Pos) /**< \brief (SPI_CSR0) Bits Per Transfer */\r
+#define SPI_CSR0_BITS(value)        ((SPI_CSR0_BITS_Msk & ((value) << SPI_CSR0_BITS_Pos)))\r
+#define SPI_CSR_BITS_Pos            4\r
+#define SPI_CSR_BITS_Msk            (0xFu << SPI_CSR0_BITS_Pos) /**< \brief (SPI_CSR0) Bits Per Transfer */\r
+#define SPI_CSR_BITS(value)         ((SPI_CSR_BITS_Msk & ((value) << SPI_CSR_BITS_Pos)))\r
+#define   SPI_CSR0_BITS_8_BPT       (0x0u <<  4) /**< \brief (SPI_CSR0) 8 bits per transfer */\r
+#define   SPI_CSR_BITS_8_BPT        (0x0u <<  4) /**< \brief (Unified SPI_CSR) 8 bits per transfer */\r
+#define   SPI_CSR0_BITS_9_BPT       (0x1u <<  4) /**< \brief (SPI_CSR0) 9 bits per transfer */\r
+#define   SPI_CSR_BITS_9_BPT        (0x1u <<  4) /**< \brief (Unified SPI_CSR) 9 bits per transfer */\r
+#define   SPI_CSR0_BITS_10_BPT      (0x2u <<  4) /**< \brief (SPI_CSR0) 10 bits per transfer */\r
+#define   SPI_CSR_BITS_10_BPT       (0x2u <<  4) /**< \brief (Unified SPI_CSR) 10 bits per transfer */\r
+#define   SPI_CSR0_BITS_11_BPT      (0x3u <<  4) /**< \brief (SPI_CSR0) 11 bits per transfer */\r
+#define   SPI_CSR_BITS_11_BPT       (0x3u <<  4) /**< \brief (Unified SPI_CSR) 11 bits per transfer */\r
+#define   SPI_CSR0_BITS_12_BPT      (0x4u <<  4) /**< \brief (SPI_CSR0) 12 bits per transfer */\r
+#define   SPI_CSR_BITS_12_BPT       (0x4u <<  4) /**< \brief (Unified SPI_CSR) 12 bits per transfer */\r
+#define   SPI_CSR0_BITS_13_BPT      (0x5u <<  4) /**< \brief (SPI_CSR0) 13 bits per transfer */\r
+#define   SPI_CSR_BITS_13_BPT       (0x5u <<  4) /**< \brief (Unified SPI_CSR) 13 bits per transfer */\r
+#define   SPI_CSR0_BITS_14_BPT      (0x6u <<  4) /**< \brief (SPI_CSR0) 14 bits per transfer */\r
+#define   SPI_CSR_BITS_14_BPT       (0x6u <<  4) /**< \brief (Unified SPI_CSR) 14 bits per transfer */\r
+#define   SPI_CSR0_BITS_15_BPT      (0x7u <<  4) /**< \brief (SPI_CSR0) 15 bits per transfer */\r
+#define   SPI_CSR_BITS_15_BPT       (0x7u <<  4) /**< \brief (Unified SPI_CSR) 15 bits per transfer */\r
+#define   SPI_CSR0_BITS_16_BPT      (0x8u <<  4) /**< \brief (SPI_CSR0) 16 bits per transfer */\r
+#define   SPI_CSR_BITS_16_BPT       (0x8u <<  4) /**< \brief (Unified SPI_CSR) 16 bits per transfer */\r
+#define SPI_CSR0_SCBR_Pos           8\r
+#define SPI_CSR0_SCBR_Msk           (0xFFu << SPI_CSR0_SCBR_Pos) /**< \brief (SPI_CSR0) Serial Clock Baud Rate */\r
+#define SPI_CSR0_SCBR(value)        ((SPI_CSR0_SCBR_Msk & ((value) << SPI_CSR0_SCBR_Pos)))\r
+#define SPI_CSR_SCBR_Pos            8\r
+#define SPI_CSR_SCBR_Msk            (0xFFu << SPI_CSR0_SCBR_Pos) /**< \brief (SPI_CSR0) Serial Clock Baud Rate */\r
+#define SPI_CSR_SCBR(value)         ((SPI_CSR_SCBR_Msk & ((value) << SPI_CSR_SCBR_Pos)))\r
+#define SPI_CSR0_DLYBS_Pos          16\r
+#define SPI_CSR0_DLYBS_Msk          (0xFFu << SPI_CSR0_DLYBS_Pos) /**< \brief (SPI_CSR0) Delay Before SPCK */\r
+#define SPI_CSR0_DLYBS(value)       ((SPI_CSR0_DLYBS_Msk & ((value) << SPI_CSR0_DLYBS_Pos)))\r
+#define SPI_CSR_DLYBS_Pos           16\r
+#define SPI_CSR_DLYBS_Msk           (0xFFu << SPI_CSR0_DLYBS_Pos) /**< \brief (SPI_CSR0) Delay Before SPCK */\r
+#define SPI_CSR_DLYBS(value)        ((SPI_CSR_DLYBS_Msk & ((value) << SPI_CSR_DLYBS_Pos)))\r
+#define SPI_CSR0_DLYBCT_Pos         24\r
+#define SPI_CSR0_DLYBCT_Msk         (0xFFu << SPI_CSR0_DLYBCT_Pos) /**< \brief (SPI_CSR0) Delay Between Consecutive Transfers */\r
+#define SPI_CSR0_DLYBCT(value)      ((SPI_CSR0_DLYBCT_Msk & ((value) << SPI_CSR0_DLYBCT_Pos)))\r
+#define SPI_CSR_DLYBCT_Pos          24\r
+#define SPI_CSR_DLYBCT_Msk          (0xFFu << SPI_CSR0_DLYBCT_Pos) /**< \brief (SPI_CSR0) Delay Between Consecutive Transfers */\r
+#define SPI_CSR_DLYBCT(value)       ((SPI_CSR_DLYBCT_Msk & ((value) << SPI_CSR_DLYBCT_Pos)))\r
+/* -------- SPI_CSR1 : (SPI Offset: 0x34) Chip Select Register 1 -------- */\r
+#define SPI_CSR1_CPOL               (0x1u <<  0) /**< \brief (SPI_CSR1) Clock Polarity */\r
+#define   SPI_CSR1_CPOL_0           (0x0u <<  0) /**< \brief (SPI_CSR1) The inactive state value of SPCK is logic level zero. */\r
+#define   SPI_CSR1_CPOL_1           (0x1u <<  0) /**< \brief (SPI_CSR1) The inactive state value of SPCK is logic level one.CPOL is used to determine the inactive state value of the serial clock (SPCK). It is used with NCPHA to produce therequired clock/data relationship between master and slave devices. */\r
+#define SPI_CSR1_NCPHA              (0x1u <<  1) /**< \brief (SPI_CSR1) Clock Phase */\r
+#define   SPI_CSR1_NCPHA_0          (0x0u <<  1) /**< \brief (SPI_CSR1) Data is changed on the leading edge of SPCK and captured on the following edge of SPCK. */\r
+#define   SPI_CSR1_NCPHA_1          (0x1u <<  1) /**< \brief (SPI_CSR1) Data is captured on the leading edge of SPCK and changed on the following edge of SPCK.NCPHA determines which edge of SPCK causes data to change and which edge causes data to be captured. NCPHA isused with CPOL to produce the required clock/data relationship between master and slave devices. */\r
+#define SPI_CSR1_CSNAAT             (0x1u <<  2) /**< \brief (SPI_CSR1) Chip Select Not Active After Transfer */\r
+#define SPI_CSR1_CSAAT              (0x1u <<  3) /**< \brief (SPI_CSR1) Chip Select Active After Transfer */\r
+#define   SPI_CSR1_CSAAT_0          (0x0u <<  3) /**< \brief (SPI_CSR1) The Peripheral Chip Select Line rises as soon as the last transfer is achieved. */\r
+#define   SPI_CSR1_CSAAT_1          (0x1u <<  3) /**< \brief (SPI_CSR1) The Peripheral Chip Select does not rise after the last transfer is achieved. It remains active until a new transfer isrequested on a different chip select. */\r
+#define SPI_CSR1_BITS_Pos           4\r
+#define SPI_CSR1_BITS_Msk           (0xFu << SPI_CSR1_BITS_Pos) /**< \brief (SPI_CSR1) Bits Per Transfer */\r
+#define SPI_CSR1_BITS(value)        ((SPI_CSR1_BITS_Msk & ((value) << SPI_CSR1_BITS_Pos)))\r
+#define   SPI_CSR1_BITS_8_BPT       (0x0u <<  4) /**< \brief (SPI_CSR1) 8 bits per transfer */\r
+#define   SPI_CSR1_BITS_9_BPT       (0x1u <<  4) /**< \brief (SPI_CSR1) 9 bits per transfer */\r
+#define   SPI_CSR1_BITS_10_BPT      (0x2u <<  4) /**< \brief (SPI_CSR1) 10 bits per transfer */\r
+#define   SPI_CSR1_BITS_11_BPT      (0x3u <<  4) /**< \brief (SPI_CSR1) 11 bits per transfer */\r
+#define   SPI_CSR1_BITS_12_BPT      (0x4u <<  4) /**< \brief (SPI_CSR1) 12 bits per transfer */\r
+#define   SPI_CSR1_BITS_13_BPT      (0x5u <<  4) /**< \brief (SPI_CSR1) 13 bits per transfer */\r
+#define   SPI_CSR1_BITS_14_BPT      (0x6u <<  4) /**< \brief (SPI_CSR1) 14 bits per transfer */\r
+#define   SPI_CSR1_BITS_15_BPT      (0x7u <<  4) /**< \brief (SPI_CSR1) 15 bits per transfer */\r
+#define   SPI_CSR1_BITS_16_BPT      (0x8u <<  4) /**< \brief (SPI_CSR1) 16 bits per transfer */\r
+#define SPI_CSR1_SCBR_Pos           8\r
+#define SPI_CSR1_SCBR_Msk           (0xFFu << SPI_CSR1_SCBR_Pos) /**< \brief (SPI_CSR1) Serial Clock Baud Rate */\r
+#define SPI_CSR1_SCBR(value)        ((SPI_CSR1_SCBR_Msk & ((value) << SPI_CSR1_SCBR_Pos)))\r
+#define SPI_CSR1_DLYBS_Pos          16\r
+#define SPI_CSR1_DLYBS_Msk          (0xFFu << SPI_CSR1_DLYBS_Pos) /**< \brief (SPI_CSR1) Delay Before SPCK */\r
+#define SPI_CSR1_DLYBS(value)       ((SPI_CSR1_DLYBS_Msk & ((value) << SPI_CSR1_DLYBS_Pos)))\r
+#define SPI_CSR1_DLYBCT_Pos         24\r
+#define SPI_CSR1_DLYBCT_Msk         (0xFFu << SPI_CSR1_DLYBCT_Pos) /**< \brief (SPI_CSR1) Delay Between Consecutive Transfers */\r
+#define SPI_CSR1_DLYBCT(value)      ((SPI_CSR1_DLYBCT_Msk & ((value) << SPI_CSR1_DLYBCT_Pos)))\r
+/* -------- SPI_CSR2 : (SPI Offset: 0x38) Chip Select Register 2 -------- */\r
+#define SPI_CSR2_CPOL               (0x1u <<  0) /**< \brief (SPI_CSR2) Clock Polarity */\r
+#define   SPI_CSR2_CPOL_0           (0x0u <<  0) /**< \brief (SPI_CSR2) The inactive state value of SPCK is logic level zero. */\r
+#define   SPI_CSR2_CPOL_1           (0x1u <<  0) /**< \brief (SPI_CSR2) The inactive state value of SPCK is logic level one.CPOL is used to determine the inactive state value of the serial clock (SPCK). It is used with NCPHA to produce therequired clock/data relationship between master and slave devices. */\r
+#define SPI_CSR2_NCPHA              (0x1u <<  1) /**< \brief (SPI_CSR2) Clock Phase */\r
+#define   SPI_CSR2_NCPHA_0          (0x0u <<  1) /**< \brief (SPI_CSR2) Data is changed on the leading edge of SPCK and captured on the following edge of SPCK. */\r
+#define   SPI_CSR2_NCPHA_1          (0x1u <<  1) /**< \brief (SPI_CSR2) Data is captured on the leading edge of SPCK and changed on the following edge of SPCK.NCPHA determines which edge of SPCK causes data to change and which edge causes data to be captured. NCPHA isused with CPOL to produce the required clock/data relationship between master and slave devices. */\r
+#define SPI_CSR2_CSNAAT             (0x1u <<  2) /**< \brief (SPI_CSR2) Chip Select Not Active After Transfer */\r
+#define SPI_CSR2_CSAAT              (0x1u <<  3) /**< \brief (SPI_CSR2) Chip Select Active After Transfer */\r
+#define   SPI_CSR2_CSAAT_0          (0x0u <<  3) /**< \brief (SPI_CSR2) The Peripheral Chip Select Line rises as soon as the last transfer is achieved. */\r
+#define   SPI_CSR2_CSAAT_1          (0x1u <<  3) /**< \brief (SPI_CSR2) The Peripheral Chip Select does not rise after the last transfer is achieved. It remains active until a new transfer isrequested on a different chip select. */\r
+#define SPI_CSR2_BITS_Pos           4\r
+#define SPI_CSR2_BITS_Msk           (0xFu << SPI_CSR2_BITS_Pos) /**< \brief (SPI_CSR2) Bits Per Transfer */\r
+#define SPI_CSR2_BITS(value)        ((SPI_CSR2_BITS_Msk & ((value) << SPI_CSR2_BITS_Pos)))\r
+#define   SPI_CSR2_BITS_8_BPT       (0x0u <<  4) /**< \brief (SPI_CSR2) 8 bits per transfer */\r
+#define   SPI_CSR2_BITS_9_BPT       (0x1u <<  4) /**< \brief (SPI_CSR2) 9 bits per transfer */\r
+#define   SPI_CSR2_BITS_10_BPT      (0x2u <<  4) /**< \brief (SPI_CSR2) 10 bits per transfer */\r
+#define   SPI_CSR2_BITS_11_BPT      (0x3u <<  4) /**< \brief (SPI_CSR2) 11 bits per transfer */\r
+#define   SPI_CSR2_BITS_12_BPT      (0x4u <<  4) /**< \brief (SPI_CSR2) 12 bits per transfer */\r
+#define   SPI_CSR2_BITS_13_BPT      (0x5u <<  4) /**< \brief (SPI_CSR2) 13 bits per transfer */\r
+#define   SPI_CSR2_BITS_14_BPT      (0x6u <<  4) /**< \brief (SPI_CSR2) 14 bits per transfer */\r
+#define   SPI_CSR2_BITS_15_BPT      (0x7u <<  4) /**< \brief (SPI_CSR2) 15 bits per transfer */\r
+#define   SPI_CSR2_BITS_16_BPT      (0x8u <<  4) /**< \brief (SPI_CSR2) 16 bits per transfer */\r
+#define SPI_CSR2_SCBR_Pos           8\r
+#define SPI_CSR2_SCBR_Msk           (0xFFu << SPI_CSR2_SCBR_Pos) /**< \brief (SPI_CSR2) Serial Clock Baud Rate */\r
+#define SPI_CSR2_SCBR(value)        ((SPI_CSR2_SCBR_Msk & ((value) << SPI_CSR2_SCBR_Pos)))\r
+#define SPI_CSR2_DLYBS_Pos          16\r
+#define SPI_CSR2_DLYBS_Msk          (0xFFu << SPI_CSR2_DLYBS_Pos) /**< \brief (SPI_CSR2) Delay Before SPCK */\r
+#define SPI_CSR2_DLYBS(value)       ((SPI_CSR2_DLYBS_Msk & ((value) << SPI_CSR2_DLYBS_Pos)))\r
+#define SPI_CSR2_DLYBCT_Pos         24\r
+#define SPI_CSR2_DLYBCT_Msk         (0xFFu << SPI_CSR2_DLYBCT_Pos) /**< \brief (SPI_CSR2) Delay Between Consecutive Transfers */\r
+#define SPI_CSR2_DLYBCT(value)      ((SPI_CSR2_DLYBCT_Msk & ((value) << SPI_CSR2_DLYBCT_Pos)))\r
+/* -------- SPI_CSR3 : (SPI Offset: 0x3C) Chip Select Register 3 -------- */\r
+#define SPI_CSR3_CPOL               (0x1u <<  0) /**< \brief (SPI_CSR3) Clock Polarity */\r
+#define   SPI_CSR3_CPOL_0           (0x0u <<  0) /**< \brief (SPI_CSR3) The inactive state value of SPCK is logic level zero. */\r
+#define   SPI_CSR3_CPOL_1           (0x1u <<  0) /**< \brief (SPI_CSR3) The inactive state value of SPCK is logic level one.CPOL is used to determine the inactive state value of the serial clock (SPCK). It is used with NCPHA to produce therequired clock/data relationship between master and slave devices. */\r
+#define SPI_CSR3_NCPHA              (0x1u <<  1) /**< \brief (SPI_CSR3) Clock Phase */\r
+#define   SPI_CSR3_NCPHA_0          (0x0u <<  1) /**< \brief (SPI_CSR3) Data is changed on the leading edge of SPCK and captured on the following edge of SPCK. */\r
+#define   SPI_CSR3_NCPHA_1          (0x1u <<  1) /**< \brief (SPI_CSR3) Data is captured on the leading edge of SPCK and changed on the following edge of SPCK.NCPHA determines which edge of SPCK causes data to change and which edge causes data to be captured. NCPHA isused with CPOL to produce the required clock/data relationship between master and slave devices. */\r
+#define SPI_CSR3_CSNAAT             (0x1u <<  2) /**< \brief (SPI_CSR3) Chip Select Not Active After Transfer */\r
+#define SPI_CSR3_CSAAT              (0x1u <<  3) /**< \brief (SPI_CSR3) Chip Select Active After Transfer */\r
+#define   SPI_CSR3_CSAAT_0          (0x0u <<  3) /**< \brief (SPI_CSR3) The Peripheral Chip Select Line rises as soon as the last transfer is achieved. */\r
+#define   SPI_CSR3_CSAAT_1          (0x1u <<  3) /**< \brief (SPI_CSR3) The Peripheral Chip Select does not rise after the last transfer is achieved. It remains active until a new transfer isrequested on a different chip select. */\r
+#define SPI_CSR3_BITS_Pos           4\r
+#define SPI_CSR3_BITS_Msk           (0xFu << SPI_CSR3_BITS_Pos) /**< \brief (SPI_CSR3) Bits Per Transfer */\r
+#define SPI_CSR3_BITS(value)        ((SPI_CSR3_BITS_Msk & ((value) << SPI_CSR3_BITS_Pos)))\r
+#define   SPI_CSR3_BITS_8_BPT       (0x0u <<  4) /**< \brief (SPI_CSR3) 8 bits per transfer */\r
+#define   SPI_CSR3_BITS_9_BPT       (0x1u <<  4) /**< \brief (SPI_CSR3) 9 bits per transfer */\r
+#define   SPI_CSR3_BITS_10_BPT      (0x2u <<  4) /**< \brief (SPI_CSR3) 10 bits per transfer */\r
+#define   SPI_CSR3_BITS_11_BPT      (0x3u <<  4) /**< \brief (SPI_CSR3) 11 bits per transfer */\r
+#define   SPI_CSR3_BITS_12_BPT      (0x4u <<  4) /**< \brief (SPI_CSR3) 12 bits per transfer */\r
+#define   SPI_CSR3_BITS_13_BPT      (0x5u <<  4) /**< \brief (SPI_CSR3) 13 bits per transfer */\r
+#define   SPI_CSR3_BITS_14_BPT      (0x6u <<  4) /**< \brief (SPI_CSR3) 14 bits per transfer */\r
+#define   SPI_CSR3_BITS_15_BPT      (0x7u <<  4) /**< \brief (SPI_CSR3) 15 bits per transfer */\r
+#define   SPI_CSR3_BITS_16_BPT      (0x8u <<  4) /**< \brief (SPI_CSR3) 16 bits per transfer */\r
+#define SPI_CSR3_SCBR_Pos           8\r
+#define SPI_CSR3_SCBR_Msk           (0xFFu << SPI_CSR3_SCBR_Pos) /**< \brief (SPI_CSR3) Serial Clock Baud Rate */\r
+#define SPI_CSR3_SCBR(value)        ((SPI_CSR3_SCBR_Msk & ((value) << SPI_CSR3_SCBR_Pos)))\r
+#define SPI_CSR3_DLYBS_Pos          16\r
+#define SPI_CSR3_DLYBS_Msk          (0xFFu << SPI_CSR3_DLYBS_Pos) /**< \brief (SPI_CSR3) Delay Before SPCK */\r
+#define SPI_CSR3_DLYBS(value)       ((SPI_CSR3_DLYBS_Msk & ((value) << SPI_CSR3_DLYBS_Pos)))\r
+#define SPI_CSR3_DLYBCT_Pos         24\r
+#define SPI_CSR3_DLYBCT_Msk         (0xFFu << SPI_CSR3_DLYBCT_Pos) /**< \brief (SPI_CSR3) Delay Between Consecutive Transfers */\r
+#define SPI_CSR3_DLYBCT(value)      ((SPI_CSR3_DLYBCT_Msk & ((value) << SPI_CSR3_DLYBCT_Pos)))\r
+/* -------- SPI_WPCR : (SPI Offset: 0xE4) Write Protection control Register -------- */\r
+#define SPI_WPCR_SPIWPEN            (0x1u <<  0) /**< \brief (SPI_WPCR) SPI write Protection Enable */\r
+#define SPI_WPCR_SPIWPKEY_Pos       8\r
+#define SPI_WPCR_SPIWPKEY_Msk       (0xFFFFFFu << SPI_WPCR_SPIWPKEY_Pos) /**< \brief (SPI_WPCR) SPI write Protection Key Password */\r
+#define SPI_WPCR_SPIWPKEY(value)    ((SPI_WPCR_SPIWPKEY_Msk & ((value) << SPI_WPCR_SPIWPKEY_Pos)))\r
+#define   SPI_WPCR_SPIWPKEY_VALUE   (0x535049u <<  8) /**< \brief (SPI_WPCR) SPI Write Protection Key Password */\r
+/* -------- SPI_WPSR : (SPI Offset: 0xE8) Write Protection status Register -------- */\r
+#define SPI_WPSR_SPIWPVS_Pos        0\r
+#define SPI_WPSR_SPIWPVS_Msk        (0x7u << SPI_WPSR_SPIWPVS_Pos) /**< \brief (SPI_WPSR) SPI write protection Violation Status */\r
+#define SPI_WPSR_SPIWPVS(value)     ((SPI_WPSR_SPIWPVS_Msk & ((value) << SPI_WPSR_SPIWPVS_Pos)))\r
+#define   SPI_WPSR_SPIWPVS_WRITE_WITH_WP (0x1u <<  0) /**< \brief (SPI_WPSR) The Write Protection has blocked a Write access to a protected register (since the last read). */\r
+#define   SPI_WPSR_SPIWPVS_SWRST_WITH_WP (0x2u <<  0) /**< \brief (SPI_WPSR) Software Reset has been performed while Write Protection was enabled (since the last read or since the last write access on MR, IER, IDR or CSRx). */\r
+#define   SPI_WPSR_SPIWPVS_UNEXPECTED_WRITE (0x4u <<  0) /**< \brief (SPI_WPSR) Write accesses have been detected on MR (while a chip select was active) or on CSRi (while the Chip Select “i” was active) since the last read. */\r
+#define SPI_WPSR_SPIWPVSRC_Pos      8\r
+#define SPI_WPSR_SPIWPVSRC_Msk      (0xFFu << SPI_WPSR_SPIWPVSRC_Pos) /**< \brief (SPI_WPSR) SPI write Protection Violation source */\r
+#define SPI_WPSR_SPIWPVSRC(value)   ((SPI_WPSR_SPIWPVSRC_Msk & ((value) << SPI_WPSR_SPIWPVSRC_Pos)))\r
+/* -------- SPI_FEATURES : (SPI Offset: 0xF8) Features Register -------- */\r
+#define SPI_FEATURES_NCS_Pos        0\r
+#define SPI_FEATURES_NCS_Msk        (0xFu << SPI_FEATURES_NCS_Pos) /**< \brief (SPI_FEATURES) Number of Chip Selects */\r
+#define SPI_FEATURES_NCS(value)     ((SPI_FEATURES_NCS_Msk & ((value) << SPI_FEATURES_NCS_Pos)))\r
+#define SPI_FEATURES_PCONF          (0x1u <<  4) /**< \brief (SPI_FEATURES) Polarity is Configurable */\r
+#define SPI_FEATURES_PPNCONF        (0x1u <<  5) /**< \brief (SPI_FEATURES) Polarity is Positive if Polarity is not Configurable */\r
+#define SPI_FEATURES_PHCONF         (0x1u <<  6) /**< \brief (SPI_FEATURES) Phase is Configurable */\r
+#define SPI_FEATURES_PHZNCONF       (0x1u <<  7) /**< \brief (SPI_FEATURES) Phase is Zero if Phase is not Configurable */\r
+#define SPI_FEATURES_LENCONF        (0x1u <<  8) /**< \brief (SPI_FEATURES) Character Length is Configurable */\r
+#define SPI_FEATURES_LENNCONF_Pos    9\r
+#define SPI_FEATURES_LENNCONF_Msk    (0x7Fu << SPI_FEATURES_LENNCONF_Pos) /**< \brief (SPI_FEATURES) Character Length if not Configurable */\r
+#define SPI_FEATURES_LENNCONF(value) ((SPI_FEATURES_LENNCONF_Msk & ((value) << SPI_FEATURES_LENNCONF_Pos)))\r
+#define SPI_FEATURES_EXTDEC         (0x1u << 16) /**< \brief (SPI_FEATURES) External Decoder is True */\r
+#define SPI_FEATURES_CSNAATIMPL     (0x1u << 17) /**< \brief (SPI_FEATURES) CSNAAT Features are Implemented */\r
+#define SPI_FEATURES_BRPBHSB        (0x1u << 18) /**< \brief (SPI_FEATURES) Bridge Type is PB to HSB */\r
+#define SPI_FEATURES_FIFORIMPL      (0x1u << 19) /**< \brief (SPI_FEATURES) FIFO in Reception is Implemented */\r
+#define SPI_FEATURES_SWPIMPL        (0x1u << 20) /**< \brief (SPI_FEATURES) Spurious Write Protection is Implemented */\r
+/* -------- SPI_VERSION : (SPI Offset: 0xFC) Version Register -------- */\r
+#define SPI_VERSION_VERSION_Pos     0\r
+#define SPI_VERSION_VERSION_Msk     (0xFFFu << SPI_VERSION_VERSION_Pos) /**< \brief (SPI_VERSION) Version */\r
+#define SPI_VERSION_VERSION(value)  ((SPI_VERSION_VERSION_Msk & ((value) << SPI_VERSION_VERSION_Pos)))\r
+#define SPI_VERSION_MFN_Pos         16\r
+#define SPI_VERSION_MFN_Msk         (0x7u << SPI_VERSION_MFN_Pos) /**< \brief (SPI_VERSION) mfn */\r
+#define SPI_VERSION_MFN(value)      ((SPI_VERSION_MFN_Msk & ((value) << SPI_VERSION_MFN_Pos)))\r
+\r
+/*@}*/\r
+\r
+/* ============================================================================= */\r
+/**  SOFTWARE API DEFINITION FOR TC */\r
+/* ============================================================================= */\r
+/** \addtogroup SAM4L_TC Timer/Counter */\r
+/*@{*/\r
+\r
+#define REV_TC         0x402\r
+\r
+#ifndef __ASSEMBLY__\r
+/** \brief TcChannel hardware registers */\r
+typedef struct {\r
+  WoReg   TC_CCR;      /**< \brief (TcChannel Offset: 0x00) Channel Control Register Channel 0 */\r
+  RwReg   TC_CMR;      /**< \brief (TcChannel Offset: 0x04) Channel Mode Register Channel 0 */\r
+  RwReg   TC_SMC;      /**< \brief (TcChannel Offset: 0x08) Stepper Motor Mode Register */\r
+  RoReg   Reserved1[1];\r
+  RoReg   TC_CV;       /**< \brief (TcChannel Offset: 0x10) Counter Value Channel 0 */\r
+  RwReg   TC_RA;       /**< \brief (TcChannel Offset: 0x14) Register A Channel 0 */\r
+  RwReg   TC_RB;       /**< \brief (TcChannel Offset: 0x18) Register B Channel 0 */\r
+  RwReg   TC_RC;       /**< \brief (TcChannel Offset: 0x1C) Register C Channel 0 */\r
+  RoReg   TC_SR;       /**< \brief (TcChannel Offset: 0x20) Status Register Channel 0 */\r
+  WoReg   TC_IER;      /**< \brief (TcChannel Offset: 0x24) Interrupt Enable Register Channel 0 */\r
+  WoReg   TC_IDR;      /**< \brief (TcChannel Offset: 0x28) Interrupt Disable Register Channel 0 */\r
+  RoReg   TC_IMR;      /**< \brief (TcChannel Offset: 0x2C) Interrupt Mask Register Channel 0 */\r
+  RoReg   Reserved2[4];\r
+} TcChannel;\r
+/** \brief TC hardware registers */\r
+typedef struct {\r
+  TcChannel TC_CHANNEL[3]; /**< \brief (TC Offset: 0x00) TcChannel groups */\r
+  WoReg   TC_BCR;         /**< \brief (TC Offset: 0xC0) TC Block Control Register */\r
+  RwReg   TC_BMR;         /**< \brief (TC Offset: 0xC4) TC Block Mode Register */\r
+  RoReg   Reserved1[7];\r
+  RwReg   TC_WPMR;        /**< \brief (TC Offset: 0xE4) Write Protect Mode Register */\r
+  RoReg   Reserved2[4];\r
+  RoReg   TC_FEATURES;    /**< \brief (TC Offset: 0xF8) Features Register */\r
+  RoReg   TC_VERSION;     /**< \brief (TC Offset: 0xFC) Version Register */\r
+} Tc;\r
+#endif /* __ASSEMBLY__ */\r
+/* -------- TC_CCR : (TC Offset: 0x00) Channel Channel Control Register Channel 0 -------- */\r
+#define TC_CCR_CLKEN                (0x1u <<  0) /**< \brief (TC_CCR) Counter Clock Enable Command */\r
+#define   TC_CCR_CLKEN_0            (0x0u <<  0) /**< \brief (TC_CCR) No effect. */\r
+#define   TC_CCR_CLKEN_1            (0x1u <<  0) /**< \brief (TC_CCR) Enables the clock if CLKDIS is not 1. */\r
+#define TC_CCR_CLKDIS               (0x1u <<  1) /**< \brief (TC_CCR) Counter Clock Disable Command */\r
+#define   TC_CCR_CLKDIS_0           (0x0u <<  1) /**< \brief (TC_CCR) No effect. */\r
+#define   TC_CCR_CLKDIS_1           (0x1u <<  1) /**< \brief (TC_CCR) Disables the clock. */\r
+#define TC_CCR_SWTRG                (0x1u <<  2) /**< \brief (TC_CCR) Software Trigger Command */\r
+#define   TC_CCR_SWTRG_0            (0x0u <<  2) /**< \brief (TC_CCR) No effect. */\r
+#define   TC_CCR_SWTRG_1            (0x1u <<  2) /**< \brief (TC_CCR) A software trigger is performed:the counter is reset and clock is started. */\r
+/* -------- TC_CAPTURE_CMR : (TC Offset: 0x04) Channel Channel Mode Register Channel 0 -------- */\r
+#define TC_CAPTURE_CMR_TCCLKS_Pos    0\r
+#define TC_CAPTURE_CMR_TCCLKS_Msk    (0x7u << TC_CAPTURE_CMR_TCCLKS_Pos) /**< \brief (TC_CAPTURE_CMR) Clock Selection */\r
+#define TC_CAPTURE_CMR_TCCLKS(value) ((TC_CAPTURE_CMR_TCCLKS_Msk & ((value) << TC_CAPTURE_CMR_TCCLKS_Pos)))\r
+#define   TC_CAPTURE_CMR_TCCLKS_TIMER_CLOCK1 (0x0u <<  0) /**< \brief (TC_CAPTURE_CMR) TIMER_CLOCK1 */\r
+#define   TC_CAPTURE_CMR_TCCLKS_TIMER_CLOCK2 (0x1u <<  0) /**< \brief (TC_CAPTURE_CMR) TIMER_CLOCK2 */\r
+#define   TC_CAPTURE_CMR_TCCLKS_TIMER_CLOCK3 (0x2u <<  0) /**< \brief (TC_CAPTURE_CMR) TIMER_CLOCK3 */\r
+#define   TC_CAPTURE_CMR_TCCLKS_TIMER_CLOCK4 (0x3u <<  0) /**< \brief (TC_CAPTURE_CMR) TIMER_CLOCK4 */\r
+#define   TC_CAPTURE_CMR_TCCLKS_TIMER_CLOCK5 (0x4u <<  0) /**< \brief (TC_CAPTURE_CMR) TIMER_CLOCK5 */\r
+#define   TC_CAPTURE_CMR_TCCLKS_XC0 (0x5u <<  0) /**< \brief (TC_CAPTURE_CMR) XC0 */\r
+#define   TC_CAPTURE_CMR_TCCLKS_XC1 (0x6u <<  0) /**< \brief (TC_CAPTURE_CMR) XC1 */\r
+#define   TC_CAPTURE_CMR_TCCLKS_XC2 (0x7u <<  0) /**< \brief (TC_CAPTURE_CMR) XC2 */\r
+#define TC_CAPTURE_CMR_CLKI         (0x1u <<  3) /**< \brief (TC_CAPTURE_CMR) Clock Invert */\r
+#define   TC_CAPTURE_CMR_CLKI_0     (0x0u <<  3) /**< \brief (TC_CAPTURE_CMR) Counter is incremented on rising edge of the clock. */\r
+#define   TC_CAPTURE_CMR_CLKI_1     (0x1u <<  3) /**< \brief (TC_CAPTURE_CMR) Counter is incremented on falling edge of the clock. */\r
+#define TC_CAPTURE_CMR_BURST_Pos    4\r
+#define TC_CAPTURE_CMR_BURST_Msk    (0x3u << TC_CAPTURE_CMR_BURST_Pos) /**< \brief (TC_CAPTURE_CMR) Burst Signal Selection */\r
+#define TC_CAPTURE_CMR_BURST(value) ((TC_CAPTURE_CMR_BURST_Msk & ((value) << TC_CAPTURE_CMR_BURST_Pos)))\r
+#define   TC_CAPTURE_CMR_BURST_NOT_GATED (0x0u <<  4) /**< \brief (TC_CAPTURE_CMR) The clock is not gated by an external signal. */\r
+#define   TC_CAPTURE_CMR_BURST_CLK_AND_XC0 (0x1u <<  4) /**< \brief (TC_CAPTURE_CMR) XC0 is ANDed with the selected clock. */\r
+#define   TC_CAPTURE_CMR_BURST_CLK_AND_XC1 (0x2u <<  4) /**< \brief (TC_CAPTURE_CMR) XC1 is ANDed with the selected clock. */\r
+#define   TC_CAPTURE_CMR_BURST_CLK_AND_XC2 (0x3u <<  4) /**< \brief (TC_CAPTURE_CMR) XC2 is ANDed with the selected clock. */\r
+#define TC_CAPTURE_CMR_LDBSTOP      (0x1u <<  6) /**< \brief (TC_CAPTURE_CMR) Counter Clock Stopped with RB Loading */\r
+#define   TC_CAPTURE_CMR_LDBSTOP_0  (0x0u <<  6) /**< \brief (TC_CAPTURE_CMR) Counter clock is not stopped when RB loading occurs. */\r
+#define   TC_CAPTURE_CMR_LDBSTOP_1  (0x1u <<  6) /**< \brief (TC_CAPTURE_CMR) Counter clock is stopped when RB loading occurs. */\r
+#define TC_CAPTURE_CMR_LDBDIS       (0x1u <<  7) /**< \brief (TC_CAPTURE_CMR) Counter Clock Disable with RB Loading */\r
+#define   TC_CAPTURE_CMR_LDBDIS_0   (0x0u <<  7) /**< \brief (TC_CAPTURE_CMR) Counter clock is not disabled when RB loading occurs. */\r
+#define   TC_CAPTURE_CMR_LDBDIS_1   (0x1u <<  7) /**< \brief (TC_CAPTURE_CMR) Counter clock is disabled when RB loading occurs. */\r
+#define TC_CAPTURE_CMR_ETRGEDG_Pos    8\r
+#define TC_CAPTURE_CMR_ETRGEDG_Msk    (0x3u << TC_CAPTURE_CMR_ETRGEDG_Pos) /**< \brief (TC_CAPTURE_CMR) External Trigger Edge Selection */\r
+#define TC_CAPTURE_CMR_ETRGEDG(value) ((TC_CAPTURE_CMR_ETRGEDG_Msk & ((value) << TC_CAPTURE_CMR_ETRGEDG_Pos)))\r
+#define   TC_CAPTURE_CMR_ETRGEDG_NO_EDGE (0x0u <<  8) /**< \brief (TC_CAPTURE_CMR) none */\r
+#define   TC_CAPTURE_CMR_ETRGEDG_POS_EDGE (0x1u <<  8) /**< \brief (TC_CAPTURE_CMR) rising edge */\r
+#define   TC_CAPTURE_CMR_ETRGEDG_NEG_EDGE (0x2u <<  8) /**< \brief (TC_CAPTURE_CMR) falling edge */\r
+#define   TC_CAPTURE_CMR_ETRGEDG_BOTH_EDGES (0x3u <<  8) /**< \brief (TC_CAPTURE_CMR) each edge */\r
+#define TC_CAPTURE_CMR_ABETRG       (0x1u << 10) /**< \brief (TC_CAPTURE_CMR) TIOA or TIOB External Trigger Selection */\r
+#define   TC_CAPTURE_CMR_ABETRG_0   (0x0u << 10) /**< \brief (TC_CAPTURE_CMR) TIOB is used as an external trigger. */\r
+#define   TC_CAPTURE_CMR_ABETRG_1   (0x1u << 10) /**< \brief (TC_CAPTURE_CMR) TIOA is used as an external trigger. */\r
+#define TC_CAPTURE_CMR_CPCTRG       (0x1u << 14) /**< \brief (TC_CAPTURE_CMR) RC Compare Trigger Enable */\r
+#define   TC_CAPTURE_CMR_CPCTRG_0   (0x0u << 14) /**< \brief (TC_CAPTURE_CMR) RC Compare has no effect on the counter and its clock. */\r
+#define   TC_CAPTURE_CMR_CPCTRG_1   (0x1u << 14) /**< \brief (TC_CAPTURE_CMR) RC Compare resets the counter and starts the counter clock. */\r
+#define TC_CAPTURE_CMR_WAVE         (0x1u << 15) /**< \brief (TC_CAPTURE_CMR) Wave */\r
+#define   TC_CAPTURE_CMR_WAVE_0     (0x0u << 15) /**< \brief (TC_CAPTURE_CMR) Capture Mode is enabled. */\r
+#define   TC_CAPTURE_CMR_WAVE_1     (0x1u << 15) /**< \brief (TC_CAPTURE_CMR) Capture Mode is disabled (Waveform Mode is enabled). */\r
+#define TC_CAPTURE_CMR_LDRA_Pos     16\r
+#define TC_CAPTURE_CMR_LDRA_Msk     (0x3u << TC_CAPTURE_CMR_LDRA_Pos) /**< \brief (TC_CAPTURE_CMR) RA Loading Selection */\r
+#define TC_CAPTURE_CMR_LDRA(value)  ((TC_CAPTURE_CMR_LDRA_Msk & ((value) << TC_CAPTURE_CMR_LDRA_Pos)))\r
+#define   TC_CAPTURE_CMR_LDRA_NO_EDGE (0x0u << 16) /**< \brief (TC_CAPTURE_CMR) none */\r
+#define   TC_CAPTURE_CMR_LDRA_POS_EDGE_TIOA (0x1u << 16) /**< \brief (TC_CAPTURE_CMR) rising edge of TIOA */\r
+#define   TC_CAPTURE_CMR_LDRA_NEG_EDGE_TIOA (0x2u << 16) /**< \brief (TC_CAPTURE_CMR) falling edge of TIOA */\r
+#define   TC_CAPTURE_CMR_LDRA_BIOTH_EDGES_TIOA (0x3u << 16) /**< \brief (TC_CAPTURE_CMR) each edge of TIOA */\r
+#define TC_CAPTURE_CMR_LDRB_Pos     18\r
+#define TC_CAPTURE_CMR_LDRB_Msk     (0x3u << TC_CAPTURE_CMR_LDRB_Pos) /**< \brief (TC_CAPTURE_CMR) RB Loading Selection */\r
+#define TC_CAPTURE_CMR_LDRB(value)  ((TC_CAPTURE_CMR_LDRB_Msk & ((value) << TC_CAPTURE_CMR_LDRB_Pos)))\r
+#define   TC_CAPTURE_CMR_LDRB_NO_EDGE (0x0u << 18) /**< \brief (TC_CAPTURE_CMR) none */\r
+#define   TC_CAPTURE_CMR_LDRB_POS_EDGE_TIOA (0x1u << 18) /**< \brief (TC_CAPTURE_CMR) rising edge of TIOA */\r
+#define   TC_CAPTURE_CMR_LDRB_NEG_EDGE_TIOA (0x2u << 18) /**< \brief (TC_CAPTURE_CMR) falling edge of TIOA */\r
+#define   TC_CAPTURE_CMR_LDRB_BIOTH_EDGES_TIOA (0x3u << 18) /**< \brief (TC_CAPTURE_CMR) each edge of TIOA */\r
+/* -------- TC_WAVEFORM_CMR : (TC Offset: 0x04) Channel Channel Mode Register Channel 0 -------- */\r
+#define TC_WAVEFORM_CMR_TCCLKS_Pos    0\r
+#define TC_WAVEFORM_CMR_TCCLKS_Msk    (0x7u << TC_WAVEFORM_CMR_TCCLKS_Pos) /**< \brief (TC_WAVEFORM_CMR) Clock Selection */\r
+#define TC_WAVEFORM_CMR_TCCLKS(value) ((TC_WAVEFORM_CMR_TCCLKS_Msk & ((value) << TC_WAVEFORM_CMR_TCCLKS_Pos)))\r
+#define   TC_WAVEFORM_CMR_TCCLKS_TIMER_DIV1_CLOCK (0x0u <<  0) /**< \brief (TC_WAVEFORM_CMR) TIMER_DIV1_CLOCK */\r
+#define   TC_WAVEFORM_CMR_TCCLKS_TIMER_DIV2_CLOCK (0x1u <<  0) /**< \brief (TC_WAVEFORM_CMR) TIMER_DIV2_CLOCK */\r
+#define   TC_WAVEFORM_CMR_TCCLKS_TIMER_DIV3_CLOCK (0x2u <<  0) /**< \brief (TC_WAVEFORM_CMR) TIMER_DIV3_CLOCK */\r
+#define   TC_WAVEFORM_CMR_TCCLKS_TIMER_DIV4_CLOCK (0x3u <<  0) /**< \brief (TC_WAVEFORM_CMR) TIMER_DIV4_CLOCK */\r
+#define   TC_WAVEFORM_CMR_TCCLKS_TIMER_DIV5_CLOCK (0x4u <<  0) /**< \brief (TC_WAVEFORM_CMR) TIMER_DIV5_CLOCK */\r
+#define   TC_WAVEFORM_CMR_TCCLKS_XC0 (0x5u <<  0) /**< \brief (TC_WAVEFORM_CMR) XC0 */\r
+#define   TC_WAVEFORM_CMR_TCCLKS_XC1 (0x6u <<  0) /**< \brief (TC_WAVEFORM_CMR) XC1 */\r
+#define   TC_WAVEFORM_CMR_TCCLKS_XC2 (0x7u <<  0) /**< \brief (TC_WAVEFORM_CMR) XC2 */\r
+#define TC_WAVEFORM_CMR_CLKI        (0x1u <<  3) /**< \brief (TC_WAVEFORM_CMR) Clock Invert */\r
+#define   TC_WAVEFORM_CMR_CLKI_0    (0x0u <<  3) /**< \brief (TC_WAVEFORM_CMR) Counter is incremented on rising edge of the clock. */\r
+#define   TC_WAVEFORM_CMR_CLKI_1    (0x1u <<  3) /**< \brief (TC_WAVEFORM_CMR) Counter is incremented on falling edge of the clock. */\r
+#define TC_WAVEFORM_CMR_BURST_Pos    4\r
+#define TC_WAVEFORM_CMR_BURST_Msk    (0x3u << TC_WAVEFORM_CMR_BURST_Pos) /**< \brief (TC_WAVEFORM_CMR) Burst Signal Selection */\r
+#define TC_WAVEFORM_CMR_BURST(value) ((TC_WAVEFORM_CMR_BURST_Msk & ((value) << TC_WAVEFORM_CMR_BURST_Pos)))\r
+#define   TC_WAVEFORM_CMR_BURST_NOT_GATED (0x0u <<  4) /**< \brief (TC_WAVEFORM_CMR) The clock is not gated by an external signal. */\r
+#define   TC_WAVEFORM_CMR_BURST_CLK_AND_XC0 (0x1u <<  4) /**< \brief (TC_WAVEFORM_CMR) XC0 is ANDed with the selected clock. */\r
+#define   TC_WAVEFORM_CMR_BURST_CLK_AND_XC1 (0x2u <<  4) /**< \brief (TC_WAVEFORM_CMR) XC1 is ANDed with the selected clock. */\r
+#define   TC_WAVEFORM_CMR_BURST_CLK_AND_XC2 (0x3u <<  4) /**< \brief (TC_WAVEFORM_CMR) XC2 is ANDed with the selected clock. */\r
+#define TC_WAVEFORM_CMR_CPCSTOP     (0x1u <<  6) /**< \brief (TC_WAVEFORM_CMR) Counter Clock Stopped with RC Compare */\r
+#define   TC_WAVEFORM_CMR_CPCSTOP_0 (0x0u <<  6) /**< \brief (TC_WAVEFORM_CMR) Counter clock is not stopped when counter reaches RC. */\r
+#define   TC_WAVEFORM_CMR_CPCSTOP_1 (0x1u <<  6) /**< \brief (TC_WAVEFORM_CMR) Counter clock is stopped when counter reaches RC. */\r
+#define TC_WAVEFORM_CMR_CPCDIS      (0x1u <<  7) /**< \brief (TC_WAVEFORM_CMR) Counter Clock Disable with RC Compare */\r
+#define   TC_WAVEFORM_CMR_CPCDIS_0  (0x0u <<  7) /**< \brief (TC_WAVEFORM_CMR) Counter clock is not disabled when counter reaches RC. */\r
+#define   TC_WAVEFORM_CMR_CPCDIS_1  (0x1u <<  7) /**< \brief (TC_WAVEFORM_CMR) Counter clock is disabled when counter reaches RC. */\r
+#define TC_WAVEFORM_CMR_EEVTEDG_Pos    8\r
+#define TC_WAVEFORM_CMR_EEVTEDG_Msk    (0x3u << TC_WAVEFORM_CMR_EEVTEDG_Pos) /**< \brief (TC_WAVEFORM_CMR) External Event Edge Selection */\r
+#define TC_WAVEFORM_CMR_EEVTEDG(value) ((TC_WAVEFORM_CMR_EEVTEDG_Msk & ((value) << TC_WAVEFORM_CMR_EEVTEDG_Pos)))\r
+#define   TC_WAVEFORM_CMR_EEVTEDG_NO_EDGE (0x0u <<  8) /**< \brief (TC_WAVEFORM_CMR) none */\r
+#define   TC_WAVEFORM_CMR_EEVTEDG_POS_EDGE (0x1u <<  8) /**< \brief (TC_WAVEFORM_CMR) rising edge */\r
+#define   TC_WAVEFORM_CMR_EEVTEDG_NEG_EDGE (0x2u <<  8) /**< \brief (TC_WAVEFORM_CMR) falling edge */\r
+#define   TC_WAVEFORM_CMR_EEVTEDG_BOTH_EDGES (0x3u <<  8) /**< \brief (TC_WAVEFORM_CMR) each edge */\r
+#define TC_WAVEFORM_CMR_EEVT_Pos    10\r
+#define TC_WAVEFORM_CMR_EEVT_Msk    (0x3u << TC_WAVEFORM_CMR_EEVT_Pos) /**< \brief (TC_WAVEFORM_CMR) External Event Selection */\r
+#define TC_WAVEFORM_CMR_EEVT(value) ((TC_WAVEFORM_CMR_EEVT_Msk & ((value) << TC_WAVEFORM_CMR_EEVT_Pos)))\r
+#define   TC_WAVEFORM_CMR_EEVT_TIOB_INPUT (0x0u << 10) /**< \brief (TC_WAVEFORM_CMR) TIOB input. If TIOB is chosen as the external event signal, it is configured as an input and no longer generates waveforms. */\r
+#define   TC_WAVEFORM_CMR_EEVT_XC0_OUTPUT (0x1u << 10) /**< \brief (TC_WAVEFORM_CMR) XC0 output */\r
+#define   TC_WAVEFORM_CMR_EEVT_XC1_OUTPUT (0x2u << 10) /**< \brief (TC_WAVEFORM_CMR) XC1 output */\r
+#define   TC_WAVEFORM_CMR_EEVT_XC2_OUTPUT (0x3u << 10) /**< \brief (TC_WAVEFORM_CMR) XC2 output */\r
+#define TC_WAVEFORM_CMR_ENETRG      (0x1u << 12) /**< \brief (TC_WAVEFORM_CMR) External Event Trigger Enable */\r
+#define   TC_WAVEFORM_CMR_ENETRG_0  (0x0u << 12) /**< \brief (TC_WAVEFORM_CMR) The external event has no effect on the counter and its clock. In this case, the selected external event only controls the TIOA output. */\r
+#define   TC_WAVEFORM_CMR_ENETRG_1  (0x1u << 12) /**< \brief (TC_WAVEFORM_CMR) The external event resets the counter and starts the counter clock. */\r
+#define TC_WAVEFORM_CMR_WAVSEL_Pos    13\r
+#define TC_WAVEFORM_CMR_WAVSEL_Msk    (0x3u << TC_WAVEFORM_CMR_WAVSEL_Pos) /**< \brief (TC_WAVEFORM_CMR) Waveform Selection */\r
+#define TC_WAVEFORM_CMR_WAVSEL(value) ((TC_WAVEFORM_CMR_WAVSEL_Msk & ((value) << TC_WAVEFORM_CMR_WAVSEL_Pos)))\r
+#define   TC_WAVEFORM_CMR_WAVSEL_UP_NO_AUTO (0x0u << 13) /**< \brief (TC_WAVEFORM_CMR) UP mode without automatic trigger on RC Compare */\r
+#define   TC_WAVEFORM_CMR_WAVSEL_UPDOWN_NO_AUTO (0x1u << 13) /**< \brief (TC_WAVEFORM_CMR) UPDOWN mode without automatic trigger on RC Compare */\r
+#define   TC_WAVEFORM_CMR_WAVSEL_UP_AUTO (0x2u << 13) /**< \brief (TC_WAVEFORM_CMR) UP mode with automatic trigger on RC Compare */\r
+#define   TC_WAVEFORM_CMR_WAVSEL_UPDOWN_AUTO (0x3u << 13) /**< \brief (TC_WAVEFORM_CMR) UPDOWN mode with automatic trigger on RC Compare */\r
+#define TC_WAVEFORM_CMR_WAVE        (0x1u << 15) /**< \brief (TC_WAVEFORM_CMR) WAVE */\r
+#define   TC_WAVEFORM_CMR_WAVE_0    (0x0u << 15) /**< \brief (TC_WAVEFORM_CMR) Waveform Mode is disabled (Capture Mode is enabled). */\r
+#define   TC_WAVEFORM_CMR_WAVE_1    (0x1u << 15) /**< \brief (TC_WAVEFORM_CMR) Waveform Mode is enabled. */\r
+#define TC_WAVEFORM_CMR_ACPA_Pos    16\r
+#define TC_WAVEFORM_CMR_ACPA_Msk    (0x3u << TC_WAVEFORM_CMR_ACPA_Pos) /**< \brief (TC_WAVEFORM_CMR) RA Compare Effect on TIOA */\r
+#define TC_WAVEFORM_CMR_ACPA(value) ((TC_WAVEFORM_CMR_ACPA_Msk & ((value) << TC_WAVEFORM_CMR_ACPA_Pos)))\r
+#define   TC_WAVEFORM_CMR_ACPA_NONE (0x0u << 16) /**< \brief (TC_WAVEFORM_CMR) none */\r
+#define   TC_WAVEFORM_CMR_ACPA_SET  (0x1u << 16) /**< \brief (TC_WAVEFORM_CMR) set */\r
+#define   TC_WAVEFORM_CMR_ACPA_CLEAR (0x2u << 16) /**< \brief (TC_WAVEFORM_CMR) clear */\r
+#define   TC_WAVEFORM_CMR_ACPA_TOGGLE (0x3u << 16) /**< \brief (TC_WAVEFORM_CMR) toggle */\r
+#define TC_WAVEFORM_CMR_ACPC_Pos    18\r
+#define TC_WAVEFORM_CMR_ACPC_Msk    (0x3u << TC_WAVEFORM_CMR_ACPC_Pos) /**< \brief (TC_WAVEFORM_CMR) RC Compare Effect on TIOA */\r
+#define TC_WAVEFORM_CMR_ACPC(value) ((TC_WAVEFORM_CMR_ACPC_Msk & ((value) << TC_WAVEFORM_CMR_ACPC_Pos)))\r
+#define   TC_WAVEFORM_CMR_ACPC_NONE (0x0u << 18) /**< \brief (TC_WAVEFORM_CMR) none */\r
+#define   TC_WAVEFORM_CMR_ACPC_SET  (0x1u << 18) /**< \brief (TC_WAVEFORM_CMR) set */\r
+#define   TC_WAVEFORM_CMR_ACPC_CLEAR (0x2u << 18) /**< \brief (TC_WAVEFORM_CMR) clear */\r
+#define   TC_WAVEFORM_CMR_ACPC_TOGGLE (0x3u << 18) /**< \brief (TC_WAVEFORM_CMR) toggle */\r
+#define TC_WAVEFORM_CMR_AEEVT_Pos    20\r
+#define TC_WAVEFORM_CMR_AEEVT_Msk    (0x3u << TC_WAVEFORM_CMR_AEEVT_Pos) /**< \brief (TC_WAVEFORM_CMR) External Event Effect on TIOA */\r
+#define TC_WAVEFORM_CMR_AEEVT(value) ((TC_WAVEFORM_CMR_AEEVT_Msk & ((value) << TC_WAVEFORM_CMR_AEEVT_Pos)))\r
+#define   TC_WAVEFORM_CMR_AEEVT_NONE (0x0u << 20) /**< \brief (TC_WAVEFORM_CMR) none */\r
+#define   TC_WAVEFORM_CMR_AEEVT_SET (0x1u << 20) /**< \brief (TC_WAVEFORM_CMR) set */\r
+#define   TC_WAVEFORM_CMR_AEEVT_CLEAR (0x2u << 20) /**< \brief (TC_WAVEFORM_CMR) clear */\r
+#define   TC_WAVEFORM_CMR_AEEVT_TOGGLE (0x3u << 20) /**< \brief (TC_WAVEFORM_CMR) toggle */\r
+#define TC_WAVEFORM_CMR_ASWTRG_Pos    22\r
+#define TC_WAVEFORM_CMR_ASWTRG_Msk    (0x3u << TC_WAVEFORM_CMR_ASWTRG_Pos) /**< \brief (TC_WAVEFORM_CMR) Software Trigger Effect on TIOA */\r
+#define TC_WAVEFORM_CMR_ASWTRG(value) ((TC_WAVEFORM_CMR_ASWTRG_Msk & ((value) << TC_WAVEFORM_CMR_ASWTRG_Pos)))\r
+#define   TC_WAVEFORM_CMR_ASWTRG_NONE (0x0u << 22) /**< \brief (TC_WAVEFORM_CMR) none */\r
+#define   TC_WAVEFORM_CMR_ASWTRG_SET (0x1u << 22) /**< \brief (TC_WAVEFORM_CMR) set */\r
+#define   TC_WAVEFORM_CMR_ASWTRG_CLEAR (0x2u << 22) /**< \brief (TC_WAVEFORM_CMR) clear */\r
+#define   TC_WAVEFORM_CMR_ASWTRG_TOGGLE (0x3u << 22) /**< \brief (TC_WAVEFORM_CMR) toggle */\r
+#define TC_WAVEFORM_CMR_BCPB_Pos    24\r
+#define TC_WAVEFORM_CMR_BCPB_Msk    (0x3u << TC_WAVEFORM_CMR_BCPB_Pos) /**< \brief (TC_WAVEFORM_CMR) RB Compare Effect on TIOB */\r
+#define TC_WAVEFORM_CMR_BCPB(value) ((TC_WAVEFORM_CMR_BCPB_Msk & ((value) << TC_WAVEFORM_CMR_BCPB_Pos)))\r
+#define   TC_WAVEFORM_CMR_BCPB_NONE (0x0u << 24) /**< \brief (TC_WAVEFORM_CMR) none */\r
+#define   TC_WAVEFORM_CMR_BCPB_SET  (0x1u << 24) /**< \brief (TC_WAVEFORM_CMR) set */\r
+#define   TC_WAVEFORM_CMR_BCPB_CLEAR (0x2u << 24) /**< \brief (TC_WAVEFORM_CMR) clear */\r
+#define   TC_WAVEFORM_CMR_BCPB_TOGGLE (0x3u << 24) /**< \brief (TC_WAVEFORM_CMR) toggle */\r
+#define TC_WAVEFORM_CMR_BCPC_Pos    26\r
+#define TC_WAVEFORM_CMR_BCPC_Msk    (0x3u << TC_WAVEFORM_CMR_BCPC_Pos) /**< \brief (TC_WAVEFORM_CMR) RC Compare Effect on TIOB */\r
+#define TC_WAVEFORM_CMR_BCPC(value) ((TC_WAVEFORM_CMR_BCPC_Msk & ((value) << TC_WAVEFORM_CMR_BCPC_Pos)))\r
+#define   TC_WAVEFORM_CMR_BCPC_NONE (0x0u << 26) /**< \brief (TC_WAVEFORM_CMR) none */\r
+#define   TC_WAVEFORM_CMR_BCPC_SET  (0x1u << 26) /**< \brief (TC_WAVEFORM_CMR) set */\r
+#define   TC_WAVEFORM_CMR_BCPC_CLEAR (0x2u << 26) /**< \brief (TC_WAVEFORM_CMR) clear */\r
+#define   TC_WAVEFORM_CMR_BCPC_TOGGLE (0x3u << 26) /**< \brief (TC_WAVEFORM_CMR) toggle */\r
+#define TC_WAVEFORM_CMR_BEEVT_Pos    28\r
+#define TC_WAVEFORM_CMR_BEEVT_Msk    (0x3u << TC_WAVEFORM_CMR_BEEVT_Pos) /**< \brief (TC_WAVEFORM_CMR) External Event Effect on TIOB */\r
+#define TC_WAVEFORM_CMR_BEEVT(value) ((TC_WAVEFORM_CMR_BEEVT_Msk & ((value) << TC_WAVEFORM_CMR_BEEVT_Pos)))\r
+#define   TC_WAVEFORM_CMR_BEEVT_NONE (0x0u << 28) /**< \brief (TC_WAVEFORM_CMR) none */\r
+#define   TC_WAVEFORM_CMR_BEEVT_SET (0x1u << 28) /**< \brief (TC_WAVEFORM_CMR) set */\r
+#define   TC_WAVEFORM_CMR_BEEVT_CLEAR (0x2u << 28) /**< \brief (TC_WAVEFORM_CMR) clear */\r
+#define   TC_WAVEFORM_CMR_BEEVT_TOGGLE (0x3u << 28) /**< \brief (TC_WAVEFORM_CMR) toggle */\r
+#define TC_WAVEFORM_CMR_BSWTRG_Pos    30\r
+#define TC_WAVEFORM_CMR_BSWTRG_Msk    (0x3u << TC_WAVEFORM_CMR_BSWTRG_Pos) /**< \brief (TC_WAVEFORM_CMR) Software Trigger Effect on TIOB */\r
+#define TC_WAVEFORM_CMR_BSWTRG(value) ((TC_WAVEFORM_CMR_BSWTRG_Msk & ((value) << TC_WAVEFORM_CMR_BSWTRG_Pos)))\r
+#define   TC_WAVEFORM_CMR_BSWTRG_NONE (0x0u << 30) /**< \brief (TC_WAVEFORM_CMR) none */\r
+#define   TC_WAVEFORM_CMR_BSWTRG_SET (0x1u << 30) /**< \brief (TC_WAVEFORM_CMR) set */\r
+#define   TC_WAVEFORM_CMR_BSWTRG_CLEAR (0x2u << 30) /**< \brief (TC_WAVEFORM_CMR) clear */\r
+#define   TC_WAVEFORM_CMR_BSWTRG_TOGGLE (0x3u << 30) /**< \brief (TC_WAVEFORM_CMR) toggle */\r
+/* -------- TC_CMR : (TC Offset: 0x04) Channel Channel Mode Register Channel 0 -------- */\r
+#define TC_CMR_TCCLKS_Pos           0\r
+#define TC_CMR_TCCLKS_Msk           (0x7u << TC_CMR_TCCLKS_Pos) /**< \brief (TC_CMR) Clock Selection */\r
+#define TC_CMR_TCCLKS(value)        ((TC_CMR_TCCLKS_Msk & ((value) << TC_CMR_TCCLKS_Pos)))\r
+#define   TC_CMR_TCCLKS_TIMER_CLOCK1 (0x0u <<  0) /**< \brief (TC_CMR) TIMER_CLOCK1 */\r
+#define   TC_CMR_TCCLKS_TIMER_CLOCK2 (0x1u <<  0) /**< \brief (TC_CMR) TIMER_CLOCK2 */\r
+#define   TC_CMR_TCCLKS_TIMER_CLOCK3 (0x2u <<  0) /**< \brief (TC_CMR) TIMER_CLOCK3 */\r
+#define   TC_CMR_TCCLKS_TIMER_CLOCK4 (0x3u <<  0) /**< \brief (TC_CMR) TIMER_CLOCK4 */\r
+#define   TC_CMR_TCCLKS_TIMER_CLOCK5 (0x4u <<  0) /**< \brief (TC_CMR) TIMER_CLOCK5 */\r
+#define   TC_CMR_TCCLKS_XC0         (0x5u <<  0) /**< \brief (TC_CMR) XC0 */\r
+#define   TC_CMR_TCCLKS_XC1         (0x6u <<  0) /**< \brief (TC_CMR) XC1 */\r
+#define   TC_CMR_TCCLKS_XC2         (0x7u <<  0) /**< \brief (TC_CMR) XC2 */\r
+#define   TC_CMR_TCCLKS_TIMER_DIV1_CLOCK (0x0u <<  0) /**< \brief (TC_CMR) TIMER_DIV1_CLOCK */\r
+#define   TC_CMR_TCCLKS_TIMER_DIV2_CLOCK (0x1u <<  0) /**< \brief (TC_CMR) TIMER_DIV2_CLOCK */\r
+#define   TC_CMR_TCCLKS_TIMER_DIV3_CLOCK (0x2u <<  0) /**< \brief (TC_CMR) TIMER_DIV3_CLOCK */\r
+#define   TC_CMR_TCCLKS_TIMER_DIV4_CLOCK (0x3u <<  0) /**< \brief (TC_CMR) TIMER_DIV4_CLOCK */\r
+#define   TC_CMR_TCCLKS_TIMER_DIV5_CLOCK (0x4u <<  0) /**< \brief (TC_CMR) TIMER_DIV5_CLOCK */\r
+#define TC_CMR_CLKI                 (0x1u <<  3) /**< \brief (TC_CMR) Clock Invert */\r
+#define TC_CMR_BURST_Pos            4\r
+#define TC_CMR_BURST_Msk            (0x3u << TC_CMR_BURST_Pos) /**< \brief (TC_CMR) Burst Signal Selection */\r
+#define TC_CMR_BURST(value)         ((TC_CMR_BURST_Msk & ((value) << TC_CMR_BURST_Pos)))\r
+#define   TC_CMR_BURST_NOT_GATED    (0x0u <<  4) /**< \brief (TC_CMR) The clock is not gated by an external signal. */\r
+#define   TC_CMR_BURST_CLK_AND_XC0  (0x1u <<  4) /**< \brief (TC_CMR) XC0 is ANDed with the selected clock. */\r
+#define   TC_CMR_BURST_CLK_AND_XC1  (0x2u <<  4) /**< \brief (TC_CMR) XC1 is ANDed with the selected clock. */\r
+#define   TC_CMR_BURST_CLK_AND_XC2  (0x3u <<  4) /**< \brief (TC_CMR) XC2 is ANDed with the selected clock. */\r
+#define TC_CMR_LDBSTOP              (0x1u <<  6) /**< \brief (TC_CMR) Counter Clock Stopped with RB Loading */\r
+#define TC_CMR_CPCSTOP              (0x1u <<  6) /**< \brief (TC_CMR) Counter Clock Stopped with RC Compare */\r
+#define TC_CMR_LDBDIS               (0x1u <<  7) /**< \brief (TC_CMR) Counter Clock Disable with RB Loading */\r
+#define TC_CMR_CPCDIS               (0x1u <<  7) /**< \brief (TC_CMR) Counter Clock Disable with RC Compare */\r
+#define TC_CMR_ETRGEDG_Pos          8\r
+#define TC_CMR_ETRGEDG_Msk          (0x3u << TC_CMR_ETRGEDG_Pos) /**< \brief (TC_CMR) External Trigger Edge Selection */\r
+#define TC_CMR_ETRGEDG(value)       ((TC_CMR_ETRGEDG_Msk & ((value) << TC_CMR_ETRGEDG_Pos)))\r
+#define   TC_CMR_ETRGEDG_NO_EDGE    (0x0u <<  8) /**< \brief (TC_CMR) none */\r
+#define   TC_CMR_ETRGEDG_POS_EDGE   (0x1u <<  8) /**< \brief (TC_CMR) rising edge */\r
+#define   TC_CMR_ETRGEDG_NEG_EDGE   (0x2u <<  8) /**< \brief (TC_CMR) falling edge */\r
+#define   TC_CMR_ETRGEDG_BOTH_EDGES (0x3u <<  8) /**< \brief (TC_CMR) each edge */\r
+#define TC_CMR_EEVTEDG_Pos          8\r
+#define TC_CMR_EEVTEDG_Msk          (0x3u << TC_CMR_EEVTEDG_Pos) /**< \brief (TC_CMR) External Event Edge Selection */\r
+#define TC_CMR_EEVTEDG(value)       ((TC_CMR_EEVTEDG_Msk & ((value) << TC_CMR_EEVTEDG_Pos)))\r
+#define   TC_CMR_EEVTEDG_NO_EDGE    (0x0u <<  8) /**< \brief (TC_CMR) none */\r
+#define   TC_CMR_EEVTEDG_POS_EDGE   (0x1u <<  8) /**< \brief (TC_CMR) rising edge */\r
+#define   TC_CMR_EEVTEDG_NEG_EDGE   (0x2u <<  8) /**< \brief (TC_CMR) falling edge */\r
+#define   TC_CMR_EEVTEDG_BOTH_EDGES (0x3u <<  8) /**< \brief (TC_CMR) each edge */\r
+#define TC_CMR_ABETRG               (0x1u << 10) /**< \brief (TC_CMR) TIOA or TIOB External Trigger Selection */\r
+#define   TC_CMR_EEVT_TIOB_INPUT    (0x0u << 10) /**< \brief (TC_CMR) TIOB input. If TIOB is chosen as the external event signal, it is configured as an input and no longer generates waveforms. */\r
+#define   TC_CMR_EEVT_XC0_OUTPUT    (0x1u << 10) /**< \brief (TC_CMR) XC0 output */\r
+#define   TC_CMR_EEVT_XC1_OUTPUT    (0x2u << 10) /**< \brief (TC_CMR) XC1 output */\r
+#define   TC_CMR_EEVT_XC2_OUTPUT    (0x3u << 10) /**< \brief (TC_CMR) XC2 output */\r
+#define TC_CMR_ENETRG               (0x1u << 12) /**< \brief (TC_CMR) External Event Trigger Enable */\r
+#define TC_CMR_WAVSEL_Pos           13\r
+#define TC_CMR_WAVSEL_Msk           (0x3u << TC_CMR_WAVSEL_Pos) /**< \brief (TC_CMR) Waveform Selection */\r
+#define TC_CMR_WAVSEL(value)        ((TC_CMR_WAVSEL_Msk & ((value) << TC_CMR_WAVSEL_Pos)))\r
+#define   TC_CMR_WAVSEL_UP_NO_AUTO  (0x0u << 13) /**< \brief (TC_CMR) UP mode without automatic trigger on RC Compare */\r
+#define   TC_CMR_WAVSEL_UPDOWN_NO_AUTO (0x1u << 13) /**< \brief (TC_CMR) UPDOWN mode without automatic trigger on RC Compare */\r
+#define   TC_CMR_WAVSEL_UP_AUTO     (0x2u << 13) /**< \brief (TC_CMR) UP mode with automatic trigger on RC Compare */\r
+#define   TC_CMR_WAVSEL_UPDOWN_AUTO (0x3u << 13) /**< \brief (TC_CMR) UPDOWN mode with automatic trigger on RC Compare */\r
+#define TC_CMR_CPCTRG               (0x1u << 14) /**< \brief (TC_CMR) RC Compare Trigger Enable */\r
+#define TC_CMR_ACPA_Pos             16\r
+#define TC_CMR_ACPA_Msk             (0x3u << TC_CMR_ACPA_Pos) /**< \brief (TC_CMR) RA Compare Effect on TIOA */\r
+#define TC_CMR_ACPA(value)          ((TC_CMR_ACPA_Msk & ((value) << TC_CMR_ACPA_Pos)))\r
+#define   TC_CMR_ACPA_NONE          (0x0u << 16) /**< \brief (TC_CMR) none */\r
+#define   TC_CMR_ACPA_SET           (0x1u << 16) /**< \brief (TC_CMR) set */\r
+#define   TC_CMR_ACPA_CLEAR         (0x2u << 16) /**< \brief (TC_CMR) clear */\r
+#define   TC_CMR_ACPA_TOGGLE        (0x3u << 16) /**< \brief (TC_CMR) toggle */\r
+#define TC_CMR_WAVE                 (0x1u << 15) /**< \brief (TC_CMR) Wave */\r
+#define TC_CMR_LDRA_Pos             16\r
+#define TC_CMR_LDRA_Msk             (0x3u << TC_CMR_LDRA_Pos) /**< \brief (TC_CMR) RA Loading Selection */\r
+#define TC_CMR_LDRA(value)          ((TC_CMR_LDRA_Msk & ((value) << TC_CMR_LDRA_Pos)))\r
+#define   TC_CMR_LDRA_NO_EDGE       (0x0u << 16) /**< \brief (TC_CMR) none */\r
+#define   TC_CMR_LDRA_POS_EDGE_TIOA (0x1u << 16) /**< \brief (TC_CMR) rising edge of TIOA */\r
+#define   TC_CMR_LDRA_NEG_EDGE_TIOA (0x2u << 16) /**< \brief (TC_CMR) falling edge of TIOA */\r
+#define   TC_CMR_LDRA_BIOTH_EDGES_TIOA (0x3u << 16) /**< \brief (TC_CMR) each edge of TIOA */\r
+#define TC_CMR_ACPC_Pos             18\r
+#define TC_CMR_ACPC_Msk             (0x3u << TC_CMR_ACPC_Pos) /**< \brief (TC_CMR) RC Compare Effect on TIOA */\r
+#define TC_CMR_ACPC(value)          ((TC_CMR_ACPC_Msk & ((value) << TC_CMR_ACPC_Pos)))\r
+#define   TC_CMR_ACPC_NONE          (0x0u << 18) /**< \brief (TC_CMR) none */\r
+#define   TC_CMR_ACPC_SET           (0x1u << 18) /**< \brief (TC_CMR) set */\r
+#define   TC_CMR_ACPC_CLEAR         (0x2u << 18) /**< \brief (TC_CMR) clear */\r
+#define   TC_CMR_ACPC_TOGGLE        (0x3u << 18) /**< \brief (TC_CMR) toggle */\r
+#define TC_CMR_LDRB_Pos             18\r
+#define TC_CMR_LDRB_Msk             (0x3u << TC_CMR_LDRB_Pos) /**< \brief (TC_CMR) RB Loading Selection */\r
+#define TC_CMR_LDRB(value)          ((TC_CMR_LDRB_Msk & ((value) << TC_CMR_LDRB_Pos)))\r
+#define   TC_CMR_LDRB_NO_EDGE       (0x0u << 18) /**< \brief (TC_CMR) none */\r
+#define   TC_CMR_LDRB_POS_EDGE_TIOA (0x1u << 18) /**< \brief (TC_CMR) rising edge of TIOA */\r
+#define   TC_CMR_LDRB_NEG_EDGE_TIOA (0x2u << 18) /**< \brief (TC_CMR) falling edge of TIOA */\r
+#define   TC_CMR_LDRB_BIOTH_EDGES_TIOA (0x3u << 18) /**< \brief (TC_CMR) each edge of TIOA */\r
+#define TC_CMR_AEEVT_Pos            20\r
+#define TC_CMR_AEEVT_Msk            (0x3u << TC_CMR_AEEVT_Pos) /**< \brief (TC_CMR) External Event Effect on TIOA */\r
+#define TC_CMR_AEEVT(value)         ((TC_CMR_AEEVT_Msk & ((value) << TC_CMR_AEEVT_Pos)))\r
+#define   TC_CMR_AEEVT_NONE         (0x0u << 20) /**< \brief (TC_CMR) none */\r
+#define   TC_CMR_AEEVT_SET          (0x1u << 20) /**< \brief (TC_CMR) set */\r
+#define   TC_CMR_AEEVT_CLEAR        (0x2u << 20) /**< \brief (TC_CMR) clear */\r
+#define   TC_CMR_AEEVT_TOGGLE       (0x3u << 20) /**< \brief (TC_CMR) toggle */\r
+#define TC_CMR_ASWTRG_Pos           22\r
+#define TC_CMR_ASWTRG_Msk           (0x3u << TC_CMR_ASWTRG_Pos) /**< \brief (TC_CMR) Software Trigger Effect on TIOA */\r
+#define TC_CMR_ASWTRG(value)        ((TC_CMR_ASWTRG_Msk & ((value) << TC_CMR_ASWTRG_Pos)))\r
+#define   TC_CMR_ASWTRG_NONE        (0x0u << 22) /**< \brief (TC_CMR) none */\r
+#define   TC_CMR_ASWTRG_SET         (0x1u << 22) /**< \brief (TC_CMR) set */\r
+#define   TC_CMR_ASWTRG_CLEAR       (0x2u << 22) /**< \brief (TC_CMR) clear */\r
+#define   TC_CMR_ASWTRG_TOGGLE      (0x3u << 22) /**< \brief (TC_CMR) toggle */\r
+#define TC_CMR_BCPB_Pos             24\r
+#define TC_CMR_BCPB_Msk             (0x3u << TC_CMR_BCPB_Pos) /**< \brief (TC_CMR) RB Compare Effect on TIOB */\r
+#define TC_CMR_BCPB(value)          ((TC_CMR_BCPB_Msk & ((value) << TC_CMR_BCPB_Pos)))\r
+#define   TC_CMR_BCPB_NONE          (0x0u << 24) /**< \brief (TC_CMR) none */\r
+#define   TC_CMR_BCPB_SET           (0x1u << 24) /**< \brief (TC_CMR) set */\r
+#define   TC_CMR_BCPB_CLEAR         (0x2u << 24) /**< \brief (TC_CMR) clear */\r
+#define   TC_CMR_BCPB_TOGGLE        (0x3u << 24) /**< \brief (TC_CMR) toggle */\r
+#define TC_CMR_BCPC_Pos             26\r
+#define TC_CMR_BCPC_Msk             (0x3u << TC_CMR_BCPC_Pos) /**< \brief (TC_CMR) RC Compare Effect on TIOB */\r
+#define TC_CMR_BCPC(value)          ((TC_CMR_BCPC_Msk & ((value) << TC_CMR_BCPC_Pos)))\r
+#define   TC_CMR_BCPC_NONE          (0x0u << 26) /**< \brief (TC_CMR) none */\r
+#define   TC_CMR_BCPC_SET           (0x1u << 26) /**< \brief (TC_CMR) set */\r
+#define   TC_CMR_BCPC_CLEAR         (0x2u << 26) /**< \brief (TC_CMR) clear */\r
+#define   TC_CMR_BCPC_TOGGLE        (0x3u << 26) /**< \brief (TC_CMR) toggle */\r
+#define TC_CMR_BEEVT_Pos            28\r
+#define TC_CMR_BEEVT_Msk            (0x3u << TC_CMR_BEEVT_Pos) /**< \brief (TC_CMR) External Event Effect on TIOB */\r
+#define TC_CMR_BEEVT(value)         ((TC_CMR_BEEVT_Msk & ((value) << TC_CMR_BEEVT_Pos)))\r
+#define   TC_CMR_BEEVT_NONE         (0x0u << 28) /**< \brief (TC_CMR) none */\r
+#define   TC_CMR_BEEVT_SET          (0x1u << 28) /**< \brief (TC_CMR) set */\r
+#define   TC_CMR_BEEVT_CLEAR        (0x2u << 28) /**< \brief (TC_CMR) clear */\r
+#define   TC_CMR_BEEVT_TOGGLE       (0x3u << 28) /**< \brief (TC_CMR) toggle */\r
+#define TC_CMR_BSWTRG_Pos           30\r
+#define TC_CMR_BSWTRG_Msk           (0x3u << TC_CMR_BSWTRG_Pos) /**< \brief (TC_CMR) Software Trigger Effect on TIOB */\r
+#define TC_CMR_BSWTRG(value)        ((TC_CMR_BSWTRG_Msk & ((value) << TC_CMR_BSWTRG_Pos)))\r
+#define   TC_CMR_BSWTRG_NONE        (0x0u << 30) /**< \brief (TC_CMR) none */\r
+#define   TC_CMR_BSWTRG_SET         (0x1u << 30) /**< \brief (TC_CMR) set */\r
+#define   TC_CMR_BSWTRG_CLEAR       (0x2u << 30) /**< \brief (TC_CMR) clear */\r
+#define   TC_CMR_BSWTRG_TOGGLE      (0x3u << 30) /**< \brief (TC_CMR) toggle */\r
+\r
+/* -------- TC_SMC : (TC Offset: 0x08) Channel Stepper Motor Mode Register -------- */\r
+#define TC_SMC_GCEN                 (0x1u <<  0) /**< \brief (TC_SMC) Gray Count Enable */\r
+#define TC_SMC_DOWN                 (0x1u <<  1) /**< \brief (TC_SMC) Down Count */\r
+/* -------- TC_CV : (TC Offset: 0x10) Channel Counter Value Channel 0 -------- */\r
+#define TC_CV_CV_Pos                0\r
+#define TC_CV_CV_Msk                (0xFFFFu << TC_CV_CV_Pos) /**< \brief (TC_CV) Counter Value */\r
+#define TC_CV_CV(value)             ((TC_CV_CV_Msk & ((value) << TC_CV_CV_Pos)))\r
+/* -------- TC_RA : (TC Offset: 0x14) Channel Register A Channel 0 -------- */\r
+#define TC_RA_RA_Pos                0\r
+#define TC_RA_RA_Msk                (0xFFFFu << TC_RA_RA_Pos) /**< \brief (TC_RA) Register A */\r
+#define TC_RA_RA(value)             ((TC_RA_RA_Msk & ((value) << TC_RA_RA_Pos)))\r
+/* -------- TC_RB : (TC Offset: 0x18) Channel Register B Channel 0 -------- */\r
+#define TC_RB_RB_Pos                0\r
+#define TC_RB_RB_Msk                (0xFFFFu << TC_RB_RB_Pos) /**< \brief (TC_RB) Register B */\r
+#define TC_RB_RB(value)             ((TC_RB_RB_Msk & ((value) << TC_RB_RB_Pos)))\r
+/* -------- TC_RC : (TC Offset: 0x1C) Channel Register C Channel 0 -------- */\r
+#define TC_RC_RC_Pos                0\r
+#define TC_RC_RC_Msk                (0xFFFFu << TC_RC_RC_Pos) /**< \brief (TC_RC) Register C */\r
+#define TC_RC_RC(value)             ((TC_RC_RC_Msk & ((value) << TC_RC_RC_Pos)))\r
+/* -------- TC_SR : (TC Offset: 0x20) Channel Status Register Channel 0 -------- */\r
+#define TC_SR_COVFS                 (0x1u <<  0) /**< \brief (TC_SR) Counter Overflow Status */\r
+#define   TC_SR_COVFS_0             (0x0u <<  0) /**< \brief (TC_SR) No counter overflow has occurred since the last read of the Status Register. */\r
+#define   TC_SR_COVFS_1             (0x1u <<  0) /**< \brief (TC_SR) A counter overflow has occurred since the last read of the Status Register. */\r
+#define TC_SR_LOVRS                 (0x1u <<  1) /**< \brief (TC_SR) Load Overrun Status */\r
+#define   TC_SR_LOVRS_0             (0x0u <<  1) /**< \brief (TC_SR) Load overrun has not occurred since the last read of the Status Register or WAVE:1. */\r
+#define   TC_SR_LOVRS_1             (0x1u <<  1) /**< \brief (TC_SR) RA or RB have been loaded at least twice without any read of the corresponding register since the last read of the StatusRegister, if WAVE:0. */\r
+#define TC_SR_CPAS                  (0x1u <<  2) /**< \brief (TC_SR) RA Compare Status */\r
+#define   TC_SR_CPAS_0              (0x0u <<  2) /**< \brief (TC_SR) RA Compare has not occurred since the last read of the Status Register or WAVE:0. */\r
+#define   TC_SR_CPAS_1              (0x1u <<  2) /**< \brief (TC_SR) RA Compare has occurred since the last read of the Status Register, if WAVE:1. */\r
+#define TC_SR_CPBS                  (0x1u <<  3) /**< \brief (TC_SR) RB Compare Status */\r
+#define   TC_SR_CPBS_0              (0x0u <<  3) /**< \brief (TC_SR) RB Compare has not occurred since the last read of the Status Register or WAVE:0. */\r
+#define   TC_SR_CPBS_1              (0x1u <<  3) /**< \brief (TC_SR) RB Compare has occurred since the last read of the Status Register, if WAVE:1. */\r
+#define TC_SR_CPCS                  (0x1u <<  4) /**< \brief (TC_SR) RC Compare Status */\r
+#define   TC_SR_CPCS_0              (0x0u <<  4) /**< \brief (TC_SR) RC Compare has not occurred since the last read of the Status Register. */\r
+#define   TC_SR_CPCS_1              (0x1u <<  4) /**< \brief (TC_SR) RC Compare has occurred since the last read of the Status Register. */\r
+#define TC_SR_LDRAS                 (0x1u <<  5) /**< \brief (TC_SR) RA Loading Status */\r
+#define   TC_SR_LDRAS_0             (0x0u <<  5) /**< \brief (TC_SR) RA Load has not occurred since the last read of the Status Register or WAVE:1. */\r
+#define   TC_SR_LDRAS_1             (0x1u <<  5) /**< \brief (TC_SR) RA Load has occurred since the last read of the Status Register, if WAVE:0. */\r
+#define TC_SR_LDRBS                 (0x1u <<  6) /**< \brief (TC_SR) RB Loading Status */\r
+#define   TC_SR_LDRBS_0             (0x0u <<  6) /**< \brief (TC_SR) RB Load has not occurred since the last read of the Status Register or WAVE:1. */\r
+#define   TC_SR_LDRBS_1             (0x1u <<  6) /**< \brief (TC_SR) RB Load has occurred since the last read of the Status Register, if WAVE:0. */\r
+#define TC_SR_ETRGS                 (0x1u <<  7) /**< \brief (TC_SR) External Trigger Status */\r
+#define   TC_SR_ETRGS_0             (0x0u <<  7) /**< \brief (TC_SR) External trigger has not occurred since the last read of the Status Register. */\r
+#define   TC_SR_ETRGS_1             (0x1u <<  7) /**< \brief (TC_SR) External trigger has occurred since the last read of the Status Register. */\r
+#define TC_SR_CLKSTA                (0x1u << 16) /**< \brief (TC_SR) Clock Enabling Status */\r
+#define   TC_SR_CLKSTA_0            (0x0u << 16) /**< \brief (TC_SR) Clock is disabled. */\r
+#define   TC_SR_CLKSTA_1            (0x1u << 16) /**< \brief (TC_SR) Clock is enabled. */\r
+#define TC_SR_MTIOA                 (0x1u << 17) /**< \brief (TC_SR) TIOA Mirror */\r
+#define   TC_SR_MTIOA_0             (0x0u << 17) /**< \brief (TC_SR) TIOA is low. If WAVE:0, this means that TIOA pin is low. If WAVE:1, this means that TIOA is driven low. */\r
+#define   TC_SR_MTIOA_1             (0x1u << 17) /**< \brief (TC_SR) TIOA is high. If WAVE:0, this means that TIOA pin is high. If WAVE:1, this means that TIOA is driven high. */\r
+#define TC_SR_MTIOB                 (0x1u << 18) /**< \brief (TC_SR) TIOB Mirror */\r
+#define   TC_SR_MTIOB_0             (0x0u << 18) /**< \brief (TC_SR) TIOB is low. If WAVE:0, this means that TIOB pin is low. If WAVE:1, this means that TIOB is driven low. */\r
+#define   TC_SR_MTIOB_1             (0x1u << 18) /**< \brief (TC_SR) TIOB is high. If WAVE:0, this means that TIOB pin is high. If WAVE:1, this means that TIOB is driven high. */\r
+/* -------- TC_IER : (TC Offset: 0x24) Channel Interrupt Enable Register Channel 0 -------- */\r
+#define TC_IER_COVFS                (0x1u <<  0) /**< \brief (TC_IER) Counter Overflow */\r
+#define   TC_IER_COVFS_0            (0x0u <<  0) /**< \brief (TC_IER) No effect. */\r
+#define   TC_IER_COVFS_1            (0x1u <<  0) /**< \brief (TC_IER) Enables the Counter Overflow Interrupt. */\r
+#define TC_IER_LOVRS                (0x1u <<  1) /**< \brief (TC_IER) Load Overrun */\r
+#define   TC_IER_LOVRS_0            (0x0u <<  1) /**< \brief (TC_IER) No effect. */\r
+#define   TC_IER_LOVRS_1            (0x1u <<  1) /**< \brief (TC_IER) Enables the Load Overrun Interrupt. */\r
+#define TC_IER_CPAS                 (0x1u <<  2) /**< \brief (TC_IER) RA Compare */\r
+#define   TC_IER_CPAS_0             (0x0u <<  2) /**< \brief (TC_IER) No effect. */\r
+#define   TC_IER_CPAS_1             (0x1u <<  2) /**< \brief (TC_IER) Enables the RA Compare Interrupt. */\r
+#define TC_IER_CPBS                 (0x1u <<  3) /**< \brief (TC_IER) RB Compare */\r
+#define   TC_IER_CPBS_0             (0x0u <<  3) /**< \brief (TC_IER) No effect. */\r
+#define   TC_IER_CPBS_1             (0x1u <<  3) /**< \brief (TC_IER) Enables the RB Compare Interrupt. */\r
+#define TC_IER_CPCS                 (0x1u <<  4) /**< \brief (TC_IER) RC Compare */\r
+#define   TC_IER_CPCS_0             (0x0u <<  4) /**< \brief (TC_IER) No effect. */\r
+#define   TC_IER_CPCS_1             (0x1u <<  4) /**< \brief (TC_IER) Enables the RC Compare Interrupt. */\r
+#define TC_IER_LDRAS                (0x1u <<  5) /**< \brief (TC_IER) RA Loading */\r
+#define   TC_IER_LDRAS_0            (0x0u <<  5) /**< \brief (TC_IER) No effect. */\r
+#define   TC_IER_LDRAS_1            (0x1u <<  5) /**< \brief (TC_IER) Enables the RA Load Interrupt. */\r
+#define TC_IER_LDRBS                (0x1u <<  6) /**< \brief (TC_IER) RB Loading */\r
+#define   TC_IER_LDRBS_0            (0x0u <<  6) /**< \brief (TC_IER) No effect. */\r
+#define   TC_IER_LDRBS_1            (0x1u <<  6) /**< \brief (TC_IER) Enables the RB Load Interrupt. */\r
+#define TC_IER_ETRGS                (0x1u <<  7) /**< \brief (TC_IER) External Trigger */\r
+#define   TC_IER_ETRGS_0            (0x0u <<  7) /**< \brief (TC_IER) No effect. */\r
+#define   TC_IER_ETRGS_1            (0x1u <<  7) /**< \brief (TC_IER) Enables the External Trigger Interrupt. */\r
+/* -------- TC_IDR : (TC Offset: 0x28) Channel Interrupt Disable Register Channel 0 -------- */\r
+#define TC_IDR_COVFS                (0x1u <<  0) /**< \brief (TC_IDR) Counter Overflow */\r
+#define   TC_IDR_COVFS_0            (0x0u <<  0) /**< \brief (TC_IDR) No effect. */\r
+#define   TC_IDR_COVFS_1            (0x1u <<  0) /**< \brief (TC_IDR) Disables the Counter Overflow Interrupt. */\r
+#define TC_IDR_LOVRS                (0x1u <<  1) /**< \brief (TC_IDR) Load Overrun */\r
+#define   TC_IDR_LOVRS_0            (0x0u <<  1) /**< \brief (TC_IDR) No effect. */\r
+#define   TC_IDR_LOVRS_1            (0x1u <<  1) /**< \brief (TC_IDR) Disables the Load Overrun Interrupt (if WAVE:0). */\r
+#define TC_IDR_CPAS                 (0x1u <<  2) /**< \brief (TC_IDR) RA Compare */\r
+#define   TC_IDR_CPAS_0             (0x0u <<  2) /**< \brief (TC_IDR) No effect. */\r
+#define   TC_IDR_CPAS_1             (0x1u <<  2) /**< \brief (TC_IDR) Disables the RA Compare Interrupt (if WAVE:1). */\r
+#define TC_IDR_CPBS                 (0x1u <<  3) /**< \brief (TC_IDR) RB Compare */\r
+#define   TC_IDR_CPBS_0             (0x0u <<  3) /**< \brief (TC_IDR) No effect. */\r
+#define   TC_IDR_CPBS_1             (0x1u <<  3) /**< \brief (TC_IDR) Disables the RB Compare Interrupt (if WAVE:1). */\r
+#define TC_IDR_CPCS                 (0x1u <<  4) /**< \brief (TC_IDR) RC Compare */\r
+#define   TC_IDR_CPCS_0             (0x0u <<  4) /**< \brief (TC_IDR) No effect. */\r
+#define   TC_IDR_CPCS_1             (0x1u <<  4) /**< \brief (TC_IDR) Disables the RC Compare Interrupt. */\r
+#define TC_IDR_LDRAS                (0x1u <<  5) /**< \brief (TC_IDR) RA Loading */\r
+#define   TC_IDR_LDRAS_0            (0x0u <<  5) /**< \brief (TC_IDR) No effect. */\r
+#define   TC_IDR_LDRAS_1            (0x1u <<  5) /**< \brief (TC_IDR) Disables the RA Load Interrupt (if WAVE:0). */\r
+#define TC_IDR_LDRBS                (0x1u <<  6) /**< \brief (TC_IDR) RB Loading */\r
+#define   TC_IDR_LDRBS_0            (0x0u <<  6) /**< \brief (TC_IDR) No effect. */\r
+#define   TC_IDR_LDRBS_1            (0x1u <<  6) /**< \brief (TC_IDR) Disables the RB Load Interrupt (if WAVE:0). */\r
+#define TC_IDR_ETRGS                (0x1u <<  7) /**< \brief (TC_IDR) External Trigger */\r
+#define   TC_IDR_ETRGS_0            (0x0u <<  7) /**< \brief (TC_IDR) No effect. */\r
+#define   TC_IDR_ETRGS_1            (0x1u <<  7) /**< \brief (TC_IDR) Disables the External Trigger Interrupt. */\r
+/* -------- TC_IMR : (TC Offset: 0x2C) Channel Interrupt Mask Register Channel 0 -------- */\r
+#define TC_IMR_COVFS                (0x1u <<  0) /**< \brief (TC_IMR) Counter Overflow */\r
+#define   TC_IMR_COVFS_0            (0x0u <<  0) /**< \brief (TC_IMR) The Counter Overflow Interrupt is disabled. */\r
+#define   TC_IMR_COVFS_1            (0x1u <<  0) /**< \brief (TC_IMR) The Counter Overflow Interrupt is enabled. */\r
+#define TC_IMR_LOVRS                (0x1u <<  1) /**< \brief (TC_IMR) Load Overrun */\r
+#define   TC_IMR_LOVRS_0            (0x0u <<  1) /**< \brief (TC_IMR) The Load Overrun Interrupt is disabled. */\r
+#define   TC_IMR_LOVRS_1            (0x1u <<  1) /**< \brief (TC_IMR) The Load Overrun Interrupt is enabled. */\r
+#define TC_IMR_CPAS                 (0x1u <<  2) /**< \brief (TC_IMR) RA Compare */\r
+#define   TC_IMR_CPAS_0             (0x0u <<  2) /**< \brief (TC_IMR) The RA Compare Interrupt is disabled. */\r
+#define   TC_IMR_CPAS_1             (0x1u <<  2) /**< \brief (TC_IMR) The RA Compare Interrupt is enabled. */\r
+#define TC_IMR_CPBS                 (0x1u <<  3) /**< \brief (TC_IMR) RB Compare */\r
+#define   TC_IMR_CPBS_0             (0x0u <<  3) /**< \brief (TC_IMR) The RB Compare Interrupt is disabled. */\r
+#define   TC_IMR_CPBS_1             (0x1u <<  3) /**< \brief (TC_IMR) The RB Compare Interrupt is enabled. */\r
+#define TC_IMR_CPCS                 (0x1u <<  4) /**< \brief (TC_IMR) RC Compare */\r
+#define   TC_IMR_CPCS_0             (0x0u <<  4) /**< \brief (TC_IMR) The RC Compare Interrupt is disabled. */\r
+#define   TC_IMR_CPCS_1             (0x1u <<  4) /**< \brief (TC_IMR) The RC Compare Interrupt is enabled. */\r
+#define TC_IMR_LDRAS                (0x1u <<  5) /**< \brief (TC_IMR) RA Loading */\r
+#define   TC_IMR_LDRAS_0            (0x0u <<  5) /**< \brief (TC_IMR) The Load RA Interrupt is disabled. */\r
+#define   TC_IMR_LDRAS_1            (0x1u <<  5) /**< \brief (TC_IMR) The Load RA Interrupt is enabled. */\r
+#define TC_IMR_LDRBS                (0x1u <<  6) /**< \brief (TC_IMR) RB Loading */\r
+#define   TC_IMR_LDRBS_0            (0x0u <<  6) /**< \brief (TC_IMR) The Load RB Interrupt is disabled. */\r
+#define   TC_IMR_LDRBS_1            (0x1u <<  6) /**< \brief (TC_IMR) The Load RB Interrupt is enabled. */\r
+#define TC_IMR_ETRGS                (0x1u <<  7) /**< \brief (TC_IMR) External Trigger */\r
+#define   TC_IMR_ETRGS_0            (0x0u <<  7) /**< \brief (TC_IMR) The External Trigger Interrupt is disabled. */\r
+#define   TC_IMR_ETRGS_1            (0x1u <<  7) /**< \brief (TC_IMR) The External Trigger Interrupt is enabled. */\r
+/* -------- TC_BCR : (TC Offset: 0xC0) TC Block Control Register -------- */\r
+#define TC_BCR_SYNC                 (0x1u <<  0) /**< \brief (TC_BCR) Synchro Command */\r
+#define   TC_BCR_SYNC_0             (0x0u <<  0) /**< \brief (TC_BCR) No effect. */\r
+#define   TC_BCR_SYNC_1             (0x1u <<  0) /**< \brief (TC_BCR) Asserts the SYNC signal which generates a software trigger simultaneously for each of the channels. */\r
+/* -------- TC_BMR : (TC Offset: 0xC4) TC Block Mode Register -------- */\r
+#define TC_BMR_TC0XC0S_Pos          0\r
+#define TC_BMR_TC0XC0S_Msk          (0x3u << TC_BMR_TC0XC0S_Pos) /**< \brief (TC_BMR) External Clock Signal 0 Selection */\r
+#define TC_BMR_TC0XC0S(value)       ((TC_BMR_TC0XC0S_Msk & ((value) << TC_BMR_TC0XC0S_Pos)))\r
+#define   TC_BMR_TC0XC0S_TCLK0      (0x0u <<  0) /**< \brief (TC_BMR) Select TCLK0 as clock signal 0. */\r
+#define   TC_BMR_TC0XC0S_NO_CLK     (0x1u <<  0) /**< \brief (TC_BMR) Select no clock as clock signal 0. */\r
+#define   TC_BMR_TC0XC0S_TIOA1      (0x2u <<  0) /**< \brief (TC_BMR) Select TIOA1 as clock signal 0. */\r
+#define   TC_BMR_TC0XC0S_TIOA2      (0x3u <<  0) /**< \brief (TC_BMR) Select TIOA2 as clock signal 0. */\r
+#define TC_BMR_TC1XC1S_Pos          2\r
+#define TC_BMR_TC1XC1S_Msk          (0x3u << TC_BMR_TC1XC1S_Pos) /**< \brief (TC_BMR) External Clock Signal 1 Selection */\r
+#define TC_BMR_TC1XC1S(value)       ((TC_BMR_TC1XC1S_Msk & ((value) << TC_BMR_TC1XC1S_Pos)))\r
+#define   TC_BMR_TC1XC1S_TCLK1      (0x0u <<  2) /**< \brief (TC_BMR) Select TCLK1 as clock signal 1. */\r
+#define   TC_BMR_TC1XC1S_NO_CLK     (0x1u <<  2) /**< \brief (TC_BMR) Select no clock as clock signal 1. */\r
+#define   TC_BMR_TC1XC1S_TIOA0      (0x2u <<  2) /**< \brief (TC_BMR) Select TIOA0 as clock signal 1. */\r
+#define   TC_BMR_TC1XC1S_TIOA2      (0x3u <<  2) /**< \brief (TC_BMR) Select TIOA2 as clock signal 1. */\r
+#define TC_BMR_TC2XC2S_Pos          4\r
+#define TC_BMR_TC2XC2S_Msk          (0x3u << TC_BMR_TC2XC2S_Pos) /**< \brief (TC_BMR) External Clock Signal 2 Selection */\r
+#define TC_BMR_TC2XC2S(value)       ((TC_BMR_TC2XC2S_Msk & ((value) << TC_BMR_TC2XC2S_Pos)))\r
+#define   TC_BMR_TC2XC2S_TCLK2      (0x0u <<  4) /**< \brief (TC_BMR) Select TCLK2 as clock signal 2. */\r
+#define   TC_BMR_TC2XC2S_NO_CLK     (0x1u <<  4) /**< \brief (TC_BMR) Select no clock as clock signal 2. */\r
+#define   TC_BMR_TC2XC2S_TIOA0      (0x2u <<  4) /**< \brief (TC_BMR) Select TIOA0 as clock signal 2. */\r
+#define   TC_BMR_TC2XC2S_TIOA1      (0x3u <<  4) /**< \brief (TC_BMR) Select TIOA1 as clock signal 2. */\r
+/* -------- TC_WPMR : (TC Offset: 0xE4) Write Protect Mode Register -------- */\r
+#define TC_WPMR_WPEN                (0x1u <<  0) /**< \brief (TC_WPMR) Write Protect Enable */\r
+#define TC_WPMR_WPKEY_Pos           8\r
+#define TC_WPMR_WPKEY_Msk           (0xFFFFFFu << TC_WPMR_WPKEY_Pos) /**< \brief (TC_WPMR) Write Protect Key */\r
+#define TC_WPMR_WPKEY(value)        ((TC_WPMR_WPKEY_Msk & ((value) << TC_WPMR_WPKEY_Pos)))\r
+/* -------- TC_FEATURES : (TC Offset: 0xF8) Features Register -------- */\r
+#define TC_FEATURES_CTRSIZE_Pos     0\r
+#define TC_FEATURES_CTRSIZE_Msk     (0xFFu << TC_FEATURES_CTRSIZE_Pos) /**< \brief (TC_FEATURES) Counter Size */\r
+#define TC_FEATURES_CTRSIZE(value)  ((TC_FEATURES_CTRSIZE_Msk & ((value) << TC_FEATURES_CTRSIZE_Pos)))\r
+#define TC_FEATURES_UPDNIMPL        (0x1u <<  8) /**< \brief (TC_FEATURES) Up Down is Implemented */\r
+#define TC_FEATURES_BRPBHSB         (0x1u <<  9) /**< \brief (TC_FEATURES) Bridge Type is PB to HSB */\r
+/* -------- TC_VERSION : (TC Offset: 0xFC) Version Register -------- */\r
+#define TC_VERSION_VERSION_Pos      0\r
+#define TC_VERSION_VERSION_Msk      (0xFFFu << TC_VERSION_VERSION_Pos) /**< \brief (TC_VERSION) Reserved. Value subject to change. No functionality associated. This is the Atmel internal version of the macrocell. */\r
+#define TC_VERSION_VERSION(value)   ((TC_VERSION_VERSION_Msk & ((value) << TC_VERSION_VERSION_Pos)))\r
+#define TC_VERSION_VARIANT_Pos      16\r
+#define TC_VERSION_VARIANT_Msk      (0xFu << TC_VERSION_VARIANT_Pos) /**< \brief (TC_VERSION) Reserved.  Value subject to change.  No functionality associated. */\r
+#define TC_VERSION_VARIANT(value)   ((TC_VERSION_VARIANT_Msk & ((value) << TC_VERSION_VARIANT_Pos)))\r
+\r
+/*@}*/\r
+\r
+/* ============================================================================= */\r
+/**  SOFTWARE API DEFINITION FOR TRNG */\r
+/* ============================================================================= */\r
+/** \addtogroup SAM4L_TRNG True Random Number Generator */\r
+/*@{*/\r
+\r
+#define REV_TRNG       0x103\r
+\r
+#ifndef __ASSEMBLY__\r
+/** \brief TRNG hardware registers */\r
+typedef struct {\r
+  WoReg   TRNG_CR;          /**< \brief (TRNG Offset: 0x00) Control Register */\r
+  RoReg   Reserved1[3];\r
+  WoReg   TRNG_IER;         /**< \brief (TRNG Offset: 0x10) Interrupt Enable Register */\r
+  WoReg   TRNG_IDR;         /**< \brief (TRNG Offset: 0x14) Interrupt Disable Register */\r
+  RoReg   TRNG_IMR;         /**< \brief (TRNG Offset: 0x18) Interrupt Mask Register */\r
+  RoReg   TRNG_ISR;         /**< \brief (TRNG Offset: 0x1C) Interrupt Status Register */\r
+  RoReg   Reserved2[12];\r
+  RoReg   TRNG_ODATA;       /**< \brief (TRNG Offset: 0x50) Output Data Register */\r
+  RoReg   Reserved3[42];\r
+  RoReg   TRNG_VERSION;     /**< \brief (TRNG Offset: 0xFC) Version Register */\r
+} Trng;\r
+#endif /* __ASSEMBLY__ */\r
+/* -------- TRNG_CR : (TRNG Offset: 0x00) Control Register -------- */\r
+#define TRNG_CR_ENABLE              (0x1u <<  0) /**< \brief (TRNG_CR) Enables the TRNG to provide random values */\r
+#define TRNG_CR_KEY_Pos             8\r
+#define TRNG_CR_KEY_Msk             (0xFFFFFFu << TRNG_CR_KEY_Pos) /**< \brief (TRNG_CR) Security Key */\r
+#define TRNG_CR_KEY(value)          ((TRNG_CR_KEY_Msk & ((value) << TRNG_CR_KEY_Pos)))\r
+/* -------- TRNG_IER : (TRNG Offset: 0x10) Interrupt Enable Register -------- */\r
+#define TRNG_IER_DATRDY             (0x1u <<  0) /**< \brief (TRNG_IER) Data Ready Interrupt Enable */\r
+/* -------- TRNG_IDR : (TRNG Offset: 0x14) Interrupt Disable Register -------- */\r
+#define TRNG_IDR_DATRDY             (0x1u <<  0) /**< \brief (TRNG_IDR) Data Ready Interrupt Disable */\r
+/* -------- TRNG_IMR : (TRNG Offset: 0x18) Interrupt Mask Register -------- */\r
+#define TRNG_IMR_DATRDY             (0x1u <<  0) /**< \brief (TRNG_IMR) Data Ready Interrupt Mask */\r
+/* -------- TRNG_ISR : (TRNG Offset: 0x1C) Interrupt Status Register -------- */\r
+#define TRNG_ISR_DATRDY             (0x1u <<  0) /**< \brief (TRNG_ISR) Data Ready Interrupt Status */\r
+/* -------- TRNG_ODATA : (TRNG Offset: 0x50) Output Data Register -------- */\r
+#define TRNG_ODATA_ODATA            (0x1u <<  0) /**< \brief (TRNG_ODATA) Output Data */\r
+/* -------- TRNG_VERSION : (TRNG Offset: 0xFC) Version Register -------- */\r
+#define TRNG_VERSION_VERSION_Pos    0\r
+#define TRNG_VERSION_VERSION_Msk    (0xFFFu << TRNG_VERSION_VERSION_Pos) /**< \brief (TRNG_VERSION) Version Number */\r
+#define TRNG_VERSION_VERSION(value) ((TRNG_VERSION_VERSION_Msk & ((value) << TRNG_VERSION_VERSION_Pos)))\r
+#define TRNG_VERSION_VARIANT_Pos    16\r
+#define TRNG_VERSION_VARIANT_Msk    (0x7u << TRNG_VERSION_VARIANT_Pos) /**< \brief (TRNG_VERSION) Variant Number */\r
+#define TRNG_VERSION_VARIANT(value) ((TRNG_VERSION_VARIANT_Msk & ((value) << TRNG_VERSION_VARIANT_Pos)))\r
+\r
+/*@}*/\r
+\r
+/* ============================================================================= */\r
+/**  SOFTWARE API DEFINITION FOR TWIM */\r
+/* ============================================================================= */\r
+/** \addtogroup SAM4L_TWIM Two-wire Master Interface */\r
+/*@{*/\r
+\r
+#define REV_TWIM       0x120\r
+\r
+#ifndef __ASSEMBLY__\r
+/** \brief TWIM hardware registers */\r
+typedef struct {\r
+  WoReg   TWIM_CR;          /**< \brief (TWIM Offset: 0x00) Control Register */\r
+  RwReg   TWIM_CWGR;        /**< \brief (TWIM Offset: 0x04) Clock Waveform Generator Register */\r
+  RwReg   TWIM_SMBTR;       /**< \brief (TWIM Offset: 0x08) SMBus Timing Register */\r
+  RwReg   TWIM_CMDR;        /**< \brief (TWIM Offset: 0x0C) Command Register */\r
+  RwReg   TWIM_NCMDR;       /**< \brief (TWIM Offset: 0x10) Next Command Register */\r
+  RoReg   TWIM_RHR;         /**< \brief (TWIM Offset: 0x14) Receive Holding Register */\r
+  WoReg   TWIM_THR;         /**< \brief (TWIM Offset: 0x18) Transmit Holding Register */\r
+  RoReg   TWIM_SR;          /**< \brief (TWIM Offset: 0x1C) Status Register */\r
+  WoReg   TWIM_IER;         /**< \brief (TWIM Offset: 0x20) Interrupt Enable Register */\r
+  WoReg   TWIM_IDR;         /**< \brief (TWIM Offset: 0x24) Interrupt Disable Register */\r
+  RoReg   TWIM_IMR;         /**< \brief (TWIM Offset: 0x28) Interrupt Mask Register */\r
+  WoReg   TWIM_SCR;         /**< \brief (TWIM Offset: 0x2C) Status Clear Register */\r
+  RoReg   TWIM_PR;          /**< \brief (TWIM Offset: 0x30) Parameter Register */\r
+  RoReg   TWIM_VR;          /**< \brief (TWIM Offset: 0x34) Version Register */\r
+  RwReg   TWIM_HSCWGR;      /**< \brief (TWIM Offset: 0x38) HS-mode Clock Waveform Generator */\r
+  RwReg   TWIM_SRR;         /**< \brief (TWIM Offset: 0x3C) Slew Rate Register */\r
+  RwReg   TWIM_HSSRR;       /**< \brief (TWIM Offset: 0x40) HS-mode Slew Rate Register */\r
+} Twim;\r
+#endif /* __ASSEMBLY__ */\r
+/* -------- TWIM_CR : (TWIM Offset: 0x00) Control Register -------- */\r
+#define TWIM_CR_MEN                 (0x1u <<  0) /**< \brief (TWIM_CR) Master Enable */\r
+#define TWIM_CR_MDIS                (0x1u <<  1) /**< \brief (TWIM_CR) Master Disable */\r
+#define TWIM_CR_SMEN                (0x1u <<  4) /**< \brief (TWIM_CR) SMBus Enable */\r
+#define TWIM_CR_SMDIS               (0x1u <<  5) /**< \brief (TWIM_CR) SMBus Disable */\r
+#define TWIM_CR_SWRST               (0x1u <<  7) /**< \brief (TWIM_CR) Software Reset */\r
+#define TWIM_CR_STOP                (0x1u <<  8) /**< \brief (TWIM_CR) Stop the current transfer */\r
+/* -------- TWIM_CWGR : (TWIM Offset: 0x04) Clock Waveform Generator Register -------- */\r
+#define TWIM_CWGR_LOW_Pos           0\r
+#define TWIM_CWGR_LOW_Msk           (0xFFu << TWIM_CWGR_LOW_Pos) /**< \brief (TWIM_CWGR) Clock Low Cycles */\r
+#define TWIM_CWGR_LOW(value)        ((TWIM_CWGR_LOW_Msk & ((value) << TWIM_CWGR_LOW_Pos)))\r
+#define TWIM_CWGR_HIGH_Pos          8\r
+#define TWIM_CWGR_HIGH_Msk          (0xFFu << TWIM_CWGR_HIGH_Pos) /**< \brief (TWIM_CWGR) Clock High Cycles */\r
+#define TWIM_CWGR_HIGH(value)       ((TWIM_CWGR_HIGH_Msk & ((value) << TWIM_CWGR_HIGH_Pos)))\r
+#define TWIM_CWGR_STASTO_Pos        16\r
+#define TWIM_CWGR_STASTO_Msk        (0xFFu << TWIM_CWGR_STASTO_Pos) /**< \brief (TWIM_CWGR) START and STOP Cycles */\r
+#define TWIM_CWGR_STASTO(value)     ((TWIM_CWGR_STASTO_Msk & ((value) << TWIM_CWGR_STASTO_Pos)))\r
+#define TWIM_CWGR_DATA_Pos          24\r
+#define TWIM_CWGR_DATA_Msk          (0xFu << TWIM_CWGR_DATA_Pos) /**< \brief (TWIM_CWGR) Data Setup and Hold Cycles */\r
+#define TWIM_CWGR_DATA(value)       ((TWIM_CWGR_DATA_Msk & ((value) << TWIM_CWGR_DATA_Pos)))\r
+#define TWIM_CWGR_EXP_Pos           28\r
+#define TWIM_CWGR_EXP_Msk           (0x7u << TWIM_CWGR_EXP_Pos) /**< \brief (TWIM_CWGR) Clock Prescaler */\r
+#define TWIM_CWGR_EXP(value)        ((TWIM_CWGR_EXP_Msk & ((value) << TWIM_CWGR_EXP_Pos)))\r
+/* -------- TWIM_SMBTR : (TWIM Offset: 0x08) SMBus Timing Register -------- */\r
+#define TWIM_SMBTR_TLOWS_Pos        0\r
+#define TWIM_SMBTR_TLOWS_Msk        (0xFFu << TWIM_SMBTR_TLOWS_Pos) /**< \brief (TWIM_SMBTR) Slave Clock stretch maximum cycles */\r
+#define TWIM_SMBTR_TLOWS(value)     ((TWIM_SMBTR_TLOWS_Msk & ((value) << TWIM_SMBTR_TLOWS_Pos)))\r
+#define TWIM_SMBTR_TLOWM_Pos        8\r
+#define TWIM_SMBTR_TLOWM_Msk        (0xFFu << TWIM_SMBTR_TLOWM_Pos) /**< \brief (TWIM_SMBTR) Master Clock stretch maximum cycles */\r
+#define TWIM_SMBTR_TLOWM(value)     ((TWIM_SMBTR_TLOWM_Msk & ((value) << TWIM_SMBTR_TLOWM_Pos)))\r
+#define TWIM_SMBTR_THMAX_Pos        16\r
+#define TWIM_SMBTR_THMAX_Msk        (0xFFu << TWIM_SMBTR_THMAX_Pos) /**< \brief (TWIM_SMBTR) Clock High maximum cycles */\r
+#define TWIM_SMBTR_THMAX(value)     ((TWIM_SMBTR_THMAX_Msk & ((value) << TWIM_SMBTR_THMAX_Pos)))\r
+#define TWIM_SMBTR_EXP_Pos          28\r
+#define TWIM_SMBTR_EXP_Msk          (0xFu << TWIM_SMBTR_EXP_Pos) /**< \brief (TWIM_SMBTR) SMBus Timeout Clock prescaler */\r
+#define TWIM_SMBTR_EXP(value)       ((TWIM_SMBTR_EXP_Msk & ((value) << TWIM_SMBTR_EXP_Pos)))\r
+/* -------- TWIM_CMDR : (TWIM Offset: 0x0C) Command Register -------- */\r
+#define TWIM_CMDR_READ              (0x1u <<  0) /**< \brief (TWIM_CMDR) Transfer Direction */\r
+#define TWIM_CMDR_SADR_Pos          1\r
+#define TWIM_CMDR_SADR_Msk          (0x3FFu << TWIM_CMDR_SADR_Pos) /**< \brief (TWIM_CMDR) Slave Address */\r
+#define TWIM_CMDR_SADR(value)       ((TWIM_CMDR_SADR_Msk & ((value) << TWIM_CMDR_SADR_Pos)))\r
+#define TWIM_CMDR_TENBIT            (0x1u << 11) /**< \brief (TWIM_CMDR) Ten Bit Addressing Mode */\r
+#define TWIM_CMDR_REPSAME           (0x1u << 12) /**< \brief (TWIM_CMDR) Transfer is to same address as previous address */\r
+#define TWIM_CMDR_START             (0x1u << 13) /**< \brief (TWIM_CMDR) Send START condition */\r
+#define TWIM_CMDR_STOP              (0x1u << 14) /**< \brief (TWIM_CMDR) Send STOP condition */\r
+#define TWIM_CMDR_VALID             (0x1u << 15) /**< \brief (TWIM_CMDR) CMDR Valid */\r
+#define TWIM_CMDR_NBYTES_Pos        16\r
+#define TWIM_CMDR_NBYTES_Msk        (0xFFu << TWIM_CMDR_NBYTES_Pos) /**< \brief (TWIM_CMDR) Number of data bytes in transfer */\r
+#define TWIM_CMDR_NBYTES(value)     ((TWIM_CMDR_NBYTES_Msk & ((value) << TWIM_CMDR_NBYTES_Pos)))\r
+#define TWIM_CMDR_PECEN             (0x1u << 24) /**< \brief (TWIM_CMDR) Packet Error Checking Enable */\r
+#define TWIM_CMDR_ACKLAST           (0x1u << 25) /**< \brief (TWIM_CMDR) ACK Last Master RX Byte */\r
+#define TWIM_CMDR_HS                (0x1u << 26) /**< \brief (TWIM_CMDR) HS-mode */\r
+#define TWIM_CMDR_HSMCODE_Pos       28\r
+#define TWIM_CMDR_HSMCODE_Msk       (0x7u << TWIM_CMDR_HSMCODE_Pos) /**< \brief (TWIM_CMDR) HS-mode Master Code */\r
+#define TWIM_CMDR_HSMCODE(value)    ((TWIM_CMDR_HSMCODE_Msk & ((value) << TWIM_CMDR_HSMCODE_Pos)))\r
+/* -------- TWIM_NCMDR : (TWIM Offset: 0x10) Next Command Register -------- */\r
+#define TWIM_NCMDR_READ             (0x1u <<  0) /**< \brief (TWIM_NCMDR) Transfer Direction */\r
+#define TWIM_NCMDR_SADR_Pos         1\r
+#define TWIM_NCMDR_SADR_Msk         (0x3FFu << TWIM_NCMDR_SADR_Pos) /**< \brief (TWIM_NCMDR) Slave Address */\r
+#define TWIM_NCMDR_SADR(value)      ((TWIM_NCMDR_SADR_Msk & ((value) << TWIM_NCMDR_SADR_Pos)))\r
+#define TWIM_NCMDR_TENBIT           (0x1u << 11) /**< \brief (TWIM_NCMDR) Ten Bit Addressing Mode */\r
+#define TWIM_NCMDR_REPSAME          (0x1u << 12) /**< \brief (TWIM_NCMDR) Transfer is to same address as previous address */\r
+#define TWIM_NCMDR_START            (0x1u << 13) /**< \brief (TWIM_NCMDR) Send START condition */\r
+#define TWIM_NCMDR_STOP             (0x1u << 14) /**< \brief (TWIM_NCMDR) Send STOP condition */\r
+#define TWIM_NCMDR_VALID            (0x1u << 15) /**< \brief (TWIM_NCMDR) CMDR Valid */\r
+#define TWIM_NCMDR_NBYTES_Pos       16\r
+#define TWIM_NCMDR_NBYTES_Msk       (0xFFu << TWIM_NCMDR_NBYTES_Pos) /**< \brief (TWIM_NCMDR) Number of data bytes in transfer */\r
+#define TWIM_NCMDR_NBYTES(value)    ((TWIM_NCMDR_NBYTES_Msk & ((value) << TWIM_NCMDR_NBYTES_Pos)))\r
+#define TWIM_NCMDR_PECEN            (0x1u << 24) /**< \brief (TWIM_NCMDR) Packet Error Checking Enable */\r
+#define TWIM_NCMDR_ACKLAST          (0x1u << 25) /**< \brief (TWIM_NCMDR) ACK Last Master RX Byte */\r
+#define TWIM_NCMDR_HS               (0x1u << 26) /**< \brief (TWIM_NCMDR) HS-mode */\r
+#define TWIM_NCMDR_HSMCODE_Pos      28\r
+#define TWIM_NCMDR_HSMCODE_Msk      (0x7u << TWIM_NCMDR_HSMCODE_Pos) /**< \brief (TWIM_NCMDR) HS-mode Master Code */\r
+#define TWIM_NCMDR_HSMCODE(value)   ((TWIM_NCMDR_HSMCODE_Msk & ((value) << TWIM_NCMDR_HSMCODE_Pos)))\r
+/* -------- TWIM_RHR : (TWIM Offset: 0x14) Receive Holding Register -------- */\r
+#define TWIM_RHR_RXDATA_Pos         0\r
+#define TWIM_RHR_RXDATA_Msk         (0xFFu << TWIM_RHR_RXDATA_Pos) /**< \brief (TWIM_RHR) Received Data */\r
+#define TWIM_RHR_RXDATA(value)      ((TWIM_RHR_RXDATA_Msk & ((value) << TWIM_RHR_RXDATA_Pos)))\r
+/* -------- TWIM_THR : (TWIM Offset: 0x18) Transmit Holding Register -------- */\r
+#define TWIM_THR_TXDATA_Pos         0\r
+#define TWIM_THR_TXDATA_Msk         (0xFFu << TWIM_THR_TXDATA_Pos) /**< \brief (TWIM_THR) Data to Transmit */\r
+#define TWIM_THR_TXDATA(value)      ((TWIM_THR_TXDATA_Msk & ((value) << TWIM_THR_TXDATA_Pos)))\r
+/* -------- TWIM_SR : (TWIM Offset: 0x1C) Status Register -------- */\r
+#define TWIM_SR_RXRDY               (0x1u <<  0) /**< \brief (TWIM_SR) RHR Data Ready */\r
+#define TWIM_SR_TXRDY               (0x1u <<  1) /**< \brief (TWIM_SR) THR Data Ready */\r
+#define TWIM_SR_CRDY                (0x1u <<  2) /**< \brief (TWIM_SR) Ready for More Commands */\r
+#define TWIM_SR_CCOMP               (0x1u <<  3) /**< \brief (TWIM_SR) Command Complete */\r
+#define TWIM_SR_IDLE                (0x1u <<  4) /**< \brief (TWIM_SR) Master Interface is Idle */\r
+#define TWIM_SR_BUSFREE             (0x1u <<  5) /**< \brief (TWIM_SR) Two-wire Bus is Free */\r
+#define TWIM_SR_ANAK                (0x1u <<  8) /**< \brief (TWIM_SR) NAK in Address Phase Received */\r
+#define TWIM_SR_DNAK                (0x1u <<  9) /**< \brief (TWIM_SR) NAK in Data Phase Received */\r
+#define TWIM_SR_ARBLST              (0x1u << 10) /**< \brief (TWIM_SR) Arbitration Lost */\r
+#define TWIM_SR_SMBALERT            (0x1u << 11) /**< \brief (TWIM_SR) SMBus Alert */\r
+#define TWIM_SR_TOUT                (0x1u << 12) /**< \brief (TWIM_SR) Timeout */\r
+#define TWIM_SR_PECERR              (0x1u << 13) /**< \brief (TWIM_SR) PEC Error */\r
+#define TWIM_SR_STOP                (0x1u << 14) /**< \brief (TWIM_SR) Stop Request Accepted */\r
+#define TWIM_SR_MENB                (0x1u << 16) /**< \brief (TWIM_SR) Master Interface Enable */\r
+#define TWIM_SR_HSMCACK             (0x1u << 17) /**< \brief (TWIM_SR) ACK in HS-mode Master Code Phase Received */\r
+/* -------- TWIM_IER : (TWIM Offset: 0x20) Interrupt Enable Register -------- */\r
+#define TWIM_IER_RXRDY              (0x1u <<  0) /**< \brief (TWIM_IER) RHR Data Ready */\r
+#define TWIM_IER_TXRDY              (0x1u <<  1) /**< \brief (TWIM_IER) THR Data Ready */\r
+#define TWIM_IER_CRDY               (0x1u <<  2) /**< \brief (TWIM_IER) Ready for More Commands */\r
+#define TWIM_IER_CCOMP              (0x1u <<  3) /**< \brief (TWIM_IER) Command Complete */\r
+#define TWIM_IER_IDLE               (0x1u <<  4) /**< \brief (TWIM_IER) Master Interface is Idle */\r
+#define TWIM_IER_BUSFREE            (0x1u <<  5) /**< \brief (TWIM_IER) Two-wire Bus is Free */\r
+#define TWIM_IER_ANAK               (0x1u <<  8) /**< \brief (TWIM_IER) NAK in Address Phase Received */\r
+#define TWIM_IER_DNAK               (0x1u <<  9) /**< \brief (TWIM_IER) NAK in Data Phase Received */\r
+#define TWIM_IER_ARBLST             (0x1u << 10) /**< \brief (TWIM_IER) Arbitration Lost */\r
+#define TWIM_IER_SMBALERT           (0x1u << 11) /**< \brief (TWIM_IER) SMBus Alert */\r
+#define TWIM_IER_TOUT               (0x1u << 12) /**< \brief (TWIM_IER) Timeout */\r
+#define TWIM_IER_PECERR             (0x1u << 13) /**< \brief (TWIM_IER) PEC Error */\r
+#define TWIM_IER_STOP               (0x1u << 14) /**< \brief (TWIM_IER) Stop Request Accepted */\r
+#define TWIM_IER_HSMCACK            (0x1u << 17) /**< \brief (TWIM_IER) ACK in HS-mode Master Code Phase Received */\r
+/* -------- TWIM_IDR : (TWIM Offset: 0x24) Interrupt Disable Register -------- */\r
+#define TWIM_IDR_RXRDY              (0x1u <<  0) /**< \brief (TWIM_IDR) RHR Data Ready */\r
+#define TWIM_IDR_TXRDY              (0x1u <<  1) /**< \brief (TWIM_IDR) THR Data Ready */\r
+#define TWIM_IDR_CRDY               (0x1u <<  2) /**< \brief (TWIM_IDR) Ready for More Commands */\r
+#define TWIM_IDR_CCOMP              (0x1u <<  3) /**< \brief (TWIM_IDR) Command Complete */\r
+#define TWIM_IDR_IDLE               (0x1u <<  4) /**< \brief (TWIM_IDR) Master Interface is Idle */\r
+#define TWIM_IDR_BUSFREE            (0x1u <<  5) /**< \brief (TWIM_IDR) Two-wire Bus is Free */\r
+#define TWIM_IDR_ANAK               (0x1u <<  8) /**< \brief (TWIM_IDR) NAK in Address Phase Received */\r
+#define TWIM_IDR_DNAK               (0x1u <<  9) /**< \brief (TWIM_IDR) NAK in Data Phase Received */\r
+#define TWIM_IDR_ARBLST             (0x1u << 10) /**< \brief (TWIM_IDR) Arbitration Lost */\r
+#define TWIM_IDR_SMBALERT           (0x1u << 11) /**< \brief (TWIM_IDR) SMBus Alert */\r
+#define TWIM_IDR_TOUT               (0x1u << 12) /**< \brief (TWIM_IDR) Timeout */\r
+#define TWIM_IDR_PECERR             (0x1u << 13) /**< \brief (TWIM_IDR) PEC Error */\r
+#define TWIM_IDR_STOP               (0x1u << 14) /**< \brief (TWIM_IDR) Stop Request Accepted */\r
+#define TWIM_IDR_HSMCACK            (0x1u << 17) /**< \brief (TWIM_IDR) ACK in HS-mode Master Code Phase Received */\r
+/* -------- TWIM_IMR : (TWIM Offset: 0x28) Interrupt Mask Register -------- */\r
+#define TWIM_IMR_RXRDY              (0x1u <<  0) /**< \brief (TWIM_IMR) RHR Data Ready */\r
+#define TWIM_IMR_TXRDY              (0x1u <<  1) /**< \brief (TWIM_IMR) THR Data Ready */\r
+#define TWIM_IMR_CRDY               (0x1u <<  2) /**< \brief (TWIM_IMR) Ready for More Commands */\r
+#define TWIM_IMR_CCOMP              (0x1u <<  3) /**< \brief (TWIM_IMR) Command Complete */\r
+#define TWIM_IMR_IDLE               (0x1u <<  4) /**< \brief (TWIM_IMR) Master Interface is Idle */\r
+#define TWIM_IMR_BUSFREE            (0x1u <<  5) /**< \brief (TWIM_IMR) Two-wire Bus is Free */\r
+#define TWIM_IMR_ANAK               (0x1u <<  8) /**< \brief (TWIM_IMR) NAK in Address Phase Received */\r
+#define TWIM_IMR_DNAK               (0x1u <<  9) /**< \brief (TWIM_IMR) NAK in Data Phase Received */\r
+#define TWIM_IMR_ARBLST             (0x1u << 10) /**< \brief (TWIM_IMR) Arbitration Lost */\r
+#define TWIM_IMR_SMBALERT           (0x1u << 11) /**< \brief (TWIM_IMR) SMBus Alert */\r
+#define TWIM_IMR_TOUT               (0x1u << 12) /**< \brief (TWIM_IMR) Timeout */\r
+#define TWIM_IMR_PECERR             (0x1u << 13) /**< \brief (TWIM_IMR) PEC Error */\r
+#define TWIM_IMR_STOP               (0x1u << 14) /**< \brief (TWIM_IMR) Stop Request Accepted */\r
+#define TWIM_IMR_HSMCACK            (0x1u << 17) /**< \brief (TWIM_IMR) ACK in HS-mode Master Code Phase Received */\r
+/* -------- TWIM_SCR : (TWIM Offset: 0x2C) Status Clear Register -------- */\r
+#define TWIM_SCR_CCOMP              (0x1u <<  3) /**< \brief (TWIM_SCR) Command Complete */\r
+#define TWIM_SCR_ANAK               (0x1u <<  8) /**< \brief (TWIM_SCR) NAK in Address Phase Received */\r
+#define TWIM_SCR_DNAK               (0x1u <<  9) /**< \brief (TWIM_SCR) NAK in Data Phase Received */\r
+#define TWIM_SCR_ARBLST             (0x1u << 10) /**< \brief (TWIM_SCR) Arbitration Lost */\r
+#define TWIM_SCR_SMBALERT           (0x1u << 11) /**< \brief (TWIM_SCR) SMBus Alert */\r
+#define TWIM_SCR_TOUT               (0x1u << 12) /**< \brief (TWIM_SCR) Timeout */\r
+#define TWIM_SCR_PECERR             (0x1u << 13) /**< \brief (TWIM_SCR) PEC Error */\r
+#define TWIM_SCR_STOP               (0x1u << 14) /**< \brief (TWIM_SCR) Stop Request Accepted */\r
+#define TWIM_SCR_HSMCACK            (0x1u << 17) /**< \brief (TWIM_SCR) ACK in HS-mode Master Code Phase Received */\r
+/* -------- TWIM_PR : (TWIM Offset: 0x30) Parameter Register -------- */\r
+#define TWIM_PR_HS                  (0x1u <<  0) /**< \brief (TWIM_PR) HS-mode */\r
+/* -------- TWIM_VR : (TWIM Offset: 0x34) Version Register -------- */\r
+#define TWIM_VR_VERSION_Pos         0\r
+#define TWIM_VR_VERSION_Msk         (0xFFFu << TWIM_VR_VERSION_Pos) /**< \brief (TWIM_VR) Version number */\r
+#define TWIM_VR_VERSION(value)      ((TWIM_VR_VERSION_Msk & ((value) << TWIM_VR_VERSION_Pos)))\r
+#define TWIM_VR_VARIANT_Pos         16\r
+#define TWIM_VR_VARIANT_Msk         (0xFu << TWIM_VR_VARIANT_Pos) /**< \brief (TWIM_VR) Variant number */\r
+#define TWIM_VR_VARIANT(value)      ((TWIM_VR_VARIANT_Msk & ((value) << TWIM_VR_VARIANT_Pos)))\r
+/* -------- TWIM_HSCWGR : (TWIM Offset: 0x38) HS-mode Clock Waveform Generator -------- */\r
+#define TWIM_HSCWGR_LOW_Pos         0\r
+#define TWIM_HSCWGR_LOW_Msk         (0xFFu << TWIM_HSCWGR_LOW_Pos) /**< \brief (TWIM_HSCWGR) Clock Low Cycles */\r
+#define TWIM_HSCWGR_LOW(value)      ((TWIM_HSCWGR_LOW_Msk & ((value) << TWIM_HSCWGR_LOW_Pos)))\r
+#define TWIM_HSCWGR_HIGH_Pos        8\r
+#define TWIM_HSCWGR_HIGH_Msk        (0xFFu << TWIM_HSCWGR_HIGH_Pos) /**< \brief (TWIM_HSCWGR) Clock High Cycles */\r
+#define TWIM_HSCWGR_HIGH(value)     ((TWIM_HSCWGR_HIGH_Msk & ((value) << TWIM_HSCWGR_HIGH_Pos)))\r
+#define TWIM_HSCWGR_STASTO_Pos      16\r
+#define TWIM_HSCWGR_STASTO_Msk      (0xFFu << TWIM_HSCWGR_STASTO_Pos) /**< \brief (TWIM_HSCWGR) START and STOP Cycles */\r
+#define TWIM_HSCWGR_STASTO(value)   ((TWIM_HSCWGR_STASTO_Msk & ((value) << TWIM_HSCWGR_STASTO_Pos)))\r
+#define TWIM_HSCWGR_DATA_Pos        24\r
+#define TWIM_HSCWGR_DATA_Msk        (0xFu << TWIM_HSCWGR_DATA_Pos) /**< \brief (TWIM_HSCWGR) Data Setup and Hold Cycles */\r
+#define TWIM_HSCWGR_DATA(value)     ((TWIM_HSCWGR_DATA_Msk & ((value) << TWIM_HSCWGR_DATA_Pos)))\r
+#define TWIM_HSCWGR_EXP_Pos         28\r
+#define TWIM_HSCWGR_EXP_Msk         (0x7u << TWIM_HSCWGR_EXP_Pos) /**< \brief (TWIM_HSCWGR) Clock Prescaler */\r
+#define TWIM_HSCWGR_EXP(value)      ((TWIM_HSCWGR_EXP_Msk & ((value) << TWIM_HSCWGR_EXP_Pos)))\r
+/* -------- TWIM_SRR : (TWIM Offset: 0x3C) Slew Rate Register -------- */\r
+#define TWIM_SRR_DADRIVEL_Pos       0\r
+#define TWIM_SRR_DADRIVEL_Msk       (0x7u << TWIM_SRR_DADRIVEL_Pos) /**< \brief (TWIM_SRR) Data Drive Strength LOW */\r
+#define TWIM_SRR_DADRIVEL(value)    ((TWIM_SRR_DADRIVEL_Msk & ((value) << TWIM_SRR_DADRIVEL_Pos)))\r
+#define TWIM_SRR_DASLEW_Pos         8\r
+#define TWIM_SRR_DASLEW_Msk         (0x3u << TWIM_SRR_DASLEW_Pos) /**< \brief (TWIM_SRR) Data Slew Limit */\r
+#define TWIM_SRR_DASLEW(value)      ((TWIM_SRR_DASLEW_Msk & ((value) << TWIM_SRR_DASLEW_Pos)))\r
+#define TWIM_SRR_CLDRIVEL_Pos       16\r
+#define TWIM_SRR_CLDRIVEL_Msk       (0x7u << TWIM_SRR_CLDRIVEL_Pos) /**< \brief (TWIM_SRR) Clock Drive Strength LOW */\r
+#define TWIM_SRR_CLDRIVEL(value)    ((TWIM_SRR_CLDRIVEL_Msk & ((value) << TWIM_SRR_CLDRIVEL_Pos)))\r
+#define TWIM_SRR_CLSLEW_Pos         24\r
+#define TWIM_SRR_CLSLEW_Msk         (0x3u << TWIM_SRR_CLSLEW_Pos) /**< \brief (TWIM_SRR) Clock Slew Limit */\r
+#define TWIM_SRR_CLSLEW(value)      ((TWIM_SRR_CLSLEW_Msk & ((value) << TWIM_SRR_CLSLEW_Pos)))\r
+#define TWIM_SRR_FILTER_Pos         28\r
+#define TWIM_SRR_FILTER_Msk         (0x3u << TWIM_SRR_FILTER_Pos) /**< \brief (TWIM_SRR) Input Spike Filter Control */\r
+#define TWIM_SRR_FILTER(value)      ((TWIM_SRR_FILTER_Msk & ((value) << TWIM_SRR_FILTER_Pos)))\r
+/* -------- TWIM_HSSRR : (TWIM Offset: 0x40) HS-mode Slew Rate Register -------- */\r
+#define TWIM_HSSRR_DADRIVEL_Pos     0\r
+#define TWIM_HSSRR_DADRIVEL_Msk     (0x7u << TWIM_HSSRR_DADRIVEL_Pos) /**< \brief (TWIM_HSSRR) Data Drive Strength LOW */\r
+#define TWIM_HSSRR_DADRIVEL(value)  ((TWIM_HSSRR_DADRIVEL_Msk & ((value) << TWIM_HSSRR_DADRIVEL_Pos)))\r
+#define TWIM_HSSRR_DASLEW_Pos       8\r
+#define TWIM_HSSRR_DASLEW_Msk       (0x3u << TWIM_HSSRR_DASLEW_Pos) /**< \brief (TWIM_HSSRR) Data Slew Limit */\r
+#define TWIM_HSSRR_DASLEW(value)    ((TWIM_HSSRR_DASLEW_Msk & ((value) << TWIM_HSSRR_DASLEW_Pos)))\r
+#define TWIM_HSSRR_CLDRIVEL_Pos     16\r
+#define TWIM_HSSRR_CLDRIVEL_Msk     (0x7u << TWIM_HSSRR_CLDRIVEL_Pos) /**< \brief (TWIM_HSSRR) Clock Drive Strength LOW */\r
+#define TWIM_HSSRR_CLDRIVEL(value)  ((TWIM_HSSRR_CLDRIVEL_Msk & ((value) << TWIM_HSSRR_CLDRIVEL_Pos)))\r
+#define TWIM_HSSRR_CLDRIVEH_Pos     20\r
+#define TWIM_HSSRR_CLDRIVEH_Msk     (0x3u << TWIM_HSSRR_CLDRIVEH_Pos) /**< \brief (TWIM_HSSRR) Clock Drive Strength HIGH */\r
+#define TWIM_HSSRR_CLDRIVEH(value)  ((TWIM_HSSRR_CLDRIVEH_Msk & ((value) << TWIM_HSSRR_CLDRIVEH_Pos)))\r
+#define TWIM_HSSRR_CLSLEW_Pos       24\r
+#define TWIM_HSSRR_CLSLEW_Msk       (0x3u << TWIM_HSSRR_CLSLEW_Pos) /**< \brief (TWIM_HSSRR) Clock Slew Limit */\r
+#define TWIM_HSSRR_CLSLEW(value)    ((TWIM_HSSRR_CLSLEW_Msk & ((value) << TWIM_HSSRR_CLSLEW_Pos)))\r
+#define TWIM_HSSRR_FILTER_Pos       28\r
+#define TWIM_HSSRR_FILTER_Msk       (0x3u << TWIM_HSSRR_FILTER_Pos) /**< \brief (TWIM_HSSRR) Input Spike Filter Control */\r
+#define TWIM_HSSRR_FILTER(value)    ((TWIM_HSSRR_FILTER_Msk & ((value) << TWIM_HSSRR_FILTER_Pos)))\r
+\r
+/*@}*/\r
+\r
+/* ============================================================================= */\r
+/**  SOFTWARE API DEFINITION FOR TWIS */\r
+/* ============================================================================= */\r
+/** \addtogroup SAM4L_TWIS Two-wire Slave Interface */\r
+/*@{*/\r
+\r
+#define REV_TWIS       0x140\r
+\r
+#ifndef __ASSEMBLY__\r
+/** \brief TWIS hardware registers */\r
+typedef struct {\r
+  RwReg   TWIS_CR;          /**< \brief (TWIS Offset: 0x00) Control Register */\r
+  RwReg   TWIS_NBYTES;      /**< \brief (TWIS Offset: 0x04) NBYTES Register */\r
+  RwReg   TWIS_TR;          /**< \brief (TWIS Offset: 0x08) Timing Register */\r
+  RoReg   TWIS_RHR;         /**< \brief (TWIS Offset: 0x0C) Receive Holding Register */\r
+  WoReg   TWIS_THR;         /**< \brief (TWIS Offset: 0x10) Transmit Holding Register */\r
+  RoReg   TWIS_PECR;        /**< \brief (TWIS Offset: 0x14) Packet Error Check Register */\r
+  RoReg   TWIS_SR;          /**< \brief (TWIS Offset: 0x18) Status Register */\r
+  WoReg   TWIS_IER;         /**< \brief (TWIS Offset: 0x1C) Interrupt Enable Register */\r
+  WoReg   TWIS_IDR;         /**< \brief (TWIS Offset: 0x20) Interrupt Disable Register */\r
+  RoReg   TWIS_IMR;         /**< \brief (TWIS Offset: 0x24) Interrupt Mask Register */\r
+  WoReg   TWIS_SCR;         /**< \brief (TWIS Offset: 0x28) Status Clear Register */\r
+  RoReg   TWIS_PR;          /**< \brief (TWIS Offset: 0x2C) Parameter Register */\r
+  RoReg   TWIS_VR;          /**< \brief (TWIS Offset: 0x30) Version Register */\r
+  RwReg   TWIS_HSTR;        /**< \brief (TWIS Offset: 0x34) HS-mode Timing Register */\r
+  RwReg   TWIS_SRR;         /**< \brief (TWIS Offset: 0x38) Slew Rate Register */\r
+  RwReg   TWIS_HSSRR;       /**< \brief (TWIS Offset: 0x3C) HS-mode Slew Rate Register */\r
+} Twis;\r
+#endif /* __ASSEMBLY__ */\r
+/* -------- TWIS_CR : (TWIS Offset: 0x00) Control Register -------- */\r
+#define TWIS_CR_SEN                 (0x1u <<  0) /**< \brief (TWIS_CR) Slave Enable */\r
+#define TWIS_CR_SMEN                (0x1u <<  1) /**< \brief (TWIS_CR) SMBus Mode Enable */\r
+#define TWIS_CR_SMATCH              (0x1u <<  2) /**< \brief (TWIS_CR) Slave Address Match */\r
+#define TWIS_CR_GCMATCH             (0x1u <<  3) /**< \brief (TWIS_CR) General Call Address Match */\r
+#define TWIS_CR_STREN               (0x1u <<  4) /**< \brief (TWIS_CR) Clock Stretch Enable */\r
+#define TWIS_CR_SWRST               (0x1u <<  7) /**< \brief (TWIS_CR) Software Reset */\r
+#define TWIS_CR_SMBALERT            (0x1u <<  8) /**< \brief (TWIS_CR) SMBus Alert */\r
+#define TWIS_CR_SMDA                (0x1u <<  9) /**< \brief (TWIS_CR) SMBus Default Address */\r
+#define TWIS_CR_SMHH                (0x1u << 10) /**< \brief (TWIS_CR) SMBus Host Header */\r
+#define TWIS_CR_PECEN               (0x1u << 11) /**< \brief (TWIS_CR) Packet Error Checking Enable */\r
+#define TWIS_CR_ACK                 (0x1u << 12) /**< \brief (TWIS_CR) Slave Receiver Data Phase ACK Value */\r
+#define TWIS_CR_CUP                 (0x1u << 13) /**< \brief (TWIS_CR) NBYTES Count Up */\r
+#define TWIS_CR_SOAM                (0x1u << 14) /**< \brief (TWIS_CR) Stretch Clock on Address Match */\r
+#define TWIS_CR_SODR                (0x1u << 15) /**< \brief (TWIS_CR) Stretch Clock on Data Byte Reception */\r
+#define TWIS_CR_ADR_Pos             16\r
+#define TWIS_CR_ADR_Msk             (0x3FFu << TWIS_CR_ADR_Pos) /**< \brief (TWIS_CR) Slave Address */\r
+#define TWIS_CR_ADR(value)          ((TWIS_CR_ADR_Msk & ((value) << TWIS_CR_ADR_Pos)))\r
+#define TWIS_CR_TENBIT              (0x1u << 26) /**< \brief (TWIS_CR) Ten Bit Address Match */\r
+#define TWIS_CR_BRIDGE              (0x1u << 27) /**< \brief (TWIS_CR) Bridge Control Enable */\r
+/* -------- TWIS_NBYTES : (TWIS Offset: 0x04) NBYTES Register -------- */\r
+#define TWIS_NBYTES_NBYTES_Pos      0\r
+#define TWIS_NBYTES_NBYTES_Msk      (0xFFu << TWIS_NBYTES_NBYTES_Pos) /**< \brief (TWIS_NBYTES) Number of Bytes to Transfer */\r
+#define TWIS_NBYTES_NBYTES(value)   ((TWIS_NBYTES_NBYTES_Msk & ((value) << TWIS_NBYTES_NBYTES_Pos)))\r
+/* -------- TWIS_TR : (TWIS Offset: 0x08) Timing Register -------- */\r
+#define TWIS_TR_TLOWS_Pos           0\r
+#define TWIS_TR_TLOWS_Msk           (0xFFu << TWIS_TR_TLOWS_Pos) /**< \brief (TWIS_TR) SMBus Tlow:sext Cycles */\r
+#define TWIS_TR_TLOWS(value)        ((TWIS_TR_TLOWS_Msk & ((value) << TWIS_TR_TLOWS_Pos)))\r
+#define TWIS_TR_TTOUT_Pos           8\r
+#define TWIS_TR_TTOUT_Msk           (0xFFu << TWIS_TR_TTOUT_Pos) /**< \brief (TWIS_TR) SMBus Ttimeout Cycles */\r
+#define TWIS_TR_TTOUT(value)        ((TWIS_TR_TTOUT_Msk & ((value) << TWIS_TR_TTOUT_Pos)))\r
+#define TWIS_TR_SUDAT_Pos           16\r
+#define TWIS_TR_SUDAT_Msk           (0xFFu << TWIS_TR_SUDAT_Pos) /**< \brief (TWIS_TR) Data Setup Cycles */\r
+#define TWIS_TR_SUDAT(value)        ((TWIS_TR_SUDAT_Msk & ((value) << TWIS_TR_SUDAT_Pos)))\r
+#define TWIS_TR_EXP_Pos             28\r
+#define TWIS_TR_EXP_Msk             (0xFu << TWIS_TR_EXP_Pos) /**< \brief (TWIS_TR) Clock Prescaler */\r
+#define TWIS_TR_EXP(value)          ((TWIS_TR_EXP_Msk & ((value) << TWIS_TR_EXP_Pos)))\r
+/* -------- TWIS_RHR : (TWIS Offset: 0x0C) Receive Holding Register -------- */\r
+#define TWIS_RHR_RXDATA_Pos         0\r
+#define TWIS_RHR_RXDATA_Msk         (0xFFu << TWIS_RHR_RXDATA_Pos) /**< \brief (TWIS_RHR) Received Data Byte */\r
+#define TWIS_RHR_RXDATA(value)      ((TWIS_RHR_RXDATA_Msk & ((value) << TWIS_RHR_RXDATA_Pos)))\r
+/* -------- TWIS_THR : (TWIS Offset: 0x10) Transmit Holding Register -------- */\r
+#define TWIS_THR_TXDATA_Pos         0\r
+#define TWIS_THR_TXDATA_Msk         (0xFFu << TWIS_THR_TXDATA_Pos) /**< \brief (TWIS_THR) Data Byte to Transmit */\r
+#define TWIS_THR_TXDATA(value)      ((TWIS_THR_TXDATA_Msk & ((value) << TWIS_THR_TXDATA_Pos)))\r
+/* -------- TWIS_PECR : (TWIS Offset: 0x14) Packet Error Check Register -------- */\r
+#define TWIS_PECR_PEC_Pos           0\r
+#define TWIS_PECR_PEC_Msk           (0xFFu << TWIS_PECR_PEC_Pos) /**< \brief (TWIS_PECR) Calculated PEC Value */\r
+#define TWIS_PECR_PEC(value)        ((TWIS_PECR_PEC_Msk & ((value) << TWIS_PECR_PEC_Pos)))\r
+/* -------- TWIS_SR : (TWIS Offset: 0x18) Status Register -------- */\r
+#define TWIS_SR_RXRDY               (0x1u <<  0) /**< \brief (TWIS_SR) RX Buffer Ready */\r
+#define TWIS_SR_TXRDY               (0x1u <<  1) /**< \brief (TWIS_SR) TX Buffer Ready */\r
+#define TWIS_SR_SEN                 (0x1u <<  2) /**< \brief (TWIS_SR) Slave Enabled */\r
+#define TWIS_SR_TCOMP               (0x1u <<  3) /**< \brief (TWIS_SR) Transmission Complete */\r
+#define TWIS_SR_TRA                 (0x1u <<  5) /**< \brief (TWIS_SR) Transmitter Mode */\r
+#define TWIS_SR_URUN                (0x1u <<  6) /**< \brief (TWIS_SR) Underrun */\r
+#define TWIS_SR_ORUN                (0x1u <<  7) /**< \brief (TWIS_SR) Overrun */\r
+#define TWIS_SR_NAK                 (0x1u <<  8) /**< \brief (TWIS_SR) NAK Received */\r
+#define TWIS_SR_SMBTOUT             (0x1u << 12) /**< \brief (TWIS_SR) SMBus Timeout */\r
+#define TWIS_SR_SMBPECERR           (0x1u << 13) /**< \brief (TWIS_SR) SMBus PEC Error */\r
+#define TWIS_SR_BUSERR              (0x1u << 14) /**< \brief (TWIS_SR) Bus Error */\r
+#define TWIS_SR_SAM                 (0x1u << 16) /**< \brief (TWIS_SR) Slave Address Match */\r
+#define TWIS_SR_GCM                 (0x1u << 17) /**< \brief (TWIS_SR) General Call Match */\r
+#define TWIS_SR_SMBALERTM           (0x1u << 18) /**< \brief (TWIS_SR) SMBus Alert Response Address Match */\r
+#define TWIS_SR_SMBHHM              (0x1u << 19) /**< \brief (TWIS_SR) SMBus Host Header Address Match */\r
+#define TWIS_SR_SMBDAM              (0x1u << 20) /**< \brief (TWIS_SR) SMBus Default Address Match */\r
+#define TWIS_SR_STO                 (0x1u << 21) /**< \brief (TWIS_SR) Stop Received */\r
+#define TWIS_SR_REP                 (0x1u << 22) /**< \brief (TWIS_SR) Repeated Start Received */\r
+#define TWIS_SR_BTF                 (0x1u << 23) /**< \brief (TWIS_SR) Byte Transfer Finished */\r
+/* -------- TWIS_IER : (TWIS Offset: 0x1C) Interrupt Enable Register -------- */\r
+#define TWIS_IER_RXRDY              (0x1u <<  0) /**< \brief (TWIS_IER) RX Buffer Ready */\r
+#define TWIS_IER_TXRDY              (0x1u <<  1) /**< \brief (TWIS_IER) TX Buffer Ready */\r
+#define TWIS_IER_TCOMP              (0x1u <<  3) /**< \brief (TWIS_IER) Transmission Complete */\r
+#define TWIS_IER_URUN               (0x1u <<  6) /**< \brief (TWIS_IER) Underrun */\r
+#define TWIS_IER_ORUN               (0x1u <<  7) /**< \brief (TWIS_IER) Overrun */\r
+#define TWIS_IER_NAK                (0x1u <<  8) /**< \brief (TWIS_IER) NAK Received */\r
+#define TWIS_IER_SMBTOUT            (0x1u << 12) /**< \brief (TWIS_IER) SMBus Timeout */\r
+#define TWIS_IER_SMBPECERR          (0x1u << 13) /**< \brief (TWIS_IER) SMBus PEC Error */\r
+#define TWIS_IER_BUSERR             (0x1u << 14) /**< \brief (TWIS_IER) Bus Error */\r
+#define TWIS_IER_SAM                (0x1u << 16) /**< \brief (TWIS_IER) Slave Address Match */\r
+#define TWIS_IER_GCM                (0x1u << 17) /**< \brief (TWIS_IER) General Call Match */\r
+#define TWIS_IER_SMBALERTM          (0x1u << 18) /**< \brief (TWIS_IER) SMBus Alert Response Address Match */\r
+#define TWIS_IER_SMBHHM             (0x1u << 19) /**< \brief (TWIS_IER) SMBus Host Header Address Match */\r
+#define TWIS_IER_SMBDAM             (0x1u << 20) /**< \brief (TWIS_IER) SMBus Default Address Match */\r
+#define TWIS_IER_STO                (0x1u << 21) /**< \brief (TWIS_IER) Stop Received */\r
+#define TWIS_IER_REP                (0x1u << 22) /**< \brief (TWIS_IER) Repeated Start Received */\r
+#define TWIS_IER_BTF                (0x1u << 23) /**< \brief (TWIS_IER) Byte Transfer Finished */\r
+/* -------- TWIS_IDR : (TWIS Offset: 0x20) Interrupt Disable Register -------- */\r
+#define TWIS_IDR_RXRDY              (0x1u <<  0) /**< \brief (TWIS_IDR) RX Buffer Ready */\r
+#define TWIS_IDR_TXRDY              (0x1u <<  1) /**< \brief (TWIS_IDR) TX Buffer Ready */\r
+#define TWIS_IDR_TCOMP              (0x1u <<  3) /**< \brief (TWIS_IDR) Transmission Complete */\r
+#define TWIS_IDR_URUN               (0x1u <<  6) /**< \brief (TWIS_IDR) Underrun */\r
+#define TWIS_IDR_ORUN               (0x1u <<  7) /**< \brief (TWIS_IDR) Overrun */\r
+#define TWIS_IDR_NAK                (0x1u <<  8) /**< \brief (TWIS_IDR) NAK Received */\r
+#define TWIS_IDR_SMBTOUT            (0x1u << 12) /**< \brief (TWIS_IDR) SMBus Timeout */\r
+#define TWIS_IDR_SMBPECERR          (0x1u << 13) /**< \brief (TWIS_IDR) SMBus PEC Error */\r
+#define TWIS_IDR_BUSERR             (0x1u << 14) /**< \brief (TWIS_IDR) Bus Error */\r
+#define TWIS_IDR_SAM                (0x1u << 16) /**< \brief (TWIS_IDR) Slave Address Match */\r
+#define TWIS_IDR_GCM                (0x1u << 17) /**< \brief (TWIS_IDR) General Call Match */\r
+#define TWIS_IDR_SMBALERTM          (0x1u << 18) /**< \brief (TWIS_IDR) SMBus Alert Response Address Match */\r
+#define TWIS_IDR_SMBHHM             (0x1u << 19) /**< \brief (TWIS_IDR) SMBus Host Header Address Match */\r
+#define TWIS_IDR_SMBDAM             (0x1u << 20) /**< \brief (TWIS_IDR) SMBus Default Address Match */\r
+#define TWIS_IDR_STO                (0x1u << 21) /**< \brief (TWIS_IDR) Stop Received */\r
+#define TWIS_IDR_REP                (0x1u << 22) /**< \brief (TWIS_IDR) Repeated Start Received */\r
+#define TWIS_IDR_BTF                (0x1u << 23) /**< \brief (TWIS_IDR) Byte Transfer Finished */\r
+/* -------- TWIS_IMR : (TWIS Offset: 0x24) Interrupt Mask Register -------- */\r
+#define TWIS_IMR_RXRDY              (0x1u <<  0) /**< \brief (TWIS_IMR) RX Buffer Ready */\r
+#define TWIS_IMR_TXRDY              (0x1u <<  1) /**< \brief (TWIS_IMR) TX Buffer Ready */\r
+#define TWIS_IMR_TCOMP              (0x1u <<  3) /**< \brief (TWIS_IMR) Transmission Complete */\r
+#define TWIS_IMR_URUN               (0x1u <<  6) /**< \brief (TWIS_IMR) Underrun */\r
+#define TWIS_IMR_ORUN               (0x1u <<  7) /**< \brief (TWIS_IMR) Overrun */\r
+#define TWIS_IMR_NAK                (0x1u <<  8) /**< \brief (TWIS_IMR) NAK Received */\r
+#define TWIS_IMR_SMBTOUT            (0x1u << 12) /**< \brief (TWIS_IMR) SMBus Timeout */\r
+#define TWIS_IMR_SMBPECERR          (0x1u << 13) /**< \brief (TWIS_IMR) SMBus PEC Error */\r
+#define TWIS_IMR_BUSERR             (0x1u << 14) /**< \brief (TWIS_IMR) Bus Error */\r
+#define TWIS_IMR_SAM                (0x1u << 16) /**< \brief (TWIS_IMR) Slave Address Match */\r
+#define TWIS_IMR_GCM                (0x1u << 17) /**< \brief (TWIS_IMR) General Call Match */\r
+#define TWIS_IMR_SMBALERTM          (0x1u << 18) /**< \brief (TWIS_IMR) SMBus Alert Response Address Match */\r
+#define TWIS_IMR_SMBHHM             (0x1u << 19) /**< \brief (TWIS_IMR) SMBus Host Header Address Match */\r
+#define TWIS_IMR_SMBDAM             (0x1u << 20) /**< \brief (TWIS_IMR) SMBus Default Address Match */\r
+#define TWIS_IMR_STO                (0x1u << 21) /**< \brief (TWIS_IMR) Stop Received */\r
+#define TWIS_IMR_REP                (0x1u << 22) /**< \brief (TWIS_IMR) Repeated Start Received */\r
+#define TWIS_IMR_BTF                (0x1u << 23) /**< \brief (TWIS_IMR) Byte Transfer Finished */\r
+/* -------- TWIS_SCR : (TWIS Offset: 0x28) Status Clear Register -------- */\r
+#define TWIS_SCR_TCOMP              (0x1u <<  3) /**< \brief (TWIS_SCR) Transmission Complete */\r
+#define TWIS_SCR_URUN               (0x1u <<  6) /**< \brief (TWIS_SCR) Underrun */\r
+#define TWIS_SCR_ORUN               (0x1u <<  7) /**< \brief (TWIS_SCR) Overrun */\r
+#define TWIS_SCR_NAK                (0x1u <<  8) /**< \brief (TWIS_SCR) NAK Received */\r
+#define TWIS_SCR_SMBTOUT            (0x1u << 12) /**< \brief (TWIS_SCR) SMBus Timeout */\r
+#define TWIS_SCR_SMBPECERR          (0x1u << 13) /**< \brief (TWIS_SCR) SMBus PEC Error */\r
+#define TWIS_SCR_BUSERR             (0x1u << 14) /**< \brief (TWIS_SCR) Bus Error */\r
+#define TWIS_SCR_SAM                (0x1u << 16) /**< \brief (TWIS_SCR) Slave Address Match */\r
+#define TWIS_SCR_GCM                (0x1u << 17) /**< \brief (TWIS_SCR) General Call Match */\r
+#define TWIS_SCR_SMBALERTM          (0x1u << 18) /**< \brief (TWIS_SCR) SMBus Alert Response Address Match */\r
+#define TWIS_SCR_SMBHHM             (0x1u << 19) /**< \brief (TWIS_SCR) SMBus Host Header Address Match */\r
+#define TWIS_SCR_SMBDAM             (0x1u << 20) /**< \brief (TWIS_SCR) SMBus Default Address Match */\r
+#define TWIS_SCR_STO                (0x1u << 21) /**< \brief (TWIS_SCR) Stop Received */\r
+#define TWIS_SCR_REP                (0x1u << 22) /**< \brief (TWIS_SCR) Repeated Start Received */\r
+#define TWIS_SCR_BTF                (0x1u << 23) /**< \brief (TWIS_SCR) Byte Transfer Finished */\r
+/* -------- TWIS_PR : (TWIS Offset: 0x2C) Parameter Register -------- */\r
+#define TWIS_PR_HS                  (0x1u <<  0) /**< \brief (TWIS_PR) HS-mode */\r
+/* -------- TWIS_VR : (TWIS Offset: 0x30) Version Register -------- */\r
+#define TWIS_VR_VERSION_Pos         0\r
+#define TWIS_VR_VERSION_Msk         (0xFFFu << TWIS_VR_VERSION_Pos) /**< \brief (TWIS_VR) Version Number */\r
+#define TWIS_VR_VERSION(value)      ((TWIS_VR_VERSION_Msk & ((value) << TWIS_VR_VERSION_Pos)))\r
+#define TWIS_VR_VARIANT_Pos         16\r
+#define TWIS_VR_VARIANT_Msk         (0xFu << TWIS_VR_VARIANT_Pos) /**< \brief (TWIS_VR) Variant Number */\r
+#define TWIS_VR_VARIANT(value)      ((TWIS_VR_VARIANT_Msk & ((value) << TWIS_VR_VARIANT_Pos)))\r
+/* -------- TWIS_HSTR : (TWIS Offset: 0x34) HS-mode Timing Register -------- */\r
+#define TWIS_HSTR_HDDAT_Pos         16\r
+#define TWIS_HSTR_HDDAT_Msk         (0xFFu << TWIS_HSTR_HDDAT_Pos) /**< \brief (TWIS_HSTR) Data Hold Cycles */\r
+#define TWIS_HSTR_HDDAT(value)      ((TWIS_HSTR_HDDAT_Msk & ((value) << TWIS_HSTR_HDDAT_Pos)))\r
+/* -------- TWIS_SRR : (TWIS Offset: 0x38) Slew Rate Register -------- */\r
+#define TWIS_SRR_DADRIVEL_Pos       0\r
+#define TWIS_SRR_DADRIVEL_Msk       (0x7u << TWIS_SRR_DADRIVEL_Pos) /**< \brief (TWIS_SRR) Data Drive Strength LOW */\r
+#define TWIS_SRR_DADRIVEL(value)    ((TWIS_SRR_DADRIVEL_Msk & ((value) << TWIS_SRR_DADRIVEL_Pos)))\r
+#define TWIS_SRR_DASLEW_Pos         8\r
+#define TWIS_SRR_DASLEW_Msk         (0x3u << TWIS_SRR_DASLEW_Pos) /**< \brief (TWIS_SRR) Data Slew Limit */\r
+#define TWIS_SRR_DASLEW(value)      ((TWIS_SRR_DASLEW_Msk & ((value) << TWIS_SRR_DASLEW_Pos)))\r
+#define TWIS_SRR_FILTER_Pos         28\r
+#define TWIS_SRR_FILTER_Msk         (0x3u << TWIS_SRR_FILTER_Pos) /**< \brief (TWIS_SRR) Input Spike Filter Control */\r
+#define TWIS_SRR_FILTER(value)      ((TWIS_SRR_FILTER_Msk & ((value) << TWIS_SRR_FILTER_Pos)))\r
+/* -------- TWIS_HSSRR : (TWIS Offset: 0x3C) HS-mode Slew Rate Register -------- */\r
+#define TWIS_HSSRR_DADRIVEL_Pos     0\r
+#define TWIS_HSSRR_DADRIVEL_Msk     (0x7u << TWIS_HSSRR_DADRIVEL_Pos) /**< \brief (TWIS_HSSRR) Data Drive Strength LOW */\r
+#define TWIS_HSSRR_DADRIVEL(value)  ((TWIS_HSSRR_DADRIVEL_Msk & ((value) << TWIS_HSSRR_DADRIVEL_Pos)))\r
+#define TWIS_HSSRR_DASLEW_Pos       8\r
+#define TWIS_HSSRR_DASLEW_Msk       (0x3u << TWIS_HSSRR_DASLEW_Pos) /**< \brief (TWIS_HSSRR) Data Slew Limit */\r
+#define TWIS_HSSRR_DASLEW(value)    ((TWIS_HSSRR_DASLEW_Msk & ((value) << TWIS_HSSRR_DASLEW_Pos)))\r
+#define TWIS_HSSRR_FILTER_Pos       28\r
+#define TWIS_HSSRR_FILTER_Msk       (0x3u << TWIS_HSSRR_FILTER_Pos) /**< \brief (TWIS_HSSRR) Input Spike Filter Control */\r
+#define TWIS_HSSRR_FILTER(value)    ((TWIS_HSSRR_FILTER_Msk & ((value) << TWIS_HSSRR_FILTER_Pos)))\r
+\r
+/*@}*/\r
+\r
+/* ============================================================================= */\r
+/**  SOFTWARE API DEFINITION FOR USART */\r
+/* ============================================================================= */\r
+/** \addtogroup SAM4L_USART Universal Synchronous Asynchronous Receiver Transmitter */\r
+/*@{*/\r
+\r
+#define REV_USART      0x6021\r
+\r
+#ifndef __ASSEMBLY__\r
+/** \brief USART hardware registers */\r
+typedef struct {\r
+  WoReg   US_CR;          /**< \brief (USART Offset: 0x00) Control Register */\r
+  RwReg   US_MR;          /**< \brief (USART Offset: 0x04) Mode Register */\r
+  WoReg   US_IER;         /**< \brief (USART Offset: 0x08) Interrupt Enable Register */\r
+  WoReg   US_IDR;         /**< \brief (USART Offset: 0x0C) Interrupt Disable Register */\r
+  RoReg   US_IMR;         /**< \brief (USART Offset: 0x10) Interrupt Mask Register */\r
+  RoReg   US_CSR;         /**< \brief (USART Offset: 0x14) Channel Status Register */\r
+  RoReg   US_RHR;         /**< \brief (USART Offset: 0x18) Receiver Holding Register */\r
+  WoReg   US_THR;         /**< \brief (USART Offset: 0x1C) Transmitter Holding Register */\r
+  RwReg   US_BRGR;        /**< \brief (USART Offset: 0x20) Baud Rate Generator Register */\r
+  RwReg   US_RTOR;        /**< \brief (USART Offset: 0x24) Receiver Time-out Register */\r
+  RwReg   US_TTGR;        /**< \brief (USART Offset: 0x28) Transmitter Timeguard Register */\r
+  RoReg   Reserved1[5];\r
+  RwReg   US_FIDI;        /**< \brief (USART Offset: 0x40) FI DI Ratio Register */\r
+  RoReg   US_NER;         /**< \brief (USART Offset: 0x44) Number of Errors Register */\r
+  RoReg   Reserved2[1];\r
+  RwReg   US_IFR;         /**< \brief (USART Offset: 0x4C) IrDA Filter Register */\r
+  RwReg   US_MAN;         /**< \brief (USART Offset: 0x50) Manchester Configuration Register */\r
+  RwReg   US_LINMR;       /**< \brief (USART Offset: 0x54) LIN Mode Register */\r
+  RwReg   US_LINIR;       /**< \brief (USART Offset: 0x58) LIN Identifier Register */\r
+  RoReg   US_LINBRR;      /**< \brief (USART Offset: 0x5C) LIN Baud Rate Register */\r
+  RoReg   Reserved3[33];\r
+  RwReg   US_WPMR;        /**< \brief (USART Offset: 0xE4) Write Protect Mode Register */\r
+  RoReg   US_WPSR;        /**< \brief (USART Offset: 0xE8) Write Protect Status Register */\r
+  RoReg   Reserved4[4];\r
+  RoReg   US_VERSION;     /**< \brief (USART Offset: 0xFC) Version Register */\r
+} Usart;\r
+#endif /* __ASSEMBLY__ */\r
+/* -------- US_LIN_CR : (USART Offset: 0x00) Control Register -------- */\r
+#define US_LIN_CR_RSTRX             (0x1u <<  2) /**< \brief (US_LIN_CR) Reset Receiver */\r
+#define   US_LIN_CR_RSTRX_0         (0x0u <<  2) /**< \brief (US_LIN_CR) No effect */\r
+#define   US_LIN_CR_RSTRX_1         (0x1u <<  2) /**< \brief (US_LIN_CR) Resets the receiver */\r
+#define US_LIN_CR_RSTTX             (0x1u <<  3) /**< \brief (US_LIN_CR) Reset Transmitter */\r
+#define   US_LIN_CR_RSTTX_0         (0x0u <<  3) /**< \brief (US_LIN_CR) No effect */\r
+#define   US_LIN_CR_RSTTX_1         (0x1u <<  3) /**< \brief (US_LIN_CR) Resets the transmitter */\r
+#define US_LIN_CR_RXEN              (0x1u <<  4) /**< \brief (US_LIN_CR) Receiver Enable */\r
+#define   US_LIN_CR_RXEN_0          (0x0u <<  4) /**< \brief (US_LIN_CR) No effect */\r
+#define   US_LIN_CR_RXEN_1          (0x1u <<  4) /**< \brief (US_LIN_CR) Enables the receiver, if RXDIS is 0 */\r
+#define US_LIN_CR_RXDIS             (0x1u <<  5) /**< \brief (US_LIN_CR) Receiver Disable */\r
+#define   US_LIN_CR_RXDIS_0         (0x0u <<  5) /**< \brief (US_LIN_CR) No effect */\r
+#define   US_LIN_CR_RXDIS_1         (0x1u <<  5) /**< \brief (US_LIN_CR) Disables the receiver */\r
+#define US_LIN_CR_TXEN              (0x1u <<  6) /**< \brief (US_LIN_CR) Transmitter Enable */\r
+#define   US_LIN_CR_TXEN_0          (0x0u <<  6) /**< \brief (US_LIN_CR) No effect */\r
+#define   US_LIN_CR_TXEN_1          (0x1u <<  6) /**< \brief (US_LIN_CR) Enables the transmitter if TXDIS is 0 */\r
+#define US_LIN_CR_TXDIS             (0x1u <<  7) /**< \brief (US_LIN_CR) Transmitter Disable */\r
+#define   US_LIN_CR_TXDIS_0         (0x0u <<  7) /**< \brief (US_LIN_CR) No effect */\r
+#define   US_LIN_CR_TXDIS_1         (0x1u <<  7) /**< \brief (US_LIN_CR) Disables the transmitter */\r
+#define US_LIN_CR_RSTSTA            (0x1u <<  8) /**< \brief (US_LIN_CR) Reset Status Bits */\r
+#define   US_LIN_CR_RSTSTA_0        (0x0u <<  8) /**< \brief (US_LIN_CR) No effect */\r
+#define   US_LIN_CR_RSTSTA_1        (0x1u <<  8) /**< \brief (US_LIN_CR) Resets the status bits PARE, FRAME, OVRE and RXBRK in the CSR */\r
+#define US_LIN_CR_STTBRK            (0x1u <<  9) /**< \brief (US_LIN_CR) Start Break */\r
+#define   US_LIN_CR_STTBRK_0        (0x0u <<  9) /**< \brief (US_LIN_CR) No effect */\r
+#define   US_LIN_CR_STTBRK_1        (0x1u <<  9) /**< \brief (US_LIN_CR) Starts transmission of a break after the characters present in THR and the Transmit Shift Register have been transmitted. No effect if a break is already being transmitted */\r
+#define US_LIN_CR_STPBRK            (0x1u << 10) /**< \brief (US_LIN_CR) Stop Break */\r
+#define   US_LIN_CR_STPBRK_0        (0x0u << 10) /**< \brief (US_LIN_CR) No effect */\r
+#define   US_LIN_CR_STPBRK_1        (0x1u << 10) /**< \brief (US_LIN_CR) Stops transmission of the break after a minimum of one character length and transmits a high level during 12-bit periods.No effect if no break is being transmitted */\r
+#define US_LIN_CR_STTTO             (0x1u << 11) /**< \brief (US_LIN_CR) Start Time-out */\r
+#define   US_LIN_CR_STTTO_0         (0x0u << 11) /**< \brief (US_LIN_CR) No effect */\r
+#define   US_LIN_CR_STTTO_1         (0x1u << 11) /**< \brief (US_LIN_CR) Starts waiting for a character before clocking the time-out counter */\r
+#define US_LIN_CR_SENDA             (0x1u << 12) /**< \brief (US_LIN_CR) Send Address */\r
+#define   US_LIN_CR_SENDA_0         (0x0u << 12) /**< \brief (US_LIN_CR) No effect */\r
+#define   US_LIN_CR_SENDA_1         (0x1u << 12) /**< \brief (US_LIN_CR) In Multi-drop Mode only, the next character written to the THR is sent with the address bit set */\r
+#define US_LIN_CR_RSTIT             (0x1u << 13) /**< \brief (US_LIN_CR) Reset Iterations */\r
+#define   US_LIN_CR_RSTIT_0         (0x0u << 13) /**< \brief (US_LIN_CR) No effect */\r
+#define   US_LIN_CR_RSTIT_1         (0x1u << 13) /**< \brief (US_LIN_CR) Resets ITERATION in CSR. No effect if the ISO7816 is not enabled */\r
+#define US_LIN_CR_RSTNACK           (0x1u << 14) /**< \brief (US_LIN_CR) Reset Non Acknowledge */\r
+#define   US_LIN_CR_RSTNACK_0       (0x0u << 14) /**< \brief (US_LIN_CR) No effect */\r
+#define   US_LIN_CR_RSTNACK_1       (0x1u << 14) /**< \brief (US_LIN_CR) Resets NACK in CSR */\r
+#define US_LIN_CR_RETTO             (0x1u << 15) /**< \brief (US_LIN_CR) Rearm Time-out */\r
+#define   US_LIN_CR_RETTO_0         (0x0u << 15) /**< \brief (US_LIN_CR) No effect */\r
+#define   US_LIN_CR_RETTO_1         (0x1u << 15) /**< \brief (US_LIN_CR) Restart Time-out */\r
+#define US_LIN_CR_DTREN             (0x1u << 16) /**< \brief (US_LIN_CR) Data Terminal Ready Enable */\r
+#define   US_LIN_CR_DTREN_0         (0x0u << 16) /**< \brief (US_LIN_CR) No effect */\r
+#define   US_LIN_CR_DTREN_1         (0x1u << 16) /**< \brief (US_LIN_CR) Drives the pin DTR at 0 */\r
+#define US_LIN_CR_DTRDIS            (0x1u << 17) /**< \brief (US_LIN_CR) Data Terminal Ready Disable */\r
+#define   US_LIN_CR_DTRDIS_0        (0x0u << 17) /**< \brief (US_LIN_CR) No effect */\r
+#define   US_LIN_CR_DTRDIS_1        (0x1u << 17) /**< \brief (US_LIN_CR) Drives the pin DTR to 1 */\r
+#define US_LIN_CR_RTSEN             (0x1u << 18) /**< \brief (US_LIN_CR) Request to Send Enable */\r
+#define   US_LIN_CR_RTSEN_0         (0x0u << 18) /**< \brief (US_LIN_CR) No effect */\r
+#define   US_LIN_CR_RTSEN_1         (0x1u << 18) /**< \brief (US_LIN_CR) Drives the pin RTS to 0 */\r
+#define US_LIN_CR_RTSDIS            (0x1u << 19) /**< \brief (US_LIN_CR) Request to Send Disable */\r
+#define   US_LIN_CR_RTSDIS_0        (0x0u << 19) /**< \brief (US_LIN_CR) No effect */\r
+#define   US_LIN_CR_RTSDIS_1        (0x1u << 19) /**< \brief (US_LIN_CR) Drives the pin RTS to 1 */\r
+#define US_LIN_CR_LINABT            (0x1u << 20) /**< \brief (US_LIN_CR) Abort the current LIN transmission */\r
+#define US_LIN_CR_LINWKUP           (0x1u << 21) /**< \brief (US_LIN_CR) Sends a wakeup signal on the LIN bus */\r
+/* -------- US_SPI_MASTER_CR : (USART Offset: 0x00) Control Register -------- */\r
+#define US_SPI_MASTER_CR_RSTRX      (0x1u <<  2) /**< \brief (US_SPI_MASTER_CR) Reset Receiver */\r
+#define   US_SPI_MASTER_CR_RSTRX_0  (0x0u <<  2) /**< \brief (US_SPI_MASTER_CR) No effect */\r
+#define   US_SPI_MASTER_CR_RSTRX_1  (0x1u <<  2) /**< \brief (US_SPI_MASTER_CR) Resets the receiver */\r
+#define US_SPI_MASTER_CR_RSTTX      (0x1u <<  3) /**< \brief (US_SPI_MASTER_CR) Reset Transmitter */\r
+#define   US_SPI_MASTER_CR_RSTTX_0  (0x0u <<  3) /**< \brief (US_SPI_MASTER_CR) No effect */\r
+#define   US_SPI_MASTER_CR_RSTTX_1  (0x1u <<  3) /**< \brief (US_SPI_MASTER_CR) Resets the transmitter */\r
+#define US_SPI_MASTER_CR_RXEN       (0x1u <<  4) /**< \brief (US_SPI_MASTER_CR) Receiver Enable */\r
+#define   US_SPI_MASTER_CR_RXEN_0   (0x0u <<  4) /**< \brief (US_SPI_MASTER_CR) No effect */\r
+#define   US_SPI_MASTER_CR_RXEN_1   (0x1u <<  4) /**< \brief (US_SPI_MASTER_CR) Enables the receiver, if RXDIS is 0 */\r
+#define US_SPI_MASTER_CR_RXDIS      (0x1u <<  5) /**< \brief (US_SPI_MASTER_CR) Receiver Disable */\r
+#define   US_SPI_MASTER_CR_RXDIS_0  (0x0u <<  5) /**< \brief (US_SPI_MASTER_CR) No effect */\r
+#define   US_SPI_MASTER_CR_RXDIS_1  (0x1u <<  5) /**< \brief (US_SPI_MASTER_CR) Disables the receiver */\r
+#define US_SPI_MASTER_CR_TXEN       (0x1u <<  6) /**< \brief (US_SPI_MASTER_CR) Transmitter Enable */\r
+#define   US_SPI_MASTER_CR_TXEN_0   (0x0u <<  6) /**< \brief (US_SPI_MASTER_CR) No effect */\r
+#define   US_SPI_MASTER_CR_TXEN_1   (0x1u <<  6) /**< \brief (US_SPI_MASTER_CR) Enables the transmitter if TXDIS is 0 */\r
+#define US_SPI_MASTER_CR_TXDIS      (0x1u <<  7) /**< \brief (US_SPI_MASTER_CR) Transmitter Disable */\r
+#define   US_SPI_MASTER_CR_TXDIS_0  (0x0u <<  7) /**< \brief (US_SPI_MASTER_CR) No effect */\r
+#define   US_SPI_MASTER_CR_TXDIS_1  (0x1u <<  7) /**< \brief (US_SPI_MASTER_CR) Disables the transmitter */\r
+#define US_SPI_MASTER_CR_RSTSTA     (0x1u <<  8) /**< \brief (US_SPI_MASTER_CR) Reset Status Bits */\r
+#define   US_SPI_MASTER_CR_RSTSTA_0 (0x0u <<  8) /**< \brief (US_SPI_MASTER_CR) No effect */\r
+#define   US_SPI_MASTER_CR_RSTSTA_1 (0x1u <<  8) /**< \brief (US_SPI_MASTER_CR) Resets the status bits PARE, FRAME, OVRE and RXBRK in the CSR */\r
+#define US_SPI_MASTER_CR_STTBRK     (0x1u <<  9) /**< \brief (US_SPI_MASTER_CR) Start Break */\r
+#define   US_SPI_MASTER_CR_STTBRK_0 (0x0u <<  9) /**< \brief (US_SPI_MASTER_CR) No effect */\r
+#define   US_SPI_MASTER_CR_STTBRK_1 (0x1u <<  9) /**< \brief (US_SPI_MASTER_CR) Starts transmission of a break after the characters present in THR and the Transmit Shift Register have been transmitted. No effect if a break is already being transmitted */\r
+#define US_SPI_MASTER_CR_STPBRK     (0x1u << 10) /**< \brief (US_SPI_MASTER_CR) Stop Break */\r
+#define   US_SPI_MASTER_CR_STPBRK_0 (0x0u << 10) /**< \brief (US_SPI_MASTER_CR) No effect */\r
+#define   US_SPI_MASTER_CR_STPBRK_1 (0x1u << 10) /**< \brief (US_SPI_MASTER_CR) Stops transmission of the break after a minimum of one character length and transmits a high level during 12-bit periods.No effect if no break is being transmitted */\r
+#define US_SPI_MASTER_CR_STTTO      (0x1u << 11) /**< \brief (US_SPI_MASTER_CR) Start Time-out */\r
+#define   US_SPI_MASTER_CR_STTTO_0  (0x0u << 11) /**< \brief (US_SPI_MASTER_CR) No effect */\r
+#define   US_SPI_MASTER_CR_STTTO_1  (0x1u << 11) /**< \brief (US_SPI_MASTER_CR) Starts waiting for a character before clocking the time-out counter */\r
+#define US_SPI_MASTER_CR_SENDA      (0x1u << 12) /**< \brief (US_SPI_MASTER_CR) Send Address */\r
+#define   US_SPI_MASTER_CR_SENDA_0  (0x0u << 12) /**< \brief (US_SPI_MASTER_CR) No effect */\r
+#define   US_SPI_MASTER_CR_SENDA_1  (0x1u << 12) /**< \brief (US_SPI_MASTER_CR) In Multi-drop Mode only, the next character written to the THR is sent with the address bit set */\r
+#define US_SPI_MASTER_CR_RSTIT      (0x1u << 13) /**< \brief (US_SPI_MASTER_CR) Reset Iterations */\r
+#define   US_SPI_MASTER_CR_RSTIT_0  (0x0u << 13) /**< \brief (US_SPI_MASTER_CR) No effect */\r
+#define   US_SPI_MASTER_CR_RSTIT_1  (0x1u << 13) /**< \brief (US_SPI_MASTER_CR) Resets ITERATION in CSR. No effect if the ISO7816 is not enabled */\r
+#define US_SPI_MASTER_CR_RSTNACK    (0x1u << 14) /**< \brief (US_SPI_MASTER_CR) Reset Non Acknowledge */\r
+#define   US_SPI_MASTER_CR_RSTNACK_0 (0x0u << 14) /**< \brief (US_SPI_MASTER_CR) No effect */\r
+#define   US_SPI_MASTER_CR_RSTNACK_1 (0x1u << 14) /**< \brief (US_SPI_MASTER_CR) Resets NACK in CSR */\r
+#define US_SPI_MASTER_CR_RETTO      (0x1u << 15) /**< \brief (US_SPI_MASTER_CR) Rearm Time-out */\r
+#define   US_SPI_MASTER_CR_RETTO_0  (0x0u << 15) /**< \brief (US_SPI_MASTER_CR) No effect */\r
+#define   US_SPI_MASTER_CR_RETTO_1  (0x1u << 15) /**< \brief (US_SPI_MASTER_CR) Restart Time-out */\r
+#define US_SPI_MASTER_CR_DTREN      (0x1u << 16) /**< \brief (US_SPI_MASTER_CR) Data Terminal Ready Enable */\r
+#define   US_SPI_MASTER_CR_DTREN_0  (0x0u << 16) /**< \brief (US_SPI_MASTER_CR) No effect */\r
+#define   US_SPI_MASTER_CR_DTREN_1  (0x1u << 16) /**< \brief (US_SPI_MASTER_CR) Drives the pin DTR at 0 */\r
+#define US_SPI_MASTER_CR_DTRDIS     (0x1u << 17) /**< \brief (US_SPI_MASTER_CR) Data Terminal Ready Disable */\r
+#define   US_SPI_MASTER_CR_DTRDIS_0 (0x0u << 17) /**< \brief (US_SPI_MASTER_CR) No effect */\r
+#define   US_SPI_MASTER_CR_DTRDIS_1 (0x1u << 17) /**< \brief (US_SPI_MASTER_CR) Drives the pin DTR to 1 */\r
+#define US_SPI_MASTER_CR_FCS        (0x1u << 18) /**< \brief (US_SPI_MASTER_CR) Force SPI Chip Select */\r
+#define   US_SPI_MASTER_CR_FCS_0    (0x0u << 18) /**< \brief (US_SPI_MASTER_CR) No effect */\r
+#define   US_SPI_MASTER_CR_FCS_1    (0x1u << 18) /**< \brief (US_SPI_MASTER_CR) Forces the Slave Select Line NSS (RTS pin) to 0, even if USART is no transmitting, in order to address SPI slave devices supporting the CSAAT Mode (Chip Select Active After Transfer) */\r
+#define US_SPI_MASTER_CR_RCS        (0x1u << 19) /**< \brief (US_SPI_MASTER_CR) Release SPI Chip Select */\r
+#define   US_SPI_MASTER_CR_RCS_0    (0x0u << 19) /**< \brief (US_SPI_MASTER_CR) No effect */\r
+#define   US_SPI_MASTER_CR_RCS_1    (0x1u << 19) /**< \brief (US_SPI_MASTER_CR) Releases the Slave Select Line NSS (RTS pin) */\r
+/* -------- US_USART_CR : (USART Offset: 0x00) Control Register -------- */\r
+#define US_USART_CR_RSTRX           (0x1u <<  2) /**< \brief (US_USART_CR) Reset Receiver */\r
+#define   US_USART_CR_RSTRX_0       (0x0u <<  2) /**< \brief (US_USART_CR) No effect */\r
+#define   US_USART_CR_RSTRX_1       (0x1u <<  2) /**< \brief (US_USART_CR) Resets the receiver */\r
+#define US_USART_CR_RSTTX           (0x1u <<  3) /**< \brief (US_USART_CR) Reset Transmitter */\r
+#define   US_USART_CR_RSTTX_0       (0x0u <<  3) /**< \brief (US_USART_CR) No effect */\r
+#define   US_USART_CR_RSTTX_1       (0x1u <<  3) /**< \brief (US_USART_CR) Resets the transmitter */\r
+#define US_USART_CR_RXEN            (0x1u <<  4) /**< \brief (US_USART_CR) Receiver Enable */\r
+#define   US_USART_CR_RXEN_0        (0x0u <<  4) /**< \brief (US_USART_CR) No effect */\r
+#define   US_USART_CR_RXEN_1        (0x1u <<  4) /**< \brief (US_USART_CR) Enables the receiver, if RXDIS is 0 */\r
+#define US_USART_CR_RXDIS           (0x1u <<  5) /**< \brief (US_USART_CR) Receiver Disable */\r
+#define   US_USART_CR_RXDIS_0       (0x0u <<  5) /**< \brief (US_USART_CR) No effect */\r
+#define   US_USART_CR_RXDIS_1       (0x1u <<  5) /**< \brief (US_USART_CR) Disables the receiver */\r
+#define US_USART_CR_TXEN            (0x1u <<  6) /**< \brief (US_USART_CR) Transmitter Enable */\r
+#define   US_USART_CR_TXEN_0        (0x0u <<  6) /**< \brief (US_USART_CR) No effect */\r
+#define   US_USART_CR_TXEN_1        (0x1u <<  6) /**< \brief (US_USART_CR) Enables the transmitter if TXDIS is 0 */\r
+#define US_USART_CR_TXDIS           (0x1u <<  7) /**< \brief (US_USART_CR) Transmitter Disable */\r
+#define   US_USART_CR_TXDIS_0       (0x0u <<  7) /**< \brief (US_USART_CR) No effect */\r
+#define   US_USART_CR_TXDIS_1       (0x1u <<  7) /**< \brief (US_USART_CR) Disables the transmitter */\r
+#define US_USART_CR_RSTSTA          (0x1u <<  8) /**< \brief (US_USART_CR) Reset Status Bits */\r
+#define   US_USART_CR_RSTSTA_0      (0x0u <<  8) /**< \brief (US_USART_CR) No effect */\r
+#define   US_USART_CR_RSTSTA_1      (0x1u <<  8) /**< \brief (US_USART_CR) Resets the status bits PARE, FRAME, OVRE and RXBRK in the CSR */\r
+#define US_USART_CR_STTBRK          (0x1u <<  9) /**< \brief (US_USART_CR) Start Break */\r
+#define   US_USART_CR_STTBRK_0      (0x0u <<  9) /**< \brief (US_USART_CR) No effect */\r
+#define   US_USART_CR_STTBRK_1      (0x1u <<  9) /**< \brief (US_USART_CR) Starts transmission of a break after the characters present in THR and the Transmit Shift Register have been transmitted. No effect if a break is already being transmitted */\r
+#define US_USART_CR_STPBRK          (0x1u << 10) /**< \brief (US_USART_CR) Stop Break */\r
+#define   US_USART_CR_STPBRK_0      (0x0u << 10) /**< \brief (US_USART_CR) No effect */\r
+#define   US_USART_CR_STPBRK_1      (0x1u << 10) /**< \brief (US_USART_CR) Stops transmission of the break after a minimum of one character length and transmits a high level during 12-bit periods.No effect if no break is being transmitted */\r
+#define US_USART_CR_STTTO           (0x1u << 11) /**< \brief (US_USART_CR) Start Time-out */\r
+#define   US_USART_CR_STTTO_0       (0x0u << 11) /**< \brief (US_USART_CR) No effect */\r
+#define   US_USART_CR_STTTO_1       (0x1u << 11) /**< \brief (US_USART_CR) Starts waiting for a character before clocking the time-out counter */\r
+#define US_USART_CR_SENDA           (0x1u << 12) /**< \brief (US_USART_CR) Send Address */\r
+#define   US_USART_CR_SENDA_0       (0x0u << 12) /**< \brief (US_USART_CR) No effect */\r
+#define   US_USART_CR_SENDA_1       (0x1u << 12) /**< \brief (US_USART_CR) In Multi-drop Mode only, the next character written to the THR is sent with the address bit set */\r
+#define US_USART_CR_RSTIT           (0x1u << 13) /**< \brief (US_USART_CR) Reset Iterations */\r
+#define   US_USART_CR_RSTIT_0       (0x0u << 13) /**< \brief (US_USART_CR) No effect */\r
+#define   US_USART_CR_RSTIT_1       (0x1u << 13) /**< \brief (US_USART_CR) Resets ITERATION in CSR. No effect if the ISO7816 is not enabled */\r
+#define US_USART_CR_RSTNACK         (0x1u << 14) /**< \brief (US_USART_CR) Reset Non Acknowledge */\r
+#define   US_USART_CR_RSTNACK_0     (0x0u << 14) /**< \brief (US_USART_CR) No effect */\r
+#define   US_USART_CR_RSTNACK_1     (0x1u << 14) /**< \brief (US_USART_CR) Resets NACK in CSR */\r
+#define US_USART_CR_RETTO           (0x1u << 15) /**< \brief (US_USART_CR) Rearm Time-out */\r
+#define   US_USART_CR_RETTO_0       (0x0u << 15) /**< \brief (US_USART_CR) No effect */\r
+#define   US_USART_CR_RETTO_1       (0x1u << 15) /**< \brief (US_USART_CR) Restart Time-out */\r
+#define US_USART_CR_DTREN           (0x1u << 16) /**< \brief (US_USART_CR) Data Terminal Ready Enable */\r
+#define   US_USART_CR_DTREN_0       (0x0u << 16) /**< \brief (US_USART_CR) No effect */\r
+#define   US_USART_CR_DTREN_1       (0x1u << 16) /**< \brief (US_USART_CR) Drives the pin DTR at 0 */\r
+#define US_USART_CR_DTRDIS          (0x1u << 17) /**< \brief (US_USART_CR) Data Terminal Ready Disable */\r
+#define   US_USART_CR_DTRDIS_0      (0x0u << 17) /**< \brief (US_USART_CR) No effect */\r
+#define   US_USART_CR_DTRDIS_1      (0x1u << 17) /**< \brief (US_USART_CR) Drives the pin DTR to 1 */\r
+#define US_USART_CR_RTSEN           (0x1u << 18) /**< \brief (US_USART_CR) Request to Send Enable */\r
+#define   US_USART_CR_RTSEN_0       (0x0u << 18) /**< \brief (US_USART_CR) No effect */\r
+#define   US_USART_CR_RTSEN_1       (0x1u << 18) /**< \brief (US_USART_CR) Drives the pin RTS to 0 */\r
+#define US_USART_CR_RTSDIS          (0x1u << 19) /**< \brief (US_USART_CR) Request to Send Disable */\r
+#define   US_USART_CR_RTSDIS_0      (0x0u << 19) /**< \brief (US_USART_CR) No effect */\r
+#define   US_USART_CR_RTSDIS_1      (0x1u << 19) /**< \brief (US_USART_CR) Drives the pin RTS to 1 */\r
+/* -------- US_CR : (USART Offset: 0x00) Control Register -------- */\r
+#define US_CR_RSTRX                 (0x1u <<  2) /**< \brief (US_CR) Reset Receiver */\r
+#define US_CR_RSTTX                 (0x1u <<  3) /**< \brief (US_CR) Reset Transmitter */\r
+#define US_CR_RXEN                  (0x1u <<  4) /**< \brief (US_CR) Receiver Enable */\r
+#define US_CR_RXDIS                 (0x1u <<  5) /**< \brief (US_CR) Receiver Disable */\r
+#define US_CR_TXEN                  (0x1u <<  6) /**< \brief (US_CR) Transmitter Enable */\r
+#define US_CR_TXDIS                 (0x1u <<  7) /**< \brief (US_CR) Transmitter Disable */\r
+#define US_CR_RSTSTA                (0x1u <<  8) /**< \brief (US_CR) Reset Status Bits */\r
+#define US_CR_STTBRK                (0x1u <<  9) /**< \brief (US_CR) Start Break */\r
+#define US_CR_STPBRK                (0x1u << 10) /**< \brief (US_CR) Stop Break */\r
+#define US_CR_STTTO                 (0x1u << 11) /**< \brief (US_CR) Start Time-out */\r
+#define US_CR_SENDA                 (0x1u << 12) /**< \brief (US_CR) Send Address */\r
+#define US_CR_RSTIT                 (0x1u << 13) /**< \brief (US_CR) Reset Iterations */\r
+#define US_CR_RSTNACK               (0x1u << 14) /**< \brief (US_CR) Reset Non Acknowledge */\r
+#define US_CR_RETTO                 (0x1u << 15) /**< \brief (US_CR) Rearm Time-out */\r
+#define US_CR_DTREN                 (0x1u << 16) /**< \brief (US_CR) Data Terminal Ready Enable */\r
+#define US_CR_DTRDIS                (0x1u << 17) /**< \brief (US_CR) Data Terminal Ready Disable */\r
+#define US_CR_RTSEN                 (0x1u << 18) /**< \brief (US_CR) Request to Send Enable */\r
+#define US_CR_FCS                   (0x1u << 18) /**< \brief (US_CR) Force SPI Chip Select */\r
+#define US_CR_RTSDIS                (0x1u << 19) /**< \brief (US_CR) Request to Send Disable */\r
+#define US_CR_RCS                   (0x1u << 19) /**< \brief (US_CR) Release SPI Chip Select */\r
+#define US_CR_LINABT                (0x1u << 20) /**< \brief (US_CR) Abort the current LIN transmission */\r
+#define US_CR_LINWKUP               (0x1u << 21) /**< \brief (US_CR) Sends a wakeup signal on the LIN bus */\r
+\r
+/* -------- US_SPI_MR : (USART Offset: 0x04) Mode Register -------- */\r
+#define US_SPI_MR_MODE_Pos          0\r
+#define US_SPI_MR_MODE_Msk          (0xFu << US_SPI_MR_MODE_Pos) /**< \brief (US_SPI_MR) Usart Mode */\r
+#define US_SPI_MR_MODE(value)       ((US_SPI_MR_MODE_Msk & ((value) << US_SPI_MR_MODE_Pos)))\r
+#define   US_SPI_MR_MODE_NORMAL     (0x0u <<  0) /**< \brief (US_SPI_MR) Normal */\r
+#define   US_SPI_MR_MODE_RS485      (0x1u <<  0) /**< \brief (US_SPI_MR) RS485 */\r
+#define   US_SPI_MR_MODE_HARDWARE   (0x2u <<  0) /**< \brief (US_SPI_MR) Hardware Handshaking */\r
+#define   US_SPI_MR_MODE_MODEM      (0x3u <<  0) /**< \brief (US_SPI_MR) Modem */\r
+#define   US_SPI_MR_MODE_ISO7816_T0 (0x4u <<  0) /**< \brief (US_SPI_MR) IS07816 Protocol: T = 0 */\r
+#define   US_SPI_MR_MODE_ISO7816_T1 (0x6u <<  0) /**< \brief (US_SPI_MR) IS07816 Protocol: T = 1 */\r
+#define   US_SPI_MR_MODE_IRDA       (0x8u <<  0) /**< \brief (US_SPI_MR) IrDA */\r
+#define   US_SPI_MR_MODE_LIN_MASTER (0xAu <<  0) /**< \brief (US_SPI_MR) LIN Master */\r
+#define   US_SPI_MR_MODE_LIN_SLAVE  (0xBu <<  0) /**< \brief (US_SPI_MR) LIN Slave */\r
+#define   US_SPI_MR_MODE_SPI_MASTER (0xEu <<  0) /**< \brief (US_SPI_MR) SPI Master */\r
+#define   US_SPI_MR_MODE_SPI_SLAVE  (0xFu <<  0) /**< \brief (US_SPI_MR) SPI Slave */\r
+#define US_SPI_MR_USCLKS_Pos        4\r
+#define US_SPI_MR_USCLKS_Msk        (0x3u << US_SPI_MR_USCLKS_Pos) /**< \brief (US_SPI_MR) Clock Selection */\r
+#define US_SPI_MR_USCLKS(value)     ((US_SPI_MR_USCLKS_Msk & ((value) << US_SPI_MR_USCLKS_Pos)))\r
+#define   US_SPI_MR_USCLKS_MCK      (0x0u <<  4) /**< \brief (US_SPI_MR) MCK */\r
+#define   US_SPI_MR_USCLKS_MCK_DIV  (0x1u <<  4) /**< \brief (US_SPI_MR) MCK / DIV */\r
+#define   US_SPI_MR_USCLKS_2        (0x2u <<  4) /**< \brief (US_SPI_MR) Reserved */\r
+#define   US_SPI_MR_USCLKS_SCK      (0x3u <<  4) /**< \brief (US_SPI_MR) SCK */\r
+#define US_SPI_MR_CHRL_Pos          6\r
+#define US_SPI_MR_CHRL_Msk          (0x3u << US_SPI_MR_CHRL_Pos) /**< \brief (US_SPI_MR) Character Length. */\r
+#define US_SPI_MR_CHRL(value)       ((US_SPI_MR_CHRL_Msk & ((value) << US_SPI_MR_CHRL_Pos)))\r
+#define   US_SPI_MR_CHRL_5          (0x0u <<  6) /**< \brief (US_SPI_MR) 5 bits */\r
+#define   US_SPI_MR_CHRL_6          (0x1u <<  6) /**< \brief (US_SPI_MR) 6 bits */\r
+#define   US_SPI_MR_CHRL_7          (0x2u <<  6) /**< \brief (US_SPI_MR) 7 bits */\r
+#define   US_SPI_MR_CHRL_8          (0x3u <<  6) /**< \brief (US_SPI_MR) 8 bits */\r
+#define US_SPI_MR_CPHA              (0x1u <<  8) /**< \brief (US_SPI_MR) SPI CLock Phase */\r
+#define   US_SPI_MR_CPHA_0          (0x0u <<  8) /**< \brief (US_SPI_MR) Data is changed on the leading edge of SPCK and captured on the following edge of SPCK */\r
+#define   US_SPI_MR_CPHA_1          (0x1u <<  8) /**< \brief (US_SPI_MR) Data is captured on the leading edge of SPCK and changed on the following edge of SPCK */\r
+#define US_SPI_MR_PAR_Pos           9\r
+#define US_SPI_MR_PAR_Msk           (0x7u << US_SPI_MR_PAR_Pos) /**< \brief (US_SPI_MR) Parity Type */\r
+#define US_SPI_MR_PAR(value)        ((US_SPI_MR_PAR_Msk & ((value) << US_SPI_MR_PAR_Pos)))\r
+#define   US_SPI_MR_PAR_EVEN        (0x0u <<  9) /**< \brief (US_SPI_MR) Even parity */\r
+#define   US_SPI_MR_PAR_ODD         (0x1u <<  9) /**< \brief (US_SPI_MR) Odd parity */\r
+#define   US_SPI_MR_PAR_SPACE       (0x2u <<  9) /**< \brief (US_SPI_MR) Parity forced to 0 (Space) */\r
+#define   US_SPI_MR_PAR_MARK        (0x3u <<  9) /**< \brief (US_SPI_MR) Parity forced to 1 (Mark) */\r
+#define   US_SPI_MR_PAR_NONE        (0x4u <<  9) /**< \brief (US_SPI_MR) No Parity */\r
+#define   US_SPI_MR_PAR_5           (0x5u <<  9) /**< \brief (US_SPI_MR) No Parity */\r
+#define   US_SPI_MR_PAR_MULTI       (0x6u <<  9) /**< \brief (US_SPI_MR) Multi-drop mode */\r
+#define   US_SPI_MR_PAR_7           (0x7u <<  9) /**< \brief (US_SPI_MR) Multi-drop mode */\r
+#define US_SPI_MR_NBSTOP_Pos        12\r
+#define US_SPI_MR_NBSTOP_Msk        (0x3u << US_SPI_MR_NBSTOP_Pos) /**< \brief (US_SPI_MR) Number of Stop Bits */\r
+#define US_SPI_MR_NBSTOP(value)     ((US_SPI_MR_NBSTOP_Msk & ((value) << US_SPI_MR_NBSTOP_Pos)))\r
+#define   US_SPI_MR_NBSTOP_1        (0x0u << 12) /**< \brief (US_SPI_MR) 1 stop bit */\r
+#define   US_SPI_MR_NBSTOP_1_5      (0x1u << 12) /**< \brief (US_SPI_MR) 1.5 stop bits (Only valid if SYNC=0) */\r
+#define   US_SPI_MR_NBSTOP_2        (0x2u << 12) /**< \brief (US_SPI_MR) 2 stop bits */\r
+#define   US_SPI_MR_NBSTOP_3        (0x3u << 12) /**< \brief (US_SPI_MR) Reserved */\r
+#define US_SPI_MR_CHMODE_Pos        14\r
+#define US_SPI_MR_CHMODE_Msk        (0x3u << US_SPI_MR_CHMODE_Pos) /**< \brief (US_SPI_MR) Channel Mode */\r
+#define US_SPI_MR_CHMODE(value)     ((US_SPI_MR_CHMODE_Msk & ((value) << US_SPI_MR_CHMODE_Pos)))\r
+#define   US_SPI_MR_CHMODE_NORMAL   (0x0u << 14) /**< \brief (US_SPI_MR) Normal Mode */\r
+#define   US_SPI_MR_CHMODE_ECHO     (0x1u << 14) /**< \brief (US_SPI_MR) Automatic Echo. Receiver input is connected to the TXD pin */\r
+#define   US_SPI_MR_CHMODE_LOCAL_LOOP (0x2u << 14) /**< \brief (US_SPI_MR) Local Loopback. Transmitter output is connected to the Receiver Input */\r
+#define   US_SPI_MR_CHMODE_REMOTE_LOOP (0x3u << 14) /**< \brief (US_SPI_MR) Remote Loopback. RXD pin is internally connected to the TXD pin */\r
+#define US_SPI_MR_CPOL              (0x1u << 16) /**< \brief (US_SPI_MR) SPI Clock Polarity */\r
+#define   US_SPI_MR_CPOL_ZERO       (0x0u << 16) /**< \brief (US_SPI_MR) The inactive state value of SPCK is logic level zero */\r
+#define   US_SPI_MR_CPOL_ONE        (0x1u << 16) /**< \brief (US_SPI_MR) The inactive state value of SPCK is logic level one */\r
+#define US_SPI_MR_MODE9             (0x1u << 17) /**< \brief (US_SPI_MR) 9-bit Character Length */\r
+#define   US_SPI_MR_MODE9_0         (0x0u << 17) /**< \brief (US_SPI_MR) CHRL defines character length */\r
+#define   US_SPI_MR_MODE9_1         (0x1u << 17) /**< \brief (US_SPI_MR) 9-bit character length */\r
+#define US_SPI_MR_CLKO              (0x1u << 18) /**< \brief (US_SPI_MR) Clock Output Select */\r
+#define   US_SPI_MR_CLKO_0          (0x0u << 18) /**< \brief (US_SPI_MR) The USART does not drive the SCK pin */\r
+#define   US_SPI_MR_CLKO_1          (0x1u << 18) /**< \brief (US_SPI_MR) The USART drives the SCK pin if USCLKS does not select the external clock SCK */\r
+#define US_SPI_MR_OVER              (0x1u << 19) /**< \brief (US_SPI_MR) Oversampling Mode */\r
+#define   US_SPI_MR_OVER_X16        (0x0u << 19) /**< \brief (US_SPI_MR) 16x Oversampling */\r
+#define   US_SPI_MR_OVER_X8         (0x1u << 19) /**< \brief (US_SPI_MR) 8x Oversampling */\r
+#define US_SPI_MR_INACK             (0x1u << 20) /**< \brief (US_SPI_MR) Inhibit Non Acknowledge */\r
+#define   US_SPI_MR_INACK_0         (0x0u << 20) /**< \brief (US_SPI_MR) The NACK is generated */\r
+#define   US_SPI_MR_INACK_1         (0x1u << 20) /**< \brief (US_SPI_MR) The NACK is not generated */\r
+#define US_SPI_MR_DSNACK            (0x1u << 21) /**< \brief (US_SPI_MR) Disable Successive NACK */\r
+#define   US_SPI_MR_DSNACK_0        (0x0u << 21) /**< \brief (US_SPI_MR) NACK is sent on the ISO line as soon as a parity error occurs in the received character (unless INACK is set) */\r
+#define   US_SPI_MR_DSNACK_1        (0x1u << 21) /**< \brief (US_SPI_MR) Successive parity errors are counted up to the value specified in the MAX_ITERATION field. These parity errors generatea NACK on the ISO line. As soon as this value is reached, no additional NACK is sent on the ISO line. The flag ITERATION is asserted */\r
+#define US_SPI_MR_INVDATA           (0x1u << 23) /**< \brief (US_SPI_MR) Inverted data */\r
+#define US_SPI_MR_MAX_ITERATION_Pos    24\r
+#define US_SPI_MR_MAX_ITERATION_Msk    (0x7u << US_SPI_MR_MAX_ITERATION_Pos) /**< \brief (US_SPI_MR) Max interation */\r
+#define US_SPI_MR_MAX_ITERATION(value) ((US_SPI_MR_MAX_ITERATION_Msk & ((value) << US_SPI_MR_MAX_ITERATION_Pos)))\r
+#define US_SPI_MR_FILTER            (0x1u << 28) /**< \brief (US_SPI_MR) Infrared Receive Line Filter */\r
+#define   US_SPI_MR_FILTER_0        (0x0u << 28) /**< \brief (US_SPI_MR) The USART does not filter the receive line */\r
+#define   US_SPI_MR_FILTER_1        (0x1u << 28) /**< \brief (US_SPI_MR) The USART filters the receive line using a three-sample filter (1/16-bit clock) (2 over 3 majority) */\r
+/* -------- US_USART_MR : (USART Offset: 0x04) Mode Register -------- */\r
+#define US_USART_MR_MODE_Pos        0\r
+#define US_USART_MR_MODE_Msk        (0xFu << US_USART_MR_MODE_Pos) /**< \brief (US_USART_MR) Usart Mode */\r
+#define US_USART_MR_MODE(value)     ((US_USART_MR_MODE_Msk & ((value) << US_USART_MR_MODE_Pos)))\r
+#define   US_USART_MR_MODE_NORMAL   (0x0u <<  0) /**< \brief (US_USART_MR) Normal */\r
+#define   US_USART_MR_MODE_RS485    (0x1u <<  0) /**< \brief (US_USART_MR) RS485 */\r
+#define   US_USART_MR_MODE_HARDWARE (0x2u <<  0) /**< \brief (US_USART_MR) Hardware Handshaking */\r
+#define   US_USART_MR_MODE_MODEM    (0x3u <<  0) /**< \brief (US_USART_MR) Modem */\r
+#define   US_USART_MR_MODE_ISO7816_T0 (0x4u <<  0) /**< \brief (US_USART_MR) IS07816 Protocol: T = 0 */\r
+#define   US_USART_MR_MODE_ISO7816_T1 (0x6u <<  0) /**< \brief (US_USART_MR) IS07816 Protocol: T = 1 */\r
+#define   US_USART_MR_MODE_IRDA     (0x8u <<  0) /**< \brief (US_USART_MR) IrDA */\r
+#define   US_USART_MR_MODE_LIN_MASTER (0xAu <<  0) /**< \brief (US_USART_MR) LIN Master */\r
+#define   US_USART_MR_MODE_LIN_SLAVE (0xBu <<  0) /**< \brief (US_USART_MR) LIN Slave */\r
+#define   US_USART_MR_MODE_SPI_MASTER (0xEu <<  0) /**< \brief (US_USART_MR) SPI Master */\r
+#define   US_USART_MR_MODE_SPI_SLAVE (0xFu <<  0) /**< \brief (US_USART_MR) SPI Slave */\r
+#define US_USART_MR_USCLKS_Pos      4\r
+#define US_USART_MR_USCLKS_Msk      (0x3u << US_USART_MR_USCLKS_Pos) /**< \brief (US_USART_MR) Clock Selection */\r
+#define US_USART_MR_USCLKS(value)   ((US_USART_MR_USCLKS_Msk & ((value) << US_USART_MR_USCLKS_Pos)))\r
+#define   US_USART_MR_USCLKS_MCK    (0x0u <<  4) /**< \brief (US_USART_MR) MCK */\r
+#define   US_USART_MR_USCLKS_MCK_DIV (0x1u <<  4) /**< \brief (US_USART_MR) MCK / DIV */\r
+#define   US_USART_MR_USCLKS_2      (0x2u <<  4) /**< \brief (US_USART_MR) Reserved */\r
+#define   US_USART_MR_USCLKS_SCK    (0x3u <<  4) /**< \brief (US_USART_MR) SCK */\r
+#define US_USART_MR_CHRL_Pos        6\r
+#define US_USART_MR_CHRL_Msk        (0x3u << US_USART_MR_CHRL_Pos) /**< \brief (US_USART_MR) Character Length. */\r
+#define US_USART_MR_CHRL(value)     ((US_USART_MR_CHRL_Msk & ((value) << US_USART_MR_CHRL_Pos)))\r
+#define   US_USART_MR_CHRL_5        (0x0u <<  6) /**< \brief (US_USART_MR) 5 bits */\r
+#define   US_USART_MR_CHRL_6        (0x1u <<  6) /**< \brief (US_USART_MR) 6 bits */\r
+#define   US_USART_MR_CHRL_7        (0x2u <<  6) /**< \brief (US_USART_MR) 7 bits */\r
+#define   US_USART_MR_CHRL_8        (0x3u <<  6) /**< \brief (US_USART_MR) 8 bits */\r
+#define US_USART_MR_SYNC            (0x1u <<  8) /**< \brief (US_USART_MR) Synchronous Mode Select */\r
+#define   US_USART_MR_SYNC_0        (0x0u <<  8) /**< \brief (US_USART_MR) USART operates in Synchronous Mode */\r
+#define   US_USART_MR_SYNC_1        (0x1u <<  8) /**< \brief (US_USART_MR) USART operates in Asynchronous Mode */\r
+#define US_USART_MR_PAR_Pos         9\r
+#define US_USART_MR_PAR_Msk         (0x7u << US_USART_MR_PAR_Pos) /**< \brief (US_USART_MR) Parity Type */\r
+#define US_USART_MR_PAR(value)      ((US_USART_MR_PAR_Msk & ((value) << US_USART_MR_PAR_Pos)))\r
+#define   US_USART_MR_PAR_EVEN      (0x0u <<  9) /**< \brief (US_USART_MR) Even parity */\r
+#define   US_USART_MR_PAR_ODD       (0x1u <<  9) /**< \brief (US_USART_MR) Odd parity */\r
+#define   US_USART_MR_PAR_SPACE     (0x2u <<  9) /**< \brief (US_USART_MR) Parity forced to 0 (Space) */\r
+#define   US_USART_MR_PAR_MARK      (0x3u <<  9) /**< \brief (US_USART_MR) Parity forced to 1 (Mark) */\r
+#define   US_USART_MR_PAR_NONE      (0x4u <<  9) /**< \brief (US_USART_MR) No Parity */\r
+#define   US_USART_MR_PAR_5         (0x5u <<  9) /**< \brief (US_USART_MR) No Parity */\r
+#define   US_USART_MR_PAR_MULTI     (0x6u <<  9) /**< \brief (US_USART_MR) Multi-drop mode */\r
+#define   US_USART_MR_PAR_7         (0x7u <<  9) /**< \brief (US_USART_MR) Multi-drop mode */\r
+#define US_USART_MR_NBSTOP_Pos      12\r
+#define US_USART_MR_NBSTOP_Msk      (0x3u << US_USART_MR_NBSTOP_Pos) /**< \brief (US_USART_MR) Number of Stop Bits */\r
+#define US_USART_MR_NBSTOP(value)   ((US_USART_MR_NBSTOP_Msk & ((value) << US_USART_MR_NBSTOP_Pos)))\r
+#define   US_USART_MR_NBSTOP_1      (0x0u << 12) /**< \brief (US_USART_MR) 1 stop bit */\r
+#define   US_USART_MR_NBSTOP_1_5    (0x1u << 12) /**< \brief (US_USART_MR) 1.5 stop bits (Only valid if SYNC=0) */\r
+#define   US_USART_MR_NBSTOP_2      (0x2u << 12) /**< \brief (US_USART_MR) 2 stop bits */\r
+#define   US_USART_MR_NBSTOP_3      (0x3u << 12) /**< \brief (US_USART_MR) Reserved */\r
+#define US_USART_MR_CHMODE_Pos      14\r
+#define US_USART_MR_CHMODE_Msk      (0x3u << US_USART_MR_CHMODE_Pos) /**< \brief (US_USART_MR) Channel Mode */\r
+#define US_USART_MR_CHMODE(value)   ((US_USART_MR_CHMODE_Msk & ((value) << US_USART_MR_CHMODE_Pos)))\r
+#define   US_USART_MR_CHMODE_NORMAL (0x0u << 14) /**< \brief (US_USART_MR) Normal Mode */\r
+#define   US_USART_MR_CHMODE_ECHO   (0x1u << 14) /**< \brief (US_USART_MR) Automatic Echo. Receiver input is connected to the TXD pin */\r
+#define   US_USART_MR_CHMODE_LOCAL_LOOP (0x2u << 14) /**< \brief (US_USART_MR) Local Loopback. Transmitter output is connected to the Receiver Input */\r
+#define   US_USART_MR_CHMODE_REMOTE_LOOP (0x3u << 14) /**< \brief (US_USART_MR) Remote Loopback. RXD pin is internally connected to the TXD pin */\r
+#define US_USART_MR_MSBF            (0x1u << 16) /**< \brief (US_USART_MR) Bit Order */\r
+#define   US_USART_MR_MSBF_LSBF     (0x0u << 16) /**< \brief (US_USART_MR) Least Significant Bit first */\r
+#define   US_USART_MR_MSBF_MSBF     (0x1u << 16) /**< \brief (US_USART_MR) Most Significant Bit first */\r
+#define US_USART_MR_MODE9           (0x1u << 17) /**< \brief (US_USART_MR) 9-bit Character Length */\r
+#define   US_USART_MR_MODE9_0       (0x0u << 17) /**< \brief (US_USART_MR) CHRL defines character length */\r
+#define   US_USART_MR_MODE9_1       (0x1u << 17) /**< \brief (US_USART_MR) 9-bit character length */\r
+#define US_USART_MR_CLKO            (0x1u << 18) /**< \brief (US_USART_MR) Clock Output Select */\r
+#define   US_USART_MR_CLKO_0        (0x0u << 18) /**< \brief (US_USART_MR) The USART does not drive the SCK pin */\r
+#define   US_USART_MR_CLKO_1        (0x1u << 18) /**< \brief (US_USART_MR) The USART drives the SCK pin if USCLKS does not select the external clock SCK */\r
+#define US_USART_MR_OVER            (0x1u << 19) /**< \brief (US_USART_MR) Oversampling Mode */\r
+#define   US_USART_MR_OVER_X16      (0x0u << 19) /**< \brief (US_USART_MR) 16x Oversampling */\r
+#define   US_USART_MR_OVER_X8       (0x1u << 19) /**< \brief (US_USART_MR) 8x Oversampling */\r
+#define US_USART_MR_INACK           (0x1u << 20) /**< \brief (US_USART_MR) Inhibit Non Acknowledge */\r
+#define   US_USART_MR_INACK_0       (0x0u << 20) /**< \brief (US_USART_MR) The NACK is generated */\r
+#define   US_USART_MR_INACK_1       (0x1u << 20) /**< \brief (US_USART_MR) The NACK is not generated */\r
+#define US_USART_MR_DSNACK          (0x1u << 21) /**< \brief (US_USART_MR) Disable Successive NACK */\r
+#define   US_USART_MR_DSNACK_0      (0x0u << 21) /**< \brief (US_USART_MR) NACK is sent on the ISO line as soon as a parity error occurs in the received character (unless INACK is set) */\r
+#define   US_USART_MR_DSNACK_1      (0x1u << 21) /**< \brief (US_USART_MR) Successive parity errors are counted up to the value specified in the MAX_ITERATION field. These parity errors generatea NACK on the ISO line. As soon as this value is reached, no additional NACK is sent on the ISO line. The flag ITERATION is asserted */\r
+#define US_USART_MR_VAR_SYNC        (0x1u << 22) /**< \brief (US_USART_MR) Variable synchronization of command/data sync Start Frame Delimiter */\r
+#define   US_USART_MR_VAR_SYNC_0    (0x0u << 22) /**< \brief (US_USART_MR) User defined configuration of command or data sync field depending on SYNC value */\r
+#define   US_USART_MR_VAR_SYNC_1    (0x1u << 22) /**< \brief (US_USART_MR) The sync field is updated when a character is written into THR register */\r
+#define US_USART_MR_INVDATA         (0x1u << 23) /**< \brief (US_USART_MR) Inverted data */\r
+#define US_USART_MR_MAX_ITERATION_Pos    24\r
+#define US_USART_MR_MAX_ITERATION_Msk    (0x7u << US_USART_MR_MAX_ITERATION_Pos) /**< \brief (US_USART_MR) Max interation */\r
+#define US_USART_MR_MAX_ITERATION(value) ((US_USART_MR_MAX_ITERATION_Msk & ((value) << US_USART_MR_MAX_ITERATION_Pos)))\r
+#define US_USART_MR_FILTER          (0x1u << 28) /**< \brief (US_USART_MR) Infrared Receive Line Filter */\r
+#define   US_USART_MR_FILTER_0      (0x0u << 28) /**< \brief (US_USART_MR) The USART does not filter the receive line */\r
+#define   US_USART_MR_FILTER_1      (0x1u << 28) /**< \brief (US_USART_MR) The USART filters the receive line using a three-sample filter (1/16-bit clock) (2 over 3 majority) */\r
+#define US_USART_MR_MAN             (0x1u << 29) /**< \brief (US_USART_MR) Manchester Encoder/Decoder Enable */\r
+#define   US_USART_MR_MAN_0         (0x0u << 29) /**< \brief (US_USART_MR) Manchester Encoder/Decoder is disabled */\r
+#define   US_USART_MR_MAN_1         (0x1u << 29) /**< \brief (US_USART_MR) Manchester Encoder/Decoder is enabled */\r
+#define US_USART_MR_MODSYNC         (0x1u << 30) /**< \brief (US_USART_MR) Manchester Synchronization Mode */\r
+#define   US_USART_MR_MODSYNC_0     (0x0u << 30) /**< \brief (US_USART_MR) The Manchester Start bit is a 0 to 1 transition */\r
+#define   US_USART_MR_MODSYNC_1     (0x1u << 30) /**< \brief (US_USART_MR) The Manchester Start bit is a 1 to 0 transition */\r
+#define US_USART_MR_ONEBIT          (0x1u << 31) /**< \brief (US_USART_MR) Start Frame Delimiter selector */\r
+#define   US_USART_MR_ONEBIT_0      (0x0u << 31) /**< \brief (US_USART_MR) Start Frame delimiter is COMMAND or DATA SYNC */\r
+#define   US_USART_MR_ONEBIT_1      (0x1u << 31) /**< \brief (US_USART_MR) Start Frame delimiter is One Bit */\r
+/* -------- US_MR : (USART Offset: 0x04) Mode Register -------- */\r
+#define US_MR_USART_MODE_Pos              0\r
+#define US_MR_USART_MODE_Msk              (0xFu << US_MR_USART_MODE_Pos) /**< \brief (US_MR) Usart Mode */\r
+#define US_MR_USART_MODE(value)           ((US_MR_USART_MODE_Msk & ((value) << US_MR_USART_MODE_Pos)))\r
+#define   US_MR_USART_MODE_NORMAL         (0x0u <<  0) /**< \brief (US_MR) Normal */\r
+#define   US_MR_USART_MODE_RS485          (0x1u <<  0) /**< \brief (US_MR) RS485 */\r
+#define   US_MR_USART_MODE_HARDWARE       (0x2u <<  0) /**< \brief (US_MR) Hardware Handshaking */\r
+#define   US_MR_USART_MODE_MODEM          (0x3u <<  0) /**< \brief (US_MR) Modem */\r
+#define   US_MR_USART_MODE_ISO7816_T0     (0x4u <<  0) /**< \brief (US_MR) IS07816 Protocol: T = 0 */\r
+#define   US_MR_USART_MODE_ISO7816_T1     (0x6u <<  0) /**< \brief (US_MR) IS07816 Protocol: T = 1 */\r
+#define   US_MR_USART_MODE_IRDA           (0x8u <<  0) /**< \brief (US_MR) IrDA */\r
+#define   US_MR_USART_MODE_LIN_MASTER     (0xAu <<  0) /**< \brief (US_MR) LIN Master */\r
+#define   US_MR_USART_MODE_LIN_SLAVE      (0xBu <<  0) /**< \brief (US_MR) LIN Slave */\r
+#define   US_MR_USART_MODE_SPI_MASTER     (0xEu <<  0) /**< \brief (US_MR) SPI Master */\r
+#define   US_MR_USART_MODE_SPI_SLAVE      (0xFu <<  0) /**< \brief (US_MR) SPI Slave */\r
+#define US_MR_USCLKS_Pos            4\r
+#define US_MR_USCLKS_Msk            (0x3u << US_MR_USCLKS_Pos) /**< \brief (US_MR) Clock Selection */\r
+#define US_MR_USCLKS(value)         ((US_MR_USCLKS_Msk & ((value) << US_MR_USCLKS_Pos)))\r
+#define   US_MR_USCLKS_MCK          (0x0u <<  4) /**< \brief (US_MR) MCK */\r
+#define   US_MR_USCLKS_MCK_DIV      (0x1u <<  4) /**< \brief (US_MR) MCK / DIV */\r
+#define   US_MR_USCLKS_2            (0x2u <<  4) /**< \brief (US_MR) Reserved */\r
+#define   US_MR_USCLKS_SCK          (0x3u <<  4) /**< \brief (US_MR) SCK */\r
+#define US_MR_CHRL_Pos              6\r
+#define US_MR_CHRL_Msk              (0x3u << US_MR_CHRL_Pos) /**< \brief (US_MR) Character Length. */\r
+#define US_MR_CHRL(value)           ((US_MR_CHRL_Msk & ((value) << US_MR_CHRL_Pos)))\r
+#define   US_MR_CHRL_5              (0x0u <<  6) /**< \brief (US_MR) 5 bits */\r
+#define   US_MR_CHRL_6              (0x1u <<  6) /**< \brief (US_MR) 6 bits */\r
+#define   US_MR_CHRL_7              (0x2u <<  6) /**< \brief (US_MR) 7 bits */\r
+#define   US_MR_CHRL_8              (0x3u <<  6) /**< \brief (US_MR) 8 bits */\r
+#define US_MR_CPHA                  (0x1u <<  8) /**< \brief (US_MR) SPI CLock Phase */\r
+#define US_MR_SYNC                  (0x1u <<  8) /**< \brief (US_MR) Synchronous Mode Select */\r
+#define US_MR_PAR_Pos               9\r
+#define US_MR_PAR_Msk               (0x7u << US_MR_PAR_Pos) /**< \brief (US_MR) Parity Type */\r
+#define US_MR_PAR(value)            ((US_MR_PAR_Msk & ((value) << US_MR_PAR_Pos)))\r
+#define   US_MR_PAR_EVEN            (0x0u <<  9) /**< \brief (US_MR) Even parity */\r
+#define   US_MR_PAR_ODD             (0x1u <<  9) /**< \brief (US_MR) Odd parity */\r
+#define   US_MR_PAR_SPACE           (0x2u <<  9) /**< \brief (US_MR) Parity forced to 0 (Space) */\r
+#define   US_MR_PAR_MARK            (0x3u <<  9) /**< \brief (US_MR) Parity forced to 1 (Mark) */\r
+#define   US_MR_PAR_NONE            (0x4u <<  9) /**< \brief (US_MR) No Parity */\r
+#define   US_MR_PAR_5               (0x5u <<  9) /**< \brief (US_MR) No Parity */\r
+#define   US_MR_PAR_MULTI           (0x6u <<  9) /**< \brief (US_MR) Multi-drop mode */\r
+#define   US_MR_PAR_7               (0x7u <<  9) /**< \brief (US_MR) Multi-drop mode */\r
+#define US_MR_NBSTOP_Pos            12\r
+#define US_MR_NBSTOP_Msk            (0x3u << US_MR_NBSTOP_Pos) /**< \brief (US_MR) Number of Stop Bits */\r
+#define US_MR_NBSTOP(value)         ((US_MR_NBSTOP_Msk & ((value) << US_MR_NBSTOP_Pos)))\r
+#define   US_MR_NBSTOP_1            (0x0u << 12) /**< \brief (US_MR) 1 stop bit */\r
+#define   US_MR_NBSTOP_1_5          (0x1u << 12) /**< \brief (US_MR) 1.5 stop bits (Only valid if SYNC=0) */\r
+#define   US_MR_NBSTOP_2            (0x2u << 12) /**< \brief (US_MR) 2 stop bits */\r
+#define   US_MR_NBSTOP_3            (0x3u << 12) /**< \brief (US_MR) Reserved */\r
+#define US_MR_CHMODE_Pos            14\r
+#define US_MR_CHMODE_Msk            (0x3u << US_MR_CHMODE_Pos) /**< \brief (US_MR) Channel Mode */\r
+#define US_MR_CHMODE(value)         ((US_MR_CHMODE_Msk & ((value) << US_MR_CHMODE_Pos)))\r
+#define   US_MR_CHMODE_NORMAL       (0x0u << 14) /**< \brief (US_MR) Normal Mode */\r
+#define   US_MR_CHMODE_ECHO         (0x1u << 14) /**< \brief (US_MR) Automatic Echo. Receiver input is connected to the TXD pin */\r
+#define   US_MR_CHMODE_LOCAL_LOOP   (0x2u << 14) /**< \brief (US_MR) Local Loopback. Transmitter output is connected to the Receiver Input */\r
+#define   US_MR_CHMODE_REMOTE_LOOP  (0x3u << 14) /**< \brief (US_MR) Remote Loopback. RXD pin is internally connected to the TXD pin */\r
+#define US_MR_CPOL                  (0x1u << 16) /**< \brief (US_MR) SPI Clock Polarity */\r
+#define US_MR_MSBF                  (0x1u << 16) /**< \brief (US_MR) Bit Order */\r
+#define US_MR_USART_MODE9                 (0x1u << 17) /**< \brief (US_MR) 9-bit Character Length */\r
+#define US_MR_CLKO                  (0x1u << 18) /**< \brief (US_MR) Clock Output Select */\r
+#define US_MR_OVER                  (0x1u << 19) /**< \brief (US_MR) Oversampling Mode */\r
+#define US_MR_INACK                 (0x1u << 20) /**< \brief (US_MR) Inhibit Non Acknowledge */\r
+#define US_MR_DSNACK                (0x1u << 21) /**< \brief (US_MR) Disable Successive NACK */\r
+#define US_MR_VAR_SYNC              (0x1u << 22) /**< \brief (US_MR) Variable synchronization of command/data sync Start Frame Delimiter */\r
+#define US_MR_INVDATA               (0x1u << 23) /**< \brief (US_MR) Inverted data */\r
+#define US_MR_MAX_ITERATION_Pos     24\r
+#define US_MR_MAX_ITERATION_Msk     (0x7u << US_MR_MAX_ITERATION_Pos) /**< \brief (US_MR) Max interation */\r
+#define US_MR_MAX_ITERATION(value)  ((US_MR_MAX_ITERATION_Msk & ((value) << US_MR_MAX_ITERATION_Pos)))\r
+#define US_MR_FILTER                (0x1u << 28) /**< \brief (US_MR) Infrared Receive Line Filter */\r
+#define US_MR_MAN                   (0x1u << 29) /**< \brief (US_MR) Manchester Encoder/Decoder Enable */\r
+#define US_MR_MODSYNC               (0x1u << 30) /**< \brief (US_MR) Manchester Synchronization Mode */\r
+#define US_MR_ONEBIT                (0x1u << 31) /**< \brief (US_MR) Start Frame Delimiter selector */\r
+\r
+/* -------- US_LIN_IER : (USART Offset: 0x08) Interrupt Enable Register -------- */\r
+#define US_LIN_IER_RXRDY            (0x1u <<  0) /**< \brief (US_LIN_IER) Receiver Ready Interrupt Enable */\r
+#define   US_LIN_IER_RXRDY_0        (0x0u <<  0) /**< \brief (US_LIN_IER) No Effect */\r
+#define   US_LIN_IER_RXRDY_1        (0x1u <<  0) /**< \brief (US_LIN_IER) Enables the interrupt */\r
+#define US_LIN_IER_TXRDY            (0x1u <<  1) /**< \brief (US_LIN_IER) Transmitter Ready Interrupt Enable */\r
+#define   US_LIN_IER_TXRDY_0        (0x0u <<  1) /**< \brief (US_LIN_IER) No Effect */\r
+#define   US_LIN_IER_TXRDY_1        (0x1u <<  1) /**< \brief (US_LIN_IER) Enables the interrupt */\r
+#define US_LIN_IER_RXBRK            (0x1u <<  2) /**< \brief (US_LIN_IER) Receiver Break Interrupt Enable */\r
+#define   US_LIN_IER_RXBRK_0        (0x0u <<  2) /**< \brief (US_LIN_IER) No Effect */\r
+#define   US_LIN_IER_RXBRK_1        (0x1u <<  2) /**< \brief (US_LIN_IER) Enables the interrupt */\r
+#define US_LIN_IER_ENDRX            (0x1u <<  3) /**< \brief (US_LIN_IER) End of Receive Transfer Interrupt Enable */\r
+#define   US_LIN_IER_ENDRX_0        (0x0u <<  3) /**< \brief (US_LIN_IER) No Effect */\r
+#define   US_LIN_IER_ENDRX_1        (0x1u <<  3) /**< \brief (US_LIN_IER) Enables the interrupt */\r
+#define US_LIN_IER_ENDTX            (0x1u <<  4) /**< \brief (US_LIN_IER) End of Transmit Interrupt Enable */\r
+#define   US_LIN_IER_ENDTX_0        (0x0u <<  4) /**< \brief (US_LIN_IER) No Effect */\r
+#define   US_LIN_IER_ENDTX_1        (0x1u <<  4) /**< \brief (US_LIN_IER) Enables the interrupt */\r
+#define US_LIN_IER_OVRE             (0x1u <<  5) /**< \brief (US_LIN_IER) Overrun Error Interrupt Enable */\r
+#define   US_LIN_IER_OVRE_0         (0x0u <<  5) /**< \brief (US_LIN_IER) No Effect */\r
+#define   US_LIN_IER_OVRE_1         (0x1u <<  5) /**< \brief (US_LIN_IER) Enables the interrupt */\r
+#define US_LIN_IER_FRAME            (0x1u <<  6) /**< \brief (US_LIN_IER) Framing Error Interrupt Enable */\r
+#define   US_LIN_IER_FRAME_0        (0x0u <<  6) /**< \brief (US_LIN_IER) No Effect */\r
+#define   US_LIN_IER_FRAME_1        (0x1u <<  6) /**< \brief (US_LIN_IER) Enables the interrupt */\r
+#define US_LIN_IER_PARE             (0x1u <<  7) /**< \brief (US_LIN_IER) Parity Error Interrupt Enable */\r
+#define   US_LIN_IER_PARE_0         (0x0u <<  7) /**< \brief (US_LIN_IER) No Effect */\r
+#define   US_LIN_IER_PARE_1         (0x1u <<  7) /**< \brief (US_LIN_IER) Enables the interrupt */\r
+#define US_LIN_IER_TIMEOUT          (0x1u <<  8) /**< \brief (US_LIN_IER) Time-out Interrupt Enable */\r
+#define   US_LIN_IER_TIMEOUT_0      (0x0u <<  8) /**< \brief (US_LIN_IER) No Effect */\r
+#define   US_LIN_IER_TIMEOUT_1      (0x1u <<  8) /**< \brief (US_LIN_IER) Enables the interrupt */\r
+#define US_LIN_IER_TXEMPTY          (0x1u <<  9) /**< \brief (US_LIN_IER) Transmitter Empty Interrupt Enable */\r
+#define   US_LIN_IER_TXEMPTY_0      (0x0u <<  9) /**< \brief (US_LIN_IER) No Effect */\r
+#define   US_LIN_IER_TXEMPTY_1      (0x1u <<  9) /**< \brief (US_LIN_IER) Enables the interrupt */\r
+#define US_LIN_IER_ITER             (0x1u << 10) /**< \brief (US_LIN_IER) Iteration Interrupt Enable */\r
+#define   US_LIN_IER_ITER_0         (0x0u << 10) /**< \brief (US_LIN_IER) No Effect */\r
+#define   US_LIN_IER_ITER_1         (0x1u << 10) /**< \brief (US_LIN_IER) Enables the interrupt */\r
+#define US_LIN_IER_TXBUFE           (0x1u << 11) /**< \brief (US_LIN_IER) Buffer Empty Interrupt Enable */\r
+#define   US_LIN_IER_TXBUFE_0       (0x0u << 11) /**< \brief (US_LIN_IER) No Effect */\r
+#define   US_LIN_IER_TXBUFE_1       (0x1u << 11) /**< \brief (US_LIN_IER) Enables the interrupt */\r
+#define US_LIN_IER_RXBUFF           (0x1u << 12) /**< \brief (US_LIN_IER) Buffer Full Interrupt Enable */\r
+#define   US_LIN_IER_RXBUFF_0       (0x0u << 12) /**< \brief (US_LIN_IER) No Effect */\r
+#define   US_LIN_IER_RXBUFF_1       (0x1u << 12) /**< \brief (US_LIN_IER) Enables the interrupt */\r
+#define US_LIN_IER_NACK             (0x1u << 13) /**< \brief (US_LIN_IER) Non Acknowledge  or LIN Break Sent or LIN Break Received Interrupt Enable */\r
+#define   US_LIN_IER_NACK_0         (0x0u << 13) /**< \brief (US_LIN_IER) No Effect */\r
+#define   US_LIN_IER_NACK_1         (0x1u << 13) /**< \brief (US_LIN_IER) Enables the interrupt */\r
+#define US_LIN_IER_LINID            (0x1u << 14) /**< \brief (US_LIN_IER) LIN Identifier Sent or LIN Identifier Received Interrupt Enable */\r
+#define US_LIN_IER_LINTC            (0x1u << 15) /**< \brief (US_LIN_IER) LIN Transfer Conpleted Interrupt Enable */\r
+#define US_LIN_IER_RIIC             (0x1u << 16) /**< \brief (US_LIN_IER) Ring Indicator Input Change Enable */\r
+#define   US_LIN_IER_RIIC_0         (0x0u << 16) /**< \brief (US_LIN_IER) No Effect */\r
+#define   US_LIN_IER_RIIC_1         (0x1u << 16) /**< \brief (US_LIN_IER) Enables the interrupt */\r
+#define US_LIN_IER_DSRIC            (0x1u << 17) /**< \brief (US_LIN_IER) Data Set Ready Input Change Enable */\r
+#define   US_LIN_IER_DSRIC_0        (0x0u << 17) /**< \brief (US_LIN_IER) No Effect */\r
+#define   US_LIN_IER_DSRIC_1        (0x1u << 17) /**< \brief (US_LIN_IER) Enables the interrupt */\r
+#define US_LIN_IER_DCDIC            (0x1u << 18) /**< \brief (US_LIN_IER) Data Carrier Detect Input Change Interrupt Enable */\r
+#define   US_LIN_IER_DCDIC_0        (0x0u << 18) /**< \brief (US_LIN_IER) No Effect */\r
+#define   US_LIN_IER_DCDIC_1        (0x1u << 18) /**< \brief (US_LIN_IER) Enables the interrupt */\r
+#define US_LIN_IER_CTSIC            (0x1u << 19) /**< \brief (US_LIN_IER) Clear to Send Input Change Interrupt Enable */\r
+#define   US_LIN_IER_CTSIC_0        (0x0u << 19) /**< \brief (US_LIN_IER) No Effect */\r
+#define   US_LIN_IER_CTSIC_1        (0x1u << 19) /**< \brief (US_LIN_IER) Enables the interrupt */\r
+#define US_LIN_IER_LINBE            (0x1u << 25) /**< \brief (US_LIN_IER) LIN Bus Error Interrupt Enable */\r
+#define US_LIN_IER_LINISFE          (0x1u << 26) /**< \brief (US_LIN_IER) LIN Inconsistent Synch Field Error Interrupt Enable */\r
+#define US_LIN_IER_LINIPE           (0x1u << 27) /**< \brief (US_LIN_IER) LIN Identifier Parity Interrupt Enable */\r
+#define US_LIN_IER_LINCE            (0x1u << 28) /**< \brief (US_LIN_IER) LIN Checksum Error Interrupt Enable */\r
+#define US_LIN_IER_LINSNRE          (0x1u << 29) /**< \brief (US_LIN_IER) LIN Slave Not Responding Error Interrupt Enable */\r
+#define US_LIN_IER_LINSTE           (0x1u << 30) /**< \brief (US_LIN_IER) LIN Synch Tolerance Error Interrupt Enable */\r
+#define   US_LIN_IER_LINSTE_0       (0x0u << 30) /**< \brief (US_LIN_IER) No Effect */\r
+#define   US_LIN_IER_LINSTE_1       (0x1u << 30) /**< \brief (US_LIN_IER) Enables the interrupt */\r
+#define US_LIN_IER_LINHTE           (0x1u << 31) /**< \brief (US_LIN_IER) LIN Header Timeout Error Interrupt Enable */\r
+#define   US_LIN_IER_LINHTE_0       (0x0u << 31) /**< \brief (US_LIN_IER) No Effect */\r
+#define   US_LIN_IER_LINHTE_1       (0x1u << 31) /**< \brief (US_LIN_IER) Enables the interrupt */\r
+/* -------- US_SPI_SLAVE_IER : (USART Offset: 0x08) Interrupt Enable Register -------- */\r
+#define US_SPI_SLAVE_IER_RXRDY      (0x1u <<  0) /**< \brief (US_SPI_SLAVE_IER) Receiver Ready Interrupt Enable */\r
+#define   US_SPI_SLAVE_IER_RXRDY_0  (0x0u <<  0) /**< \brief (US_SPI_SLAVE_IER) No Effect */\r
+#define   US_SPI_SLAVE_IER_RXRDY_1  (0x1u <<  0) /**< \brief (US_SPI_SLAVE_IER) Enables the interrupt */\r
+#define US_SPI_SLAVE_IER_TXRDY      (0x1u <<  1) /**< \brief (US_SPI_SLAVE_IER) Transmitter Ready Interrupt Enable */\r
+#define   US_SPI_SLAVE_IER_TXRDY_0  (0x0u <<  1) /**< \brief (US_SPI_SLAVE_IER) No Effect */\r
+#define   US_SPI_SLAVE_IER_TXRDY_1  (0x1u <<  1) /**< \brief (US_SPI_SLAVE_IER) Enables the interrupt */\r
+#define US_SPI_SLAVE_IER_RXBRK      (0x1u <<  2) /**< \brief (US_SPI_SLAVE_IER) Receiver Break Interrupt Enable */\r
+#define   US_SPI_SLAVE_IER_RXBRK_0  (0x0u <<  2) /**< \brief (US_SPI_SLAVE_IER) No Effect */\r
+#define   US_SPI_SLAVE_IER_RXBRK_1  (0x1u <<  2) /**< \brief (US_SPI_SLAVE_IER) Enables the interrupt */\r
+#define US_SPI_SLAVE_IER_ENDRX      (0x1u <<  3) /**< \brief (US_SPI_SLAVE_IER) End of Receive Transfer Interrupt Enable */\r
+#define   US_SPI_SLAVE_IER_ENDRX_0  (0x0u <<  3) /**< \brief (US_SPI_SLAVE_IER) No Effect */\r
+#define   US_SPI_SLAVE_IER_ENDRX_1  (0x1u <<  3) /**< \brief (US_SPI_SLAVE_IER) Enables the interrupt */\r
+#define US_SPI_SLAVE_IER_ENDTX      (0x1u <<  4) /**< \brief (US_SPI_SLAVE_IER) End of Transmit Interrupt Enable */\r
+#define   US_SPI_SLAVE_IER_ENDTX_0  (0x0u <<  4) /**< \brief (US_SPI_SLAVE_IER) No Effect */\r
+#define   US_SPI_SLAVE_IER_ENDTX_1  (0x1u <<  4) /**< \brief (US_SPI_SLAVE_IER) Enables the interrupt */\r
+#define US_SPI_SLAVE_IER_OVRE       (0x1u <<  5) /**< \brief (US_SPI_SLAVE_IER) Overrun Error Interrupt Enable */\r
+#define   US_SPI_SLAVE_IER_OVRE_0   (0x0u <<  5) /**< \brief (US_SPI_SLAVE_IER) No Effect */\r
+#define   US_SPI_SLAVE_IER_OVRE_1   (0x1u <<  5) /**< \brief (US_SPI_SLAVE_IER) Enables the interrupt */\r
+#define US_SPI_SLAVE_IER_FRAME      (0x1u <<  6) /**< \brief (US_SPI_SLAVE_IER) Framing Error Interrupt Enable */\r
+#define   US_SPI_SLAVE_IER_FRAME_0  (0x0u <<  6) /**< \brief (US_SPI_SLAVE_IER) No Effect */\r
+#define   US_SPI_SLAVE_IER_FRAME_1  (0x1u <<  6) /**< \brief (US_SPI_SLAVE_IER) Enables the interrupt */\r
+#define US_SPI_SLAVE_IER_PARE       (0x1u <<  7) /**< \brief (US_SPI_SLAVE_IER) Parity Error Interrupt Enable */\r
+#define   US_SPI_SLAVE_IER_PARE_0   (0x0u <<  7) /**< \brief (US_SPI_SLAVE_IER) No Effect */\r
+#define   US_SPI_SLAVE_IER_PARE_1   (0x1u <<  7) /**< \brief (US_SPI_SLAVE_IER) Enables the interrupt */\r
+#define US_SPI_SLAVE_IER_TIMEOUT    (0x1u <<  8) /**< \brief (US_SPI_SLAVE_IER) Time-out Interrupt Enable */\r
+#define   US_SPI_SLAVE_IER_TIMEOUT_0 (0x0u <<  8) /**< \brief (US_SPI_SLAVE_IER) No Effect */\r
+#define   US_SPI_SLAVE_IER_TIMEOUT_1 (0x1u <<  8) /**< \brief (US_SPI_SLAVE_IER) Enables the interrupt */\r
+#define US_SPI_SLAVE_IER_TXEMPTY    (0x1u <<  9) /**< \brief (US_SPI_SLAVE_IER) Transmitter Empty Interrupt Enable */\r
+#define   US_SPI_SLAVE_IER_TXEMPTY_0 (0x0u <<  9) /**< \brief (US_SPI_SLAVE_IER) No Effect */\r
+#define   US_SPI_SLAVE_IER_TXEMPTY_1 (0x1u <<  9) /**< \brief (US_SPI_SLAVE_IER) Enables the interrupt */\r
+#define US_SPI_SLAVE_IER_UNRE       (0x1u << 10) /**< \brief (US_SPI_SLAVE_IER) SPI Underrun Error Interrupt Enable */\r
+#define   US_SPI_SLAVE_IER_UNRE_0   (0x0u << 10) /**< \brief (US_SPI_SLAVE_IER) No Effect */\r
+#define   US_SPI_SLAVE_IER_UNRE_1   (0x1u << 10) /**< \brief (US_SPI_SLAVE_IER) Enables the interrupt */\r
+#define US_SPI_SLAVE_IER_TXBUFE     (0x1u << 11) /**< \brief (US_SPI_SLAVE_IER) Buffer Empty Interrupt Enable */\r
+#define   US_SPI_SLAVE_IER_TXBUFE_0 (0x0u << 11) /**< \brief (US_SPI_SLAVE_IER) No Effect */\r
+#define   US_SPI_SLAVE_IER_TXBUFE_1 (0x1u << 11) /**< \brief (US_SPI_SLAVE_IER) Enables the interrupt */\r
+#define US_SPI_SLAVE_IER_RXBUFF     (0x1u << 12) /**< \brief (US_SPI_SLAVE_IER) Buffer Full Interrupt Enable */\r
+#define   US_SPI_SLAVE_IER_RXBUFF_0 (0x0u << 12) /**< \brief (US_SPI_SLAVE_IER) No Effect */\r
+#define   US_SPI_SLAVE_IER_RXBUFF_1 (0x1u << 12) /**< \brief (US_SPI_SLAVE_IER) Enables the interrupt */\r
+#define US_SPI_SLAVE_IER_NACK       (0x1u << 13) /**< \brief (US_SPI_SLAVE_IER) Non Acknowledge Interrupt Enable */\r
+#define   US_SPI_SLAVE_IER_NACK_0   (0x0u << 13) /**< \brief (US_SPI_SLAVE_IER) No Effect */\r
+#define   US_SPI_SLAVE_IER_NACK_1   (0x1u << 13) /**< \brief (US_SPI_SLAVE_IER) Enables the interrupt */\r
+#define US_SPI_SLAVE_IER_RIIC       (0x1u << 16) /**< \brief (US_SPI_SLAVE_IER) Ring Indicator Input Change Enable */\r
+#define   US_SPI_SLAVE_IER_RIIC_0   (0x0u << 16) /**< \brief (US_SPI_SLAVE_IER) No Effect */\r
+#define   US_SPI_SLAVE_IER_RIIC_1   (0x1u << 16) /**< \brief (US_SPI_SLAVE_IER) Enables the interrupt */\r
+#define US_SPI_SLAVE_IER_DSRIC      (0x1u << 17) /**< \brief (US_SPI_SLAVE_IER) Data Set Ready Input Change Enable */\r
+#define   US_SPI_SLAVE_IER_DSRIC_0  (0x0u << 17) /**< \brief (US_SPI_SLAVE_IER) No Effect */\r
+#define   US_SPI_SLAVE_IER_DSRIC_1  (0x1u << 17) /**< \brief (US_SPI_SLAVE_IER) Enables the interrupt */\r
+#define US_SPI_SLAVE_IER_DCDIC      (0x1u << 18) /**< \brief (US_SPI_SLAVE_IER) Data Carrier Detect Input Change Interrupt Enable */\r
+#define   US_SPI_SLAVE_IER_DCDIC_0  (0x0u << 18) /**< \brief (US_SPI_SLAVE_IER) No Effect */\r
+#define   US_SPI_SLAVE_IER_DCDIC_1  (0x1u << 18) /**< \brief (US_SPI_SLAVE_IER) Enables the interrupt */\r
+#define US_SPI_SLAVE_IER_CTSIC      (0x1u << 19) /**< \brief (US_SPI_SLAVE_IER) Clear to Send Input Change Interrupt Enable */\r
+#define   US_SPI_SLAVE_IER_CTSIC_0  (0x0u << 19) /**< \brief (US_SPI_SLAVE_IER) No Effect */\r
+#define   US_SPI_SLAVE_IER_CTSIC_1  (0x1u << 19) /**< \brief (US_SPI_SLAVE_IER) Enables the interrupt */\r
+/* -------- US_USART_IER : (USART Offset: 0x08) Interrupt Enable Register -------- */\r
+#define US_USART_IER_RXRDY          (0x1u <<  0) /**< \brief (US_USART_IER) Receiver Ready Interrupt Enable */\r
+#define   US_USART_IER_RXRDY_0      (0x0u <<  0) /**< \brief (US_USART_IER) No Effect */\r
+#define   US_USART_IER_RXRDY_1      (0x1u <<  0) /**< \brief (US_USART_IER) Enables the interrupt */\r
+#define US_USART_IER_TXRDY          (0x1u <<  1) /**< \brief (US_USART_IER) Transmitter Ready Interrupt Enable */\r
+#define   US_USART_IER_TXRDY_0      (0x0u <<  1) /**< \brief (US_USART_IER) No Effect */\r
+#define   US_USART_IER_TXRDY_1      (0x1u <<  1) /**< \brief (US_USART_IER) Enables the interrupt */\r
+#define US_USART_IER_RXBRK          (0x1u <<  2) /**< \brief (US_USART_IER) Receiver Break Interrupt Enable */\r
+#define   US_USART_IER_RXBRK_0      (0x0u <<  2) /**< \brief (US_USART_IER) No Effect */\r
+#define   US_USART_IER_RXBRK_1      (0x1u <<  2) /**< \brief (US_USART_IER) Enables the interrupt */\r
+#define US_USART_IER_ENDRX          (0x1u <<  3) /**< \brief (US_USART_IER) End of Receive Transfer Interrupt Enable */\r
+#define   US_USART_IER_ENDRX_0      (0x0u <<  3) /**< \brief (US_USART_IER) No Effect */\r
+#define   US_USART_IER_ENDRX_1      (0x1u <<  3) /**< \brief (US_USART_IER) Enables the interrupt */\r
+#define US_USART_IER_ENDTX          (0x1u <<  4) /**< \brief (US_USART_IER) End of Transmit Interrupt Enable */\r
+#define   US_USART_IER_ENDTX_0      (0x0u <<  4) /**< \brief (US_USART_IER) No Effect */\r
+#define   US_USART_IER_ENDTX_1      (0x1u <<  4) /**< \brief (US_USART_IER) Enables the interrupt */\r
+#define US_USART_IER_OVRE           (0x1u <<  5) /**< \brief (US_USART_IER) Overrun Error Interrupt Enable */\r
+#define   US_USART_IER_OVRE_0       (0x0u <<  5) /**< \brief (US_USART_IER) No Effect */\r
+#define   US_USART_IER_OVRE_1       (0x1u <<  5) /**< \brief (US_USART_IER) Enables the interrupt */\r
+#define US_USART_IER_FRAME          (0x1u <<  6) /**< \brief (US_USART_IER) Framing Error Interrupt Enable */\r
+#define   US_USART_IER_FRAME_0      (0x0u <<  6) /**< \brief (US_USART_IER) No Effect */\r
+#define   US_USART_IER_FRAME_1      (0x1u <<  6) /**< \brief (US_USART_IER) Enables the interrupt */\r
+#define US_USART_IER_PARE           (0x1u <<  7) /**< \brief (US_USART_IER) Parity Error Interrupt Enable */\r
+#define   US_USART_IER_PARE_0       (0x0u <<  7) /**< \brief (US_USART_IER) No Effect */\r
+#define   US_USART_IER_PARE_1       (0x1u <<  7) /**< \brief (US_USART_IER) Enables the interrupt */\r
+#define US_USART_IER_TIMEOUT        (0x1u <<  8) /**< \brief (US_USART_IER) Time-out Interrupt Enable */\r
+#define   US_USART_IER_TIMEOUT_0    (0x0u <<  8) /**< \brief (US_USART_IER) No Effect */\r
+#define   US_USART_IER_TIMEOUT_1    (0x1u <<  8) /**< \brief (US_USART_IER) Enables the interrupt */\r
+#define US_USART_IER_TXEMPTY        (0x1u <<  9) /**< \brief (US_USART_IER) Transmitter Empty Interrupt Enable */\r
+#define   US_USART_IER_TXEMPTY_0    (0x0u <<  9) /**< \brief (US_USART_IER) No Effect */\r
+#define   US_USART_IER_TXEMPTY_1    (0x1u <<  9) /**< \brief (US_USART_IER) Enables the interrupt */\r
+#define US_USART_IER_ITER           (0x1u << 10) /**< \brief (US_USART_IER) Iteration Interrupt Enable */\r
+#define   US_USART_IER_ITER_0       (0x0u << 10) /**< \brief (US_USART_IER) No Effect */\r
+#define   US_USART_IER_ITER_1       (0x1u << 10) /**< \brief (US_USART_IER) Enables the interrupt */\r
+#define US_USART_IER_TXBUFE         (0x1u << 11) /**< \brief (US_USART_IER) Buffer Empty Interrupt Enable */\r
+#define   US_USART_IER_TXBUFE_0     (0x0u << 11) /**< \brief (US_USART_IER) No Effect */\r
+#define   US_USART_IER_TXBUFE_1     (0x1u << 11) /**< \brief (US_USART_IER) Enables the interrupt */\r
+#define US_USART_IER_RXBUFF         (0x1u << 12) /**< \brief (US_USART_IER) Buffer Full Interrupt Enable */\r
+#define   US_USART_IER_RXBUFF_0     (0x0u << 12) /**< \brief (US_USART_IER) No Effect */\r
+#define   US_USART_IER_RXBUFF_1     (0x1u << 12) /**< \brief (US_USART_IER) Enables the interrupt */\r
+#define US_USART_IER_NACK           (0x1u << 13) /**< \brief (US_USART_IER) Non Acknowledge Interrupt Enable */\r
+#define   US_USART_IER_NACK_0       (0x0u << 13) /**< \brief (US_USART_IER) No Effect */\r
+#define   US_USART_IER_NACK_1       (0x1u << 13) /**< \brief (US_USART_IER) Enables the interrupt */\r
+#define US_USART_IER_RIIC           (0x1u << 16) /**< \brief (US_USART_IER) Ring Indicator Input Change Enable */\r
+#define   US_USART_IER_RIIC_0       (0x0u << 16) /**< \brief (US_USART_IER) No Effect */\r
+#define   US_USART_IER_RIIC_1       (0x1u << 16) /**< \brief (US_USART_IER) Enables the interrupt */\r
+#define US_USART_IER_DSRIC          (0x1u << 17) /**< \brief (US_USART_IER) Data Set Ready Input Change Enable */\r
+#define   US_USART_IER_DSRIC_0      (0x0u << 17) /**< \brief (US_USART_IER) No Effect */\r
+#define   US_USART_IER_DSRIC_1      (0x1u << 17) /**< \brief (US_USART_IER) Enables the interrupt */\r
+#define US_USART_IER_DCDIC          (0x1u << 18) /**< \brief (US_USART_IER) Data Carrier Detect Input Change Interrupt Enable */\r
+#define   US_USART_IER_DCDIC_0      (0x0u << 18) /**< \brief (US_USART_IER) No Effect */\r
+#define   US_USART_IER_DCDIC_1      (0x1u << 18) /**< \brief (US_USART_IER) Enables the interrupt */\r
+#define US_USART_IER_CTSIC          (0x1u << 19) /**< \brief (US_USART_IER) Clear to Send Input Change Interrupt Enable */\r
+#define   US_USART_IER_CTSIC_0      (0x0u << 19) /**< \brief (US_USART_IER) No Effect */\r
+#define   US_USART_IER_CTSIC_1      (0x1u << 19) /**< \brief (US_USART_IER) Enables the interrupt */\r
+#define US_USART_IER_MANE           (0x1u << 20) /**< \brief (US_USART_IER) Manchester Error Interrupt Enable */\r
+#define US_USART_IER_MANEA          (0x1u << 24) /**< \brief (US_USART_IER) Manchester Error Interrupt Enable */\r
+#define   US_USART_IER_MANEA_0      (0x0u << 24) /**< \brief (US_USART_IER) No effect */\r
+#define   US_USART_IER_MANEA_1      (0x1u << 24) /**< \brief (US_USART_IER) Enables the interrupt */\r
+/* -------- US_IER : (USART Offset: 0x08) Interrupt Enable Register -------- */\r
+#define US_IER_RXRDY                (0x1u <<  0) /**< \brief (US_IER) Receiver Ready Interrupt Enable */\r
+#define US_IER_TXRDY                (0x1u <<  1) /**< \brief (US_IER) Transmitter Ready Interrupt Enable */\r
+#define US_IER_RXBRK                (0x1u <<  2) /**< \brief (US_IER) Receiver Break Interrupt Enable */\r
+#define US_IER_ENDRX                (0x1u <<  3) /**< \brief (US_IER) End of Receive Transfer Interrupt Enable */\r
+#define US_IER_ENDTX                (0x1u <<  4) /**< \brief (US_IER) End of Transmit Interrupt Enable */\r
+#define US_IER_OVRE                 (0x1u <<  5) /**< \brief (US_IER) Overrun Error Interrupt Enable */\r
+#define US_IER_FRAME                (0x1u <<  6) /**< \brief (US_IER) Framing Error Interrupt Enable */\r
+#define US_IER_PARE                 (0x1u <<  7) /**< \brief (US_IER) Parity Error Interrupt Enable */\r
+#define US_IER_TIMEOUT              (0x1u <<  8) /**< \brief (US_IER) Time-out Interrupt Enable */\r
+#define US_IER_TXEMPTY              (0x1u <<  9) /**< \brief (US_IER) Transmitter Empty Interrupt Enable */\r
+#define US_IER_ITER                 (0x1u << 10) /**< \brief (US_IER) Iteration Interrupt Enable */\r
+#define US_IER_UNRE                 (0x1u << 10) /**< \brief (US_IER) SPI Underrun Error Interrupt Enable */\r
+#define US_IER_TXBUFE               (0x1u << 11) /**< \brief (US_IER) Buffer Empty Interrupt Enable */\r
+#define US_IER_RXBUFF               (0x1u << 12) /**< \brief (US_IER) Buffer Full Interrupt Enable */\r
+#define US_IER_NACK                 (0x1u << 13) /**< \brief (US_IER) Non Acknowledge  or LIN Break Sent or LIN Break Received Interrupt Enable */\r
+#define US_IER_LINID                (0x1u << 14) /**< \brief (US_IER) LIN Identifier Sent or LIN Identifier Received Interrupt Enable */\r
+#define US_IER_LINTC                (0x1u << 15) /**< \brief (US_IER) LIN Transfer Conpleted Interrupt Enable */\r
+#define US_IER_RIIC                 (0x1u << 16) /**< \brief (US_IER) Ring Indicator Input Change Enable */\r
+#define US_IER_DSRIC                (0x1u << 17) /**< \brief (US_IER) Data Set Ready Input Change Enable */\r
+#define US_IER_DCDIC                (0x1u << 18) /**< \brief (US_IER) Data Carrier Detect Input Change Interrupt Enable */\r
+#define US_IER_CTSIC                (0x1u << 19) /**< \brief (US_IER) Clear to Send Input Change Interrupt Enable */\r
+#define US_IER_MANE                 (0x1u << 20) /**< \brief (US_IER) Manchester Error Interrupt Enable */\r
+#define US_IER_MANEA                (0x1u << 24) /**< \brief (US_IER) Manchester Error Interrupt Enable */\r
+#define US_IER_LINBE                (0x1u << 25) /**< \brief (US_IER) LIN Bus Error Interrupt Enable */\r
+#define US_IER_LINISFE              (0x1u << 26) /**< \brief (US_IER) LIN Inconsistent Synch Field Error Interrupt Enable */\r
+#define US_IER_LINIPE               (0x1u << 27) /**< \brief (US_IER) LIN Identifier Parity Interrupt Enable */\r
+#define US_IER_LINCE                (0x1u << 28) /**< \brief (US_IER) LIN Checksum Error Interrupt Enable */\r
+#define US_IER_LINSNRE              (0x1u << 29) /**< \brief (US_IER) LIN Slave Not Responding Error Interrupt Enable */\r
+#define US_IER_LINSTE               (0x1u << 30) /**< \brief (US_IER) LIN Synch Tolerance Error Interrupt Enable */\r
+#define US_IER_LINHTE               (0x1u << 31) /**< \brief (US_IER) LIN Header Timeout Error Interrupt Enable */\r
+\r
+/* -------- US_LIN_IDR : (USART Offset: 0x0C) Interrupt Disable Register -------- */\r
+#define US_LIN_IDR_RXRDY            (0x1u <<  0) /**< \brief (US_LIN_IDR) Receiver Ready Interrupt Disable */\r
+#define   US_LIN_IDR_RXRDY_0        (0x0u <<  0) /**< \brief (US_LIN_IDR) No Effect */\r
+#define   US_LIN_IDR_RXRDY_1        (0x1u <<  0) /**< \brief (US_LIN_IDR) Disables the interrupt */\r
+#define US_LIN_IDR_TXRDY            (0x1u <<  1) /**< \brief (US_LIN_IDR) Transmitter Ready Interrupt Disable */\r
+#define   US_LIN_IDR_TXRDY_0        (0x0u <<  1) /**< \brief (US_LIN_IDR) No Effect */\r
+#define   US_LIN_IDR_TXRDY_1        (0x1u <<  1) /**< \brief (US_LIN_IDR) Disables the interrupt */\r
+#define US_LIN_IDR_RXBRK            (0x1u <<  2) /**< \brief (US_LIN_IDR) Receiver Break Interrupt Disable */\r
+#define   US_LIN_IDR_RXBRK_0        (0x0u <<  2) /**< \brief (US_LIN_IDR) No Effect */\r
+#define   US_LIN_IDR_RXBRK_1        (0x1u <<  2) /**< \brief (US_LIN_IDR) Disables the interrupt */\r
+#define US_LIN_IDR_ENDRX            (0x1u <<  3) /**< \brief (US_LIN_IDR) End of Receive Transfer Interrupt Disable */\r
+#define   US_LIN_IDR_ENDRX_0        (0x0u <<  3) /**< \brief (US_LIN_IDR) No Effect */\r
+#define   US_LIN_IDR_ENDRX_1        (0x1u <<  3) /**< \brief (US_LIN_IDR) Disables the interrupt */\r
+#define US_LIN_IDR_ENDTX            (0x1u <<  4) /**< \brief (US_LIN_IDR) End of Transmit Interrupt Disable */\r
+#define   US_LIN_IDR_ENDTX_0        (0x0u <<  4) /**< \brief (US_LIN_IDR) No Effect */\r
+#define   US_LIN_IDR_ENDTX_1        (0x1u <<  4) /**< \brief (US_LIN_IDR) Disables the interrupt */\r
+#define US_LIN_IDR_OVRE             (0x1u <<  5) /**< \brief (US_LIN_IDR) Overrun Error Interrupt Disable */\r
+#define   US_LIN_IDR_OVRE_0         (0x0u <<  5) /**< \brief (US_LIN_IDR) No Effect */\r
+#define   US_LIN_IDR_OVRE_1         (0x1u <<  5) /**< \brief (US_LIN_IDR) Disables the interrupt */\r
+#define US_LIN_IDR_FRAME            (0x1u <<  6) /**< \brief (US_LIN_IDR) Framing Error Interrupt Disable */\r
+#define   US_LIN_IDR_FRAME_0        (0x0u <<  6) /**< \brief (US_LIN_IDR) No Effect */\r
+#define   US_LIN_IDR_FRAME_1        (0x1u <<  6) /**< \brief (US_LIN_IDR) Disables the interrupt */\r
+#define US_LIN_IDR_PARE             (0x1u <<  7) /**< \brief (US_LIN_IDR) Parity Error Interrupt Disable */\r
+#define   US_LIN_IDR_PARE_0         (0x0u <<  7) /**< \brief (US_LIN_IDR) No Effect */\r
+#define   US_LIN_IDR_PARE_1         (0x1u <<  7) /**< \brief (US_LIN_IDR) Disables the interrupt */\r
+#define US_LIN_IDR_TIMEOUT          (0x1u <<  8) /**< \brief (US_LIN_IDR) Time-out Interrupt Disable */\r
+#define   US_LIN_IDR_TIMEOUT_0      (0x0u <<  8) /**< \brief (US_LIN_IDR) No Effect */\r
+#define   US_LIN_IDR_TIMEOUT_1      (0x1u <<  8) /**< \brief (US_LIN_IDR) Disables the interrupt */\r
+#define US_LIN_IDR_TXEMPTY          (0x1u <<  9) /**< \brief (US_LIN_IDR) Transmitter Empty Interrupt Disable */\r
+#define   US_LIN_IDR_TXEMPTY_0      (0x0u <<  9) /**< \brief (US_LIN_IDR) No Effect */\r
+#define   US_LIN_IDR_TXEMPTY_1      (0x1u <<  9) /**< \brief (US_LIN_IDR) Disables the interrupt */\r
+#define US_LIN_IDR_ITER             (0x1u << 10) /**< \brief (US_LIN_IDR) Iteration Interrupt Disable */\r
+#define   US_LIN_IDR_ITER_0         (0x0u << 10) /**< \brief (US_LIN_IDR) No Effect */\r
+#define   US_LIN_IDR_ITER_1         (0x1u << 10) /**< \brief (US_LIN_IDR) Disables the interrupt */\r
+#define US_LIN_IDR_TXBUFE           (0x1u << 11) /**< \brief (US_LIN_IDR) Buffer Empty Interrupt Disable */\r
+#define   US_LIN_IDR_TXBUFE_0       (0x0u << 11) /**< \brief (US_LIN_IDR) No Effect */\r
+#define   US_LIN_IDR_TXBUFE_1       (0x1u << 11) /**< \brief (US_LIN_IDR) Disables the interrupt */\r
+#define US_LIN_IDR_RXBUFF           (0x1u << 12) /**< \brief (US_LIN_IDR) Buffer Full Interrupt Disable */\r
+#define   US_LIN_IDR_RXBUFF_0       (0x0u << 12) /**< \brief (US_LIN_IDR) No Effect */\r
+#define   US_LIN_IDR_RXBUFF_1       (0x1u << 12) /**< \brief (US_LIN_IDR) Disables the interrupt */\r
+#define US_LIN_IDR_NACK             (0x1u << 13) /**< \brief (US_LIN_IDR) Non Acknowledge  or LIN Break Sent or LIN Break Received Interrupt Disable */\r
+#define   US_LIN_IDR_NACK_0         (0x0u << 13) /**< \brief (US_LIN_IDR) No Effect */\r
+#define   US_LIN_IDR_NACK_1         (0x1u << 13) /**< \brief (US_LIN_IDR) Disables the interrupt */\r
+#define US_LIN_IDR_LINID            (0x1u << 14) /**< \brief (US_LIN_IDR) LIN Identifier Sent or LIN Identifier Received Interrupt Disable */\r
+#define US_LIN_IDR_LINTC            (0x1u << 15) /**< \brief (US_LIN_IDR) LIN Transfer Conpleted Interrupt Disable */\r
+#define US_LIN_IDR_RIIC             (0x1u << 16) /**< \brief (US_LIN_IDR) Ring Indicator Input Change Disable */\r
+#define   US_LIN_IDR_RIIC_0         (0x0u << 16) /**< \brief (US_LIN_IDR) No Effect */\r
+#define   US_LIN_IDR_RIIC_1         (0x1u << 16) /**< \brief (US_LIN_IDR) Disables the interrupt */\r
+#define US_LIN_IDR_DSRIC            (0x1u << 17) /**< \brief (US_LIN_IDR) Data Set Ready Input Change Disable */\r
+#define   US_LIN_IDR_DSRIC_0        (0x0u << 17) /**< \brief (US_LIN_IDR) No Effect */\r
+#define   US_LIN_IDR_DSRIC_1        (0x1u << 17) /**< \brief (US_LIN_IDR) Disables the interrupt */\r
+#define US_LIN_IDR_DCDIC            (0x1u << 18) /**< \brief (US_LIN_IDR) Data Carrier Detect Input Change Interrupt Disable */\r
+#define   US_LIN_IDR_DCDIC_0        (0x0u << 18) /**< \brief (US_LIN_IDR) No Effect */\r
+#define   US_LIN_IDR_DCDIC_1        (0x1u << 18) /**< \brief (US_LIN_IDR) Disables the interrupt */\r
+#define US_LIN_IDR_CTSIC            (0x1u << 19) /**< \brief (US_LIN_IDR) Clear to Send Input Change Interrupt Disable */\r
+#define   US_LIN_IDR_CTSIC_0        (0x0u << 19) /**< \brief (US_LIN_IDR) No Effect */\r
+#define   US_LIN_IDR_CTSIC_1        (0x1u << 19) /**< \brief (US_LIN_IDR) Disables the interrupt */\r
+#define US_LIN_IDR_LINBE            (0x1u << 25) /**< \brief (US_LIN_IDR) LIN Bus Error Interrupt Disable */\r
+#define US_LIN_IDR_LINISFE          (0x1u << 26) /**< \brief (US_LIN_IDR) LIN Inconsistent Synch Field Error Interrupt Disable */\r
+#define US_LIN_IDR_LINIPE           (0x1u << 27) /**< \brief (US_LIN_IDR) LIN Identifier Parity Interrupt Disable */\r
+#define US_LIN_IDR_LINCE            (0x1u << 28) /**< \brief (US_LIN_IDR) LIN Checksum Error Interrupt Disable */\r
+#define US_LIN_IDR_LINSNRE          (0x1u << 29) /**< \brief (US_LIN_IDR) LIN Slave Not Responding Error Interrupt Disable */\r
+#define US_LIN_IDR_LINSTE           (0x1u << 30) /**< \brief (US_LIN_IDR) LIN Synch Tolerance Error Interrupt Disable */\r
+#define   US_LIN_IDR_LINSTE_0       (0x0u << 30) /**< \brief (US_LIN_IDR) No Effect */\r
+#define   US_LIN_IDR_LINSTE_1       (0x1u << 30) /**< \brief (US_LIN_IDR) Disables the interrupt */\r
+#define US_LIN_IDR_LINHTE           (0x1u << 31) /**< \brief (US_LIN_IDR) LIN Header Timeout Error Interrupt Disable */\r
+#define   US_LIN_IDR_LINHTE_0       (0x0u << 31) /**< \brief (US_LIN_IDR) No Effect */\r
+#define   US_LIN_IDR_LINHTE_1       (0x1u << 31) /**< \brief (US_LIN_IDR) Disables the interrupt */\r
+/* -------- US_SPI_SLAVE_IDR : (USART Offset: 0x0C) Interrupt Disable Register -------- */\r
+#define US_SPI_SLAVE_IDR_RXRDY      (0x1u <<  0) /**< \brief (US_SPI_SLAVE_IDR) Receiver Ready Interrupt Disable */\r
+#define   US_SPI_SLAVE_IDR_RXRDY_0  (0x0u <<  0) /**< \brief (US_SPI_SLAVE_IDR) No Effect */\r
+#define   US_SPI_SLAVE_IDR_RXRDY_1  (0x1u <<  0) /**< \brief (US_SPI_SLAVE_IDR) Disables the interrupt */\r
+#define US_SPI_SLAVE_IDR_TXRDY      (0x1u <<  1) /**< \brief (US_SPI_SLAVE_IDR) Transmitter Ready Interrupt Disable */\r
+#define   US_SPI_SLAVE_IDR_TXRDY_0  (0x0u <<  1) /**< \brief (US_SPI_SLAVE_IDR) No Effect */\r
+#define   US_SPI_SLAVE_IDR_TXRDY_1  (0x1u <<  1) /**< \brief (US_SPI_SLAVE_IDR) Disables the interrupt */\r
+#define US_SPI_SLAVE_IDR_RXBRK      (0x1u <<  2) /**< \brief (US_SPI_SLAVE_IDR) Receiver Break Interrupt Disable */\r
+#define   US_SPI_SLAVE_IDR_RXBRK_0  (0x0u <<  2) /**< \brief (US_SPI_SLAVE_IDR) No Effect */\r
+#define   US_SPI_SLAVE_IDR_RXBRK_1  (0x1u <<  2) /**< \brief (US_SPI_SLAVE_IDR) Disables the interrupt */\r
+#define US_SPI_SLAVE_IDR_ENDRX      (0x1u <<  3) /**< \brief (US_SPI_SLAVE_IDR) End of Receive Transfer Interrupt Disable */\r
+#define   US_SPI_SLAVE_IDR_ENDRX_0  (0x0u <<  3) /**< \brief (US_SPI_SLAVE_IDR) No Effect */\r
+#define   US_SPI_SLAVE_IDR_ENDRX_1  (0x1u <<  3) /**< \brief (US_SPI_SLAVE_IDR) Disables the interrupt */\r
+#define US_SPI_SLAVE_IDR_ENDTX      (0x1u <<  4) /**< \brief (US_SPI_SLAVE_IDR) End of Transmit Interrupt Disable */\r
+#define   US_SPI_SLAVE_IDR_ENDTX_0  (0x0u <<  4) /**< \brief (US_SPI_SLAVE_IDR) No Effect */\r
+#define   US_SPI_SLAVE_IDR_ENDTX_1  (0x1u <<  4) /**< \brief (US_SPI_SLAVE_IDR) Disables the interrupt */\r
+#define US_SPI_SLAVE_IDR_OVRE       (0x1u <<  5) /**< \brief (US_SPI_SLAVE_IDR) Overrun Error Interrupt Disable */\r
+#define   US_SPI_SLAVE_IDR_OVRE_0   (0x0u <<  5) /**< \brief (US_SPI_SLAVE_IDR) No Effect */\r
+#define   US_SPI_SLAVE_IDR_OVRE_1   (0x1u <<  5) /**< \brief (US_SPI_SLAVE_IDR) Disables the interrupt */\r
+#define US_SPI_SLAVE_IDR_FRAME      (0x1u <<  6) /**< \brief (US_SPI_SLAVE_IDR) Framing Error Interrupt Disable */\r
+#define   US_SPI_SLAVE_IDR_FRAME_0  (0x0u <<  6) /**< \brief (US_SPI_SLAVE_IDR) No Effect */\r
+#define   US_SPI_SLAVE_IDR_FRAME_1  (0x1u <<  6) /**< \brief (US_SPI_SLAVE_IDR) Disables the interrupt */\r
+#define US_SPI_SLAVE_IDR_PARE       (0x1u <<  7) /**< \brief (US_SPI_SLAVE_IDR) Parity Error Interrupt Disable */\r
+#define   US_SPI_SLAVE_IDR_PARE_0   (0x0u <<  7) /**< \brief (US_SPI_SLAVE_IDR) No Effect */\r
+#define   US_SPI_SLAVE_IDR_PARE_1   (0x1u <<  7) /**< \brief (US_SPI_SLAVE_IDR) Disables the interrupt */\r
+#define US_SPI_SLAVE_IDR_TIMEOUT    (0x1u <<  8) /**< \brief (US_SPI_SLAVE_IDR) Time-out Interrupt Disable */\r
+#define   US_SPI_SLAVE_IDR_TIMEOUT_0 (0x0u <<  8) /**< \brief (US_SPI_SLAVE_IDR) No Effect */\r
+#define   US_SPI_SLAVE_IDR_TIMEOUT_1 (0x1u <<  8) /**< \brief (US_SPI_SLAVE_IDR) Disables the interrupt */\r
+#define US_SPI_SLAVE_IDR_TXEMPTY    (0x1u <<  9) /**< \brief (US_SPI_SLAVE_IDR) Transmitter Empty Interrupt Disable */\r
+#define   US_SPI_SLAVE_IDR_TXEMPTY_0 (0x0u <<  9) /**< \brief (US_SPI_SLAVE_IDR) No Effect */\r
+#define   US_SPI_SLAVE_IDR_TXEMPTY_1 (0x1u <<  9) /**< \brief (US_SPI_SLAVE_IDR) Disables the interrupt */\r
+#define US_SPI_SLAVE_IDR_UNRE       (0x1u << 10) /**< \brief (US_SPI_SLAVE_IDR) SPI Underrun Error Interrupt Disable */\r
+#define   US_SPI_SLAVE_IDR_UNRE_0   (0x0u << 10) /**< \brief (US_SPI_SLAVE_IDR) No Effect */\r
+#define   US_SPI_SLAVE_IDR_UNRE_1   (0x1u << 10) /**< \brief (US_SPI_SLAVE_IDR) Disables the interrupt */\r
+#define US_SPI_SLAVE_IDR_TXBUFE     (0x1u << 11) /**< \brief (US_SPI_SLAVE_IDR) Buffer Empty Interrupt Disable */\r
+#define   US_SPI_SLAVE_IDR_TXBUFE_0 (0x0u << 11) /**< \brief (US_SPI_SLAVE_IDR) No Effect */\r
+#define   US_SPI_SLAVE_IDR_TXBUFE_1 (0x1u << 11) /**< \brief (US_SPI_SLAVE_IDR) Disables the interrupt */\r
+#define US_SPI_SLAVE_IDR_RXBUFF     (0x1u << 12) /**< \brief (US_SPI_SLAVE_IDR) Buffer Full Interrupt Disable */\r
+#define   US_SPI_SLAVE_IDR_RXBUFF_0 (0x0u << 12) /**< \brief (US_SPI_SLAVE_IDR) No Effect */\r
+#define   US_SPI_SLAVE_IDR_RXBUFF_1 (0x1u << 12) /**< \brief (US_SPI_SLAVE_IDR) Disables the interrupt */\r
+#define US_SPI_SLAVE_IDR_NACK       (0x1u << 13) /**< \brief (US_SPI_SLAVE_IDR) Non Acknowledge Interrupt Disable */\r
+#define   US_SPI_SLAVE_IDR_NACK_0   (0x0u << 13) /**< \brief (US_SPI_SLAVE_IDR) No Effect */\r
+#define   US_SPI_SLAVE_IDR_NACK_1   (0x1u << 13) /**< \brief (US_SPI_SLAVE_IDR) Disables the interrupt */\r
+#define US_SPI_SLAVE_IDR_RIIC       (0x1u << 16) /**< \brief (US_SPI_SLAVE_IDR) Ring Indicator Input Change Disable */\r
+#define   US_SPI_SLAVE_IDR_RIIC_0   (0x0u << 16) /**< \brief (US_SPI_SLAVE_IDR) No Effect */\r
+#define   US_SPI_SLAVE_IDR_RIIC_1   (0x1u << 16) /**< \brief (US_SPI_SLAVE_IDR) Disables the interrupt */\r
+#define US_SPI_SLAVE_IDR_DSRIC      (0x1u << 17) /**< \brief (US_SPI_SLAVE_IDR) Data Set Ready Input Change Disable */\r
+#define   US_SPI_SLAVE_IDR_DSRIC_0  (0x0u << 17) /**< \brief (US_SPI_SLAVE_IDR) No Effect */\r
+#define   US_SPI_SLAVE_IDR_DSRIC_1  (0x1u << 17) /**< \brief (US_SPI_SLAVE_IDR) Disables the interrupt */\r
+#define US_SPI_SLAVE_IDR_DCDIC      (0x1u << 18) /**< \brief (US_SPI_SLAVE_IDR) Data Carrier Detect Input Change Interrupt Disable */\r
+#define   US_SPI_SLAVE_IDR_DCDIC_0  (0x0u << 18) /**< \brief (US_SPI_SLAVE_IDR) No Effect */\r
+#define   US_SPI_SLAVE_IDR_DCDIC_1  (0x1u << 18) /**< \brief (US_SPI_SLAVE_IDR) Disables the interrupt */\r
+#define US_SPI_SLAVE_IDR_CTSIC      (0x1u << 19) /**< \brief (US_SPI_SLAVE_IDR) Clear to Send Input Change Interrupt Disable */\r
+#define   US_SPI_SLAVE_IDR_CTSIC_0  (0x0u << 19) /**< \brief (US_SPI_SLAVE_IDR) No Effect */\r
+#define   US_SPI_SLAVE_IDR_CTSIC_1  (0x1u << 19) /**< \brief (US_SPI_SLAVE_IDR) Disables the interrupt */\r
+/* -------- US_USART_IDR : (USART Offset: 0x0C) Interrupt Disable Register -------- */\r
+#define US_USART_IDR_RXRDY          (0x1u <<  0) /**< \brief (US_USART_IDR) Receiver Ready Interrupt Disable */\r
+#define   US_USART_IDR_RXRDY_0      (0x0u <<  0) /**< \brief (US_USART_IDR) No Effect */\r
+#define   US_USART_IDR_RXRDY_1      (0x1u <<  0) /**< \brief (US_USART_IDR) Disables the interrupt */\r
+#define US_USART_IDR_TXRDY          (0x1u <<  1) /**< \brief (US_USART_IDR) Transmitter Ready Interrupt Disable */\r
+#define   US_USART_IDR_TXRDY_0      (0x0u <<  1) /**< \brief (US_USART_IDR) No Effect */\r
+#define   US_USART_IDR_TXRDY_1      (0x1u <<  1) /**< \brief (US_USART_IDR) Disables the interrupt */\r
+#define US_USART_IDR_RXBRK          (0x1u <<  2) /**< \brief (US_USART_IDR) Receiver Break Interrupt Disable */\r
+#define   US_USART_IDR_RXBRK_0      (0x0u <<  2) /**< \brief (US_USART_IDR) No Effect */\r
+#define   US_USART_IDR_RXBRK_1      (0x1u <<  2) /**< \brief (US_USART_IDR) Disables the interrupt */\r
+#define US_USART_IDR_ENDRX          (0x1u <<  3) /**< \brief (US_USART_IDR) End of Receive Transfer Interrupt Disable */\r
+#define   US_USART_IDR_ENDRX_0      (0x0u <<  3) /**< \brief (US_USART_IDR) No Effect */\r
+#define   US_USART_IDR_ENDRX_1      (0x1u <<  3) /**< \brief (US_USART_IDR) Disables the interrupt */\r
+#define US_USART_IDR_ENDTX          (0x1u <<  4) /**< \brief (US_USART_IDR) End of Transmit Interrupt Disable */\r
+#define   US_USART_IDR_ENDTX_0      (0x0u <<  4) /**< \brief (US_USART_IDR) No Effect */\r
+#define   US_USART_IDR_ENDTX_1      (0x1u <<  4) /**< \brief (US_USART_IDR) Disables the interrupt */\r
+#define US_USART_IDR_OVRE           (0x1u <<  5) /**< \brief (US_USART_IDR) Overrun Error Interrupt Disable */\r
+#define   US_USART_IDR_OVRE_0       (0x0u <<  5) /**< \brief (US_USART_IDR) No Effect */\r
+#define   US_USART_IDR_OVRE_1       (0x1u <<  5) /**< \brief (US_USART_IDR) Disables the interrupt */\r
+#define US_USART_IDR_FRAME          (0x1u <<  6) /**< \brief (US_USART_IDR) Framing Error Interrupt Disable */\r
+#define   US_USART_IDR_FRAME_0      (0x0u <<  6) /**< \brief (US_USART_IDR) No Effect */\r
+#define   US_USART_IDR_FRAME_1      (0x1u <<  6) /**< \brief (US_USART_IDR) Disables the interrupt */\r
+#define US_USART_IDR_PARE           (0x1u <<  7) /**< \brief (US_USART_IDR) Parity Error Interrupt Disable */\r
+#define   US_USART_IDR_PARE_0       (0x0u <<  7) /**< \brief (US_USART_IDR) No Effect */\r
+#define   US_USART_IDR_PARE_1       (0x1u <<  7) /**< \brief (US_USART_IDR) Disables the interrupt */\r
+#define US_USART_IDR_TIMEOUT        (0x1u <<  8) /**< \brief (US_USART_IDR) Time-out Interrupt Disable */\r
+#define   US_USART_IDR_TIMEOUT_0    (0x0u <<  8) /**< \brief (US_USART_IDR) No Effect */\r
+#define   US_USART_IDR_TIMEOUT_1    (0x1u <<  8) /**< \brief (US_USART_IDR) Disables the interrupt */\r
+#define US_USART_IDR_TXEMPTY        (0x1u <<  9) /**< \brief (US_USART_IDR) Transmitter Empty Interrupt Disable */\r
+#define   US_USART_IDR_TXEMPTY_0    (0x0u <<  9) /**< \brief (US_USART_IDR) No Effect */\r
+#define   US_USART_IDR_TXEMPTY_1    (0x1u <<  9) /**< \brief (US_USART_IDR) Disables the interrupt */\r
+#define US_USART_IDR_ITER           (0x1u << 10) /**< \brief (US_USART_IDR) Iteration Interrupt Disable */\r
+#define   US_USART_IDR_ITER_0       (0x0u << 10) /**< \brief (US_USART_IDR) No Effect */\r
+#define   US_USART_IDR_ITER_1       (0x1u << 10) /**< \brief (US_USART_IDR) Disables the interrupt */\r
+#define US_USART_IDR_TXBUFE         (0x1u << 11) /**< \brief (US_USART_IDR) Buffer Empty Interrupt Disable */\r
+#define   US_USART_IDR_TXBUFE_0     (0x0u << 11) /**< \brief (US_USART_IDR) No Effect */\r
+#define   US_USART_IDR_TXBUFE_1     (0x1u << 11) /**< \brief (US_USART_IDR) Disables the interrupt */\r
+#define US_USART_IDR_RXBUFF         (0x1u << 12) /**< \brief (US_USART_IDR) Buffer Full Interrupt Disable */\r
+#define   US_USART_IDR_RXBUFF_0     (0x0u << 12) /**< \brief (US_USART_IDR) No Effect */\r
+#define   US_USART_IDR_RXBUFF_1     (0x1u << 12) /**< \brief (US_USART_IDR) Disables the interrupt */\r
+#define US_USART_IDR_NACK           (0x1u << 13) /**< \brief (US_USART_IDR) Non Acknowledge Interrupt Disable */\r
+#define   US_USART_IDR_NACK_0       (0x0u << 13) /**< \brief (US_USART_IDR) No Effect */\r
+#define   US_USART_IDR_NACK_1       (0x1u << 13) /**< \brief (US_USART_IDR) Disables the interrupt */\r
+#define US_USART_IDR_RIIC           (0x1u << 16) /**< \brief (US_USART_IDR) Ring Indicator Input Change Disable */\r
+#define   US_USART_IDR_RIIC_0       (0x0u << 16) /**< \brief (US_USART_IDR) No Effect */\r
+#define   US_USART_IDR_RIIC_1       (0x1u << 16) /**< \brief (US_USART_IDR) Disables the interrupt */\r
+#define US_USART_IDR_DSRIC          (0x1u << 17) /**< \brief (US_USART_IDR) Data Set Ready Input Change Disable */\r
+#define   US_USART_IDR_DSRIC_0      (0x0u << 17) /**< \brief (US_USART_IDR) No Effect */\r
+#define   US_USART_IDR_DSRIC_1      (0x1u << 17) /**< \brief (US_USART_IDR) Disables the interrupt */\r
+#define US_USART_IDR_DCDIC          (0x1u << 18) /**< \brief (US_USART_IDR) Data Carrier Detect Input Change Interrupt Disable */\r
+#define   US_USART_IDR_DCDIC_0      (0x0u << 18) /**< \brief (US_USART_IDR) No Effect */\r
+#define   US_USART_IDR_DCDIC_1      (0x1u << 18) /**< \brief (US_USART_IDR) Disables the interrupt */\r
+#define US_USART_IDR_CTSIC          (0x1u << 19) /**< \brief (US_USART_IDR) Clear to Send Input Change Interrupt Disable */\r
+#define   US_USART_IDR_CTSIC_0      (0x0u << 19) /**< \brief (US_USART_IDR) No Effect */\r
+#define   US_USART_IDR_CTSIC_1      (0x1u << 19) /**< \brief (US_USART_IDR) Disables the interrupt */\r
+#define US_USART_IDR_MANE           (0x1u << 20) /**< \brief (US_USART_IDR) Manchester Error Interrupt Disable */\r
+#define US_USART_IDR_MANEA          (0x1u << 24) /**< \brief (US_USART_IDR) Manchester Error Interrupt Disable */\r
+#define   US_USART_IDR_MANEA_0      (0x0u << 24) /**< \brief (US_USART_IDR) No effect */\r
+#define   US_USART_IDR_MANEA_1      (0x1u << 24) /**< \brief (US_USART_IDR) Disables the corresponding interrupt */\r
+/* -------- US_IDR : (USART Offset: 0x0C) Interrupt Disable Register -------- */\r
+#define US_IDR_RXRDY                (0x1u <<  0) /**< \brief (US_IDR) Receiver Ready Interrupt Disable */\r
+#define US_IDR_TXRDY                (0x1u <<  1) /**< \brief (US_IDR) Transmitter Ready Interrupt Disable */\r
+#define US_IDR_RXBRK                (0x1u <<  2) /**< \brief (US_IDR) Receiver Break Interrupt Disable */\r
+#define US_IDR_ENDRX                (0x1u <<  3) /**< \brief (US_IDR) End of Receive Transfer Interrupt Disable */\r
+#define US_IDR_ENDTX                (0x1u <<  4) /**< \brief (US_IDR) End of Transmit Interrupt Disable */\r
+#define US_IDR_OVRE                 (0x1u <<  5) /**< \brief (US_IDR) Overrun Error Interrupt Disable */\r
+#define US_IDR_FRAME                (0x1u <<  6) /**< \brief (US_IDR) Framing Error Interrupt Disable */\r
+#define US_IDR_PARE                 (0x1u <<  7) /**< \brief (US_IDR) Parity Error Interrupt Disable */\r
+#define US_IDR_TIMEOUT              (0x1u <<  8) /**< \brief (US_IDR) Time-out Interrupt Disable */\r
+#define US_IDR_TXEMPTY              (0x1u <<  9) /**< \brief (US_IDR) Transmitter Empty Interrupt Disable */\r
+#define US_IDR_ITER                 (0x1u << 10) /**< \brief (US_IDR) Iteration Interrupt Disable */\r
+#define US_IDR_UNRE                 (0x1u << 10) /**< \brief (US_IDR) SPI Underrun Error Interrupt Disable */\r
+#define US_IDR_TXBUFE               (0x1u << 11) /**< \brief (US_IDR) Buffer Empty Interrupt Disable */\r
+#define US_IDR_RXBUFF               (0x1u << 12) /**< \brief (US_IDR) Buffer Full Interrupt Disable */\r
+#define US_IDR_NACK                 (0x1u << 13) /**< \brief (US_IDR) Non Acknowledge  or LIN Break Sent or LIN Break Received Interrupt Disable */\r
+#define US_IDR_LINID                (0x1u << 14) /**< \brief (US_IDR) LIN Identifier Sent or LIN Identifier Received Interrupt Disable */\r
+#define US_IDR_LINTC                (0x1u << 15) /**< \brief (US_IDR) LIN Transfer Conpleted Interrupt Disable */\r
+#define US_IDR_RIIC                 (0x1u << 16) /**< \brief (US_IDR) Ring Indicator Input Change Disable */\r
+#define US_IDR_DSRIC                (0x1u << 17) /**< \brief (US_IDR) Data Set Ready Input Change Disable */\r
+#define US_IDR_DCDIC                (0x1u << 18) /**< \brief (US_IDR) Data Carrier Detect Input Change Interrupt Disable */\r
+#define US_IDR_CTSIC                (0x1u << 19) /**< \brief (US_IDR) Clear to Send Input Change Interrupt Disable */\r
+#define US_IDR_MANE                 (0x1u << 20) /**< \brief (US_IDR) Manchester Error Interrupt Disable */\r
+#define US_IDR_MANEA                (0x1u << 24) /**< \brief (US_IDR) Manchester Error Interrupt Disable */\r
+#define US_IDR_LINBE                (0x1u << 25) /**< \brief (US_IDR) LIN Bus Error Interrupt Disable */\r
+#define US_IDR_LINISFE              (0x1u << 26) /**< \brief (US_IDR) LIN Inconsistent Synch Field Error Interrupt Disable */\r
+#define US_IDR_LINIPE               (0x1u << 27) /**< \brief (US_IDR) LIN Identifier Parity Interrupt Disable */\r
+#define US_IDR_LINCE                (0x1u << 28) /**< \brief (US_IDR) LIN Checksum Error Interrupt Disable */\r
+#define US_IDR_LINSNRE              (0x1u << 29) /**< \brief (US_IDR) LIN Slave Not Responding Error Interrupt Disable */\r
+#define US_IDR_LINSTE               (0x1u << 30) /**< \brief (US_IDR) LIN Synch Tolerance Error Interrupt Disable */\r
+#define US_IDR_LINHTE               (0x1u << 31) /**< \brief (US_IDR) LIN Header Timeout Error Interrupt Disable */\r
+\r
+/* -------- US_LIN_IMR : (USART Offset: 0x10) Interrupt Mask Register -------- */\r
+#define US_LIN_IMR_RXRDY            (0x1u <<  0) /**< \brief (US_LIN_IMR) RXRDY Interrupt Mask */\r
+#define   US_LIN_IMR_RXRDY_0        (0x0u <<  0) /**< \brief (US_LIN_IMR) The interrupt is disabled */\r
+#define   US_LIN_IMR_RXRDY_1        (0x1u <<  0) /**< \brief (US_LIN_IMR) The interrupt is enabled */\r
+#define US_LIN_IMR_TXRDY            (0x1u <<  1) /**< \brief (US_LIN_IMR) TXRDY Interrupt Mask */\r
+#define   US_LIN_IMR_TXRDY_0        (0x0u <<  1) /**< \brief (US_LIN_IMR) The interrupt is disabled */\r
+#define   US_LIN_IMR_TXRDY_1        (0x1u <<  1) /**< \brief (US_LIN_IMR) The interrupt is enabled */\r
+#define US_LIN_IMR_RXBRK            (0x1u <<  2) /**< \brief (US_LIN_IMR) Receiver Break Interrupt Mask */\r
+#define   US_LIN_IMR_RXBRK_0        (0x0u <<  2) /**< \brief (US_LIN_IMR) The interrupt is disabled */\r
+#define   US_LIN_IMR_RXBRK_1        (0x1u <<  2) /**< \brief (US_LIN_IMR) The interrupt is enabled */\r
+#define US_LIN_IMR_ENDRX            (0x1u <<  3) /**< \brief (US_LIN_IMR) End of Receive Transfer Interrupt Mask */\r
+#define   US_LIN_IMR_ENDRX_0        (0x0u <<  3) /**< \brief (US_LIN_IMR) The interrupt is disabled */\r
+#define   US_LIN_IMR_ENDRX_1        (0x1u <<  3) /**< \brief (US_LIN_IMR) The interrupt is enabled */\r
+#define US_LIN_IMR_ENDTX            (0x1u <<  4) /**< \brief (US_LIN_IMR) End of Transmit Interrupt Mask */\r
+#define   US_LIN_IMR_ENDTX_0        (0x0u <<  4) /**< \brief (US_LIN_IMR) The interrupt is disabled */\r
+#define   US_LIN_IMR_ENDTX_1        (0x1u <<  4) /**< \brief (US_LIN_IMR) The interrupt is enabled */\r
+#define US_LIN_IMR_OVRE             (0x1u <<  5) /**< \brief (US_LIN_IMR) Overrun Error Interrupt Mask */\r
+#define   US_LIN_IMR_OVRE_0         (0x0u <<  5) /**< \brief (US_LIN_IMR) The interrupt is disabled */\r
+#define   US_LIN_IMR_OVRE_1         (0x1u <<  5) /**< \brief (US_LIN_IMR) The interrupt is enabled */\r
+#define US_LIN_IMR_FRAME            (0x1u <<  6) /**< \brief (US_LIN_IMR) Framing Error Interrupt Mask */\r
+#define   US_LIN_IMR_FRAME_0        (0x0u <<  6) /**< \brief (US_LIN_IMR) The interrupt is disabled */\r
+#define   US_LIN_IMR_FRAME_1        (0x1u <<  6) /**< \brief (US_LIN_IMR) The interrupt is enabled */\r
+#define US_LIN_IMR_PARE             (0x1u <<  7) /**< \brief (US_LIN_IMR) Parity Error Interrupt Mask */\r
+#define   US_LIN_IMR_PARE_0         (0x0u <<  7) /**< \brief (US_LIN_IMR) The interrupt is disabled */\r
+#define   US_LIN_IMR_PARE_1         (0x1u <<  7) /**< \brief (US_LIN_IMR) The interrupt is enabled */\r
+#define US_LIN_IMR_TIMEOUT          (0x1u <<  8) /**< \brief (US_LIN_IMR) Time-out Interrupt Mask */\r
+#define   US_LIN_IMR_TIMEOUT_0      (0x0u <<  8) /**< \brief (US_LIN_IMR) The interrupt is disabled */\r
+#define   US_LIN_IMR_TIMEOUT_1      (0x1u <<  8) /**< \brief (US_LIN_IMR) The interrupt is enabled */\r
+#define US_LIN_IMR_TXEMPTY          (0x1u <<  9) /**< \brief (US_LIN_IMR) TXEMPTY Interrupt Mask */\r
+#define   US_LIN_IMR_TXEMPTY_0      (0x0u <<  9) /**< \brief (US_LIN_IMR) The interrupt is disabled */\r
+#define   US_LIN_IMR_TXEMPTY_1      (0x1u <<  9) /**< \brief (US_LIN_IMR) The interrupt is enabled */\r
+#define US_LIN_IMR_ITER             (0x1u << 10) /**< \brief (US_LIN_IMR) Iteration Interrupt Mask */\r
+#define   US_LIN_IMR_ITER_0         (0x0u << 10) /**< \brief (US_LIN_IMR) The interrupt is disabled */\r
+#define   US_LIN_IMR_ITER_1         (0x1u << 10) /**< \brief (US_LIN_IMR) The interrupt is enabled */\r
+#define US_LIN_IMR_TXBUFE           (0x1u << 11) /**< \brief (US_LIN_IMR) Buffer Empty Interrupt Mask */\r
+#define   US_LIN_IMR_TXBUFE_0       (0x0u << 11) /**< \brief (US_LIN_IMR) The interrupt is disabled */\r
+#define   US_LIN_IMR_TXBUFE_1       (0x1u << 11) /**< \brief (US_LIN_IMR) The interrupt is enabled */\r
+#define US_LIN_IMR_RXBUFF           (0x1u << 12) /**< \brief (US_LIN_IMR) Buffer Full Interrupt Mask */\r
+#define   US_LIN_IMR_RXBUFF_0       (0x0u << 12) /**< \brief (US_LIN_IMR) The interrupt is disabled */\r
+#define   US_LIN_IMR_RXBUFF_1       (0x1u << 12) /**< \brief (US_LIN_IMR) The interrupt is enabled */\r
+#define US_LIN_IMR_NACK             (0x1u << 13) /**< \brief (US_LIN_IMR) Non Acknowledge  or LIN Break Sent or LIN Break Received Interrupt Mask */\r
+#define   US_LIN_IMR_NACK_0         (0x0u << 13) /**< \brief (US_LIN_IMR) The interrupt is disabled */\r
+#define   US_LIN_IMR_NACK_1         (0x1u << 13) /**< \brief (US_LIN_IMR) The interrupt is enabled */\r
+#define US_LIN_IMR_LINID            (0x1u << 14) /**< \brief (US_LIN_IMR) LIN Identifier Sent or LIN Received Interrupt Mask */\r
+#define US_LIN_IMR_LINTC            (0x1u << 15) /**< \brief (US_LIN_IMR) LIN Transfer Conpleted Interrupt Mask */\r
+#define US_LIN_IMR_RIIC             (0x1u << 16) /**< \brief (US_LIN_IMR) Ring Indicator Input Change Mask */\r
+#define   US_LIN_IMR_RIIC_0         (0x0u << 16) /**< \brief (US_LIN_IMR) The interrupt is disabled */\r
+#define   US_LIN_IMR_RIIC_1         (0x1u << 16) /**< \brief (US_LIN_IMR) The interrupt is enabled */\r
+#define US_LIN_IMR_DSRIC            (0x1u << 17) /**< \brief (US_LIN_IMR) Data Set Ready Input Change Mask */\r
+#define   US_LIN_IMR_DSRIC_0        (0x0u << 17) /**< \brief (US_LIN_IMR) The interrupt is disabled */\r
+#define   US_LIN_IMR_DSRIC_1        (0x1u << 17) /**< \brief (US_LIN_IMR) The interrupt is enabled */\r
+#define US_LIN_IMR_DCDIC            (0x1u << 18) /**< \brief (US_LIN_IMR) Data Carrier Detect Input Change Interrupt Mask */\r
+#define   US_LIN_IMR_DCDIC_0        (0x0u << 18) /**< \brief (US_LIN_IMR) The interrupt is disabled */\r
+#define   US_LIN_IMR_DCDIC_1        (0x1u << 18) /**< \brief (US_LIN_IMR) The interrupt is enabled */\r
+#define US_LIN_IMR_CTSIC            (0x1u << 19) /**< \brief (US_LIN_IMR) Clear to Send Input Change Interrupt Mask */\r
+#define   US_LIN_IMR_CTSIC_0        (0x0u << 19) /**< \brief (US_LIN_IMR) The interrupt is disabled */\r
+#define   US_LIN_IMR_CTSIC_1        (0x1u << 19) /**< \brief (US_LIN_IMR) The interrupt is enabled */\r
+#define US_LIN_IMR_LINBE            (0x1u << 25) /**< \brief (US_LIN_IMR) LIN Bus Error Interrupt Mask */\r
+#define US_LIN_IMR_LINISFE          (0x1u << 26) /**< \brief (US_LIN_IMR) LIN Inconsistent Synch Field Error Interrupt Mask */\r
+#define US_LIN_IMR_LINIPE           (0x1u << 27) /**< \brief (US_LIN_IMR) LIN Identifier Parity Interrupt Mask */\r
+#define US_LIN_IMR_LINCE            (0x1u << 28) /**< \brief (US_LIN_IMR) LIN Checksum Error Interrupt Mask */\r
+#define US_LIN_IMR_LINSNRE          (0x1u << 29) /**< \brief (US_LIN_IMR) LIN Slave Not Responding Error Interrupt Mask */\r
+#define US_LIN_IMR_LINSTE           (0x1u << 30) /**< \brief (US_LIN_IMR) LIN Synch Tolerance Error Interrupt Mask */\r
+#define   US_LIN_IMR_LINSTE_0       (0x0u << 30) /**< \brief (US_LIN_IMR) The interrupt is disabled */\r
+#define   US_LIN_IMR_LINSTE_1       (0x1u << 30) /**< \brief (US_LIN_IMR) The interrupt is enabled */\r
+#define US_LIN_IMR_LINHTE           (0x1u << 31) /**< \brief (US_LIN_IMR) LIN Header Timeout Error Interrupt Mask */\r
+#define   US_LIN_IMR_LINHTE_0       (0x0u << 31) /**< \brief (US_LIN_IMR) The interrupt is disabled */\r
+#define   US_LIN_IMR_LINHTE_1       (0x1u << 31) /**< \brief (US_LIN_IMR) The interrupt is enabled */\r
+/* -------- US_SPI_SLAVE_IMR : (USART Offset: 0x10) Interrupt Mask Register -------- */\r
+#define US_SPI_SLAVE_IMR_RXRDY      (0x1u <<  0) /**< \brief (US_SPI_SLAVE_IMR) RXRDY Interrupt Mask */\r
+#define   US_SPI_SLAVE_IMR_RXRDY_0  (0x0u <<  0) /**< \brief (US_SPI_SLAVE_IMR) The interrupt is disabled */\r
+#define   US_SPI_SLAVE_IMR_RXRDY_1  (0x1u <<  0) /**< \brief (US_SPI_SLAVE_IMR) The interrupt is enabled */\r
+#define US_SPI_SLAVE_IMR_TXRDY      (0x1u <<  1) /**< \brief (US_SPI_SLAVE_IMR) TXRDY Interrupt Mask */\r
+#define   US_SPI_SLAVE_IMR_TXRDY_0  (0x0u <<  1) /**< \brief (US_SPI_SLAVE_IMR) The interrupt is disabled */\r
+#define   US_SPI_SLAVE_IMR_TXRDY_1  (0x1u <<  1) /**< \brief (US_SPI_SLAVE_IMR) The interrupt is enabled */\r
+#define US_SPI_SLAVE_IMR_RXBRK      (0x1u <<  2) /**< \brief (US_SPI_SLAVE_IMR) Receiver Break Interrupt Mask */\r
+#define   US_SPI_SLAVE_IMR_RXBRK_0  (0x0u <<  2) /**< \brief (US_SPI_SLAVE_IMR) The interrupt is disabled */\r
+#define   US_SPI_SLAVE_IMR_RXBRK_1  (0x1u <<  2) /**< \brief (US_SPI_SLAVE_IMR) The interrupt is enabled */\r
+#define US_SPI_SLAVE_IMR_ENDRX      (0x1u <<  3) /**< \brief (US_SPI_SLAVE_IMR) End of Receive Transfer Interrupt Mask */\r
+#define   US_SPI_SLAVE_IMR_ENDRX_0  (0x0u <<  3) /**< \brief (US_SPI_SLAVE_IMR) The interrupt is disabled */\r
+#define   US_SPI_SLAVE_IMR_ENDRX_1  (0x1u <<  3) /**< \brief (US_SPI_SLAVE_IMR) The interrupt is enabled */\r
+#define US_SPI_SLAVE_IMR_ENDTX      (0x1u <<  4) /**< \brief (US_SPI_SLAVE_IMR) End of Transmit Interrupt Mask */\r
+#define   US_SPI_SLAVE_IMR_ENDTX_0  (0x0u <<  4) /**< \brief (US_SPI_SLAVE_IMR) The interrupt is disabled */\r
+#define   US_SPI_SLAVE_IMR_ENDTX_1  (0x1u <<  4) /**< \brief (US_SPI_SLAVE_IMR) The interrupt is enabled */\r
+#define US_SPI_SLAVE_IMR_OVRE       (0x1u <<  5) /**< \brief (US_SPI_SLAVE_IMR) Overrun Error Interrupt Mask */\r
+#define   US_SPI_SLAVE_IMR_OVRE_0   (0x0u <<  5) /**< \brief (US_SPI_SLAVE_IMR) The interrupt is disabled */\r
+#define   US_SPI_SLAVE_IMR_OVRE_1   (0x1u <<  5) /**< \brief (US_SPI_SLAVE_IMR) The interrupt is enabled */\r
+#define US_SPI_SLAVE_IMR_FRAME      (0x1u <<  6) /**< \brief (US_SPI_SLAVE_IMR) Framing Error Interrupt Mask */\r
+#define   US_SPI_SLAVE_IMR_FRAME_0  (0x0u <<  6) /**< \brief (US_SPI_SLAVE_IMR) The interrupt is disabled */\r
+#define   US_SPI_SLAVE_IMR_FRAME_1  (0x1u <<  6) /**< \brief (US_SPI_SLAVE_IMR) The interrupt is enabled */\r
+#define US_SPI_SLAVE_IMR_PARE       (0x1u <<  7) /**< \brief (US_SPI_SLAVE_IMR) Parity Error Interrupt Mask */\r
+#define   US_SPI_SLAVE_IMR_PARE_0   (0x0u <<  7) /**< \brief (US_SPI_SLAVE_IMR) The interrupt is disabled */\r
+#define   US_SPI_SLAVE_IMR_PARE_1   (0x1u <<  7) /**< \brief (US_SPI_SLAVE_IMR) The interrupt is enabled */\r
+#define US_SPI_SLAVE_IMR_TIMEOUT    (0x1u <<  8) /**< \brief (US_SPI_SLAVE_IMR) Time-out Interrupt Mask */\r
+#define   US_SPI_SLAVE_IMR_TIMEOUT_0 (0x0u <<  8) /**< \brief (US_SPI_SLAVE_IMR) The interrupt is disabled */\r
+#define   US_SPI_SLAVE_IMR_TIMEOUT_1 (0x1u <<  8) /**< \brief (US_SPI_SLAVE_IMR) The interrupt is enabled */\r
+#define US_SPI_SLAVE_IMR_TXEMPTY    (0x1u <<  9) /**< \brief (US_SPI_SLAVE_IMR) TXEMPTY Interrupt Mask */\r
+#define   US_SPI_SLAVE_IMR_TXEMPTY_0 (0x0u <<  9) /**< \brief (US_SPI_SLAVE_IMR) The interrupt is disabled */\r
+#define   US_SPI_SLAVE_IMR_TXEMPTY_1 (0x1u <<  9) /**< \brief (US_SPI_SLAVE_IMR) The interrupt is enabled */\r
+#define US_SPI_SLAVE_IMR_UNRE       (0x1u << 10) /**< \brief (US_SPI_SLAVE_IMR) SPI Underrun Error Interrupt Mask */\r
+#define   US_SPI_SLAVE_IMR_UNRE_0   (0x0u << 10) /**< \brief (US_SPI_SLAVE_IMR) The interrupt is disabled */\r
+#define   US_SPI_SLAVE_IMR_UNRE_1   (0x1u << 10) /**< \brief (US_SPI_SLAVE_IMR) The interrupt is enabled */\r
+#define US_SPI_SLAVE_IMR_TXBUFE     (0x1u << 11) /**< \brief (US_SPI_SLAVE_IMR) Buffer Empty Interrupt Mask */\r
+#define   US_SPI_SLAVE_IMR_TXBUFE_0 (0x0u << 11) /**< \brief (US_SPI_SLAVE_IMR) The interrupt is disabled */\r
+#define   US_SPI_SLAVE_IMR_TXBUFE_1 (0x1u << 11) /**< \brief (US_SPI_SLAVE_IMR) The interrupt is enabled */\r
+#define US_SPI_SLAVE_IMR_RXBUFF     (0x1u << 12) /**< \brief (US_SPI_SLAVE_IMR) Buffer Full Interrupt Mask */\r
+#define   US_SPI_SLAVE_IMR_RXBUFF_0 (0x0u << 12) /**< \brief (US_SPI_SLAVE_IMR) The interrupt is disabled */\r
+#define   US_SPI_SLAVE_IMR_RXBUFF_1 (0x1u << 12) /**< \brief (US_SPI_SLAVE_IMR) The interrupt is enabled */\r
+#define US_SPI_SLAVE_IMR_NACK       (0x1u << 13) /**< \brief (US_SPI_SLAVE_IMR) Non Acknowledge Interrupt Mask */\r
+#define   US_SPI_SLAVE_IMR_NACK_0   (0x0u << 13) /**< \brief (US_SPI_SLAVE_IMR) The interrupt is disabled */\r
+#define   US_SPI_SLAVE_IMR_NACK_1   (0x1u << 13) /**< \brief (US_SPI_SLAVE_IMR) The interrupt is enabled */\r
+#define US_SPI_SLAVE_IMR_RIIC       (0x1u << 16) /**< \brief (US_SPI_SLAVE_IMR) Ring Indicator Input Change Mask */\r
+#define   US_SPI_SLAVE_IMR_RIIC_0   (0x0u << 16) /**< \brief (US_SPI_SLAVE_IMR) The interrupt is disabled */\r
+#define   US_SPI_SLAVE_IMR_RIIC_1   (0x1u << 16) /**< \brief (US_SPI_SLAVE_IMR) The interrupt is enabled */\r
+#define US_SPI_SLAVE_IMR_DSRIC      (0x1u << 17) /**< \brief (US_SPI_SLAVE_IMR) Data Set Ready Input Change Mask */\r
+#define   US_SPI_SLAVE_IMR_DSRIC_0  (0x0u << 17) /**< \brief (US_SPI_SLAVE_IMR) The interrupt is disabled */\r
+#define   US_SPI_SLAVE_IMR_DSRIC_1  (0x1u << 17) /**< \brief (US_SPI_SLAVE_IMR) The interrupt is enabled */\r
+#define US_SPI_SLAVE_IMR_DCDIC      (0x1u << 18) /**< \brief (US_SPI_SLAVE_IMR) Data Carrier Detect Input Change Interrupt Mask */\r
+#define   US_SPI_SLAVE_IMR_DCDIC_0  (0x0u << 18) /**< \brief (US_SPI_SLAVE_IMR) The interrupt is disabled */\r
+#define   US_SPI_SLAVE_IMR_DCDIC_1  (0x1u << 18) /**< \brief (US_SPI_SLAVE_IMR) The interrupt is enabled */\r
+#define US_SPI_SLAVE_IMR_CTSIC      (0x1u << 19) /**< \brief (US_SPI_SLAVE_IMR) Clear to Send Input Change Interrupt Mask */\r
+#define   US_SPI_SLAVE_IMR_CTSIC_0  (0x0u << 19) /**< \brief (US_SPI_SLAVE_IMR) The interrupt is disabled */\r
+#define   US_SPI_SLAVE_IMR_CTSIC_1  (0x1u << 19) /**< \brief (US_SPI_SLAVE_IMR) The interrupt is enabled */\r
+/* -------- US_USART_IMR : (USART Offset: 0x10) Interrupt Mask Register -------- */\r
+#define US_USART_IMR_RXRDY          (0x1u <<  0) /**< \brief (US_USART_IMR) RXRDY Interrupt Mask */\r
+#define   US_USART_IMR_RXRDY_0      (0x0u <<  0) /**< \brief (US_USART_IMR) The interrupt is disabled */\r
+#define   US_USART_IMR_RXRDY_1      (0x1u <<  0) /**< \brief (US_USART_IMR) The interrupt is enabled */\r
+#define US_USART_IMR_TXRDY          (0x1u <<  1) /**< \brief (US_USART_IMR) TXRDY Interrupt Mask */\r
+#define   US_USART_IMR_TXRDY_0      (0x0u <<  1) /**< \brief (US_USART_IMR) The interrupt is disabled */\r
+#define   US_USART_IMR_TXRDY_1      (0x1u <<  1) /**< \brief (US_USART_IMR) The interrupt is enabled */\r
+#define US_USART_IMR_RXBRK          (0x1u <<  2) /**< \brief (US_USART_IMR) Receiver Break Interrupt Mask */\r
+#define   US_USART_IMR_RXBRK_0      (0x0u <<  2) /**< \brief (US_USART_IMR) The interrupt is disabled */\r
+#define   US_USART_IMR_RXBRK_1      (0x1u <<  2) /**< \brief (US_USART_IMR) The interrupt is enabled */\r
+#define US_USART_IMR_ENDRX          (0x1u <<  3) /**< \brief (US_USART_IMR) End of Receive Transfer Interrupt Mask */\r
+#define   US_USART_IMR_ENDRX_0      (0x0u <<  3) /**< \brief (US_USART_IMR) The interrupt is disabled */\r
+#define   US_USART_IMR_ENDRX_1      (0x1u <<  3) /**< \brief (US_USART_IMR) The interrupt is enabled */\r
+#define US_USART_IMR_ENDTX          (0x1u <<  4) /**< \brief (US_USART_IMR) End of Transmit Interrupt Mask */\r
+#define   US_USART_IMR_ENDTX_0      (0x0u <<  4) /**< \brief (US_USART_IMR) The interrupt is disabled */\r
+#define   US_USART_IMR_ENDTX_1      (0x1u <<  4) /**< \brief (US_USART_IMR) The interrupt is enabled */\r
+#define US_USART_IMR_OVRE           (0x1u <<  5) /**< \brief (US_USART_IMR) Overrun Error Interrupt Mask */\r
+#define   US_USART_IMR_OVRE_0       (0x0u <<  5) /**< \brief (US_USART_IMR) The interrupt is disabled */\r
+#define   US_USART_IMR_OVRE_1       (0x1u <<  5) /**< \brief (US_USART_IMR) The interrupt is enabled */\r
+#define US_USART_IMR_FRAME          (0x1u <<  6) /**< \brief (US_USART_IMR) Framing Error Interrupt Mask */\r
+#define   US_USART_IMR_FRAME_0      (0x0u <<  6) /**< \brief (US_USART_IMR) The interrupt is disabled */\r
+#define   US_USART_IMR_FRAME_1      (0x1u <<  6) /**< \brief (US_USART_IMR) The interrupt is enabled */\r
+#define US_USART_IMR_PARE           (0x1u <<  7) /**< \brief (US_USART_IMR) Parity Error Interrupt Mask */\r
+#define   US_USART_IMR_PARE_0       (0x0u <<  7) /**< \brief (US_USART_IMR) The interrupt is disabled */\r
+#define   US_USART_IMR_PARE_1       (0x1u <<  7) /**< \brief (US_USART_IMR) The interrupt is enabled */\r
+#define US_USART_IMR_TIMEOUT        (0x1u <<  8) /**< \brief (US_USART_IMR) Time-out Interrupt Mask */\r
+#define   US_USART_IMR_TIMEOUT_0    (0x0u <<  8) /**< \brief (US_USART_IMR) The interrupt is disabled */\r
+#define   US_USART_IMR_TIMEOUT_1    (0x1u <<  8) /**< \brief (US_USART_IMR) The interrupt is enabled */\r
+#define US_USART_IMR_TXEMPTY        (0x1u <<  9) /**< \brief (US_USART_IMR) TXEMPTY Interrupt Mask */\r
+#define   US_USART_IMR_TXEMPTY_0    (0x0u <<  9) /**< \brief (US_USART_IMR) The interrupt is disabled */\r
+#define   US_USART_IMR_TXEMPTY_1    (0x1u <<  9) /**< \brief (US_USART_IMR) The interrupt is enabled */\r
+#define US_USART_IMR_ITER           (0x1u << 10) /**< \brief (US_USART_IMR) Iteration Interrupt Mask */\r
+#define   US_USART_IMR_ITER_0       (0x0u << 10) /**< \brief (US_USART_IMR) The interrupt is disabled */\r
+#define   US_USART_IMR_ITER_1       (0x1u << 10) /**< \brief (US_USART_IMR) The interrupt is enabled */\r
+#define US_USART_IMR_TXBUFE         (0x1u << 11) /**< \brief (US_USART_IMR) Buffer Empty Interrupt Mask */\r
+#define   US_USART_IMR_TXBUFE_0     (0x0u << 11) /**< \brief (US_USART_IMR) The interrupt is disabled */\r
+#define   US_USART_IMR_TXBUFE_1     (0x1u << 11) /**< \brief (US_USART_IMR) The interrupt is enabled */\r
+#define US_USART_IMR_RXBUFF         (0x1u << 12) /**< \brief (US_USART_IMR) Buffer Full Interrupt Mask */\r
+#define   US_USART_IMR_RXBUFF_0     (0x0u << 12) /**< \brief (US_USART_IMR) The interrupt is disabled */\r
+#define   US_USART_IMR_RXBUFF_1     (0x1u << 12) /**< \brief (US_USART_IMR) The interrupt is enabled */\r
+#define US_USART_IMR_NACK           (0x1u << 13) /**< \brief (US_USART_IMR) Non Acknowledge Interrupt Mask */\r
+#define   US_USART_IMR_NACK_0       (0x0u << 13) /**< \brief (US_USART_IMR) The interrupt is disabled */\r
+#define   US_USART_IMR_NACK_1       (0x1u << 13) /**< \brief (US_USART_IMR) The interrupt is enabled */\r
+#define US_USART_IMR_RIIC           (0x1u << 16) /**< \brief (US_USART_IMR) Ring Indicator Input Change Mask */\r
+#define   US_USART_IMR_RIIC_0       (0x0u << 16) /**< \brief (US_USART_IMR) The interrupt is disabled */\r
+#define   US_USART_IMR_RIIC_1       (0x1u << 16) /**< \brief (US_USART_IMR) The interrupt is enabled */\r
+#define US_USART_IMR_DSRIC          (0x1u << 17) /**< \brief (US_USART_IMR) Data Set Ready Input Change Mask */\r
+#define   US_USART_IMR_DSRIC_0      (0x0u << 17) /**< \brief (US_USART_IMR) The interrupt is disabled */\r
+#define   US_USART_IMR_DSRIC_1      (0x1u << 17) /**< \brief (US_USART_IMR) The interrupt is enabled */\r
+#define US_USART_IMR_DCDIC          (0x1u << 18) /**< \brief (US_USART_IMR) Data Carrier Detect Input Change Interrupt Mask */\r
+#define   US_USART_IMR_DCDIC_0      (0x0u << 18) /**< \brief (US_USART_IMR) The interrupt is disabled */\r
+#define   US_USART_IMR_DCDIC_1      (0x1u << 18) /**< \brief (US_USART_IMR) The interrupt is enabled */\r
+#define US_USART_IMR_CTSIC          (0x1u << 19) /**< \brief (US_USART_IMR) Clear to Send Input Change Interrupt Mask */\r
+#define   US_USART_IMR_CTSIC_0      (0x0u << 19) /**< \brief (US_USART_IMR) The interrupt is disabled */\r
+#define   US_USART_IMR_CTSIC_1      (0x1u << 19) /**< \brief (US_USART_IMR) The interrupt is enabled */\r
+#define US_USART_IMR_MANE           (0x1u << 20) /**< \brief (US_USART_IMR)  */\r
+#define US_USART_IMR_MANEA          (0x1u << 24) /**< \brief (US_USART_IMR) Manchester Error Interrupt Mask */\r
+#define   US_USART_IMR_MANEA_0      (0x0u << 24) /**< \brief (US_USART_IMR) The interrupt is disabled */\r
+#define   US_USART_IMR_MANEA_1      (0x1u << 24) /**< \brief (US_USART_IMR) The interrupt is enabled */\r
+/* -------- US_IMR : (USART Offset: 0x10) Interrupt Mask Register -------- */\r
+#define US_IMR_RXRDY                (0x1u <<  0) /**< \brief (US_IMR) RXRDY Interrupt Mask */\r
+#define US_IMR_TXRDY                (0x1u <<  1) /**< \brief (US_IMR) TXRDY Interrupt Mask */\r
+#define US_IMR_RXBRK                (0x1u <<  2) /**< \brief (US_IMR) Receiver Break Interrupt Mask */\r
+#define US_IMR_ENDRX                (0x1u <<  3) /**< \brief (US_IMR) End of Receive Transfer Interrupt Mask */\r
+#define US_IMR_ENDTX                (0x1u <<  4) /**< \brief (US_IMR) End of Transmit Interrupt Mask */\r
+#define US_IMR_OVRE                 (0x1u <<  5) /**< \brief (US_IMR) Overrun Error Interrupt Mask */\r
+#define US_IMR_FRAME                (0x1u <<  6) /**< \brief (US_IMR) Framing Error Interrupt Mask */\r
+#define US_IMR_PARE                 (0x1u <<  7) /**< \brief (US_IMR) Parity Error Interrupt Mask */\r
+#define US_IMR_TIMEOUT              (0x1u <<  8) /**< \brief (US_IMR) Time-out Interrupt Mask */\r
+#define US_IMR_TXEMPTY              (0x1u <<  9) /**< \brief (US_IMR) TXEMPTY Interrupt Mask */\r
+#define US_IMR_ITER                 (0x1u << 10) /**< \brief (US_IMR) Iteration Interrupt Mask */\r
+#define US_IMR_UNRE                 (0x1u << 10) /**< \brief (US_IMR) SPI Underrun Error Interrupt Mask */\r
+#define US_IMR_TXBUFE               (0x1u << 11) /**< \brief (US_IMR) Buffer Empty Interrupt Mask */\r
+#define US_IMR_RXBUFF               (0x1u << 12) /**< \brief (US_IMR) Buffer Full Interrupt Mask */\r
+#define US_IMR_NACK                 (0x1u << 13) /**< \brief (US_IMR) Non Acknowledge  or LIN Break Sent or LIN Break Received Interrupt Mask */\r
+#define US_IMR_LINID                (0x1u << 14) /**< \brief (US_IMR) LIN Identifier Sent or LIN Received Interrupt Mask */\r
+#define US_IMR_LINTC                (0x1u << 15) /**< \brief (US_IMR) LIN Transfer Conpleted Interrupt Mask */\r
+#define US_IMR_RIIC                 (0x1u << 16) /**< \brief (US_IMR) Ring Indicator Input Change Mask */\r
+#define US_IMR_DSRIC                (0x1u << 17) /**< \brief (US_IMR) Data Set Ready Input Change Mask */\r
+#define US_IMR_DCDIC                (0x1u << 18) /**< \brief (US_IMR) Data Carrier Detect Input Change Interrupt Mask */\r
+#define US_IMR_CTSIC                (0x1u << 19) /**< \brief (US_IMR) Clear to Send Input Change Interrupt Mask */\r
+#define US_IMR_MANE                 (0x1u << 20) /**< \brief (US_IMR)  */\r
+#define US_IMR_MANEA                (0x1u << 24) /**< \brief (US_IMR) Manchester Error Interrupt Mask */\r
+#define US_IMR_LINBE                (0x1u << 25) /**< \brief (US_IMR) LIN Bus Error Interrupt Mask */\r
+#define US_IMR_LINISFE              (0x1u << 26) /**< \brief (US_IMR) LIN Inconsistent Synch Field Error Interrupt Mask */\r
+#define US_IMR_LINIPE               (0x1u << 27) /**< \brief (US_IMR) LIN Identifier Parity Interrupt Mask */\r
+#define US_IMR_LINCE                (0x1u << 28) /**< \brief (US_IMR) LIN Checksum Error Interrupt Mask */\r
+#define US_IMR_LINSNRE              (0x1u << 29) /**< \brief (US_IMR) LIN Slave Not Responding Error Interrupt Mask */\r
+#define US_IMR_LINSTE               (0x1u << 30) /**< \brief (US_IMR) LIN Synch Tolerance Error Interrupt Mask */\r
+#define US_IMR_LINHTE               (0x1u << 31) /**< \brief (US_IMR) LIN Header Timeout Error Interrupt Mask */\r
+\r
+/* -------- US_LIN_CSR : (USART Offset: 0x14) Channel Status Register -------- */\r
+#define US_LIN_CSR_RXRDY            (0x1u <<  0) /**< \brief (US_LIN_CSR) Receiver Ready */\r
+#define   US_LIN_CSR_RXRDY_0        (0x0u <<  0) /**< \brief (US_LIN_CSR) No complete character has been received since the last read of RHR or the receiver is disabled. If characters werebeing received when the receiver was disabled, RXRDY changes to 1 when the receiver is enabled */\r
+#define   US_LIN_CSR_RXRDY_1        (0x1u <<  0) /**< \brief (US_LIN_CSR) At least one complete character has been received and RHR has not yet been read */\r
+#define US_LIN_CSR_TXRDY            (0x1u <<  1) /**< \brief (US_LIN_CSR) Transmitter Ready */\r
+#define   US_LIN_CSR_TXRDY_0        (0x0u <<  1) /**< \brief (US_LIN_CSR) A character is in the THR waiting to be transferred to the Transmit Shift Register, or an STTBRK command has been requested, or the transmitter is disabled. As soon as the transmitter is enabled, TXRDY becomes 1 */\r
+#define   US_LIN_CSR_TXRDY_1        (0x1u <<  1) /**< \brief (US_LIN_CSR) There is no character in the THR */\r
+#define US_LIN_CSR_RXBRK            (0x1u <<  2) /**< \brief (US_LIN_CSR) Break Received/End of Break */\r
+#define   US_LIN_CSR_RXBRK_0        (0x0u <<  2) /**< \brief (US_LIN_CSR) No Break received or End of Break detected since the last RSTSTA */\r
+#define   US_LIN_CSR_RXBRK_1        (0x1u <<  2) /**< \brief (US_LIN_CSR) Break Received or End of Break detected since the last RSTSTA */\r
+#define US_LIN_CSR_ENDRX            (0x1u <<  3) /**< \brief (US_LIN_CSR) End of Receiver Transfer */\r
+#define   US_LIN_CSR_ENDRX_0        (0x0u <<  3) /**< \brief (US_LIN_CSR) The End of Transfer signal from the Receive PDC channel is inactive */\r
+#define   US_LIN_CSR_ENDRX_1        (0x1u <<  3) /**< \brief (US_LIN_CSR) The End of Transfer signal from the Receive PDC channel is active */\r
+#define US_LIN_CSR_ENDTX            (0x1u <<  4) /**< \brief (US_LIN_CSR) End of Transmitter Transfer */\r
+#define   US_LIN_CSR_ENDTX_0        (0x0u <<  4) /**< \brief (US_LIN_CSR) The End of Transfer signal from the Transmit PDC channel is inactive */\r
+#define   US_LIN_CSR_ENDTX_1        (0x1u <<  4) /**< \brief (US_LIN_CSR) The End of Transfer signal from the Transmit PDC channel is active */\r
+#define US_LIN_CSR_OVRE             (0x1u <<  5) /**< \brief (US_LIN_CSR) Overrun Error */\r
+#define   US_LIN_CSR_OVRE_0         (0x0u <<  5) /**< \brief (US_LIN_CSR) No overrun error has occurred since since the last RSTSTA */\r
+#define   US_LIN_CSR_OVRE_1         (0x1u <<  5) /**< \brief (US_LIN_CSR) At least one overrun error has occurred since the last RSTSTA */\r
+#define US_LIN_CSR_FRAME            (0x1u <<  6) /**< \brief (US_LIN_CSR) Framing Error */\r
+#define   US_LIN_CSR_FRAME_0        (0x0u <<  6) /**< \brief (US_LIN_CSR) No stop bit has been detected low since the last RSTSTA */\r
+#define   US_LIN_CSR_FRAME_1        (0x1u <<  6) /**< \brief (US_LIN_CSR) At least one stop bit has been detected low since the last RSTSTA */\r
+#define US_LIN_CSR_PARE             (0x1u <<  7) /**< \brief (US_LIN_CSR) Parity Error */\r
+#define   US_LIN_CSR_PARE_0         (0x0u <<  7) /**< \brief (US_LIN_CSR) No parity error has been detected since the last RSTSTA */\r
+#define   US_LIN_CSR_PARE_1         (0x1u <<  7) /**< \brief (US_LIN_CSR) At least one parity error has been detected since the last RSTSTA */\r
+#define US_LIN_CSR_TIMEOUT          (0x1u <<  8) /**< \brief (US_LIN_CSR) Receiver Time-out */\r
+#define   US_LIN_CSR_TIMEOUT_0      (0x0u <<  8) /**< \brief (US_LIN_CSR) There has not been a time-out since the last Start Time-out command or the Time-out Register is 0 */\r
+#define   US_LIN_CSR_TIMEOUT_1      (0x1u <<  8) /**< \brief (US_LIN_CSR) There has been a time-out since the last Start Time-out command */\r
+#define US_LIN_CSR_TXEMPTY          (0x1u <<  9) /**< \brief (US_LIN_CSR) Transmitter Empty */\r
+#define   US_LIN_CSR_TXEMPTY_0      (0x0u <<  9) /**< \brief (US_LIN_CSR) There are characters in either THR or the Transmit Shift Register, or the transmitter is disabled */\r
+#define   US_LIN_CSR_TXEMPTY_1      (0x1u <<  9) /**< \brief (US_LIN_CSR) There is at least one character in either THR or the Transmit Shift Register */\r
+#define US_LIN_CSR_ITER             (0x1u << 10) /**< \brief (US_LIN_CSR) Max number of Repetitions Reached */\r
+#define   US_LIN_CSR_ITER_0         (0x0u << 10) /**< \brief (US_LIN_CSR) Maximum number of repetitions has not been reached since the last RSIT */\r
+#define   US_LIN_CSR_ITER_1         (0x1u << 10) /**< \brief (US_LIN_CSR) Maximum number of repetitions has been reached since the last RSIT */\r
+#define US_LIN_CSR_TXBUFE           (0x1u << 11) /**< \brief (US_LIN_CSR) Transmission Buffer Empty */\r
+#define   US_LIN_CSR_TXBUFE_0       (0x0u << 11) /**< \brief (US_LIN_CSR) The signal Buffer Empty from the Transmit PDC channel is inactive */\r
+#define   US_LIN_CSR_TXBUFE_1       (0x1u << 11) /**< \brief (US_LIN_CSR) The signal Buffer Empty from the Transmit PDC channel is active */\r
+#define US_LIN_CSR_RXBUFF           (0x1u << 12) /**< \brief (US_LIN_CSR) Reception Buffer Full */\r
+#define   US_LIN_CSR_RXBUFF_0       (0x0u << 12) /**< \brief (US_LIN_CSR) The signal Buffer Full from the Receive PDC channel is inactive */\r
+#define   US_LIN_CSR_RXBUFF_1       (0x1u << 12) /**< \brief (US_LIN_CSR) The signal Buffer Full from the Receive PDC channel is active */\r
+#define US_LIN_CSR_NACK             (0x1u << 13) /**< \brief (US_LIN_CSR) Non Acknowledge or LIN Break Sent or LIN Break Received */\r
+#define   US_LIN_CSR_NACK_0         (0x0u << 13) /**< \brief (US_LIN_CSR) No Non Acknowledge has not been detected since the last RSTNACK */\r
+#define   US_LIN_CSR_NACK_1         (0x1u << 13) /**< \brief (US_LIN_CSR) At least one Non Acknowledge has been detected since the last RSTNACK */\r
+#define US_LIN_CSR_LINID            (0x1u << 14) /**< \brief (US_LIN_CSR) LIN Identifier Sent or LIN Identifier Received */\r
+#define US_LIN_CSR_LINTC            (0x1u << 15) /**< \brief (US_LIN_CSR) LIN Transfer Conpleted */\r
+#define US_LIN_CSR_RIIC             (0x1u << 16) /**< \brief (US_LIN_CSR) Ring Indicator Input Change Flag */\r
+#define   US_LIN_CSR_RIIC_0         (0x0u << 16) /**< \brief (US_LIN_CSR) No input change has been detected on the RI pin since the last read of CSR */\r
+#define   US_LIN_CSR_RIIC_1         (0x1u << 16) /**< \brief (US_LIN_CSR) At least one input change has been detected on the RI pin since the last read of CSR */\r
+#define US_LIN_CSR_DSRIC            (0x1u << 17) /**< \brief (US_LIN_CSR) Data Set Ready Input Change Flag */\r
+#define   US_LIN_CSR_DSRIC_0        (0x0u << 17) /**< \brief (US_LIN_CSR) No input change has been detected on the DSR pin since the last read of CSR */\r
+#define   US_LIN_CSR_DSRIC_1        (0x1u << 17) /**< \brief (US_LIN_CSR) At least one input change has been detected on the DSR pin since the last read of CSR */\r
+#define US_LIN_CSR_DCDIC            (0x1u << 18) /**< \brief (US_LIN_CSR) Data Carrier Detect Input Change Flag */\r
+#define   US_LIN_CSR_DCDIC_0        (0x0u << 18) /**< \brief (US_LIN_CSR) No input change has been detected on the DCD pin since the last read of CSR */\r
+#define   US_LIN_CSR_DCDIC_1        (0x1u << 18) /**< \brief (US_LIN_CSR) At least one input change has been detected on the DCD pin since the last read of CSR */\r
+#define US_LIN_CSR_CTSIC            (0x1u << 19) /**< \brief (US_LIN_CSR) Clear to Send Input Change Flag */\r
+#define   US_LIN_CSR_CTSIC_0        (0x0u << 19) /**< \brief (US_LIN_CSR) No input change has been detected on the CTS pin since the last read of CSR */\r
+#define   US_LIN_CSR_CTSIC_1        (0x1u << 19) /**< \brief (US_LIN_CSR) At least one input change has been detected on the CTS pin since the last read of CSR */\r
+#define US_LIN_CSR_RI               (0x1u << 20) /**< \brief (US_LIN_CSR) Image of RI Input */\r
+#define   US_LIN_CSR_RI_0           (0x0u << 20) /**< \brief (US_LIN_CSR) RI is at 0 */\r
+#define   US_LIN_CSR_RI_1           (0x1u << 20) /**< \brief (US_LIN_CSR) RI is at 1 */\r
+#define US_LIN_CSR_DSR              (0x1u << 21) /**< \brief (US_LIN_CSR) Image of DSR Input */\r
+#define   US_LIN_CSR_DSR_0          (0x0u << 21) /**< \brief (US_LIN_CSR) DSR is at 0 */\r
+#define   US_LIN_CSR_DSR_1          (0x1u << 21) /**< \brief (US_LIN_CSR) DSR is at 1 */\r
+#define US_LIN_CSR_DCD              (0x1u << 22) /**< \brief (US_LIN_CSR) Image of DCD Input */\r
+#define   US_LIN_CSR_DCD_0          (0x0u << 22) /**< \brief (US_LIN_CSR) DCD is at 0 */\r
+#define   US_LIN_CSR_DCD_1          (0x1u << 22) /**< \brief (US_LIN_CSR) DCD is at 1 */\r
+#define US_LIN_CSR_LINBLS           (0x1u << 23) /**< \brief (US_LIN_CSR) LIN Bus Line Status */\r
+#define   US_LIN_CSR_LINBLS_0       (0x0u << 23) /**< \brief (US_LIN_CSR) CTS is at 0 */\r
+#define   US_LIN_CSR_LINBLS_1       (0x1u << 23) /**< \brief (US_LIN_CSR) CTS is at 1 */\r
+#define US_LIN_CSR_LINBE            (0x1u << 25) /**< \brief (US_LIN_CSR) LIN Bit Error */\r
+#define US_LIN_CSR_LINISFE          (0x1u << 26) /**< \brief (US_LIN_CSR) LIN Inconsistent Synch Field Error */\r
+#define US_LIN_CSR_LINIPE           (0x1u << 27) /**< \brief (US_LIN_CSR) LIN Identifier Parity Error */\r
+#define US_LIN_CSR_LINCE            (0x1u << 28) /**< \brief (US_LIN_CSR) LIN Checksum Error */\r
+#define US_LIN_CSR_LINSNRE          (0x1u << 29) /**< \brief (US_LIN_CSR) LIN Slave Not Responding Error */\r
+#define US_LIN_CSR_LINSTE           (0x1u << 30) /**< \brief (US_LIN_CSR) LIN Synch Tolerance Error */\r
+#define   US_LIN_CSR_LINSTE_0       (0x0u << 30) /**< \brief (US_LIN_CSR) COMM_TX is at 0 */\r
+#define   US_LIN_CSR_LINSTE_1       (0x1u << 30) /**< \brief (US_LIN_CSR) COMM_TX is at 1 */\r
+#define US_LIN_CSR_LINHTE           (0x1u << 31) /**< \brief (US_LIN_CSR) LIN Header Timeout Error */\r
+#define   US_LIN_CSR_LINHTE_0       (0x0u << 31) /**< \brief (US_LIN_CSR) COMM_RX is at 0 */\r
+#define   US_LIN_CSR_LINHTE_1       (0x1u << 31) /**< \brief (US_LIN_CSR) COMM_RX is at 1 */\r
+/* -------- US_SPI_SLAVE_CSR : (USART Offset: 0x14) Channel Status Register -------- */\r
+#define US_SPI_SLAVE_CSR_RXRDY      (0x1u <<  0) /**< \brief (US_SPI_SLAVE_CSR) Receiver Ready */\r
+#define   US_SPI_SLAVE_CSR_RXRDY_0  (0x0u <<  0) /**< \brief (US_SPI_SLAVE_CSR) No complete character has been received since the last read of RHR or the receiver is disabled. If characters werebeing received when the receiver was disabled, RXRDY changes to 1 when the receiver is enabled */\r
+#define   US_SPI_SLAVE_CSR_RXRDY_1  (0x1u <<  0) /**< \brief (US_SPI_SLAVE_CSR) At least one complete character has been received and RHR has not yet been read */\r
+#define US_SPI_SLAVE_CSR_TXRDY      (0x1u <<  1) /**< \brief (US_SPI_SLAVE_CSR) Transmitter Ready */\r
+#define   US_SPI_SLAVE_CSR_TXRDY_0  (0x0u <<  1) /**< \brief (US_SPI_SLAVE_CSR) A character is in the THR waiting to be transferred to the Transmit Shift Register, or an STTBRK command has been requested, or the transmitter is disabled. As soon as the transmitter is enabled, TXRDY becomes 1 */\r
+#define   US_SPI_SLAVE_CSR_TXRDY_1  (0x1u <<  1) /**< \brief (US_SPI_SLAVE_CSR) There is no character in the THR */\r
+#define US_SPI_SLAVE_CSR_RXBRK      (0x1u <<  2) /**< \brief (US_SPI_SLAVE_CSR) Break Received/End of Break */\r
+#define   US_SPI_SLAVE_CSR_RXBRK_0  (0x0u <<  2) /**< \brief (US_SPI_SLAVE_CSR) No Break received or End of Break detected since the last RSTSTA */\r
+#define   US_SPI_SLAVE_CSR_RXBRK_1  (0x1u <<  2) /**< \brief (US_SPI_SLAVE_CSR) Break Received or End of Break detected since the last RSTSTA */\r
+#define US_SPI_SLAVE_CSR_ENDRX      (0x1u <<  3) /**< \brief (US_SPI_SLAVE_CSR) End of Receiver Transfer */\r
+#define   US_SPI_SLAVE_CSR_ENDRX_0  (0x0u <<  3) /**< \brief (US_SPI_SLAVE_CSR) The End of Transfer signal from the Receive PDC channel is inactive */\r
+#define   US_SPI_SLAVE_CSR_ENDRX_1  (0x1u <<  3) /**< \brief (US_SPI_SLAVE_CSR) The End of Transfer signal from the Receive PDC channel is active */\r
+#define US_SPI_SLAVE_CSR_ENDTX      (0x1u <<  4) /**< \brief (US_SPI_SLAVE_CSR) End of Transmitter Transfer */\r
+#define   US_SPI_SLAVE_CSR_ENDTX_0  (0x0u <<  4) /**< \brief (US_SPI_SLAVE_CSR) The End of Transfer signal from the Transmit PDC channel is inactive */\r
+#define   US_SPI_SLAVE_CSR_ENDTX_1  (0x1u <<  4) /**< \brief (US_SPI_SLAVE_CSR) The End of Transfer signal from the Transmit PDC channel is active */\r
+#define US_SPI_SLAVE_CSR_OVRE       (0x1u <<  5) /**< \brief (US_SPI_SLAVE_CSR) Overrun Error */\r
+#define   US_SPI_SLAVE_CSR_OVRE_0   (0x0u <<  5) /**< \brief (US_SPI_SLAVE_CSR) No overrun error has occurred since since the last RSTSTA */\r
+#define   US_SPI_SLAVE_CSR_OVRE_1   (0x1u <<  5) /**< \brief (US_SPI_SLAVE_CSR) At least one overrun error has occurred since the last RSTSTA */\r
+#define US_SPI_SLAVE_CSR_FRAME      (0x1u <<  6) /**< \brief (US_SPI_SLAVE_CSR) Framing Error */\r
+#define   US_SPI_SLAVE_CSR_FRAME_0  (0x0u <<  6) /**< \brief (US_SPI_SLAVE_CSR) No stop bit has been detected low since the last RSTSTA */\r
+#define   US_SPI_SLAVE_CSR_FRAME_1  (0x1u <<  6) /**< \brief (US_SPI_SLAVE_CSR) At least one stop bit has been detected low since the last RSTSTA */\r
+#define US_SPI_SLAVE_CSR_PARE       (0x1u <<  7) /**< \brief (US_SPI_SLAVE_CSR) Parity Error */\r
+#define   US_SPI_SLAVE_CSR_PARE_0   (0x0u <<  7) /**< \brief (US_SPI_SLAVE_CSR) No parity error has been detected since the last RSTSTA */\r
+#define   US_SPI_SLAVE_CSR_PARE_1   (0x1u <<  7) /**< \brief (US_SPI_SLAVE_CSR) At least one parity error has been detected since the last RSTSTA */\r
+#define US_SPI_SLAVE_CSR_TIMEOUT    (0x1u <<  8) /**< \brief (US_SPI_SLAVE_CSR) Receiver Time-out */\r
+#define   US_SPI_SLAVE_CSR_TIMEOUT_0 (0x0u <<  8) /**< \brief (US_SPI_SLAVE_CSR) There has not been a time-out since the last Start Time-out command or the Time-out Register is 0 */\r
+#define   US_SPI_SLAVE_CSR_TIMEOUT_1 (0x1u <<  8) /**< \brief (US_SPI_SLAVE_CSR) There has been a time-out since the last Start Time-out command */\r
+#define US_SPI_SLAVE_CSR_TXEMPTY    (0x1u <<  9) /**< \brief (US_SPI_SLAVE_CSR) Transmitter Empty */\r
+#define   US_SPI_SLAVE_CSR_TXEMPTY_0 (0x0u <<  9) /**< \brief (US_SPI_SLAVE_CSR) There are characters in either THR or the Transmit Shift Register, or the transmitter is disabled */\r
+#define   US_SPI_SLAVE_CSR_TXEMPTY_1 (0x1u <<  9) /**< \brief (US_SPI_SLAVE_CSR) There is at least one character in either THR or the Transmit Shift Register */\r
+#define US_SPI_SLAVE_CSR_UNRE       (0x1u << 10) /**< \brief (US_SPI_SLAVE_CSR) SPI Underrun Error */\r
+#define   US_SPI_SLAVE_CSR_UNRE_0   (0x0u << 10) /**< \brief (US_SPI_SLAVE_CSR) No SPI underrun error has occurred since the last RSTSTA */\r
+#define   US_SPI_SLAVE_CSR_UNRE_1   (0x1u << 10) /**< \brief (US_SPI_SLAVE_CSR) At least one SPI underrun error has occurred since the last RSTSTA */\r
+#define US_SPI_SLAVE_CSR_TXBUFE     (0x1u << 11) /**< \brief (US_SPI_SLAVE_CSR) Transmission Buffer Empty */\r
+#define   US_SPI_SLAVE_CSR_TXBUFE_0 (0x0u << 11) /**< \brief (US_SPI_SLAVE_CSR) The signal Buffer Empty from the Transmit PDC channel is inactive */\r
+#define   US_SPI_SLAVE_CSR_TXBUFE_1 (0x1u << 11) /**< \brief (US_SPI_SLAVE_CSR) The signal Buffer Empty from the Transmit PDC channel is active */\r
+#define US_SPI_SLAVE_CSR_RXBUFF     (0x1u << 12) /**< \brief (US_SPI_SLAVE_CSR) Reception Buffer Full */\r
+#define   US_SPI_SLAVE_CSR_RXBUFF_0 (0x0u << 12) /**< \brief (US_SPI_SLAVE_CSR) The signal Buffer Full from the Receive PDC channel is inactive */\r
+#define   US_SPI_SLAVE_CSR_RXBUFF_1 (0x1u << 12) /**< \brief (US_SPI_SLAVE_CSR) The signal Buffer Full from the Receive PDC channel is active */\r
+#define US_SPI_SLAVE_CSR_NACK       (0x1u << 13) /**< \brief (US_SPI_SLAVE_CSR) Non Acknowledge */\r
+#define   US_SPI_SLAVE_CSR_NACK_0   (0x0u << 13) /**< \brief (US_SPI_SLAVE_CSR) No Non Acknowledge has not been detected since the last RSTNACK */\r
+#define   US_SPI_SLAVE_CSR_NACK_1   (0x1u << 13) /**< \brief (US_SPI_SLAVE_CSR) At least one Non Acknowledge has been detected since the last RSTNACK */\r
+#define US_SPI_SLAVE_CSR_RIIC       (0x1u << 16) /**< \brief (US_SPI_SLAVE_CSR) Ring Indicator Input Change Flag */\r
+#define   US_SPI_SLAVE_CSR_RIIC_0   (0x0u << 16) /**< \brief (US_SPI_SLAVE_CSR) No input change has been detected on the RI pin since the last read of CSR */\r
+#define   US_SPI_SLAVE_CSR_RIIC_1   (0x1u << 16) /**< \brief (US_SPI_SLAVE_CSR) At least one input change has been detected on the RI pin since the last read of CSR */\r
+#define US_SPI_SLAVE_CSR_DSRIC      (0x1u << 17) /**< \brief (US_SPI_SLAVE_CSR) Data Set Ready Input Change Flag */\r
+#define   US_SPI_SLAVE_CSR_DSRIC_0  (0x0u << 17) /**< \brief (US_SPI_SLAVE_CSR) No input change has been detected on the DSR pin since the last read of CSR */\r
+#define   US_SPI_SLAVE_CSR_DSRIC_1  (0x1u << 17) /**< \brief (US_SPI_SLAVE_CSR) At least one input change has been detected on the DSR pin since the last read of CSR */\r
+#define US_SPI_SLAVE_CSR_DCDIC      (0x1u << 18) /**< \brief (US_SPI_SLAVE_CSR) Data Carrier Detect Input Change Flag */\r
+#define   US_SPI_SLAVE_CSR_DCDIC_0  (0x0u << 18) /**< \brief (US_SPI_SLAVE_CSR) No input change has been detected on the DCD pin since the last read of CSR */\r
+#define   US_SPI_SLAVE_CSR_DCDIC_1  (0x1u << 18) /**< \brief (US_SPI_SLAVE_CSR) At least one input change has been detected on the DCD pin since the last read of CSR */\r
+#define US_SPI_SLAVE_CSR_CTSIC      (0x1u << 19) /**< \brief (US_SPI_SLAVE_CSR) Clear to Send Input Change Flag */\r
+#define   US_SPI_SLAVE_CSR_CTSIC_0  (0x0u << 19) /**< \brief (US_SPI_SLAVE_CSR) No input change has been detected on the CTS pin since the last read of CSR */\r
+#define   US_SPI_SLAVE_CSR_CTSIC_1  (0x1u << 19) /**< \brief (US_SPI_SLAVE_CSR) At least one input change has been detected on the CTS pin since the last read of CSR */\r
+#define US_SPI_SLAVE_CSR_RI         (0x1u << 20) /**< \brief (US_SPI_SLAVE_CSR) Image of RI Input */\r
+#define   US_SPI_SLAVE_CSR_RI_0     (0x0u << 20) /**< \brief (US_SPI_SLAVE_CSR) RI is at 0 */\r
+#define   US_SPI_SLAVE_CSR_RI_1     (0x1u << 20) /**< \brief (US_SPI_SLAVE_CSR) RI is at 1 */\r
+#define US_SPI_SLAVE_CSR_DSR        (0x1u << 21) /**< \brief (US_SPI_SLAVE_CSR) Image of DSR Input */\r
+#define   US_SPI_SLAVE_CSR_DSR_0    (0x0u << 21) /**< \brief (US_SPI_SLAVE_CSR) DSR is at 0 */\r
+#define   US_SPI_SLAVE_CSR_DSR_1    (0x1u << 21) /**< \brief (US_SPI_SLAVE_CSR) DSR is at 1 */\r
+#define US_SPI_SLAVE_CSR_DCD        (0x1u << 22) /**< \brief (US_SPI_SLAVE_CSR) Image of DCD Input */\r
+#define   US_SPI_SLAVE_CSR_DCD_0    (0x0u << 22) /**< \brief (US_SPI_SLAVE_CSR) DCD is at 0 */\r
+#define   US_SPI_SLAVE_CSR_DCD_1    (0x1u << 22) /**< \brief (US_SPI_SLAVE_CSR) DCD is at 1 */\r
+#define US_SPI_SLAVE_CSR_CTS        (0x1u << 23) /**< \brief (US_SPI_SLAVE_CSR) Image of CTS Input */\r
+#define   US_SPI_SLAVE_CSR_CTS_0    (0x0u << 23) /**< \brief (US_SPI_SLAVE_CSR) CTS is at 0 */\r
+#define   US_SPI_SLAVE_CSR_CTS_1    (0x1u << 23) /**< \brief (US_SPI_SLAVE_CSR) CTS is at 1 */\r
+/* -------- US_USART_CSR : (USART Offset: 0x14) Channel Status Register -------- */\r
+#define US_USART_CSR_RXRDY          (0x1u <<  0) /**< \brief (US_USART_CSR) Receiver Ready */\r
+#define   US_USART_CSR_RXRDY_0      (0x0u <<  0) /**< \brief (US_USART_CSR) No complete character has been received since the last read of RHR or the receiver is disabled. If characters werebeing received when the receiver was disabled, RXRDY changes to 1 when the receiver is enabled */\r
+#define   US_USART_CSR_RXRDY_1      (0x1u <<  0) /**< \brief (US_USART_CSR) At least one complete character has been received and RHR has not yet been read */\r
+#define US_USART_CSR_TXRDY          (0x1u <<  1) /**< \brief (US_USART_CSR) Transmitter Ready */\r
+#define   US_USART_CSR_TXRDY_0      (0x0u <<  1) /**< \brief (US_USART_CSR) A character is in the THR waiting to be transferred to the Transmit Shift Register, or an STTBRK command has been requested, or the transmitter is disabled. As soon as the transmitter is enabled, TXRDY becomes 1 */\r
+#define   US_USART_CSR_TXRDY_1      (0x1u <<  1) /**< \brief (US_USART_CSR) There is no character in the THR */\r
+#define US_USART_CSR_RXBRK          (0x1u <<  2) /**< \brief (US_USART_CSR) Break Received/End of Break */\r
+#define   US_USART_CSR_RXBRK_0      (0x0u <<  2) /**< \brief (US_USART_CSR) No Break received or End of Break detected since the last RSTSTA */\r
+#define   US_USART_CSR_RXBRK_1      (0x1u <<  2) /**< \brief (US_USART_CSR) Break Received or End of Break detected since the last RSTSTA */\r
+#define US_USART_CSR_ENDRX          (0x1u <<  3) /**< \brief (US_USART_CSR) End of Receiver Transfer */\r
+#define   US_USART_CSR_ENDRX_0      (0x0u <<  3) /**< \brief (US_USART_CSR) The End of Transfer signal from the Receive PDC channel is inactive */\r
+#define   US_USART_CSR_ENDRX_1      (0x1u <<  3) /**< \brief (US_USART_CSR) The End of Transfer signal from the Receive PDC channel is active */\r
+#define US_USART_CSR_ENDTX          (0x1u <<  4) /**< \brief (US_USART_CSR) End of Transmitter Transfer */\r
+#define   US_USART_CSR_ENDTX_0      (0x0u <<  4) /**< \brief (US_USART_CSR) The End of Transfer signal from the Transmit PDC channel is inactive */\r
+#define   US_USART_CSR_ENDTX_1      (0x1u <<  4) /**< \brief (US_USART_CSR) The End of Transfer signal from the Transmit PDC channel is active */\r
+#define US_USART_CSR_OVRE           (0x1u <<  5) /**< \brief (US_USART_CSR) Overrun Error */\r
+#define   US_USART_CSR_OVRE_0       (0x0u <<  5) /**< \brief (US_USART_CSR) No overrun error has occurred since since the last RSTSTA */\r
+#define   US_USART_CSR_OVRE_1       (0x1u <<  5) /**< \brief (US_USART_CSR) At least one overrun error has occurred since the last RSTSTA */\r
+#define US_USART_CSR_FRAME          (0x1u <<  6) /**< \brief (US_USART_CSR) Framing Error */\r
+#define   US_USART_CSR_FRAME_0      (0x0u <<  6) /**< \brief (US_USART_CSR) No stop bit has been detected low since the last RSTSTA */\r
+#define   US_USART_CSR_FRAME_1      (0x1u <<  6) /**< \brief (US_USART_CSR) At least one stop bit has been detected low since the last RSTSTA */\r
+#define US_USART_CSR_PARE           (0x1u <<  7) /**< \brief (US_USART_CSR) Parity Error */\r
+#define   US_USART_CSR_PARE_0       (0x0u <<  7) /**< \brief (US_USART_CSR) No parity error has been detected since the last RSTSTA */\r
+#define   US_USART_CSR_PARE_1       (0x1u <<  7) /**< \brief (US_USART_CSR) At least one parity error has been detected since the last RSTSTA */\r
+#define US_USART_CSR_TIMEOUT        (0x1u <<  8) /**< \brief (US_USART_CSR) Receiver Time-out */\r
+#define   US_USART_CSR_TIMEOUT_0    (0x0u <<  8) /**< \brief (US_USART_CSR) There has not been a time-out since the last Start Time-out command or the Time-out Register is 0 */\r
+#define   US_USART_CSR_TIMEOUT_1    (0x1u <<  8) /**< \brief (US_USART_CSR) There has been a time-out since the last Start Time-out command */\r
+#define US_USART_CSR_TXEMPTY        (0x1u <<  9) /**< \brief (US_USART_CSR) Transmitter Empty */\r
+#define   US_USART_CSR_TXEMPTY_0    (0x0u <<  9) /**< \brief (US_USART_CSR) There are characters in either THR or the Transmit Shift Register, or the transmitter is disabled */\r
+#define   US_USART_CSR_TXEMPTY_1    (0x1u <<  9) /**< \brief (US_USART_CSR) There is at least one character in either THR or the Transmit Shift Register */\r
+#define US_USART_CSR_ITER           (0x1u << 10) /**< \brief (US_USART_CSR) Max number of Repetitions Reached */\r
+#define   US_USART_CSR_ITER_0       (0x0u << 10) /**< \brief (US_USART_CSR) Maximum number of repetitions has not been reached since the last RSIT */\r
+#define   US_USART_CSR_ITER_1       (0x1u << 10) /**< \brief (US_USART_CSR) Maximum number of repetitions has been reached since the last RSIT */\r
+#define US_USART_CSR_TXBUFE         (0x1u << 11) /**< \brief (US_USART_CSR) Transmission Buffer Empty */\r
+#define   US_USART_CSR_TXBUFE_0     (0x0u << 11) /**< \brief (US_USART_CSR) The signal Buffer Empty from the Transmit PDC channel is inactive */\r
+#define   US_USART_CSR_TXBUFE_1     (0x1u << 11) /**< \brief (US_USART_CSR) The signal Buffer Empty from the Transmit PDC channel is active */\r
+#define US_USART_CSR_RXBUFF         (0x1u << 12) /**< \brief (US_USART_CSR) Reception Buffer Full */\r
+#define   US_USART_CSR_RXBUFF_0     (0x0u << 12) /**< \brief (US_USART_CSR) The signal Buffer Full from the Receive PDC channel is inactive */\r
+#define   US_USART_CSR_RXBUFF_1     (0x1u << 12) /**< \brief (US_USART_CSR) The signal Buffer Full from the Receive PDC channel is active */\r
+#define US_USART_CSR_NACK           (0x1u << 13) /**< \brief (US_USART_CSR) Non Acknowledge */\r
+#define   US_USART_CSR_NACK_0       (0x0u << 13) /**< \brief (US_USART_CSR) No Non Acknowledge has not been detected since the last RSTNACK */\r
+#define   US_USART_CSR_NACK_1       (0x1u << 13) /**< \brief (US_USART_CSR) At least one Non Acknowledge has been detected since the last RSTNACK */\r
+#define US_USART_CSR_RIIC           (0x1u << 16) /**< \brief (US_USART_CSR) Ring Indicator Input Change Flag */\r
+#define   US_USART_CSR_RIIC_0       (0x0u << 16) /**< \brief (US_USART_CSR) No input change has been detected on the RI pin since the last read of CSR */\r
+#define   US_USART_CSR_RIIC_1       (0x1u << 16) /**< \brief (US_USART_CSR) At least one input change has been detected on the RI pin since the last read of CSR */\r
+#define US_USART_CSR_DSRIC          (0x1u << 17) /**< \brief (US_USART_CSR) Data Set Ready Input Change Flag */\r
+#define   US_USART_CSR_DSRIC_0      (0x0u << 17) /**< \brief (US_USART_CSR) No input change has been detected on the DSR pin since the last read of CSR */\r
+#define   US_USART_CSR_DSRIC_1      (0x1u << 17) /**< \brief (US_USART_CSR) At least one input change has been detected on the DSR pin since the last read of CSR */\r
+#define US_USART_CSR_DCDIC          (0x1u << 18) /**< \brief (US_USART_CSR) Data Carrier Detect Input Change Flag */\r
+#define   US_USART_CSR_DCDIC_0      (0x0u << 18) /**< \brief (US_USART_CSR) No input change has been detected on the DCD pin since the last read of CSR */\r
+#define   US_USART_CSR_DCDIC_1      (0x1u << 18) /**< \brief (US_USART_CSR) At least one input change has been detected on the DCD pin since the last read of CSR */\r
+#define US_USART_CSR_CTSIC          (0x1u << 19) /**< \brief (US_USART_CSR) Clear to Send Input Change Flag */\r
+#define   US_USART_CSR_CTSIC_0      (0x0u << 19) /**< \brief (US_USART_CSR) No input change has been detected on the CTS pin since the last read of CSR */\r
+#define   US_USART_CSR_CTSIC_1      (0x1u << 19) /**< \brief (US_USART_CSR) At least one input change has been detected on the CTS pin since the last read of CSR */\r
+#define US_USART_CSR_RI             (0x1u << 20) /**< \brief (US_USART_CSR) Image of RI Input */\r
+#define   US_USART_CSR_RI_0         (0x0u << 20) /**< \brief (US_USART_CSR) RI is at 0 */\r
+#define   US_USART_CSR_RI_1         (0x1u << 20) /**< \brief (US_USART_CSR) RI is at 1 */\r
+#define US_USART_CSR_DSR            (0x1u << 21) /**< \brief (US_USART_CSR) Image of DSR Input */\r
+#define   US_USART_CSR_DSR_0        (0x0u << 21) /**< \brief (US_USART_CSR) DSR is at 0 */\r
+#define   US_USART_CSR_DSR_1        (0x1u << 21) /**< \brief (US_USART_CSR) DSR is at 1 */\r
+#define US_USART_CSR_DCD            (0x1u << 22) /**< \brief (US_USART_CSR) Image of DCD Input */\r
+#define   US_USART_CSR_DCD_0        (0x0u << 22) /**< \brief (US_USART_CSR) DCD is at 0 */\r
+#define   US_USART_CSR_DCD_1        (0x1u << 22) /**< \brief (US_USART_CSR) DCD is at 1 */\r
+#define US_USART_CSR_CTS            (0x1u << 23) /**< \brief (US_USART_CSR) Image of CTS Input */\r
+#define   US_USART_CSR_CTS_0        (0x0u << 23) /**< \brief (US_USART_CSR) CTS is at 0 */\r
+#define   US_USART_CSR_CTS_1        (0x1u << 23) /**< \brief (US_USART_CSR) CTS is at 1 */\r
+#define US_USART_CSR_MANERR         (0x1u << 24) /**< \brief (US_USART_CSR) Manchester Error */\r
+#define   US_USART_CSR_MANERR_0     (0x0u << 24) /**< \brief (US_USART_CSR) No Manchester error has been detected since the last RSTSTA */\r
+#define   US_USART_CSR_MANERR_1     (0x1u << 24) /**< \brief (US_USART_CSR) At least one Manchester error has been detected since the last RSTSTA */\r
+/* -------- US_CSR : (USART Offset: 0x14) Channel Status Register -------- */\r
+#define US_CSR_RXRDY                (0x1u <<  0) /**< \brief (US_CSR) Receiver Ready */\r
+#define US_CSR_TXRDY                (0x1u <<  1) /**< \brief (US_CSR) Transmitter Ready */\r
+#define US_CSR_RXBRK                (0x1u <<  2) /**< \brief (US_CSR) Break Received/End of Break */\r
+#define US_CSR_ENDRX                (0x1u <<  3) /**< \brief (US_CSR) End of Receiver Transfer */\r
+#define US_CSR_ENDTX                (0x1u <<  4) /**< \brief (US_CSR) End of Transmitter Transfer */\r
+#define US_CSR_OVRE                 (0x1u <<  5) /**< \brief (US_CSR) Overrun Error */\r
+#define US_CSR_FRAME                (0x1u <<  6) /**< \brief (US_CSR) Framing Error */\r
+#define US_CSR_PARE                 (0x1u <<  7) /**< \brief (US_CSR) Parity Error */\r
+#define US_CSR_TIMEOUT              (0x1u <<  8) /**< \brief (US_CSR) Receiver Time-out */\r
+#define US_CSR_TXEMPTY              (0x1u <<  9) /**< \brief (US_CSR) Transmitter Empty */\r
+#define US_CSR_ITER                 (0x1u << 10) /**< \brief (US_CSR) Max number of Repetitions Reached */\r
+#define US_CSR_UNRE                 (0x1u << 10) /**< \brief (US_CSR) SPI Underrun Error */\r
+#define US_CSR_TXBUFE               (0x1u << 11) /**< \brief (US_CSR) Transmission Buffer Empty */\r
+#define US_CSR_RXBUFF               (0x1u << 12) /**< \brief (US_CSR) Reception Buffer Full */\r
+#define US_CSR_NACK                 (0x1u << 13) /**< \brief (US_CSR) Non Acknowledge or LIN Break Sent or LIN Break Received */\r
+#define US_CSR_LINID                (0x1u << 14) /**< \brief (US_CSR) LIN Identifier Sent or LIN Identifier Received */\r
+#define US_CSR_LINTC                (0x1u << 15) /**< \brief (US_CSR) LIN Transfer Conpleted */\r
+#define US_CSR_RIIC                 (0x1u << 16) /**< \brief (US_CSR) Ring Indicator Input Change Flag */\r
+#define US_CSR_DSRIC                (0x1u << 17) /**< \brief (US_CSR) Data Set Ready Input Change Flag */\r
+#define US_CSR_DCDIC                (0x1u << 18) /**< \brief (US_CSR) Data Carrier Detect Input Change Flag */\r
+#define US_CSR_CTSIC                (0x1u << 19) /**< \brief (US_CSR) Clear to Send Input Change Flag */\r
+#define US_CSR_LINBLS               (0x1u << 23) /**< \brief (US_CSR) LIN Bus Line Status */\r
+#define US_CSR_MANERR               (0x1u << 24) /**< \brief (US_CSR) Manchester Error */\r
+#define US_CSR_LINBE                (0x1u << 25) /**< \brief (US_CSR) LIN Bit Error */\r
+#define US_CSR_LINISFE              (0x1u << 26) /**< \brief (US_CSR) LIN Inconsistent Synch Field Error */\r
+#define US_CSR_LINIPE               (0x1u << 27) /**< \brief (US_CSR) LIN Identifier Parity Error */\r
+#define US_CSR_LINCE                (0x1u << 28) /**< \brief (US_CSR) LIN Checksum Error */\r
+#define US_CSR_LINSNRE              (0x1u << 29) /**< \brief (US_CSR) LIN Slave Not Responding Error */\r
+#define US_CSR_LINSTE               (0x1u << 30) /**< \brief (US_CSR) LIN Synch Tolerance Error */\r
+#define US_CSR_LINHTE               (0x1u << 31) /**< \brief (US_CSR) LIN Header Timeout Error */\r
+\r
+/* -------- US_RHR : (USART Offset: 0x18) Receiver Holding Register -------- */\r
+#define US_RHR_RXCHR_Pos            0\r
+#define US_RHR_RXCHR_Msk            (0x1FFu << US_RHR_RXCHR_Pos) /**< \brief (US_RHR) Received Character */\r
+#define US_RHR_RXCHR(value)         ((US_RHR_RXCHR_Msk & ((value) << US_RHR_RXCHR_Pos)))\r
+#define US_RHR_RXSYNH               (0x1u << 15) /**< \brief (US_RHR) Received Sync */\r
+#define   US_RHR_RXSYNH_0           (0x0u << 15) /**< \brief (US_RHR) Last character received is a Data */\r
+#define   US_RHR_RXSYNH_1           (0x1u << 15) /**< \brief (US_RHR) Last character received is a Command */\r
+/* -------- US_THR : (USART Offset: 0x1C) Transmitter Holding Register -------- */\r
+#define US_THR_TXCHR_Pos            0\r
+#define US_THR_TXCHR_Msk            (0x1FFu << US_THR_TXCHR_Pos) /**< \brief (US_THR) Character to be Transmitted */\r
+#define US_THR_TXCHR(value)         ((US_THR_TXCHR_Msk & ((value) << US_THR_TXCHR_Pos)))\r
+#define US_THR_TXSYNH               (0x1u << 15) /**< \brief (US_THR) Sync Field to be transmitted */\r
+#define   US_THR_TXSYNH_0           (0x0u << 15) /**< \brief (US_THR) The next character sent is encoded as a data. Start Frame Delimiter is DATA SYNC */\r
+#define   US_THR_TXSYNH_1           (0x1u << 15) /**< \brief (US_THR) The next character sent is encoded as a command. Start Frame Delimiter is COMMAND SYNC */\r
+/* -------- US_BRGR : (USART Offset: 0x20) Baud Rate Generator Register -------- */\r
+#define US_BRGR_CD_Pos              0\r
+#define US_BRGR_CD_Msk              (0xFFFFu << US_BRGR_CD_Pos) /**< \brief (US_BRGR) Clock Divisor */\r
+#define US_BRGR_CD(value)           ((US_BRGR_CD_Msk & ((value) << US_BRGR_CD_Pos)))\r
+#define   US_BRGR_CD_DISABLE        (0x0u <<  0) /**< \brief (US_BRGR) Disables the clock */\r
+#define   US_BRGR_CD_BYPASS         (0x1u <<  0) /**< \brief (US_BRGR) Clock Divisor Bypass */\r
+#define   US_BRGR_CD_2              (0x2u <<  0) /**< \brief (US_BRGR) Baud Rate (Asynchronous Mode) = Selected Clock/(16 x CD) or (8 x CD); Baud Rate (Synchronous Mode) = Selected Clock/CD; */\r
+#define US_BRGR_FP_Pos              16\r
+#define US_BRGR_FP_Msk              (0x7u << US_BRGR_FP_Pos) /**< \brief (US_BRGR) Fractional Part */\r
+#define US_BRGR_FP(value)           ((US_BRGR_FP_Msk & ((value) << US_BRGR_FP_Pos)))\r
+#define   US_BRGR_FP_0              (0x0u << 16) /**< \brief (US_BRGR) Fractional divider is disabled */\r
+/* -------- US_RTOR : (USART Offset: 0x24) Receiver Time-out Register -------- */\r
+#define US_RTOR_TO_Pos              0\r
+#define US_RTOR_TO_Msk              (0x1FFFFu << US_RTOR_TO_Pos) /**< \brief (US_RTOR) Time-out Value */\r
+#define US_RTOR_TO(value)           ((US_RTOR_TO_Msk & ((value) << US_RTOR_TO_Pos)))\r
+#define   US_RTOR_TO_DISABLE        (0x0u <<  0) /**< \brief (US_RTOR) Disables the RX Time-out function */\r
+/* -------- US_TTGR : (USART Offset: 0x28) Transmitter Timeguard Register -------- */\r
+#define US_TTGR_TG_Pos              0\r
+#define US_TTGR_TG_Msk              (0xFFu << US_TTGR_TG_Pos) /**< \brief (US_TTGR) Timeguard Value */\r
+#define US_TTGR_TG(value)           ((US_TTGR_TG_Msk & ((value) << US_TTGR_TG_Pos)))\r
+#define   US_TTGR_TG_DISABLE        (0x0u <<  0) /**< \brief (US_TTGR) Disables the TX Timeguard function. */\r
+/* -------- US_FIDI : (USART Offset: 0x40) FI DI Ratio Register -------- */\r
+#define US_FIDI_FI_DI_RATIO_Pos     0\r
+#define US_FIDI_FI_DI_RATIO_Msk     (0x7FFu << US_FIDI_FI_DI_RATIO_Pos) /**< \brief (US_FIDI) FI Over DI Ratio Value */\r
+#define US_FIDI_FI_DI_RATIO(value)  ((US_FIDI_FI_DI_RATIO_Msk & ((value) << US_FIDI_FI_DI_RATIO_Pos)))\r
+#define   US_FIDI_FI_DI_RATIO_DISABLE (0x0u <<  0) /**< \brief (US_FIDI) Baud Rate = 0 */\r
+/* -------- US_NER : (USART Offset: 0x44) Number of Errors Register -------- */\r
+#define US_NER_NB_ERRORS_Pos        0\r
+#define US_NER_NB_ERRORS_Msk        (0xFFu << US_NER_NB_ERRORS_Pos) /**< \brief (US_NER) Error number during ISO7816 transfers */\r
+#define US_NER_NB_ERRORS(value)     ((US_NER_NB_ERRORS_Msk & ((value) << US_NER_NB_ERRORS_Pos)))\r
+/* -------- US_IFR : (USART Offset: 0x4C) IrDA Filter Register -------- */\r
+#define US_IFR_IRDA_FILTER_Pos      0\r
+#define US_IFR_IRDA_FILTER_Msk      (0xFFu << US_IFR_IRDA_FILTER_Pos) /**< \brief (US_IFR) Irda filter */\r
+#define US_IFR_IRDA_FILTER(value)   ((US_IFR_IRDA_FILTER_Msk & ((value) << US_IFR_IRDA_FILTER_Pos)))\r
+/* -------- US_MAN : (USART Offset: 0x50) Manchester Configuration Register -------- */\r
+#define US_MAN_TX_PL_Pos            0\r
+#define US_MAN_TX_PL_Msk            (0xFu << US_MAN_TX_PL_Pos) /**< \brief (US_MAN) Transmitter Preamble Length */\r
+#define US_MAN_TX_PL(value)         ((US_MAN_TX_PL_Msk & ((value) << US_MAN_TX_PL_Pos)))\r
+#define   US_MAN_TX_PL_0            (0x0u <<  0) /**< \brief (US_MAN) The Transmitter Preamble pattern generation is disabled */\r
+#define US_MAN_TX_PP_Pos            8\r
+#define US_MAN_TX_PP_Msk            (0x3u << US_MAN_TX_PP_Pos) /**< \brief (US_MAN) Transmitter Preamble Pattern */\r
+#define US_MAN_TX_PP(value)         ((US_MAN_TX_PP_Msk & ((value) << US_MAN_TX_PP_Pos)))\r
+#define   US_MAN_TX_PP_0            (0x0u <<  8) /**< \brief (US_MAN) ALL_ONE */\r
+#define   US_MAN_TX_PP_1            (0x1u <<  8) /**< \brief (US_MAN) ALL_ZERO */\r
+#define   US_MAN_TX_PP_2            (0x2u <<  8) /**< \brief (US_MAN) ZERO_ONE */\r
+#define   US_MAN_TX_PP_3            (0x3u <<  8) /**< \brief (US_MAN) ONE_ZERO */\r
+#define US_MAN_TX_MPOL              (0x1u << 12) /**< \brief (US_MAN) Transmitter Manchester Polarity */\r
+#define   US_MAN_TX_MPOL_0          (0x0u << 12) /**< \brief (US_MAN) Logic Zero is coded as a zero-to-one transition, Logic One is coded as a one-to-zero transition */\r
+#define   US_MAN_TX_MPOL_1          (0x1u << 12) /**< \brief (US_MAN) Logic Zero is coded as a one-to-zero transition, Logic One is coded as a zero-to-one transition */\r
+#define US_MAN_RX_PL_Pos            16\r
+#define US_MAN_RX_PL_Msk            (0xFu << US_MAN_RX_PL_Pos) /**< \brief (US_MAN) Receiver Preamble Length */\r
+#define US_MAN_RX_PL(value)         ((US_MAN_RX_PL_Msk & ((value) << US_MAN_RX_PL_Pos)))\r
+#define   US_MAN_RX_PL_0            (0x0u << 16) /**< \brief (US_MAN) The receiver preamble pattern detection is disabled */\r
+#define US_MAN_RX_PP_Pos            24\r
+#define US_MAN_RX_PP_Msk            (0x3u << US_MAN_RX_PP_Pos) /**< \brief (US_MAN) Receiver Preamble Pattern detected */\r
+#define US_MAN_RX_PP(value)         ((US_MAN_RX_PP_Msk & ((value) << US_MAN_RX_PP_Pos)))\r
+#define   US_MAN_RX_PP_0            (0x0u << 24) /**< \brief (US_MAN) ALL_ONE */\r
+#define   US_MAN_RX_PP_1            (0x1u << 24) /**< \brief (US_MAN) ALL_ZERO */\r
+#define   US_MAN_RX_PP_2            (0x2u << 24) /**< \brief (US_MAN) ZERO_ONE */\r
+#define   US_MAN_RX_PP_3            (0x3u << 24) /**< \brief (US_MAN) ONE_ZERO */\r
+#define US_MAN_RX_MPOL              (0x1u << 28) /**< \brief (US_MAN) Receiver Manchester Polarity */\r
+#define   US_MAN_RX_MPOL_0          (0x0u << 28) /**< \brief (US_MAN) Logic Zero is coded as a zero-to-one transition, Logic One is coded as a one-to-zero transition */\r
+#define   US_MAN_RX_MPOL_1          (0x1u << 28) /**< \brief (US_MAN) Logic Zero is coded as a one-to-zero transition, Logic One is coded as a zero-to-one transition */\r
+#define US_MAN_DRIFT                (0x1u << 30) /**< \brief (US_MAN) Drift compensation */\r
+#define   US_MAN_DRIFT_0            (0x0u << 30) /**< \brief (US_MAN) The USART can not recover from an important clock drift */\r
+#define   US_MAN_DRIFT_1            (0x1u << 30) /**< \brief (US_MAN) The USART can recover from clock drift. The 16X clock mode must be enabled */\r
+/* -------- US_LINMR : (USART Offset: 0x54) LIN Mode Register -------- */\r
+#define US_LINMR_NACT_Pos           0\r
+#define US_LINMR_NACT_Msk           (0x3u << US_LINMR_NACT_Pos) /**< \brief (US_LINMR) LIN Node Action */\r
+#define US_LINMR_NACT(value)        ((US_LINMR_NACT_Msk & ((value) << US_LINMR_NACT_Pos)))\r
+#define   US_LINMR_NACT_PUBLISH     (0x0u <<  0) /**< \brief (US_LINMR) The LIN Controller transmits the response */\r
+#define   US_LINMR_NACT_SUBSCRIBE   (0x1u <<  0) /**< \brief (US_LINMR) The LIN Controller receives the response */\r
+#define   US_LINMR_NACT_IGNORE      (0x2u <<  0) /**< \brief (US_LINMR) The LIN Controller doesn't transmit and doesn't receive the response */\r
+#define US_LINMR_PARDIS             (0x1u <<  2) /**< \brief (US_LINMR) Parity Disable */\r
+#define US_LINMR_CHKDIS             (0x1u <<  3) /**< \brief (US_LINMR) Checksum Disable */\r
+#define US_LINMR_CHKTYP             (0x1u <<  4) /**< \brief (US_LINMR) Checksum Type */\r
+#define US_LINMR_DLM                (0x1u <<  5) /**< \brief (US_LINMR) Data Length Mode */\r
+#define US_LINMR_FSDIS              (0x1u <<  6) /**< \brief (US_LINMR) Frame Slot Mode Disable */\r
+#define US_LINMR_WKUPTYP            (0x1u <<  7) /**< \brief (US_LINMR) Wakeup Signal Type */\r
+#define US_LINMR_DLC_Pos            8\r
+#define US_LINMR_DLC_Msk            (0xFFu << US_LINMR_DLC_Pos) /**< \brief (US_LINMR) Data Length Control */\r
+#define US_LINMR_DLC(value)         ((US_LINMR_DLC_Msk & ((value) << US_LINMR_DLC_Pos)))\r
+#define US_LINMR_PDCM               (0x1u << 16) /**< \brief (US_LINMR) PDC Mode */\r
+#define US_LINMR_SYNCDIS            (0x1u << 17) /**< \brief (US_LINMR) Synchronization Disable */\r
+/* -------- US_LINIR : (USART Offset: 0x58) LIN Identifier Register -------- */\r
+#define US_LINIR_IDCHR_Pos          0\r
+#define US_LINIR_IDCHR_Msk          (0xFFu << US_LINIR_IDCHR_Pos) /**< \brief (US_LINIR) Identifier Character */\r
+#define US_LINIR_IDCHR(value)       ((US_LINIR_IDCHR_Msk & ((value) << US_LINIR_IDCHR_Pos)))\r
+/* -------- US_LINBRR : (USART Offset: 0x5C) LIN Baud Rate Register -------- */\r
+#define US_LINBRR_LINCD_Pos         0\r
+#define US_LINBRR_LINCD_Msk         (0xFFFFu << US_LINBRR_LINCD_Pos) /**< \brief (US_LINBRR) Clock Divider after Synchronization */\r
+#define US_LINBRR_LINCD(value)      ((US_LINBRR_LINCD_Msk & ((value) << US_LINBRR_LINCD_Pos)))\r
+#define US_LINBRR_LINFP_Pos         16\r
+#define US_LINBRR_LINFP_Msk         (0x7u << US_LINBRR_LINFP_Pos) /**< \brief (US_LINBRR) Fractional Part after Synchronization */\r
+#define US_LINBRR_LINFP(value)      ((US_LINBRR_LINFP_Msk & ((value) << US_LINBRR_LINFP_Pos)))\r
+/* -------- US_WPMR : (USART Offset: 0xE4) Write Protect Mode Register -------- */\r
+#define US_WPMR_WPEN                (0x1u <<  0) /**< \brief (US_WPMR) Write Protect Enable */\r
+#define   US_WPMR_WPEN_0            (0x0u <<  0) /**< \brief (US_WPMR) Disables the Write Protect if WPKEY corresponds to 0x858365 ("USA" in ACII) */\r
+#define   US_WPMR_WPEN_1            (0x1u <<  0) /**< \brief (US_WPMR) Enables the Write Protect if WPKEY corresponds to 0x858365 ("USA" in ACII) */\r
+#define US_WPMR_WPKEY_Pos           8\r
+#define US_WPMR_WPKEY_Msk           (0xFFFFFFu << US_WPMR_WPKEY_Pos) /**< \brief (US_WPMR) Write Protect Key */\r
+#define US_WPMR_WPKEY(value)        ((US_WPMR_WPKEY_Msk & ((value) << US_WPMR_WPKEY_Pos)))\r
+/* -------- US_WPSR : (USART Offset: 0xE8) Write Protect Status Register -------- */\r
+#define US_WPSR_WPV                 (0x1u <<  0) /**< \brief (US_WPSR) Write Protect Violation Status */\r
+#define   US_WPSR_WPV_0             (0x0u <<  0) /**< \brief (US_WPSR) No Write Protect Violation has occurred since the last read of the WPSR register */\r
+#define   US_WPSR_WPV_1             (0x1u <<  0) /**< \brief (US_WPSR) A Write Protect Violation has occurred since the last read of the WPSR register. If this violation is an unauthorized attempt to write a protected register, the associated violation is reported into field WPVSRC */\r
+#define US_WPSR_WPVSRC_Pos          8\r
+#define US_WPSR_WPVSRC_Msk          (0xFFFFu << US_WPSR_WPVSRC_Pos) /**< \brief (US_WPSR) Write Protect Violation Source */\r
+#define US_WPSR_WPVSRC(value)       ((US_WPSR_WPVSRC_Msk & ((value) << US_WPSR_WPVSRC_Pos)))\r
+/* -------- US_VERSION : (USART Offset: 0xFC) Version Register -------- */\r
+#define US_VERSION_VERSION_Pos      0\r
+#define US_VERSION_VERSION_Msk      (0xFFFu << US_VERSION_VERSION_Pos) /**< \brief (US_VERSION)  */\r
+#define US_VERSION_VERSION(value)   ((US_VERSION_VERSION_Msk & ((value) << US_VERSION_VERSION_Pos)))\r
+#define US_VERSION_MFN_Pos          16\r
+#define US_VERSION_MFN_Msk          (0xFu << US_VERSION_MFN_Pos) /**< \brief (US_VERSION)  */\r
+#define US_VERSION_MFN(value)       ((US_VERSION_MFN_Msk & ((value) << US_VERSION_MFN_Pos)))\r
+\r
+/*@}*/\r
+\r
+/* ============================================================================= */\r
+/**  SOFTWARE API DEFINITION FOR USBC */\r
+/* ============================================================================= */\r
+/** \addtogroup SAM4L_USBC USB 2.0 Interface */\r
+/*@{*/\r
+\r
+#define REV_USBC       0x310\r
+\r
+#ifndef __ASSEMBLY__\r
+/** \brief USBC hardware registers */\r
+typedef struct {\r
+  RwReg   USBC_UDCON;       /**< \brief (USBC Offset: 0x000) Device General Control Register */\r
+  RoReg   USBC_UDINT;       /**< \brief (USBC Offset: 0x004) Device Global Interupt Register */\r
+  WoReg   USBC_UDINTCLR;    /**< \brief (USBC Offset: 0x008) Device Global Interrupt Clear Register */\r
+  WoReg   USBC_UDINTSET;    /**< \brief (USBC Offset: 0x00C) Device Global Interrupt Set Regsiter */\r
+  RoReg   USBC_UDINTE;      /**< \brief (USBC Offset: 0x010) Device Global Interrupt Enable Register */\r
+  WoReg   USBC_UDINTECLR;   /**< \brief (USBC Offset: 0x014) Device Global Interrupt Enable Clear Register */\r
+  WoReg   USBC_UDINTESET;   /**< \brief (USBC Offset: 0x018) Device Global Interrupt Enable Set Register */\r
+  RwReg   USBC_UERST;       /**< \brief (USBC Offset: 0x01C) Endpoint Enable/Reset Register */\r
+  RoReg   USBC_UDFNUM;      /**< \brief (USBC Offset: 0x020) Device Frame Number Register */\r
+  RoReg   Reserved1[55];\r
+  RwReg   USBC_UECFG0;      /**< \brief (USBC Offset: 0x100) Endpoint Configuration Register */\r
+  RwReg   USBC_UECFG1;      /**< \brief (USBC Offset: 0x104) Endpoint Configuration Register */\r
+  RwReg   USBC_UECFG2;      /**< \brief (USBC Offset: 0x108) Endpoint Configuration Register */\r
+  RwReg   USBC_UECFG3;      /**< \brief (USBC Offset: 0x10C) Endpoint Configuration Register */\r
+  RwReg   USBC_UECFG4;      /**< \brief (USBC Offset: 0x110) Endpoint Configuration Register */\r
+  RwReg   USBC_UECFG5;      /**< \brief (USBC Offset: 0x114) Endpoint Configuration Register */\r
+  RwReg   USBC_UECFG6;      /**< \brief (USBC Offset: 0x118) Endpoint Configuration Register */\r
+  RwReg   USBC_UECFG7;      /**< \brief (USBC Offset: 0x11C) Endpoint Configuration Register */\r
+  RoReg   Reserved2[4];\r
+  RoReg   USBC_UESTA0;      /**< \brief (USBC Offset: 0x130) Endpoint Status Register */\r
+  RoReg   USBC_UESTA1;      /**< \brief (USBC Offset: 0x134) Endpoint Status Register */\r
+  RoReg   USBC_UESTA2;      /**< \brief (USBC Offset: 0x138) Endpoint Status Register */\r
+  RoReg   USBC_UESTA3;      /**< \brief (USBC Offset: 0x13C) Endpoint Status Register */\r
+  RoReg   USBC_UESTA4;      /**< \brief (USBC Offset: 0x140) Endpoint Status Register */\r
+  RoReg   USBC_UESTA5;      /**< \brief (USBC Offset: 0x144) Endpoint Status Register */\r
+  RoReg   USBC_UESTA6;      /**< \brief (USBC Offset: 0x148) Endpoint Status Register */\r
+  RoReg   USBC_UESTA7;      /**< \brief (USBC Offset: 0x14C) Endpoint Status Register */\r
+  RoReg   Reserved3[4];\r
+  WoReg   USBC_UESTA0CLR;   /**< \brief (USBC Offset: 0x160) Endpoint Status Clear Register */\r
+  WoReg   USBC_UESTA1CLR;   /**< \brief (USBC Offset: 0x164) Endpoint Status Clear Register */\r
+  WoReg   USBC_UESTA2CLR;   /**< \brief (USBC Offset: 0x168) Endpoint Status Clear Register */\r
+  WoReg   USBC_UESTA3CLR;   /**< \brief (USBC Offset: 0x16C) Endpoint Status Clear Register */\r
+  WoReg   USBC_UESTA4CLR;   /**< \brief (USBC Offset: 0x170) Endpoint Status Clear Register */\r
+  WoReg   USBC_UESTA5CLR;   /**< \brief (USBC Offset: 0x174) Endpoint Status Clear Register */\r
+  WoReg   USBC_UESTA6CLR;   /**< \brief (USBC Offset: 0x178) Endpoint Status Clear Register */\r
+  WoReg   USBC_UESTA7CLR;   /**< \brief (USBC Offset: 0x17C) Endpoint Status Clear Register */\r
+  RoReg   Reserved4[4];\r
+  WoReg   USBC_UESTA0SET;   /**< \brief (USBC Offset: 0x190) Endpoint Status Set Register */\r
+  WoReg   USBC_UESTA1SET;   /**< \brief (USBC Offset: 0x194) Endpoint Status Set Register */\r
+  WoReg   USBC_UESTA2SET;   /**< \brief (USBC Offset: 0x198) Endpoint Status Set Register */\r
+  WoReg   USBC_UESTA3SET;   /**< \brief (USBC Offset: 0x19C) Endpoint Status Set Register */\r
+  WoReg   USBC_UESTA4SET;   /**< \brief (USBC Offset: 0x1A0) Endpoint Status Set Register */\r
+  WoReg   USBC_UESTA5SET;   /**< \brief (USBC Offset: 0x1A4) Endpoint Status Set Register */\r
+  WoReg   USBC_UESTA6SET;   /**< \brief (USBC Offset: 0x1A8) Endpoint Status Set Register */\r
+  WoReg   USBC_UESTA7SET;   /**< \brief (USBC Offset: 0x1AC) Endpoint Status Set Register */\r
+  RoReg   Reserved5[4];\r
+  RoReg   USBC_UECON0;      /**< \brief (USBC Offset: 0x1C0) Endpoint Control Register */\r
+  RoReg   USBC_UECON1;      /**< \brief (USBC Offset: 0x1C4) Endpoint Control Register */\r
+  RoReg   USBC_UECON2;      /**< \brief (USBC Offset: 0x1C8) Endpoint Control Register */\r
+  RoReg   USBC_UECON3;      /**< \brief (USBC Offset: 0x1CC) Endpoint Control Register */\r
+  RoReg   USBC_UECON4;      /**< \brief (USBC Offset: 0x1D0) Endpoint Control Register */\r
+  RoReg   USBC_UECON5;      /**< \brief (USBC Offset: 0x1D4) Endpoint Control Register */\r
+  RoReg   USBC_UECON6;      /**< \brief (USBC Offset: 0x1D8) Endpoint Control Register */\r
+  RoReg   USBC_UECON7;      /**< \brief (USBC Offset: 0x1DC) Endpoint Control Register */\r
+  RoReg   Reserved6[4];\r
+  WoReg   USBC_UECON0SET;   /**< \brief (USBC Offset: 0x1F0) Endpoint Control Set Register */\r
+  WoReg   USBC_UECON1SET;   /**< \brief (USBC Offset: 0x1F4) Endpoint Control Set Register */\r
+  WoReg   USBC_UECON2SET;   /**< \brief (USBC Offset: 0x1F8) Endpoint Control Set Register */\r
+  WoReg   USBC_UECON3SET;   /**< \brief (USBC Offset: 0x1FC) Endpoint Control Set Register */\r
+  WoReg   USBC_UECON4SET;   /**< \brief (USBC Offset: 0x200) Endpoint Control Set Register */\r
+  WoReg   USBC_UECON5SET;   /**< \brief (USBC Offset: 0x204) Endpoint Control Set Register */\r
+  WoReg   USBC_UECON6SET;   /**< \brief (USBC Offset: 0x208) Endpoint Control Set Register */\r
+  WoReg   USBC_UECON7SET;   /**< \brief (USBC Offset: 0x20C) Endpoint Control Set Register */\r
+  RoReg   Reserved7[4];\r
+  WoReg   USBC_UECON0CLR;   /**< \brief (USBC Offset: 0x220) Endpoint Control Clear Register */\r
+  WoReg   USBC_UECON1CLR;   /**< \brief (USBC Offset: 0x224) TXINE Clear */\r
+  WoReg   USBC_UECON2CLR;   /**< \brief (USBC Offset: 0x228) TXINE Clear */\r
+  WoReg   USBC_UECON3CLR;   /**< \brief (USBC Offset: 0x22C) TXINE Clear */\r
+  WoReg   USBC_UECON4CLR;   /**< \brief (USBC Offset: 0x230) TXINE Clear */\r
+  WoReg   USBC_UECON5CLR;   /**< \brief (USBC Offset: 0x234) TXINE Clear */\r
+  WoReg   USBC_UECON6CLR;   /**< \brief (USBC Offset: 0x238) TXINE Clear */\r
+  WoReg   USBC_UECON7CLR;   /**< \brief (USBC Offset: 0x23C) TXINE Clear */\r
+  RoReg   Reserved8[112];\r
+  RwReg   USBC_UHCON;       /**< \brief (USBC Offset: 0x400) Host General Control Register */\r
+  RoReg   USBC_UHINT;       /**< \brief (USBC Offset: 0x404) Host Global Interrupt Register */\r
+  WoReg   USBC_UHINTCLR;    /**< \brief (USBC Offset: 0x408) Host Global Interrrupt Clear Register */\r
+  WoReg   USBC_UHINTSET;    /**< \brief (USBC Offset: 0x40C) Host Global Interrupt Set Register */\r
+  RoReg   USBC_UHINTE;      /**< \brief (USBC Offset: 0x410) Host Global Interrupt Enable Register */\r
+  WoReg   USBC_UHINTECLR;   /**< \brief (USBC Offset: 0x414) Host Global Interrupt Enable Clear Register */\r
+  WoReg   USBC_UHINTESET;   /**< \brief (USBC Offset: 0x418) Host Global Interrupt Enable Set Register */\r
+  RwReg   USBC_UPRST;       /**< \brief (USBC Offset: 0x41C) Pipe Reset Register */\r
+  RwReg   USBC_UHFNUM;      /**< \brief (USBC Offset: 0x420) Host Frame Number Register */\r
+  RwReg   USBC_UHSOFC;      /**< \brief (USBC Offset: 0x424) Host Start of Frame Control Register */\r
+  RoReg   Reserved9[54];\r
+  RwReg   USBC_UPCFG0;      /**< \brief (USBC Offset: 0x500) Pipe Configuration Register */\r
+  RwReg   USBC_UPCFG1;      /**< \brief (USBC Offset: 0x504) Pipe Configuration Register */\r
+  RwReg   USBC_UPCFG2;      /**< \brief (USBC Offset: 0x508) Pipe Configuration Register */\r
+  RwReg   USBC_UPCFG3;      /**< \brief (USBC Offset: 0x50C) Pipe Configuration Register */\r
+  RwReg   USBC_UPCFG4;      /**< \brief (USBC Offset: 0x510) Pipe Configuration Register */\r
+  RwReg   USBC_UPCFG5;      /**< \brief (USBC Offset: 0x514) Pipe Configuration Register */\r
+  RwReg   USBC_UPCFG6;      /**< \brief (USBC Offset: 0x518) Pipe Configuration Register */\r
+  RwReg   USBC_UPCFG7;      /**< \brief (USBC Offset: 0x51C) Pipe Configuration Register */\r
+  RoReg   Reserved10[4];\r
+  RoReg   USBC_UPSTA0;      /**< \brief (USBC Offset: 0x530) Pipe Status Register */\r
+  RoReg   USBC_UPSTA1;      /**< \brief (USBC Offset: 0x534) Pipe Status Register */\r
+  RoReg   USBC_UPSTA2;      /**< \brief (USBC Offset: 0x538) Pipe Status Register */\r
+  RoReg   USBC_UPSTA3;      /**< \brief (USBC Offset: 0x53C) Pipe Status Register */\r
+  RoReg   USBC_UPSTA4;      /**< \brief (USBC Offset: 0x540) Pipe Status Register */\r
+  RoReg   USBC_UPSTA5;      /**< \brief (USBC Offset: 0x544) Pipe Status Register */\r
+  RoReg   USBC_UPSTA6;      /**< \brief (USBC Offset: 0x548) Pipe Status Register */\r
+  RoReg   USBC_UPSTA7;      /**< \brief (USBC Offset: 0x54C) Pipe Status Register */\r
+  RoReg   Reserved11[4];\r
+  WoReg   USBC_UPSTA0CLR;   /**< \brief (USBC Offset: 0x560) Pipe Status Clear Register */\r
+  WoReg   USBC_UPSTA1CLR;   /**< \brief (USBC Offset: 0x564) Pipe Status Clear Register */\r
+  WoReg   USBC_UPSTA2CLR;   /**< \brief (USBC Offset: 0x568) Pipe Status Clear Register */\r
+  WoReg   USBC_UPSTA3CLR;   /**< \brief (USBC Offset: 0x56C) Pipe Status Clear Register */\r
+  WoReg   USBC_UPSTA4CLR;   /**< \brief (USBC Offset: 0x570) Pipe Status Clear Register */\r
+  WoReg   USBC_UPSTA5CLR;   /**< \brief (USBC Offset: 0x574) Pipe Status Clear Register */\r
+  WoReg   USBC_UPSTA6CLR;   /**< \brief (USBC Offset: 0x578) Pipe Status Clear Register */\r
+  WoReg   USBC_UPSTA7CLR;   /**< \brief (USBC Offset: 0x57C) Pipe Status Clear Register */\r
+  RoReg   Reserved12[4];\r
+  WoReg   USBC_UPSTA0SET;   /**< \brief (USBC Offset: 0x590) Pipe Status Set Register */\r
+  WoReg   USBC_UPSTA1SET;   /**< \brief (USBC Offset: 0x594) Pipe Status Set Register */\r
+  WoReg   USBC_UPSTA2SET;   /**< \brief (USBC Offset: 0x598) Pipe Status Set Register */\r
+  WoReg   USBC_UPSTA3SET;   /**< \brief (USBC Offset: 0x59C) Pipe Status Set Register */\r
+  WoReg   USBC_UPSTA4SET;   /**< \brief (USBC Offset: 0x5A0) Pipe Status Set Register */\r
+  WoReg   USBC_UPSTA5SET;   /**< \brief (USBC Offset: 0x5A4) Pipe Status Set Register */\r
+  WoReg   USBC_UPSTA6SET;   /**< \brief (USBC Offset: 0x5A8) Pipe Status Set Register */\r
+  WoReg   USBC_UPSTA7SET;   /**< \brief (USBC Offset: 0x5AC) Pipe Status Set Register */\r
+  RoReg   Reserved13[4];\r
+  RoReg   USBC_UPCON0;      /**< \brief (USBC Offset: 0x5C0) Pipe Control Register */\r
+  RoReg   USBC_UPCON1;      /**< \brief (USBC Offset: 0x5C4) Pipe Control Register */\r
+  RoReg   USBC_UPCON2;      /**< \brief (USBC Offset: 0x5C8) Pipe Control Register */\r
+  RoReg   USBC_UPCON3;      /**< \brief (USBC Offset: 0x5CC) Pipe Control Register */\r
+  RoReg   USBC_UPCON4;      /**< \brief (USBC Offset: 0x5D0) Pipe Control Register */\r
+  RoReg   USBC_UPCON5;      /**< \brief (USBC Offset: 0x5D4) Pipe Control Register */\r
+  RoReg   USBC_UPCON6;      /**< \brief (USBC Offset: 0x5D8) Pipe Control Register */\r
+  RoReg   USBC_UPCON7;      /**< \brief (USBC Offset: 0x5DC) Pipe Control Register */\r
+  RoReg   Reserved14[4];\r
+  WoReg   USBC_UPCON0SET;   /**< \brief (USBC Offset: 0x5F0) Pipe Control Set Register */\r
+  WoReg   USBC_UPCON1SET;   /**< \brief (USBC Offset: 0x5F4) Pipe Control Set Register */\r
+  WoReg   USBC_UPCON2SET;   /**< \brief (USBC Offset: 0x5F8) Pipe Control Set Register */\r
+  WoReg   USBC_UPCON3SET;   /**< \brief (USBC Offset: 0x5FC) Pipe Control Set Register */\r
+  WoReg   USBC_UPCON4SET;   /**< \brief (USBC Offset: 0x600) Pipe Control Set Register */\r
+  WoReg   USBC_UPCON5SET;   /**< \brief (USBC Offset: 0x604) Pipe Control Set Register */\r
+  WoReg   USBC_UPCON6SET;   /**< \brief (USBC Offset: 0x608) Pipe Control Set Register */\r
+  WoReg   USBC_UPCON7SET;   /**< \brief (USBC Offset: 0x60C) Pipe Control Set Register */\r
+  RoReg   Reserved15[4];\r
+  WoReg   USBC_UPCON0CLR;   /**< \brief (USBC Offset: 0x620) Pipe Control Clear Register */\r
+  WoReg   USBC_UPCON1CLR;   /**< \brief (USBC Offset: 0x624) Pipe Control Clear Register */\r
+  WoReg   USBC_UPCON2CLR;   /**< \brief (USBC Offset: 0x628) Pipe Control Clear Register */\r
+  WoReg   USBC_UPCON3CLR;   /**< \brief (USBC Offset: 0x62C) Pipe Control Clear Register */\r
+  WoReg   USBC_UPCON4CLR;   /**< \brief (USBC Offset: 0x630) Pipe Control Clear Register */\r
+  WoReg   USBC_UPCON5CLR;   /**< \brief (USBC Offset: 0x634) Pipe Control Clear Register */\r
+  WoReg   USBC_UPCON6CLR;   /**< \brief (USBC Offset: 0x638) Pipe Control Clear Register */\r
+  WoReg   USBC_UPCON7CLR;   /**< \brief (USBC Offset: 0x63C) Pipe Control Clear Register */\r
+  RoReg   Reserved16[4];\r
+  RwReg   USBC_UPINRQ0;     /**< \brief (USBC Offset: 0x650) Pipe In Request */\r
+  RwReg   USBC_UPINRQ1;     /**< \brief (USBC Offset: 0x654) Pipe In Request */\r
+  RwReg   USBC_UPINRQ2;     /**< \brief (USBC Offset: 0x658) Pipe In Request */\r
+  RwReg   USBC_UPINRQ3;     /**< \brief (USBC Offset: 0x65C) Pipe In Request */\r
+  RwReg   USBC_UPINRQ4;     /**< \brief (USBC Offset: 0x660) Pipe In Request */\r
+  RwReg   USBC_UPINRQ5;     /**< \brief (USBC Offset: 0x664) Pipe In Request */\r
+  RwReg   USBC_UPINRQ6;     /**< \brief (USBC Offset: 0x668) Pipe In Request */\r
+  RwReg   USBC_UPINRQ7;     /**< \brief (USBC Offset: 0x66C) Pipe In Request */\r
+  RoReg   Reserved17[100];\r
+  RwReg   USBC_USBCON;      /**< \brief (USBC Offset: 0x800) General Control Register */\r
+  RoReg   USBC_USBSTA;      /**< \brief (USBC Offset: 0x804) General Status Register */\r
+  WoReg   USBC_USBSTACLR;   /**< \brief (USBC Offset: 0x808) General Status Clear Register */\r
+  WoReg   USBC_USBSTASET;   /**< \brief (USBC Offset: 0x80C) General Status Set Register */\r
+  RoReg   Reserved18[2];\r
+  RoReg   USBC_UVERS;       /**< \brief (USBC Offset: 0x818) IP Version Register */\r
+  RoReg   USBC_UFEATURES;   /**< \brief (USBC Offset: 0x81C) IP Features Register */\r
+  RoReg   USBC_UADDRSIZE;   /**< \brief (USBC Offset: 0x820) IP PB address size Register */\r
+  RoReg   USBC_UNAME1;      /**< \brief (USBC Offset: 0x824) IP Name Part One: HUSB */\r
+  RoReg   USBC_UNAME2;      /**< \brief (USBC Offset: 0x828) IP Name Part Two: HOST */\r
+  RoReg   USBC_USBFSM;      /**< \brief (USBC Offset: 0x82C) USB internal finite state machine */\r
+  RwReg   USBC_UDESC;       /**< \brief (USBC Offset: 0x830) Endpoint descriptor table */\r
+} Usbc;\r
+#endif /* __ASSEMBLY__ */\r
+/* -------- USBC_UDCON : (USBC Offset: 0x000) Device General Control Register -------- */\r
+#define USBC_UDCON_UADD_Pos         0\r
+#define USBC_UDCON_UADD_Msk         (0x7Fu << USBC_UDCON_UADD_Pos) /**< \brief (USBC_UDCON) USB Address */\r
+#define USBC_UDCON_UADD(value)      ((USBC_UDCON_UADD_Msk & ((value) << USBC_UDCON_UADD_Pos)))\r
+#define USBC_UDCON_ADDEN            (0x1u <<  7) /**< \brief (USBC_UDCON) Address Enable */\r
+#define USBC_UDCON_DETACH           (0x1u <<  8) /**< \brief (USBC_UDCON) Detach */\r
+#define USBC_UDCON_RMWKUP           (0x1u <<  9) /**< \brief (USBC_UDCON) Remote Wake-Up */\r
+#define USBC_UDCON_SPDCONF_Pos      10\r
+#define USBC_UDCON_SPDCONF_Msk      (0x3u << USBC_UDCON_SPDCONF_Pos) /**< \brief (USBC_UDCON) Speed configuration */\r
+#define USBC_UDCON_SPDCONF(value)   ((USBC_UDCON_SPDCONF_Msk & ((value) << USBC_UDCON_SPDCONF_Pos)))\r
+#define USBC_UDCON_LS               (0x1u << 12) /**< \brief (USBC_UDCON) Low Speed Mode Force */\r
+#define USBC_UDCON_TSTJ             (0x1u << 13) /**< \brief (USBC_UDCON) Test mode J */\r
+#define USBC_UDCON_TSTK             (0x1u << 14) /**< \brief (USBC_UDCON) Test mode K */\r
+#define USBC_UDCON_TSTPCKT          (0x1u << 15) /**< \brief (USBC_UDCON) Test Packet mode */\r
+#define USBC_UDCON_OPMODE2          (0x1u << 16) /**< \brief (USBC_UDCON) Specific Operational mode */\r
+#define USBC_UDCON_GNAK             (0x1u << 17) /**< \brief (USBC_UDCON) Global NAK */\r
+/* -------- USBC_UDINT : (USBC Offset: 0x004) Device Global Interupt Register -------- */\r
+#define USBC_UDINT_SUSP             (0x1u <<  0) /**< \brief (USBC_UDINT) Suspend Interrupt */\r
+#define USBC_UDINT_MSOF             (0x1u <<  1) /**< \brief (USBC_UDINT) Micro Start of Frame Interrupt */\r
+#define USBC_UDINT_SOF              (0x1u <<  2) /**< \brief (USBC_UDINT) Start of Frame Interrupt */\r
+#define USBC_UDINT_EORST            (0x1u <<  3) /**< \brief (USBC_UDINT) End of Reset Interrupt */\r
+#define USBC_UDINT_WAKEUP           (0x1u <<  4) /**< \brief (USBC_UDINT) Wake-Up Interrupt */\r
+#define USBC_UDINT_EORSM            (0x1u <<  5) /**< \brief (USBC_UDINT) End Of Resume Interrupt */\r
+#define USBC_UDINT_UPRSM            (0x1u <<  6) /**< \brief (USBC_UDINT) Upstream Resume Interrupt */\r
+#define USBC_UDINT_EP0INT           (0x1u << 12) /**< \brief (USBC_UDINT) Endpoint 0 Interrupt */\r
+#define USBC_UDINT_EP1INT           (0x1u << 13) /**< \brief (USBC_UDINT) Endpoint 1 Interrupt */\r
+#define USBC_UDINT_EP2INT           (0x1u << 14) /**< \brief (USBC_UDINT) Endpoint 2 Interrupt */\r
+#define USBC_UDINT_EP3INT           (0x1u << 15) /**< \brief (USBC_UDINT) Endpoint 3 Interrupt */\r
+#define USBC_UDINT_EP4INT           (0x1u << 16) /**< \brief (USBC_UDINT) Endpoint 4 Interrupt */\r
+#define USBC_UDINT_EP5INT           (0x1u << 17) /**< \brief (USBC_UDINT) Endpoint 5 Interrupt */\r
+#define USBC_UDINT_EP6INT           (0x1u << 18) /**< \brief (USBC_UDINT) Endpoint 6 Interrupt */\r
+#define USBC_UDINT_EP7INT           (0x1u << 19) /**< \brief (USBC_UDINT) Endpoint 7 Interrupt */\r
+/* -------- USBC_UDINTCLR : (USBC Offset: 0x008) Device Global Interrupt Clear Register -------- */\r
+#define USBC_UDINTCLR_SUSPC         (0x1u <<  0) /**< \brief (USBC_UDINTCLR) SUSP Interrupt Clear */\r
+#define USBC_UDINTCLR_MSOFC         (0x1u <<  1) /**< \brief (USBC_UDINTCLR) MSOF Interrupt Clear */\r
+#define USBC_UDINTCLR_SOFC          (0x1u <<  2) /**< \brief (USBC_UDINTCLR) SOF Interrupt Clear */\r
+#define USBC_UDINTCLR_EORSTC        (0x1u <<  3) /**< \brief (USBC_UDINTCLR) EORST Interrupt Clear */\r
+#define USBC_UDINTCLR_WAKEUPC       (0x1u <<  4) /**< \brief (USBC_UDINTCLR) WAKEUP Interrupt Clear */\r
+#define USBC_UDINTCLR_EORSMC        (0x1u <<  5) /**< \brief (USBC_UDINTCLR) EORSM Interrupt Clear */\r
+#define USBC_UDINTCLR_UPRSMC        (0x1u <<  6) /**< \brief (USBC_UDINTCLR) UPRSM Interrupt Clear */\r
+/* -------- USBC_UDINTSET : (USBC Offset: 0x00C) Device Global Interrupt Set Regsiter -------- */\r
+#define USBC_UDINTSET_SUSPS         (0x1u <<  0) /**< \brief (USBC_UDINTSET) SUSP Interrupt Set */\r
+#define USBC_UDINTSET_MSOFS         (0x1u <<  1) /**< \brief (USBC_UDINTSET) MSOF Interrupt Set */\r
+#define USBC_UDINTSET_SOFS          (0x1u <<  2) /**< \brief (USBC_UDINTSET) SOF Interrupt Set */\r
+#define USBC_UDINTSET_EORSTS        (0x1u <<  3) /**< \brief (USBC_UDINTSET) EORST Interrupt Set */\r
+#define USBC_UDINTSET_WAKEUPS       (0x1u <<  4) /**< \brief (USBC_UDINTSET) WAKEUP Interrupt Set */\r
+#define USBC_UDINTSET_EORSMS        (0x1u <<  5) /**< \brief (USBC_UDINTSET) EORSM Interrupt Set */\r
+#define USBC_UDINTSET_UPRSMS        (0x1u <<  6) /**< \brief (USBC_UDINTSET) UPRSM Interrupt Set */\r
+/* -------- USBC_UDINTE : (USBC Offset: 0x010) Device Global Interrupt Enable Register -------- */\r
+#define USBC_UDINTE_SUSPE           (0x1u <<  0) /**< \brief (USBC_UDINTE) SUSP Interrupt Enable */\r
+#define USBC_UDINTE_MSOFE           (0x1u <<  1) /**< \brief (USBC_UDINTE) MSOF Interrupt Enable */\r
+#define USBC_UDINTE_SOFE            (0x1u <<  2) /**< \brief (USBC_UDINTE) SOF Interrupt Enable */\r
+#define USBC_UDINTE_EORSTE          (0x1u <<  3) /**< \brief (USBC_UDINTE) EORST Interrupt Enable */\r
+#define USBC_UDINTE_WAKEUPE         (0x1u <<  4) /**< \brief (USBC_UDINTE) WAKEUP Interrupt Enable */\r
+#define USBC_UDINTE_EORSME          (0x1u <<  5) /**< \brief (USBC_UDINTE) EORSM Interrupt Enable */\r
+#define USBC_UDINTE_UPRSME          (0x1u <<  6) /**< \brief (USBC_UDINTE) UPRSM Interrupt Enable */\r
+#define USBC_UDINTE_EP0INTE         (0x1u << 12) /**< \brief (USBC_UDINTE) EP0INT Interrupt Enable */\r
+#define USBC_UDINTE_EP1INTE         (0x1u << 13) /**< \brief (USBC_UDINTE) EP1INT Interrupt Enable */\r
+#define USBC_UDINTE_EP2INTE         (0x1u << 14) /**< \brief (USBC_UDINTE) EP2INT Interrupt Enable */\r
+#define USBC_UDINTE_EP3INTE         (0x1u << 15) /**< \brief (USBC_UDINTE) EP3INT Interrupt Enable */\r
+#define USBC_UDINTE_EP4INTE         (0x1u << 16) /**< \brief (USBC_UDINTE) EP4INT Interrupt Enable */\r
+#define USBC_UDINTE_EP5INTE         (0x1u << 17) /**< \brief (USBC_UDINTE) EP5INT Interrupt Enable */\r
+#define USBC_UDINTE_EP6INTE         (0x1u << 18) /**< \brief (USBC_UDINTE) EP6INT Interrupt Enable */\r
+#define USBC_UDINTE_EP7INTE         (0x1u << 19) /**< \brief (USBC_UDINTE) EP7INT Interrupt Enable */\r
+/* -------- USBC_UDINTECLR : (USBC Offset: 0x014) Device Global Interrupt Enable Clear Register -------- */\r
+#define USBC_UDINTECLR_SUSPEC       (0x1u <<  0) /**< \brief (USBC_UDINTECLR) SUSP Interrupt Enable Clear */\r
+#define USBC_UDINTECLR_MSOFEC       (0x1u <<  1) /**< \brief (USBC_UDINTECLR) MSOF Interrupt Enable Clear */\r
+#define USBC_UDINTECLR_SOFEC        (0x1u <<  2) /**< \brief (USBC_UDINTECLR) SOF Interrupt Enable Clear */\r
+#define USBC_UDINTECLR_EORSTEC      (0x1u <<  3) /**< \brief (USBC_UDINTECLR) EORST Interrupt Enable Clear */\r
+#define USBC_UDINTECLR_WAKEUPEC     (0x1u <<  4) /**< \brief (USBC_UDINTECLR) WAKEUP Interrupt Enable Clear */\r
+#define USBC_UDINTECLR_EORSMEC      (0x1u <<  5) /**< \brief (USBC_UDINTECLR) EORSM Interrupt Enable Clear */\r
+#define USBC_UDINTECLR_UPRSMEC      (0x1u <<  6) /**< \brief (USBC_UDINTECLR) UPRSM Interrupt Enable Clear */\r
+#define USBC_UDINTECLR_EP0INTEC     (0x1u << 12) /**< \brief (USBC_UDINTECLR) EP0INT Interrupt Enable Clear */\r
+#define USBC_UDINTECLR_EP1INTEC     (0x1u << 13) /**< \brief (USBC_UDINTECLR) EP1INT Interrupt Enable Clear */\r
+#define USBC_UDINTECLR_EP2INTEC     (0x1u << 14) /**< \brief (USBC_UDINTECLR) EP2INT Interrupt Enable Clear */\r
+#define USBC_UDINTECLR_EP3INTEC     (0x1u << 15) /**< \brief (USBC_UDINTECLR) EP3INT Interrupt Enable Clear */\r
+#define USBC_UDINTECLR_EP4INTEC     (0x1u << 16) /**< \brief (USBC_UDINTECLR) EP4INT Interrupt Enable Clear */\r
+#define USBC_UDINTECLR_EP5INTEC     (0x1u << 17) /**< \brief (USBC_UDINTECLR) EP5INT Interrupt Enable Clear */\r
+#define USBC_UDINTECLR_EP6INTEC     (0x1u << 18) /**< \brief (USBC_UDINTECLR) EP6INT Interrupt Enable Clear */\r
+#define USBC_UDINTECLR_EP7INTEC     (0x1u << 19) /**< \brief (USBC_UDINTECLR) EP7INT Interrupt Enable Clear */\r
+/* -------- USBC_UDINTESET : (USBC Offset: 0x018) Device Global Interrupt Enable Set Register -------- */\r
+#define USBC_UDINTESET_SUSPES       (0x1u <<  0) /**< \brief (USBC_UDINTESET) SUSP Interrupt Enable Set */\r
+#define USBC_UDINTESET_MSOFES       (0x1u <<  1) /**< \brief (USBC_UDINTESET) MSOF Interrupt Enable Set */\r
+#define USBC_UDINTESET_SOFES        (0x1u <<  2) /**< \brief (USBC_UDINTESET) SOF Interrupt Enable Set */\r
+#define USBC_UDINTESET_EORSTES      (0x1u <<  3) /**< \brief (USBC_UDINTESET) EORST Interrupt Enable Set */\r
+#define USBC_UDINTESET_WAKEUPES     (0x1u <<  4) /**< \brief (USBC_UDINTESET) WAKEUP Interrupt Enable Set */\r
+#define USBC_UDINTESET_EORSMES      (0x1u <<  5) /**< \brief (USBC_UDINTESET) EORSM Interrupt Enable Set */\r
+#define USBC_UDINTESET_UPRSMES      (0x1u <<  6) /**< \brief (USBC_UDINTESET) UPRSM Interrupt Enable Set */\r
+#define USBC_UDINTESET_EP0INTES     (0x1u << 12) /**< \brief (USBC_UDINTESET) EP0INT Interrupt Enable Set */\r
+#define USBC_UDINTESET_EP1INTES     (0x1u << 13) /**< \brief (USBC_UDINTESET) EP1INT Interrupt Enable Set */\r
+#define USBC_UDINTESET_EP2INTES     (0x1u << 14) /**< \brief (USBC_UDINTESET) EP2INT Interrupt Enable Set */\r
+#define USBC_UDINTESET_EP3INTES     (0x1u << 15) /**< \brief (USBC_UDINTESET) EP3INT Interrupt Enable Set */\r
+#define USBC_UDINTESET_EP4INTES     (0x1u << 16) /**< \brief (USBC_UDINTESET) EP4INT Interrupt Enable Set */\r
+#define USBC_UDINTESET_EP5INTES     (0x1u << 17) /**< \brief (USBC_UDINTESET) EP5INT Interrupt Enable Set */\r
+#define USBC_UDINTESET_EP6INTES     (0x1u << 18) /**< \brief (USBC_UDINTESET) EP6INT Interrupt Enable Set */\r
+#define USBC_UDINTESET_EP7INTES     (0x1u << 19) /**< \brief (USBC_UDINTESET) EP7INT Interrupt Enable Set */\r
+/* -------- USBC_UERST : (USBC Offset: 0x01C) Endpoint Enable/Reset Register -------- */\r
+#define USBC_UERST_EPEN0            (0x1u <<  0) /**< \brief (USBC_UERST) Endpoint0 Enable */\r
+#define USBC_UERST_EPEN1            (0x1u <<  1) /**< \brief (USBC_UERST) Endpoint1 Enable */\r
+#define USBC_UERST_EPEN2            (0x1u <<  2) /**< \brief (USBC_UERST) Endpoint2 Enable */\r
+#define USBC_UERST_EPEN3            (0x1u <<  3) /**< \brief (USBC_UERST) Endpoint3 Enable */\r
+#define USBC_UERST_EPEN4            (0x1u <<  4) /**< \brief (USBC_UERST) Endpoint4 Enable */\r
+#define USBC_UERST_EPEN5            (0x1u <<  5) /**< \brief (USBC_UERST) Endpoint5 Enable */\r
+#define USBC_UERST_EPEN6            (0x1u <<  6) /**< \brief (USBC_UERST) Endpoint6 Enable */\r
+#define USBC_UERST_EPEN7            (0x1u <<  7) /**< \brief (USBC_UERST) Endpoint7 Enable */\r
+/* -------- USBC_UDFNUM : (USBC Offset: 0x020) Device Frame Number Register -------- */\r
+#define USBC_UDFNUM_MFNUM_Pos       0\r
+#define USBC_UDFNUM_MFNUM_Msk       (0x7u << USBC_UDFNUM_MFNUM_Pos) /**< \brief (USBC_UDFNUM) Micro Frame Number */\r
+#define USBC_UDFNUM_MFNUM(value)    ((USBC_UDFNUM_MFNUM_Msk & ((value) << USBC_UDFNUM_MFNUM_Pos)))\r
+#define USBC_UDFNUM_FNUM_Pos        3\r
+#define USBC_UDFNUM_FNUM_Msk        (0x7FFu << USBC_UDFNUM_FNUM_Pos) /**< \brief (USBC_UDFNUM) Frame Number */\r
+#define USBC_UDFNUM_FNUM(value)     ((USBC_UDFNUM_FNUM_Msk & ((value) << USBC_UDFNUM_FNUM_Pos)))\r
+#define USBC_UDFNUM_FNCERR          (0x1u << 15) /**< \brief (USBC_UDFNUM) Frame Number CRC Error */\r
+/* -------- USBC_UECFG0 : (USBC Offset: 0x100) Endpoint Configuration Register -------- */\r
+#define USBC_UECFG0_EPBK            (0x1u <<  2) /**< \brief (USBC_UECFG0) Endpoint Bank */\r
+#define   USBC_UECFG0_EPBK_SINGLE   (0x0u <<  2) /**< \brief (USBC_UECFG0)  */\r
+#define   USBC_UECFG0_EPBK_DOUBLE   (0x1u <<  2) /**< \brief (USBC_UECFG0)  */\r
+#define USBC_UECFG0_EPSIZE_Pos      4\r
+#define USBC_UECFG0_EPSIZE_Msk      (0x7u << USBC_UECFG0_EPSIZE_Pos) /**< \brief (USBC_UECFG0) Endpoint Size */\r
+#define USBC_UECFG0_EPSIZE(value)   ((USBC_UECFG0_EPSIZE_Msk & ((value) << USBC_UECFG0_EPSIZE_Pos)))\r
+#define   USBC_UECFG0_EPSIZE_8      (0x0u <<  4) /**< \brief (USBC_UECFG0)  */\r
+#define   USBC_UECFG0_EPSIZE_16     (0x1u <<  4) /**< \brief (USBC_UECFG0)  */\r
+#define   USBC_UECFG0_EPSIZE_32     (0x2u <<  4) /**< \brief (USBC_UECFG0)  */\r
+#define   USBC_UECFG0_EPSIZE_64     (0x3u <<  4) /**< \brief (USBC_UECFG0)  */\r
+#define   USBC_UECFG0_EPSIZE_128    (0x4u <<  4) /**< \brief (USBC_UECFG0)  */\r
+#define   USBC_UECFG0_EPSIZE_256    (0x5u <<  4) /**< \brief (USBC_UECFG0)  */\r
+#define   USBC_UECFG0_EPSIZE_512    (0x6u <<  4) /**< \brief (USBC_UECFG0)  */\r
+#define   USBC_UECFG0_EPSIZE_1024   (0x7u <<  4) /**< \brief (USBC_UECFG0)  */\r
+#define USBC_UECFG0_EPDIR           (0x1u <<  8) /**< \brief (USBC_UECFG0) Endpoint Direction */\r
+#define   USBC_UECFG0_EPDIR_OUT     (0x0u <<  8) /**< \brief (USBC_UECFG0)  */\r
+#define   USBC_UECFG0_EPDIR_IN      (0x1u <<  8) /**< \brief (USBC_UECFG0)  */\r
+#define USBC_UECFG0_EPTYPE_Pos      11\r
+#define USBC_UECFG0_EPTYPE_Msk      (0x3u << USBC_UECFG0_EPTYPE_Pos) /**< \brief (USBC_UECFG0) Endpoint Type */\r
+#define USBC_UECFG0_EPTYPE(value)   ((USBC_UECFG0_EPTYPE_Msk & ((value) << USBC_UECFG0_EPTYPE_Pos)))\r
+#define   USBC_UECFG0_EPTYPE_CONTROL (0x0u << 11) /**< \brief (USBC_UECFG0)  */\r
+#define   USBC_UECFG0_EPTYPE_ISOCHRONOUS (0x1u << 11) /**< \brief (USBC_UECFG0)  */\r
+#define   USBC_UECFG0_EPTYPE_BULK   (0x2u << 11) /**< \brief (USBC_UECFG0)  */\r
+#define   USBC_UECFG0_EPTYPE_INTERRUPT (0x3u << 11) /**< \brief (USBC_UECFG0)  */\r
+#define USBC_UECFG0_REPNB_Pos       16\r
+#define USBC_UECFG0_REPNB_Msk       (0xFu << USBC_UECFG0_REPNB_Pos) /**< \brief (USBC_UECFG0) Redirected Endpoint Number */\r
+#define USBC_UECFG0_REPNB(value)    ((USBC_UECFG0_REPNB_Msk & ((value) << USBC_UECFG0_REPNB_Pos)))\r
+/* -------- USBC_UECFG1 : (USBC Offset: 0x104) Endpoint Configuration Register -------- */\r
+#define USBC_UECFG1_EPBK            (0x1u <<  2) /**< \brief (USBC_UECFG1) Endpoint Bank */\r
+#define   USBC_UECFG1_EPBK_SINGLE   (0x0u <<  2) /**< \brief (USBC_UECFG1)  */\r
+#define   USBC_UECFG1_EPBK_DOUBLE   (0x1u <<  2) /**< \brief (USBC_UECFG1)  */\r
+#define USBC_UECFG1_EPSIZE_Pos      4\r
+#define USBC_UECFG1_EPSIZE_Msk      (0x7u << USBC_UECFG1_EPSIZE_Pos) /**< \brief (USBC_UECFG1) Endpoint Size */\r
+#define USBC_UECFG1_EPSIZE(value)   ((USBC_UECFG1_EPSIZE_Msk & ((value) << USBC_UECFG1_EPSIZE_Pos)))\r
+#define   USBC_UECFG1_EPSIZE_8      (0x0u <<  4) /**< \brief (USBC_UECFG1)  */\r
+#define   USBC_UECFG1_EPSIZE_16     (0x1u <<  4) /**< \brief (USBC_UECFG1)  */\r
+#define   USBC_UECFG1_EPSIZE_32     (0x2u <<  4) /**< \brief (USBC_UECFG1)  */\r
+#define   USBC_UECFG1_EPSIZE_64     (0x3u <<  4) /**< \brief (USBC_UECFG1)  */\r
+#define   USBC_UECFG1_EPSIZE_128    (0x4u <<  4) /**< \brief (USBC_UECFG1)  */\r
+#define   USBC_UECFG1_EPSIZE_256    (0x5u <<  4) /**< \brief (USBC_UECFG1)  */\r
+#define   USBC_UECFG1_EPSIZE_512    (0x6u <<  4) /**< \brief (USBC_UECFG1)  */\r
+#define   USBC_UECFG1_EPSIZE_1024   (0x7u <<  4) /**< \brief (USBC_UECFG1)  */\r
+#define USBC_UECFG1_EPDIR           (0x1u <<  8) /**< \brief (USBC_UECFG1) Endpoint Direction */\r
+#define   USBC_UECFG1_EPDIR_OUT     (0x0u <<  8) /**< \brief (USBC_UECFG1)  */\r
+#define   USBC_UECFG1_EPDIR_IN      (0x1u <<  8) /**< \brief (USBC_UECFG1)  */\r
+#define USBC_UECFG1_EPTYPE_Pos      11\r
+#define USBC_UECFG1_EPTYPE_Msk      (0x3u << USBC_UECFG1_EPTYPE_Pos) /**< \brief (USBC_UECFG1) Endpoint Type */\r
+#define USBC_UECFG1_EPTYPE(value)   ((USBC_UECFG1_EPTYPE_Msk & ((value) << USBC_UECFG1_EPTYPE_Pos)))\r
+#define   USBC_UECFG1_EPTYPE_CONTROL (0x0u << 11) /**< \brief (USBC_UECFG1)  */\r
+#define   USBC_UECFG1_EPTYPE_ISOCHRONOUS (0x1u << 11) /**< \brief (USBC_UECFG1)  */\r
+#define   USBC_UECFG1_EPTYPE_BULK   (0x2u << 11) /**< \brief (USBC_UECFG1)  */\r
+#define   USBC_UECFG1_EPTYPE_INTERRUPT (0x3u << 11) /**< \brief (USBC_UECFG1)  */\r
+#define USBC_UECFG1_REPNB_Pos       16\r
+#define USBC_UECFG1_REPNB_Msk       (0xFu << USBC_UECFG1_REPNB_Pos) /**< \brief (USBC_UECFG1) Redirected Endpoint Number */\r
+#define USBC_UECFG1_REPNB(value)    ((USBC_UECFG1_REPNB_Msk & ((value) << USBC_UECFG1_REPNB_Pos)))\r
+/* -------- USBC_UECFG2 : (USBC Offset: 0x108) Endpoint Configuration Register -------- */\r
+#define USBC_UECFG2_EPBK            (0x1u <<  2) /**< \brief (USBC_UECFG2) Endpoint Bank */\r
+#define   USBC_UECFG2_EPBK_SINGLE   (0x0u <<  2) /**< \brief (USBC_UECFG2)  */\r
+#define   USBC_UECFG2_EPBK_DOUBLE   (0x1u <<  2) /**< \brief (USBC_UECFG2)  */\r
+#define USBC_UECFG2_EPSIZE_Pos      4\r
+#define USBC_UECFG2_EPSIZE_Msk      (0x7u << USBC_UECFG2_EPSIZE_Pos) /**< \brief (USBC_UECFG2) Endpoint Size */\r
+#define USBC_UECFG2_EPSIZE(value)   ((USBC_UECFG2_EPSIZE_Msk & ((value) << USBC_UECFG2_EPSIZE_Pos)))\r
+#define   USBC_UECFG2_EPSIZE_8      (0x0u <<  4) /**< \brief (USBC_UECFG2)  */\r
+#define   USBC_UECFG2_EPSIZE_16     (0x1u <<  4) /**< \brief (USBC_UECFG2)  */\r
+#define   USBC_UECFG2_EPSIZE_32     (0x2u <<  4) /**< \brief (USBC_UECFG2)  */\r
+#define   USBC_UECFG2_EPSIZE_64     (0x3u <<  4) /**< \brief (USBC_UECFG2)  */\r
+#define   USBC_UECFG2_EPSIZE_128    (0x4u <<  4) /**< \brief (USBC_UECFG2)  */\r
+#define   USBC_UECFG2_EPSIZE_256    (0x5u <<  4) /**< \brief (USBC_UECFG2)  */\r
+#define   USBC_UECFG2_EPSIZE_512    (0x6u <<  4) /**< \brief (USBC_UECFG2)  */\r
+#define   USBC_UECFG2_EPSIZE_1024   (0x7u <<  4) /**< \brief (USBC_UECFG2)  */\r
+#define USBC_UECFG2_EPDIR           (0x1u <<  8) /**< \brief (USBC_UECFG2) Endpoint Direction */\r
+#define   USBC_UECFG2_EPDIR_OUT     (0x0u <<  8) /**< \brief (USBC_UECFG2)  */\r
+#define   USBC_UECFG2_EPDIR_IN      (0x1u <<  8) /**< \brief (USBC_UECFG2)  */\r
+#define USBC_UECFG2_EPTYPE_Pos      11\r
+#define USBC_UECFG2_EPTYPE_Msk      (0x3u << USBC_UECFG2_EPTYPE_Pos) /**< \brief (USBC_UECFG2) Endpoint Type */\r
+#define USBC_UECFG2_EPTYPE(value)   ((USBC_UECFG2_EPTYPE_Msk & ((value) << USBC_UECFG2_EPTYPE_Pos)))\r
+#define   USBC_UECFG2_EPTYPE_CONTROL (0x0u << 11) /**< \brief (USBC_UECFG2)  */\r
+#define   USBC_UECFG2_EPTYPE_ISOCHRONOUS (0x1u << 11) /**< \brief (USBC_UECFG2)  */\r
+#define   USBC_UECFG2_EPTYPE_BULK   (0x2u << 11) /**< \brief (USBC_UECFG2)  */\r
+#define   USBC_UECFG2_EPTYPE_INTERRUPT (0x3u << 11) /**< \brief (USBC_UECFG2)  */\r
+#define USBC_UECFG2_REPNB_Pos       16\r
+#define USBC_UECFG2_REPNB_Msk       (0xFu << USBC_UECFG2_REPNB_Pos) /**< \brief (USBC_UECFG2) Redirected Endpoint Number */\r
+#define USBC_UECFG2_REPNB(value)    ((USBC_UECFG2_REPNB_Msk & ((value) << USBC_UECFG2_REPNB_Pos)))\r
+/* -------- USBC_UECFG3 : (USBC Offset: 0x10C) Endpoint Configuration Register -------- */\r
+#define USBC_UECFG3_EPBK            (0x1u <<  2) /**< \brief (USBC_UECFG3) Endpoint Bank */\r
+#define   USBC_UECFG3_EPBK_SINGLE   (0x0u <<  2) /**< \brief (USBC_UECFG3)  */\r
+#define   USBC_UECFG3_EPBK_DOUBLE   (0x1u <<  2) /**< \brief (USBC_UECFG3)  */\r
+#define USBC_UECFG3_EPSIZE_Pos      4\r
+#define USBC_UECFG3_EPSIZE_Msk      (0x7u << USBC_UECFG3_EPSIZE_Pos) /**< \brief (USBC_UECFG3) Endpoint Size */\r
+#define USBC_UECFG3_EPSIZE(value)   ((USBC_UECFG3_EPSIZE_Msk & ((value) << USBC_UECFG3_EPSIZE_Pos)))\r
+#define   USBC_UECFG3_EPSIZE_8      (0x0u <<  4) /**< \brief (USBC_UECFG3)  */\r
+#define   USBC_UECFG3_EPSIZE_16     (0x1u <<  4) /**< \brief (USBC_UECFG3)  */\r
+#define   USBC_UECFG3_EPSIZE_32     (0x2u <<  4) /**< \brief (USBC_UECFG3)  */\r
+#define   USBC_UECFG3_EPSIZE_64     (0x3u <<  4) /**< \brief (USBC_UECFG3)  */\r
+#define   USBC_UECFG3_EPSIZE_128    (0x4u <<  4) /**< \brief (USBC_UECFG3)  */\r
+#define   USBC_UECFG3_EPSIZE_256    (0x5u <<  4) /**< \brief (USBC_UECFG3)  */\r
+#define   USBC_UECFG3_EPSIZE_512    (0x6u <<  4) /**< \brief (USBC_UECFG3)  */\r
+#define   USBC_UECFG3_EPSIZE_1024   (0x7u <<  4) /**< \brief (USBC_UECFG3)  */\r
+#define USBC_UECFG3_EPDIR           (0x1u <<  8) /**< \brief (USBC_UECFG3) Endpoint Direction */\r
+#define   USBC_UECFG3_EPDIR_OUT     (0x0u <<  8) /**< \brief (USBC_UECFG3)  */\r
+#define   USBC_UECFG3_EPDIR_IN      (0x1u <<  8) /**< \brief (USBC_UECFG3)  */\r
+#define USBC_UECFG3_EPTYPE_Pos      11\r
+#define USBC_UECFG3_EPTYPE_Msk      (0x3u << USBC_UECFG3_EPTYPE_Pos) /**< \brief (USBC_UECFG3) Endpoint Type */\r
+#define USBC_UECFG3_EPTYPE(value)   ((USBC_UECFG3_EPTYPE_Msk & ((value) << USBC_UECFG3_EPTYPE_Pos)))\r
+#define   USBC_UECFG3_EPTYPE_CONTROL (0x0u << 11) /**< \brief (USBC_UECFG3)  */\r
+#define   USBC_UECFG3_EPTYPE_ISOCHRONOUS (0x1u << 11) /**< \brief (USBC_UECFG3)  */\r
+#define   USBC_UECFG3_EPTYPE_BULK   (0x2u << 11) /**< \brief (USBC_UECFG3)  */\r
+#define   USBC_UECFG3_EPTYPE_INTERRUPT (0x3u << 11) /**< \brief (USBC_UECFG3)  */\r
+#define USBC_UECFG3_REPNB_Pos       16\r
+#define USBC_UECFG3_REPNB_Msk       (0xFu << USBC_UECFG3_REPNB_Pos) /**< \brief (USBC_UECFG3) Redirected Endpoint Number */\r
+#define USBC_UECFG3_REPNB(value)    ((USBC_UECFG3_REPNB_Msk & ((value) << USBC_UECFG3_REPNB_Pos)))\r
+/* -------- USBC_UECFG4 : (USBC Offset: 0x110) Endpoint Configuration Register -------- */\r
+#define USBC_UECFG4_EPBK            (0x1u <<  2) /**< \brief (USBC_UECFG4) Endpoint Bank */\r
+#define   USBC_UECFG4_EPBK_SINGLE   (0x0u <<  2) /**< \brief (USBC_UECFG4)  */\r
+#define   USBC_UECFG4_EPBK_DOUBLE   (0x1u <<  2) /**< \brief (USBC_UECFG4)  */\r
+#define USBC_UECFG4_EPSIZE_Pos      4\r
+#define USBC_UECFG4_EPSIZE_Msk      (0x7u << USBC_UECFG4_EPSIZE_Pos) /**< \brief (USBC_UECFG4) Endpoint Size */\r
+#define USBC_UECFG4_EPSIZE(value)   ((USBC_UECFG4_EPSIZE_Msk & ((value) << USBC_UECFG4_EPSIZE_Pos)))\r
+#define   USBC_UECFG4_EPSIZE_8      (0x0u <<  4) /**< \brief (USBC_UECFG4)  */\r
+#define   USBC_UECFG4_EPSIZE_16     (0x1u <<  4) /**< \brief (USBC_UECFG4)  */\r
+#define   USBC_UECFG4_EPSIZE_32     (0x2u <<  4) /**< \brief (USBC_UECFG4)  */\r
+#define   USBC_UECFG4_EPSIZE_64     (0x3u <<  4) /**< \brief (USBC_UECFG4)  */\r
+#define   USBC_UECFG4_EPSIZE_128    (0x4u <<  4) /**< \brief (USBC_UECFG4)  */\r
+#define   USBC_UECFG4_EPSIZE_256    (0x5u <<  4) /**< \brief (USBC_UECFG4)  */\r
+#define   USBC_UECFG4_EPSIZE_512    (0x6u <<  4) /**< \brief (USBC_UECFG4)  */\r
+#define   USBC_UECFG4_EPSIZE_1024   (0x7u <<  4) /**< \brief (USBC_UECFG4)  */\r
+#define USBC_UECFG4_EPDIR           (0x1u <<  8) /**< \brief (USBC_UECFG4) Endpoint Direction */\r
+#define   USBC_UECFG4_EPDIR_OUT     (0x0u <<  8) /**< \brief (USBC_UECFG4)  */\r
+#define   USBC_UECFG4_EPDIR_IN      (0x1u <<  8) /**< \brief (USBC_UECFG4)  */\r
+#define USBC_UECFG4_EPTYPE_Pos      11\r
+#define USBC_UECFG4_EPTYPE_Msk      (0x3u << USBC_UECFG4_EPTYPE_Pos) /**< \brief (USBC_UECFG4) Endpoint Type */\r
+#define USBC_UECFG4_EPTYPE(value)   ((USBC_UECFG4_EPTYPE_Msk & ((value) << USBC_UECFG4_EPTYPE_Pos)))\r
+#define   USBC_UECFG4_EPTYPE_CONTROL (0x0u << 11) /**< \brief (USBC_UECFG4)  */\r
+#define   USBC_UECFG4_EPTYPE_ISOCHRONOUS (0x1u << 11) /**< \brief (USBC_UECFG4)  */\r
+#define   USBC_UECFG4_EPTYPE_BULK   (0x2u << 11) /**< \brief (USBC_UECFG4)  */\r
+#define   USBC_UECFG4_EPTYPE_INTERRUPT (0x3u << 11) /**< \brief (USBC_UECFG4)  */\r
+#define USBC_UECFG4_REPNB_Pos       16\r
+#define USBC_UECFG4_REPNB_Msk       (0xFu << USBC_UECFG4_REPNB_Pos) /**< \brief (USBC_UECFG4) Redirected Endpoint Number */\r
+#define USBC_UECFG4_REPNB(value)    ((USBC_UECFG4_REPNB_Msk & ((value) << USBC_UECFG4_REPNB_Pos)))\r
+/* -------- USBC_UECFG5 : (USBC Offset: 0x114) Endpoint Configuration Register -------- */\r
+#define USBC_UECFG5_EPBK            (0x1u <<  2) /**< \brief (USBC_UECFG5) Endpoint Bank */\r
+#define   USBC_UECFG5_EPBK_SINGLE   (0x0u <<  2) /**< \brief (USBC_UECFG5)  */\r
+#define   USBC_UECFG5_EPBK_DOUBLE   (0x1u <<  2) /**< \brief (USBC_UECFG5)  */\r
+#define USBC_UECFG5_EPSIZE_Pos      4\r
+#define USBC_UECFG5_EPSIZE_Msk      (0x7u << USBC_UECFG5_EPSIZE_Pos) /**< \brief (USBC_UECFG5) Endpoint Size */\r
+#define USBC_UECFG5_EPSIZE(value)   ((USBC_UECFG5_EPSIZE_Msk & ((value) << USBC_UECFG5_EPSIZE_Pos)))\r
+#define   USBC_UECFG5_EPSIZE_8      (0x0u <<  4) /**< \brief (USBC_UECFG5)  */\r
+#define   USBC_UECFG5_EPSIZE_16     (0x1u <<  4) /**< \brief (USBC_UECFG5)  */\r
+#define   USBC_UECFG5_EPSIZE_32     (0x2u <<  4) /**< \brief (USBC_UECFG5)  */\r
+#define   USBC_UECFG5_EPSIZE_64     (0x3u <<  4) /**< \brief (USBC_UECFG5)  */\r
+#define   USBC_UECFG5_EPSIZE_128    (0x4u <<  4) /**< \brief (USBC_UECFG5)  */\r
+#define   USBC_UECFG5_EPSIZE_256    (0x5u <<  4) /**< \brief (USBC_UECFG5)  */\r
+#define   USBC_UECFG5_EPSIZE_512    (0x6u <<  4) /**< \brief (USBC_UECFG5)  */\r
+#define   USBC_UECFG5_EPSIZE_1024   (0x7u <<  4) /**< \brief (USBC_UECFG5)  */\r
+#define USBC_UECFG5_EPDIR           (0x1u <<  8) /**< \brief (USBC_UECFG5) Endpoint Direction */\r
+#define   USBC_UECFG5_EPDIR_OUT     (0x0u <<  8) /**< \brief (USBC_UECFG5)  */\r
+#define   USBC_UECFG5_EPDIR_IN      (0x1u <<  8) /**< \brief (USBC_UECFG5)  */\r
+#define USBC_UECFG5_EPTYPE_Pos      11\r
+#define USBC_UECFG5_EPTYPE_Msk      (0x3u << USBC_UECFG5_EPTYPE_Pos) /**< \brief (USBC_UECFG5) Endpoint Type */\r
+#define USBC_UECFG5_EPTYPE(value)   ((USBC_UECFG5_EPTYPE_Msk & ((value) << USBC_UECFG5_EPTYPE_Pos)))\r
+#define   USBC_UECFG5_EPTYPE_CONTROL (0x0u << 11) /**< \brief (USBC_UECFG5)  */\r
+#define   USBC_UECFG5_EPTYPE_ISOCHRONOUS (0x1u << 11) /**< \brief (USBC_UECFG5)  */\r
+#define   USBC_UECFG5_EPTYPE_BULK   (0x2u << 11) /**< \brief (USBC_UECFG5)  */\r
+#define   USBC_UECFG5_EPTYPE_INTERRUPT (0x3u << 11) /**< \brief (USBC_UECFG5)  */\r
+#define USBC_UECFG5_REPNB_Pos       16\r
+#define USBC_UECFG5_REPNB_Msk       (0xFu << USBC_UECFG5_REPNB_Pos) /**< \brief (USBC_UECFG5) Redirected Endpoint Number */\r
+#define USBC_UECFG5_REPNB(value)    ((USBC_UECFG5_REPNB_Msk & ((value) << USBC_UECFG5_REPNB_Pos)))\r
+/* -------- USBC_UECFG6 : (USBC Offset: 0x118) Endpoint Configuration Register -------- */\r
+#define USBC_UECFG6_EPBK            (0x1u <<  2) /**< \brief (USBC_UECFG6) Endpoint Bank */\r
+#define   USBC_UECFG6_EPBK_SINGLE   (0x0u <<  2) /**< \brief (USBC_UECFG6)  */\r
+#define   USBC_UECFG6_EPBK_DOUBLE   (0x1u <<  2) /**< \brief (USBC_UECFG6)  */\r
+#define USBC_UECFG6_EPSIZE_Pos      4\r
+#define USBC_UECFG6_EPSIZE_Msk      (0x7u << USBC_UECFG6_EPSIZE_Pos) /**< \brief (USBC_UECFG6) Endpoint Size */\r
+#define USBC_UECFG6_EPSIZE(value)   ((USBC_UECFG6_EPSIZE_Msk & ((value) << USBC_UECFG6_EPSIZE_Pos)))\r
+#define   USBC_UECFG6_EPSIZE_8      (0x0u <<  4) /**< \brief (USBC_UECFG6)  */\r
+#define   USBC_UECFG6_EPSIZE_16     (0x1u <<  4) /**< \brief (USBC_UECFG6)  */\r
+#define   USBC_UECFG6_EPSIZE_32     (0x2u <<  4) /**< \brief (USBC_UECFG6)  */\r
+#define   USBC_UECFG6_EPSIZE_64     (0x3u <<  4) /**< \brief (USBC_UECFG6)  */\r
+#define   USBC_UECFG6_EPSIZE_128    (0x4u <<  4) /**< \brief (USBC_UECFG6)  */\r
+#define   USBC_UECFG6_EPSIZE_256    (0x5u <<  4) /**< \brief (USBC_UECFG6)  */\r
+#define   USBC_UECFG6_EPSIZE_512    (0x6u <<  4) /**< \brief (USBC_UECFG6)  */\r
+#define   USBC_UECFG6_EPSIZE_1024   (0x7u <<  4) /**< \brief (USBC_UECFG6)  */\r
+#define USBC_UECFG6_EPDIR           (0x1u <<  8) /**< \brief (USBC_UECFG6) Endpoint Direction */\r
+#define   USBC_UECFG6_EPDIR_OUT     (0x0u <<  8) /**< \brief (USBC_UECFG6)  */\r
+#define   USBC_UECFG6_EPDIR_IN      (0x1u <<  8) /**< \brief (USBC_UECFG6)  */\r
+#define USBC_UECFG6_EPTYPE_Pos      11\r
+#define USBC_UECFG6_EPTYPE_Msk      (0x3u << USBC_UECFG6_EPTYPE_Pos) /**< \brief (USBC_UECFG6) Endpoint Type */\r
+#define USBC_UECFG6_EPTYPE(value)   ((USBC_UECFG6_EPTYPE_Msk & ((value) << USBC_UECFG6_EPTYPE_Pos)))\r
+#define   USBC_UECFG6_EPTYPE_CONTROL (0x0u << 11) /**< \brief (USBC_UECFG6)  */\r
+#define   USBC_UECFG6_EPTYPE_ISOCHRONOUS (0x1u << 11) /**< \brief (USBC_UECFG6)  */\r
+#define   USBC_UECFG6_EPTYPE_BULK   (0x2u << 11) /**< \brief (USBC_UECFG6)  */\r
+#define   USBC_UECFG6_EPTYPE_INTERRUPT (0x3u << 11) /**< \brief (USBC_UECFG6)  */\r
+#define USBC_UECFG6_REPNB_Pos       16\r
+#define USBC_UECFG6_REPNB_Msk       (0xFu << USBC_UECFG6_REPNB_Pos) /**< \brief (USBC_UECFG6) Redirected Endpoint Number */\r
+#define USBC_UECFG6_REPNB(value)    ((USBC_UECFG6_REPNB_Msk & ((value) << USBC_UECFG6_REPNB_Pos)))\r
+/* -------- USBC_UECFG7 : (USBC Offset: 0x11C) Endpoint Configuration Register -------- */\r
+#define USBC_UECFG7_EPBK            (0x1u <<  2) /**< \brief (USBC_UECFG7) Endpoint Bank */\r
+#define   USBC_UECFG7_EPBK_SINGLE   (0x0u <<  2) /**< \brief (USBC_UECFG7)  */\r
+#define   USBC_UECFG7_EPBK_DOUBLE   (0x1u <<  2) /**< \brief (USBC_UECFG7)  */\r
+#define USBC_UECFG7_EPSIZE_Pos      4\r
+#define USBC_UECFG7_EPSIZE_Msk      (0x7u << USBC_UECFG7_EPSIZE_Pos) /**< \brief (USBC_UECFG7) Endpoint Size */\r
+#define USBC_UECFG7_EPSIZE(value)   ((USBC_UECFG7_EPSIZE_Msk & ((value) << USBC_UECFG7_EPSIZE_Pos)))\r
+#define   USBC_UECFG7_EPSIZE_8      (0x0u <<  4) /**< \brief (USBC_UECFG7)  */\r
+#define   USBC_UECFG7_EPSIZE_16     (0x1u <<  4) /**< \brief (USBC_UECFG7)  */\r
+#define   USBC_UECFG7_EPSIZE_32     (0x2u <<  4) /**< \brief (USBC_UECFG7)  */\r
+#define   USBC_UECFG7_EPSIZE_64     (0x3u <<  4) /**< \brief (USBC_UECFG7)  */\r
+#define   USBC_UECFG7_EPSIZE_128    (0x4u <<  4) /**< \brief (USBC_UECFG7)  */\r
+#define   USBC_UECFG7_EPSIZE_256    (0x5u <<  4) /**< \brief (USBC_UECFG7)  */\r
+#define   USBC_UECFG7_EPSIZE_512    (0x6u <<  4) /**< \brief (USBC_UECFG7)  */\r
+#define   USBC_UECFG7_EPSIZE_1024   (0x7u <<  4) /**< \brief (USBC_UECFG7)  */\r
+#define USBC_UECFG7_EPDIR           (0x1u <<  8) /**< \brief (USBC_UECFG7) Endpoint Direction */\r
+#define   USBC_UECFG7_EPDIR_OUT     (0x0u <<  8) /**< \brief (USBC_UECFG7)  */\r
+#define   USBC_UECFG7_EPDIR_IN      (0x1u <<  8) /**< \brief (USBC_UECFG7)  */\r
+#define USBC_UECFG7_EPTYPE_Pos      11\r
+#define USBC_UECFG7_EPTYPE_Msk      (0x3u << USBC_UECFG7_EPTYPE_Pos) /**< \brief (USBC_UECFG7) Endpoint Type */\r
+#define USBC_UECFG7_EPTYPE(value)   ((USBC_UECFG7_EPTYPE_Msk & ((value) << USBC_UECFG7_EPTYPE_Pos)))\r
+#define   USBC_UECFG7_EPTYPE_CONTROL (0x0u << 11) /**< \brief (USBC_UECFG7)  */\r
+#define   USBC_UECFG7_EPTYPE_ISOCHRONOUS (0x1u << 11) /**< \brief (USBC_UECFG7)  */\r
+#define   USBC_UECFG7_EPTYPE_BULK   (0x2u << 11) /**< \brief (USBC_UECFG7)  */\r
+#define   USBC_UECFG7_EPTYPE_INTERRUPT (0x3u << 11) /**< \brief (USBC_UECFG7)  */\r
+#define USBC_UECFG7_REPNB_Pos       16\r
+#define USBC_UECFG7_REPNB_Msk       (0xFu << USBC_UECFG7_REPNB_Pos) /**< \brief (USBC_UECFG7) Redirected Endpoint Number */\r
+#define USBC_UECFG7_REPNB(value)    ((USBC_UECFG7_REPNB_Msk & ((value) << USBC_UECFG7_REPNB_Pos)))\r
+/* -------- USBC_UESTA0 : (USBC Offset: 0x130) Endpoint Status Register -------- */\r
+#define USBC_UESTA0_TXINI           (0x1u <<  0) /**< \brief (USBC_UESTA0) Transmitted IN Data Interrupt */\r
+#define USBC_UESTA0_RXOUTI          (0x1u <<  1) /**< \brief (USBC_UESTA0) Received OUT Data Interrupt */\r
+#define USBC_UESTA0_RXSTPI          (0x1u <<  2) /**< \brief (USBC_UESTA0) Received SETUP Interrupt */\r
+#define USBC_UESTA0_NAKOUTI         (0x1u <<  3) /**< \brief (USBC_UESTA0) NAKed OUT Interrupt */\r
+#define USBC_UESTA0_NAKINI          (0x1u <<  4) /**< \brief (USBC_UESTA0) NAKed IN Interrupt */\r
+#define USBC_UESTA0_STALLEDI        (0x1u <<  6) /**< \brief (USBC_UESTA0) STALLed Interrupt */\r
+#define USBC_UESTA0_DTSEQ_Pos       8\r
+#define USBC_UESTA0_DTSEQ_Msk       (0x3u << USBC_UESTA0_DTSEQ_Pos) /**< \brief (USBC_UESTA0) Data Toggle Sequence */\r
+#define USBC_UESTA0_DTSEQ(value)    ((USBC_UESTA0_DTSEQ_Msk & ((value) << USBC_UESTA0_DTSEQ_Pos)))\r
+#define USBC_UESTA0_RAMACERI        (0x1u << 11) /**< \brief (USBC_UESTA0) Ram Access Error Interrupt */\r
+#define USBC_UESTA0_NBUSYBK_Pos     12\r
+#define USBC_UESTA0_NBUSYBK_Msk     (0x3u << USBC_UESTA0_NBUSYBK_Pos) /**< \brief (USBC_UESTA0) Number Of Busy Banks */\r
+#define USBC_UESTA0_NBUSYBK(value)  ((USBC_UESTA0_NBUSYBK_Msk & ((value) << USBC_UESTA0_NBUSYBK_Pos)))\r
+#define USBC_UESTA0_CURRBK_Pos      14\r
+#define USBC_UESTA0_CURRBK_Msk      (0x3u << USBC_UESTA0_CURRBK_Pos) /**< \brief (USBC_UESTA0) Current Bank */\r
+#define USBC_UESTA0_CURRBK(value)   ((USBC_UESTA0_CURRBK_Msk & ((value) << USBC_UESTA0_CURRBK_Pos)))\r
+#define USBC_UESTA0_CTRLDIR         (0x1u << 17) /**< \brief (USBC_UESTA0) Control Direction */\r
+#define   USBC_UESTA0_CTRLDIR_OUT   (0x0u << 17) /**< \brief (USBC_UESTA0)  */\r
+#define   USBC_UESTA0_CTRLDIR_IN    (0x1u << 17) /**< \brief (USBC_UESTA0)  */\r
+/* -------- USBC_UESTA1 : (USBC Offset: 0x134) Endpoint Status Register -------- */\r
+#define USBC_UESTA1_TXINI           (0x1u <<  0) /**< \brief (USBC_UESTA1) Transmitted IN Data Interrupt */\r
+#define USBC_UESTA1_RXOUTI          (0x1u <<  1) /**< \brief (USBC_UESTA1) Received OUT Data Interrupt */\r
+#define USBC_UESTA1_RXSTPI          (0x1u <<  2) /**< \brief (USBC_UESTA1) Received SETUP Interrupt */\r
+#define USBC_UESTA1_NAKOUTI         (0x1u <<  3) /**< \brief (USBC_UESTA1) NAKed OUT Interrupt */\r
+#define USBC_UESTA1_NAKINI          (0x1u <<  4) /**< \brief (USBC_UESTA1) NAKed IN Interrupt */\r
+#define USBC_UESTA1_STALLEDI        (0x1u <<  6) /**< \brief (USBC_UESTA1) STALLed Interrupt */\r
+#define USBC_UESTA1_DTSEQ_Pos       8\r
+#define USBC_UESTA1_DTSEQ_Msk       (0x3u << USBC_UESTA1_DTSEQ_Pos) /**< \brief (USBC_UESTA1) Data Toggle Sequence */\r
+#define USBC_UESTA1_DTSEQ(value)    ((USBC_UESTA1_DTSEQ_Msk & ((value) << USBC_UESTA1_DTSEQ_Pos)))\r
+#define USBC_UESTA1_RAMACERI        (0x1u << 11) /**< \brief (USBC_UESTA1) Ram Access Error Interrupt */\r
+#define USBC_UESTA1_NBUSYBK_Pos     12\r
+#define USBC_UESTA1_NBUSYBK_Msk     (0x3u << USBC_UESTA1_NBUSYBK_Pos) /**< \brief (USBC_UESTA1) Number Of Busy Banks */\r
+#define USBC_UESTA1_NBUSYBK(value)  ((USBC_UESTA1_NBUSYBK_Msk & ((value) << USBC_UESTA1_NBUSYBK_Pos)))\r
+#define USBC_UESTA1_CURRBK_Pos      14\r
+#define USBC_UESTA1_CURRBK_Msk      (0x3u << USBC_UESTA1_CURRBK_Pos) /**< \brief (USBC_UESTA1) Current Bank */\r
+#define USBC_UESTA1_CURRBK(value)   ((USBC_UESTA1_CURRBK_Msk & ((value) << USBC_UESTA1_CURRBK_Pos)))\r
+#define USBC_UESTA1_CTRLDIR         (0x1u << 17) /**< \brief (USBC_UESTA1) Control Direction */\r
+#define   USBC_UESTA1_CTRLDIR_OUT   (0x0u << 17) /**< \brief (USBC_UESTA1)  */\r
+#define   USBC_UESTA1_CTRLDIR_IN    (0x1u << 17) /**< \brief (USBC_UESTA1)  */\r
+/* -------- USBC_UESTA2 : (USBC Offset: 0x138) Endpoint Status Register -------- */\r
+#define USBC_UESTA2_TXINI           (0x1u <<  0) /**< \brief (USBC_UESTA2) Transmitted IN Data Interrupt */\r
+#define USBC_UESTA2_RXOUTI          (0x1u <<  1) /**< \brief (USBC_UESTA2) Received OUT Data Interrupt */\r
+#define USBC_UESTA2_RXSTPI          (0x1u <<  2) /**< \brief (USBC_UESTA2) Received SETUP Interrupt */\r
+#define USBC_UESTA2_NAKOUTI         (0x1u <<  3) /**< \brief (USBC_UESTA2) NAKed OUT Interrupt */\r
+#define USBC_UESTA2_NAKINI          (0x1u <<  4) /**< \brief (USBC_UESTA2) NAKed IN Interrupt */\r
+#define USBC_UESTA2_STALLEDI        (0x1u <<  6) /**< \brief (USBC_UESTA2) STALLed Interrupt */\r
+#define USBC_UESTA2_DTSEQ_Pos       8\r
+#define USBC_UESTA2_DTSEQ_Msk       (0x3u << USBC_UESTA2_DTSEQ_Pos) /**< \brief (USBC_UESTA2) Data Toggle Sequence */\r
+#define USBC_UESTA2_DTSEQ(value)    ((USBC_UESTA2_DTSEQ_Msk & ((value) << USBC_UESTA2_DTSEQ_Pos)))\r
+#define USBC_UESTA2_RAMACERI        (0x1u << 11) /**< \brief (USBC_UESTA2) Ram Access Error Interrupt */\r
+#define USBC_UESTA2_NBUSYBK_Pos     12\r
+#define USBC_UESTA2_NBUSYBK_Msk     (0x3u << USBC_UESTA2_NBUSYBK_Pos) /**< \brief (USBC_UESTA2) Number Of Busy Banks */\r
+#define USBC_UESTA2_NBUSYBK(value)  ((USBC_UESTA2_NBUSYBK_Msk & ((value) << USBC_UESTA2_NBUSYBK_Pos)))\r
+#define USBC_UESTA2_CURRBK_Pos      14\r
+#define USBC_UESTA2_CURRBK_Msk      (0x3u << USBC_UESTA2_CURRBK_Pos) /**< \brief (USBC_UESTA2) Current Bank */\r
+#define USBC_UESTA2_CURRBK(value)   ((USBC_UESTA2_CURRBK_Msk & ((value) << USBC_UESTA2_CURRBK_Pos)))\r
+#define USBC_UESTA2_CTRLDIR         (0x1u << 17) /**< \brief (USBC_UESTA2) Control Direction */\r
+#define   USBC_UESTA2_CTRLDIR_OUT   (0x0u << 17) /**< \brief (USBC_UESTA2)  */\r
+#define   USBC_UESTA2_CTRLDIR_IN    (0x1u << 17) /**< \brief (USBC_UESTA2)  */\r
+/* -------- USBC_UESTA3 : (USBC Offset: 0x13C) Endpoint Status Register -------- */\r
+#define USBC_UESTA3_TXINI           (0x1u <<  0) /**< \brief (USBC_UESTA3) Transmitted IN Data Interrupt */\r
+#define USBC_UESTA3_RXOUTI          (0x1u <<  1) /**< \brief (USBC_UESTA3) Received OUT Data Interrupt */\r
+#define USBC_UESTA3_RXSTPI          (0x1u <<  2) /**< \brief (USBC_UESTA3) Received SETUP Interrupt */\r
+#define USBC_UESTA3_NAKOUTI         (0x1u <<  3) /**< \brief (USBC_UESTA3) NAKed OUT Interrupt */\r
+#define USBC_UESTA3_NAKINI          (0x1u <<  4) /**< \brief (USBC_UESTA3) NAKed IN Interrupt */\r
+#define USBC_UESTA3_STALLEDI        (0x1u <<  6) /**< \brief (USBC_UESTA3) STALLed Interrupt */\r
+#define USBC_UESTA3_DTSEQ_Pos       8\r
+#define USBC_UESTA3_DTSEQ_Msk       (0x3u << USBC_UESTA3_DTSEQ_Pos) /**< \brief (USBC_UESTA3) Data Toggle Sequence */\r
+#define USBC_UESTA3_DTSEQ(value)    ((USBC_UESTA3_DTSEQ_Msk & ((value) << USBC_UESTA3_DTSEQ_Pos)))\r
+#define USBC_UESTA3_RAMACERI        (0x1u << 11) /**< \brief (USBC_UESTA3) Ram Access Error Interrupt */\r
+#define USBC_UESTA3_NBUSYBK_Pos     12\r
+#define USBC_UESTA3_NBUSYBK_Msk     (0x3u << USBC_UESTA3_NBUSYBK_Pos) /**< \brief (USBC_UESTA3) Number Of Busy Banks */\r
+#define USBC_UESTA3_NBUSYBK(value)  ((USBC_UESTA3_NBUSYBK_Msk & ((value) << USBC_UESTA3_NBUSYBK_Pos)))\r
+#define USBC_UESTA3_CURRBK_Pos      14\r
+#define USBC_UESTA3_CURRBK_Msk      (0x3u << USBC_UESTA3_CURRBK_Pos) /**< \brief (USBC_UESTA3) Current Bank */\r
+#define USBC_UESTA3_CURRBK(value)   ((USBC_UESTA3_CURRBK_Msk & ((value) << USBC_UESTA3_CURRBK_Pos)))\r
+#define USBC_UESTA3_CTRLDIR         (0x1u << 17) /**< \brief (USBC_UESTA3) Control Direction */\r
+#define   USBC_UESTA3_CTRLDIR_OUT   (0x0u << 17) /**< \brief (USBC_UESTA3)  */\r
+#define   USBC_UESTA3_CTRLDIR_IN    (0x1u << 17) /**< \brief (USBC_UESTA3)  */\r
+/* -------- USBC_UESTA4 : (USBC Offset: 0x140) Endpoint Status Register -------- */\r
+#define USBC_UESTA4_TXINI           (0x1u <<  0) /**< \brief (USBC_UESTA4) Transmitted IN Data Interrupt */\r
+#define USBC_UESTA4_RXOUTI          (0x1u <<  1) /**< \brief (USBC_UESTA4) Received OUT Data Interrupt */\r
+#define USBC_UESTA4_RXSTPI          (0x1u <<  2) /**< \brief (USBC_UESTA4) Received SETUP Interrupt */\r
+#define USBC_UESTA4_NAKOUTI         (0x1u <<  3) /**< \brief (USBC_UESTA4) NAKed OUT Interrupt */\r
+#define USBC_UESTA4_NAKINI          (0x1u <<  4) /**< \brief (USBC_UESTA4) NAKed IN Interrupt */\r
+#define USBC_UESTA4_STALLEDI        (0x1u <<  6) /**< \brief (USBC_UESTA4) STALLed Interrupt */\r
+#define USBC_UESTA4_DTSEQ_Pos       8\r
+#define USBC_UESTA4_DTSEQ_Msk       (0x3u << USBC_UESTA4_DTSEQ_Pos) /**< \brief (USBC_UESTA4) Data Toggle Sequence */\r
+#define USBC_UESTA4_DTSEQ(value)    ((USBC_UESTA4_DTSEQ_Msk & ((value) << USBC_UESTA4_DTSEQ_Pos)))\r
+#define USBC_UESTA4_RAMACERI        (0x1u << 11) /**< \brief (USBC_UESTA4) Ram Access Error Interrupt */\r
+#define USBC_UESTA4_NBUSYBK_Pos     12\r
+#define USBC_UESTA4_NBUSYBK_Msk     (0x3u << USBC_UESTA4_NBUSYBK_Pos) /**< \brief (USBC_UESTA4) Number Of Busy Banks */\r
+#define USBC_UESTA4_NBUSYBK(value)  ((USBC_UESTA4_NBUSYBK_Msk & ((value) << USBC_UESTA4_NBUSYBK_Pos)))\r
+#define USBC_UESTA4_CURRBK_Pos      14\r
+#define USBC_UESTA4_CURRBK_Msk      (0x3u << USBC_UESTA4_CURRBK_Pos) /**< \brief (USBC_UESTA4) Current Bank */\r
+#define USBC_UESTA4_CURRBK(value)   ((USBC_UESTA4_CURRBK_Msk & ((value) << USBC_UESTA4_CURRBK_Pos)))\r
+#define USBC_UESTA4_CTRLDIR         (0x1u << 17) /**< \brief (USBC_UESTA4) Control Direction */\r
+#define   USBC_UESTA4_CTRLDIR_OUT   (0x0u << 17) /**< \brief (USBC_UESTA4)  */\r
+#define   USBC_UESTA4_CTRLDIR_IN    (0x1u << 17) /**< \brief (USBC_UESTA4)  */\r
+/* -------- USBC_UESTA5 : (USBC Offset: 0x144) Endpoint Status Register -------- */\r
+#define USBC_UESTA5_TXINI           (0x1u <<  0) /**< \brief (USBC_UESTA5) Transmitted IN Data Interrupt */\r
+#define USBC_UESTA5_RXOUTI          (0x1u <<  1) /**< \brief (USBC_UESTA5) Received OUT Data Interrupt */\r
+#define USBC_UESTA5_RXSTPI          (0x1u <<  2) /**< \brief (USBC_UESTA5) Received SETUP Interrupt */\r
+#define USBC_UESTA5_NAKOUTI         (0x1u <<  3) /**< \brief (USBC_UESTA5) NAKed OUT Interrupt */\r
+#define USBC_UESTA5_NAKINI          (0x1u <<  4) /**< \brief (USBC_UESTA5) NAKed IN Interrupt */\r
+#define USBC_UESTA5_STALLEDI        (0x1u <<  6) /**< \brief (USBC_UESTA5) STALLed Interrupt */\r
+#define USBC_UESTA5_DTSEQ_Pos       8\r
+#define USBC_UESTA5_DTSEQ_Msk       (0x3u << USBC_UESTA5_DTSEQ_Pos) /**< \brief (USBC_UESTA5) Data Toggle Sequence */\r
+#define USBC_UESTA5_DTSEQ(value)    ((USBC_UESTA5_DTSEQ_Msk & ((value) << USBC_UESTA5_DTSEQ_Pos)))\r
+#define USBC_UESTA5_RAMACERI        (0x1u << 11) /**< \brief (USBC_UESTA5) Ram Access Error Interrupt */\r
+#define USBC_UESTA5_NBUSYBK_Pos     12\r
+#define USBC_UESTA5_NBUSYBK_Msk     (0x3u << USBC_UESTA5_NBUSYBK_Pos) /**< \brief (USBC_UESTA5) Number Of Busy Banks */\r
+#define USBC_UESTA5_NBUSYBK(value)  ((USBC_UESTA5_NBUSYBK_Msk & ((value) << USBC_UESTA5_NBUSYBK_Pos)))\r
+#define USBC_UESTA5_CURRBK_Pos      14\r
+#define USBC_UESTA5_CURRBK_Msk      (0x3u << USBC_UESTA5_CURRBK_Pos) /**< \brief (USBC_UESTA5) Current Bank */\r
+#define USBC_UESTA5_CURRBK(value)   ((USBC_UESTA5_CURRBK_Msk & ((value) << USBC_UESTA5_CURRBK_Pos)))\r
+#define USBC_UESTA5_CTRLDIR         (0x1u << 17) /**< \brief (USBC_UESTA5) Control Direction */\r
+#define   USBC_UESTA5_CTRLDIR_OUT   (0x0u << 17) /**< \brief (USBC_UESTA5)  */\r
+#define   USBC_UESTA5_CTRLDIR_IN    (0x1u << 17) /**< \brief (USBC_UESTA5)  */\r
+/* -------- USBC_UESTA6 : (USBC Offset: 0x148) Endpoint Status Register -------- */\r
+#define USBC_UESTA6_TXINI           (0x1u <<  0) /**< \brief (USBC_UESTA6) Transmitted IN Data Interrupt */\r
+#define USBC_UESTA6_RXOUTI          (0x1u <<  1) /**< \brief (USBC_UESTA6) Received OUT Data Interrupt */\r
+#define USBC_UESTA6_RXSTPI          (0x1u <<  2) /**< \brief (USBC_UESTA6) Received SETUP Interrupt */\r
+#define USBC_UESTA6_NAKOUTI         (0x1u <<  3) /**< \brief (USBC_UESTA6) NAKed OUT Interrupt */\r
+#define USBC_UESTA6_NAKINI          (0x1u <<  4) /**< \brief (USBC_UESTA6) NAKed IN Interrupt */\r
+#define USBC_UESTA6_STALLEDI        (0x1u <<  6) /**< \brief (USBC_UESTA6) STALLed Interrupt */\r
+#define USBC_UESTA6_DTSEQ_Pos       8\r
+#define USBC_UESTA6_DTSEQ_Msk       (0x3u << USBC_UESTA6_DTSEQ_Pos) /**< \brief (USBC_UESTA6) Data Toggle Sequence */\r
+#define USBC_UESTA6_DTSEQ(value)    ((USBC_UESTA6_DTSEQ_Msk & ((value) << USBC_UESTA6_DTSEQ_Pos)))\r
+#define USBC_UESTA6_RAMACERI        (0x1u << 11) /**< \brief (USBC_UESTA6) Ram Access Error Interrupt */\r
+#define USBC_UESTA6_NBUSYBK_Pos     12\r
+#define USBC_UESTA6_NBUSYBK_Msk     (0x3u << USBC_UESTA6_NBUSYBK_Pos) /**< \brief (USBC_UESTA6) Number Of Busy Banks */\r
+#define USBC_UESTA6_NBUSYBK(value)  ((USBC_UESTA6_NBUSYBK_Msk & ((value) << USBC_UESTA6_NBUSYBK_Pos)))\r
+#define USBC_UESTA6_CURRBK_Pos      14\r
+#define USBC_UESTA6_CURRBK_Msk      (0x3u << USBC_UESTA6_CURRBK_Pos) /**< \brief (USBC_UESTA6) Current Bank */\r
+#define USBC_UESTA6_CURRBK(value)   ((USBC_UESTA6_CURRBK_Msk & ((value) << USBC_UESTA6_CURRBK_Pos)))\r
+#define USBC_UESTA6_CTRLDIR         (0x1u << 17) /**< \brief (USBC_UESTA6) Control Direction */\r
+#define   USBC_UESTA6_CTRLDIR_OUT   (0x0u << 17) /**< \brief (USBC_UESTA6)  */\r
+#define   USBC_UESTA6_CTRLDIR_IN    (0x1u << 17) /**< \brief (USBC_UESTA6)  */\r
+/* -------- USBC_UESTA7 : (USBC Offset: 0x14C) Endpoint Status Register -------- */\r
+#define USBC_UESTA7_TXINI           (0x1u <<  0) /**< \brief (USBC_UESTA7) Transmitted IN Data Interrupt */\r
+#define USBC_UESTA7_RXOUTI          (0x1u <<  1) /**< \brief (USBC_UESTA7) Received OUT Data Interrupt */\r
+#define USBC_UESTA7_RXSTPI          (0x1u <<  2) /**< \brief (USBC_UESTA7) Received SETUP Interrupt */\r
+#define USBC_UESTA7_NAKOUTI         (0x1u <<  3) /**< \brief (USBC_UESTA7) NAKed OUT Interrupt */\r
+#define USBC_UESTA7_NAKINI          (0x1u <<  4) /**< \brief (USBC_UESTA7) NAKed IN Interrupt */\r
+#define USBC_UESTA7_STALLEDI        (0x1u <<  6) /**< \brief (USBC_UESTA7) STALLed Interrupt */\r
+#define USBC_UESTA7_DTSEQ_Pos       8\r
+#define USBC_UESTA7_DTSEQ_Msk       (0x3u << USBC_UESTA7_DTSEQ_Pos) /**< \brief (USBC_UESTA7) Data Toggle Sequence */\r
+#define USBC_UESTA7_DTSEQ(value)    ((USBC_UESTA7_DTSEQ_Msk & ((value) << USBC_UESTA7_DTSEQ_Pos)))\r
+#define USBC_UESTA7_RAMACERI        (0x1u << 11) /**< \brief (USBC_UESTA7) Ram Access Error Interrupt */\r
+#define USBC_UESTA7_NBUSYBK_Pos     12\r
+#define USBC_UESTA7_NBUSYBK_Msk     (0x3u << USBC_UESTA7_NBUSYBK_Pos) /**< \brief (USBC_UESTA7) Number Of Busy Banks */\r
+#define USBC_UESTA7_NBUSYBK(value)  ((USBC_UESTA7_NBUSYBK_Msk & ((value) << USBC_UESTA7_NBUSYBK_Pos)))\r
+#define USBC_UESTA7_CURRBK_Pos      14\r
+#define USBC_UESTA7_CURRBK_Msk      (0x3u << USBC_UESTA7_CURRBK_Pos) /**< \brief (USBC_UESTA7) Current Bank */\r
+#define USBC_UESTA7_CURRBK(value)   ((USBC_UESTA7_CURRBK_Msk & ((value) << USBC_UESTA7_CURRBK_Pos)))\r
+#define USBC_UESTA7_CTRLDIR         (0x1u << 17) /**< \brief (USBC_UESTA7) Control Direction */\r
+#define   USBC_UESTA7_CTRLDIR_OUT   (0x0u << 17) /**< \brief (USBC_UESTA7)  */\r
+#define   USBC_UESTA7_CTRLDIR_IN    (0x1u << 17) /**< \brief (USBC_UESTA7)  */\r
+/* -------- USBC_UESTA0CLR : (USBC Offset: 0x160) Endpoint Status Clear Register -------- */\r
+#define USBC_UESTA0CLR_TXINIC       (0x1u <<  0) /**< \brief (USBC_UESTA0CLR) TXINI Clear */\r
+#define USBC_UESTA0CLR_RXOUTIC      (0x1u <<  1) /**< \brief (USBC_UESTA0CLR) RXOUTI Clear */\r
+#define USBC_UESTA0CLR_RXSTPIC      (0x1u <<  2) /**< \brief (USBC_UESTA0CLR) RXSTPI Clear */\r
+#define USBC_UESTA0CLR_NAKOUTIC     (0x1u <<  3) /**< \brief (USBC_UESTA0CLR) NAKOUTI Clear */\r
+#define USBC_UESTA0CLR_NAKINIC      (0x1u <<  4) /**< \brief (USBC_UESTA0CLR) NAKINI Clear */\r
+#define USBC_UESTA0CLR_STALLEDIC    (0x1u <<  6) /**< \brief (USBC_UESTA0CLR) STALLEDI Clear */\r
+#define USBC_UESTA0CLR_RAMACERIC    (0x1u << 11) /**< \brief (USBC_UESTA0CLR) RAMACERI Clear */\r
+/* -------- USBC_UESTA1CLR : (USBC Offset: 0x164) Endpoint Status Clear Register -------- */\r
+#define USBC_UESTA1CLR_TXINIC       (0x1u <<  0) /**< \brief (USBC_UESTA1CLR) TXINI Clear */\r
+#define USBC_UESTA1CLR_RXOUTIC      (0x1u <<  1) /**< \brief (USBC_UESTA1CLR) RXOUTI Clear */\r
+#define USBC_UESTA1CLR_RXSTPIC      (0x1u <<  2) /**< \brief (USBC_UESTA1CLR) RXSTPI Clear */\r
+#define USBC_UESTA1CLR_NAKOUTIC     (0x1u <<  3) /**< \brief (USBC_UESTA1CLR) NAKOUTI Clear */\r
+#define USBC_UESTA1CLR_NAKINIC      (0x1u <<  4) /**< \brief (USBC_UESTA1CLR) NAKINI Clear */\r
+#define USBC_UESTA1CLR_STALLEDIC    (0x1u <<  6) /**< \brief (USBC_UESTA1CLR) STALLEDI Clear */\r
+#define USBC_UESTA1CLR_RAMACERIC    (0x1u << 11) /**< \brief (USBC_UESTA1CLR) RAMACERI Clear */\r
+/* -------- USBC_UESTA2CLR : (USBC Offset: 0x168) Endpoint Status Clear Register -------- */\r
+#define USBC_UESTA2CLR_TXINIC       (0x1u <<  0) /**< \brief (USBC_UESTA2CLR) TXINI Clear */\r
+#define USBC_UESTA2CLR_RXOUTIC      (0x1u <<  1) /**< \brief (USBC_UESTA2CLR) RXOUTI Clear */\r
+#define USBC_UESTA2CLR_RXSTPIC      (0x1u <<  2) /**< \brief (USBC_UESTA2CLR) RXSTPI Clear */\r
+#define USBC_UESTA2CLR_NAKOUTIC     (0x1u <<  3) /**< \brief (USBC_UESTA2CLR) NAKOUTI Clear */\r
+#define USBC_UESTA2CLR_NAKINIC      (0x1u <<  4) /**< \brief (USBC_UESTA2CLR) NAKINI Clear */\r
+#define USBC_UESTA2CLR_STALLEDIC    (0x1u <<  6) /**< \brief (USBC_UESTA2CLR) STALLEDI Clear */\r
+#define USBC_UESTA2CLR_RAMACERIC    (0x1u << 11) /**< \brief (USBC_UESTA2CLR) RAMACERI Clear */\r
+/* -------- USBC_UESTA3CLR : (USBC Offset: 0x16C) Endpoint Status Clear Register -------- */\r
+#define USBC_UESTA3CLR_TXINIC       (0x1u <<  0) /**< \brief (USBC_UESTA3CLR) TXINI Clear */\r
+#define USBC_UESTA3CLR_RXOUTIC      (0x1u <<  1) /**< \brief (USBC_UESTA3CLR) RXOUTI Clear */\r
+#define USBC_UESTA3CLR_RXSTPIC      (0x1u <<  2) /**< \brief (USBC_UESTA3CLR) RXSTPI Clear */\r
+#define USBC_UESTA3CLR_NAKOUTIC     (0x1u <<  3) /**< \brief (USBC_UESTA3CLR) NAKOUTI Clear */\r
+#define USBC_UESTA3CLR_NAKINIC      (0x1u <<  4) /**< \brief (USBC_UESTA3CLR) NAKINI Clear */\r
+#define USBC_UESTA3CLR_STALLEDIC    (0x1u <<  6) /**< \brief (USBC_UESTA3CLR) STALLEDI Clear */\r
+#define USBC_UESTA3CLR_RAMACERIC    (0x1u << 11) /**< \brief (USBC_UESTA3CLR) RAMACERI Clear */\r
+/* -------- USBC_UESTA4CLR : (USBC Offset: 0x170) Endpoint Status Clear Register -------- */\r
+#define USBC_UESTA4CLR_TXINIC       (0x1u <<  0) /**< \brief (USBC_UESTA4CLR) TXINI Clear */\r
+#define USBC_UESTA4CLR_RXOUTIC      (0x1u <<  1) /**< \brief (USBC_UESTA4CLR) RXOUTI Clear */\r
+#define USBC_UESTA4CLR_RXSTPIC      (0x1u <<  2) /**< \brief (USBC_UESTA4CLR) RXSTPI Clear */\r
+#define USBC_UESTA4CLR_NAKOUTIC     (0x1u <<  3) /**< \brief (USBC_UESTA4CLR) NAKOUTI Clear */\r
+#define USBC_UESTA4CLR_NAKINIC      (0x1u <<  4) /**< \brief (USBC_UESTA4CLR) NAKINI Clear */\r
+#define USBC_UESTA4CLR_STALLEDIC    (0x1u <<  6) /**< \brief (USBC_UESTA4CLR) STALLEDI Clear */\r
+#define USBC_UESTA4CLR_RAMACERIC    (0x1u << 11) /**< \brief (USBC_UESTA4CLR) RAMACERI Clear */\r
+/* -------- USBC_UESTA5CLR : (USBC Offset: 0x174) Endpoint Status Clear Register -------- */\r
+#define USBC_UESTA5CLR_TXINIC       (0x1u <<  0) /**< \brief (USBC_UESTA5CLR) TXINI Clear */\r
+#define USBC_UESTA5CLR_RXOUTIC      (0x1u <<  1) /**< \brief (USBC_UESTA5CLR) RXOUTI Clear */\r
+#define USBC_UESTA5CLR_RXSTPIC      (0x1u <<  2) /**< \brief (USBC_UESTA5CLR) RXSTPI Clear */\r
+#define USBC_UESTA5CLR_NAKOUTIC     (0x1u <<  3) /**< \brief (USBC_UESTA5CLR) NAKOUTI Clear */\r
+#define USBC_UESTA5CLR_NAKINIC      (0x1u <<  4) /**< \brief (USBC_UESTA5CLR) NAKINI Clear */\r
+#define USBC_UESTA5CLR_STALLEDIC    (0x1u <<  6) /**< \brief (USBC_UESTA5CLR) STALLEDI Clear */\r
+#define USBC_UESTA5CLR_RAMACERIC    (0x1u << 11) /**< \brief (USBC_UESTA5CLR) RAMACERI Clear */\r
+/* -------- USBC_UESTA6CLR : (USBC Offset: 0x178) Endpoint Status Clear Register -------- */\r
+#define USBC_UESTA6CLR_TXINIC       (0x1u <<  0) /**< \brief (USBC_UESTA6CLR) TXINI Clear */\r
+#define USBC_UESTA6CLR_RXOUTIC      (0x1u <<  1) /**< \brief (USBC_UESTA6CLR) RXOUTI Clear */\r
+#define USBC_UESTA6CLR_RXSTPIC      (0x1u <<  2) /**< \brief (USBC_UESTA6CLR) RXSTPI Clear */\r
+#define USBC_UESTA6CLR_NAKOUTIC     (0x1u <<  3) /**< \brief (USBC_UESTA6CLR) NAKOUTI Clear */\r
+#define USBC_UESTA6CLR_NAKINIC      (0x1u <<  4) /**< \brief (USBC_UESTA6CLR) NAKINI Clear */\r
+#define USBC_UESTA6CLR_STALLEDIC    (0x1u <<  6) /**< \brief (USBC_UESTA6CLR) STALLEDI Clear */\r
+#define USBC_UESTA6CLR_RAMACERIC    (0x1u << 11) /**< \brief (USBC_UESTA6CLR) RAMACERI Clear */\r
+/* -------- USBC_UESTA7CLR : (USBC Offset: 0x17C) Endpoint Status Clear Register -------- */\r
+#define USBC_UESTA7CLR_TXINIC       (0x1u <<  0) /**< \brief (USBC_UESTA7CLR) TXINI Clear */\r
+#define USBC_UESTA7CLR_RXOUTIC      (0x1u <<  1) /**< \brief (USBC_UESTA7CLR) RXOUTI Clear */\r
+#define USBC_UESTA7CLR_RXSTPIC      (0x1u <<  2) /**< \brief (USBC_UESTA7CLR) RXSTPI Clear */\r
+#define USBC_UESTA7CLR_NAKOUTIC     (0x1u <<  3) /**< \brief (USBC_UESTA7CLR) NAKOUTI Clear */\r
+#define USBC_UESTA7CLR_NAKINIC      (0x1u <<  4) /**< \brief (USBC_UESTA7CLR) NAKINI Clear */\r
+#define USBC_UESTA7CLR_STALLEDIC    (0x1u <<  6) /**< \brief (USBC_UESTA7CLR) STALLEDI Clear */\r
+#define USBC_UESTA7CLR_RAMACERIC    (0x1u << 11) /**< \brief (USBC_UESTA7CLR) RAMACERI Clear */\r
+/* -------- USBC_UESTA0SET : (USBC Offset: 0x190) Endpoint Status Set Register -------- */\r
+#define USBC_UESTA0SET_TXINIS       (0x1u <<  0) /**< \brief (USBC_UESTA0SET) TXINI Set */\r
+#define USBC_UESTA0SET_RXOUTIS      (0x1u <<  1) /**< \brief (USBC_UESTA0SET) RXOUTI Set */\r
+#define USBC_UESTA0SET_RXSTPIS      (0x1u <<  2) /**< \brief (USBC_UESTA0SET) RXSTPI Set */\r
+#define USBC_UESTA0SET_NAKOUTIS     (0x1u <<  3) /**< \brief (USBC_UESTA0SET) NAKOUTI Set */\r
+#define USBC_UESTA0SET_NAKINIS      (0x1u <<  4) /**< \brief (USBC_UESTA0SET) NAKINI Set */\r
+#define USBC_UESTA0SET_STALLEDIS    (0x1u <<  6) /**< \brief (USBC_UESTA0SET) STALLEDI Set */\r
+#define USBC_UESTA0SET_RAMACERIS    (0x1u << 11) /**< \brief (USBC_UESTA0SET) RAMACERI Set */\r
+#define USBC_UESTA0SET_NBUSYBKS     (0x1u << 12) /**< \brief (USBC_UESTA0SET) NBUSYBK Set */\r
+/* -------- USBC_UESTA1SET : (USBC Offset: 0x194) Endpoint Status Set Register -------- */\r
+#define USBC_UESTA1SET_TXINIS       (0x1u <<  0) /**< \brief (USBC_UESTA1SET) TXINI Set */\r
+#define USBC_UESTA1SET_RXOUTIS      (0x1u <<  1) /**< \brief (USBC_UESTA1SET) RXOUTI Set */\r
+#define USBC_UESTA1SET_RXSTPIS      (0x1u <<  2) /**< \brief (USBC_UESTA1SET) RXSTPI Set */\r
+#define USBC_UESTA1SET_NAKOUTIS     (0x1u <<  3) /**< \brief (USBC_UESTA1SET) NAKOUTI Set */\r
+#define USBC_UESTA1SET_NAKINIS      (0x1u <<  4) /**< \brief (USBC_UESTA1SET) NAKINI Set */\r
+#define USBC_UESTA1SET_STALLEDIS    (0x1u <<  6) /**< \brief (USBC_UESTA1SET) STALLEDI Set */\r
+#define USBC_UESTA1SET_RAMACERIS    (0x1u << 11) /**< \brief (USBC_UESTA1SET) RAMACERI Set */\r
+#define USBC_UESTA1SET_NBUSYBKS     (0x1u << 12) /**< \brief (USBC_UESTA1SET) NBUSYBK Set */\r
+/* -------- USBC_UESTA2SET : (USBC Offset: 0x198) Endpoint Status Set Register -------- */\r
+#define USBC_UESTA2SET_TXINIS       (0x1u <<  0) /**< \brief (USBC_UESTA2SET) TXINI Set */\r
+#define USBC_UESTA2SET_RXOUTIS      (0x1u <<  1) /**< \brief (USBC_UESTA2SET) RXOUTI Set */\r
+#define USBC_UESTA2SET_RXSTPIS      (0x1u <<  2) /**< \brief (USBC_UESTA2SET) RXSTPI Set */\r
+#define USBC_UESTA2SET_NAKOUTIS     (0x1u <<  3) /**< \brief (USBC_UESTA2SET) NAKOUTI Set */\r
+#define USBC_UESTA2SET_NAKINIS      (0x1u <<  4) /**< \brief (USBC_UESTA2SET) NAKINI Set */\r
+#define USBC_UESTA2SET_STALLEDIS    (0x1u <<  6) /**< \brief (USBC_UESTA2SET) STALLEDI Set */\r
+#define USBC_UESTA2SET_RAMACERIS    (0x1u << 11) /**< \brief (USBC_UESTA2SET) RAMACERI Set */\r
+#define USBC_UESTA2SET_NBUSYBKS     (0x1u << 12) /**< \brief (USBC_UESTA2SET) NBUSYBK Set */\r
+/* -------- USBC_UESTA3SET : (USBC Offset: 0x19C) Endpoint Status Set Register -------- */\r
+#define USBC_UESTA3SET_TXINIS       (0x1u <<  0) /**< \brief (USBC_UESTA3SET) TXINI Set */\r
+#define USBC_UESTA3SET_RXOUTIS      (0x1u <<  1) /**< \brief (USBC_UESTA3SET) RXOUTI Set */\r
+#define USBC_UESTA3SET_RXSTPIS      (0x1u <<  2) /**< \brief (USBC_UESTA3SET) RXSTPI Set */\r
+#define USBC_UESTA3SET_NAKOUTIS     (0x1u <<  3) /**< \brief (USBC_UESTA3SET) NAKOUTI Set */\r
+#define USBC_UESTA3SET_NAKINIS      (0x1u <<  4) /**< \brief (USBC_UESTA3SET) NAKINI Set */\r
+#define USBC_UESTA3SET_STALLEDIS    (0x1u <<  6) /**< \brief (USBC_UESTA3SET) STALLEDI Set */\r
+#define USBC_UESTA3SET_RAMACERIS    (0x1u << 11) /**< \brief (USBC_UESTA3SET) RAMACERI Set */\r
+#define USBC_UESTA3SET_NBUSYBKS     (0x1u << 12) /**< \brief (USBC_UESTA3SET) NBUSYBK Set */\r
+/* -------- USBC_UESTA4SET : (USBC Offset: 0x1A0) Endpoint Status Set Register -------- */\r
+#define USBC_UESTA4SET_TXINIS       (0x1u <<  0) /**< \brief (USBC_UESTA4SET) TXINI Set */\r
+#define USBC_UESTA4SET_RXOUTIS      (0x1u <<  1) /**< \brief (USBC_UESTA4SET) RXOUTI Set */\r
+#define USBC_UESTA4SET_RXSTPIS      (0x1u <<  2) /**< \brief (USBC_UESTA4SET) RXSTPI Set */\r
+#define USBC_UESTA4SET_NAKOUTIS     (0x1u <<  3) /**< \brief (USBC_UESTA4SET) NAKOUTI Set */\r
+#define USBC_UESTA4SET_NAKINIS      (0x1u <<  4) /**< \brief (USBC_UESTA4SET) NAKINI Set */\r
+#define USBC_UESTA4SET_STALLEDIS    (0x1u <<  6) /**< \brief (USBC_UESTA4SET) STALLEDI Set */\r
+#define USBC_UESTA4SET_RAMACERIS    (0x1u << 11) /**< \brief (USBC_UESTA4SET) RAMACERI Set */\r
+#define USBC_UESTA4SET_NBUSYBKS     (0x1u << 12) /**< \brief (USBC_UESTA4SET) NBUSYBK Set */\r
+/* -------- USBC_UESTA5SET : (USBC Offset: 0x1A4) Endpoint Status Set Register -------- */\r
+#define USBC_UESTA5SET_TXINIS       (0x1u <<  0) /**< \brief (USBC_UESTA5SET) TXINI Set */\r
+#define USBC_UESTA5SET_RXOUTIS      (0x1u <<  1) /**< \brief (USBC_UESTA5SET) RXOUTI Set */\r
+#define USBC_UESTA5SET_RXSTPIS      (0x1u <<  2) /**< \brief (USBC_UESTA5SET) RXSTPI Set */\r
+#define USBC_UESTA5SET_NAKOUTIS     (0x1u <<  3) /**< \brief (USBC_UESTA5SET) NAKOUTI Set */\r
+#define USBC_UESTA5SET_NAKINIS      (0x1u <<  4) /**< \brief (USBC_UESTA5SET) NAKINI Set */\r
+#define USBC_UESTA5SET_STALLEDIS    (0x1u <<  6) /**< \brief (USBC_UESTA5SET) STALLEDI Set */\r
+#define USBC_UESTA5SET_RAMACERIS    (0x1u << 11) /**< \brief (USBC_UESTA5SET) RAMACERI Set */\r
+#define USBC_UESTA5SET_NBUSYBKS     (0x1u << 12) /**< \brief (USBC_UESTA5SET) NBUSYBK Set */\r
+/* -------- USBC_UESTA6SET : (USBC Offset: 0x1A8) Endpoint Status Set Register -------- */\r
+#define USBC_UESTA6SET_TXINIS       (0x1u <<  0) /**< \brief (USBC_UESTA6SET) TXINI Set */\r
+#define USBC_UESTA6SET_RXOUTIS      (0x1u <<  1) /**< \brief (USBC_UESTA6SET) RXOUTI Set */\r
+#define USBC_UESTA6SET_RXSTPIS      (0x1u <<  2) /**< \brief (USBC_UESTA6SET) RXSTPI Set */\r
+#define USBC_UESTA6SET_NAKOUTIS     (0x1u <<  3) /**< \brief (USBC_UESTA6SET) NAKOUTI Set */\r
+#define USBC_UESTA6SET_NAKINIS      (0x1u <<  4) /**< \brief (USBC_UESTA6SET) NAKINI Set */\r
+#define USBC_UESTA6SET_STALLEDIS    (0x1u <<  6) /**< \brief (USBC_UESTA6SET) STALLEDI Set */\r
+#define USBC_UESTA6SET_RAMACERIS    (0x1u << 11) /**< \brief (USBC_UESTA6SET) RAMACERI Set */\r
+#define USBC_UESTA6SET_NBUSYBKS     (0x1u << 12) /**< \brief (USBC_UESTA6SET) NBUSYBK Set */\r
+/* -------- USBC_UESTA7SET : (USBC Offset: 0x1AC) Endpoint Status Set Register -------- */\r
+#define USBC_UESTA7SET_TXINIS       (0x1u <<  0) /**< \brief (USBC_UESTA7SET) TXINI Set */\r
+#define USBC_UESTA7SET_RXOUTIS      (0x1u <<  1) /**< \brief (USBC_UESTA7SET) RXOUTI Set */\r
+#define USBC_UESTA7SET_RXSTPIS      (0x1u <<  2) /**< \brief (USBC_UESTA7SET) RXSTPI Set */\r
+#define USBC_UESTA7SET_NAKOUTIS     (0x1u <<  3) /**< \brief (USBC_UESTA7SET) NAKOUTI Set */\r
+#define USBC_UESTA7SET_NAKINIS      (0x1u <<  4) /**< \brief (USBC_UESTA7SET) NAKINI Set */\r
+#define USBC_UESTA7SET_STALLEDIS    (0x1u <<  6) /**< \brief (USBC_UESTA7SET) STALLEDI Set */\r
+#define USBC_UESTA7SET_RAMACERIS    (0x1u << 11) /**< \brief (USBC_UESTA7SET) RAMACERI Set */\r
+#define USBC_UESTA7SET_NBUSYBKS     (0x1u << 12) /**< \brief (USBC_UESTA7SET) NBUSYBK Set */\r
+/* -------- USBC_UECON0 : (USBC Offset: 0x1C0) Endpoint Control Register -------- */\r
+#define USBC_UECON0_TXINE           (0x1u <<  0) /**< \brief (USBC_UECON0) TXIN Interrupt Enable */\r
+#define USBC_UECON0_RXOUTE          (0x1u <<  1) /**< \brief (USBC_UECON0) RXOUT Interrupt Enable */\r
+#define USBC_UECON0_RXSTPE          (0x1u <<  2) /**< \brief (USBC_UECON0) RXSTP Interrupt Enable */\r
+#define USBC_UECON0_NAKOUTE         (0x1u <<  3) /**< \brief (USBC_UECON0) NAKOUT Interrupt Enable */\r
+#define USBC_UECON0_NAKINE          (0x1u <<  4) /**< \brief (USBC_UECON0) NAKIN Interrupt Enable */\r
+#define USBC_UECON0_STALLEDE        (0x1u <<  6) /**< \brief (USBC_UECON0) STALLED Interrupt Enable */\r
+#define USBC_UECON0_NREPLY          (0x1u <<  8) /**< \brief (USBC_UECON0) No Reply */\r
+#define USBC_UECON0_RAMACERE        (0x1u << 11) /**< \brief (USBC_UECON0) RAMACER Interrupt Enable */\r
+#define USBC_UECON0_NBUSYBKE        (0x1u << 12) /**< \brief (USBC_UECON0) Number of Busy Banks Interrupt Enable */\r
+#define USBC_UECON0_KILLBK          (0x1u << 13) /**< \brief (USBC_UECON0) Kill IN Bank */\r
+#define USBC_UECON0_FIFOCON         (0x1u << 14) /**< \brief (USBC_UECON0) FIFO Control */\r
+#define USBC_UECON0_NYETDIS         (0x1u << 17) /**< \brief (USBC_UECON0) NYET token disable */\r
+#define USBC_UECON0_RSTDT           (0x1u << 18) /**< \brief (USBC_UECON0) Reset Data Toggle */\r
+#define USBC_UECON0_STALLRQ         (0x1u << 19) /**< \brief (USBC_UECON0) STALL Request */\r
+#define USBC_UECON0_BUSY0           (0x1u << 24) /**< \brief (USBC_UECON0) Busy Bank1 Enable */\r
+#define USBC_UECON0_BUSY1           (0x1u << 25) /**< \brief (USBC_UECON0) Busy Bank0 Enable */\r
+/* -------- USBC_UECON1 : (USBC Offset: 0x1C4) Endpoint Control Register -------- */\r
+#define USBC_UECON1_TXINE           (0x1u <<  0) /**< \brief (USBC_UECON1) TXIN Interrupt Enable */\r
+#define USBC_UECON1_RXOUTE          (0x1u <<  1) /**< \brief (USBC_UECON1) RXOUT Interrupt Enable */\r
+#define USBC_UECON1_RXSTPE          (0x1u <<  2) /**< \brief (USBC_UECON1) RXSTP Interrupt Enable */\r
+#define USBC_UECON1_NAKOUTE         (0x1u <<  3) /**< \brief (USBC_UECON1) NAKOUT Interrupt Enable */\r
+#define USBC_UECON1_NAKINE          (0x1u <<  4) /**< \brief (USBC_UECON1) NAKIN Interrupt Enable */\r
+#define USBC_UECON1_STALLEDE        (0x1u <<  6) /**< \brief (USBC_UECON1) STALLED Interrupt Enable */\r
+#define USBC_UECON1_NREPLY          (0x1u <<  8) /**< \brief (USBC_UECON1) No Reply */\r
+#define USBC_UECON1_RAMACERE        (0x1u << 11) /**< \brief (USBC_UECON1) RAMACER Interrupt Enable */\r
+#define USBC_UECON1_NBUSYBKE        (0x1u << 12) /**< \brief (USBC_UECON1) Number of Busy Banks Interrupt Enable */\r
+#define USBC_UECON1_KILLBK          (0x1u << 13) /**< \brief (USBC_UECON1) Kill IN Bank */\r
+#define USBC_UECON1_FIFOCON         (0x1u << 14) /**< \brief (USBC_UECON1) FIFO Control */\r
+#define USBC_UECON1_NYETDIS         (0x1u << 17) /**< \brief (USBC_UECON1) NYET Token Enable */\r
+#define USBC_UECON1_RSTDT           (0x1u << 18) /**< \brief (USBC_UECON1) Reset Data Toggle */\r
+#define USBC_UECON1_STALLRQ         (0x1u << 19) /**< \brief (USBC_UECON1) STALL Request */\r
+#define USBC_UECON1_BUSY0           (0x1u << 24) /**< \brief (USBC_UECON1) Busy Bank1 Enable */\r
+#define USBC_UECON1_BUSY1           (0x1u << 25) /**< \brief (USBC_UECON1) Busy Bank0 Enable */\r
+/* -------- USBC_UECON2 : (USBC Offset: 0x1C8) Endpoint Control Register -------- */\r
+#define USBC_UECON2_TXINE           (0x1u <<  0) /**< \brief (USBC_UECON2) TXIN Interrupt Enable */\r
+#define USBC_UECON2_RXOUTE          (0x1u <<  1) /**< \brief (USBC_UECON2) RXOUT Interrupt Enable */\r
+#define USBC_UECON2_RXSTPE          (0x1u <<  2) /**< \brief (USBC_UECON2) RXSTP Interrupt Enable */\r
+#define USBC_UECON2_NAKOUTE         (0x1u <<  3) /**< \brief (USBC_UECON2) NAKOUT Interrupt Enable */\r
+#define USBC_UECON2_NAKINE          (0x1u <<  4) /**< \brief (USBC_UECON2) NAKIN Interrupt Enable */\r
+#define USBC_UECON2_STALLEDE        (0x1u <<  6) /**< \brief (USBC_UECON2) STALLED Interrupt Enable */\r
+#define USBC_UECON2_NREPLY          (0x1u <<  8) /**< \brief (USBC_UECON2) No Reply */\r
+#define USBC_UECON2_RAMACERE        (0x1u << 11) /**< \brief (USBC_UECON2) RAMACER Interrupt Enable */\r
+#define USBC_UECON2_NBUSYBKE        (0x1u << 12) /**< \brief (USBC_UECON2) Number of Busy Banks Interrupt Enable */\r
+#define USBC_UECON2_KILLBK          (0x1u << 13) /**< \brief (USBC_UECON2) Kill IN Bank */\r
+#define USBC_UECON2_FIFOCON         (0x1u << 14) /**< \brief (USBC_UECON2) FIFO Control */\r
+#define USBC_UECON2_NYETDIS         (0x1u << 17) /**< \brief (USBC_UECON2) NYET Token Enable */\r
+#define USBC_UECON2_RSTDT           (0x1u << 18) /**< \brief (USBC_UECON2) Reset Data Toggle */\r
+#define USBC_UECON2_STALLRQ         (0x1u << 19) /**< \brief (USBC_UECON2) STALL Request */\r
+#define USBC_UECON2_BUSY0           (0x1u << 24) /**< \brief (USBC_UECON2) Busy Bank1 Enable */\r
+#define USBC_UECON2_BUSY1           (0x1u << 25) /**< \brief (USBC_UECON2) Busy Bank0 Enable */\r
+/* -------- USBC_UECON3 : (USBC Offset: 0x1CC) Endpoint Control Register -------- */\r
+#define USBC_UECON3_TXINE           (0x1u <<  0) /**< \brief (USBC_UECON3) TXIN Interrupt Enable */\r
+#define USBC_UECON3_RXOUTE          (0x1u <<  1) /**< \brief (USBC_UECON3) RXOUT Interrupt Enable */\r
+#define USBC_UECON3_RXSTPE          (0x1u <<  2) /**< \brief (USBC_UECON3) RXSTP Interrupt Enable */\r
+#define USBC_UECON3_NAKOUTE         (0x1u <<  3) /**< \brief (USBC_UECON3) NAKOUT Interrupt Enable */\r
+#define USBC_UECON3_NAKINE          (0x1u <<  4) /**< \brief (USBC_UECON3) NAKIN Interrupt Enable */\r
+#define USBC_UECON3_STALLEDE        (0x1u <<  6) /**< \brief (USBC_UECON3) STALLED Interrupt Enable */\r
+#define USBC_UECON3_NREPLY          (0x1u <<  8) /**< \brief (USBC_UECON3) No Reply */\r
+#define USBC_UECON3_RAMACERE        (0x1u << 11) /**< \brief (USBC_UECON3) RAMACER Interrupt Enable */\r
+#define USBC_UECON3_NBUSYBKE        (0x1u << 12) /**< \brief (USBC_UECON3) Number of Busy Banks Interrupt Enable */\r
+#define USBC_UECON3_KILLBK          (0x1u << 13) /**< \brief (USBC_UECON3) Kill IN Bank */\r
+#define USBC_UECON3_FIFOCON         (0x1u << 14) /**< \brief (USBC_UECON3) FIFO Control */\r
+#define USBC_UECON3_NYETDIS         (0x1u << 17) /**< \brief (USBC_UECON3) NYET Token Enable */\r
+#define USBC_UECON3_RSTDT           (0x1u << 18) /**< \brief (USBC_UECON3) Reset Data Toggle */\r
+#define USBC_UECON3_STALLRQ         (0x1u << 19) /**< \brief (USBC_UECON3) STALL Request */\r
+#define USBC_UECON3_BUSY0           (0x1u << 24) /**< \brief (USBC_UECON3) Busy Bank1 Enable */\r
+#define USBC_UECON3_BUSY1           (0x1u << 25) /**< \brief (USBC_UECON3) Busy Bank0 Enable */\r
+/* -------- USBC_UECON4 : (USBC Offset: 0x1D0) Endpoint Control Register -------- */\r
+#define USBC_UECON4_TXINE           (0x1u <<  0) /**< \brief (USBC_UECON4) TXIN Interrupt Enable */\r
+#define USBC_UECON4_RXOUTE          (0x1u <<  1) /**< \brief (USBC_UECON4) RXOUT Interrupt Enable */\r
+#define USBC_UECON4_RXSTPE          (0x1u <<  2) /**< \brief (USBC_UECON4) RXSTP Interrupt Enable */\r
+#define USBC_UECON4_NAKOUTE         (0x1u <<  3) /**< \brief (USBC_UECON4) NAKOUT Interrupt Enable */\r
+#define USBC_UECON4_NAKINE          (0x1u <<  4) /**< \brief (USBC_UECON4) NAKIN Interrupt Enable */\r
+#define USBC_UECON4_STALLEDE        (0x1u <<  6) /**< \brief (USBC_UECON4) STALLED Interrupt Enable */\r
+#define USBC_UECON4_NREPLY          (0x1u <<  8) /**< \brief (USBC_UECON4) No Reply */\r
+#define USBC_UECON4_RAMACERE        (0x1u << 11) /**< \brief (USBC_UECON4) RAMACER Interrupt Enable */\r
+#define USBC_UECON4_NBUSYBKE        (0x1u << 12) /**< \brief (USBC_UECON4) Number of Busy Banks Interrupt Enable */\r
+#define USBC_UECON4_KILLBK          (0x1u << 13) /**< \brief (USBC_UECON4) Kill IN Bank */\r
+#define USBC_UECON4_FIFOCON         (0x1u << 14) /**< \brief (USBC_UECON4) FIFO Control */\r
+#define USBC_UECON4_NYETDIS         (0x1u << 17) /**< \brief (USBC_UECON4) NYET Token Enable */\r
+#define USBC_UECON4_RSTDT           (0x1u << 18) /**< \brief (USBC_UECON4) Reset Data Toggle */\r
+#define USBC_UECON4_STALLRQ         (0x1u << 19) /**< \brief (USBC_UECON4) STALL Request */\r
+#define USBC_UECON4_BUSY0           (0x1u << 24) /**< \brief (USBC_UECON4) Busy Bank1 Enable */\r
+#define USBC_UECON4_BUSY1           (0x1u << 25) /**< \brief (USBC_UECON4) Busy Bank0 Enable */\r
+/* -------- USBC_UECON5 : (USBC Offset: 0x1D4) Endpoint Control Register -------- */\r
+#define USBC_UECON5_TXINE           (0x1u <<  0) /**< \brief (USBC_UECON5) TXIN Interrupt Enable */\r
+#define USBC_UECON5_RXOUTE          (0x1u <<  1) /**< \brief (USBC_UECON5) RXOUT Interrupt Enable */\r
+#define USBC_UECON5_RXSTPE          (0x1u <<  2) /**< \brief (USBC_UECON5) RXSTP Interrupt Enable */\r
+#define USBC_UECON5_NAKOUTE         (0x1u <<  3) /**< \brief (USBC_UECON5) NAKOUT Interrupt Enable */\r
+#define USBC_UECON5_NAKINE          (0x1u <<  4) /**< \brief (USBC_UECON5) NAKIN Interrupt Enable */\r
+#define USBC_UECON5_STALLEDE        (0x1u <<  6) /**< \brief (USBC_UECON5) STALLED Interrupt Enable */\r
+#define USBC_UECON5_NREPLY          (0x1u <<  8) /**< \brief (USBC_UECON5) No Reply */\r
+#define USBC_UECON5_RAMACERE        (0x1u << 11) /**< \brief (USBC_UECON5) RAMACER Interrupt Enable */\r
+#define USBC_UECON5_NBUSYBKE        (0x1u << 12) /**< \brief (USBC_UECON5) Number of Busy Banks Interrupt Enable */\r
+#define USBC_UECON5_KILLBK          (0x1u << 13) /**< \brief (USBC_UECON5) Kill IN Bank */\r
+#define USBC_UECON5_FIFOCON         (0x1u << 14) /**< \brief (USBC_UECON5) FIFO Control */\r
+#define USBC_UECON5_NYETDIS         (0x1u << 17) /**< \brief (USBC_UECON5) NYET Token Enable */\r
+#define USBC_UECON5_RSTDT           (0x1u << 18) /**< \brief (USBC_UECON5) Reset Data Toggle */\r
+#define USBC_UECON5_STALLRQ         (0x1u << 19) /**< \brief (USBC_UECON5) STALL Request */\r
+#define USBC_UECON5_BUSY0           (0x1u << 24) /**< \brief (USBC_UECON5) Busy Bank1 Enable */\r
+#define USBC_UECON5_BUSY1           (0x1u << 25) /**< \brief (USBC_UECON5) Busy Bank0 Enable */\r
+/* -------- USBC_UECON6 : (USBC Offset: 0x1D8) Endpoint Control Register -------- */\r
+#define USBC_UECON6_TXINE           (0x1u <<  0) /**< \brief (USBC_UECON6) TXIN Interrupt Enable */\r
+#define USBC_UECON6_RXOUTE          (0x1u <<  1) /**< \brief (USBC_UECON6) RXOUT Interrupt Enable */\r
+#define USBC_UECON6_RXSTPE          (0x1u <<  2) /**< \brief (USBC_UECON6) RXSTP Interrupt Enable */\r
+#define USBC_UECON6_NAKOUTE         (0x1u <<  3) /**< \brief (USBC_UECON6) NAKOUT Interrupt Enable */\r
+#define USBC_UECON6_NAKINE          (0x1u <<  4) /**< \brief (USBC_UECON6) NAKIN Interrupt Enable */\r
+#define USBC_UECON6_STALLEDE        (0x1u <<  6) /**< \brief (USBC_UECON6) STALLED Interrupt Enable */\r
+#define USBC_UECON6_NREPLY          (0x1u <<  8) /**< \brief (USBC_UECON6) No Reply */\r
+#define USBC_UECON6_RAMACERE        (0x1u << 11) /**< \brief (USBC_UECON6) RAMACER Interrupt Enable */\r
+#define USBC_UECON6_NBUSYBKE        (0x1u << 12) /**< \brief (USBC_UECON6) Number of Busy Banks Interrupt Enable */\r
+#define USBC_UECON6_KILLBK          (0x1u << 13) /**< \brief (USBC_UECON6) Kill IN Bank */\r
+#define USBC_UECON6_FIFOCON         (0x1u << 14) /**< \brief (USBC_UECON6) FIFO Control */\r
+#define USBC_UECON6_NYETDIS         (0x1u << 17) /**< \brief (USBC_UECON6) NYET Token Enable */\r
+#define USBC_UECON6_RSTDT           (0x1u << 18) /**< \brief (USBC_UECON6) Reset Data Toggle */\r
+#define USBC_UECON6_STALLRQ         (0x1u << 19) /**< \brief (USBC_UECON6) STALL Request */\r
+#define USBC_UECON6_BUSY0           (0x1u << 24) /**< \brief (USBC_UECON6) Busy Bank1 Enable */\r
+#define USBC_UECON6_BUSY1           (0x1u << 25) /**< \brief (USBC_UECON6) Busy Bank0 Enable */\r
+/* -------- USBC_UECON7 : (USBC Offset: 0x1DC) Endpoint Control Register -------- */\r
+#define USBC_UECON7_TXINE           (0x1u <<  0) /**< \brief (USBC_UECON7) TXIN Interrupt Enable */\r
+#define USBC_UECON7_RXOUTE          (0x1u <<  1) /**< \brief (USBC_UECON7) RXOUT Interrupt Enable */\r
+#define USBC_UECON7_RXSTPE          (0x1u <<  2) /**< \brief (USBC_UECON7) RXSTP Interrupt Enable */\r
+#define USBC_UECON7_NAKOUTE         (0x1u <<  3) /**< \brief (USBC_UECON7) NAKOUT Interrupt Enable */\r
+#define USBC_UECON7_NAKINE          (0x1u <<  4) /**< \brief (USBC_UECON7) NAKIN Interrupt Enable */\r
+#define USBC_UECON7_STALLEDE        (0x1u <<  6) /**< \brief (USBC_UECON7) STALLED Interrupt Enable */\r
+#define USBC_UECON7_NREPLY          (0x1u <<  8) /**< \brief (USBC_UECON7) No Reply */\r
+#define USBC_UECON7_RAMACERE        (0x1u << 11) /**< \brief (USBC_UECON7) RAMACER Interrupt Enable */\r
+#define USBC_UECON7_NBUSYBKE        (0x1u << 12) /**< \brief (USBC_UECON7) Number of Busy Banks Interrupt Enable */\r
+#define USBC_UECON7_KILLBK          (0x1u << 13) /**< \brief (USBC_UECON7) Kill IN Bank */\r
+#define USBC_UECON7_FIFOCON         (0x1u << 14) /**< \brief (USBC_UECON7) FIFO Control */\r
+#define USBC_UECON7_NYETDIS         (0x1u << 17) /**< \brief (USBC_UECON7) NYET Token Enable */\r
+#define USBC_UECON7_RSTDT           (0x1u << 18) /**< \brief (USBC_UECON7) Reset Data Toggle */\r
+#define USBC_UECON7_STALLRQ         (0x1u << 19) /**< \brief (USBC_UECON7) STALL Request */\r
+#define USBC_UECON7_BUSY0           (0x1u << 24) /**< \brief (USBC_UECON7) Busy Bank1 Enable */\r
+#define USBC_UECON7_BUSY1           (0x1u << 25) /**< \brief (USBC_UECON7) Busy Bank0 Enable */\r
+/* -------- USBC_UECON0SET : (USBC Offset: 0x1F0) Endpoint Control Set Register -------- */\r
+#define USBC_UECON0SET_TXINES       (0x1u <<  0) /**< \brief (USBC_UECON0SET) TXINE Set */\r
+#define USBC_UECON0SET_RXOUTES      (0x1u <<  1) /**< \brief (USBC_UECON0SET) RXOUTE Set */\r
+#define USBC_UECON0SET_RXSTPES      (0x1u <<  2) /**< \brief (USBC_UECON0SET) RXSTPE Set */\r
+#define USBC_UECON0SET_NAKOUTES     (0x1u <<  3) /**< \brief (USBC_UECON0SET) NAKOUTE Set */\r
+#define USBC_UECON0SET_NAKINES      (0x1u <<  4) /**< \brief (USBC_UECON0SET) NAKINE Set */\r
+#define USBC_UECON0SET_STALLEDES    (0x1u <<  6) /**< \brief (USBC_UECON0SET) STALLEDE Set */\r
+#define USBC_UECON0SET_NREPLYS      (0x1u <<  8) /**< \brief (USBC_UECON0SET) NREPLY Set */\r
+#define USBC_UECON0SET_RAMACERES    (0x1u << 11) /**< \brief (USBC_UECON0SET) RAMACERE Set */\r
+#define USBC_UECON0SET_NBUSYBKES    (0x1u << 12) /**< \brief (USBC_UECON0SET) NBUSYBKE Set */\r
+#define USBC_UECON0SET_KILLBKS      (0x1u << 13) /**< \brief (USBC_UECON0SET) KILLBK Set */\r
+#define USBC_UECON0SET_NYETDISS     (0x1u << 17) /**< \brief (USBC_UECON0SET) NYETDIS Set */\r
+#define USBC_UECON0SET_RSTDTS       (0x1u << 18) /**< \brief (USBC_UECON0SET) RSTDT Set */\r
+#define USBC_UECON0SET_STALLRQS     (0x1u << 19) /**< \brief (USBC_UECON0SET) STALLRQ Set */\r
+#define USBC_UECON0SET_BUSY0S       (0x1u << 24) /**< \brief (USBC_UECON0SET) BUSY0 Set */\r
+#define USBC_UECON0SET_BUSY1S       (0x1u << 25) /**< \brief (USBC_UECON0SET) BUSY1 Set */\r
+/* -------- USBC_UECON1SET : (USBC Offset: 0x1F4) Endpoint Control Set Register -------- */\r
+#define USBC_UECON1SET_TXINES       (0x1u <<  0) /**< \brief (USBC_UECON1SET) TXINE Set */\r
+#define USBC_UECON1SET_RXOUTES      (0x1u <<  1) /**< \brief (USBC_UECON1SET) RXOUTE Set */\r
+#define USBC_UECON1SET_RXSTPES      (0x1u <<  2) /**< \brief (USBC_UECON1SET) RXSTPE Set */\r
+#define USBC_UECON1SET_NAKOUTES     (0x1u <<  3) /**< \brief (USBC_UECON1SET) NAKOUTE Set */\r
+#define USBC_UECON1SET_NAKINES      (0x1u <<  4) /**< \brief (USBC_UECON1SET) NAKINE Set */\r
+#define USBC_UECON1SET_STALLEDES    (0x1u <<  6) /**< \brief (USBC_UECON1SET) STALLEDE Set */\r
+#define USBC_UECON1SET_NREPLYS      (0x1u <<  8) /**< \brief (USBC_UECON1SET) NREPLY Set */\r
+#define USBC_UECON1SET_RAMACERES    (0x1u << 11) /**< \brief (USBC_UECON1SET) RAMACERE Set */\r
+#define USBC_UECON1SET_NBUSYBKES    (0x1u << 12) /**< \brief (USBC_UECON1SET) NBUSYBKE Set */\r
+#define USBC_UECON1SET_KILLBKS      (0x1u << 13) /**< \brief (USBC_UECON1SET) KILLBK Set */\r
+#define USBC_UECON1SET_NYETDISS     (0x1u << 17) /**< \brief (USBC_UECON1SET) NYETDIS Set */\r
+#define USBC_UECON1SET_RSTDTS       (0x1u << 18) /**< \brief (USBC_UECON1SET) RSTDT Set */\r
+#define USBC_UECON1SET_STALLRQS     (0x1u << 19) /**< \brief (USBC_UECON1SET) STALLRQ Set */\r
+#define USBC_UECON1SET_BUSY0S       (0x1u << 24) /**< \brief (USBC_UECON1SET) BUSY0 Set */\r
+#define USBC_UECON1SET_BUSY1S       (0x1u << 25) /**< \brief (USBC_UECON1SET) BUSY1 Set */\r
+/* -------- USBC_UECON2SET : (USBC Offset: 0x1F8) Endpoint Control Set Register -------- */\r
+#define USBC_UECON2SET_TXINES       (0x1u <<  0) /**< \brief (USBC_UECON2SET) TXINE Set */\r
+#define USBC_UECON2SET_RXOUTES      (0x1u <<  1) /**< \brief (USBC_UECON2SET) RXOUTE Set */\r
+#define USBC_UECON2SET_RXSTPES      (0x1u <<  2) /**< \brief (USBC_UECON2SET) RXSTPE Set */\r
+#define USBC_UECON2SET_NAKOUTES     (0x1u <<  3) /**< \brief (USBC_UECON2SET) NAKOUTE Set */\r
+#define USBC_UECON2SET_NAKINES      (0x1u <<  4) /**< \brief (USBC_UECON2SET) NAKINE Set */\r
+#define USBC_UECON2SET_STALLEDES    (0x1u <<  6) /**< \brief (USBC_UECON2SET) STALLEDE Set */\r
+#define USBC_UECON2SET_NREPLYS      (0x1u <<  8) /**< \brief (USBC_UECON2SET) NREPLY Set */\r
+#define USBC_UECON2SET_RAMACERES    (0x1u << 11) /**< \brief (USBC_UECON2SET) RAMACERE Set */\r
+#define USBC_UECON2SET_NBUSYBKES    (0x1u << 12) /**< \brief (USBC_UECON2SET) NBUSYBKE Set */\r
+#define USBC_UECON2SET_KILLBKS      (0x1u << 13) /**< \brief (USBC_UECON2SET) KILLBK Set */\r
+#define USBC_UECON2SET_NYETDISS     (0x1u << 17) /**< \brief (USBC_UECON2SET) NYETDIS Set */\r
+#define USBC_UECON2SET_RSTDTS       (0x1u << 18) /**< \brief (USBC_UECON2SET) RSTDT Set */\r
+#define USBC_UECON2SET_STALLRQS     (0x1u << 19) /**< \brief (USBC_UECON2SET) STALLRQ Set */\r
+#define USBC_UECON2SET_BUSY0S       (0x1u << 24) /**< \brief (USBC_UECON2SET) BUSY0 Set */\r
+#define USBC_UECON2SET_BUSY1S       (0x1u << 25) /**< \brief (USBC_UECON2SET) BUSY1 Set */\r
+/* -------- USBC_UECON3SET : (USBC Offset: 0x1FC) Endpoint Control Set Register -------- */\r
+#define USBC_UECON3SET_TXINES       (0x1u <<  0) /**< \brief (USBC_UECON3SET) TXINE Set */\r
+#define USBC_UECON3SET_RXOUTES      (0x1u <<  1) /**< \brief (USBC_UECON3SET) RXOUTE Set */\r
+#define USBC_UECON3SET_RXSTPES      (0x1u <<  2) /**< \brief (USBC_UECON3SET) RXSTPE Set */\r
+#define USBC_UECON3SET_NAKOUTES     (0x1u <<  3) /**< \brief (USBC_UECON3SET) NAKOUTE Set */\r
+#define USBC_UECON3SET_NAKINES      (0x1u <<  4) /**< \brief (USBC_UECON3SET) NAKINE Set */\r
+#define USBC_UECON3SET_STALLEDES    (0x1u <<  6) /**< \brief (USBC_UECON3SET) STALLEDE Set */\r
+#define USBC_UECON3SET_NREPLYS      (0x1u <<  8) /**< \brief (USBC_UECON3SET) NREPLY Set */\r
+#define USBC_UECON3SET_RAMACERES    (0x1u << 11) /**< \brief (USBC_UECON3SET) RAMACERE Set */\r
+#define USBC_UECON3SET_NBUSYBKES    (0x1u << 12) /**< \brief (USBC_UECON3SET) NBUSYBKE Set */\r
+#define USBC_UECON3SET_KILLBKS      (0x1u << 13) /**< \brief (USBC_UECON3SET) KILLBK Set */\r
+#define USBC_UECON3SET_NYETDISS     (0x1u << 17) /**< \brief (USBC_UECON3SET) NYETDIS Set */\r
+#define USBC_UECON3SET_RSTDTS       (0x1u << 18) /**< \brief (USBC_UECON3SET) RSTDT Set */\r
+#define USBC_UECON3SET_STALLRQS     (0x1u << 19) /**< \brief (USBC_UECON3SET) STALLRQ Set */\r
+#define USBC_UECON3SET_BUSY0S       (0x1u << 24) /**< \brief (USBC_UECON3SET) BUSY0 Set */\r
+#define USBC_UECON3SET_BUSY1S       (0x1u << 25) /**< \brief (USBC_UECON3SET) BUSY1 Set */\r
+/* -------- USBC_UECON4SET : (USBC Offset: 0x200) Endpoint Control Set Register -------- */\r
+#define USBC_UECON4SET_TXINES       (0x1u <<  0) /**< \brief (USBC_UECON4SET) TXINE Set */\r
+#define USBC_UECON4SET_RXOUTES      (0x1u <<  1) /**< \brief (USBC_UECON4SET) RXOUTE Set */\r
+#define USBC_UECON4SET_RXSTPES      (0x1u <<  2) /**< \brief (USBC_UECON4SET) RXSTPE Set */\r
+#define USBC_UECON4SET_NAKOUTES     (0x1u <<  3) /**< \brief (USBC_UECON4SET) NAKOUTE Set */\r
+#define USBC_UECON4SET_NAKINES      (0x1u <<  4) /**< \brief (USBC_UECON4SET) NAKINE Set */\r
+#define USBC_UECON4SET_STALLEDES    (0x1u <<  6) /**< \brief (USBC_UECON4SET) STALLEDE Set */\r
+#define USBC_UECON4SET_NREPLYS      (0x1u <<  8) /**< \brief (USBC_UECON4SET) NREPLY Set */\r
+#define USBC_UECON4SET_RAMACERES    (0x1u << 11) /**< \brief (USBC_UECON4SET) RAMACERE Set */\r
+#define USBC_UECON4SET_NBUSYBKES    (0x1u << 12) /**< \brief (USBC_UECON4SET) NBUSYBKE Set */\r
+#define USBC_UECON4SET_KILLBKS      (0x1u << 13) /**< \brief (USBC_UECON4SET) KILLBK Set */\r
+#define USBC_UECON4SET_NYETDISS     (0x1u << 17) /**< \brief (USBC_UECON4SET) NYETDIS Set */\r
+#define USBC_UECON4SET_RSTDTS       (0x1u << 18) /**< \brief (USBC_UECON4SET) RSTDT Set */\r
+#define USBC_UECON4SET_STALLRQS     (0x1u << 19) /**< \brief (USBC_UECON4SET) STALLRQ Set */\r
+#define USBC_UECON4SET_BUSY0S       (0x1u << 24) /**< \brief (USBC_UECON4SET) BUSY0 Set */\r
+#define USBC_UECON4SET_BUSY1S       (0x1u << 25) /**< \brief (USBC_UECON4SET) BUSY1 Set */\r
+/* -------- USBC_UECON5SET : (USBC Offset: 0x204) Endpoint Control Set Register -------- */\r
+#define USBC_UECON5SET_TXINES       (0x1u <<  0) /**< \brief (USBC_UECON5SET) TXINE Set */\r
+#define USBC_UECON5SET_RXOUTES      (0x1u <<  1) /**< \brief (USBC_UECON5SET) RXOUTE Set */\r
+#define USBC_UECON5SET_RXSTPES      (0x1u <<  2) /**< \brief (USBC_UECON5SET) RXSTPE Set */\r
+#define USBC_UECON5SET_NAKOUTES     (0x1u <<  3) /**< \brief (USBC_UECON5SET) NAKOUTE Set */\r
+#define USBC_UECON5SET_NAKINES      (0x1u <<  4) /**< \brief (USBC_UECON5SET) NAKINE Set */\r
+#define USBC_UECON5SET_STALLEDES    (0x1u <<  6) /**< \brief (USBC_UECON5SET) STALLEDE Set */\r
+#define USBC_UECON5SET_NREPLYS      (0x1u <<  8) /**< \brief (USBC_UECON5SET) NREPLY Set */\r
+#define USBC_UECON5SET_RAMACERES    (0x1u << 11) /**< \brief (USBC_UECON5SET) RAMACERE Set */\r
+#define USBC_UECON5SET_NBUSYBKES    (0x1u << 12) /**< \brief (USBC_UECON5SET) NBUSYBKE Set */\r
+#define USBC_UECON5SET_KILLBKS      (0x1u << 13) /**< \brief (USBC_UECON5SET) KILLBK Set */\r
+#define USBC_UECON5SET_NYETDISS     (0x1u << 17) /**< \brief (USBC_UECON5SET) NYETDIS Set */\r
+#define USBC_UECON5SET_RSTDTS       (0x1u << 18) /**< \brief (USBC_UECON5SET) RSTDT Set */\r
+#define USBC_UECON5SET_STALLRQS     (0x1u << 19) /**< \brief (USBC_UECON5SET) STALLRQ Set */\r
+#define USBC_UECON5SET_BUSY0S       (0x1u << 24) /**< \brief (USBC_UECON5SET) BUSY0 Set */\r
+#define USBC_UECON5SET_BUSY1S       (0x1u << 25) /**< \brief (USBC_UECON5SET) BUSY1 Set */\r
+/* -------- USBC_UECON6SET : (USBC Offset: 0x208) Endpoint Control Set Register -------- */\r
+#define USBC_UECON6SET_TXINES       (0x1u <<  0) /**< \brief (USBC_UECON6SET) TXINE Set */\r
+#define USBC_UECON6SET_RXOUTES      (0x1u <<  1) /**< \brief (USBC_UECON6SET) RXOUTE Set */\r
+#define USBC_UECON6SET_RXSTPES      (0x1u <<  2) /**< \brief (USBC_UECON6SET) RXSTPE Set */\r
+#define USBC_UECON6SET_NAKOUTES     (0x1u <<  3) /**< \brief (USBC_UECON6SET) NAKOUTE Set */\r
+#define USBC_UECON6SET_NAKINES      (0x1u <<  4) /**< \brief (USBC_UECON6SET) NAKINE Set */\r
+#define USBC_UECON6SET_STALLEDES    (0x1u <<  6) /**< \brief (USBC_UECON6SET) STALLEDE Set */\r
+#define USBC_UECON6SET_NREPLYS      (0x1u <<  8) /**< \brief (USBC_UECON6SET) NREPLY Set */\r
+#define USBC_UECON6SET_RAMACERES    (0x1u << 11) /**< \brief (USBC_UECON6SET) RAMACERE Set */\r
+#define USBC_UECON6SET_NBUSYBKES    (0x1u << 12) /**< \brief (USBC_UECON6SET) NBUSYBKE Set */\r
+#define USBC_UECON6SET_KILLBKS      (0x1u << 13) /**< \brief (USBC_UECON6SET) KILLBK Set */\r
+#define USBC_UECON6SET_NYETDISS     (0x1u << 17) /**< \brief (USBC_UECON6SET) NYETDIS Set */\r
+#define USBC_UECON6SET_RSTDTS       (0x1u << 18) /**< \brief (USBC_UECON6SET) RSTDT Set */\r
+#define USBC_UECON6SET_STALLRQS     (0x1u << 19) /**< \brief (USBC_UECON6SET) STALLRQ Set */\r
+#define USBC_UECON6SET_BUSY0S       (0x1u << 24) /**< \brief (USBC_UECON6SET) BUSY0 Set */\r
+#define USBC_UECON6SET_BUSY1S       (0x1u << 25) /**< \brief (USBC_UECON6SET) BUSY1 Set */\r
+/* -------- USBC_UECON7SET : (USBC Offset: 0x20C) Endpoint Control Set Register -------- */\r
+#define USBC_UECON7SET_TXINES       (0x1u <<  0) /**< \brief (USBC_UECON7SET) TXINE Set */\r
+#define USBC_UECON7SET_RXOUTES      (0x1u <<  1) /**< \brief (USBC_UECON7SET) RXOUTE Set */\r
+#define USBC_UECON7SET_RXSTPES      (0x1u <<  2) /**< \brief (USBC_UECON7SET) RXSTPE Set */\r
+#define USBC_UECON7SET_NAKOUTES     (0x1u <<  3) /**< \brief (USBC_UECON7SET) NAKOUTE Set */\r
+#define USBC_UECON7SET_NAKINES      (0x1u <<  4) /**< \brief (USBC_UECON7SET) NAKINE Set */\r
+#define USBC_UECON7SET_STALLEDES    (0x1u <<  6) /**< \brief (USBC_UECON7SET) STALLEDE Set */\r
+#define USBC_UECON7SET_NREPLYS      (0x1u <<  8) /**< \brief (USBC_UECON7SET) NREPLY Set */\r
+#define USBC_UECON7SET_RAMACERES    (0x1u << 11) /**< \brief (USBC_UECON7SET) RAMACERE Set */\r
+#define USBC_UECON7SET_NBUSYBKES    (0x1u << 12) /**< \brief (USBC_UECON7SET) NBUSYBKE Set */\r
+#define USBC_UECON7SET_KILLBKS      (0x1u << 13) /**< \brief (USBC_UECON7SET) KILLBK Set */\r
+#define USBC_UECON7SET_NYETDISS     (0x1u << 17) /**< \brief (USBC_UECON7SET) NYETDIS Set */\r
+#define USBC_UECON7SET_RSTDTS       (0x1u << 18) /**< \brief (USBC_UECON7SET) RSTDT Set */\r
+#define USBC_UECON7SET_STALLRQS     (0x1u << 19) /**< \brief (USBC_UECON7SET) STALLRQ Set */\r
+#define USBC_UECON7SET_BUSY0S       (0x1u << 24) /**< \brief (USBC_UECON7SET) BUSY0 Set */\r
+#define USBC_UECON7SET_BUSY1S       (0x1u << 25) /**< \brief (USBC_UECON7SET) BUSY1 Set */\r
+/* -------- USBC_UECON0CLR : (USBC Offset: 0x220) Endpoint Control Clear Register -------- */\r
+#define USBC_UECON0CLR_TXINEC       (0x1u <<  0) /**< \brief (USBC_UECON0CLR) TXINE Clear */\r
+#define USBC_UECON0CLR_RXOUTEC      (0x1u <<  1) /**< \brief (USBC_UECON0CLR) RXOUTE Clear */\r
+#define USBC_UECON0CLR_RXSTPEC      (0x1u <<  2) /**< \brief (USBC_UECON0CLR) RXSTPE Clear */\r
+#define USBC_UECON0CLR_NAKOUTEC     (0x1u <<  3) /**< \brief (USBC_UECON0CLR) NAKOUTE Clear */\r
+#define USBC_UECON0CLR_NAKINEC      (0x1u <<  4) /**< \brief (USBC_UECON0CLR) NAKINE Clear */\r
+#define USBC_UECON0CLR_STALLEDEC    (0x1u <<  6) /**< \brief (USBC_UECON0CLR) STALLEDE Clear */\r
+#define USBC_UECON0CLR_NREPLYC      (0x1u <<  8) /**< \brief (USBC_UECON0CLR) NREPLY Clear */\r
+#define USBC_UECON0CLR_RAMACEREC    (0x1u << 11) /**< \brief (USBC_UECON0CLR) RAMACERE Clear */\r
+#define USBC_UECON0CLR_NBUSYBKEC    (0x1u << 12) /**< \brief (USBC_UECON0CLR) NBUSYBKE Clear */\r
+#define USBC_UECON0CLR_FIFOCONC     (0x1u << 14) /**< \brief (USBC_UECON0CLR) FIFOCON Clear */\r
+#define USBC_UECON0CLR_NYETDISC     (0x1u << 17) /**< \brief (USBC_UECON0CLR) NYETDIS Clear */\r
+#define USBC_UECON0CLR_STALLRQC     (0x1u << 19) /**< \brief (USBC_UECON0CLR) STALLRQ Clear */\r
+#define USBC_UECON0CLR_BUSY0C       (0x1u << 24) /**< \brief (USBC_UECON0CLR) BUSY0 Clear */\r
+#define USBC_UECON0CLR_BUSY1C       (0x1u << 25) /**< \brief (USBC_UECON0CLR) BUSY1 Clear */\r
+/* -------- USBC_UECON1CLR : (USBC Offset: 0x224) TXINE Clear -------- */\r
+#define USBC_UECON1CLR_TXINEC       (0x1u <<  0) /**< \brief (USBC_UECON1CLR) TXINE Clear */\r
+#define USBC_UECON1CLR_RXOUTEC      (0x1u <<  1) /**< \brief (USBC_UECON1CLR) RXOUTE Clear */\r
+#define USBC_UECON1CLR_RXSTPEC      (0x1u <<  2) /**< \brief (USBC_UECON1CLR) RXOUTE Clear */\r
+#define USBC_UECON1CLR_NAKOUTEC     (0x1u <<  3) /**< \brief (USBC_UECON1CLR) NAKOUTE Clear */\r
+#define USBC_UECON1CLR_NAKINEC      (0x1u <<  4) /**< \brief (USBC_UECON1CLR) NAKINE Clear */\r
+#define USBC_UECON1CLR_STALLEDEC    (0x1u <<  6) /**< \brief (USBC_UECON1CLR) RXSTPE Clear */\r
+#define USBC_UECON1CLR_NREPLYC      (0x1u <<  8) /**< \brief (USBC_UECON1CLR) NREPLY Clear */\r
+#define USBC_UECON1CLR_RAMACEREC    (0x1u << 11) /**< \brief (USBC_UECON1CLR) RAMACERE Clear */\r
+#define USBC_UECON1CLR_NBUSYBKEC    (0x1u << 12) /**< \brief (USBC_UECON1CLR) NBUSYBKE Clear */\r
+#define USBC_UECON1CLR_FIFOCONC     (0x1u << 14) /**< \brief (USBC_UECON1CLR) FIFOCON Clear */\r
+#define USBC_UECON1CLR_NYETDISC     (0x1u << 17) /**< \brief (USBC_UECON1CLR) NYETDIS Clear */\r
+#define USBC_UECON1CLR_STALLRQC     (0x1u << 19) /**< \brief (USBC_UECON1CLR) STALLEDE Clear */\r
+#define USBC_UECON1CLR_BUSY0C       (0x1u << 24) /**< \brief (USBC_UECON1CLR) BUSY0 Clear */\r
+#define USBC_UECON1CLR_BUSY1C       (0x1u << 25) /**< \brief (USBC_UECON1CLR) BUSY1 Clear */\r
+/* -------- USBC_UECON2CLR : (USBC Offset: 0x228) TXINE Clear -------- */\r
+#define USBC_UECON2CLR_TXINEC       (0x1u <<  0) /**< \brief (USBC_UECON2CLR) TXINE Clear */\r
+#define USBC_UECON2CLR_RXOUTEC      (0x1u <<  1) /**< \brief (USBC_UECON2CLR) RXOUTE Clear */\r
+#define USBC_UECON2CLR_RXSTPEC      (0x1u <<  2) /**< \brief (USBC_UECON2CLR) RXOUTE Clear */\r
+#define USBC_UECON2CLR_NAKOUTEC     (0x1u <<  3) /**< \brief (USBC_UECON2CLR) NAKOUTE Clear */\r
+#define USBC_UECON2CLR_NAKINEC      (0x1u <<  4) /**< \brief (USBC_UECON2CLR) NAKINE Clear */\r
+#define USBC_UECON2CLR_STALLEDEC    (0x1u <<  6) /**< \brief (USBC_UECON2CLR) RXSTPE Clear */\r
+#define USBC_UECON2CLR_NREPLYC      (0x1u <<  8) /**< \brief (USBC_UECON2CLR) NREPLY Clear */\r
+#define USBC_UECON2CLR_RAMACEREC    (0x1u << 11) /**< \brief (USBC_UECON2CLR) RAMACERE Clear */\r
+#define USBC_UECON2CLR_NBUSYBKEC    (0x1u << 12) /**< \brief (USBC_UECON2CLR) NBUSYBKE Clear */\r
+#define USBC_UECON2CLR_FIFOCONC     (0x1u << 14) /**< \brief (USBC_UECON2CLR) FIFOCON Clear */\r
+#define USBC_UECON2CLR_NYETDISC     (0x1u << 17) /**< \brief (USBC_UECON2CLR) NYETDIS Clear */\r
+#define USBC_UECON2CLR_STALLRQC     (0x1u << 19) /**< \brief (USBC_UECON2CLR) STALLEDE Clear */\r
+#define USBC_UECON2CLR_BUSY0C       (0x1u << 24) /**< \brief (USBC_UECON2CLR) BUSY0 Clear */\r
+#define USBC_UECON2CLR_BUSY1C       (0x1u << 25) /**< \brief (USBC_UECON2CLR) BUSY1 Clear */\r
+/* -------- USBC_UECON3CLR : (USBC Offset: 0x22C) TXINE Clear -------- */\r
+#define USBC_UECON3CLR_TXINEC       (0x1u <<  0) /**< \brief (USBC_UECON3CLR) TXINE Clear */\r
+#define USBC_UECON3CLR_RXOUTEC      (0x1u <<  1) /**< \brief (USBC_UECON3CLR) RXOUTE Clear */\r
+#define USBC_UECON3CLR_RXSTPEC      (0x1u <<  2) /**< \brief (USBC_UECON3CLR) RXOUTE Clear */\r
+#define USBC_UECON3CLR_NAKOUTEC     (0x1u <<  3) /**< \brief (USBC_UECON3CLR) NAKOUTE Clear */\r
+#define USBC_UECON3CLR_NAKINEC      (0x1u <<  4) /**< \brief (USBC_UECON3CLR) NAKINE Clear */\r
+#define USBC_UECON3CLR_STALLEDEC    (0x1u <<  6) /**< \brief (USBC_UECON3CLR) RXSTPE Clear */\r
+#define USBC_UECON3CLR_NREPLYC      (0x1u <<  8) /**< \brief (USBC_UECON3CLR) NREPLY Clear */\r
+#define USBC_UECON3CLR_RAMACEREC    (0x1u << 11) /**< \brief (USBC_UECON3CLR) RAMACERE Clear */\r
+#define USBC_UECON3CLR_NBUSYBKEC    (0x1u << 12) /**< \brief (USBC_UECON3CLR) NBUSYBKE Clear */\r
+#define USBC_UECON3CLR_FIFOCONC     (0x1u << 14) /**< \brief (USBC_UECON3CLR) FIFOCON Clear */\r
+#define USBC_UECON3CLR_NYETDISC     (0x1u << 17) /**< \brief (USBC_UECON3CLR) NYETDIS Clear */\r
+#define USBC_UECON3CLR_STALLRQC     (0x1u << 19) /**< \brief (USBC_UECON3CLR) STALLEDE Clear */\r
+#define USBC_UECON3CLR_BUSY0C       (0x1u << 24) /**< \brief (USBC_UECON3CLR) BUSY0 Clear */\r
+#define USBC_UECON3CLR_BUSY1C       (0x1u << 25) /**< \brief (USBC_UECON3CLR) BUSY1 Clear */\r
+/* -------- USBC_UECON4CLR : (USBC Offset: 0x230) TXINE Clear -------- */\r
+#define USBC_UECON4CLR_TXINEC       (0x1u <<  0) /**< \brief (USBC_UECON4CLR) TXINE Clear */\r
+#define USBC_UECON4CLR_RXOUTEC      (0x1u <<  1) /**< \brief (USBC_UECON4CLR) RXOUTE Clear */\r
+#define USBC_UECON4CLR_RXSTPEC      (0x1u <<  2) /**< \brief (USBC_UECON4CLR) RXOUTE Clear */\r
+#define USBC_UECON4CLR_NAKOUTEC     (0x1u <<  3) /**< \brief (USBC_UECON4CLR) NAKOUTE Clear */\r
+#define USBC_UECON4CLR_NAKINEC      (0x1u <<  4) /**< \brief (USBC_UECON4CLR) NAKINE Clear */\r
+#define USBC_UECON4CLR_STALLEDEC    (0x1u <<  6) /**< \brief (USBC_UECON4CLR) RXSTPE Clear */\r
+#define USBC_UECON4CLR_NREPLYC      (0x1u <<  8) /**< \brief (USBC_UECON4CLR) NREPLY Clear */\r
+#define USBC_UECON4CLR_RAMACEREC    (0x1u << 11) /**< \brief (USBC_UECON4CLR) RAMACERE Clear */\r
+#define USBC_UECON4CLR_NBUSYBKEC    (0x1u << 12) /**< \brief (USBC_UECON4CLR) NBUSYBKE Clear */\r
+#define USBC_UECON4CLR_FIFOCONC     (0x1u << 14) /**< \brief (USBC_UECON4CLR) FIFOCON Clear */\r
+#define USBC_UECON4CLR_NYETDISC     (0x1u << 17) /**< \brief (USBC_UECON4CLR) NYETDIS Clear */\r
+#define USBC_UECON4CLR_STALLRQC     (0x1u << 19) /**< \brief (USBC_UECON4CLR) STALLEDE Clear */\r
+#define USBC_UECON4CLR_BUSY0C       (0x1u << 24) /**< \brief (USBC_UECON4CLR) BUSY0 Clear */\r
+#define USBC_UECON4CLR_BUSY1C       (0x1u << 25) /**< \brief (USBC_UECON4CLR) BUSY1 Clear */\r
+/* -------- USBC_UECON5CLR : (USBC Offset: 0x234) TXINE Clear -------- */\r
+#define USBC_UECON5CLR_TXINEC       (0x1u <<  0) /**< \brief (USBC_UECON5CLR) TXINE Clear */\r
+#define USBC_UECON5CLR_RXOUTEC      (0x1u <<  1) /**< \brief (USBC_UECON5CLR) RXOUTE Clear */\r
+#define USBC_UECON5CLR_RXSTPEC      (0x1u <<  2) /**< \brief (USBC_UECON5CLR) RXOUTE Clear */\r
+#define USBC_UECON5CLR_NAKOUTEC     (0x1u <<  3) /**< \brief (USBC_UECON5CLR) NAKOUTE Clear */\r
+#define USBC_UECON5CLR_NAKINEC      (0x1u <<  4) /**< \brief (USBC_UECON5CLR) NAKINE Clear */\r
+#define USBC_UECON5CLR_STALLEDEC    (0x1u <<  6) /**< \brief (USBC_UECON5CLR) RXSTPE Clear */\r
+#define USBC_UECON5CLR_NREPLYC      (0x1u <<  8) /**< \brief (USBC_UECON5CLR) NREPLY Clear */\r
+#define USBC_UECON5CLR_RAMACEREC    (0x1u << 11) /**< \brief (USBC_UECON5CLR) RAMACERE Clear */\r
+#define USBC_UECON5CLR_NBUSYBKEC    (0x1u << 12) /**< \brief (USBC_UECON5CLR) NBUSYBKE Clear */\r
+#define USBC_UECON5CLR_FIFOCONC     (0x1u << 14) /**< \brief (USBC_UECON5CLR) FIFOCON Clear */\r
+#define USBC_UECON5CLR_NYETDISC     (0x1u << 17) /**< \brief (USBC_UECON5CLR) NYETDIS Clear */\r
+#define USBC_UECON5CLR_STALLRQC     (0x1u << 19) /**< \brief (USBC_UECON5CLR) STALLEDE Clear */\r
+#define USBC_UECON5CLR_BUSY0C       (0x1u << 24) /**< \brief (USBC_UECON5CLR) BUSY0 Clear */\r
+#define USBC_UECON5CLR_BUSY1C       (0x1u << 25) /**< \brief (USBC_UECON5CLR) BUSY1 Clear */\r
+/* -------- USBC_UECON6CLR : (USBC Offset: 0x238) TXINE Clear -------- */\r
+#define USBC_UECON6CLR_TXINEC       (0x1u <<  0) /**< \brief (USBC_UECON6CLR) TXINE Clear */\r
+#define USBC_UECON6CLR_RXOUTEC      (0x1u <<  1) /**< \brief (USBC_UECON6CLR) RXOUTE Clear */\r
+#define USBC_UECON6CLR_RXSTPEC      (0x1u <<  2) /**< \brief (USBC_UECON6CLR) RXOUTE Clear */\r
+#define USBC_UECON6CLR_NAKOUTEC     (0x1u <<  3) /**< \brief (USBC_UECON6CLR) NAKOUTE Clear */\r
+#define USBC_UECON6CLR_NAKINEC      (0x1u <<  4) /**< \brief (USBC_UECON6CLR) NAKINE Clear */\r
+#define USBC_UECON6CLR_STALLEDEC    (0x1u <<  6) /**< \brief (USBC_UECON6CLR) RXSTPE Clear */\r
+#define USBC_UECON6CLR_NREPLYC      (0x1u <<  8) /**< \brief (USBC_UECON6CLR) NREPLY Clear */\r
+#define USBC_UECON6CLR_RAMACEREC    (0x1u << 11) /**< \brief (USBC_UECON6CLR) RAMACERE Clear */\r
+#define USBC_UECON6CLR_NBUSYBKEC    (0x1u << 12) /**< \brief (USBC_UECON6CLR) NBUSYBKE Clear */\r
+#define USBC_UECON6CLR_FIFOCONC     (0x1u << 14) /**< \brief (USBC_UECON6CLR) FIFOCON Clear */\r
+#define USBC_UECON6CLR_NYETDISC     (0x1u << 17) /**< \brief (USBC_UECON6CLR) NYETDIS Clear */\r
+#define USBC_UECON6CLR_STALLRQC     (0x1u << 19) /**< \brief (USBC_UECON6CLR) STALLEDE Clear */\r
+#define USBC_UECON6CLR_BUSY0C       (0x1u << 24) /**< \brief (USBC_UECON6CLR) BUSY0 Clear */\r
+#define USBC_UECON6CLR_BUSY1C       (0x1u << 25) /**< \brief (USBC_UECON6CLR) BUSY1 Clear */\r
+/* -------- USBC_UECON7CLR : (USBC Offset: 0x23C) TXINE Clear -------- */\r
+#define USBC_UECON7CLR_TXINEC       (0x1u <<  0) /**< \brief (USBC_UECON7CLR) TXINE Clear */\r
+#define USBC_UECON7CLR_RXOUTEC      (0x1u <<  1) /**< \brief (USBC_UECON7CLR) RXOUTE Clear */\r
+#define USBC_UECON7CLR_RXSTPEC      (0x1u <<  2) /**< \brief (USBC_UECON7CLR) RXOUTE Clear */\r
+#define USBC_UECON7CLR_NAKOUTEC     (0x1u <<  3) /**< \brief (USBC_UECON7CLR) NAKOUTE Clear */\r
+#define USBC_UECON7CLR_NAKINEC      (0x1u <<  4) /**< \brief (USBC_UECON7CLR) NAKINE Clear */\r
+#define USBC_UECON7CLR_STALLEDEC    (0x1u <<  6) /**< \brief (USBC_UECON7CLR) RXSTPE Clear */\r
+#define USBC_UECON7CLR_NREPLYC      (0x1u <<  8) /**< \brief (USBC_UECON7CLR) NREPLY Clear */\r
+#define USBC_UECON7CLR_RAMACEREC    (0x1u << 11) /**< \brief (USBC_UECON7CLR) RAMACERE Clear */\r
+#define USBC_UECON7CLR_NBUSYBKEC    (0x1u << 12) /**< \brief (USBC_UECON7CLR) NBUSYBKE Clear */\r
+#define USBC_UECON7CLR_FIFOCONC     (0x1u << 14) /**< \brief (USBC_UECON7CLR) FIFOCON Clear */\r
+#define USBC_UECON7CLR_NYETDISC     (0x1u << 17) /**< \brief (USBC_UECON7CLR) NYETDIS Clear */\r
+#define USBC_UECON7CLR_STALLRQC     (0x1u << 19) /**< \brief (USBC_UECON7CLR) STALLEDE Clear */\r
+#define USBC_UECON7CLR_BUSY0C       (0x1u << 24) /**< \brief (USBC_UECON7CLR) BUSY0 Clear */\r
+#define USBC_UECON7CLR_BUSY1C       (0x1u << 25) /**< \brief (USBC_UECON7CLR) BUSY1 Clear */\r
+/* -------- USBC_UHCON : (USBC Offset: 0x400) Host General Control Register -------- */\r
+#define USBC_UHCON_SOFE             (0x1u <<  8) /**< \brief (USBC_UHCON) SOF Enable */\r
+#define USBC_UHCON_RESET            (0x1u <<  9) /**< \brief (USBC_UHCON) Send USB Reset */\r
+#define USBC_UHCON_RESUME           (0x1u << 10) /**< \brief (USBC_UHCON) Send USB Resume */\r
+#define USBC_UHCON_SPDCONF_Pos      12\r
+#define USBC_UHCON_SPDCONF_Msk      (0x3u << USBC_UHCON_SPDCONF_Pos) /**< \brief (USBC_UHCON) Speed Configuration */\r
+#define USBC_UHCON_SPDCONF(value)   ((USBC_UHCON_SPDCONF_Msk & ((value) << USBC_UHCON_SPDCONF_Pos)))\r
+#define USBC_UHCON_TSTJ             (0x1u << 16) /**< \brief (USBC_UHCON) Test J */\r
+#define USBC_UHCON_TSTK             (0x1u << 17) /**< \brief (USBC_UHCON) Test K */\r
+/* -------- USBC_UHINT : (USBC Offset: 0x404) Host Global Interrupt Register -------- */\r
+#define USBC_UHINT_DCONNI           (0x1u <<  0) /**< \brief (USBC_UHINT) Device Connection Interrupt */\r
+#define USBC_UHINT_DDISCI           (0x1u <<  1) /**< \brief (USBC_UHINT) Device Disconnection Interrupt */\r
+#define USBC_UHINT_RSTI             (0x1u <<  2) /**< \brief (USBC_UHINT) USB Reset Sent Interrupt */\r
+#define USBC_UHINT_RSMEDI           (0x1u <<  3) /**< \brief (USBC_UHINT) Downstream Resume Sent Interrupt */\r
+#define USBC_UHINT_RXRSMI           (0x1u <<  4) /**< \brief (USBC_UHINT) Upstream Resume Received Interrupt */\r
+#define USBC_UHINT_HSOFI            (0x1u <<  5) /**< \brief (USBC_UHINT) Host SOF Interrupt */\r
+#define USBC_UHINT_HWUPI            (0x1u <<  6) /**< \brief (USBC_UHINT) Host Wake-Up Interrupt */\r
+#define USBC_UHINT_P0INT            (0x1u <<  8) /**< \brief (USBC_UHINT) Pipe 0 Interrupt */\r
+#define USBC_UHINT_P1INT            (0x1u <<  9) /**< \brief (USBC_UHINT) Pipe 1 Interrupt */\r
+#define USBC_UHINT_P2INT            (0x1u << 10) /**< \brief (USBC_UHINT) Pipe 2 Interrupt */\r
+#define USBC_UHINT_P3INT            (0x1u << 11) /**< \brief (USBC_UHINT) Pipe 3 Interrupt */\r
+#define USBC_UHINT_P4INT            (0x1u << 12) /**< \brief (USBC_UHINT) Pipe 4 Interrupt */\r
+#define USBC_UHINT_P5INT            (0x1u << 13) /**< \brief (USBC_UHINT) Pipe 5 Interrupt */\r
+#define USBC_UHINT_P6INT            (0x1u << 14) /**< \brief (USBC_UHINT) Pipe 6 Interrupt */\r
+/* -------- USBC_UHINTCLR : (USBC Offset: 0x408) Host Global Interrrupt Clear Register -------- */\r
+#define USBC_UHINTCLR_DCONNIC       (0x1u <<  0) /**< \brief (USBC_UHINTCLR) DCONNI Clear */\r
+#define USBC_UHINTCLR_DDISCIC       (0x1u <<  1) /**< \brief (USBC_UHINTCLR) DDISCI Clear */\r
+#define USBC_UHINTCLR_RSTIC         (0x1u <<  2) /**< \brief (USBC_UHINTCLR) RSTI Clear */\r
+#define USBC_UHINTCLR_RSMEDIC       (0x1u <<  3) /**< \brief (USBC_UHINTCLR) RSMEDI Clear */\r
+#define USBC_UHINTCLR_RXRSMIC       (0x1u <<  4) /**< \brief (USBC_UHINTCLR) RXRSMI Clear */\r
+#define USBC_UHINTCLR_HSOFIC        (0x1u <<  5) /**< \brief (USBC_UHINTCLR) HSOFI Clear */\r
+#define USBC_UHINTCLR_HWUPIC        (0x1u <<  6) /**< \brief (USBC_UHINTCLR) HWUPI Clear */\r
+/* -------- USBC_UHINTSET : (USBC Offset: 0x40C) Host Global Interrupt Set Register -------- */\r
+#define USBC_UHINTSET_DCONNIS       (0x1u <<  0) /**< \brief (USBC_UHINTSET) DCONNI Set */\r
+#define USBC_UHINTSET_DDISCIS       (0x1u <<  1) /**< \brief (USBC_UHINTSET) DDISCI Set */\r
+#define USBC_UHINTSET_RSTIS         (0x1u <<  2) /**< \brief (USBC_UHINTSET) RSTI Set */\r
+#define USBC_UHINTSET_RSMEDIS       (0x1u <<  3) /**< \brief (USBC_UHINTSET) RSMEDI Set */\r
+#define USBC_UHINTSET_RXRSMIS       (0x1u <<  4) /**< \brief (USBC_UHINTSET) RXRSMI Set */\r
+#define USBC_UHINTSET_HSOFIS        (0x1u <<  5) /**< \brief (USBC_UHINTSET) HSOFI Set */\r
+#define USBC_UHINTSET_HWUPIS        (0x1u <<  6) /**< \brief (USBC_UHINTSET) HWUPI Set */\r
+/* -------- USBC_UHINTE : (USBC Offset: 0x410) Host Global Interrupt Enable Register -------- */\r
+#define USBC_UHINTE_DCONNIE         (0x1u <<  0) /**< \brief (USBC_UHINTE) DCONNI Enable */\r
+#define USBC_UHINTE_DDISCIE         (0x1u <<  1) /**< \brief (USBC_UHINTE) DDISCI Enable */\r
+#define USBC_UHINTE_RSTIE           (0x1u <<  2) /**< \brief (USBC_UHINTE) RSTI Enable */\r
+#define USBC_UHINTE_RSMEDIE         (0x1u <<  3) /**< \brief (USBC_UHINTE) RSMEDI Enable */\r
+#define USBC_UHINTE_RXRSMIE         (0x1u <<  4) /**< \brief (USBC_UHINTE) RXRSMI Enable */\r
+#define USBC_UHINTE_HSOFIE          (0x1u <<  5) /**< \brief (USBC_UHINTE) HSOFI Enable */\r
+#define USBC_UHINTE_HWUPIE          (0x1u <<  6) /**< \brief (USBC_UHINTE) HWUPI Enable */\r
+#define USBC_UHINTE_P0INTE          (0x1u <<  8) /**< \brief (USBC_UHINTE) P0INT Enable */\r
+#define USBC_UHINTE_P1INTE          (0x1u <<  9) /**< \brief (USBC_UHINTE) P1INT Enable */\r
+#define USBC_UHINTE_P2INTE          (0x1u << 10) /**< \brief (USBC_UHINTE) P2INT Enable */\r
+#define USBC_UHINTE_P3INTE          (0x1u << 11) /**< \brief (USBC_UHINTE) P3INT Enable */\r
+#define USBC_UHINTE_P4INTE          (0x1u << 12) /**< \brief (USBC_UHINTE) P4INT Enable */\r
+#define USBC_UHINTE_P5INTE          (0x1u << 13) /**< \brief (USBC_UHINTE) P5INT Enable */\r
+#define USBC_UHINTE_P6INTE          (0x1u << 14) /**< \brief (USBC_UHINTE) P6INT Enable */\r
+#define USBC_UHINTE_P7INTE          (0x1u << 15) /**< \brief (USBC_UHINTE) P7INT Enable */\r
+/* -------- USBC_UHINTECLR : (USBC Offset: 0x414) Host Global Interrupt Enable Clear Register -------- */\r
+#define USBC_UHINTECLR_DCONNIEC     (0x1u <<  0) /**< \brief (USBC_UHINTECLR) DCONNIE Clear */\r
+#define USBC_UHINTECLR_DDISCIEC     (0x1u <<  1) /**< \brief (USBC_UHINTECLR) DDISCIE Clear */\r
+#define USBC_UHINTECLR_RSTIEC       (0x1u <<  2) /**< \brief (USBC_UHINTECLR) RSTIE Clear */\r
+#define USBC_UHINTECLR_RSMEDIEC     (0x1u <<  3) /**< \brief (USBC_UHINTECLR) RSMEDIE Clear */\r
+#define USBC_UHINTECLR_RXRSMIEC     (0x1u <<  4) /**< \brief (USBC_UHINTECLR) RXRSMIE Clear */\r
+#define USBC_UHINTECLR_HSOFIEC      (0x1u <<  5) /**< \brief (USBC_UHINTECLR) HSOFIE Clear */\r
+#define USBC_UHINTECLR_HWUPIEC      (0x1u <<  6) /**< \brief (USBC_UHINTECLR) HWUPIE Clear */\r
+#define USBC_UHINTECLR_P0INTEC      (0x1u <<  8) /**< \brief (USBC_UHINTECLR) P0INTE Clear */\r
+#define USBC_UHINTECLR_P1INTEC      (0x1u <<  9) /**< \brief (USBC_UHINTECLR) P1INTE Clear */\r
+#define USBC_UHINTECLR_P2INTEC      (0x1u << 10) /**< \brief (USBC_UHINTECLR) P2INTE Clear */\r
+#define USBC_UHINTECLR_P3INTEC      (0x1u << 11) /**< \brief (USBC_UHINTECLR) P3INTE Clear */\r
+#define USBC_UHINTECLR_P4INTEC      (0x1u << 12) /**< \brief (USBC_UHINTECLR) P4INTE Clear */\r
+#define USBC_UHINTECLR_P5INTEC      (0x1u << 13) /**< \brief (USBC_UHINTECLR) P5INTE Clear */\r
+#define USBC_UHINTECLR_P6INTEC      (0x1u << 14) /**< \brief (USBC_UHINTECLR) P6INTE Clear */\r
+#define USBC_UHINTECLR_P7INTEC      (0x1u << 15) /**< \brief (USBC_UHINTECLR) P7INTE Clear */\r
+/* -------- USBC_UHINTESET : (USBC Offset: 0x418) Host Global Interrupt Enable Set Register -------- */\r
+#define USBC_UHINTESET_DCONNIES     (0x1u <<  0) /**< \brief (USBC_UHINTESET) DCONNIE Set */\r
+#define USBC_UHINTESET_DDISCIES     (0x1u <<  1) /**< \brief (USBC_UHINTESET) DDISCIE Set */\r
+#define USBC_UHINTESET_RSTIES       (0x1u <<  2) /**< \brief (USBC_UHINTESET) RSTIE Set */\r
+#define USBC_UHINTESET_RSMEDIES     (0x1u <<  3) /**< \brief (USBC_UHINTESET) RSMEDIE Set */\r
+#define USBC_UHINTESET_RXRSMIES     (0x1u <<  4) /**< \brief (USBC_UHINTESET) RXRSMIE Set */\r
+#define USBC_UHINTESET_HSOFIES      (0x1u <<  5) /**< \brief (USBC_UHINTESET) HSOFIE Set */\r
+#define USBC_UHINTESET_HWUPIES      (0x1u <<  6) /**< \brief (USBC_UHINTESET) HWUPIE Set */\r
+#define USBC_UHINTESET_P0INTES      (0x1u <<  8) /**< \brief (USBC_UHINTESET) P0INTE Set */\r
+#define USBC_UHINTESET_P1INTES      (0x1u <<  9) /**< \brief (USBC_UHINTESET) P1INTE Set */\r
+#define USBC_UHINTESET_P2INTES      (0x1u << 10) /**< \brief (USBC_UHINTESET) P2INTE Set */\r
+#define USBC_UHINTESET_P3INTES      (0x1u << 11) /**< \brief (USBC_UHINTESET) P3INTE Set */\r
+#define USBC_UHINTESET_P4INTES      (0x1u << 12) /**< \brief (USBC_UHINTESET) P4INTE Set */\r
+#define USBC_UHINTESET_P5INTES      (0x1u << 13) /**< \brief (USBC_UHINTESET) P5INTE Set */\r
+#define USBC_UHINTESET_P6INTES      (0x1u << 14) /**< \brief (USBC_UHINTESET) P6INTE Set */\r
+#define USBC_UHINTESET_P7INTES      (0x1u << 15) /**< \brief (USBC_UHINTESET) P7INTE Set */\r
+/* -------- USBC_UPRST : (USBC Offset: 0x41C) Pipe Reset Register -------- */\r
+#define USBC_UPRST_PEN0             (0x1u <<  0) /**< \brief (USBC_UPRST) Pipe0 Enable */\r
+#define USBC_UPRST_PEN1             (0x1u <<  1) /**< \brief (USBC_UPRST) Pipe1 Enable */\r
+#define USBC_UPRST_PEN2             (0x1u <<  2) /**< \brief (USBC_UPRST) Pipe2 Enable */\r
+#define USBC_UPRST_PEN3             (0x1u <<  3) /**< \brief (USBC_UPRST) Pipe3 Enable */\r
+#define USBC_UPRST_PEN4             (0x1u <<  4) /**< \brief (USBC_UPRST) Pipe4 Enable */\r
+#define USBC_UPRST_PEN5             (0x1u <<  5) /**< \brief (USBC_UPRST) Pipe5 Enable */\r
+#define USBC_UPRST_PEN6             (0x1u <<  6) /**< \brief (USBC_UPRST) Pipe6 Enable */\r
+#define USBC_UPRST_PEN7             (0x1u <<  7) /**< \brief (USBC_UPRST) Pipe7 Enable */\r
+/* -------- USBC_UHFNUM : (USBC Offset: 0x420) Host Frame Number Register -------- */\r
+#define USBC_UHFNUM_MFNUM_Pos       0\r
+#define USBC_UHFNUM_MFNUM_Msk       (0x7u << USBC_UHFNUM_MFNUM_Pos) /**< \brief (USBC_UHFNUM) Micro Frame Number */\r
+#define USBC_UHFNUM_MFNUM(value)    ((USBC_UHFNUM_MFNUM_Msk & ((value) << USBC_UHFNUM_MFNUM_Pos)))\r
+#define USBC_UHFNUM_FNUM_Pos        3\r
+#define USBC_UHFNUM_FNUM_Msk        (0x7FFu << USBC_UHFNUM_FNUM_Pos) /**< \brief (USBC_UHFNUM) Frame Number */\r
+#define USBC_UHFNUM_FNUM(value)     ((USBC_UHFNUM_FNUM_Msk & ((value) << USBC_UHFNUM_FNUM_Pos)))\r
+#define USBC_UHFNUM_FLENHIGH_Pos    16\r
+#define USBC_UHFNUM_FLENHIGH_Msk    (0xFFu << USBC_UHFNUM_FLENHIGH_Pos) /**< \brief (USBC_UHFNUM) Frame Length */\r
+#define USBC_UHFNUM_FLENHIGH(value) ((USBC_UHFNUM_FLENHIGH_Msk & ((value) << USBC_UHFNUM_FLENHIGH_Pos)))\r
+/* -------- USBC_UHSOFC : (USBC Offset: 0x424) Host Start of Frame Control Register -------- */\r
+#define USBC_UHSOFC_FLENC_Pos       0\r
+#define USBC_UHSOFC_FLENC_Msk       (0x3FFFu << USBC_UHSOFC_FLENC_Pos) /**< \brief (USBC_UHSOFC) Frame Length Control */\r
+#define USBC_UHSOFC_FLENC(value)    ((USBC_UHSOFC_FLENC_Msk & ((value) << USBC_UHSOFC_FLENC_Pos)))\r
+#define USBC_UHSOFC_FLENCE          (0x1u << 16) /**< \brief (USBC_UHSOFC) Frame Length Control Enable */\r
+/* -------- USBC_UPCFG0 : (USBC Offset: 0x500) Pipe Configuration Register -------- */\r
+#define USBC_UPCFG0_PBK             (0x1u <<  2) /**< \brief (USBC_UPCFG0) Pipe Banks */\r
+#define   USBC_UPCFG0_PBK_SINGLE    (0x0u <<  2) /**< \brief (USBC_UPCFG0)  */\r
+#define   USBC_UPCFG0_PBK_DOUBLE    (0x1u <<  2) /**< \brief (USBC_UPCFG0)  */\r
+#define USBC_UPCFG0_PSIZE_Pos       4\r
+#define USBC_UPCFG0_PSIZE_Msk       (0x7u << USBC_UPCFG0_PSIZE_Pos) /**< \brief (USBC_UPCFG0) Pipe Size */\r
+#define USBC_UPCFG0_PSIZE(value)    ((USBC_UPCFG0_PSIZE_Msk & ((value) << USBC_UPCFG0_PSIZE_Pos)))\r
+#define   USBC_UPCFG0_PSIZE_8       (0x0u <<  4) /**< \brief (USBC_UPCFG0)  */\r
+#define   USBC_UPCFG0_PSIZE_16      (0x1u <<  4) /**< \brief (USBC_UPCFG0)  */\r
+#define   USBC_UPCFG0_PSIZE_32      (0x2u <<  4) /**< \brief (USBC_UPCFG0)  */\r
+#define   USBC_UPCFG0_PSIZE_64      (0x3u <<  4) /**< \brief (USBC_UPCFG0)  */\r
+#define   USBC_UPCFG0_PSIZE_128     (0x4u <<  4) /**< \brief (USBC_UPCFG0)  */\r
+#define   USBC_UPCFG0_PSIZE_256     (0x5u <<  4) /**< \brief (USBC_UPCFG0)  */\r
+#define   USBC_UPCFG0_PSIZE_512     (0x6u <<  4) /**< \brief (USBC_UPCFG0)  */\r
+#define   USBC_UPCFG0_PSIZE_1024    (0x7u <<  4) /**< \brief (USBC_UPCFG0)  */\r
+#define USBC_UPCFG0_PTOKEN_Pos      8\r
+#define USBC_UPCFG0_PTOKEN_Msk      (0x3u << USBC_UPCFG0_PTOKEN_Pos) /**< \brief (USBC_UPCFG0) Pipe Token */\r
+#define USBC_UPCFG0_PTOKEN(value)   ((USBC_UPCFG0_PTOKEN_Msk & ((value) << USBC_UPCFG0_PTOKEN_Pos)))\r
+#define   USBC_UPCFG0_PTOKEN_SETUP  (0x0u <<  8) /**< \brief (USBC_UPCFG0)  */\r
+#define   USBC_UPCFG0_PTOKEN_IN     (0x1u <<  8) /**< \brief (USBC_UPCFG0)  */\r
+#define   USBC_UPCFG0_PTOKEN_OUT    (0x2u <<  8) /**< \brief (USBC_UPCFG0)  */\r
+#define USBC_UPCFG0_PTYPE_Pos       12\r
+#define USBC_UPCFG0_PTYPE_Msk       (0x3u << USBC_UPCFG0_PTYPE_Pos) /**< \brief (USBC_UPCFG0) Pipe Type */\r
+#define USBC_UPCFG0_PTYPE(value)    ((USBC_UPCFG0_PTYPE_Msk & ((value) << USBC_UPCFG0_PTYPE_Pos)))\r
+#define   USBC_UPCFG0_PTYPE_CONTROL (0x0u << 12) /**< \brief (USBC_UPCFG0)  */\r
+#define   USBC_UPCFG0_PTYPE_ISOCHRONOUS (0x1u << 12) /**< \brief (USBC_UPCFG0)  */\r
+#define   USBC_UPCFG0_PTYPE_BULK    (0x2u << 12) /**< \brief (USBC_UPCFG0)  */\r
+#define   USBC_UPCFG0_PTYPE_INTERRUPT (0x3u << 12) /**< \brief (USBC_UPCFG0)  */\r
+#define USBC_UPCFG0_PINGEN          (0x1u << 20) /**< \brief (USBC_UPCFG0) Ping Enable */\r
+#define USBC_UPCFG0_BINTERVAL_Pos    24\r
+#define USBC_UPCFG0_BINTERVAL_Msk    (0xFFu << USBC_UPCFG0_BINTERVAL_Pos) /**< \brief (USBC_UPCFG0) binterval parameter */\r
+#define USBC_UPCFG0_BINTERVAL(value) ((USBC_UPCFG0_BINTERVAL_Msk & ((value) << USBC_UPCFG0_BINTERVAL_Pos)))\r
+/* -------- USBC_UPCFG1 : (USBC Offset: 0x504) Pipe Configuration Register -------- */\r
+#define USBC_UPCFG1_PBK             (0x1u <<  2) /**< \brief (USBC_UPCFG1) Pipe Banks */\r
+#define   USBC_UPCFG1_PBK_SINGLE    (0x0u <<  2) /**< \brief (USBC_UPCFG1)  */\r
+#define   USBC_UPCFG1_PBK_DOUBLE    (0x1u <<  2) /**< \brief (USBC_UPCFG1)  */\r
+#define USBC_UPCFG1_PSIZE_Pos       4\r
+#define USBC_UPCFG1_PSIZE_Msk       (0x7u << USBC_UPCFG1_PSIZE_Pos) /**< \brief (USBC_UPCFG1) Pipe Size */\r
+#define USBC_UPCFG1_PSIZE(value)    ((USBC_UPCFG1_PSIZE_Msk & ((value) << USBC_UPCFG1_PSIZE_Pos)))\r
+#define   USBC_UPCFG1_PSIZE_8       (0x0u <<  4) /**< \brief (USBC_UPCFG1)  */\r
+#define   USBC_UPCFG1_PSIZE_16      (0x1u <<  4) /**< \brief (USBC_UPCFG1)  */\r
+#define   USBC_UPCFG1_PSIZE_32      (0x2u <<  4) /**< \brief (USBC_UPCFG1)  */\r
+#define   USBC_UPCFG1_PSIZE_64      (0x3u <<  4) /**< \brief (USBC_UPCFG1)  */\r
+#define   USBC_UPCFG1_PSIZE_128     (0x4u <<  4) /**< \brief (USBC_UPCFG1)  */\r
+#define   USBC_UPCFG1_PSIZE_256     (0x5u <<  4) /**< \brief (USBC_UPCFG1)  */\r
+#define   USBC_UPCFG1_PSIZE_512     (0x6u <<  4) /**< \brief (USBC_UPCFG1)  */\r
+#define   USBC_UPCFG1_PSIZE_1024    (0x7u <<  4) /**< \brief (USBC_UPCFG1)  */\r
+#define USBC_UPCFG1_PTOKEN_Pos      8\r
+#define USBC_UPCFG1_PTOKEN_Msk      (0x3u << USBC_UPCFG1_PTOKEN_Pos) /**< \brief (USBC_UPCFG1) Pipe Token */\r
+#define USBC_UPCFG1_PTOKEN(value)   ((USBC_UPCFG1_PTOKEN_Msk & ((value) << USBC_UPCFG1_PTOKEN_Pos)))\r
+#define   USBC_UPCFG1_PTOKEN_SETUP  (0x0u <<  8) /**< \brief (USBC_UPCFG1)  */\r
+#define   USBC_UPCFG1_PTOKEN_IN     (0x1u <<  8) /**< \brief (USBC_UPCFG1)  */\r
+#define   USBC_UPCFG1_PTOKEN_OUT    (0x2u <<  8) /**< \brief (USBC_UPCFG1)  */\r
+#define USBC_UPCFG1_PTYPE_Pos       12\r
+#define USBC_UPCFG1_PTYPE_Msk       (0x3u << USBC_UPCFG1_PTYPE_Pos) /**< \brief (USBC_UPCFG1) Pipe Type */\r
+#define USBC_UPCFG1_PTYPE(value)    ((USBC_UPCFG1_PTYPE_Msk & ((value) << USBC_UPCFG1_PTYPE_Pos)))\r
+#define   USBC_UPCFG1_PTYPE_CONTROL (0x0u << 12) /**< \brief (USBC_UPCFG1)  */\r
+#define   USBC_UPCFG1_PTYPE_ISOCHRONOUS (0x1u << 12) /**< \brief (USBC_UPCFG1)  */\r
+#define   USBC_UPCFG1_PTYPE_BULK    (0x2u << 12) /**< \brief (USBC_UPCFG1)  */\r
+#define   USBC_UPCFG1_PTYPE_INTERRUPT (0x3u << 12) /**< \brief (USBC_UPCFG1)  */\r
+#define USBC_UPCFG1_PINGEN          (0x1u << 20) /**< \brief (USBC_UPCFG1) Ping Enable */\r
+#define USBC_UPCFG1_BINTERVAL_Pos    24\r
+#define USBC_UPCFG1_BINTERVAL_Msk    (0xFFu << USBC_UPCFG1_BINTERVAL_Pos) /**< \brief (USBC_UPCFG1) binterval parameter */\r
+#define USBC_UPCFG1_BINTERVAL(value) ((USBC_UPCFG1_BINTERVAL_Msk & ((value) << USBC_UPCFG1_BINTERVAL_Pos)))\r
+/* -------- USBC_UPCFG2 : (USBC Offset: 0x508) Pipe Configuration Register -------- */\r
+#define USBC_UPCFG2_PBK             (0x1u <<  2) /**< \brief (USBC_UPCFG2) Pipe Banks */\r
+#define   USBC_UPCFG2_PBK_SINGLE    (0x0u <<  2) /**< \brief (USBC_UPCFG2)  */\r
+#define   USBC_UPCFG2_PBK_DOUBLE    (0x1u <<  2) /**< \brief (USBC_UPCFG2)  */\r
+#define USBC_UPCFG2_PSIZE_Pos       4\r
+#define USBC_UPCFG2_PSIZE_Msk       (0x7u << USBC_UPCFG2_PSIZE_Pos) /**< \brief (USBC_UPCFG2) Pipe Size */\r
+#define USBC_UPCFG2_PSIZE(value)    ((USBC_UPCFG2_PSIZE_Msk & ((value) << USBC_UPCFG2_PSIZE_Pos)))\r
+#define   USBC_UPCFG2_PSIZE_8       (0x0u <<  4) /**< \brief (USBC_UPCFG2)  */\r
+#define   USBC_UPCFG2_PSIZE_16      (0x1u <<  4) /**< \brief (USBC_UPCFG2)  */\r
+#define   USBC_UPCFG2_PSIZE_32      (0x2u <<  4) /**< \brief (USBC_UPCFG2)  */\r
+#define   USBC_UPCFG2_PSIZE_64      (0x3u <<  4) /**< \brief (USBC_UPCFG2)  */\r
+#define   USBC_UPCFG2_PSIZE_128     (0x4u <<  4) /**< \brief (USBC_UPCFG2)  */\r
+#define   USBC_UPCFG2_PSIZE_256     (0x5u <<  4) /**< \brief (USBC_UPCFG2)  */\r
+#define   USBC_UPCFG2_PSIZE_512     (0x6u <<  4) /**< \brief (USBC_UPCFG2)  */\r
+#define   USBC_UPCFG2_PSIZE_1024    (0x7u <<  4) /**< \brief (USBC_UPCFG2)  */\r
+#define USBC_UPCFG2_PTOKEN_Pos      8\r
+#define USBC_UPCFG2_PTOKEN_Msk      (0x3u << USBC_UPCFG2_PTOKEN_Pos) /**< \brief (USBC_UPCFG2) Pipe Token */\r
+#define USBC_UPCFG2_PTOKEN(value)   ((USBC_UPCFG2_PTOKEN_Msk & ((value) << USBC_UPCFG2_PTOKEN_Pos)))\r
+#define   USBC_UPCFG2_PTOKEN_SETUP  (0x0u <<  8) /**< \brief (USBC_UPCFG2)  */\r
+#define   USBC_UPCFG2_PTOKEN_IN     (0x1u <<  8) /**< \brief (USBC_UPCFG2)  */\r
+#define   USBC_UPCFG2_PTOKEN_OUT    (0x2u <<  8) /**< \brief (USBC_UPCFG2)  */\r
+#define USBC_UPCFG2_PTYPE_Pos       12\r
+#define USBC_UPCFG2_PTYPE_Msk       (0x3u << USBC_UPCFG2_PTYPE_Pos) /**< \brief (USBC_UPCFG2) Pipe Type */\r
+#define USBC_UPCFG2_PTYPE(value)    ((USBC_UPCFG2_PTYPE_Msk & ((value) << USBC_UPCFG2_PTYPE_Pos)))\r
+#define   USBC_UPCFG2_PTYPE_CONTROL (0x0u << 12) /**< \brief (USBC_UPCFG2)  */\r
+#define   USBC_UPCFG2_PTYPE_ISOCHRONOUS (0x1u << 12) /**< \brief (USBC_UPCFG2)  */\r
+#define   USBC_UPCFG2_PTYPE_BULK    (0x2u << 12) /**< \brief (USBC_UPCFG2)  */\r
+#define   USBC_UPCFG2_PTYPE_INTERRUPT (0x3u << 12) /**< \brief (USBC_UPCFG2)  */\r
+#define USBC_UPCFG2_PINGEN          (0x1u << 20) /**< \brief (USBC_UPCFG2) Ping Enable */\r
+#define USBC_UPCFG2_BINTERVAL_Pos    24\r
+#define USBC_UPCFG2_BINTERVAL_Msk    (0xFFu << USBC_UPCFG2_BINTERVAL_Pos) /**< \brief (USBC_UPCFG2) binterval parameter */\r
+#define USBC_UPCFG2_BINTERVAL(value) ((USBC_UPCFG2_BINTERVAL_Msk & ((value) << USBC_UPCFG2_BINTERVAL_Pos)))\r
+/* -------- USBC_UPCFG3 : (USBC Offset: 0x50C) Pipe Configuration Register -------- */\r
+#define USBC_UPCFG3_PBK             (0x1u <<  2) /**< \brief (USBC_UPCFG3) Pipe Banks */\r
+#define   USBC_UPCFG3_PBK_SINGLE    (0x0u <<  2) /**< \brief (USBC_UPCFG3)  */\r
+#define   USBC_UPCFG3_PBK_DOUBLE    (0x1u <<  2) /**< \brief (USBC_UPCFG3)  */\r
+#define USBC_UPCFG3_PSIZE_Pos       4\r
+#define USBC_UPCFG3_PSIZE_Msk       (0x7u << USBC_UPCFG3_PSIZE_Pos) /**< \brief (USBC_UPCFG3) Pipe Size */\r
+#define USBC_UPCFG3_PSIZE(value)    ((USBC_UPCFG3_PSIZE_Msk & ((value) << USBC_UPCFG3_PSIZE_Pos)))\r
+#define   USBC_UPCFG3_PSIZE_8       (0x0u <<  4) /**< \brief (USBC_UPCFG3)  */\r
+#define   USBC_UPCFG3_PSIZE_16      (0x1u <<  4) /**< \brief (USBC_UPCFG3)  */\r
+#define   USBC_UPCFG3_PSIZE_32      (0x2u <<  4) /**< \brief (USBC_UPCFG3)  */\r
+#define   USBC_UPCFG3_PSIZE_64      (0x3u <<  4) /**< \brief (USBC_UPCFG3)  */\r
+#define   USBC_UPCFG3_PSIZE_128     (0x4u <<  4) /**< \brief (USBC_UPCFG3)  */\r
+#define   USBC_UPCFG3_PSIZE_256     (0x5u <<  4) /**< \brief (USBC_UPCFG3)  */\r
+#define   USBC_UPCFG3_PSIZE_512     (0x6u <<  4) /**< \brief (USBC_UPCFG3)  */\r
+#define   USBC_UPCFG3_PSIZE_1024    (0x7u <<  4) /**< \brief (USBC_UPCFG3)  */\r
+#define USBC_UPCFG3_PTOKEN_Pos      8\r
+#define USBC_UPCFG3_PTOKEN_Msk      (0x3u << USBC_UPCFG3_PTOKEN_Pos) /**< \brief (USBC_UPCFG3) Pipe Token */\r
+#define USBC_UPCFG3_PTOKEN(value)   ((USBC_UPCFG3_PTOKEN_Msk & ((value) << USBC_UPCFG3_PTOKEN_Pos)))\r
+#define   USBC_UPCFG3_PTOKEN_SETUP  (0x0u <<  8) /**< \brief (USBC_UPCFG3)  */\r
+#define   USBC_UPCFG3_PTOKEN_IN     (0x1u <<  8) /**< \brief (USBC_UPCFG3)  */\r
+#define   USBC_UPCFG3_PTOKEN_OUT    (0x2u <<  8) /**< \brief (USBC_UPCFG3)  */\r
+#define USBC_UPCFG3_PTYPE_Pos       12\r
+#define USBC_UPCFG3_PTYPE_Msk       (0x3u << USBC_UPCFG3_PTYPE_Pos) /**< \brief (USBC_UPCFG3) Pipe Type */\r
+#define USBC_UPCFG3_PTYPE(value)    ((USBC_UPCFG3_PTYPE_Msk & ((value) << USBC_UPCFG3_PTYPE_Pos)))\r
+#define   USBC_UPCFG3_PTYPE_CONTROL (0x0u << 12) /**< \brief (USBC_UPCFG3)  */\r
+#define   USBC_UPCFG3_PTYPE_ISOCHRONOUS (0x1u << 12) /**< \brief (USBC_UPCFG3)  */\r
+#define   USBC_UPCFG3_PTYPE_BULK    (0x2u << 12) /**< \brief (USBC_UPCFG3)  */\r
+#define   USBC_UPCFG3_PTYPE_INTERRUPT (0x3u << 12) /**< \brief (USBC_UPCFG3)  */\r
+#define USBC_UPCFG3_PINGEN          (0x1u << 20) /**< \brief (USBC_UPCFG3) Ping Enable */\r
+#define USBC_UPCFG3_BINTERVAL_Pos    24\r
+#define USBC_UPCFG3_BINTERVAL_Msk    (0xFFu << USBC_UPCFG3_BINTERVAL_Pos) /**< \brief (USBC_UPCFG3) binterval parameter */\r
+#define USBC_UPCFG3_BINTERVAL(value) ((USBC_UPCFG3_BINTERVAL_Msk & ((value) << USBC_UPCFG3_BINTERVAL_Pos)))\r
+/* -------- USBC_UPCFG4 : (USBC Offset: 0x510) Pipe Configuration Register -------- */\r
+#define USBC_UPCFG4_PBK             (0x1u <<  2) /**< \brief (USBC_UPCFG4) Pipe Banks */\r
+#define   USBC_UPCFG4_PBK_SINGLE    (0x0u <<  2) /**< \brief (USBC_UPCFG4)  */\r
+#define   USBC_UPCFG4_PBK_DOUBLE    (0x1u <<  2) /**< \brief (USBC_UPCFG4)  */\r
+#define USBC_UPCFG4_PSIZE_Pos       4\r
+#define USBC_UPCFG4_PSIZE_Msk       (0x7u << USBC_UPCFG4_PSIZE_Pos) /**< \brief (USBC_UPCFG4) Pipe Size */\r
+#define USBC_UPCFG4_PSIZE(value)    ((USBC_UPCFG4_PSIZE_Msk & ((value) << USBC_UPCFG4_PSIZE_Pos)))\r
+#define   USBC_UPCFG4_PSIZE_8       (0x0u <<  4) /**< \brief (USBC_UPCFG4)  */\r
+#define   USBC_UPCFG4_PSIZE_16      (0x1u <<  4) /**< \brief (USBC_UPCFG4)  */\r
+#define   USBC_UPCFG4_PSIZE_32      (0x2u <<  4) /**< \brief (USBC_UPCFG4)  */\r
+#define   USBC_UPCFG4_PSIZE_64      (0x3u <<  4) /**< \brief (USBC_UPCFG4)  */\r
+#define   USBC_UPCFG4_PSIZE_128     (0x4u <<  4) /**< \brief (USBC_UPCFG4)  */\r
+#define   USBC_UPCFG4_PSIZE_256     (0x5u <<  4) /**< \brief (USBC_UPCFG4)  */\r
+#define   USBC_UPCFG4_PSIZE_512     (0x6u <<  4) /**< \brief (USBC_UPCFG4)  */\r
+#define   USBC_UPCFG4_PSIZE_1024    (0x7u <<  4) /**< \brief (USBC_UPCFG4)  */\r
+#define USBC_UPCFG4_PTOKEN_Pos      8\r
+#define USBC_UPCFG4_PTOKEN_Msk      (0x3u << USBC_UPCFG4_PTOKEN_Pos) /**< \brief (USBC_UPCFG4) Pipe Token */\r
+#define USBC_UPCFG4_PTOKEN(value)   ((USBC_UPCFG4_PTOKEN_Msk & ((value) << USBC_UPCFG4_PTOKEN_Pos)))\r
+#define   USBC_UPCFG4_PTOKEN_SETUP  (0x0u <<  8) /**< \brief (USBC_UPCFG4)  */\r
+#define   USBC_UPCFG4_PTOKEN_IN     (0x1u <<  8) /**< \brief (USBC_UPCFG4)  */\r
+#define   USBC_UPCFG4_PTOKEN_OUT    (0x2u <<  8) /**< \brief (USBC_UPCFG4)  */\r
+#define USBC_UPCFG4_PTYPE_Pos       12\r
+#define USBC_UPCFG4_PTYPE_Msk       (0x3u << USBC_UPCFG4_PTYPE_Pos) /**< \brief (USBC_UPCFG4) Pipe Type */\r
+#define USBC_UPCFG4_PTYPE(value)    ((USBC_UPCFG4_PTYPE_Msk & ((value) << USBC_UPCFG4_PTYPE_Pos)))\r
+#define   USBC_UPCFG4_PTYPE_CONTROL (0x0u << 12) /**< \brief (USBC_UPCFG4)  */\r
+#define   USBC_UPCFG4_PTYPE_ISOCHRONOUS (0x1u << 12) /**< \brief (USBC_UPCFG4)  */\r
+#define   USBC_UPCFG4_PTYPE_BULK    (0x2u << 12) /**< \brief (USBC_UPCFG4)  */\r
+#define   USBC_UPCFG4_PTYPE_INTERRUPT (0x3u << 12) /**< \brief (USBC_UPCFG4)  */\r
+#define USBC_UPCFG4_PINGEN          (0x1u << 20) /**< \brief (USBC_UPCFG4) Ping Enable */\r
+#define USBC_UPCFG4_BINTERVAL_Pos    24\r
+#define USBC_UPCFG4_BINTERVAL_Msk    (0xFFu << USBC_UPCFG4_BINTERVAL_Pos) /**< \brief (USBC_UPCFG4) binterval parameter */\r
+#define USBC_UPCFG4_BINTERVAL(value) ((USBC_UPCFG4_BINTERVAL_Msk & ((value) << USBC_UPCFG4_BINTERVAL_Pos)))\r
+/* -------- USBC_UPCFG5 : (USBC Offset: 0x514) Pipe Configuration Register -------- */\r
+#define USBC_UPCFG5_PBK             (0x1u <<  2) /**< \brief (USBC_UPCFG5) Pipe Banks */\r
+#define   USBC_UPCFG5_PBK_SINGLE    (0x0u <<  2) /**< \brief (USBC_UPCFG5)  */\r
+#define   USBC_UPCFG5_PBK_DOUBLE    (0x1u <<  2) /**< \brief (USBC_UPCFG5)  */\r
+#define USBC_UPCFG5_PSIZE_Pos       4\r
+#define USBC_UPCFG5_PSIZE_Msk       (0x7u << USBC_UPCFG5_PSIZE_Pos) /**< \brief (USBC_UPCFG5) Pipe Size */\r
+#define USBC_UPCFG5_PSIZE(value)    ((USBC_UPCFG5_PSIZE_Msk & ((value) << USBC_UPCFG5_PSIZE_Pos)))\r
+#define   USBC_UPCFG5_PSIZE_8       (0x0u <<  4) /**< \brief (USBC_UPCFG5)  */\r
+#define   USBC_UPCFG5_PSIZE_16      (0x1u <<  4) /**< \brief (USBC_UPCFG5)  */\r
+#define   USBC_UPCFG5_PSIZE_32      (0x2u <<  4) /**< \brief (USBC_UPCFG5)  */\r
+#define   USBC_UPCFG5_PSIZE_64      (0x3u <<  4) /**< \brief (USBC_UPCFG5)  */\r
+#define   USBC_UPCFG5_PSIZE_128     (0x4u <<  4) /**< \brief (USBC_UPCFG5)  */\r
+#define   USBC_UPCFG5_PSIZE_256     (0x5u <<  4) /**< \brief (USBC_UPCFG5)  */\r
+#define   USBC_UPCFG5_PSIZE_512     (0x6u <<  4) /**< \brief (USBC_UPCFG5)  */\r
+#define   USBC_UPCFG5_PSIZE_1024    (0x7u <<  4) /**< \brief (USBC_UPCFG5)  */\r
+#define USBC_UPCFG5_PTOKEN_Pos      8\r
+#define USBC_UPCFG5_PTOKEN_Msk      (0x3u << USBC_UPCFG5_PTOKEN_Pos) /**< \brief (USBC_UPCFG5) Pipe Token */\r
+#define USBC_UPCFG5_PTOKEN(value)   ((USBC_UPCFG5_PTOKEN_Msk & ((value) << USBC_UPCFG5_PTOKEN_Pos)))\r
+#define   USBC_UPCFG5_PTOKEN_SETUP  (0x0u <<  8) /**< \brief (USBC_UPCFG5)  */\r
+#define   USBC_UPCFG5_PTOKEN_IN     (0x1u <<  8) /**< \brief (USBC_UPCFG5)  */\r
+#define   USBC_UPCFG5_PTOKEN_OUT    (0x2u <<  8) /**< \brief (USBC_UPCFG5)  */\r
+#define USBC_UPCFG5_PTYPE_Pos       12\r
+#define USBC_UPCFG5_PTYPE_Msk       (0x3u << USBC_UPCFG5_PTYPE_Pos) /**< \brief (USBC_UPCFG5) Pipe Type */\r
+#define USBC_UPCFG5_PTYPE(value)    ((USBC_UPCFG5_PTYPE_Msk & ((value) << USBC_UPCFG5_PTYPE_Pos)))\r
+#define   USBC_UPCFG5_PTYPE_CONTROL (0x0u << 12) /**< \brief (USBC_UPCFG5)  */\r
+#define   USBC_UPCFG5_PTYPE_ISOCHRONOUS (0x1u << 12) /**< \brief (USBC_UPCFG5)  */\r
+#define   USBC_UPCFG5_PTYPE_BULK    (0x2u << 12) /**< \brief (USBC_UPCFG5)  */\r
+#define   USBC_UPCFG5_PTYPE_INTERRUPT (0x3u << 12) /**< \brief (USBC_UPCFG5)  */\r
+#define USBC_UPCFG5_PINGEN          (0x1u << 20) /**< \brief (USBC_UPCFG5) Ping Enable */\r
+#define USBC_UPCFG5_BINTERVAL_Pos    24\r
+#define USBC_UPCFG5_BINTERVAL_Msk    (0xFFu << USBC_UPCFG5_BINTERVAL_Pos) /**< \brief (USBC_UPCFG5) binterval parameter */\r
+#define USBC_UPCFG5_BINTERVAL(value) ((USBC_UPCFG5_BINTERVAL_Msk & ((value) << USBC_UPCFG5_BINTERVAL_Pos)))\r
+/* -------- USBC_UPCFG6 : (USBC Offset: 0x518) Pipe Configuration Register -------- */\r
+#define USBC_UPCFG6_PBK             (0x1u <<  2) /**< \brief (USBC_UPCFG6) Pipe Banks */\r
+#define   USBC_UPCFG6_PBK_SINGLE    (0x0u <<  2) /**< \brief (USBC_UPCFG6)  */\r
+#define   USBC_UPCFG6_PBK_DOUBLE    (0x1u <<  2) /**< \brief (USBC_UPCFG6)  */\r
+#define USBC_UPCFG6_PSIZE_Pos       4\r
+#define USBC_UPCFG6_PSIZE_Msk       (0x7u << USBC_UPCFG6_PSIZE_Pos) /**< \brief (USBC_UPCFG6) Pipe Size */\r
+#define USBC_UPCFG6_PSIZE(value)    ((USBC_UPCFG6_PSIZE_Msk & ((value) << USBC_UPCFG6_PSIZE_Pos)))\r
+#define   USBC_UPCFG6_PSIZE_8       (0x0u <<  4) /**< \brief (USBC_UPCFG6)  */\r
+#define   USBC_UPCFG6_PSIZE_16      (0x1u <<  4) /**< \brief (USBC_UPCFG6)  */\r
+#define   USBC_UPCFG6_PSIZE_32      (0x2u <<  4) /**< \brief (USBC_UPCFG6)  */\r
+#define   USBC_UPCFG6_PSIZE_64      (0x3u <<  4) /**< \brief (USBC_UPCFG6)  */\r
+#define   USBC_UPCFG6_PSIZE_128     (0x4u <<  4) /**< \brief (USBC_UPCFG6)  */\r
+#define   USBC_UPCFG6_PSIZE_256     (0x5u <<  4) /**< \brief (USBC_UPCFG6)  */\r
+#define   USBC_UPCFG6_PSIZE_512     (0x6u <<  4) /**< \brief (USBC_UPCFG6)  */\r
+#define   USBC_UPCFG6_PSIZE_1024    (0x7u <<  4) /**< \brief (USBC_UPCFG6)  */\r
+#define USBC_UPCFG6_PTOKEN_Pos      8\r
+#define USBC_UPCFG6_PTOKEN_Msk      (0x3u << USBC_UPCFG6_PTOKEN_Pos) /**< \brief (USBC_UPCFG6) Pipe Token */\r
+#define USBC_UPCFG6_PTOKEN(value)   ((USBC_UPCFG6_PTOKEN_Msk & ((value) << USBC_UPCFG6_PTOKEN_Pos)))\r
+#define   USBC_UPCFG6_PTOKEN_SETUP  (0x0u <<  8) /**< \brief (USBC_UPCFG6)  */\r
+#define   USBC_UPCFG6_PTOKEN_IN     (0x1u <<  8) /**< \brief (USBC_UPCFG6)  */\r
+#define   USBC_UPCFG6_PTOKEN_OUT    (0x2u <<  8) /**< \brief (USBC_UPCFG6)  */\r
+#define USBC_UPCFG6_PTYPE_Pos       12\r
+#define USBC_UPCFG6_PTYPE_Msk       (0x3u << USBC_UPCFG6_PTYPE_Pos) /**< \brief (USBC_UPCFG6) Pipe Type */\r
+#define USBC_UPCFG6_PTYPE(value)    ((USBC_UPCFG6_PTYPE_Msk & ((value) << USBC_UPCFG6_PTYPE_Pos)))\r
+#define   USBC_UPCFG6_PTYPE_CONTROL (0x0u << 12) /**< \brief (USBC_UPCFG6)  */\r
+#define   USBC_UPCFG6_PTYPE_ISOCHRONOUS (0x1u << 12) /**< \brief (USBC_UPCFG6)  */\r
+#define   USBC_UPCFG6_PTYPE_BULK    (0x2u << 12) /**< \brief (USBC_UPCFG6)  */\r
+#define   USBC_UPCFG6_PTYPE_INTERRUPT (0x3u << 12) /**< \brief (USBC_UPCFG6)  */\r
+#define USBC_UPCFG6_PINGEN          (0x1u << 20) /**< \brief (USBC_UPCFG6) Ping Enable */\r
+#define USBC_UPCFG6_BINTERVAL_Pos    24\r
+#define USBC_UPCFG6_BINTERVAL_Msk    (0xFFu << USBC_UPCFG6_BINTERVAL_Pos) /**< \brief (USBC_UPCFG6) binterval parameter */\r
+#define USBC_UPCFG6_BINTERVAL(value) ((USBC_UPCFG6_BINTERVAL_Msk & ((value) << USBC_UPCFG6_BINTERVAL_Pos)))\r
+/* -------- USBC_UPCFG7 : (USBC Offset: 0x51C) Pipe Configuration Register -------- */\r
+#define USBC_UPCFG7_PBK             (0x1u <<  2) /**< \brief (USBC_UPCFG7) Pipe Banks */\r
+#define   USBC_UPCFG7_PBK_SINGLE    (0x0u <<  2) /**< \brief (USBC_UPCFG7)  */\r
+#define   USBC_UPCFG7_PBK_DOUBLE    (0x1u <<  2) /**< \brief (USBC_UPCFG7)  */\r
+#define USBC_UPCFG7_PSIZE_Pos       4\r
+#define USBC_UPCFG7_PSIZE_Msk       (0x7u << USBC_UPCFG7_PSIZE_Pos) /**< \brief (USBC_UPCFG7) Pipe Size */\r
+#define USBC_UPCFG7_PSIZE(value)    ((USBC_UPCFG7_PSIZE_Msk & ((value) << USBC_UPCFG7_PSIZE_Pos)))\r
+#define   USBC_UPCFG7_PSIZE_8       (0x0u <<  4) /**< \brief (USBC_UPCFG7)  */\r
+#define   USBC_UPCFG7_PSIZE_16      (0x1u <<  4) /**< \brief (USBC_UPCFG7)  */\r
+#define   USBC_UPCFG7_PSIZE_32      (0x2u <<  4) /**< \brief (USBC_UPCFG7)  */\r
+#define   USBC_UPCFG7_PSIZE_64      (0x3u <<  4) /**< \brief (USBC_UPCFG7)  */\r
+#define   USBC_UPCFG7_PSIZE_128     (0x4u <<  4) /**< \brief (USBC_UPCFG7)  */\r
+#define   USBC_UPCFG7_PSIZE_256     (0x5u <<  4) /**< \brief (USBC_UPCFG7)  */\r
+#define   USBC_UPCFG7_PSIZE_512     (0x6u <<  4) /**< \brief (USBC_UPCFG7)  */\r
+#define   USBC_UPCFG7_PSIZE_1024    (0x7u <<  4) /**< \brief (USBC_UPCFG7)  */\r
+#define USBC_UPCFG7_PTOKEN_Pos      8\r
+#define USBC_UPCFG7_PTOKEN_Msk      (0x3u << USBC_UPCFG7_PTOKEN_Pos) /**< \brief (USBC_UPCFG7) Pipe Token */\r
+#define USBC_UPCFG7_PTOKEN(value)   ((USBC_UPCFG7_PTOKEN_Msk & ((value) << USBC_UPCFG7_PTOKEN_Pos)))\r
+#define   USBC_UPCFG7_PTOKEN_SETUP  (0x0u <<  8) /**< \brief (USBC_UPCFG7)  */\r
+#define   USBC_UPCFG7_PTOKEN_IN     (0x1u <<  8) /**< \brief (USBC_UPCFG7)  */\r
+#define   USBC_UPCFG7_PTOKEN_OUT    (0x2u <<  8) /**< \brief (USBC_UPCFG7)  */\r
+#define USBC_UPCFG7_PTYPE_Pos       12\r
+#define USBC_UPCFG7_PTYPE_Msk       (0x3u << USBC_UPCFG7_PTYPE_Pos) /**< \brief (USBC_UPCFG7) Pipe Type */\r
+#define USBC_UPCFG7_PTYPE(value)    ((USBC_UPCFG7_PTYPE_Msk & ((value) << USBC_UPCFG7_PTYPE_Pos)))\r
+#define   USBC_UPCFG7_PTYPE_CONTROL (0x0u << 12) /**< \brief (USBC_UPCFG7)  */\r
+#define   USBC_UPCFG7_PTYPE_ISOCHRONOUS (0x1u << 12) /**< \brief (USBC_UPCFG7)  */\r
+#define   USBC_UPCFG7_PTYPE_BULK    (0x2u << 12) /**< \brief (USBC_UPCFG7)  */\r
+#define   USBC_UPCFG7_PTYPE_INTERRUPT (0x3u << 12) /**< \brief (USBC_UPCFG7)  */\r
+#define USBC_UPCFG7_PINGEN          (0x1u << 20) /**< \brief (USBC_UPCFG7) Ping Enable */\r
+#define USBC_UPCFG7_BINTERVAL_Pos    24\r
+#define USBC_UPCFG7_BINTERVAL_Msk    (0xFFu << USBC_UPCFG7_BINTERVAL_Pos) /**< \brief (USBC_UPCFG7) binterval parameter */\r
+#define USBC_UPCFG7_BINTERVAL(value) ((USBC_UPCFG7_BINTERVAL_Msk & ((value) << USBC_UPCFG7_BINTERVAL_Pos)))\r
+/* -------- USBC_UPSTA0 : (USBC Offset: 0x530) Pipe Status Register -------- */\r
+#define USBC_UPSTA0_RXINI           (0x1u <<  0) /**< \brief (USBC_UPSTA0) Received IN Data Interrupt */\r
+#define USBC_UPSTA0_TXOUTI          (0x1u <<  1) /**< \brief (USBC_UPSTA0) Transmitted OUT Data Interrupt */\r
+#define USBC_UPSTA0_TXSTPI          (0x1u <<  2) /**< \brief (USBC_UPSTA0) Transmitted SETUP Interrupt */\r
+#define USBC_UPSTA0_PERRI           (0x1u <<  3) /**< \brief (USBC_UPSTA0) Pipe Error Interrupt */\r
+#define USBC_UPSTA0_NAKEDI          (0x1u <<  4) /**< \brief (USBC_UPSTA0) NAKed Interrupt */\r
+#define USBC_UPSTA0_ERRORFI         (0x1u <<  5) /**< \brief (USBC_UPSTA0) Errorflow Interrupt */\r
+#define USBC_UPSTA0_RXSTALLDI       (0x1u <<  6) /**< \brief (USBC_UPSTA0) Received STALLed Interrupt */\r
+#define USBC_UPSTA0_DTSEQ_Pos       8\r
+#define USBC_UPSTA0_DTSEQ_Msk       (0x3u << USBC_UPSTA0_DTSEQ_Pos) /**< \brief (USBC_UPSTA0) Data Toggle Sequence */\r
+#define USBC_UPSTA0_DTSEQ(value)    ((USBC_UPSTA0_DTSEQ_Msk & ((value) << USBC_UPSTA0_DTSEQ_Pos)))\r
+#define USBC_UPSTA0_RAMACERI        (0x1u << 10) /**< \brief (USBC_UPSTA0) Ram Access Error Interrupt */\r
+#define USBC_UPSTA0_NBUSYBK_Pos     12\r
+#define USBC_UPSTA0_NBUSYBK_Msk     (0x3u << USBC_UPSTA0_NBUSYBK_Pos) /**< \brief (USBC_UPSTA0) Number of Busy Bank */\r
+#define USBC_UPSTA0_NBUSYBK(value)  ((USBC_UPSTA0_NBUSYBK_Msk & ((value) << USBC_UPSTA0_NBUSYBK_Pos)))\r
+#define USBC_UPSTA0_CURRBK_Pos      14\r
+#define USBC_UPSTA0_CURRBK_Msk      (0x3u << USBC_UPSTA0_CURRBK_Pos) /**< \brief (USBC_UPSTA0) Current Bank */\r
+#define USBC_UPSTA0_CURRBK(value)   ((USBC_UPSTA0_CURRBK_Msk & ((value) << USBC_UPSTA0_CURRBK_Pos)))\r
+/* -------- USBC_UPSTA1 : (USBC Offset: 0x534) Pipe Status Register -------- */\r
+#define USBC_UPSTA1_RXINI           (0x1u <<  0) /**< \brief (USBC_UPSTA1) Received IN Data Interrupt */\r
+#define USBC_UPSTA1_TXOUTI          (0x1u <<  1) /**< \brief (USBC_UPSTA1) Transmitted OUT Data Interrupt */\r
+#define USBC_UPSTA1_TXSTPI          (0x1u <<  2) /**< \brief (USBC_UPSTA1) Transmitted SETUP Interrupt */\r
+#define USBC_UPSTA1_PERRI           (0x1u <<  3) /**< \brief (USBC_UPSTA1) Pipe Error Interrupt */\r
+#define USBC_UPSTA1_NAKEDI          (0x1u <<  4) /**< \brief (USBC_UPSTA1) NAKed Interrupt */\r
+#define USBC_UPSTA1_ERRORFI         (0x1u <<  5) /**< \brief (USBC_UPSTA1) Errorflow Interrupt */\r
+#define USBC_UPSTA1_RXSTALLDI       (0x1u <<  6) /**< \brief (USBC_UPSTA1) Received STALLed Interrupt */\r
+#define USBC_UPSTA1_DTSEQ_Pos       8\r
+#define USBC_UPSTA1_DTSEQ_Msk       (0x3u << USBC_UPSTA1_DTSEQ_Pos) /**< \brief (USBC_UPSTA1) Data Toggle Sequence */\r
+#define USBC_UPSTA1_DTSEQ(value)    ((USBC_UPSTA1_DTSEQ_Msk & ((value) << USBC_UPSTA1_DTSEQ_Pos)))\r
+#define USBC_UPSTA1_RAMACERI        (0x1u << 10) /**< \brief (USBC_UPSTA1) Ram Access Error Interrupt */\r
+#define USBC_UPSTA1_NBUSYBK_Pos     12\r
+#define USBC_UPSTA1_NBUSYBK_Msk     (0x3u << USBC_UPSTA1_NBUSYBK_Pos) /**< \brief (USBC_UPSTA1) Number of Busy Bank */\r
+#define USBC_UPSTA1_NBUSYBK(value)  ((USBC_UPSTA1_NBUSYBK_Msk & ((value) << USBC_UPSTA1_NBUSYBK_Pos)))\r
+#define USBC_UPSTA1_CURRBK_Pos      14\r
+#define USBC_UPSTA1_CURRBK_Msk      (0x3u << USBC_UPSTA1_CURRBK_Pos) /**< \brief (USBC_UPSTA1) Current Bank */\r
+#define USBC_UPSTA1_CURRBK(value)   ((USBC_UPSTA1_CURRBK_Msk & ((value) << USBC_UPSTA1_CURRBK_Pos)))\r
+/* -------- USBC_UPSTA2 : (USBC Offset: 0x538) Pipe Status Register -------- */\r
+#define USBC_UPSTA2_RXINI           (0x1u <<  0) /**< \brief (USBC_UPSTA2) Received IN Data Interrupt */\r
+#define USBC_UPSTA2_TXOUTI          (0x1u <<  1) /**< \brief (USBC_UPSTA2) Transmitted OUT Data Interrupt */\r
+#define USBC_UPSTA2_TXSTPI          (0x1u <<  2) /**< \brief (USBC_UPSTA2) Transmitted SETUP Interrupt */\r
+#define USBC_UPSTA2_PERRI           (0x1u <<  3) /**< \brief (USBC_UPSTA2) Pipe Error Interrupt */\r
+#define USBC_UPSTA2_NAKEDI          (0x1u <<  4) /**< \brief (USBC_UPSTA2) NAKed Interrupt */\r
+#define USBC_UPSTA2_ERRORFI         (0x1u <<  5) /**< \brief (USBC_UPSTA2) Errorflow Interrupt */\r
+#define USBC_UPSTA2_RXSTALLDI       (0x1u <<  6) /**< \brief (USBC_UPSTA2) Received STALLed Interrupt */\r
+#define USBC_UPSTA2_DTSEQ_Pos       8\r
+#define USBC_UPSTA2_DTSEQ_Msk       (0x3u << USBC_UPSTA2_DTSEQ_Pos) /**< \brief (USBC_UPSTA2) Data Toggle Sequence */\r
+#define USBC_UPSTA2_DTSEQ(value)    ((USBC_UPSTA2_DTSEQ_Msk & ((value) << USBC_UPSTA2_DTSEQ_Pos)))\r
+#define USBC_UPSTA2_RAMACERI        (0x1u << 10) /**< \brief (USBC_UPSTA2) Ram Access Error Interrupt */\r
+#define USBC_UPSTA2_NBUSYBK_Pos     12\r
+#define USBC_UPSTA2_NBUSYBK_Msk     (0x3u << USBC_UPSTA2_NBUSYBK_Pos) /**< \brief (USBC_UPSTA2) Number of Busy Bank */\r
+#define USBC_UPSTA2_NBUSYBK(value)  ((USBC_UPSTA2_NBUSYBK_Msk & ((value) << USBC_UPSTA2_NBUSYBK_Pos)))\r
+#define USBC_UPSTA2_CURRBK_Pos      14\r
+#define USBC_UPSTA2_CURRBK_Msk      (0x3u << USBC_UPSTA2_CURRBK_Pos) /**< \brief (USBC_UPSTA2) Current Bank */\r
+#define USBC_UPSTA2_CURRBK(value)   ((USBC_UPSTA2_CURRBK_Msk & ((value) << USBC_UPSTA2_CURRBK_Pos)))\r
+/* -------- USBC_UPSTA3 : (USBC Offset: 0x53C) Pipe Status Register -------- */\r
+#define USBC_UPSTA3_RXINI           (0x1u <<  0) /**< \brief (USBC_UPSTA3) Received IN Data Interrupt */\r
+#define USBC_UPSTA3_TXOUTI          (0x1u <<  1) /**< \brief (USBC_UPSTA3) Transmitted OUT Data Interrupt */\r
+#define USBC_UPSTA3_TXSTPI          (0x1u <<  2) /**< \brief (USBC_UPSTA3) Transmitted SETUP Interrupt */\r
+#define USBC_UPSTA3_PERRI           (0x1u <<  3) /**< \brief (USBC_UPSTA3) Pipe Error Interrupt */\r
+#define USBC_UPSTA3_NAKEDI          (0x1u <<  4) /**< \brief (USBC_UPSTA3) NAKed Interrupt */\r
+#define USBC_UPSTA3_ERRORFI         (0x1u <<  5) /**< \brief (USBC_UPSTA3) Errorflow Interrupt */\r
+#define USBC_UPSTA3_RXSTALLDI       (0x1u <<  6) /**< \brief (USBC_UPSTA3) Received STALLed Interrupt */\r
+#define USBC_UPSTA3_DTSEQ_Pos       8\r
+#define USBC_UPSTA3_DTSEQ_Msk       (0x3u << USBC_UPSTA3_DTSEQ_Pos) /**< \brief (USBC_UPSTA3) Data Toggle Sequence */\r
+#define USBC_UPSTA3_DTSEQ(value)    ((USBC_UPSTA3_DTSEQ_Msk & ((value) << USBC_UPSTA3_DTSEQ_Pos)))\r
+#define USBC_UPSTA3_RAMACERI        (0x1u << 10) /**< \brief (USBC_UPSTA3) Ram Access Error Interrupt */\r
+#define USBC_UPSTA3_NBUSYBK_Pos     12\r
+#define USBC_UPSTA3_NBUSYBK_Msk     (0x3u << USBC_UPSTA3_NBUSYBK_Pos) /**< \brief (USBC_UPSTA3) Number of Busy Bank */\r
+#define USBC_UPSTA3_NBUSYBK(value)  ((USBC_UPSTA3_NBUSYBK_Msk & ((value) << USBC_UPSTA3_NBUSYBK_Pos)))\r
+#define USBC_UPSTA3_CURRBK_Pos      14\r
+#define USBC_UPSTA3_CURRBK_Msk      (0x3u << USBC_UPSTA3_CURRBK_Pos) /**< \brief (USBC_UPSTA3) Current Bank */\r
+#define USBC_UPSTA3_CURRBK(value)   ((USBC_UPSTA3_CURRBK_Msk & ((value) << USBC_UPSTA3_CURRBK_Pos)))\r
+/* -------- USBC_UPSTA4 : (USBC Offset: 0x540) Pipe Status Register -------- */\r
+#define USBC_UPSTA4_RXINI           (0x1u <<  0) /**< \brief (USBC_UPSTA4) Received IN Data Interrupt */\r
+#define USBC_UPSTA4_TXOUTI          (0x1u <<  1) /**< \brief (USBC_UPSTA4) Transmitted OUT Data Interrupt */\r
+#define USBC_UPSTA4_TXSTPI          (0x1u <<  2) /**< \brief (USBC_UPSTA4) Transmitted SETUP Interrupt */\r
+#define USBC_UPSTA4_PERRI           (0x1u <<  3) /**< \brief (USBC_UPSTA4) Pipe Error Interrupt */\r
+#define USBC_UPSTA4_NAKEDI          (0x1u <<  4) /**< \brief (USBC_UPSTA4) NAKed Interrupt */\r
+#define USBC_UPSTA4_ERRORFI         (0x1u <<  5) /**< \brief (USBC_UPSTA4) Errorflow Interrupt */\r
+#define USBC_UPSTA4_RXSTALLDI       (0x1u <<  6) /**< \brief (USBC_UPSTA4) Received STALLed Interrupt */\r
+#define USBC_UPSTA4_DTSEQ_Pos       8\r
+#define USBC_UPSTA4_DTSEQ_Msk       (0x3u << USBC_UPSTA4_DTSEQ_Pos) /**< \brief (USBC_UPSTA4) Data Toggle Sequence */\r
+#define USBC_UPSTA4_DTSEQ(value)    ((USBC_UPSTA4_DTSEQ_Msk & ((value) << USBC_UPSTA4_DTSEQ_Pos)))\r
+#define USBC_UPSTA4_RAMACERI        (0x1u << 10) /**< \brief (USBC_UPSTA4) Ram Access Error Interrupt */\r
+#define USBC_UPSTA4_NBUSYBK_Pos     12\r
+#define USBC_UPSTA4_NBUSYBK_Msk     (0x3u << USBC_UPSTA4_NBUSYBK_Pos) /**< \brief (USBC_UPSTA4) Number of Busy Bank */\r
+#define USBC_UPSTA4_NBUSYBK(value)  ((USBC_UPSTA4_NBUSYBK_Msk & ((value) << USBC_UPSTA4_NBUSYBK_Pos)))\r
+#define USBC_UPSTA4_CURRBK_Pos      14\r
+#define USBC_UPSTA4_CURRBK_Msk      (0x3u << USBC_UPSTA4_CURRBK_Pos) /**< \brief (USBC_UPSTA4) Current Bank */\r
+#define USBC_UPSTA4_CURRBK(value)   ((USBC_UPSTA4_CURRBK_Msk & ((value) << USBC_UPSTA4_CURRBK_Pos)))\r
+/* -------- USBC_UPSTA5 : (USBC Offset: 0x544) Pipe Status Register -------- */\r
+#define USBC_UPSTA5_RXINI           (0x1u <<  0) /**< \brief (USBC_UPSTA5) Received IN Data Interrupt */\r
+#define USBC_UPSTA5_TXOUTI          (0x1u <<  1) /**< \brief (USBC_UPSTA5) Transmitted OUT Data Interrupt */\r
+#define USBC_UPSTA5_TXSTPI          (0x1u <<  2) /**< \brief (USBC_UPSTA5) Transmitted SETUP Interrupt */\r
+#define USBC_UPSTA5_PERRI           (0x1u <<  3) /**< \brief (USBC_UPSTA5) Pipe Error Interrupt */\r
+#define USBC_UPSTA5_NAKEDI          (0x1u <<  4) /**< \brief (USBC_UPSTA5) NAKed Interrupt */\r
+#define USBC_UPSTA5_ERRORFI         (0x1u <<  5) /**< \brief (USBC_UPSTA5) Errorflow Interrupt */\r
+#define USBC_UPSTA5_RXSTALLDI       (0x1u <<  6) /**< \brief (USBC_UPSTA5) Received STALLed Interrupt */\r
+#define USBC_UPSTA5_DTSEQ_Pos       8\r
+#define USBC_UPSTA5_DTSEQ_Msk       (0x3u << USBC_UPSTA5_DTSEQ_Pos) /**< \brief (USBC_UPSTA5) Data Toggle Sequence */\r
+#define USBC_UPSTA5_DTSEQ(value)    ((USBC_UPSTA5_DTSEQ_Msk & ((value) << USBC_UPSTA5_DTSEQ_Pos)))\r
+#define USBC_UPSTA5_RAMACERI        (0x1u << 10) /**< \brief (USBC_UPSTA5) Ram Access Error Interrupt */\r
+#define USBC_UPSTA5_NBUSYBK_Pos     12\r
+#define USBC_UPSTA5_NBUSYBK_Msk     (0x3u << USBC_UPSTA5_NBUSYBK_Pos) /**< \brief (USBC_UPSTA5) Number of Busy Bank */\r
+#define USBC_UPSTA5_NBUSYBK(value)  ((USBC_UPSTA5_NBUSYBK_Msk & ((value) << USBC_UPSTA5_NBUSYBK_Pos)))\r
+#define USBC_UPSTA5_CURRBK_Pos      14\r
+#define USBC_UPSTA5_CURRBK_Msk      (0x3u << USBC_UPSTA5_CURRBK_Pos) /**< \brief (USBC_UPSTA5) Current Bank */\r
+#define USBC_UPSTA5_CURRBK(value)   ((USBC_UPSTA5_CURRBK_Msk & ((value) << USBC_UPSTA5_CURRBK_Pos)))\r
+/* -------- USBC_UPSTA6 : (USBC Offset: 0x548) Pipe Status Register -------- */\r
+#define USBC_UPSTA6_RXINI           (0x1u <<  0) /**< \brief (USBC_UPSTA6) Received IN Data Interrupt */\r
+#define USBC_UPSTA6_TXOUTI          (0x1u <<  1) /**< \brief (USBC_UPSTA6) Transmitted OUT Data Interrupt */\r
+#define USBC_UPSTA6_TXSTPI          (0x1u <<  2) /**< \brief (USBC_UPSTA6) Transmitted SETUP Interrupt */\r
+#define USBC_UPSTA6_PERRI           (0x1u <<  3) /**< \brief (USBC_UPSTA6) Pipe Error Interrupt */\r
+#define USBC_UPSTA6_NAKEDI          (0x1u <<  4) /**< \brief (USBC_UPSTA6) NAKed Interrupt */\r
+#define USBC_UPSTA6_ERRORFI         (0x1u <<  5) /**< \brief (USBC_UPSTA6) Errorflow Interrupt */\r
+#define USBC_UPSTA6_RXSTALLDI       (0x1u <<  6) /**< \brief (USBC_UPSTA6) Received STALLed Interrupt */\r
+#define USBC_UPSTA6_DTSEQ_Pos       8\r
+#define USBC_UPSTA6_DTSEQ_Msk       (0x3u << USBC_UPSTA6_DTSEQ_Pos) /**< \brief (USBC_UPSTA6) Data Toggle Sequence */\r
+#define USBC_UPSTA6_DTSEQ(value)    ((USBC_UPSTA6_DTSEQ_Msk & ((value) << USBC_UPSTA6_DTSEQ_Pos)))\r
+#define USBC_UPSTA6_RAMACERI        (0x1u << 10) /**< \brief (USBC_UPSTA6) Ram Access Error Interrupt */\r
+#define USBC_UPSTA6_NBUSYBK_Pos     12\r
+#define USBC_UPSTA6_NBUSYBK_Msk     (0x3u << USBC_UPSTA6_NBUSYBK_Pos) /**< \brief (USBC_UPSTA6) Number of Busy Bank */\r
+#define USBC_UPSTA6_NBUSYBK(value)  ((USBC_UPSTA6_NBUSYBK_Msk & ((value) << USBC_UPSTA6_NBUSYBK_Pos)))\r
+#define USBC_UPSTA6_CURRBK_Pos      14\r
+#define USBC_UPSTA6_CURRBK_Msk      (0x3u << USBC_UPSTA6_CURRBK_Pos) /**< \brief (USBC_UPSTA6) Current Bank */\r
+#define USBC_UPSTA6_CURRBK(value)   ((USBC_UPSTA6_CURRBK_Msk & ((value) << USBC_UPSTA6_CURRBK_Pos)))\r
+/* -------- USBC_UPSTA7 : (USBC Offset: 0x54C) Pipe Status Register -------- */\r
+#define USBC_UPSTA7_RXINI           (0x1u <<  0) /**< \brief (USBC_UPSTA7) Received IN Data Interrupt */\r
+#define USBC_UPSTA7_TXOUTI          (0x1u <<  1) /**< \brief (USBC_UPSTA7) Transmitted OUT Data Interrupt */\r
+#define USBC_UPSTA7_TXSTPI          (0x1u <<  2) /**< \brief (USBC_UPSTA7) Transmitted SETUP Interrupt */\r
+#define USBC_UPSTA7_PERRI           (0x1u <<  3) /**< \brief (USBC_UPSTA7) Pipe Error Interrupt */\r
+#define USBC_UPSTA7_NAKEDI          (0x1u <<  4) /**< \brief (USBC_UPSTA7) NAKed Interrupt */\r
+#define USBC_UPSTA7_ERRORFI         (0x1u <<  5) /**< \brief (USBC_UPSTA7) Errorflow Interrupt */\r
+#define USBC_UPSTA7_RXSTALLDI       (0x1u <<  6) /**< \brief (USBC_UPSTA7) Received STALLed Interrupt */\r
+#define USBC_UPSTA7_DTSEQ_Pos       8\r
+#define USBC_UPSTA7_DTSEQ_Msk       (0x3u << USBC_UPSTA7_DTSEQ_Pos) /**< \brief (USBC_UPSTA7) Data Toggle Sequence */\r
+#define USBC_UPSTA7_DTSEQ(value)    ((USBC_UPSTA7_DTSEQ_Msk & ((value) << USBC_UPSTA7_DTSEQ_Pos)))\r
+#define USBC_UPSTA7_RAMACERI        (0x1u << 10) /**< \brief (USBC_UPSTA7) Ram Access Error Interrupt */\r
+#define USBC_UPSTA7_NBUSYBK_Pos     12\r
+#define USBC_UPSTA7_NBUSYBK_Msk     (0x3u << USBC_UPSTA7_NBUSYBK_Pos) /**< \brief (USBC_UPSTA7) Number of Busy Bank */\r
+#define USBC_UPSTA7_NBUSYBK(value)  ((USBC_UPSTA7_NBUSYBK_Msk & ((value) << USBC_UPSTA7_NBUSYBK_Pos)))\r
+#define USBC_UPSTA7_CURRBK_Pos      14\r
+#define USBC_UPSTA7_CURRBK_Msk      (0x3u << USBC_UPSTA7_CURRBK_Pos) /**< \brief (USBC_UPSTA7) Current Bank */\r
+#define USBC_UPSTA7_CURRBK(value)   ((USBC_UPSTA7_CURRBK_Msk & ((value) << USBC_UPSTA7_CURRBK_Pos)))\r
+/* -------- USBC_UPSTA0CLR : (USBC Offset: 0x560) Pipe Status Clear Register -------- */\r
+#define USBC_UPSTA0CLR_RXINIC       (0x1u <<  0) /**< \brief (USBC_UPSTA0CLR) RXINI Clear */\r
+#define USBC_UPSTA0CLR_TXOUTIC      (0x1u <<  1) /**< \brief (USBC_UPSTA0CLR) TXOUTI Clear */\r
+#define USBC_UPSTA0CLR_TXSTPIC      (0x1u <<  2) /**< \brief (USBC_UPSTA0CLR) TXSTPI Clear */\r
+#define USBC_UPSTA0CLR_PERRIC       (0x1u <<  3) /**< \brief (USBC_UPSTA0CLR) PERRI Clear */\r
+#define USBC_UPSTA0CLR_NAKEDIC      (0x1u <<  4) /**< \brief (USBC_UPSTA0CLR) NAKEDI Clear */\r
+#define USBC_UPSTA0CLR_ERRORFIC     (0x1u <<  5) /**< \brief (USBC_UPSTA0CLR) ERRORFI Clear */\r
+#define USBC_UPSTA0CLR_RXSTALLDIC   (0x1u <<  6) /**< \brief (USBC_UPSTA0CLR) RXSTALLDI Clear */\r
+#define USBC_UPSTA0CLR_RAMACERIC    (0x1u << 10) /**< \brief (USBC_UPSTA0CLR) RAMACERI Clear */\r
+/* -------- USBC_UPSTA1CLR : (USBC Offset: 0x564) Pipe Status Clear Register -------- */\r
+#define USBC_UPSTA1CLR_RXINIC       (0x1u <<  0) /**< \brief (USBC_UPSTA1CLR) RXINI Clear */\r
+#define USBC_UPSTA1CLR_TXOUTIC      (0x1u <<  1) /**< \brief (USBC_UPSTA1CLR) TXOUTI Clear */\r
+#define USBC_UPSTA1CLR_TXSTPIC      (0x1u <<  2) /**< \brief (USBC_UPSTA1CLR) TXSTPI Clear */\r
+#define USBC_UPSTA1CLR_PERRIC       (0x1u <<  3) /**< \brief (USBC_UPSTA1CLR) PERRI Clear */\r
+#define USBC_UPSTA1CLR_NAKEDIC      (0x1u <<  4) /**< \brief (USBC_UPSTA1CLR) NAKEDI Clear */\r
+#define USBC_UPSTA1CLR_ERRORFIC     (0x1u <<  5) /**< \brief (USBC_UPSTA1CLR) ERRORFI Clear */\r
+#define USBC_UPSTA1CLR_RXSTALLDIC   (0x1u <<  6) /**< \brief (USBC_UPSTA1CLR) RXSTALLDI Clear */\r
+#define USBC_UPSTA1CLR_RAMACERIC    (0x1u << 10) /**< \brief (USBC_UPSTA1CLR) RAMACERI Clear */\r
+/* -------- USBC_UPSTA2CLR : (USBC Offset: 0x568) Pipe Status Clear Register -------- */\r
+#define USBC_UPSTA2CLR_RXINIC       (0x1u <<  0) /**< \brief (USBC_UPSTA2CLR) RXINI Clear */\r
+#define USBC_UPSTA2CLR_TXOUTIC      (0x1u <<  1) /**< \brief (USBC_UPSTA2CLR) TXOUTI Clear */\r
+#define USBC_UPSTA2CLR_TXSTPIC      (0x1u <<  2) /**< \brief (USBC_UPSTA2CLR) TXSTPI Clear */\r
+#define USBC_UPSTA2CLR_PERRIC       (0x1u <<  3) /**< \brief (USBC_UPSTA2CLR) PERRI Clear */\r
+#define USBC_UPSTA2CLR_NAKEDIC      (0x1u <<  4) /**< \brief (USBC_UPSTA2CLR) NAKEDI Clear */\r
+#define USBC_UPSTA2CLR_ERRORFIC     (0x1u <<  5) /**< \brief (USBC_UPSTA2CLR) ERRORFI Clear */\r
+#define USBC_UPSTA2CLR_RXSTALLDIC   (0x1u <<  6) /**< \brief (USBC_UPSTA2CLR) RXSTALLDI Clear */\r
+#define USBC_UPSTA2CLR_RAMACERIC    (0x1u << 10) /**< \brief (USBC_UPSTA2CLR) RAMACERI Clear */\r
+/* -------- USBC_UPSTA3CLR : (USBC Offset: 0x56C) Pipe Status Clear Register -------- */\r
+#define USBC_UPSTA3CLR_RXINIC       (0x1u <<  0) /**< \brief (USBC_UPSTA3CLR) RXINI Clear */\r
+#define USBC_UPSTA3CLR_TXOUTIC      (0x1u <<  1) /**< \brief (USBC_UPSTA3CLR) TXOUTI Clear */\r
+#define USBC_UPSTA3CLR_TXSTPIC      (0x1u <<  2) /**< \brief (USBC_UPSTA3CLR) TXSTPI Clear */\r
+#define USBC_UPSTA3CLR_PERRIC       (0x1u <<  3) /**< \brief (USBC_UPSTA3CLR) PERRI Clear */\r
+#define USBC_UPSTA3CLR_NAKEDIC      (0x1u <<  4) /**< \brief (USBC_UPSTA3CLR) NAKEDI Clear */\r
+#define USBC_UPSTA3CLR_ERRORFIC     (0x1u <<  5) /**< \brief (USBC_UPSTA3CLR) ERRORFI Clear */\r
+#define USBC_UPSTA3CLR_RXSTALLDIC   (0x1u <<  6) /**< \brief (USBC_UPSTA3CLR) RXSTALLDI Clear */\r
+#define USBC_UPSTA3CLR_RAMACERIC    (0x1u << 10) /**< \brief (USBC_UPSTA3CLR) RAMACERI Clear */\r
+/* -------- USBC_UPSTA4CLR : (USBC Offset: 0x570) Pipe Status Clear Register -------- */\r
+#define USBC_UPSTA4CLR_RXINIC       (0x1u <<  0) /**< \brief (USBC_UPSTA4CLR) RXINI Clear */\r
+#define USBC_UPSTA4CLR_TXOUTIC      (0x1u <<  1) /**< \brief (USBC_UPSTA4CLR) TXOUTI Clear */\r
+#define USBC_UPSTA4CLR_TXSTPIC      (0x1u <<  2) /**< \brief (USBC_UPSTA4CLR) TXSTPI Clear */\r
+#define USBC_UPSTA4CLR_PERRIC       (0x1u <<  3) /**< \brief (USBC_UPSTA4CLR) PERRI Clear */\r
+#define USBC_UPSTA4CLR_NAKEDIC      (0x1u <<  4) /**< \brief (USBC_UPSTA4CLR) NAKEDI Clear */\r
+#define USBC_UPSTA4CLR_ERRORFIC     (0x1u <<  5) /**< \brief (USBC_UPSTA4CLR) ERRORFI Clear */\r
+#define USBC_UPSTA4CLR_RXSTALLDIC   (0x1u <<  6) /**< \brief (USBC_UPSTA4CLR) RXSTALLDI Clear */\r
+#define USBC_UPSTA4CLR_RAMACERIC    (0x1u << 10) /**< \brief (USBC_UPSTA4CLR) RAMACERI Clear */\r
+/* -------- USBC_UPSTA5CLR : (USBC Offset: 0x574) Pipe Status Clear Register -------- */\r
+#define USBC_UPSTA5CLR_RXINIC       (0x1u <<  0) /**< \brief (USBC_UPSTA5CLR) RXINI Clear */\r
+#define USBC_UPSTA5CLR_TXOUTIC      (0x1u <<  1) /**< \brief (USBC_UPSTA5CLR) TXOUTI Clear */\r
+#define USBC_UPSTA5CLR_TXSTPIC      (0x1u <<  2) /**< \brief (USBC_UPSTA5CLR) TXSTPI Clear */\r
+#define USBC_UPSTA5CLR_PERRIC       (0x1u <<  3) /**< \brief (USBC_UPSTA5CLR) PERRI Clear */\r
+#define USBC_UPSTA5CLR_NAKEDIC      (0x1u <<  4) /**< \brief (USBC_UPSTA5CLR) NAKEDI Clear */\r
+#define USBC_UPSTA5CLR_ERRORFIC     (0x1u <<  5) /**< \brief (USBC_UPSTA5CLR) ERRORFI Clear */\r
+#define USBC_UPSTA5CLR_RXSTALLDIC   (0x1u <<  6) /**< \brief (USBC_UPSTA5CLR) RXSTALLDI Clear */\r
+#define USBC_UPSTA5CLR_RAMACERIC    (0x1u << 10) /**< \brief (USBC_UPSTA5CLR) RAMACERI Clear */\r
+/* -------- USBC_UPSTA6CLR : (USBC Offset: 0x578) Pipe Status Clear Register -------- */\r
+#define USBC_UPSTA6CLR_RXINIC       (0x1u <<  0) /**< \brief (USBC_UPSTA6CLR) RXINI Clear */\r
+#define USBC_UPSTA6CLR_TXOUTIC      (0x1u <<  1) /**< \brief (USBC_UPSTA6CLR) TXOUTI Clear */\r
+#define USBC_UPSTA6CLR_TXSTPIC      (0x1u <<  2) /**< \brief (USBC_UPSTA6CLR) TXSTPI Clear */\r
+#define USBC_UPSTA6CLR_PERRIC       (0x1u <<  3) /**< \brief (USBC_UPSTA6CLR) PERRI Clear */\r
+#define USBC_UPSTA6CLR_NAKEDIC      (0x1u <<  4) /**< \brief (USBC_UPSTA6CLR) NAKEDI Clear */\r
+#define USBC_UPSTA6CLR_ERRORFIC     (0x1u <<  5) /**< \brief (USBC_UPSTA6CLR) ERRORFI Clear */\r
+#define USBC_UPSTA6CLR_RXSTALLDIC   (0x1u <<  6) /**< \brief (USBC_UPSTA6CLR) RXSTALLDI Clear */\r
+#define USBC_UPSTA6CLR_RAMACERIC    (0x1u << 10) /**< \brief (USBC_UPSTA6CLR) RAMACERI Clear */\r
+/* -------- USBC_UPSTA7CLR : (USBC Offset: 0x57C) Pipe Status Clear Register -------- */\r
+#define USBC_UPSTA7CLR_RXINIC       (0x1u <<  0) /**< \brief (USBC_UPSTA7CLR) RXINI Clear */\r
+#define USBC_UPSTA7CLR_TXOUTIC      (0x1u <<  1) /**< \brief (USBC_UPSTA7CLR) TXOUTI Clear */\r
+#define USBC_UPSTA7CLR_TXSTPIC      (0x1u <<  2) /**< \brief (USBC_UPSTA7CLR) TXSTPI Clear */\r
+#define USBC_UPSTA7CLR_PERRIC       (0x1u <<  3) /**< \brief (USBC_UPSTA7CLR) PERRI Clear */\r
+#define USBC_UPSTA7CLR_NAKEDIC      (0x1u <<  4) /**< \brief (USBC_UPSTA7CLR) NAKEDI Clear */\r
+#define USBC_UPSTA7CLR_ERRORFIC     (0x1u <<  5) /**< \brief (USBC_UPSTA7CLR) ERRORFI Clear */\r
+#define USBC_UPSTA7CLR_RXSTALLDIC   (0x1u <<  6) /**< \brief (USBC_UPSTA7CLR) RXSTALLDI Clear */\r
+#define USBC_UPSTA7CLR_RAMACERIC    (0x1u << 10) /**< \brief (USBC_UPSTA7CLR) RAMACERI Clear */\r
+/* -------- USBC_UPSTA0SET : (USBC Offset: 0x590) Pipe Status Set Register -------- */\r
+#define USBC_UPSTA0SET_RXINIS       (0x1u <<  0) /**< \brief (USBC_UPSTA0SET) RXINI Set */\r
+#define USBC_UPSTA0SET_TXOUTIS      (0x1u <<  1) /**< \brief (USBC_UPSTA0SET) TXOUTI Set */\r
+#define USBC_UPSTA0SET_TXSTPIS      (0x1u <<  2) /**< \brief (USBC_UPSTA0SET) TXSTPI Set */\r
+#define USBC_UPSTA0SET_PERRIS       (0x1u <<  3) /**< \brief (USBC_UPSTA0SET) PERRI Set */\r
+#define USBC_UPSTA0SET_NAKEDIS      (0x1u <<  4) /**< \brief (USBC_UPSTA0SET) NAKEDI Set */\r
+#define USBC_UPSTA0SET_ERRORFIS     (0x1u <<  5) /**< \brief (USBC_UPSTA0SET) ERRORFI Set */\r
+#define USBC_UPSTA0SET_RXSTALLDIS   (0x1u <<  6) /**< \brief (USBC_UPSTA0SET) RXSTALLDI Set */\r
+#define USBC_UPSTA0SET_RAMACERIS    (0x1u << 10) /**< \brief (USBC_UPSTA0SET) RAMACERI Set */\r
+/* -------- USBC_UPSTA1SET : (USBC Offset: 0x594) Pipe Status Set Register -------- */\r
+#define USBC_UPSTA1SET_RXINIS       (0x1u <<  0) /**< \brief (USBC_UPSTA1SET) RXINI Set */\r
+#define USBC_UPSTA1SET_TXOUTIS      (0x1u <<  1) /**< \brief (USBC_UPSTA1SET) TXOUTI Set */\r
+#define USBC_UPSTA1SET_TXSTPIS      (0x1u <<  2) /**< \brief (USBC_UPSTA1SET) TXSTPI Set */\r
+#define USBC_UPSTA1SET_PERRIS       (0x1u <<  3) /**< \brief (USBC_UPSTA1SET) PERRI Set */\r
+#define USBC_UPSTA1SET_NAKEDIS      (0x1u <<  4) /**< \brief (USBC_UPSTA1SET) NAKEDI Set */\r
+#define USBC_UPSTA1SET_ERRORFIS     (0x1u <<  5) /**< \brief (USBC_UPSTA1SET) ERRORFI Set */\r
+#define USBC_UPSTA1SET_RXSTALLDIS   (0x1u <<  6) /**< \brief (USBC_UPSTA1SET) RXSTALLDI Set */\r
+#define USBC_UPSTA1SET_RAMACERIS    (0x1u << 10) /**< \brief (USBC_UPSTA1SET) RAMACERI Set */\r
+/* -------- USBC_UPSTA2SET : (USBC Offset: 0x598) Pipe Status Set Register -------- */\r
+#define USBC_UPSTA2SET_RXINIS       (0x1u <<  0) /**< \brief (USBC_UPSTA2SET) RXINI Set */\r
+#define USBC_UPSTA2SET_TXOUTIS      (0x1u <<  1) /**< \brief (USBC_UPSTA2SET) TXOUTI Set */\r
+#define USBC_UPSTA2SET_TXSTPIS      (0x1u <<  2) /**< \brief (USBC_UPSTA2SET) TXSTPI Set */\r
+#define USBC_UPSTA2SET_PERRIS       (0x1u <<  3) /**< \brief (USBC_UPSTA2SET) PERRI Set */\r
+#define USBC_UPSTA2SET_NAKEDIS      (0x1u <<  4) /**< \brief (USBC_UPSTA2SET) NAKEDI Set */\r
+#define USBC_UPSTA2SET_ERRORFIS     (0x1u <<  5) /**< \brief (USBC_UPSTA2SET) ERRORFI Set */\r
+#define USBC_UPSTA2SET_RXSTALLDIS   (0x1u <<  6) /**< \brief (USBC_UPSTA2SET) RXSTALLDI Set */\r
+#define USBC_UPSTA2SET_RAMACERIS    (0x1u << 10) /**< \brief (USBC_UPSTA2SET) RAMACERI Set */\r
+/* -------- USBC_UPSTA3SET : (USBC Offset: 0x59C) Pipe Status Set Register -------- */\r
+#define USBC_UPSTA3SET_RXINIS       (0x1u <<  0) /**< \brief (USBC_UPSTA3SET) RXINI Set */\r
+#define USBC_UPSTA3SET_TXOUTIS      (0x1u <<  1) /**< \brief (USBC_UPSTA3SET) TXOUTI Set */\r
+#define USBC_UPSTA3SET_TXSTPIS      (0x1u <<  2) /**< \brief (USBC_UPSTA3SET) TXSTPI Set */\r
+#define USBC_UPSTA3SET_PERRIS       (0x1u <<  3) /**< \brief (USBC_UPSTA3SET) PERRI Set */\r
+#define USBC_UPSTA3SET_NAKEDIS      (0x1u <<  4) /**< \brief (USBC_UPSTA3SET) NAKEDI Set */\r
+#define USBC_UPSTA3SET_ERRORFIS     (0x1u <<  5) /**< \brief (USBC_UPSTA3SET) ERRORFI Set */\r
+#define USBC_UPSTA3SET_RXSTALLDIS   (0x1u <<  6) /**< \brief (USBC_UPSTA3SET) RXSTALLDI Set */\r
+#define USBC_UPSTA3SET_RAMACERIS    (0x1u << 10) /**< \brief (USBC_UPSTA3SET) RAMACERI Set */\r
+/* -------- USBC_UPSTA4SET : (USBC Offset: 0x5A0) Pipe Status Set Register -------- */\r
+#define USBC_UPSTA4SET_RXINIS       (0x1u <<  0) /**< \brief (USBC_UPSTA4SET) RXINI Set */\r
+#define USBC_UPSTA4SET_TXOUTIS      (0x1u <<  1) /**< \brief (USBC_UPSTA4SET) TXOUTI Set */\r
+#define USBC_UPSTA4SET_TXSTPIS      (0x1u <<  2) /**< \brief (USBC_UPSTA4SET) TXSTPI Set */\r
+#define USBC_UPSTA4SET_PERRIS       (0x1u <<  3) /**< \brief (USBC_UPSTA4SET) PERRI Set */\r
+#define USBC_UPSTA4SET_NAKEDIS      (0x1u <<  4) /**< \brief (USBC_UPSTA4SET) NAKEDI Set */\r
+#define USBC_UPSTA4SET_ERRORFIS     (0x1u <<  5) /**< \brief (USBC_UPSTA4SET) ERRORFI Set */\r
+#define USBC_UPSTA4SET_RXSTALLDIS   (0x1u <<  6) /**< \brief (USBC_UPSTA4SET) RXSTALLDI Set */\r
+#define USBC_UPSTA4SET_RAMACERIS    (0x1u << 10) /**< \brief (USBC_UPSTA4SET) RAMACERI Set */\r
+/* -------- USBC_UPSTA5SET : (USBC Offset: 0x5A4) Pipe Status Set Register -------- */\r
+#define USBC_UPSTA5SET_RXINIS       (0x1u <<  0) /**< \brief (USBC_UPSTA5SET) RXINI Set */\r
+#define USBC_UPSTA5SET_TXOUTIS      (0x1u <<  1) /**< \brief (USBC_UPSTA5SET) TXOUTI Set */\r
+#define USBC_UPSTA5SET_TXSTPIS      (0x1u <<  2) /**< \brief (USBC_UPSTA5SET) TXSTPI Set */\r
+#define USBC_UPSTA5SET_PERRIS       (0x1u <<  3) /**< \brief (USBC_UPSTA5SET) PERRI Set */\r
+#define USBC_UPSTA5SET_NAKEDIS      (0x1u <<  4) /**< \brief (USBC_UPSTA5SET) NAKEDI Set */\r
+#define USBC_UPSTA5SET_ERRORFIS     (0x1u <<  5) /**< \brief (USBC_UPSTA5SET) ERRORFI Set */\r
+#define USBC_UPSTA5SET_RXSTALLDIS   (0x1u <<  6) /**< \brief (USBC_UPSTA5SET) RXSTALLDI Set */\r
+#define USBC_UPSTA5SET_RAMACERIS    (0x1u << 10) /**< \brief (USBC_UPSTA5SET) RAMACERI Set */\r
+/* -------- USBC_UPSTA6SET : (USBC Offset: 0x5A8) Pipe Status Set Register -------- */\r
+#define USBC_UPSTA6SET_RXINIS       (0x1u <<  0) /**< \brief (USBC_UPSTA6SET) RXINI Set */\r
+#define USBC_UPSTA6SET_TXOUTIS      (0x1u <<  1) /**< \brief (USBC_UPSTA6SET) TXOUTI Set */\r
+#define USBC_UPSTA6SET_TXSTPIS      (0x1u <<  2) /**< \brief (USBC_UPSTA6SET) TXSTPI Set */\r
+#define USBC_UPSTA6SET_PERRIS       (0x1u <<  3) /**< \brief (USBC_UPSTA6SET) PERRI Set */\r
+#define USBC_UPSTA6SET_NAKEDIS      (0x1u <<  4) /**< \brief (USBC_UPSTA6SET) NAKEDI Set */\r
+#define USBC_UPSTA6SET_ERRORFIS     (0x1u <<  5) /**< \brief (USBC_UPSTA6SET) ERRORFI Set */\r
+#define USBC_UPSTA6SET_RXSTALLDIS   (0x1u <<  6) /**< \brief (USBC_UPSTA6SET) RXSTALLDI Set */\r
+#define USBC_UPSTA6SET_RAMACERIS    (0x1u << 10) /**< \brief (USBC_UPSTA6SET) RAMACERI Set */\r
+/* -------- USBC_UPSTA7SET : (USBC Offset: 0x5AC) Pipe Status Set Register -------- */\r
+#define USBC_UPSTA7SET_RXINIS       (0x1u <<  0) /**< \brief (USBC_UPSTA7SET) RXINI Set */\r
+#define USBC_UPSTA7SET_TXOUTIS      (0x1u <<  1) /**< \brief (USBC_UPSTA7SET) TXOUTI Set */\r
+#define USBC_UPSTA7SET_TXSTPIS      (0x1u <<  2) /**< \brief (USBC_UPSTA7SET) TXSTPI Set */\r
+#define USBC_UPSTA7SET_PERRIS       (0x1u <<  3) /**< \brief (USBC_UPSTA7SET) PERRI Set */\r
+#define USBC_UPSTA7SET_NAKEDIS      (0x1u <<  4) /**< \brief (USBC_UPSTA7SET) NAKEDI Set */\r
+#define USBC_UPSTA7SET_ERRORFIS     (0x1u <<  5) /**< \brief (USBC_UPSTA7SET) ERRORFI Set */\r
+#define USBC_UPSTA7SET_RXSTALLDIS   (0x1u <<  6) /**< \brief (USBC_UPSTA7SET) RXSTALLDI Set */\r
+#define USBC_UPSTA7SET_RAMACERIS    (0x1u << 10) /**< \brief (USBC_UPSTA7SET) RAMACERI Set */\r
+/* -------- USBC_UPCON0 : (USBC Offset: 0x5C0) Pipe Control Register -------- */\r
+#define USBC_UPCON0_RXINE           (0x1u <<  0) /**< \brief (USBC_UPCON0) RXIN Interrupt Enable */\r
+#define USBC_UPCON0_TXOUTE          (0x1u <<  1) /**< \brief (USBC_UPCON0) TXOUT Interrupt Enable */\r
+#define USBC_UPCON0_TXSTPE          (0x1u <<  2) /**< \brief (USBC_UPCON0) TXSTP Interrupt Enable */\r
+#define USBC_UPCON0_PERRE           (0x1u <<  3) /**< \brief (USBC_UPCON0) PERR Interrupt Enable */\r
+#define USBC_UPCON0_NAKEDE          (0x1u <<  4) /**< \brief (USBC_UPCON0) NAKED Interrupt Enable */\r
+#define USBC_UPCON0_ERRORFIE        (0x1u <<  5) /**< \brief (USBC_UPCON0) ERRORFI Interrupt Enable */\r
+#define USBC_UPCON0_RXSTALLDE       (0x1u <<  6) /**< \brief (USBC_UPCON0) RXTALLD Interrupt Enable */\r
+#define USBC_UPCON0_RAMACERE        (0x1u << 10) /**< \brief (USBC_UPCON0) RAMACER Interrupt Enable */\r
+#define USBC_UPCON0_NBUSYBKE        (0x1u << 12) /**< \brief (USBC_UPCON0) NBUSYBKInterrupt Enable */\r
+#define USBC_UPCON0_FIFOCON         (0x1u << 14) /**< \brief (USBC_UPCON0) FIFO Control */\r
+#define USBC_UPCON0_PFREEZE         (0x1u << 17) /**< \brief (USBC_UPCON0) Pipe Freeze */\r
+#define USBC_UPCON0_INITDTGL        (0x1u << 18) /**< \brief (USBC_UPCON0) Data Toggle Initialization */\r
+#define USBC_UPCON0_INITBK          (0x1u << 19) /**< \brief (USBC_UPCON0) Bank Initialization */\r
+/* -------- USBC_UPCON1 : (USBC Offset: 0x5C4) Pipe Control Register -------- */\r
+#define USBC_UPCON1_RXINE           (0x1u <<  0) /**< \brief (USBC_UPCON1) RXIN Interrupt Enable */\r
+#define USBC_UPCON1_TXOUTE          (0x1u <<  1) /**< \brief (USBC_UPCON1) TXOUT Interrupt Enable */\r
+#define USBC_UPCON1_TXSTPE          (0x1u <<  2) /**< \brief (USBC_UPCON1) TXSTP Interrupt Enable */\r
+#define USBC_UPCON1_PERRE           (0x1u <<  3) /**< \brief (USBC_UPCON1) PERR Interrupt Enable */\r
+#define USBC_UPCON1_NAKEDE          (0x1u <<  4) /**< \brief (USBC_UPCON1) NAKED Interrupt Enable */\r
+#define USBC_UPCON1_ERRORFIE        (0x1u <<  5) /**< \brief (USBC_UPCON1) ERRORFI Interrupt Enable */\r
+#define USBC_UPCON1_RXSTALLDE       (0x1u <<  6) /**< \brief (USBC_UPCON1) RXTALLD Interrupt Enable */\r
+#define USBC_UPCON1_RAMACERE        (0x1u << 10) /**< \brief (USBC_UPCON1) RAMACER Interrupt Enable */\r
+#define USBC_UPCON1_NBUSYBKE        (0x1u << 12) /**< \brief (USBC_UPCON1) NBUSYBKInterrupt Enable */\r
+#define USBC_UPCON1_FIFOCON         (0x1u << 14) /**< \brief (USBC_UPCON1) FIFO Control */\r
+#define USBC_UPCON1_PFREEZE         (0x1u << 17) /**< \brief (USBC_UPCON1) Pipe Freeze */\r
+#define USBC_UPCON1_INITDTGL        (0x1u << 18) /**< \brief (USBC_UPCON1) Data Toggle Initialization */\r
+#define USBC_UPCON1_INITBK          (0x1u << 19) /**< \brief (USBC_UPCON1) Bank Initialization */\r
+/* -------- USBC_UPCON2 : (USBC Offset: 0x5C8) Pipe Control Register -------- */\r
+#define USBC_UPCON2_RXINE           (0x1u <<  0) /**< \brief (USBC_UPCON2) RXIN Interrupt Enable */\r
+#define USBC_UPCON2_TXOUTE          (0x1u <<  1) /**< \brief (USBC_UPCON2) TXOUT Interrupt Enable */\r
+#define USBC_UPCON2_TXSTPE          (0x1u <<  2) /**< \brief (USBC_UPCON2) TXSTP Interrupt Enable */\r
+#define USBC_UPCON2_PERRE           (0x1u <<  3) /**< \brief (USBC_UPCON2) PERR Interrupt Enable */\r
+#define USBC_UPCON2_NAKEDE          (0x1u <<  4) /**< \brief (USBC_UPCON2) NAKED Interrupt Enable */\r
+#define USBC_UPCON2_ERRORFIE        (0x1u <<  5) /**< \brief (USBC_UPCON2) ERRORFI Interrupt Enable */\r
+#define USBC_UPCON2_RXSTALLDE       (0x1u <<  6) /**< \brief (USBC_UPCON2) RXTALLD Interrupt Enable */\r
+#define USBC_UPCON2_RAMACERE        (0x1u << 10) /**< \brief (USBC_UPCON2) RAMACER Interrupt Enable */\r
+#define USBC_UPCON2_NBUSYBKE        (0x1u << 12) /**< \brief (USBC_UPCON2) NBUSYBKInterrupt Enable */\r
+#define USBC_UPCON2_FIFOCON         (0x1u << 14) /**< \brief (USBC_UPCON2) FIFO Control */\r
+#define USBC_UPCON2_PFREEZE         (0x1u << 17) /**< \brief (USBC_UPCON2) Pipe Freeze */\r
+#define USBC_UPCON2_INITDTGL        (0x1u << 18) /**< \brief (USBC_UPCON2) Data Toggle Initialization */\r
+#define USBC_UPCON2_INITBK          (0x1u << 19) /**< \brief (USBC_UPCON2) Bank Initialization */\r
+/* -------- USBC_UPCON3 : (USBC Offset: 0x5CC) Pipe Control Register -------- */\r
+#define USBC_UPCON3_RXINE           (0x1u <<  0) /**< \brief (USBC_UPCON3) RXIN Interrupt Enable */\r
+#define USBC_UPCON3_TXOUTE          (0x1u <<  1) /**< \brief (USBC_UPCON3) TXOUT Interrupt Enable */\r
+#define USBC_UPCON3_TXSTPE          (0x1u <<  2) /**< \brief (USBC_UPCON3) TXSTP Interrupt Enable */\r
+#define USBC_UPCON3_PERRE           (0x1u <<  3) /**< \brief (USBC_UPCON3) PERR Interrupt Enable */\r
+#define USBC_UPCON3_NAKEDE          (0x1u <<  4) /**< \brief (USBC_UPCON3) NAKED Interrupt Enable */\r
+#define USBC_UPCON3_ERRORFIE        (0x1u <<  5) /**< \brief (USBC_UPCON3) ERRORFI Interrupt Enable */\r
+#define USBC_UPCON3_RXSTALLDE       (0x1u <<  6) /**< \brief (USBC_UPCON3) RXTALLD Interrupt Enable */\r
+#define USBC_UPCON3_RAMACERE        (0x1u << 10) /**< \brief (USBC_UPCON3) RAMACER Interrupt Enable */\r
+#define USBC_UPCON3_NBUSYBKE        (0x1u << 12) /**< \brief (USBC_UPCON3) NBUSYBKInterrupt Enable */\r
+#define USBC_UPCON3_FIFOCON         (0x1u << 14) /**< \brief (USBC_UPCON3) FIFO Control */\r
+#define USBC_UPCON3_PFREEZE         (0x1u << 17) /**< \brief (USBC_UPCON3) Pipe Freeze */\r
+#define USBC_UPCON3_INITDTGL        (0x1u << 18) /**< \brief (USBC_UPCON3) Data Toggle Initialization */\r
+#define USBC_UPCON3_INITBK          (0x1u << 19) /**< \brief (USBC_UPCON3) Bank Initialization */\r
+/* -------- USBC_UPCON4 : (USBC Offset: 0x5D0) Pipe Control Register -------- */\r
+#define USBC_UPCON4_RXINE           (0x1u <<  0) /**< \brief (USBC_UPCON4) RXIN Interrupt Enable */\r
+#define USBC_UPCON4_TXOUTE          (0x1u <<  1) /**< \brief (USBC_UPCON4) TXOUT Interrupt Enable */\r
+#define USBC_UPCON4_TXSTPE          (0x1u <<  2) /**< \brief (USBC_UPCON4) TXSTP Interrupt Enable */\r
+#define USBC_UPCON4_PERRE           (0x1u <<  3) /**< \brief (USBC_UPCON4) PERR Interrupt Enable */\r
+#define USBC_UPCON4_NAKEDE          (0x1u <<  4) /**< \brief (USBC_UPCON4) NAKED Interrupt Enable */\r
+#define USBC_UPCON4_ERRORFIE        (0x1u <<  5) /**< \brief (USBC_UPCON4) ERRORFI Interrupt Enable */\r
+#define USBC_UPCON4_RXSTALLDE       (0x1u <<  6) /**< \brief (USBC_UPCON4) RXTALLD Interrupt Enable */\r
+#define USBC_UPCON4_RAMACERE        (0x1u << 10) /**< \brief (USBC_UPCON4) RAMACER Interrupt Enable */\r
+#define USBC_UPCON4_NBUSYBKE        (0x1u << 12) /**< \brief (USBC_UPCON4) NBUSYBKInterrupt Enable */\r
+#define USBC_UPCON4_FIFOCON         (0x1u << 14) /**< \brief (USBC_UPCON4) FIFO Control */\r
+#define USBC_UPCON4_PFREEZE         (0x1u << 17) /**< \brief (USBC_UPCON4) Pipe Freeze */\r
+#define USBC_UPCON4_INITDTGL        (0x1u << 18) /**< \brief (USBC_UPCON4) Data Toggle Initialization */\r
+#define USBC_UPCON4_INITBK          (0x1u << 19) /**< \brief (USBC_UPCON4) Bank Initialization */\r
+/* -------- USBC_UPCON5 : (USBC Offset: 0x5D4) Pipe Control Register -------- */\r
+#define USBC_UPCON5_RXINE           (0x1u <<  0) /**< \brief (USBC_UPCON5) RXIN Interrupt Enable */\r
+#define USBC_UPCON5_TXOUTE          (0x1u <<  1) /**< \brief (USBC_UPCON5) TXOUT Interrupt Enable */\r
+#define USBC_UPCON5_TXSTPE          (0x1u <<  2) /**< \brief (USBC_UPCON5) TXSTP Interrupt Enable */\r
+#define USBC_UPCON5_PERRE           (0x1u <<  3) /**< \brief (USBC_UPCON5) PERR Interrupt Enable */\r
+#define USBC_UPCON5_NAKEDE          (0x1u <<  4) /**< \brief (USBC_UPCON5) NAKED Interrupt Enable */\r
+#define USBC_UPCON5_ERRORFIE        (0x1u <<  5) /**< \brief (USBC_UPCON5) ERRORFI Interrupt Enable */\r
+#define USBC_UPCON5_RXSTALLDE       (0x1u <<  6) /**< \brief (USBC_UPCON5) RXTALLD Interrupt Enable */\r
+#define USBC_UPCON5_RAMACERE        (0x1u << 10) /**< \brief (USBC_UPCON5) RAMACER Interrupt Enable */\r
+#define USBC_UPCON5_NBUSYBKE        (0x1u << 12) /**< \brief (USBC_UPCON5) NBUSYBKInterrupt Enable */\r
+#define USBC_UPCON5_FIFOCON         (0x1u << 14) /**< \brief (USBC_UPCON5) FIFO Control */\r
+#define USBC_UPCON5_PFREEZE         (0x1u << 17) /**< \brief (USBC_UPCON5) Pipe Freeze */\r
+#define USBC_UPCON5_INITDTGL        (0x1u << 18) /**< \brief (USBC_UPCON5) Data Toggle Initialization */\r
+#define USBC_UPCON5_INITBK          (0x1u << 19) /**< \brief (USBC_UPCON5) Bank Initialization */\r
+/* -------- USBC_UPCON6 : (USBC Offset: 0x5D8) Pipe Control Register -------- */\r
+#define USBC_UPCON6_RXINE           (0x1u <<  0) /**< \brief (USBC_UPCON6) RXIN Interrupt Enable */\r
+#define USBC_UPCON6_TXOUTE          (0x1u <<  1) /**< \brief (USBC_UPCON6) TXOUT Interrupt Enable */\r
+#define USBC_UPCON6_TXSTPE          (0x1u <<  2) /**< \brief (USBC_UPCON6) TXSTP Interrupt Enable */\r
+#define USBC_UPCON6_PERRE           (0x1u <<  3) /**< \brief (USBC_UPCON6) PERR Interrupt Enable */\r
+#define USBC_UPCON6_NAKEDE          (0x1u <<  4) /**< \brief (USBC_UPCON6) NAKED Interrupt Enable */\r
+#define USBC_UPCON6_ERRORFIE        (0x1u <<  5) /**< \brief (USBC_UPCON6) ERRORFI Interrupt Enable */\r
+#define USBC_UPCON6_RXSTALLDE       (0x1u <<  6) /**< \brief (USBC_UPCON6) RXTALLD Interrupt Enable */\r
+#define USBC_UPCON6_RAMACERE        (0x1u << 10) /**< \brief (USBC_UPCON6) RAMACER Interrupt Enable */\r
+#define USBC_UPCON6_NBUSYBKE        (0x1u << 12) /**< \brief (USBC_UPCON6) NBUSYBKInterrupt Enable */\r
+#define USBC_UPCON6_FIFOCON         (0x1u << 14) /**< \brief (USBC_UPCON6) FIFO Control */\r
+#define USBC_UPCON6_PFREEZE         (0x1u << 17) /**< \brief (USBC_UPCON6) Pipe Freeze */\r
+#define USBC_UPCON6_INITDTGL        (0x1u << 18) /**< \brief (USBC_UPCON6) Data Toggle Initialization */\r
+#define USBC_UPCON6_INITBK          (0x1u << 19) /**< \brief (USBC_UPCON6) Bank Initialization */\r
+/* -------- USBC_UPCON7 : (USBC Offset: 0x5DC) Pipe Control Register -------- */\r
+#define USBC_UPCON7_RXINE           (0x1u <<  0) /**< \brief (USBC_UPCON7) RXIN Interrupt Enable */\r
+#define USBC_UPCON7_TXOUTE          (0x1u <<  1) /**< \brief (USBC_UPCON7) TXOUT Interrupt Enable */\r
+#define USBC_UPCON7_TXSTPE          (0x1u <<  2) /**< \brief (USBC_UPCON7) TXSTP Interrupt Enable */\r
+#define USBC_UPCON7_PERRE           (0x1u <<  3) /**< \brief (USBC_UPCON7) PERR Interrupt Enable */\r
+#define USBC_UPCON7_NAKEDE          (0x1u <<  4) /**< \brief (USBC_UPCON7) NAKED Interrupt Enable */\r
+#define USBC_UPCON7_ERRORFIE        (0x1u <<  5) /**< \brief (USBC_UPCON7) ERRORFI Interrupt Enable */\r
+#define USBC_UPCON7_RXSTALLDE       (0x1u <<  6) /**< \brief (USBC_UPCON7) RXTALLD Interrupt Enable */\r
+#define USBC_UPCON7_RAMACERE        (0x1u << 10) /**< \brief (USBC_UPCON7) RAMACER Interrupt Enable */\r
+#define USBC_UPCON7_NBUSYBKE        (0x1u << 12) /**< \brief (USBC_UPCON7) NBUSYBKInterrupt Enable */\r
+#define USBC_UPCON7_FIFOCON         (0x1u << 14) /**< \brief (USBC_UPCON7) FIFO Control */\r
+#define USBC_UPCON7_PFREEZE         (0x1u << 17) /**< \brief (USBC_UPCON7) Pipe Freeze */\r
+#define USBC_UPCON7_INITDTGL        (0x1u << 18) /**< \brief (USBC_UPCON7) Data Toggle Initialization */\r
+#define USBC_UPCON7_INITBK          (0x1u << 19) /**< \brief (USBC_UPCON7) Bank Initialization */\r
+/* -------- USBC_UPCON0SET : (USBC Offset: 0x5F0) Pipe Control Set Register -------- */\r
+#define USBC_UPCON0SET_RXINES       (0x1u <<  0) /**< \brief (USBC_UPCON0SET) RXINE Set */\r
+#define USBC_UPCON0SET_TXOUTES      (0x1u <<  1) /**< \brief (USBC_UPCON0SET) TXOUTE Set */\r
+#define USBC_UPCON0SET_TXSTPES      (0x1u <<  2) /**< \brief (USBC_UPCON0SET) TXSTPE Set */\r
+#define USBC_UPCON0SET_PERRES       (0x1u <<  3) /**< \brief (USBC_UPCON0SET) PERRE Set */\r
+#define USBC_UPCON0SET_NAKEDES      (0x1u <<  4) /**< \brief (USBC_UPCON0SET) NAKEDE Set */\r
+#define USBC_UPCON0SET_ERRORFIES    (0x1u <<  5) /**< \brief (USBC_UPCON0SET) ERRORFIE Set */\r
+#define USBC_UPCON0SET_RXSTALLDES   (0x1u <<  6) /**< \brief (USBC_UPCON0SET) RXSTALLDE Set */\r
+#define USBC_UPCON0SET_RAMACERES    (0x1u << 10) /**< \brief (USBC_UPCON0SET) RAMACERE Set */\r
+#define USBC_UPCON0SET_NBUSYBKES    (0x1u << 12) /**< \brief (USBC_UPCON0SET) NBUSYBKE Set */\r
+#define USBC_UPCON0SET_FIFOCONS     (0x1u << 14) /**< \brief (USBC_UPCON0SET) FIFOCON Set */\r
+#define USBC_UPCON0SET_PFREEZES     (0x1u << 17) /**< \brief (USBC_UPCON0SET) PFREEZE Set */\r
+#define USBC_UPCON0SET_INITDTGLS    (0x1u << 18) /**< \brief (USBC_UPCON0SET) INITDTGL Set */\r
+#define USBC_UPCON0SET_INITBKS      (0x1u << 19) /**< \brief (USBC_UPCON0SET) INITBK Set */\r
+/* -------- USBC_UPCON1SET : (USBC Offset: 0x5F4) Pipe Control Set Register -------- */\r
+#define USBC_UPCON1SET_RXINES       (0x1u <<  0) /**< \brief (USBC_UPCON1SET) RXINE Set */\r
+#define USBC_UPCON1SET_TXOUTES      (0x1u <<  1) /**< \brief (USBC_UPCON1SET) TXOUTE Set */\r
+#define USBC_UPCON1SET_TXSTPES      (0x1u <<  2) /**< \brief (USBC_UPCON1SET) TXSTPE Set */\r
+#define USBC_UPCON1SET_PERRES       (0x1u <<  3) /**< \brief (USBC_UPCON1SET) PERRE Set */\r
+#define USBC_UPCON1SET_NAKEDES      (0x1u <<  4) /**< \brief (USBC_UPCON1SET) NAKEDE Set */\r
+#define USBC_UPCON1SET_ERRORFIES    (0x1u <<  5) /**< \brief (USBC_UPCON1SET) ERRORFIE Set */\r
+#define USBC_UPCON1SET_RXSTALLDES   (0x1u <<  6) /**< \brief (USBC_UPCON1SET) RXSTALLDE Set */\r
+#define USBC_UPCON1SET_RAMACERES    (0x1u << 10) /**< \brief (USBC_UPCON1SET) RAMACERE Set */\r
+#define USBC_UPCON1SET_NBUSYBKES    (0x1u << 12) /**< \brief (USBC_UPCON1SET) NBUSYBKE Set */\r
+#define USBC_UPCON1SET_FIFOCONS     (0x1u << 14) /**< \brief (USBC_UPCON1SET) FIFOCON Set */\r
+#define USBC_UPCON1SET_PFREEZES     (0x1u << 17) /**< \brief (USBC_UPCON1SET) PFREEZE Set */\r
+#define USBC_UPCON1SET_INITDTGLS    (0x1u << 18) /**< \brief (USBC_UPCON1SET) INITDTGL Set */\r
+#define USBC_UPCON1SET_INITBKS      (0x1u << 19) /**< \brief (USBC_UPCON1SET) INITBK Set */\r
+/* -------- USBC_UPCON2SET : (USBC Offset: 0x5F8) Pipe Control Set Register -------- */\r
+#define USBC_UPCON2SET_RXINES       (0x1u <<  0) /**< \brief (USBC_UPCON2SET) RXINE Set */\r
+#define USBC_UPCON2SET_TXOUTES      (0x1u <<  1) /**< \brief (USBC_UPCON2SET) TXOUTE Set */\r
+#define USBC_UPCON2SET_TXSTPES      (0x1u <<  2) /**< \brief (USBC_UPCON2SET) TXSTPE Set */\r
+#define USBC_UPCON2SET_PERRES       (0x1u <<  3) /**< \brief (USBC_UPCON2SET) PERRE Set */\r
+#define USBC_UPCON2SET_NAKEDES      (0x1u <<  4) /**< \brief (USBC_UPCON2SET) NAKEDE Set */\r
+#define USBC_UPCON2SET_ERRORFIES    (0x1u <<  5) /**< \brief (USBC_UPCON2SET) ERRORFIE Set */\r
+#define USBC_UPCON2SET_RXSTALLDES   (0x1u <<  6) /**< \brief (USBC_UPCON2SET) RXSTALLDE Set */\r
+#define USBC_UPCON2SET_RAMACERES    (0x1u << 10) /**< \brief (USBC_UPCON2SET) RAMACERE Set */\r
+#define USBC_UPCON2SET_NBUSYBKES    (0x1u << 12) /**< \brief (USBC_UPCON2SET) NBUSYBKE Set */\r
+#define USBC_UPCON2SET_FIFOCONS     (0x1u << 14) /**< \brief (USBC_UPCON2SET) FIFOCON Set */\r
+#define USBC_UPCON2SET_PFREEZES     (0x1u << 17) /**< \brief (USBC_UPCON2SET) PFREEZE Set */\r
+#define USBC_UPCON2SET_INITDTGLS    (0x1u << 18) /**< \brief (USBC_UPCON2SET) INITDTGL Set */\r
+#define USBC_UPCON2SET_INITBKS      (0x1u << 19) /**< \brief (USBC_UPCON2SET) INITBK Set */\r
+/* -------- USBC_UPCON3SET : (USBC Offset: 0x5FC) Pipe Control Set Register -------- */\r
+#define USBC_UPCON3SET_RXINES       (0x1u <<  0) /**< \brief (USBC_UPCON3SET) RXINE Set */\r
+#define USBC_UPCON3SET_TXOUTES      (0x1u <<  1) /**< \brief (USBC_UPCON3SET) TXOUTE Set */\r
+#define USBC_UPCON3SET_TXSTPES      (0x1u <<  2) /**< \brief (USBC_UPCON3SET) TXSTPE Set */\r
+#define USBC_UPCON3SET_PERRES       (0x1u <<  3) /**< \brief (USBC_UPCON3SET) PERRE Set */\r
+#define USBC_UPCON3SET_NAKEDES      (0x1u <<  4) /**< \brief (USBC_UPCON3SET) NAKEDE Set */\r
+#define USBC_UPCON3SET_ERRORFIES    (0x1u <<  5) /**< \brief (USBC_UPCON3SET) ERRORFIE Set */\r
+#define USBC_UPCON3SET_RXSTALLDES   (0x1u <<  6) /**< \brief (USBC_UPCON3SET) RXSTALLDE Set */\r
+#define USBC_UPCON3SET_RAMACERES    (0x1u << 10) /**< \brief (USBC_UPCON3SET) RAMACERE Set */\r
+#define USBC_UPCON3SET_NBUSYBKES    (0x1u << 12) /**< \brief (USBC_UPCON3SET) NBUSYBKE Set */\r
+#define USBC_UPCON3SET_FIFOCONS     (0x1u << 14) /**< \brief (USBC_UPCON3SET) FIFOCON Set */\r
+#define USBC_UPCON3SET_PFREEZES     (0x1u << 17) /**< \brief (USBC_UPCON3SET) PFREEZE Set */\r
+#define USBC_UPCON3SET_INITDTGLS    (0x1u << 18) /**< \brief (USBC_UPCON3SET) INITDTGL Set */\r
+#define USBC_UPCON3SET_INITBKS      (0x1u << 19) /**< \brief (USBC_UPCON3SET) INITBK Set */\r
+/* -------- USBC_UPCON4SET : (USBC Offset: 0x600) Pipe Control Set Register -------- */\r
+#define USBC_UPCON4SET_RXINES       (0x1u <<  0) /**< \brief (USBC_UPCON4SET) RXINE Set */\r
+#define USBC_UPCON4SET_TXOUTES      (0x1u <<  1) /**< \brief (USBC_UPCON4SET) TXOUTE Set */\r
+#define USBC_UPCON4SET_TXSTPES      (0x1u <<  2) /**< \brief (USBC_UPCON4SET) TXSTPE Set */\r
+#define USBC_UPCON4SET_PERRES       (0x1u <<  3) /**< \brief (USBC_UPCON4SET) PERRE Set */\r
+#define USBC_UPCON4SET_NAKEDES      (0x1u <<  4) /**< \brief (USBC_UPCON4SET) NAKEDE Set */\r
+#define USBC_UPCON4SET_ERRORFIES    (0x1u <<  5) /**< \brief (USBC_UPCON4SET) ERRORFIE Set */\r
+#define USBC_UPCON4SET_RXSTALLDES   (0x1u <<  6) /**< \brief (USBC_UPCON4SET) RXSTALLDE Set */\r
+#define USBC_UPCON4SET_RAMACERES    (0x1u << 10) /**< \brief (USBC_UPCON4SET) RAMACERE Set */\r
+#define USBC_UPCON4SET_NBUSYBKES    (0x1u << 12) /**< \brief (USBC_UPCON4SET) NBUSYBKE Set */\r
+#define USBC_UPCON4SET_FIFOCONS     (0x1u << 14) /**< \brief (USBC_UPCON4SET) FIFOCON Set */\r
+#define USBC_UPCON4SET_PFREEZES     (0x1u << 17) /**< \brief (USBC_UPCON4SET) PFREEZE Set */\r
+#define USBC_UPCON4SET_INITDTGLS    (0x1u << 18) /**< \brief (USBC_UPCON4SET) INITDTGL Set */\r
+#define USBC_UPCON4SET_INITBKS      (0x1u << 19) /**< \brief (USBC_UPCON4SET) INITBK Set */\r
+/* -------- USBC_UPCON5SET : (USBC Offset: 0x604) Pipe Control Set Register -------- */\r
+#define USBC_UPCON5SET_RXINES       (0x1u <<  0) /**< \brief (USBC_UPCON5SET) RXINE Set */\r
+#define USBC_UPCON5SET_TXOUTES      (0x1u <<  1) /**< \brief (USBC_UPCON5SET) TXOUTE Set */\r
+#define USBC_UPCON5SET_TXSTPES      (0x1u <<  2) /**< \brief (USBC_UPCON5SET) TXSTPE Set */\r
+#define USBC_UPCON5SET_PERRES       (0x1u <<  3) /**< \brief (USBC_UPCON5SET) PERRE Set */\r
+#define USBC_UPCON5SET_NAKEDES      (0x1u <<  4) /**< \brief (USBC_UPCON5SET) NAKEDE Set */\r
+#define USBC_UPCON5SET_ERRORFIES    (0x1u <<  5) /**< \brief (USBC_UPCON5SET) ERRORFIE Set */\r
+#define USBC_UPCON5SET_RXSTALLDES   (0x1u <<  6) /**< \brief (USBC_UPCON5SET) RXSTALLDE Set */\r
+#define USBC_UPCON5SET_RAMACERES    (0x1u << 10) /**< \brief (USBC_UPCON5SET) RAMACERE Set */\r
+#define USBC_UPCON5SET_NBUSYBKES    (0x1u << 12) /**< \brief (USBC_UPCON5SET) NBUSYBKE Set */\r
+#define USBC_UPCON5SET_FIFOCONS     (0x1u << 14) /**< \brief (USBC_UPCON5SET) FIFOCON Set */\r
+#define USBC_UPCON5SET_PFREEZES     (0x1u << 17) /**< \brief (USBC_UPCON5SET) PFREEZE Set */\r
+#define USBC_UPCON5SET_INITDTGLS    (0x1u << 18) /**< \brief (USBC_UPCON5SET) INITDTGL Set */\r
+#define USBC_UPCON5SET_INITBKS      (0x1u << 19) /**< \brief (USBC_UPCON5SET) INITBK Set */\r
+/* -------- USBC_UPCON6SET : (USBC Offset: 0x608) Pipe Control Set Register -------- */\r
+#define USBC_UPCON6SET_RXINES       (0x1u <<  0) /**< \brief (USBC_UPCON6SET) RXINE Set */\r
+#define USBC_UPCON6SET_TXOUTES      (0x1u <<  1) /**< \brief (USBC_UPCON6SET) TXOUTE Set */\r
+#define USBC_UPCON6SET_TXSTPES      (0x1u <<  2) /**< \brief (USBC_UPCON6SET) TXSTPE Set */\r
+#define USBC_UPCON6SET_PERRES       (0x1u <<  3) /**< \brief (USBC_UPCON6SET) PERRE Set */\r
+#define USBC_UPCON6SET_NAKEDES      (0x1u <<  4) /**< \brief (USBC_UPCON6SET) NAKEDE Set */\r
+#define USBC_UPCON6SET_ERRORFIES    (0x1u <<  5) /**< \brief (USBC_UPCON6SET) ERRORFIE Set */\r
+#define USBC_UPCON6SET_RXSTALLDES   (0x1u <<  6) /**< \brief (USBC_UPCON6SET) RXSTALLDE Set */\r
+#define USBC_UPCON6SET_RAMACERES    (0x1u << 10) /**< \brief (USBC_UPCON6SET) RAMACERE Set */\r
+#define USBC_UPCON6SET_NBUSYBKES    (0x1u << 12) /**< \brief (USBC_UPCON6SET) NBUSYBKE Set */\r
+#define USBC_UPCON6SET_FIFOCONS     (0x1u << 14) /**< \brief (USBC_UPCON6SET) FIFOCON Set */\r
+#define USBC_UPCON6SET_PFREEZES     (0x1u << 17) /**< \brief (USBC_UPCON6SET) PFREEZE Set */\r
+#define USBC_UPCON6SET_INITDTGLS    (0x1u << 18) /**< \brief (USBC_UPCON6SET) INITDTGL Set */\r
+#define USBC_UPCON6SET_INITBKS      (0x1u << 19) /**< \brief (USBC_UPCON6SET) INITBK Set */\r
+/* -------- USBC_UPCON7SET : (USBC Offset: 0x60C) Pipe Control Set Register -------- */\r
+#define USBC_UPCON7SET_RXINES       (0x1u <<  0) /**< \brief (USBC_UPCON7SET) RXINE Set */\r
+#define USBC_UPCON7SET_TXOUTES      (0x1u <<  1) /**< \brief (USBC_UPCON7SET) TXOUTE Set */\r
+#define USBC_UPCON7SET_TXSTPES      (0x1u <<  2) /**< \brief (USBC_UPCON7SET) TXSTPE Set */\r
+#define USBC_UPCON7SET_PERRES       (0x1u <<  3) /**< \brief (USBC_UPCON7SET) PERRE Set */\r
+#define USBC_UPCON7SET_NAKEDES      (0x1u <<  4) /**< \brief (USBC_UPCON7SET) NAKEDE Set */\r
+#define USBC_UPCON7SET_ERRORFIES    (0x1u <<  5) /**< \brief (USBC_UPCON7SET) ERRORFIE Set */\r
+#define USBC_UPCON7SET_RXSTALLDES   (0x1u <<  6) /**< \brief (USBC_UPCON7SET) RXSTALLDE Set */\r
+#define USBC_UPCON7SET_RAMACERES    (0x1u << 10) /**< \brief (USBC_UPCON7SET) RAMACERE Set */\r
+#define USBC_UPCON7SET_NBUSYBKES    (0x1u << 12) /**< \brief (USBC_UPCON7SET) NBUSYBKE Set */\r
+#define USBC_UPCON7SET_FIFOCONS     (0x1u << 14) /**< \brief (USBC_UPCON7SET) FIFOCON Set */\r
+#define USBC_UPCON7SET_PFREEZES     (0x1u << 17) /**< \brief (USBC_UPCON7SET) PFREEZE Set */\r
+#define USBC_UPCON7SET_INITDTGLS    (0x1u << 18) /**< \brief (USBC_UPCON7SET) INITDTGL Set */\r
+#define USBC_UPCON7SET_INITBKS      (0x1u << 19) /**< \brief (USBC_UPCON7SET) INITBK Set */\r
+/* -------- USBC_UPCON0CLR : (USBC Offset: 0x620) Pipe Control Clear Register -------- */\r
+#define USBC_UPCON0CLR_RXINEC       (0x1u <<  0) /**< \brief (USBC_UPCON0CLR) RXINE Clear */\r
+#define USBC_UPCON0CLR_TXOUTEC      (0x1u <<  1) /**< \brief (USBC_UPCON0CLR) TXOUTE Clear */\r
+#define USBC_UPCON0CLR_TXSTPEC      (0x1u <<  2) /**< \brief (USBC_UPCON0CLR) TXSTPE Clear */\r
+#define USBC_UPCON0CLR_PERREC       (0x1u <<  3) /**< \brief (USBC_UPCON0CLR) PERRE Clear */\r
+#define USBC_UPCON0CLR_NAKEDEC      (0x1u <<  4) /**< \brief (USBC_UPCON0CLR) NAKEDE Clear */\r
+#define USBC_UPCON0CLR_ERRORFIEC    (0x1u <<  5) /**< \brief (USBC_UPCON0CLR) ERRORFIE Clear */\r
+#define USBC_UPCON0CLR_RXSTALLDEC   (0x1u <<  6) /**< \brief (USBC_UPCON0CLR) RXTALLDE Clear */\r
+#define USBC_UPCON0CLR_RAMACEREC    (0x1u << 10) /**< \brief (USBC_UPCON0CLR) RAMACERE Clear */\r
+#define USBC_UPCON0CLR_NBUSYBKEC    (0x1u << 12) /**< \brief (USBC_UPCON0CLR) NBUSYBKE Clear */\r
+#define USBC_UPCON0CLR_FIFOCONC     (0x1u << 14) /**< \brief (USBC_UPCON0CLR) FIFOCON Clear */\r
+#define USBC_UPCON0CLR_PFREEZEC     (0x1u << 17) /**< \brief (USBC_UPCON0CLR) PFREEZE Clear */\r
+#define USBC_UPCON0CLR_INITDTGLC    (0x1u << 18) /**< \brief (USBC_UPCON0CLR) INITDTGL Clear */\r
+#define USBC_UPCON0CLR_INITBKC      (0x1u << 19) /**< \brief (USBC_UPCON0CLR) INITBK Clear */\r
+/* -------- USBC_UPCON1CLR : (USBC Offset: 0x624) Pipe Control Clear Register -------- */\r
+#define USBC_UPCON1CLR_RXINEC       (0x1u <<  0) /**< \brief (USBC_UPCON1CLR) RXINE Clear */\r
+#define USBC_UPCON1CLR_TXOUTEC      (0x1u <<  1) /**< \brief (USBC_UPCON1CLR) TXOUTE Clear */\r
+#define USBC_UPCON1CLR_TXSTPEC      (0x1u <<  2) /**< \brief (USBC_UPCON1CLR) TXSTPE Clear */\r
+#define USBC_UPCON1CLR_PERREC       (0x1u <<  3) /**< \brief (USBC_UPCON1CLR) PERRE Clear */\r
+#define USBC_UPCON1CLR_NAKEDEC      (0x1u <<  4) /**< \brief (USBC_UPCON1CLR) NAKEDE Clear */\r
+#define USBC_UPCON1CLR_ERRORFIEC    (0x1u <<  5) /**< \brief (USBC_UPCON1CLR) ERRORFIE Clear */\r
+#define USBC_UPCON1CLR_RXSTALLDEC   (0x1u <<  6) /**< \brief (USBC_UPCON1CLR) RXTALLDE Clear */\r
+#define USBC_UPCON1CLR_RAMACEREC    (0x1u << 10) /**< \brief (USBC_UPCON1CLR) RAMACERE Clear */\r
+#define USBC_UPCON1CLR_NBUSYBKEC    (0x1u << 12) /**< \brief (USBC_UPCON1CLR) NBUSYBKE Clear */\r
+#define USBC_UPCON1CLR_FIFOCONC     (0x1u << 14) /**< \brief (USBC_UPCON1CLR) FIFOCON Clear */\r
+#define USBC_UPCON1CLR_PFREEZEC     (0x1u << 17) /**< \brief (USBC_UPCON1CLR) PFREEZE Clear */\r
+#define USBC_UPCON1CLR_INITDTGLC    (0x1u << 18) /**< \brief (USBC_UPCON1CLR) INITDTGL Clear */\r
+#define USBC_UPCON1CLR_INITBKC      (0x1u << 19) /**< \brief (USBC_UPCON1CLR) INITBK Clear */\r
+/* -------- USBC_UPCON2CLR : (USBC Offset: 0x628) Pipe Control Clear Register -------- */\r
+#define USBC_UPCON2CLR_RXINEC       (0x1u <<  0) /**< \brief (USBC_UPCON2CLR) RXINE Clear */\r
+#define USBC_UPCON2CLR_TXOUTEC      (0x1u <<  1) /**< \brief (USBC_UPCON2CLR) TXOUTE Clear */\r
+#define USBC_UPCON2CLR_TXSTPEC      (0x1u <<  2) /**< \brief (USBC_UPCON2CLR) TXSTPE Clear */\r
+#define USBC_UPCON2CLR_PERREC       (0x1u <<  3) /**< \brief (USBC_UPCON2CLR) PERRE Clear */\r
+#define USBC_UPCON2CLR_NAKEDEC      (0x1u <<  4) /**< \brief (USBC_UPCON2CLR) NAKEDE Clear */\r
+#define USBC_UPCON2CLR_ERRORFIEC    (0x1u <<  5) /**< \brief (USBC_UPCON2CLR) ERRORFIE Clear */\r
+#define USBC_UPCON2CLR_RXSTALLDEC   (0x1u <<  6) /**< \brief (USBC_UPCON2CLR) RXTALLDE Clear */\r
+#define USBC_UPCON2CLR_RAMACEREC    (0x1u << 10) /**< \brief (USBC_UPCON2CLR) RAMACERE Clear */\r
+#define USBC_UPCON2CLR_NBUSYBKEC    (0x1u << 12) /**< \brief (USBC_UPCON2CLR) NBUSYBKE Clear */\r
+#define USBC_UPCON2CLR_FIFOCONC     (0x1u << 14) /**< \brief (USBC_UPCON2CLR) FIFOCON Clear */\r
+#define USBC_UPCON2CLR_PFREEZEC     (0x1u << 17) /**< \brief (USBC_UPCON2CLR) PFREEZE Clear */\r
+#define USBC_UPCON2CLR_INITDTGLC    (0x1u << 18) /**< \brief (USBC_UPCON2CLR) INITDTGL Clear */\r
+#define USBC_UPCON2CLR_INITBKC      (0x1u << 19) /**< \brief (USBC_UPCON2CLR) INITBK Clear */\r
+/* -------- USBC_UPCON3CLR : (USBC Offset: 0x62C) Pipe Control Clear Register -------- */\r
+#define USBC_UPCON3CLR_RXINEC       (0x1u <<  0) /**< \brief (USBC_UPCON3CLR) RXINE Clear */\r
+#define USBC_UPCON3CLR_TXOUTEC      (0x1u <<  1) /**< \brief (USBC_UPCON3CLR) TXOUTE Clear */\r
+#define USBC_UPCON3CLR_TXSTPEC      (0x1u <<  2) /**< \brief (USBC_UPCON3CLR) TXSTPE Clear */\r
+#define USBC_UPCON3CLR_PERREC       (0x1u <<  3) /**< \brief (USBC_UPCON3CLR) PERRE Clear */\r
+#define USBC_UPCON3CLR_NAKEDEC      (0x1u <<  4) /**< \brief (USBC_UPCON3CLR) NAKEDE Clear */\r
+#define USBC_UPCON3CLR_ERRORFIEC    (0x1u <<  5) /**< \brief (USBC_UPCON3CLR) ERRORFIE Clear */\r
+#define USBC_UPCON3CLR_RXSTALLDEC   (0x1u <<  6) /**< \brief (USBC_UPCON3CLR) RXTALLDE Clear */\r
+#define USBC_UPCON3CLR_RAMACEREC    (0x1u << 10) /**< \brief (USBC_UPCON3CLR) RAMACERE Clear */\r
+#define USBC_UPCON3CLR_NBUSYBKEC    (0x1u << 12) /**< \brief (USBC_UPCON3CLR) NBUSYBKE Clear */\r
+#define USBC_UPCON3CLR_FIFOCONC     (0x1u << 14) /**< \brief (USBC_UPCON3CLR) FIFOCON Clear */\r
+#define USBC_UPCON3CLR_PFREEZEC     (0x1u << 17) /**< \brief (USBC_UPCON3CLR) PFREEZE Clear */\r
+#define USBC_UPCON3CLR_INITDTGLC    (0x1u << 18) /**< \brief (USBC_UPCON3CLR) INITDTGL Clear */\r
+#define USBC_UPCON3CLR_INITBKC      (0x1u << 19) /**< \brief (USBC_UPCON3CLR) INITBK Clear */\r
+/* -------- USBC_UPCON4CLR : (USBC Offset: 0x630) Pipe Control Clear Register -------- */\r
+#define USBC_UPCON4CLR_RXINEC       (0x1u <<  0) /**< \brief (USBC_UPCON4CLR) RXINE Clear */\r
+#define USBC_UPCON4CLR_TXOUTEC      (0x1u <<  1) /**< \brief (USBC_UPCON4CLR) TXOUTE Clear */\r
+#define USBC_UPCON4CLR_TXSTPEC      (0x1u <<  2) /**< \brief (USBC_UPCON4CLR) TXSTPE Clear */\r
+#define USBC_UPCON4CLR_PERREC       (0x1u <<  3) /**< \brief (USBC_UPCON4CLR) PERRE Clear */\r
+#define USBC_UPCON4CLR_NAKEDEC      (0x1u <<  4) /**< \brief (USBC_UPCON4CLR) NAKEDE Clear */\r
+#define USBC_UPCON4CLR_ERRORFIEC    (0x1u <<  5) /**< \brief (USBC_UPCON4CLR) ERRORFIE Clear */\r
+#define USBC_UPCON4CLR_RXSTALLDEC   (0x1u <<  6) /**< \brief (USBC_UPCON4CLR) RXTALLDE Clear */\r
+#define USBC_UPCON4CLR_RAMACEREC    (0x1u << 10) /**< \brief (USBC_UPCON4CLR) RAMACERE Clear */\r
+#define USBC_UPCON4CLR_NBUSYBKEC    (0x1u << 12) /**< \brief (USBC_UPCON4CLR) NBUSYBKE Clear */\r
+#define USBC_UPCON4CLR_FIFOCONC     (0x1u << 14) /**< \brief (USBC_UPCON4CLR) FIFOCON Clear */\r
+#define USBC_UPCON4CLR_PFREEZEC     (0x1u << 17) /**< \brief (USBC_UPCON4CLR) PFREEZE Clear */\r
+#define USBC_UPCON4CLR_INITDTGLC    (0x1u << 18) /**< \brief (USBC_UPCON4CLR) INITDTGL Clear */\r
+#define USBC_UPCON4CLR_INITBKC      (0x1u << 19) /**< \brief (USBC_UPCON4CLR) INITBK Clear */\r
+/* -------- USBC_UPCON5CLR : (USBC Offset: 0x634) Pipe Control Clear Register -------- */\r
+#define USBC_UPCON5CLR_RXINEC       (0x1u <<  0) /**< \brief (USBC_UPCON5CLR) RXINE Clear */\r
+#define USBC_UPCON5CLR_TXOUTEC      (0x1u <<  1) /**< \brief (USBC_UPCON5CLR) TXOUTE Clear */\r
+#define USBC_UPCON5CLR_TXSTPEC      (0x1u <<  2) /**< \brief (USBC_UPCON5CLR) TXSTPE Clear */\r
+#define USBC_UPCON5CLR_PERREC       (0x1u <<  3) /**< \brief (USBC_UPCON5CLR) PERRE Clear */\r
+#define USBC_UPCON5CLR_NAKEDEC      (0x1u <<  4) /**< \brief (USBC_UPCON5CLR) NAKEDE Clear */\r
+#define USBC_UPCON5CLR_ERRORFIEC    (0x1u <<  5) /**< \brief (USBC_UPCON5CLR) ERRORFIE Clear */\r
+#define USBC_UPCON5CLR_RXSTALLDEC   (0x1u <<  6) /**< \brief (USBC_UPCON5CLR) RXTALLDE Clear */\r
+#define USBC_UPCON5CLR_RAMACEREC    (0x1u << 10) /**< \brief (USBC_UPCON5CLR) RAMACERE Clear */\r
+#define USBC_UPCON5CLR_NBUSYBKEC    (0x1u << 12) /**< \brief (USBC_UPCON5CLR) NBUSYBKE Clear */\r
+#define USBC_UPCON5CLR_FIFOCONC     (0x1u << 14) /**< \brief (USBC_UPCON5CLR) FIFOCON Clear */\r
+#define USBC_UPCON5CLR_PFREEZEC     (0x1u << 17) /**< \brief (USBC_UPCON5CLR) PFREEZE Clear */\r
+#define USBC_UPCON5CLR_INITDTGLC    (0x1u << 18) /**< \brief (USBC_UPCON5CLR) INITDTGL Clear */\r
+#define USBC_UPCON5CLR_INITBKC      (0x1u << 19) /**< \brief (USBC_UPCON5CLR) INITBK Clear */\r
+/* -------- USBC_UPCON6CLR : (USBC Offset: 0x638) Pipe Control Clear Register -------- */\r
+#define USBC_UPCON6CLR_RXINEC       (0x1u <<  0) /**< \brief (USBC_UPCON6CLR) RXINE Clear */\r
+#define USBC_UPCON6CLR_TXOUTEC      (0x1u <<  1) /**< \brief (USBC_UPCON6CLR) TXOUTE Clear */\r
+#define USBC_UPCON6CLR_TXSTPEC      (0x1u <<  2) /**< \brief (USBC_UPCON6CLR) TXSTPE Clear */\r
+#define USBC_UPCON6CLR_PERREC       (0x1u <<  3) /**< \brief (USBC_UPCON6CLR) PERRE Clear */\r
+#define USBC_UPCON6CLR_NAKEDEC      (0x1u <<  4) /**< \brief (USBC_UPCON6CLR) NAKEDE Clear */\r
+#define USBC_UPCON6CLR_ERRORFIEC    (0x1u <<  5) /**< \brief (USBC_UPCON6CLR) ERRORFIE Clear */\r
+#define USBC_UPCON6CLR_RXSTALLDEC   (0x1u <<  6) /**< \brief (USBC_UPCON6CLR) RXTALLDE Clear */\r
+#define USBC_UPCON6CLR_RAMACEREC    (0x1u << 10) /**< \brief (USBC_UPCON6CLR) RAMACERE Clear */\r
+#define USBC_UPCON6CLR_NBUSYBKEC    (0x1u << 12) /**< \brief (USBC_UPCON6CLR) NBUSYBKE Clear */\r
+#define USBC_UPCON6CLR_FIFOCONC     (0x1u << 14) /**< \brief (USBC_UPCON6CLR) FIFOCON Clear */\r
+#define USBC_UPCON6CLR_PFREEZEC     (0x1u << 17) /**< \brief (USBC_UPCON6CLR) PFREEZE Clear */\r
+#define USBC_UPCON6CLR_INITDTGLC    (0x1u << 18) /**< \brief (USBC_UPCON6CLR) INITDTGL Clear */\r
+#define USBC_UPCON6CLR_INITBKC      (0x1u << 19) /**< \brief (USBC_UPCON6CLR) INITBK Clear */\r
+/* -------- USBC_UPCON7CLR : (USBC Offset: 0x63C) Pipe Control Clear Register -------- */\r
+#define USBC_UPCON7CLR_RXINEC       (0x1u <<  0) /**< \brief (USBC_UPCON7CLR) RXINE Clear */\r
+#define USBC_UPCON7CLR_TXOUTEC      (0x1u <<  1) /**< \brief (USBC_UPCON7CLR) TXOUTE Clear */\r
+#define USBC_UPCON7CLR_TXSTPEC      (0x1u <<  2) /**< \brief (USBC_UPCON7CLR) TXSTPE Clear */\r
+#define USBC_UPCON7CLR_PERREC       (0x1u <<  3) /**< \brief (USBC_UPCON7CLR) PERRE Clear */\r
+#define USBC_UPCON7CLR_NAKEDEC      (0x1u <<  4) /**< \brief (USBC_UPCON7CLR) NAKEDE Clear */\r
+#define USBC_UPCON7CLR_ERRORFIEC    (0x1u <<  5) /**< \brief (USBC_UPCON7CLR) ERRORFIE Clear */\r
+#define USBC_UPCON7CLR_RXSTALLDEC   (0x1u <<  6) /**< \brief (USBC_UPCON7CLR) RXTALLDE Clear */\r
+#define USBC_UPCON7CLR_RAMACEREC    (0x1u << 10) /**< \brief (USBC_UPCON7CLR) RAMACERE Clear */\r
+#define USBC_UPCON7CLR_NBUSYBKEC    (0x1u << 12) /**< \brief (USBC_UPCON7CLR) NBUSYBKE Clear */\r
+#define USBC_UPCON7CLR_FIFOCONC     (0x1u << 14) /**< \brief (USBC_UPCON7CLR) FIFOCON Clear */\r
+#define USBC_UPCON7CLR_PFREEZEC     (0x1u << 17) /**< \brief (USBC_UPCON7CLR) PFREEZE Clear */\r
+#define USBC_UPCON7CLR_INITDTGLC    (0x1u << 18) /**< \brief (USBC_UPCON7CLR) INITDTGL Clear */\r
+#define USBC_UPCON7CLR_INITBKC      (0x1u << 19) /**< \brief (USBC_UPCON7CLR) INITBK Clear */\r
+/* -------- USBC_UPINRQ0 : (USBC Offset: 0x650) Pipe In Request -------- */\r
+#define USBC_UPINRQ0_INRQ_Pos       0\r
+#define USBC_UPINRQ0_INRQ_Msk       (0xFFu << USBC_UPINRQ0_INRQ_Pos) /**< \brief (USBC_UPINRQ0) IN Request Number before Freeze */\r
+#define USBC_UPINRQ0_INRQ(value)    ((USBC_UPINRQ0_INRQ_Msk & ((value) << USBC_UPINRQ0_INRQ_Pos)))\r
+#define USBC_UPINRQ0_INMODE         (0x1u <<  8) /**< \brief (USBC_UPINRQ0) IN Request Mode */\r
+/* -------- USBC_UPINRQ1 : (USBC Offset: 0x654) Pipe In Request -------- */\r
+#define USBC_UPINRQ1_INRQ_Pos       0\r
+#define USBC_UPINRQ1_INRQ_Msk       (0xFFu << USBC_UPINRQ1_INRQ_Pos) /**< \brief (USBC_UPINRQ1) IN Request Number before Freeze */\r
+#define USBC_UPINRQ1_INRQ(value)    ((USBC_UPINRQ1_INRQ_Msk & ((value) << USBC_UPINRQ1_INRQ_Pos)))\r
+#define USBC_UPINRQ1_INMODE         (0x1u <<  8) /**< \brief (USBC_UPINRQ1) IN Request Mode */\r
+/* -------- USBC_UPINRQ2 : (USBC Offset: 0x658) Pipe In Request -------- */\r
+#define USBC_UPINRQ2_INRQ_Pos       0\r
+#define USBC_UPINRQ2_INRQ_Msk       (0xFFu << USBC_UPINRQ2_INRQ_Pos) /**< \brief (USBC_UPINRQ2) IN Request Number before Freeze */\r
+#define USBC_UPINRQ2_INRQ(value)    ((USBC_UPINRQ2_INRQ_Msk & ((value) << USBC_UPINRQ2_INRQ_Pos)))\r
+#define USBC_UPINRQ2_INMODE         (0x1u <<  8) /**< \brief (USBC_UPINRQ2) IN Request Mode */\r
+/* -------- USBC_UPINRQ3 : (USBC Offset: 0x65C) Pipe In Request -------- */\r
+#define USBC_UPINRQ3_INRQ_Pos       0\r
+#define USBC_UPINRQ3_INRQ_Msk       (0xFFu << USBC_UPINRQ3_INRQ_Pos) /**< \brief (USBC_UPINRQ3) IN Request Number before Freeze */\r
+#define USBC_UPINRQ3_INRQ(value)    ((USBC_UPINRQ3_INRQ_Msk & ((value) << USBC_UPINRQ3_INRQ_Pos)))\r
+#define USBC_UPINRQ3_INMODE         (0x1u <<  8) /**< \brief (USBC_UPINRQ3) IN Request Mode */\r
+/* -------- USBC_UPINRQ4 : (USBC Offset: 0x660) Pipe In Request -------- */\r
+#define USBC_UPINRQ4_INRQ_Pos       0\r
+#define USBC_UPINRQ4_INRQ_Msk       (0xFFu << USBC_UPINRQ4_INRQ_Pos) /**< \brief (USBC_UPINRQ4) IN Request Number before Freeze */\r
+#define USBC_UPINRQ4_INRQ(value)    ((USBC_UPINRQ4_INRQ_Msk & ((value) << USBC_UPINRQ4_INRQ_Pos)))\r
+#define USBC_UPINRQ4_INMODE         (0x1u <<  8) /**< \brief (USBC_UPINRQ4) IN Request Mode */\r
+/* -------- USBC_UPINRQ5 : (USBC Offset: 0x664) Pipe In Request -------- */\r
+#define USBC_UPINRQ5_INRQ_Pos       0\r
+#define USBC_UPINRQ5_INRQ_Msk       (0xFFu << USBC_UPINRQ5_INRQ_Pos) /**< \brief (USBC_UPINRQ5) IN Request Number before Freeze */\r
+#define USBC_UPINRQ5_INRQ(value)    ((USBC_UPINRQ5_INRQ_Msk & ((value) << USBC_UPINRQ5_INRQ_Pos)))\r
+#define USBC_UPINRQ5_INMODE         (0x1u <<  8) /**< \brief (USBC_UPINRQ5) IN Request Mode */\r
+/* -------- USBC_UPINRQ6 : (USBC Offset: 0x668) Pipe In Request -------- */\r
+#define USBC_UPINRQ6_INRQ_Pos       0\r
+#define USBC_UPINRQ6_INRQ_Msk       (0xFFu << USBC_UPINRQ6_INRQ_Pos) /**< \brief (USBC_UPINRQ6) IN Request Number before Freeze */\r
+#define USBC_UPINRQ6_INRQ(value)    ((USBC_UPINRQ6_INRQ_Msk & ((value) << USBC_UPINRQ6_INRQ_Pos)))\r
+#define USBC_UPINRQ6_INMODE         (0x1u <<  8) /**< \brief (USBC_UPINRQ6) IN Request Mode */\r
+/* -------- USBC_UPINRQ7 : (USBC Offset: 0x66C) Pipe In Request -------- */\r
+#define USBC_UPINRQ7_INRQ_Pos       0\r
+#define USBC_UPINRQ7_INRQ_Msk       (0xFFu << USBC_UPINRQ7_INRQ_Pos) /**< \brief (USBC_UPINRQ7) IN Request Number before Freeze */\r
+#define USBC_UPINRQ7_INRQ(value)    ((USBC_UPINRQ7_INRQ_Msk & ((value) << USBC_UPINRQ7_INRQ_Pos)))\r
+#define USBC_UPINRQ7_INMODE         (0x1u <<  8) /**< \brief (USBC_UPINRQ7) IN Request Mode */\r
+/* -------- USBC_USBCON : (USBC Offset: 0x800) General Control Register -------- */\r
+#define USBC_USBCON_FRZCLK          (0x1u << 14) /**< \brief (USBC_USBCON) Freeze USB Clock */\r
+#define USBC_USBCON_USBE            (0x1u << 15) /**< \brief (USBC_USBCON) USBC Enable */\r
+#define USBC_USBCON_UIMOD           (0x1u << 24) /**< \brief (USBC_USBCON) USBC Mode */\r
+/* -------- USBC_USBSTA : (USBC Offset: 0x804) General Status Register -------- */\r
+#define USBC_USBSTA_VBUSRQ          (0x1u <<  9) /**< \brief (USBC_USBSTA) VBus Request */\r
+#define USBC_USBSTA_SPEED_Pos       12\r
+#define USBC_USBSTA_SPEED_Msk       (0x3u << USBC_USBSTA_SPEED_Pos) /**< \brief (USBC_USBSTA) Speed Status */\r
+#define USBC_USBSTA_SPEED(value)    ((USBC_USBSTA_SPEED_Msk & ((value) << USBC_USBSTA_SPEED_Pos)))\r
+#define   USBC_USBSTA_SPEED_FULL    (0x0u << 12) /**< \brief (USBC_USBSTA)  */\r
+#define   USBC_USBSTA_SPEED_HIGH    (0x1u << 12) /**< \brief (USBC_USBSTA)  */\r
+#define   USBC_USBSTA_SPEED_LOW     (0x2u << 12) /**< \brief (USBC_USBSTA)  */\r
+#define USBC_USBSTA_CLKUSABLE       (0x1u << 14) /**< \brief (USBC_USBSTA) USB Clock Usable */\r
+#define USBC_USBSTA_SUSPEND         (0x1u << 16) /**< \brief (USBC_USBSTA) Suspend module state */\r
+/* -------- USBC_USBSTACLR : (USBC Offset: 0x808) General Status Clear Register -------- */\r
+#define USBC_USBSTACLR_RAMACERIC    (0x1u <<  8) /**< \brief (USBC_USBSTACLR) RAMACERI Clear */\r
+#define USBC_USBSTACLR_VBUSRQC      (0x1u <<  9) /**< \brief (USBC_USBSTACLR) VBUSRQ Clear */\r
+/* -------- USBC_USBSTASET : (USBC Offset: 0x80C) General Status Set Register -------- */\r
+#define USBC_USBSTASET_RAMACERIS    (0x1u <<  8) /**< \brief (USBC_USBSTASET) RAMACERI Set */\r
+#define USBC_USBSTASET_VBUSRQS      (0x1u <<  9) /**< \brief (USBC_USBSTASET) VBUSRQ Set */\r
+/* -------- USBC_UVERS : (USBC Offset: 0x818) IP Version Register -------- */\r
+#define USBC_UVERS_VERSION_Pos      0\r
+#define USBC_UVERS_VERSION_Msk      (0xFFFu << USBC_UVERS_VERSION_Pos) /**< \brief (USBC_UVERS) Version Number */\r
+#define USBC_UVERS_VERSION(value)   ((USBC_UVERS_VERSION_Msk & ((value) << USBC_UVERS_VERSION_Pos)))\r
+#define USBC_UVERS_VARIANT_Pos      16\r
+#define USBC_UVERS_VARIANT_Msk      (0x7u << USBC_UVERS_VARIANT_Pos) /**< \brief (USBC_UVERS) Variant Number */\r
+#define USBC_UVERS_VARIANT(value)   ((USBC_UVERS_VARIANT_Msk & ((value) << USBC_UVERS_VARIANT_Pos)))\r
+/* -------- USBC_UFEATURES : (USBC Offset: 0x81C) IP Features Register -------- */\r
+#define USBC_UFEATURES_EPTNBRMAX_Pos    0\r
+#define USBC_UFEATURES_EPTNBRMAX_Msk    (0xFu << USBC_UFEATURES_EPTNBRMAX_Pos) /**< \brief (USBC_UFEATURES) Maximum Number of Pipes/Endpints */\r
+#define USBC_UFEATURES_EPTNBRMAX(value) ((USBC_UFEATURES_EPTNBRMAX_Msk & ((value) << USBC_UFEATURES_EPTNBRMAX_Pos)))\r
+#define USBC_UFEATURES_UTMIMODE     (0x1u <<  8) /**< \brief (USBC_UFEATURES) UTMI Mode */\r
+/* -------- USBC_UADDRSIZE : (USBC Offset: 0x820) IP PB address size Register -------- */\r
+#define USBC_UADDRSIZE_UADDRSIZE_Pos    0\r
+#define USBC_UADDRSIZE_UADDRSIZE_Msk    (0xFFFFFFFFu << USBC_UADDRSIZE_UADDRSIZE_Pos) /**< \brief (USBC_UADDRSIZE) IP PB Address Size */\r
+#define USBC_UADDRSIZE_UADDRSIZE(value) ((USBC_UADDRSIZE_UADDRSIZE_Msk & ((value) << USBC_UADDRSIZE_UADDRSIZE_Pos)))\r
+/* -------- USBC_UNAME1 : (USBC Offset: 0x824) IP Name Part One: HUSB -------- */\r
+#define USBC_UNAME1_UNAME1_Pos      0\r
+#define USBC_UNAME1_UNAME1_Msk      (0xFFFFFFFFu << USBC_UNAME1_UNAME1_Pos) /**< \brief (USBC_UNAME1) IP Name Part One */\r
+#define USBC_UNAME1_UNAME1(value)   ((USBC_UNAME1_UNAME1_Msk & ((value) << USBC_UNAME1_UNAME1_Pos)))\r
+/* -------- USBC_UNAME2 : (USBC Offset: 0x828) IP Name Part Two: HOST -------- */\r
+#define USBC_UNAME2_UNAME2_Pos      0\r
+#define USBC_UNAME2_UNAME2_Msk      (0xFFFFFFFFu << USBC_UNAME2_UNAME2_Pos) /**< \brief (USBC_UNAME2) IP Name Part Two */\r
+#define USBC_UNAME2_UNAME2(value)   ((USBC_UNAME2_UNAME2_Msk & ((value) << USBC_UNAME2_UNAME2_Pos)))\r
+/* -------- USBC_USBFSM : (USBC Offset: 0x82C) USB internal finite state machine -------- */\r
+#define USBC_USBFSM_DRDSTATE_Pos    0\r
+#define USBC_USBFSM_DRDSTATE_Msk    (0xFu << USBC_USBFSM_DRDSTATE_Pos) /**< \brief (USBC_USBFSM) DualRoleDevice state */\r
+#define USBC_USBFSM_DRDSTATE(value) ((USBC_USBFSM_DRDSTATE_Msk & ((value) << USBC_USBFSM_DRDSTATE_Pos)))\r
+#define   USBC_USBFSM_DRDSTATE_A_IDLE (0x0u <<  0) /**< \brief (USBC_USBFSM)  */\r
+#define   USBC_USBFSM_DRDSTATE_A_WAIT_VRISE (0x1u <<  0) /**< \brief (USBC_USBFSM)  */\r
+#define   USBC_USBFSM_DRDSTATE_A_WAIT_BCON (0x2u <<  0) /**< \brief (USBC_USBFSM)  */\r
+#define   USBC_USBFSM_DRDSTATE_A_HOST (0x3u <<  0) /**< \brief (USBC_USBFSM)  */\r
+#define   USBC_USBFSM_DRDSTATE_A_SUSPEND (0x4u <<  0) /**< \brief (USBC_USBFSM)  */\r
+#define   USBC_USBFSM_DRDSTATE_A_PERIPHERAL (0x5u <<  0) /**< \brief (USBC_USBFSM)  */\r
+#define   USBC_USBFSM_DRDSTATE_A_WAIT_VFALL (0x6u <<  0) /**< \brief (USBC_USBFSM)  */\r
+#define   USBC_USBFSM_DRDSTATE_A_VBUS_ERR (0x7u <<  0) /**< \brief (USBC_USBFSM)  */\r
+#define   USBC_USBFSM_DRDSTATE_A_WAIT_DISCHARGE (0x8u <<  0) /**< \brief (USBC_USBFSM)  */\r
+#define   USBC_USBFSM_DRDSTATE_B_IDLE (0x9u <<  0) /**< \brief (USBC_USBFSM)  */\r
+#define   USBC_USBFSM_DRDSTATE_B_PERIPHERAL (0xAu <<  0) /**< \brief (USBC_USBFSM)  */\r
+#define   USBC_USBFSM_DRDSTATE_B_WAIT_BEGIN_HNP (0xBu <<  0) /**< \brief (USBC_USBFSM)  */\r
+#define   USBC_USBFSM_DRDSTATE_B_WAIT_DISCHARGE (0xCu <<  0) /**< \brief (USBC_USBFSM)  */\r
+#define   USBC_USBFSM_DRDSTATE_B_WAIT_ACON (0xDu <<  0) /**< \brief (USBC_USBFSM)  */\r
+#define   USBC_USBFSM_DRDSTATE_B_HOST (0xEu <<  0) /**< \brief (USBC_USBFSM)  */\r
+#define   USBC_USBFSM_DRDSTATE_B_SRP_INIT (0xFu <<  0) /**< \brief (USBC_USBFSM)  */\r
+/* -------- USBC_UDESC : (USBC Offset: 0x830) Endpoint descriptor table -------- */\r
+#define USBC_UDESC_UDESCA_Pos       0\r
+#define USBC_UDESC_UDESCA_Msk       (0xFFFFFFFFu << USBC_UDESC_UDESCA_Pos) /**< \brief (USBC_UDESC) USB Descriptor Address */\r
+#define USBC_UDESC_UDESCA(value)    ((USBC_UDESC_UDESCA_Msk & ((value) << USBC_UDESC_UDESCA_Pos)))\r
+\r
+/*@}*/\r
+\r
+/* ============================================================================= */\r
+/**  SOFTWARE API DEFINITION FOR WDT */\r
+/* ============================================================================= */\r
+/** \addtogroup SAM4L_WDT Watchdog Timer */\r
+/*@{*/\r
+\r
+#define REV_WDT        0x501\r
+\r
+#ifndef __ASSEMBLY__\r
+/** \brief WDT hardware registers */\r
+typedef struct {\r
+  RwReg   WDT_CTRL;        /**< \brief (WDT Offset: 0x000) Control Register */\r
+  WoReg   WDT_CLR;         /**< \brief (WDT Offset: 0x004) Clear Register */\r
+  RoReg   WDT_SR;          /**< \brief (WDT Offset: 0x008) Status Register */\r
+  WoReg   WDT_IER;         /**< \brief (WDT Offset: 0x00C) Interrupt Enable Register */\r
+  WoReg   WDT_IDR;         /**< \brief (WDT Offset: 0x010) Interrupt Disable Register */\r
+  RoReg   WDT_IMR;         /**< \brief (WDT Offset: 0x014) Interrupt Mask Register */\r
+  RoReg   WDT_ISR;         /**< \brief (WDT Offset: 0x018) Interrupt Status Register */\r
+  WoReg   WDT_ICR;         /**< \brief (WDT Offset: 0x01C) Interrupt Clear Register */\r
+  RoReg   Reserved1[247];\r
+  RoReg   WDT_VERSION;     /**< \brief (WDT Offset: 0x3FC) Version Register */\r
+} Wdt;\r
+#endif /* __ASSEMBLY__ */\r
+/* -------- WDT_CTRL : (WDT Offset: 0x000) Control Register -------- */\r
+#define WDT_CTRL_EN                 (0x1u <<  0) /**< \brief (WDT_CTRL) WDT Enable */\r
+#define   WDT_CTRL_EN_0             (0x0u <<  0) /**< \brief (WDT_CTRL) WDT is disabled. */\r
+#define   WDT_CTRL_EN_1             (0x1u <<  0) /**< \brief (WDT_CTRL) WDT is enabled */\r
+#define WDT_CTRL_DAR                (0x1u <<  1) /**< \brief (WDT_CTRL) WDT Disable After Reset */\r
+#define WDT_CTRL_MODE               (0x1u <<  2) /**< \brief (WDT_CTRL) WDT Mode */\r
+#define WDT_CTRL_SFV                (0x1u <<  3) /**< \brief (WDT_CTRL) WDT Store Final Value */\r
+#define WDT_CTRL_IM                 (0x1u <<  4) /**< \brief (WDT_CTRL) WDT Interruput Mode */\r
+#define WDT_CTRL_FCD                (0x1u <<  7) /**< \brief (WDT_CTRL) WDT Fuse Calibration Done */\r
+#define WDT_CTRL_PSEL_Pos           8\r
+#define WDT_CTRL_PSEL_Msk           (0x1Fu << WDT_CTRL_PSEL_Pos) /**< \brief (WDT_CTRL) Timeout Prescale Select */\r
+#define WDT_CTRL_PSEL(value)        ((WDT_CTRL_PSEL_Msk & ((value) << WDT_CTRL_PSEL_Pos)))\r
+#define WDT_CTRL_CSSEL1             (0x1u << 14) /**< \brief (WDT_CTRL) Clock Source Selection1 */\r
+#define WDT_CTRL_CEN                (0x1u << 16) /**< \brief (WDT_CTRL) Clock Enable */\r
+#define WDT_CTRL_CSSEL              (0x1u << 17) /**< \brief (WDT_CTRL) Clock Source Selection0 */\r
+#define WDT_CTRL_TBAN_Pos           18\r
+#define WDT_CTRL_TBAN_Msk           (0x1Fu << WDT_CTRL_TBAN_Pos) /**< \brief (WDT_CTRL) TBAN Prescale Select */\r
+#define WDT_CTRL_TBAN(value)        ((WDT_CTRL_TBAN_Msk & ((value) << WDT_CTRL_TBAN_Pos)))\r
+#define WDT_CTRL_KEY_Pos            24\r
+#define WDT_CTRL_KEY_Msk            (0xFFu << WDT_CTRL_KEY_Pos) /**< \brief (WDT_CTRL) Key */\r
+#define WDT_CTRL_KEY(value)         ((WDT_CTRL_KEY_Msk & ((value) << WDT_CTRL_KEY_Pos)))\r
+/* -------- WDT_CLR : (WDT Offset: 0x004) Clear Register -------- */\r
+#define WDT_CLR_WDTCLR              (0x1u <<  0) /**< \brief (WDT_CLR) Clear WDT counter */\r
+#define WDT_CLR_KEY_Pos             24\r
+#define WDT_CLR_KEY_Msk             (0xFFu << WDT_CLR_KEY_Pos) /**< \brief (WDT_CLR) Key */\r
+#define WDT_CLR_KEY(value)          ((WDT_CLR_KEY_Msk & ((value) << WDT_CLR_KEY_Pos)))\r
+/* -------- WDT_SR : (WDT Offset: 0x008) Status Register -------- */\r
+#define WDT_SR_WINDOW               (0x1u <<  0) /**< \brief (WDT_SR) WDT in window */\r
+#define WDT_SR_CLEARED              (0x1u <<  1) /**< \brief (WDT_SR) WDT cleared */\r
+/* -------- WDT_IER : (WDT Offset: 0x00C) Interrupt Enable Register -------- */\r
+#define WDT_IER_WINT                (0x1u <<  2) /**< \brief (WDT_IER)  */\r
+/* -------- WDT_IDR : (WDT Offset: 0x010) Interrupt Disable Register -------- */\r
+#define WDT_IDR_WINT                (0x1u <<  2) /**< \brief (WDT_IDR)  */\r
+/* -------- WDT_IMR : (WDT Offset: 0x014) Interrupt Mask Register -------- */\r
+#define WDT_IMR_WINT                (0x1u <<  2) /**< \brief (WDT_IMR)  */\r
+/* -------- WDT_ISR : (WDT Offset: 0x018) Interrupt Status Register -------- */\r
+#define WDT_ISR_WINT                (0x1u <<  2) /**< \brief (WDT_ISR)  */\r
+/* -------- WDT_ICR : (WDT Offset: 0x01C) Interrupt Clear Register -------- */\r
+#define WDT_ICR_WINT                (0x1u <<  2) /**< \brief (WDT_ICR)  */\r
+/* -------- WDT_VERSION : (WDT Offset: 0x3FC) Version Register -------- */\r
+#define WDT_VERSION_VERSION_Pos     0\r
+#define WDT_VERSION_VERSION_Msk     (0xFFFu << WDT_VERSION_VERSION_Pos) /**< \brief (WDT_VERSION) Version number */\r
+#define WDT_VERSION_VERSION(value)  ((WDT_VERSION_VERSION_Msk & ((value) << WDT_VERSION_VERSION_Pos)))\r
+#define WDT_VERSION_VARIANT_Pos     16\r
+#define WDT_VERSION_VARIANT_Msk     (0xFu << WDT_VERSION_VARIANT_Pos) /**< \brief (WDT_VERSION) Variant number */\r
+#define WDT_VERSION_VARIANT(value)  ((WDT_VERSION_VARIANT_Msk & ((value) << WDT_VERSION_VARIANT_Pos)))\r
+\r
+/*@}*/\r
+\r
+/*@}*/\r
+\r
+/* ************************************************************************** */\r
+/**  REGISTER ACCESS DEFINITIONS FOR SAM4L */\r
+/* ************************************************************************** */\r
+/** \addtogroup SAM4L_reg Registers Access Definitions */\r
+/*@{*/\r
+\r
+/* ========== Register definition for IISC peripheral ========== */\r
+#define REG_IISC_CR               REG_ACCESS(WoReg  , 0x40004000U) /**< \brief (IISC) Control Register */ \r
+#define REG_IISC_MR               REG_ACCESS(RwReg  , 0x40004004U) /**< \brief (IISC) Mode Register */ \r
+#define REG_IISC_SR               REG_ACCESS(RoReg  , 0x40004008U) /**< \brief (IISC) Status Register */ \r
+#define REG_IISC_SCR              REG_ACCESS(WoReg  , 0x4000400CU) /**< \brief (IISC) Status Clear Register */ \r
+#define REG_IISC_SSR              REG_ACCESS(WoReg  , 0x40004010U) /**< \brief (IISC) Status Set Register */ \r
+#define REG_IISC_IER              REG_ACCESS(WoReg  , 0x40004014U) /**< \brief (IISC) Interrupt Enable Register */ \r
+#define REG_IISC_IDR              REG_ACCESS(WoReg  , 0x40004018U) /**< \brief (IISC) Interrupt Disable Register */ \r
+#define REG_IISC_IMR              REG_ACCESS(RoReg  , 0x4000401CU) /**< \brief (IISC) Interrupt Mask Register */ \r
+#define REG_IISC_RHR              REG_ACCESS(RoReg  , 0x40004020U) /**< \brief (IISC) Receive Holding Register */ \r
+#define REG_IISC_THR              REG_ACCESS(WoReg  , 0x40004024U) /**< \brief (IISC) Transmit Holding Register */ \r
+#define REG_IISC_VERSION          REG_ACCESS(RoReg  , 0x40004028U) /**< \brief (IISC) Version Register */ \r
+#define REG_IISC_PARAMETER        REG_ACCESS(RoReg  , 0x4000402CU) /**< \brief (IISC) Parameter Register */ \r
+/* ========== Register definition for SPI peripheral ========== */\r
+#define REG_SPI_CR                REG_ACCESS(WoReg  , 0x40008000U) /**< \brief (SPI) Control Register */ \r
+#define REG_SPI_MR                REG_ACCESS(RwReg  , 0x40008004U) /**< \brief (SPI) Mode Register */ \r
+#define REG_SPI_RDR               REG_ACCESS(RoReg  , 0x40008008U) /**< \brief (SPI) Receive Data Register */ \r
+#define REG_SPI_TDR               REG_ACCESS(WoReg  , 0x4000800CU) /**< \brief (SPI) Transmit Data Register */ \r
+#define REG_SPI_SR                REG_ACCESS(RoReg  , 0x40008010U) /**< \brief (SPI) Status Register */ \r
+#define REG_SPI_IER               REG_ACCESS(WoReg  , 0x40008014U) /**< \brief (SPI) Interrupt Enable Register */ \r
+#define REG_SPI_IDR               REG_ACCESS(WoReg  , 0x40008018U) /**< \brief (SPI) Interrupt Disable Register */ \r
+#define REG_SPI_IMR               REG_ACCESS(RoReg  , 0x4000801CU) /**< \brief (SPI) Interrupt Mask Register */ \r
+#define REG_SPI_CSR0              REG_ACCESS(RwReg  , 0x40008030U) /**< \brief (SPI) Chip Select Register 0 */ \r
+#define REG_SPI_CSR1              REG_ACCESS(RwReg  , 0x40008034U) /**< \brief (SPI) Chip Select Register 1 */ \r
+#define REG_SPI_CSR2              REG_ACCESS(RwReg  , 0x40008038U) /**< \brief (SPI) Chip Select Register 2 */ \r
+#define REG_SPI_CSR3              REG_ACCESS(RwReg  , 0x4000803CU) /**< \brief (SPI) Chip Select Register 3 */ \r
+#define REG_SPI_WPCR              REG_ACCESS(RwReg  , 0x400080E4U) /**< \brief (SPI) Write Protection control Register */ \r
+#define REG_SPI_WPSR              REG_ACCESS(RoReg  , 0x400080E8U) /**< \brief (SPI) Write Protection status Register */ \r
+#define REG_SPI_FEATURES          REG_ACCESS(RoReg  , 0x400080F8U) /**< \brief (SPI) Features Register */ \r
+#define REG_SPI_VERSION           REG_ACCESS(RoReg  , 0x400080FCU) /**< \brief (SPI) Version Register */ \r
+/* ========== Register definition for TC0 peripheral ========== */\r
+#define REG_TC0_CCR0              REG_ACCESS(WoReg  , 0x40010000U) /**< \brief (TC0) Channel Control Register Channel 0 0 */\r
+#define REG_TC0_CMR0              REG_ACCESS(RwReg  , 0x40010004U) /**< \brief (TC0) Channel Mode Register Channel 0 0 */\r
+#define REG_TC0_SMC0              REG_ACCESS(RwReg  , 0x40010008U) /**< \brief (TC0) Stepper Motor Mode Register 0 */\r
+#define REG_TC0_CV0               REG_ACCESS(RoReg  , 0x40010010U) /**< \brief (TC0) Counter Value Channel 0 0 */\r
+#define REG_TC0_RA0               REG_ACCESS(RwReg  , 0x40010014U) /**< \brief (TC0) Register A Channel 0 0 */\r
+#define REG_TC0_RB0               REG_ACCESS(RwReg  , 0x40010018U) /**< \brief (TC0) Register B Channel 0 0 */\r
+#define REG_TC0_RC0               REG_ACCESS(RwReg  , 0x4001001CU) /**< \brief (TC0) Register C Channel 0 0 */\r
+#define REG_TC0_SR0               REG_ACCESS(RoReg  , 0x40010020U) /**< \brief (TC0) Status Register Channel 0 0 */\r
+#define REG_TC0_IER0              REG_ACCESS(WoReg  , 0x40010024U) /**< \brief (TC0) Interrupt Enable Register Channel 0 0 */\r
+#define REG_TC0_IDR0              REG_ACCESS(WoReg  , 0x40010028U) /**< \brief (TC0) Interrupt Disable Register Channel 0 0 */\r
+#define REG_TC0_IMR0              REG_ACCESS(RoReg  , 0x4001002CU) /**< \brief (TC0) Interrupt Mask Register Channel 0 0 */\r
+#define REG_TC0_CCR1              REG_ACCESS(WoReg  , 0x40010040U) /**< \brief (TC0) Channel Control Register Channel 0 1 */\r
+#define REG_TC0_CMR1              REG_ACCESS(RwReg  , 0x40010044U) /**< \brief (TC0) Channel Mode Register Channel 0 1 */\r
+#define REG_TC0_SMC1              REG_ACCESS(RwReg  , 0x40010048U) /**< \brief (TC0) Stepper Motor Mode Register 1 */\r
+#define REG_TC0_CV1               REG_ACCESS(RoReg  , 0x40010050U) /**< \brief (TC0) Counter Value Channel 0 1 */\r
+#define REG_TC0_RA1               REG_ACCESS(RwReg  , 0x40010054U) /**< \brief (TC0) Register A Channel 0 1 */\r
+#define REG_TC0_RB1               REG_ACCESS(RwReg  , 0x40010058U) /**< \brief (TC0) Register B Channel 0 1 */\r
+#define REG_TC0_RC1               REG_ACCESS(RwReg  , 0x4001005CU) /**< \brief (TC0) Register C Channel 0 1 */\r
+#define REG_TC0_SR1               REG_ACCESS(RoReg  , 0x40010060U) /**< \brief (TC0) Status Register Channel 0 1 */\r
+#define REG_TC0_IER1              REG_ACCESS(WoReg  , 0x40010064U) /**< \brief (TC0) Interrupt Enable Register Channel 0 1 */\r
+#define REG_TC0_IDR1              REG_ACCESS(WoReg  , 0x40010068U) /**< \brief (TC0) Interrupt Disable Register Channel 0 1 */\r
+#define REG_TC0_IMR1              REG_ACCESS(RoReg  , 0x4001006CU) /**< \brief (TC0) Interrupt Mask Register Channel 0 1 */\r
+#define REG_TC0_CCR2              REG_ACCESS(WoReg  , 0x40010080U) /**< \brief (TC0) Channel Control Register Channel 0 2 */\r
+#define REG_TC0_CMR2              REG_ACCESS(RwReg  , 0x40010084U) /**< \brief (TC0) Channel Mode Register Channel 0 2 */\r
+#define REG_TC0_SMC2              REG_ACCESS(RwReg  , 0x40010088U) /**< \brief (TC0) Stepper Motor Mode Register 2 */\r
+#define REG_TC0_CV2               REG_ACCESS(RoReg  , 0x40010090U) /**< \brief (TC0) Counter Value Channel 0 2 */\r
+#define REG_TC0_RA2               REG_ACCESS(RwReg  , 0x40010094U) /**< \brief (TC0) Register A Channel 0 2 */\r
+#define REG_TC0_RB2               REG_ACCESS(RwReg  , 0x40010098U) /**< \brief (TC0) Register B Channel 0 2 */\r
+#define REG_TC0_RC2               REG_ACCESS(RwReg  , 0x4001009CU) /**< \brief (TC0) Register C Channel 0 2 */\r
+#define REG_TC0_SR2               REG_ACCESS(RoReg  , 0x400100A0U) /**< \brief (TC0) Status Register Channel 0 2 */\r
+#define REG_TC0_IER2              REG_ACCESS(WoReg  , 0x400100A4U) /**< \brief (TC0) Interrupt Enable Register Channel 0 2 */\r
+#define REG_TC0_IDR2              REG_ACCESS(WoReg  , 0x400100A8U) /**< \brief (TC0) Interrupt Disable Register Channel 0 2 */\r
+#define REG_TC0_IMR2              REG_ACCESS(RoReg  , 0x400100ACU) /**< \brief (TC0) Interrupt Mask Register Channel 0 2 */\r
+#define REG_TC0_BCR               REG_ACCESS(WoReg  , 0x400100C0U) /**< \brief (TC0) TC Block Control Register */ \r
+#define REG_TC0_BMR               REG_ACCESS(RwReg  , 0x400100C4U) /**< \brief (TC0) TC Block Mode Register */ \r
+#define REG_TC0_WPMR              REG_ACCESS(RwReg  , 0x400100E4U) /**< \brief (TC0) Write Protect Mode Register */ \r
+#define REG_TC0_FEATURES          REG_ACCESS(RoReg  , 0x400100F8U) /**< \brief (TC0) Features Register */ \r
+#define REG_TC0_VERSION           REG_ACCESS(RoReg  , 0x400100FCU) /**< \brief (TC0) Version Register */ \r
+/* ========== Register definition for TC1 peripheral ========== */\r
+#define REG_TC1_CCR0              REG_ACCESS(WoReg  , 0x40014000U) /**< \brief (TC1) Channel Control Register Channel 0 0 */\r
+#define REG_TC1_CMR0              REG_ACCESS(RwReg  , 0x40014004U) /**< \brief (TC1) Channel Mode Register Channel 0 0 */\r
+#define REG_TC1_SMC0              REG_ACCESS(RwReg  , 0x40014008U) /**< \brief (TC1) Stepper Motor Mode Register 0 */\r
+#define REG_TC1_CV0               REG_ACCESS(RoReg  , 0x40014010U) /**< \brief (TC1) Counter Value Channel 0 0 */\r
+#define REG_TC1_RA0               REG_ACCESS(RwReg  , 0x40014014U) /**< \brief (TC1) Register A Channel 0 0 */\r
+#define REG_TC1_RB0               REG_ACCESS(RwReg  , 0x40014018U) /**< \brief (TC1) Register B Channel 0 0 */\r
+#define REG_TC1_RC0               REG_ACCESS(RwReg  , 0x4001401CU) /**< \brief (TC1) Register C Channel 0 0 */\r
+#define REG_TC1_SR0               REG_ACCESS(RoReg  , 0x40014020U) /**< \brief (TC1) Status Register Channel 0 0 */\r
+#define REG_TC1_IER0              REG_ACCESS(WoReg  , 0x40014024U) /**< \brief (TC1) Interrupt Enable Register Channel 0 0 */\r
+#define REG_TC1_IDR0              REG_ACCESS(WoReg  , 0x40014028U) /**< \brief (TC1) Interrupt Disable Register Channel 0 0 */\r
+#define REG_TC1_IMR0              REG_ACCESS(RoReg  , 0x4001402CU) /**< \brief (TC1) Interrupt Mask Register Channel 0 0 */\r
+#define REG_TC1_CCR1              REG_ACCESS(WoReg  , 0x40014040U) /**< \brief (TC1) Channel Control Register Channel 0 1 */\r
+#define REG_TC1_CMR1              REG_ACCESS(RwReg  , 0x40014044U) /**< \brief (TC1) Channel Mode Register Channel 0 1 */\r
+#define REG_TC1_SMC1              REG_ACCESS(RwReg  , 0x40014048U) /**< \brief (TC1) Stepper Motor Mode Register 1 */\r
+#define REG_TC1_CV1               REG_ACCESS(RoReg  , 0x40014050U) /**< \brief (TC1) Counter Value Channel 0 1 */\r
+#define REG_TC1_RA1               REG_ACCESS(RwReg  , 0x40014054U) /**< \brief (TC1) Register A Channel 0 1 */\r
+#define REG_TC1_RB1               REG_ACCESS(RwReg  , 0x40014058U) /**< \brief (TC1) Register B Channel 0 1 */\r
+#define REG_TC1_RC1               REG_ACCESS(RwReg  , 0x4001405CU) /**< \brief (TC1) Register C Channel 0 1 */\r
+#define REG_TC1_SR1               REG_ACCESS(RoReg  , 0x40014060U) /**< \brief (TC1) Status Register Channel 0 1 */\r
+#define REG_TC1_IER1              REG_ACCESS(WoReg  , 0x40014064U) /**< \brief (TC1) Interrupt Enable Register Channel 0 1 */\r
+#define REG_TC1_IDR1              REG_ACCESS(WoReg  , 0x40014068U) /**< \brief (TC1) Interrupt Disable Register Channel 0 1 */\r
+#define REG_TC1_IMR1              REG_ACCESS(RoReg  , 0x4001406CU) /**< \brief (TC1) Interrupt Mask Register Channel 0 1 */\r
+#define REG_TC1_CCR2              REG_ACCESS(WoReg  , 0x40014080U) /**< \brief (TC1) Channel Control Register Channel 0 2 */\r
+#define REG_TC1_CMR2              REG_ACCESS(RwReg  , 0x40014084U) /**< \brief (TC1) Channel Mode Register Channel 0 2 */\r
+#define REG_TC1_SMC2              REG_ACCESS(RwReg  , 0x40014088U) /**< \brief (TC1) Stepper Motor Mode Register 2 */\r
+#define REG_TC1_CV2               REG_ACCESS(RoReg  , 0x40014090U) /**< \brief (TC1) Counter Value Channel 0 2 */\r
+#define REG_TC1_RA2               REG_ACCESS(RwReg  , 0x40014094U) /**< \brief (TC1) Register A Channel 0 2 */\r
+#define REG_TC1_RB2               REG_ACCESS(RwReg  , 0x40014098U) /**< \brief (TC1) Register B Channel 0 2 */\r
+#define REG_TC1_RC2               REG_ACCESS(RwReg  , 0x4001409CU) /**< \brief (TC1) Register C Channel 0 2 */\r
+#define REG_TC1_SR2               REG_ACCESS(RoReg  , 0x400140A0U) /**< \brief (TC1) Status Register Channel 0 2 */\r
+#define REG_TC1_IER2              REG_ACCESS(WoReg  , 0x400140A4U) /**< \brief (TC1) Interrupt Enable Register Channel 0 2 */\r
+#define REG_TC1_IDR2              REG_ACCESS(WoReg  , 0x400140A8U) /**< \brief (TC1) Interrupt Disable Register Channel 0 2 */\r
+#define REG_TC1_IMR2              REG_ACCESS(RoReg  , 0x400140ACU) /**< \brief (TC1) Interrupt Mask Register Channel 0 2 */\r
+#define REG_TC1_BCR               REG_ACCESS(WoReg  , 0x400140C0U) /**< \brief (TC1) TC Block Control Register */ \r
+#define REG_TC1_BMR               REG_ACCESS(RwReg  , 0x400140C4U) /**< \brief (TC1) TC Block Mode Register */ \r
+#define REG_TC1_WPMR              REG_ACCESS(RwReg  , 0x400140E4U) /**< \brief (TC1) Write Protect Mode Register */ \r
+#define REG_TC1_FEATURES          REG_ACCESS(RoReg  , 0x400140F8U) /**< \brief (TC1) Features Register */ \r
+#define REG_TC1_VERSION           REG_ACCESS(RoReg  , 0x400140FCU) /**< \brief (TC1) Version Register */ \r
+/* ========== Register definition for TWIM0 peripheral ========== */\r
+#define REG_TWIM0_CR              REG_ACCESS(WoReg  , 0x40018000U) /**< \brief (TWIM0) Control Register */ \r
+#define REG_TWIM0_CWGR            REG_ACCESS(RwReg  , 0x40018004U) /**< \brief (TWIM0) Clock Waveform Generator Register */ \r
+#define REG_TWIM0_SMBTR           REG_ACCESS(RwReg  , 0x40018008U) /**< \brief (TWIM0) SMBus Timing Register */ \r
+#define REG_TWIM0_CMDR            REG_ACCESS(RwReg  , 0x4001800CU) /**< \brief (TWIM0) Command Register */ \r
+#define REG_TWIM0_NCMDR           REG_ACCESS(RwReg  , 0x40018010U) /**< \brief (TWIM0) Next Command Register */ \r
+#define REG_TWIM0_RHR             REG_ACCESS(RoReg  , 0x40018014U) /**< \brief (TWIM0) Receive Holding Register */ \r
+#define REG_TWIM0_THR             REG_ACCESS(WoReg  , 0x40018018U) /**< \brief (TWIM0) Transmit Holding Register */ \r
+#define REG_TWIM0_SR              REG_ACCESS(RoReg  , 0x4001801CU) /**< \brief (TWIM0) Status Register */ \r
+#define REG_TWIM0_IER             REG_ACCESS(WoReg  , 0x40018020U) /**< \brief (TWIM0) Interrupt Enable Register */ \r
+#define REG_TWIM0_IDR             REG_ACCESS(WoReg  , 0x40018024U) /**< \brief (TWIM0) Interrupt Disable Register */ \r
+#define REG_TWIM0_IMR             REG_ACCESS(RoReg  , 0x40018028U) /**< \brief (TWIM0) Interrupt Mask Register */ \r
+#define REG_TWIM0_SCR             REG_ACCESS(WoReg  , 0x4001802CU) /**< \brief (TWIM0) Status Clear Register */ \r
+#define REG_TWIM0_PR              REG_ACCESS(RoReg  , 0x40018030U) /**< \brief (TWIM0) Parameter Register */ \r
+#define REG_TWIM0_VR              REG_ACCESS(RoReg  , 0x40018034U) /**< \brief (TWIM0) Version Register */ \r
+#define REG_TWIM0_HSCWGR          REG_ACCESS(RwReg  , 0x40018038U) /**< \brief (TWIM0) HS-mode Clock Waveform Generator */ \r
+#define REG_TWIM0_SRR             REG_ACCESS(RwReg  , 0x4001803CU) /**< \brief (TWIM0) Slew Rate Register */ \r
+#define REG_TWIM0_HSSRR           REG_ACCESS(RwReg  , 0x40018040U) /**< \brief (TWIM0) HS-mode Slew Rate Register */ \r
+/* ========== Register definition for TWIS0 peripheral ========== */\r
+#define REG_TWIS0_CR              REG_ACCESS(RwReg  , 0x40018400U) /**< \brief (TWIS0) Control Register */ \r
+#define REG_TWIS0_NBYTES          REG_ACCESS(RwReg  , 0x40018404U) /**< \brief (TWIS0) NBYTES Register */ \r
+#define REG_TWIS0_TR              REG_ACCESS(RwReg  , 0x40018408U) /**< \brief (TWIS0) Timing Register */ \r
+#define REG_TWIS0_RHR             REG_ACCESS(RoReg  , 0x4001840CU) /**< \brief (TWIS0) Receive Holding Register */ \r
+#define REG_TWIS0_THR             REG_ACCESS(WoReg  , 0x40018410U) /**< \brief (TWIS0) Transmit Holding Register */ \r
+#define REG_TWIS0_PECR            REG_ACCESS(RoReg  , 0x40018414U) /**< \brief (TWIS0) Packet Error Check Register */ \r
+#define REG_TWIS0_SR              REG_ACCESS(RoReg  , 0x40018418U) /**< \brief (TWIS0) Status Register */ \r
+#define REG_TWIS0_IER             REG_ACCESS(WoReg  , 0x4001841CU) /**< \brief (TWIS0) Interrupt Enable Register */ \r
+#define REG_TWIS0_IDR             REG_ACCESS(WoReg  , 0x40018420U) /**< \brief (TWIS0) Interrupt Disable Register */ \r
+#define REG_TWIS0_IMR             REG_ACCESS(RoReg  , 0x40018424U) /**< \brief (TWIS0) Interrupt Mask Register */ \r
+#define REG_TWIS0_SCR             REG_ACCESS(WoReg  , 0x40018428U) /**< \brief (TWIS0) Status Clear Register */ \r
+#define REG_TWIS0_PR              REG_ACCESS(RoReg  , 0x4001842CU) /**< \brief (TWIS0) Parameter Register */ \r
+#define REG_TWIS0_VR              REG_ACCESS(RoReg  , 0x40018430U) /**< \brief (TWIS0) Version Register */ \r
+#define REG_TWIS0_HSTR            REG_ACCESS(RwReg  , 0x40018434U) /**< \brief (TWIS0) HS-mode Timing Register */ \r
+#define REG_TWIS0_SRR             REG_ACCESS(RwReg  , 0x40018438U) /**< \brief (TWIS0) Slew Rate Register */ \r
+#define REG_TWIS0_HSSRR           REG_ACCESS(RwReg  , 0x4001843CU) /**< \brief (TWIS0) HS-mode Slew Rate Register */ \r
+/* ========== Register definition for TWIM1 peripheral ========== */\r
+#define REG_TWIM1_CR              REG_ACCESS(WoReg  , 0x4001C000U) /**< \brief (TWIM1) Control Register */ \r
+#define REG_TWIM1_CWGR            REG_ACCESS(RwReg  , 0x4001C004U) /**< \brief (TWIM1) Clock Waveform Generator Register */ \r
+#define REG_TWIM1_SMBTR           REG_ACCESS(RwReg  , 0x4001C008U) /**< \brief (TWIM1) SMBus Timing Register */ \r
+#define REG_TWIM1_CMDR            REG_ACCESS(RwReg  , 0x4001C00CU) /**< \brief (TWIM1) Command Register */ \r
+#define REG_TWIM1_NCMDR           REG_ACCESS(RwReg  , 0x4001C010U) /**< \brief (TWIM1) Next Command Register */ \r
+#define REG_TWIM1_RHR             REG_ACCESS(RoReg  , 0x4001C014U) /**< \brief (TWIM1) Receive Holding Register */ \r
+#define REG_TWIM1_THR             REG_ACCESS(WoReg  , 0x4001C018U) /**< \brief (TWIM1) Transmit Holding Register */ \r
+#define REG_TWIM1_SR              REG_ACCESS(RoReg  , 0x4001C01CU) /**< \brief (TWIM1) Status Register */ \r
+#define REG_TWIM1_IER             REG_ACCESS(WoReg  , 0x4001C020U) /**< \brief (TWIM1) Interrupt Enable Register */ \r
+#define REG_TWIM1_IDR             REG_ACCESS(WoReg  , 0x4001C024U) /**< \brief (TWIM1) Interrupt Disable Register */ \r
+#define REG_TWIM1_IMR             REG_ACCESS(RoReg  , 0x4001C028U) /**< \brief (TWIM1) Interrupt Mask Register */ \r
+#define REG_TWIM1_SCR             REG_ACCESS(WoReg  , 0x4001C02CU) /**< \brief (TWIM1) Status Clear Register */ \r
+#define REG_TWIM1_PR              REG_ACCESS(RoReg  , 0x4001C030U) /**< \brief (TWIM1) Parameter Register */ \r
+#define REG_TWIM1_VR              REG_ACCESS(RoReg  , 0x4001C034U) /**< \brief (TWIM1) Version Register */ \r
+#define REG_TWIM1_HSCWGR          REG_ACCESS(RwReg  , 0x4001C038U) /**< \brief (TWIM1) HS-mode Clock Waveform Generator */ \r
+#define REG_TWIM1_SRR             REG_ACCESS(RwReg  , 0x4001C03CU) /**< \brief (TWIM1) Slew Rate Register */ \r
+#define REG_TWIM1_HSSRR           REG_ACCESS(RwReg  , 0x4001C040U) /**< \brief (TWIM1) HS-mode Slew Rate Register */ \r
+/* ========== Register definition for TWIS1 peripheral ========== */\r
+#define REG_TWIS1_CR              REG_ACCESS(RwReg  , 0x4001C400U) /**< \brief (TWIS1) Control Register */ \r
+#define REG_TWIS1_NBYTES          REG_ACCESS(RwReg  , 0x4001C404U) /**< \brief (TWIS1) NBYTES Register */ \r
+#define REG_TWIS1_TR              REG_ACCESS(RwReg  , 0x4001C408U) /**< \brief (TWIS1) Timing Register */ \r
+#define REG_TWIS1_RHR             REG_ACCESS(RoReg  , 0x4001C40CU) /**< \brief (TWIS1) Receive Holding Register */ \r
+#define REG_TWIS1_THR             REG_ACCESS(WoReg  , 0x4001C410U) /**< \brief (TWIS1) Transmit Holding Register */ \r
+#define REG_TWIS1_PECR            REG_ACCESS(RoReg  , 0x4001C414U) /**< \brief (TWIS1) Packet Error Check Register */ \r
+#define REG_TWIS1_SR              REG_ACCESS(RoReg  , 0x4001C418U) /**< \brief (TWIS1) Status Register */ \r
+#define REG_TWIS1_IER             REG_ACCESS(WoReg  , 0x4001C41CU) /**< \brief (TWIS1) Interrupt Enable Register */ \r
+#define REG_TWIS1_IDR             REG_ACCESS(WoReg  , 0x4001C420U) /**< \brief (TWIS1) Interrupt Disable Register */ \r
+#define REG_TWIS1_IMR             REG_ACCESS(RoReg  , 0x4001C424U) /**< \brief (TWIS1) Interrupt Mask Register */ \r
+#define REG_TWIS1_SCR             REG_ACCESS(WoReg  , 0x4001C428U) /**< \brief (TWIS1) Status Clear Register */ \r
+#define REG_TWIS1_PR              REG_ACCESS(RoReg  , 0x4001C42CU) /**< \brief (TWIS1) Parameter Register */ \r
+#define REG_TWIS1_VR              REG_ACCESS(RoReg  , 0x4001C430U) /**< \brief (TWIS1) Version Register */ \r
+#define REG_TWIS1_HSTR            REG_ACCESS(RwReg  , 0x4001C434U) /**< \brief (TWIS1) HS-mode Timing Register */ \r
+#define REG_TWIS1_SRR             REG_ACCESS(RwReg  , 0x4001C438U) /**< \brief (TWIS1) Slew Rate Register */ \r
+#define REG_TWIS1_HSSRR           REG_ACCESS(RwReg  , 0x4001C43CU) /**< \brief (TWIS1) HS-mode Slew Rate Register */ \r
+/* ========== Register definition for USART0 peripheral ========== */\r
+#define REG_USART0_CR             REG_ACCESS(WoReg  , 0x40024000U) /**< \brief (USART0) Control Register */ \r
+#define REG_USART0_MR             REG_ACCESS(RwReg  , 0x40024004U) /**< \brief (USART0) Mode Register */ \r
+#define REG_USART0_IER            REG_ACCESS(WoReg  , 0x40024008U) /**< \brief (USART0) Interrupt Enable Register */ \r
+#define REG_USART0_IDR            REG_ACCESS(WoReg  , 0x4002400CU) /**< \brief (USART0) Interrupt Disable Register */ \r
+#define REG_USART0_IMR            REG_ACCESS(RoReg  , 0x40024010U) /**< \brief (USART0) Interrupt Mask Register */ \r
+#define REG_USART0_CSR            REG_ACCESS(RoReg  , 0x40024014U) /**< \brief (USART0) Channel Status Register */ \r
+#define REG_USART0_RHR            REG_ACCESS(RoReg  , 0x40024018U) /**< \brief (USART0) Receiver Holding Register */ \r
+#define REG_USART0_THR            REG_ACCESS(WoReg  , 0x4002401CU) /**< \brief (USART0) Transmitter Holding Register */ \r
+#define REG_USART0_BRGR           REG_ACCESS(RwReg  , 0x40024020U) /**< \brief (USART0) Baud Rate Generator Register */ \r
+#define REG_USART0_RTOR           REG_ACCESS(RwReg  , 0x40024024U) /**< \brief (USART0) Receiver Time-out Register */ \r
+#define REG_USART0_TTGR           REG_ACCESS(RwReg  , 0x40024028U) /**< \brief (USART0) Transmitter Timeguard Register */ \r
+#define REG_USART0_FIDI           REG_ACCESS(RwReg  , 0x40024040U) /**< \brief (USART0) FI DI Ratio Register */ \r
+#define REG_USART0_NER            REG_ACCESS(RoReg  , 0x40024044U) /**< \brief (USART0) Number of Errors Register */ \r
+#define REG_USART0_IFR            REG_ACCESS(RwReg  , 0x4002404CU) /**< \brief (USART0) IrDA Filter Register */ \r
+#define REG_USART0_MAN            REG_ACCESS(RwReg  , 0x40024050U) /**< \brief (USART0) Manchester Configuration Register */ \r
+#define REG_USART0_LINMR          REG_ACCESS(RwReg  , 0x40024054U) /**< \brief (USART0) LIN Mode Register */ \r
+#define REG_USART0_LINIR          REG_ACCESS(RwReg  , 0x40024058U) /**< \brief (USART0) LIN Identifier Register */ \r
+#define REG_USART0_LINBRR         REG_ACCESS(RoReg  , 0x4002405CU) /**< \brief (USART0) LIN Baud Rate Register */ \r
+#define REG_USART0_WPMR           REG_ACCESS(RwReg  , 0x400240E4U) /**< \brief (USART0) Write Protect Mode Register */ \r
+#define REG_USART0_WPSR           REG_ACCESS(RoReg  , 0x400240E8U) /**< \brief (USART0) Write Protect Status Register */ \r
+#define REG_USART0_VERSION        REG_ACCESS(RoReg  , 0x400240FCU) /**< \brief (USART0) Version Register */ \r
+/* ========== Register definition for USART1 peripheral ========== */\r
+#define REG_USART1_CR             REG_ACCESS(WoReg  , 0x40028000U) /**< \brief (USART1) Control Register */ \r
+#define REG_USART1_MR             REG_ACCESS(RwReg  , 0x40028004U) /**< \brief (USART1) Mode Register */ \r
+#define REG_USART1_IER            REG_ACCESS(WoReg  , 0x40028008U) /**< \brief (USART1) Interrupt Enable Register */ \r
+#define REG_USART1_IDR            REG_ACCESS(WoReg  , 0x4002800CU) /**< \brief (USART1) Interrupt Disable Register */ \r
+#define REG_USART1_IMR            REG_ACCESS(RoReg  , 0x40028010U) /**< \brief (USART1) Interrupt Mask Register */ \r
+#define REG_USART1_CSR            REG_ACCESS(RoReg  , 0x40028014U) /**< \brief (USART1) Channel Status Register */ \r
+#define REG_USART1_RHR            REG_ACCESS(RoReg  , 0x40028018U) /**< \brief (USART1) Receiver Holding Register */ \r
+#define REG_USART1_THR            REG_ACCESS(WoReg  , 0x4002801CU) /**< \brief (USART1) Transmitter Holding Register */ \r
+#define REG_USART1_BRGR           REG_ACCESS(RwReg  , 0x40028020U) /**< \brief (USART1) Baud Rate Generator Register */ \r
+#define REG_USART1_RTOR           REG_ACCESS(RwReg  , 0x40028024U) /**< \brief (USART1) Receiver Time-out Register */ \r
+#define REG_USART1_TTGR           REG_ACCESS(RwReg  , 0x40028028U) /**< \brief (USART1) Transmitter Timeguard Register */ \r
+#define REG_USART1_FIDI           REG_ACCESS(RwReg  , 0x40028040U) /**< \brief (USART1) FI DI Ratio Register */ \r
+#define REG_USART1_NER            REG_ACCESS(RoReg  , 0x40028044U) /**< \brief (USART1) Number of Errors Register */ \r
+#define REG_USART1_IFR            REG_ACCESS(RwReg  , 0x4002804CU) /**< \brief (USART1) IrDA Filter Register */ \r
+#define REG_USART1_MAN            REG_ACCESS(RwReg  , 0x40028050U) /**< \brief (USART1) Manchester Configuration Register */ \r
+#define REG_USART1_LINMR          REG_ACCESS(RwReg  , 0x40028054U) /**< \brief (USART1) LIN Mode Register */ \r
+#define REG_USART1_LINIR          REG_ACCESS(RwReg  , 0x40028058U) /**< \brief (USART1) LIN Identifier Register */ \r
+#define REG_USART1_LINBRR         REG_ACCESS(RoReg  , 0x4002805CU) /**< \brief (USART1) LIN Baud Rate Register */ \r
+#define REG_USART1_WPMR           REG_ACCESS(RwReg  , 0x400280E4U) /**< \brief (USART1) Write Protect Mode Register */ \r
+#define REG_USART1_WPSR           REG_ACCESS(RoReg  , 0x400280E8U) /**< \brief (USART1) Write Protect Status Register */ \r
+#define REG_USART1_VERSION        REG_ACCESS(RoReg  , 0x400280FCU) /**< \brief (USART1) Version Register */ \r
+/* ========== Register definition for USART2 peripheral ========== */\r
+#define REG_USART2_CR             REG_ACCESS(WoReg  , 0x4002C000U) /**< \brief (USART2) Control Register */ \r
+#define REG_USART2_MR             REG_ACCESS(RwReg  , 0x4002C004U) /**< \brief (USART2) Mode Register */ \r
+#define REG_USART2_IER            REG_ACCESS(WoReg  , 0x4002C008U) /**< \brief (USART2) Interrupt Enable Register */ \r
+#define REG_USART2_IDR            REG_ACCESS(WoReg  , 0x4002C00CU) /**< \brief (USART2) Interrupt Disable Register */ \r
+#define REG_USART2_IMR            REG_ACCESS(RoReg  , 0x4002C010U) /**< \brief (USART2) Interrupt Mask Register */ \r
+#define REG_USART2_CSR            REG_ACCESS(RoReg  , 0x4002C014U) /**< \brief (USART2) Channel Status Register */ \r
+#define REG_USART2_RHR            REG_ACCESS(RoReg  , 0x4002C018U) /**< \brief (USART2) Receiver Holding Register */ \r
+#define REG_USART2_THR            REG_ACCESS(WoReg  , 0x4002C01CU) /**< \brief (USART2) Transmitter Holding Register */ \r
+#define REG_USART2_BRGR           REG_ACCESS(RwReg  , 0x4002C020U) /**< \brief (USART2) Baud Rate Generator Register */ \r
+#define REG_USART2_RTOR           REG_ACCESS(RwReg  , 0x4002C024U) /**< \brief (USART2) Receiver Time-out Register */ \r
+#define REG_USART2_TTGR           REG_ACCESS(RwReg  , 0x4002C028U) /**< \brief (USART2) Transmitter Timeguard Register */ \r
+#define REG_USART2_FIDI           REG_ACCESS(RwReg  , 0x4002C040U) /**< \brief (USART2) FI DI Ratio Register */ \r
+#define REG_USART2_NER            REG_ACCESS(RoReg  , 0x4002C044U) /**< \brief (USART2) Number of Errors Register */ \r
+#define REG_USART2_IFR            REG_ACCESS(RwReg  , 0x4002C04CU) /**< \brief (USART2) IrDA Filter Register */ \r
+#define REG_USART2_MAN            REG_ACCESS(RwReg  , 0x4002C050U) /**< \brief (USART2) Manchester Configuration Register */ \r
+#define REG_USART2_LINMR          REG_ACCESS(RwReg  , 0x4002C054U) /**< \brief (USART2) LIN Mode Register */ \r
+#define REG_USART2_LINIR          REG_ACCESS(RwReg  , 0x4002C058U) /**< \brief (USART2) LIN Identifier Register */ \r
+#define REG_USART2_LINBRR         REG_ACCESS(RoReg  , 0x4002C05CU) /**< \brief (USART2) LIN Baud Rate Register */ \r
+#define REG_USART2_WPMR           REG_ACCESS(RwReg  , 0x4002C0E4U) /**< \brief (USART2) Write Protect Mode Register */ \r
+#define REG_USART2_WPSR           REG_ACCESS(RoReg  , 0x4002C0E8U) /**< \brief (USART2) Write Protect Status Register */ \r
+#define REG_USART2_VERSION        REG_ACCESS(RoReg  , 0x4002C0FCU) /**< \brief (USART2) Version Register */ \r
+/* ========== Register definition for USART3 peripheral ========== */\r
+#define REG_USART3_CR             REG_ACCESS(WoReg  , 0x40030000U) /**< \brief (USART3) Control Register */ \r
+#define REG_USART3_MR             REG_ACCESS(RwReg  , 0x40030004U) /**< \brief (USART3) Mode Register */ \r
+#define REG_USART3_IER            REG_ACCESS(WoReg  , 0x40030008U) /**< \brief (USART3) Interrupt Enable Register */ \r
+#define REG_USART3_IDR            REG_ACCESS(WoReg  , 0x4003000CU) /**< \brief (USART3) Interrupt Disable Register */ \r
+#define REG_USART3_IMR            REG_ACCESS(RoReg  , 0x40030010U) /**< \brief (USART3) Interrupt Mask Register */ \r
+#define REG_USART3_CSR            REG_ACCESS(RoReg  , 0x40030014U) /**< \brief (USART3) Channel Status Register */ \r
+#define REG_USART3_RHR            REG_ACCESS(RoReg  , 0x40030018U) /**< \brief (USART3) Receiver Holding Register */ \r
+#define REG_USART3_THR            REG_ACCESS(WoReg  , 0x4003001CU) /**< \brief (USART3) Transmitter Holding Register */ \r
+#define REG_USART3_BRGR           REG_ACCESS(RwReg  , 0x40030020U) /**< \brief (USART3) Baud Rate Generator Register */ \r
+#define REG_USART3_RTOR           REG_ACCESS(RwReg  , 0x40030024U) /**< \brief (USART3) Receiver Time-out Register */ \r
+#define REG_USART3_TTGR           REG_ACCESS(RwReg  , 0x40030028U) /**< \brief (USART3) Transmitter Timeguard Register */ \r
+#define REG_USART3_FIDI           REG_ACCESS(RwReg  , 0x40030040U) /**< \brief (USART3) FI DI Ratio Register */ \r
+#define REG_USART3_NER            REG_ACCESS(RoReg  , 0x40030044U) /**< \brief (USART3) Number of Errors Register */ \r
+#define REG_USART3_IFR            REG_ACCESS(RwReg  , 0x4003004CU) /**< \brief (USART3) IrDA Filter Register */ \r
+#define REG_USART3_MAN            REG_ACCESS(RwReg  , 0x40030050U) /**< \brief (USART3) Manchester Configuration Register */ \r
+#define REG_USART3_LINMR          REG_ACCESS(RwReg  , 0x40030054U) /**< \brief (USART3) LIN Mode Register */ \r
+#define REG_USART3_LINIR          REG_ACCESS(RwReg  , 0x40030058U) /**< \brief (USART3) LIN Identifier Register */ \r
+#define REG_USART3_LINBRR         REG_ACCESS(RoReg  , 0x4003005CU) /**< \brief (USART3) LIN Baud Rate Register */ \r
+#define REG_USART3_WPMR           REG_ACCESS(RwReg  , 0x400300E4U) /**< \brief (USART3) Write Protect Mode Register */ \r
+#define REG_USART3_WPSR           REG_ACCESS(RoReg  , 0x400300E8U) /**< \brief (USART3) Write Protect Status Register */ \r
+#define REG_USART3_VERSION        REG_ACCESS(RoReg  , 0x400300FCU) /**< \brief (USART3) Version Register */ \r
+/* ========== Register definition for ADCIFE peripheral ========== */\r
+#define REG_ADCIFE_CR             REG_ACCESS(WoReg  , 0x40038000U) /**< \brief (ADCIFE) Control Register */ \r
+#define REG_ADCIFE_CFG            REG_ACCESS(RwReg  , 0x40038004U) /**< \brief (ADCIFE) Configuration Register */ \r
+#define REG_ADCIFE_SR             REG_ACCESS(RoReg  , 0x40038008U) /**< \brief (ADCIFE) Status Register */ \r
+#define REG_ADCIFE_SCR            REG_ACCESS(WoReg  , 0x4003800CU) /**< \brief (ADCIFE) Status Clear Register */ \r
+#define REG_ADCIFE_RTS            REG_ACCESS(RwReg  , 0x40038010U) /**< \brief (ADCIFE) Resistive Touch Screen Register */ \r
+#define REG_ADCIFE_SEQCFG         REG_ACCESS(RwReg  , 0x40038014U) /**< \brief (ADCIFE) Sequencer Configuration Register */ \r
+#define REG_ADCIFE_CDMA           REG_ACCESS(WoReg  , 0x40038018U) /**< \brief (ADCIFE) Configuration Direct Memory Access Register */ \r
+#define REG_ADCIFE_TIM            REG_ACCESS(RwReg  , 0x4003801CU) /**< \brief (ADCIFE) Timing Configuration Register */ \r
+#define REG_ADCIFE_ITIMER         REG_ACCESS(RwReg  , 0x40038020U) /**< \brief (ADCIFE) Internal Timer Register */ \r
+#define REG_ADCIFE_WCFG           REG_ACCESS(RwReg  , 0x40038024U) /**< \brief (ADCIFE) Window Monitor Configuration Register */ \r
+#define REG_ADCIFE_WTH            REG_ACCESS(RwReg  , 0x40038028U) /**< \brief (ADCIFE) Window Monitor Threshold Configuration Register */ \r
+#define REG_ADCIFE_LCV            REG_ACCESS(RoReg  , 0x4003802CU) /**< \brief (ADCIFE) Sequencer Last Converted Value Register */ \r
+#define REG_ADCIFE_IER            REG_ACCESS(WoReg  , 0x40038030U) /**< \brief (ADCIFE) Interrupt Enable Register */ \r
+#define REG_ADCIFE_IDR            REG_ACCESS(WoReg  , 0x40038034U) /**< \brief (ADCIFE) Interrupt Disable Register */ \r
+#define REG_ADCIFE_IMR            REG_ACCESS(RoReg  , 0x40038038U) /**< \brief (ADCIFE) Interrupt Mask Register */ \r
+#define REG_ADCIFE_CALIB          REG_ACCESS(RwReg  , 0x4003803CU) /**< \brief (ADCIFE) Calibration Register */ \r
+#define REG_ADCIFE_VERSION        REG_ACCESS(RoReg  , 0x40038040U) /**< \brief (ADCIFE) Version Register */ \r
+#define REG_ADCIFE_PARAMETER      REG_ACCESS(RoReg  , 0x40038044U) /**< \brief (ADCIFE) Parameter Register */ \r
+/* ========== Register definition for DACC peripheral ========== */\r
+#define REG_DACC_CR               REG_ACCESS(WoReg  , 0x4003C000U) /**< \brief (DACC) Control Register */ \r
+#define REG_DACC_MR               REG_ACCESS(RwReg  , 0x4003C004U) /**< \brief (DACC) Mode Register */ \r
+#define REG_DACC_CDR              REG_ACCESS(WoReg  , 0x4003C008U) /**< \brief (DACC) Conversion Data Register */ \r
+#define REG_DACC_IER              REG_ACCESS(WoReg  , 0x4003C00CU) /**< \brief (DACC) Interrupt Enable Register */ \r
+#define REG_DACC_IDR              REG_ACCESS(WoReg  , 0x4003C010U) /**< \brief (DACC) Interrupt Disable Register */ \r
+#define REG_DACC_IMR              REG_ACCESS(RoReg  , 0x4003C014U) /**< \brief (DACC) Interrupt Mask Register */ \r
+#define REG_DACC_ISR              REG_ACCESS(RoReg  , 0x4003C018U) /**< \brief (DACC) Interrupt Status Register */ \r
+#define REG_DACC_WPMR             REG_ACCESS(RwReg  , 0x4003C0E4U) /**< \brief (DACC) Write Protect Mode Register */ \r
+#define REG_DACC_WPSR             REG_ACCESS(RoReg  , 0x4003C0E8U) /**< \brief (DACC) Write Protect Status Register */ \r
+#define REG_DACC_VERSION          REG_ACCESS(RoReg  , 0x4003C0FCU) /**< \brief (DACC) Version Register */ \r
+/* ========== Register definition for ACIFC peripheral ========== */\r
+#define REG_ACIFC_CTRL            REG_ACCESS(RwReg  , 0x40040000U) /**< \brief (ACIFC) Control Register */ \r
+#define REG_ACIFC_SR              REG_ACCESS(RoReg  , 0x40040004U) /**< \brief (ACIFC) Status Register */ \r
+#define REG_ACIFC_IER             REG_ACCESS(WoReg  , 0x40040010U) /**< \brief (ACIFC) Interrupt Enable Register */ \r
+#define REG_ACIFC_IDR             REG_ACCESS(WoReg  , 0x40040014U) /**< \brief (ACIFC) Interrupt Disable Register */ \r
+#define REG_ACIFC_IMR             REG_ACCESS(RoReg  , 0x40040018U) /**< \brief (ACIFC) Interrupt Mask Register */ \r
+#define REG_ACIFC_ISR             REG_ACCESS(RoReg  , 0x4004001CU) /**< \brief (ACIFC) Interrupt Status Register */ \r
+#define REG_ACIFC_ICR             REG_ACCESS(WoReg  , 0x40040020U) /**< \brief (ACIFC) Interrupt Status Clear Register */ \r
+#define REG_ACIFC_TR              REG_ACCESS(RwReg  , 0x40040024U) /**< \brief (ACIFC) Test Register */ \r
+#define REG_ACIFC_PARAMETER       REG_ACCESS(RoReg  , 0x40040030U) /**< \brief (ACIFC) Parameter Register */ \r
+#define REG_ACIFC_VERSION         REG_ACCESS(RoReg  , 0x40040034U) /**< \brief (ACIFC) Version Register */ \r
+#define REG_ACIFC_CONFW0          REG_ACCESS(RwReg  , 0x40040080U) /**< \brief (ACIFC) Window configuration Register 0 */\r
+#define REG_ACIFC_CONFW1          REG_ACCESS(RwReg  , 0x40040084U) /**< \brief (ACIFC) Window configuration Register 1 */\r
+#define REG_ACIFC_CONFW2          REG_ACCESS(RwReg  , 0x40040088U) /**< \brief (ACIFC) Window configuration Register 2 */\r
+#define REG_ACIFC_CONFW3          REG_ACCESS(RwReg  , 0x4004008CU) /**< \brief (ACIFC) Window configuration Register 3 */\r
+#define REG_ACIFC_CONF0           REG_ACCESS(RwReg  , 0x400400D0U) /**< \brief (ACIFC) AC Configuration Register 0 */\r
+#define REG_ACIFC_CONF1           REG_ACCESS(RwReg  , 0x400400D4U) /**< \brief (ACIFC) AC Configuration Register 1 */\r
+#define REG_ACIFC_CONF2           REG_ACCESS(RwReg  , 0x400400D8U) /**< \brief (ACIFC) AC Configuration Register 2 */\r
+#define REG_ACIFC_CONF3           REG_ACCESS(RwReg  , 0x400400DCU) /**< \brief (ACIFC) AC Configuration Register 3 */\r
+#define REG_ACIFC_CONF4           REG_ACCESS(RwReg  , 0x400400E0U) /**< \brief (ACIFC) AC Configuration Register 4 */\r
+#define REG_ACIFC_CONF5           REG_ACCESS(RwReg  , 0x400400E4U) /**< \brief (ACIFC) AC Configuration Register 5 */\r
+#define REG_ACIFC_CONF6           REG_ACCESS(RwReg  , 0x400400E8U) /**< \brief (ACIFC) AC Configuration Register 6 */\r
+#define REG_ACIFC_CONF7           REG_ACCESS(RwReg  , 0x400400ECU) /**< \brief (ACIFC) AC Configuration Register 7 */\r
+/* ========== Register definition for GLOC peripheral ========== */\r
+#define REG_GLOC_CR0              REG_ACCESS(RwReg  , 0x40060000U) /**< \brief (GLOC) Control Register 0 */\r
+#define REG_GLOC_TRUTH0           REG_ACCESS(RwReg  , 0x40060004U) /**< \brief (GLOC) Truth Register 0 */\r
+#define REG_GLOC_CR1              REG_ACCESS(RwReg  , 0x40060008U) /**< \brief (GLOC) Control Register 1 */\r
+#define REG_GLOC_TRUTH1           REG_ACCESS(RwReg  , 0x4006000CU) /**< \brief (GLOC) Truth Register 1 */\r
+#define REG_GLOC_PARAMETER        REG_ACCESS(RoReg  , 0x40060038U) /**< \brief (GLOC) Parameter Register */ \r
+#define REG_GLOC_VERSION          REG_ACCESS(RoReg  , 0x4006003CU) /**< \brief (GLOC) Version Register */ \r
+/* ========== Register definition for ABDACB peripheral ========== */\r
+#define REG_ABDACB_CR             REG_ACCESS(RwReg  , 0x40064000U) /**< \brief (ABDACB) Control Register */ \r
+#define REG_ABDACB_SDR0           REG_ACCESS(RwReg  , 0x40064004U) /**< \brief (ABDACB) Sample Data Register 0 */ \r
+#define REG_ABDACB_SDR1           REG_ACCESS(RwReg  , 0x40064008U) /**< \brief (ABDACB) Sample Data Register 1 */ \r
+#define REG_ABDACB_VCR0           REG_ACCESS(RwReg  , 0x4006400CU) /**< \brief (ABDACB) Volume Control Register 0 */ \r
+#define REG_ABDACB_VCR1           REG_ACCESS(RwReg  , 0x40064010U) /**< \brief (ABDACB) Volume Control Register 1 */ \r
+#define REG_ABDACB_IER            REG_ACCESS(WoReg  , 0x40064014U) /**< \brief (ABDACB) Interrupt Enable Register */ \r
+#define REG_ABDACB_IDR            REG_ACCESS(WoReg  , 0x40064018U) /**< \brief (ABDACB) Interupt Disable Register */ \r
+#define REG_ABDACB_IMR            REG_ACCESS(RoReg  , 0x4006401CU) /**< \brief (ABDACB) Interrupt Mask Register */ \r
+#define REG_ABDACB_SR             REG_ACCESS(RoReg  , 0x40064020U) /**< \brief (ABDACB) Status Register */ \r
+#define REG_ABDACB_SCR            REG_ACCESS(WoReg  , 0x40064024U) /**< \brief (ABDACB) Status Clear Register */ \r
+#define REG_ABDACB_PARAMETER      REG_ACCESS(RoReg  , 0x40064028U) /**< \brief (ABDACB) Parameter Register */ \r
+#define REG_ABDACB_VERSION        REG_ACCESS(RoReg  , 0x4006402CU) /**< \brief (ABDACB) Version Register */ \r
+/* ========== Register definition for TRNG peripheral ========== */\r
+#define REG_TRNG_CR               REG_ACCESS(WoReg  , 0x40068000U) /**< \brief (TRNG) Control Register */ \r
+#define REG_TRNG_IER              REG_ACCESS(WoReg  , 0x40068010U) /**< \brief (TRNG) Interrupt Enable Register */ \r
+#define REG_TRNG_IDR              REG_ACCESS(WoReg  , 0x40068014U) /**< \brief (TRNG) Interrupt Disable Register */ \r
+#define REG_TRNG_IMR              REG_ACCESS(RoReg  , 0x40068018U) /**< \brief (TRNG) Interrupt Mask Register */ \r
+#define REG_TRNG_ISR              REG_ACCESS(RoReg  , 0x4006801CU) /**< \brief (TRNG) Interrupt Status Register */ \r
+#define REG_TRNG_ODATA            REG_ACCESS(RoReg  , 0x40068050U) /**< \brief (TRNG) Output Data Register */ \r
+#define REG_TRNG_VERSION          REG_ACCESS(RoReg  , 0x400680FCU) /**< \brief (TRNG) Version Register */ \r
+/* ========== Register definition for PARC peripheral ========== */\r
+#define REG_PARC_CFG              REG_ACCESS(RwReg  , 0x4006C000U) /**< \brief (PARC) Configuration Register */ \r
+#define REG_PARC_CR               REG_ACCESS(RwReg  , 0x4006C004U) /**< \brief (PARC) Control Register */ \r
+#define REG_PARC_IER              REG_ACCESS(WoReg  , 0x4006C008U) /**< \brief (PARC) Interrupt Enable Register */ \r
+#define REG_PARC_IDR              REG_ACCESS(WoReg  , 0x4006C00CU) /**< \brief (PARC) Interrupt Disable Register */ \r
+#define REG_PARC_IMR              REG_ACCESS(RoReg  , 0x4006C010U) /**< \brief (PARC) Interrupt Mask Register */ \r
+#define REG_PARC_SR               REG_ACCESS(RoReg  , 0x4006C014U) /**< \brief (PARC) Status Register */ \r
+#define REG_PARC_ICR              REG_ACCESS(WoReg  , 0x4006C018U) /**< \brief (PARC) Interrupt Status Clear Register */ \r
+#define REG_PARC_RHR              REG_ACCESS(RoReg  , 0x4006C01CU) /**< \brief (PARC) Receive Holding Register */ \r
+#define REG_PARC_VERSION          REG_ACCESS(RoReg  , 0x4006C020U) /**< \brief (PARC) Version Register */ \r
+/* ========== Register definition for CATB peripheral ========== */\r
+#define REG_CATB_CR               REG_ACCESS(RwReg  , 0x40070000U) /**< \brief (CATB) Control Register */ \r
+#define REG_CATB_CNTCR            REG_ACCESS(RwReg  , 0x40070004U) /**< \brief (CATB) Counter Control Register */ \r
+#define REG_CATB_IDLE             REG_ACCESS(RwReg  , 0x40070008U) /**< \brief (CATB) Sensor Idle Level */ \r
+#define REG_CATB_LEVEL            REG_ACCESS(RoReg  , 0x4007000CU) /**< \brief (CATB) Sensor Relative Level */ \r
+#define REG_CATB_RAW              REG_ACCESS(RoReg  , 0x40070010U) /**< \brief (CATB) Sensor Raw Value */ \r
+#define REG_CATB_TIMING           REG_ACCESS(RwReg  , 0x40070014U) /**< \brief (CATB) Filter Timing Register */ \r
+#define REG_CATB_THRESH           REG_ACCESS(RwReg  , 0x40070018U) /**< \brief (CATB) Threshold Register */ \r
+#define REG_CATB_PINSEL           REG_ACCESS(RwReg  , 0x4007001CU) /**< \brief (CATB) Pin Selection Register */ \r
+#define REG_CATB_DMA              REG_ACCESS(RwReg  , 0x40070020U) /**< \brief (CATB) Direct Memory Access Register */ \r
+#define REG_CATB_ISR              REG_ACCESS(RoReg  , 0x40070024U) /**< \brief (CATB) Interrupt Status Register */ \r
+#define REG_CATB_IER              REG_ACCESS(WoReg  , 0x40070028U) /**< \brief (CATB) Interrupt Enable Register */ \r
+#define REG_CATB_IDR              REG_ACCESS(WoReg  , 0x4007002CU) /**< \brief (CATB) Interrupt Disable Register */ \r
+#define REG_CATB_IMR              REG_ACCESS(RoReg  , 0x40070030U) /**< \brief (CATB) Interrupt Mask Register */ \r
+#define REG_CATB_SCR              REG_ACCESS(WoReg  , 0x40070034U) /**< \brief (CATB) Status Clear Register */ \r
+#define REG_CATB_INTCH0           REG_ACCESS(RoReg  , 0x40070040U) /**< \brief (CATB) In-Touch Status Register 0 0 */\r
+#define REG_CATB_INTCHCLR0        REG_ACCESS(WoReg  , 0x40070050U) /**< \brief (CATB) In-Touch Status Clear Register 0 0 */\r
+#define REG_CATB_OUTTCH0          REG_ACCESS(RoReg  , 0x40070060U) /**< \brief (CATB) Out-of-Touch Status Register 0 0 */\r
+#define REG_CATB_OUTTCHCLR0       REG_ACCESS(WoReg  , 0x40070070U) /**< \brief (CATB) Out-of-Touch Status Clear Register 0 0 */\r
+#define REG_CATB_PARAMETER        REG_ACCESS(RoReg  , 0x400700F8U) /**< \brief (CATB) Parameter Register */ \r
+#define REG_CATB_VERSION          REG_ACCESS(RoReg  , 0x400700FCU) /**< \brief (CATB) Version Register */ \r
+/* ========== Register definition for TWIM2 peripheral ========== */\r
+#define REG_TWIM2_CR              REG_ACCESS(WoReg  , 0x40078000U) /**< \brief (TWIM2) Control Register */ \r
+#define REG_TWIM2_CWGR            REG_ACCESS(RwReg  , 0x40078004U) /**< \brief (TWIM2) Clock Waveform Generator Register */ \r
+#define REG_TWIM2_SMBTR           REG_ACCESS(RwReg  , 0x40078008U) /**< \brief (TWIM2) SMBus Timing Register */ \r
+#define REG_TWIM2_CMDR            REG_ACCESS(RwReg  , 0x4007800CU) /**< \brief (TWIM2) Command Register */ \r
+#define REG_TWIM2_NCMDR           REG_ACCESS(RwReg  , 0x40078010U) /**< \brief (TWIM2) Next Command Register */ \r
+#define REG_TWIM2_RHR             REG_ACCESS(RoReg  , 0x40078014U) /**< \brief (TWIM2) Receive Holding Register */ \r
+#define REG_TWIM2_THR             REG_ACCESS(WoReg  , 0x40078018U) /**< \brief (TWIM2) Transmit Holding Register */ \r
+#define REG_TWIM2_SR              REG_ACCESS(RoReg  , 0x4007801CU) /**< \brief (TWIM2) Status Register */ \r
+#define REG_TWIM2_IER             REG_ACCESS(WoReg  , 0x40078020U) /**< \brief (TWIM2) Interrupt Enable Register */ \r
+#define REG_TWIM2_IDR             REG_ACCESS(WoReg  , 0x40078024U) /**< \brief (TWIM2) Interrupt Disable Register */ \r
+#define REG_TWIM2_IMR             REG_ACCESS(RoReg  , 0x40078028U) /**< \brief (TWIM2) Interrupt Mask Register */ \r
+#define REG_TWIM2_SCR             REG_ACCESS(WoReg  , 0x4007802CU) /**< \brief (TWIM2) Status Clear Register */ \r
+#define REG_TWIM2_PR              REG_ACCESS(RoReg  , 0x40078030U) /**< \brief (TWIM2) Parameter Register */ \r
+#define REG_TWIM2_VR              REG_ACCESS(RoReg  , 0x40078034U) /**< \brief (TWIM2) Version Register */ \r
+#define REG_TWIM2_HSCWGR          REG_ACCESS(RwReg  , 0x40078038U) /**< \brief (TWIM2) HS-mode Clock Waveform Generator */ \r
+#define REG_TWIM2_SRR             REG_ACCESS(RwReg  , 0x4007803CU) /**< \brief (TWIM2) Slew Rate Register */ \r
+#define REG_TWIM2_HSSRR           REG_ACCESS(RwReg  , 0x40078040U) /**< \brief (TWIM2) HS-mode Slew Rate Register */ \r
+/* ========== Register definition for TWIM3 peripheral ========== */\r
+#define REG_TWIM3_CR              REG_ACCESS(WoReg  , 0x4007C000U) /**< \brief (TWIM3) Control Register */ \r
+#define REG_TWIM3_CWGR            REG_ACCESS(RwReg  , 0x4007C004U) /**< \brief (TWIM3) Clock Waveform Generator Register */ \r
+#define REG_TWIM3_SMBTR           REG_ACCESS(RwReg  , 0x4007C008U) /**< \brief (TWIM3) SMBus Timing Register */ \r
+#define REG_TWIM3_CMDR            REG_ACCESS(RwReg  , 0x4007C00CU) /**< \brief (TWIM3) Command Register */ \r
+#define REG_TWIM3_NCMDR           REG_ACCESS(RwReg  , 0x4007C010U) /**< \brief (TWIM3) Next Command Register */ \r
+#define REG_TWIM3_RHR             REG_ACCESS(RoReg  , 0x4007C014U) /**< \brief (TWIM3) Receive Holding Register */ \r
+#define REG_TWIM3_THR             REG_ACCESS(WoReg  , 0x4007C018U) /**< \brief (TWIM3) Transmit Holding Register */ \r
+#define REG_TWIM3_SR              REG_ACCESS(RoReg  , 0x4007C01CU) /**< \brief (TWIM3) Status Register */ \r
+#define REG_TWIM3_IER             REG_ACCESS(WoReg  , 0x4007C020U) /**< \brief (TWIM3) Interrupt Enable Register */ \r
+#define REG_TWIM3_IDR             REG_ACCESS(WoReg  , 0x4007C024U) /**< \brief (TWIM3) Interrupt Disable Register */ \r
+#define REG_TWIM3_IMR             REG_ACCESS(RoReg  , 0x4007C028U) /**< \brief (TWIM3) Interrupt Mask Register */ \r
+#define REG_TWIM3_SCR             REG_ACCESS(WoReg  , 0x4007C02CU) /**< \brief (TWIM3) Status Clear Register */ \r
+#define REG_TWIM3_PR              REG_ACCESS(RoReg  , 0x4007C030U) /**< \brief (TWIM3) Parameter Register */ \r
+#define REG_TWIM3_VR              REG_ACCESS(RoReg  , 0x4007C034U) /**< \brief (TWIM3) Version Register */ \r
+#define REG_TWIM3_HSCWGR          REG_ACCESS(RwReg  , 0x4007C038U) /**< \brief (TWIM3) HS-mode Clock Waveform Generator */ \r
+#define REG_TWIM3_SRR             REG_ACCESS(RwReg  , 0x4007C03CU) /**< \brief (TWIM3) Slew Rate Register */ \r
+#define REG_TWIM3_HSSRR           REG_ACCESS(RwReg  , 0x4007C040U) /**< \brief (TWIM3) HS-mode Slew Rate Register */ \r
+/* ========== Register definition for LCDCA peripheral ========== */\r
+#define REG_LCDCA_CR              REG_ACCESS(WoReg  , 0x40080000U) /**< \brief (LCDCA) Control Register */ \r
+#define REG_LCDCA_CFG             REG_ACCESS(RwReg  , 0x40080004U) /**< \brief (LCDCA) Configuration Register */ \r
+#define REG_LCDCA_TIM             REG_ACCESS(RwReg  , 0x40080008U) /**< \brief (LCDCA) Timing Register */ \r
+#define REG_LCDCA_SR              REG_ACCESS(RoReg  , 0x4008000CU) /**< \brief (LCDCA) Status Register */ \r
+#define REG_LCDCA_SCR             REG_ACCESS(WoReg  , 0x40080010U) /**< \brief (LCDCA) Status Clear Register */ \r
+#define REG_LCDCA_DRL0            REG_ACCESS(RwReg  , 0x40080014U) /**< \brief (LCDCA) Data Register Low 0 */ \r
+#define REG_LCDCA_DRH0            REG_ACCESS(RwReg  , 0x40080018U) /**< \brief (LCDCA) Data Register High 0 */ \r
+#define REG_LCDCA_DRL1            REG_ACCESS(RwReg  , 0x4008001CU) /**< \brief (LCDCA) Data Register Low 1 */ \r
+#define REG_LCDCA_DRH1            REG_ACCESS(RwReg  , 0x40080020U) /**< \brief (LCDCA) Data Register High 1 */ \r
+#define REG_LCDCA_DRL2            REG_ACCESS(RwReg  , 0x40080024U) /**< \brief (LCDCA) Data Register Low 2 */ \r
+#define REG_LCDCA_DRH2            REG_ACCESS(RwReg  , 0x40080028U) /**< \brief (LCDCA) Data Register High 2 */ \r
+#define REG_LCDCA_DRL3            REG_ACCESS(RwReg  , 0x4008002CU) /**< \brief (LCDCA) Data Register Low 3 */ \r
+#define REG_LCDCA_DRH3            REG_ACCESS(RwReg  , 0x40080030U) /**< \brief (LCDCA) Data Register High 3 */ \r
+#define REG_LCDCA_IADR            REG_ACCESS(WoReg  , 0x40080034U) /**< \brief (LCDCA) Indirect Access Data Register */ \r
+#define REG_LCDCA_BCFG            REG_ACCESS(RwReg  , 0x40080038U) /**< \brief (LCDCA) Blink Configuration Register */ \r
+#define REG_LCDCA_CSRCFG          REG_ACCESS(RwReg  , 0x4008003CU) /**< \brief (LCDCA) Circular Shift Register Configuration */ \r
+#define REG_LCDCA_CMCFG           REG_ACCESS(RwReg  , 0x40080040U) /**< \brief (LCDCA) Character Mapping Configuration Register */ \r
+#define REG_LCDCA_CMDR            REG_ACCESS(WoReg  , 0x40080044U) /**< \brief (LCDCA) Character Mapping Data Register */ \r
+#define REG_LCDCA_ACMCFG          REG_ACCESS(RwReg  , 0x40080048U) /**< \brief (LCDCA) Automated Character Mapping Configuration Register */ \r
+#define REG_LCDCA_ACMDR           REG_ACCESS(WoReg  , 0x4008004CU) /**< \brief (LCDCA) Automated Character Mapping Data Register */ \r
+#define REG_LCDCA_ABMCFG          REG_ACCESS(RwReg  , 0x40080050U) /**< \brief (LCDCA) Automated Bit Mapping Configuration Register */ \r
+#define REG_LCDCA_ABMDR           REG_ACCESS(WoReg  , 0x40080054U) /**< \brief (LCDCA) Automated Bit Mapping Data Register */ \r
+#define REG_LCDCA_IER             REG_ACCESS(WoReg  , 0x40080058U) /**< \brief (LCDCA) Interrupt Enable Register */ \r
+#define REG_LCDCA_IDR             REG_ACCESS(WoReg  , 0x4008005CU) /**< \brief (LCDCA) Interrupt Disable Register */ \r
+#define REG_LCDCA_IMR             REG_ACCESS(RoReg  , 0x40080060U) /**< \brief (LCDCA) Interrupt Mask Register */ \r
+#define REG_LCDCA_VERSION         REG_ACCESS(RoReg  , 0x40080064U) /**< \brief (LCDCA) Version Register */ \r
+/* ========== Register definition for HFLASHC peripheral ========== */\r
+#define REG_HFLASHC_FCR           REG_ACCESS(RwReg  , 0x400A0000U) /**< \brief (HFLASHC) Flash Controller Control Register */ \r
+#define REG_HFLASHC_FCMD          REG_ACCESS(RwReg  , 0x400A0004U) /**< \brief (HFLASHC) Flash Controller Command Register */ \r
+#define REG_HFLASHC_FSR           REG_ACCESS(RwReg  , 0x400A0008U) /**< \brief (HFLASHC) Flash Controller Status Register */ \r
+#define REG_HFLASHC_FPR           REG_ACCESS(RoReg  , 0x400A000CU) /**< \brief (HFLASHC) Flash Controller Parameter Register */ \r
+#define REG_HFLASHC_VERSION       REG_ACCESS(RoReg  , 0x400A0010U) /**< \brief (HFLASHC) Flash Controller Version Register */ \r
+#define REG_HFLASHC_FGPFRHI       REG_ACCESS(RwReg  , 0x400A0014U) /**< \brief (HFLASHC) Flash Controller General Purpose Fuse Register High */ \r
+#define REG_HFLASHC_FGPFRLO       REG_ACCESS(RwReg  , 0x400A0018U) /**< \brief (HFLASHC) Flash Controller General Purpose Fuse Register Low */ \r
+/* ========== Register definition for HCACHE peripheral ========== */\r
+#define REG_HCACHE_CTRL           REG_ACCESS(WoReg  , 0x400A0408U) /**< \brief (HCACHE) Control Register */ \r
+#define REG_HCACHE_SR             REG_ACCESS(RwReg  , 0x400A040CU) /**< \brief (HCACHE) Status Register */ \r
+#define REG_HCACHE_MAINT0         REG_ACCESS(WoReg  , 0x400A0420U) /**< \brief (HCACHE) Maintenance Register 0 */ \r
+#define REG_HCACHE_MAINT1         REG_ACCESS(WoReg  , 0x400A0424U) /**< \brief (HCACHE) Maintenance Register 1 */ \r
+#define REG_HCACHE_MCFG           REG_ACCESS(RwReg  , 0x400A0428U) /**< \brief (HCACHE) Monitor Configuration Register */ \r
+#define REG_HCACHE_MEN            REG_ACCESS(RwReg  , 0x400A042CU) /**< \brief (HCACHE) Monitor Enable Register */ \r
+#define REG_HCACHE_MCTRL          REG_ACCESS(WoReg  , 0x400A0430U) /**< \brief (HCACHE) Monitor Control Register */ \r
+#define REG_HCACHE_MSR            REG_ACCESS(RoReg  , 0x400A0434U) /**< \brief (HCACHE) Monitor Status Register */ \r
+#define REG_HCACHE_VERSION        REG_ACCESS(RoReg  , 0x400A04FCU) /**< \brief (HCACHE) Version Register */ \r
+/* ========== Register definition for HMATRIX peripheral ========== */\r
+#define REG_HMATRIX_MCFG0         REG_ACCESS(RwReg  , 0x400A1000U) /**< \brief (HMATRIX) Master Configuration Register 0 0 */\r
+#define REG_HMATRIX_MCFG1         REG_ACCESS(RwReg  , 0x400A1004U) /**< \brief (HMATRIX) Master Configuration Register 0 1 */\r
+#define REG_HMATRIX_MCFG2         REG_ACCESS(RwReg  , 0x400A1008U) /**< \brief (HMATRIX) Master Configuration Register 0 2 */\r
+#define REG_HMATRIX_MCFG3         REG_ACCESS(RwReg  , 0x400A100CU) /**< \brief (HMATRIX) Master Configuration Register 0 3 */\r
+#define REG_HMATRIX_MCFG4         REG_ACCESS(RwReg  , 0x400A1010U) /**< \brief (HMATRIX) Master Configuration Register 0 4 */\r
+#define REG_HMATRIX_MCFG5         REG_ACCESS(RwReg  , 0x400A1014U) /**< \brief (HMATRIX) Master Configuration Register 0 5 */\r
+#define REG_HMATRIX_MCFG6         REG_ACCESS(RwReg  , 0x400A1018U) /**< \brief (HMATRIX) Master Configuration Register 0 6 */\r
+#define REG_HMATRIX_MCFG7         REG_ACCESS(RwReg  , 0x400A101CU) /**< \brief (HMATRIX) Master Configuration Register 0 7 */\r
+#define REG_HMATRIX_MCFG8         REG_ACCESS(RwReg  , 0x400A1020U) /**< \brief (HMATRIX) Master Configuration Register 0 8 */\r
+#define REG_HMATRIX_MCFG9         REG_ACCESS(RwReg  , 0x400A1024U) /**< \brief (HMATRIX) Master Configuration Register 0 9 */\r
+#define REG_HMATRIX_MCFG10        REG_ACCESS(RwReg  , 0x400A1028U) /**< \brief (HMATRIX) Master Configuration Register 0 10 */\r
+#define REG_HMATRIX_MCFG11        REG_ACCESS(RwReg  , 0x400A102CU) /**< \brief (HMATRIX) Master Configuration Register 0 11 */\r
+#define REG_HMATRIX_MCFG12        REG_ACCESS(RwReg  , 0x400A1030U) /**< \brief (HMATRIX) Master Configuration Register 0 12 */\r
+#define REG_HMATRIX_MCFG13        REG_ACCESS(RwReg  , 0x400A1034U) /**< \brief (HMATRIX) Master Configuration Register 0 13 */\r
+#define REG_HMATRIX_MCFG14        REG_ACCESS(RwReg  , 0x400A1038U) /**< \brief (HMATRIX) Master Configuration Register 0 14 */\r
+#define REG_HMATRIX_MCFG15        REG_ACCESS(RwReg  , 0x400A103CU) /**< \brief (HMATRIX) Master Configuration Register 0 15 */\r
+#define REG_HMATRIX_SCFG0         REG_ACCESS(RwReg  , 0x400A1040U) /**< \brief (HMATRIX) Slave Configuration Register 0 0 */\r
+#define REG_HMATRIX_SCFG1         REG_ACCESS(RwReg  , 0x400A1044U) /**< \brief (HMATRIX) Slave Configuration Register 0 1 */\r
+#define REG_HMATRIX_SCFG2         REG_ACCESS(RwReg  , 0x400A1048U) /**< \brief (HMATRIX) Slave Configuration Register 0 2 */\r
+#define REG_HMATRIX_SCFG3         REG_ACCESS(RwReg  , 0x400A104CU) /**< \brief (HMATRIX) Slave Configuration Register 0 3 */\r
+#define REG_HMATRIX_SCFG4         REG_ACCESS(RwReg  , 0x400A1050U) /**< \brief (HMATRIX) Slave Configuration Register 0 4 */\r
+#define REG_HMATRIX_SCFG5         REG_ACCESS(RwReg  , 0x400A1054U) /**< \brief (HMATRIX) Slave Configuration Register 0 5 */\r
+#define REG_HMATRIX_SCFG6         REG_ACCESS(RwReg  , 0x400A1058U) /**< \brief (HMATRIX) Slave Configuration Register 0 6 */\r
+#define REG_HMATRIX_SCFG7         REG_ACCESS(RwReg  , 0x400A105CU) /**< \brief (HMATRIX) Slave Configuration Register 0 7 */\r
+#define REG_HMATRIX_SCFG8         REG_ACCESS(RwReg  , 0x400A1060U) /**< \brief (HMATRIX) Slave Configuration Register 0 8 */\r
+#define REG_HMATRIX_SCFG9         REG_ACCESS(RwReg  , 0x400A1064U) /**< \brief (HMATRIX) Slave Configuration Register 0 9 */\r
+#define REG_HMATRIX_SCFG10        REG_ACCESS(RwReg  , 0x400A1068U) /**< \brief (HMATRIX) Slave Configuration Register 0 10 */\r
+#define REG_HMATRIX_SCFG11        REG_ACCESS(RwReg  , 0x400A106CU) /**< \brief (HMATRIX) Slave Configuration Register 0 11 */\r
+#define REG_HMATRIX_SCFG12        REG_ACCESS(RwReg  , 0x400A1070U) /**< \brief (HMATRIX) Slave Configuration Register 0 12 */\r
+#define REG_HMATRIX_SCFG13        REG_ACCESS(RwReg  , 0x400A1074U) /**< \brief (HMATRIX) Slave Configuration Register 0 13 */\r
+#define REG_HMATRIX_SCFG14        REG_ACCESS(RwReg  , 0x400A1078U) /**< \brief (HMATRIX) Slave Configuration Register 0 14 */\r
+#define REG_HMATRIX_SCFG15        REG_ACCESS(RwReg  , 0x400A107CU) /**< \brief (HMATRIX) Slave Configuration Register 0 15 */\r
+#define REG_HMATRIX_PRAS0         REG_ACCESS(RwReg  , 0x400A1080U) /**< \brief (HMATRIX) Priority Register A for Slave 0 0 */\r
+#define REG_HMATRIX_PRBS0         REG_ACCESS(RwReg  , 0x400A1084U) /**< \brief (HMATRIX) Priority Register B for Slave 0 0 */\r
+#define REG_HMATRIX_PRAS1         REG_ACCESS(RwReg  , 0x400A1088U) /**< \brief (HMATRIX) Priority Register A for Slave 0 1 */\r
+#define REG_HMATRIX_PRBS1         REG_ACCESS(RwReg  , 0x400A108CU) /**< \brief (HMATRIX) Priority Register B for Slave 0 1 */\r
+#define REG_HMATRIX_PRAS2         REG_ACCESS(RwReg  , 0x400A1090U) /**< \brief (HMATRIX) Priority Register A for Slave 0 2 */\r
+#define REG_HMATRIX_PRBS2         REG_ACCESS(RwReg  , 0x400A1094U) /**< \brief (HMATRIX) Priority Register B for Slave 0 2 */\r
+#define REG_HMATRIX_PRAS3         REG_ACCESS(RwReg  , 0x400A1098U) /**< \brief (HMATRIX) Priority Register A for Slave 0 3 */\r
+#define REG_HMATRIX_PRBS3         REG_ACCESS(RwReg  , 0x400A109CU) /**< \brief (HMATRIX) Priority Register B for Slave 0 3 */\r
+#define REG_HMATRIX_PRAS4         REG_ACCESS(RwReg  , 0x400A10A0U) /**< \brief (HMATRIX) Priority Register A for Slave 0 4 */\r
+#define REG_HMATRIX_PRBS4         REG_ACCESS(RwReg  , 0x400A10A4U) /**< \brief (HMATRIX) Priority Register B for Slave 0 4 */\r
+#define REG_HMATRIX_PRAS5         REG_ACCESS(RwReg  , 0x400A10A8U) /**< \brief (HMATRIX) Priority Register A for Slave 0 5 */\r
+#define REG_HMATRIX_PRBS5         REG_ACCESS(RwReg  , 0x400A10ACU) /**< \brief (HMATRIX) Priority Register B for Slave 0 5 */\r
+#define REG_HMATRIX_PRAS6         REG_ACCESS(RwReg  , 0x400A10B0U) /**< \brief (HMATRIX) Priority Register A for Slave 0 6 */\r
+#define REG_HMATRIX_PRBS6         REG_ACCESS(RwReg  , 0x400A10B4U) /**< \brief (HMATRIX) Priority Register B for Slave 0 6 */\r
+#define REG_HMATRIX_PRAS7         REG_ACCESS(RwReg  , 0x400A10B8U) /**< \brief (HMATRIX) Priority Register A for Slave 0 7 */\r
+#define REG_HMATRIX_PRBS7         REG_ACCESS(RwReg  , 0x400A10BCU) /**< \brief (HMATRIX) Priority Register B for Slave 0 7 */\r
+#define REG_HMATRIX_PRAS8         REG_ACCESS(RwReg  , 0x400A10C0U) /**< \brief (HMATRIX) Priority Register A for Slave 0 8 */\r
+#define REG_HMATRIX_PRBS8         REG_ACCESS(RwReg  , 0x400A10C4U) /**< \brief (HMATRIX) Priority Register B for Slave 0 8 */\r
+#define REG_HMATRIX_PRAS9         REG_ACCESS(RwReg  , 0x400A10C8U) /**< \brief (HMATRIX) Priority Register A for Slave 0 9 */\r
+#define REG_HMATRIX_PRBS9         REG_ACCESS(RwReg  , 0x400A10CCU) /**< \brief (HMATRIX) Priority Register B for Slave 0 9 */\r
+#define REG_HMATRIX_PRAS10        REG_ACCESS(RwReg  , 0x400A10D0U) /**< \brief (HMATRIX) Priority Register A for Slave 0 10 */\r
+#define REG_HMATRIX_PRBS10        REG_ACCESS(RwReg  , 0x400A10D4U) /**< \brief (HMATRIX) Priority Register B for Slave 0 10 */\r
+#define REG_HMATRIX_PRAS11        REG_ACCESS(RwReg  , 0x400A10D8U) /**< \brief (HMATRIX) Priority Register A for Slave 0 11 */\r
+#define REG_HMATRIX_PRBS11        REG_ACCESS(RwReg  , 0x400A10DCU) /**< \brief (HMATRIX) Priority Register B for Slave 0 11 */\r
+#define REG_HMATRIX_PRAS12        REG_ACCESS(RwReg  , 0x400A10E0U) /**< \brief (HMATRIX) Priority Register A for Slave 0 12 */\r
+#define REG_HMATRIX_PRBS12        REG_ACCESS(RwReg  , 0x400A10E4U) /**< \brief (HMATRIX) Priority Register B for Slave 0 12 */\r
+#define REG_HMATRIX_PRAS13        REG_ACCESS(RwReg  , 0x400A10E8U) /**< \brief (HMATRIX) Priority Register A for Slave 0 13 */\r
+#define REG_HMATRIX_PRBS13        REG_ACCESS(RwReg  , 0x400A10ECU) /**< \brief (HMATRIX) Priority Register B for Slave 0 13 */\r
+#define REG_HMATRIX_PRAS14        REG_ACCESS(RwReg  , 0x400A10F0U) /**< \brief (HMATRIX) Priority Register A for Slave 0 14 */\r
+#define REG_HMATRIX_PRBS14        REG_ACCESS(RwReg  , 0x400A10F4U) /**< \brief (HMATRIX) Priority Register B for Slave 0 14 */\r
+#define REG_HMATRIX_PRAS15        REG_ACCESS(RwReg  , 0x400A10F8U) /**< \brief (HMATRIX) Priority Register A for Slave 0 15 */\r
+#define REG_HMATRIX_PRBS15        REG_ACCESS(RwReg  , 0x400A10FCU) /**< \brief (HMATRIX) Priority Register B for Slave 0 15 */\r
+#define REG_HMATRIX_MRCR          REG_ACCESS(RwReg  , 0x400A1100U) /**< \brief (HMATRIX) Master Remap Control Register */ \r
+#define REG_HMATRIX_SFR0          REG_ACCESS(RwReg  , 0x400A1110U) /**< \brief (HMATRIX) Special Function Register 0 0 */\r
+#define REG_HMATRIX_SFR1          REG_ACCESS(RwReg  , 0x400A1114U) /**< \brief (HMATRIX) Special Function Register 0 1 */\r
+#define REG_HMATRIX_SFR2          REG_ACCESS(RwReg  , 0x400A1118U) /**< \brief (HMATRIX) Special Function Register 0 2 */\r
+#define REG_HMATRIX_SFR3          REG_ACCESS(RwReg  , 0x400A111CU) /**< \brief (HMATRIX) Special Function Register 0 3 */\r
+#define REG_HMATRIX_SFR4          REG_ACCESS(RwReg  , 0x400A1120U) /**< \brief (HMATRIX) Special Function Register 0 4 */\r
+#define REG_HMATRIX_SFR5          REG_ACCESS(RwReg  , 0x400A1124U) /**< \brief (HMATRIX) Special Function Register 0 5 */\r
+#define REG_HMATRIX_SFR6          REG_ACCESS(RwReg  , 0x400A1128U) /**< \brief (HMATRIX) Special Function Register 0 6 */\r
+#define REG_HMATRIX_SFR7          REG_ACCESS(RwReg  , 0x400A112CU) /**< \brief (HMATRIX) Special Function Register 0 7 */\r
+#define REG_HMATRIX_SFR8          REG_ACCESS(RwReg  , 0x400A1130U) /**< \brief (HMATRIX) Special Function Register 0 8 */\r
+#define REG_HMATRIX_SFR9          REG_ACCESS(RwReg  , 0x400A1134U) /**< \brief (HMATRIX) Special Function Register 0 9 */\r
+#define REG_HMATRIX_SFR10         REG_ACCESS(RwReg  , 0x400A1138U) /**< \brief (HMATRIX) Special Function Register 0 10 */\r
+#define REG_HMATRIX_SFR11         REG_ACCESS(RwReg  , 0x400A113CU) /**< \brief (HMATRIX) Special Function Register 0 11 */\r
+#define REG_HMATRIX_SFR12         REG_ACCESS(RwReg  , 0x400A1140U) /**< \brief (HMATRIX) Special Function Register 0 12 */\r
+#define REG_HMATRIX_SFR13         REG_ACCESS(RwReg  , 0x400A1144U) /**< \brief (HMATRIX) Special Function Register 0 13 */\r
+#define REG_HMATRIX_SFR14         REG_ACCESS(RwReg  , 0x400A1148U) /**< \brief (HMATRIX) Special Function Register 0 14 */\r
+#define REG_HMATRIX_SFR15         REG_ACCESS(RwReg  , 0x400A114CU) /**< \brief (HMATRIX) Special Function Register 0 15 */\r
+/* ========== Register definition for PDCA peripheral ========== */\r
+#define REG_PDCA_MAR0             REG_ACCESS(RwReg  , 0x400A2000U) /**< \brief (PDCA) Memory Address Register 0 */\r
+#define REG_PDCA_PSR0             REG_ACCESS(RwReg  , 0x400A2004U) /**< \brief (PDCA) Peripheral Select Register 0 */\r
+#define REG_PDCA_TCR0             REG_ACCESS(RwReg  , 0x400A2008U) /**< \brief (PDCA) Transfer Counter Register 0 */\r
+#define REG_PDCA_MARR0            REG_ACCESS(RwReg  , 0x400A200CU) /**< \brief (PDCA) Memory Address Reload Register 0 */\r
+#define REG_PDCA_TCRR0            REG_ACCESS(RwReg  , 0x400A2010U) /**< \brief (PDCA) Transfer Counter Reload Register 0 */\r
+#define REG_PDCA_CR0              REG_ACCESS(WoReg  , 0x400A2014U) /**< \brief (PDCA) Control Register 0 */\r
+#define REG_PDCA_MR0              REG_ACCESS(RwReg  , 0x400A2018U) /**< \brief (PDCA) Mode Register 0 */\r
+#define REG_PDCA_SR0              REG_ACCESS(RoReg  , 0x400A201CU) /**< \brief (PDCA) Status Register 0 */\r
+#define REG_PDCA_IER0             REG_ACCESS(WoReg  , 0x400A2020U) /**< \brief (PDCA) Interrupt Enable Register 0 */\r
+#define REG_PDCA_IDR0             REG_ACCESS(WoReg  , 0x400A2024U) /**< \brief (PDCA) Interrupt Disable Register 0 */\r
+#define REG_PDCA_IMR0             REG_ACCESS(RoReg  , 0x400A2028U) /**< \brief (PDCA) Interrupt Mask Register 0 */\r
+#define REG_PDCA_ISR0             REG_ACCESS(RoReg  , 0x400A202CU) /**< \brief (PDCA) Interrupt Status Register 0 */\r
+#define REG_PDCA_MAR1             REG_ACCESS(RwReg  , 0x400A2040U) /**< \brief (PDCA) Memory Address Register 1 */\r
+#define REG_PDCA_PSR1             REG_ACCESS(RwReg  , 0x400A2044U) /**< \brief (PDCA) Peripheral Select Register 1 */\r
+#define REG_PDCA_TCR1             REG_ACCESS(RwReg  , 0x400A2048U) /**< \brief (PDCA) Transfer Counter Register 1 */\r
+#define REG_PDCA_MARR1            REG_ACCESS(RwReg  , 0x400A204CU) /**< \brief (PDCA) Memory Address Reload Register 1 */\r
+#define REG_PDCA_TCRR1            REG_ACCESS(RwReg  , 0x400A2050U) /**< \brief (PDCA) Transfer Counter Reload Register 1 */\r
+#define REG_PDCA_CR1              REG_ACCESS(WoReg  , 0x400A2054U) /**< \brief (PDCA) Control Register 1 */\r
+#define REG_PDCA_MR1              REG_ACCESS(RwReg  , 0x400A2058U) /**< \brief (PDCA) Mode Register 1 */\r
+#define REG_PDCA_SR1              REG_ACCESS(RoReg  , 0x400A205CU) /**< \brief (PDCA) Status Register 1 */\r
+#define REG_PDCA_IER1             REG_ACCESS(WoReg  , 0x400A2060U) /**< \brief (PDCA) Interrupt Enable Register 1 */\r
+#define REG_PDCA_IDR1             REG_ACCESS(WoReg  , 0x400A2064U) /**< \brief (PDCA) Interrupt Disable Register 1 */\r
+#define REG_PDCA_IMR1             REG_ACCESS(RoReg  , 0x400A2068U) /**< \brief (PDCA) Interrupt Mask Register 1 */\r
+#define REG_PDCA_ISR1             REG_ACCESS(RoReg  , 0x400A206CU) /**< \brief (PDCA) Interrupt Status Register 1 */\r
+#define REG_PDCA_MAR2             REG_ACCESS(RwReg  , 0x400A2080U) /**< \brief (PDCA) Memory Address Register 2 */\r
+#define REG_PDCA_PSR2             REG_ACCESS(RwReg  , 0x400A2084U) /**< \brief (PDCA) Peripheral Select Register 2 */\r
+#define REG_PDCA_TCR2             REG_ACCESS(RwReg  , 0x400A2088U) /**< \brief (PDCA) Transfer Counter Register 2 */\r
+#define REG_PDCA_MARR2            REG_ACCESS(RwReg  , 0x400A208CU) /**< \brief (PDCA) Memory Address Reload Register 2 */\r
+#define REG_PDCA_TCRR2            REG_ACCESS(RwReg  , 0x400A2090U) /**< \brief (PDCA) Transfer Counter Reload Register 2 */\r
+#define REG_PDCA_CR2              REG_ACCESS(WoReg  , 0x400A2094U) /**< \brief (PDCA) Control Register 2 */\r
+#define REG_PDCA_MR2              REG_ACCESS(RwReg  , 0x400A2098U) /**< \brief (PDCA) Mode Register 2 */\r
+#define REG_PDCA_SR2              REG_ACCESS(RoReg  , 0x400A209CU) /**< \brief (PDCA) Status Register 2 */\r
+#define REG_PDCA_IER2             REG_ACCESS(WoReg  , 0x400A20A0U) /**< \brief (PDCA) Interrupt Enable Register 2 */\r
+#define REG_PDCA_IDR2             REG_ACCESS(WoReg  , 0x400A20A4U) /**< \brief (PDCA) Interrupt Disable Register 2 */\r
+#define REG_PDCA_IMR2             REG_ACCESS(RoReg  , 0x400A20A8U) /**< \brief (PDCA) Interrupt Mask Register 2 */\r
+#define REG_PDCA_ISR2             REG_ACCESS(RoReg  , 0x400A20ACU) /**< \brief (PDCA) Interrupt Status Register 2 */\r
+#define REG_PDCA_MAR3             REG_ACCESS(RwReg  , 0x400A20C0U) /**< \brief (PDCA) Memory Address Register 3 */\r
+#define REG_PDCA_PSR3             REG_ACCESS(RwReg  , 0x400A20C4U) /**< \brief (PDCA) Peripheral Select Register 3 */\r
+#define REG_PDCA_TCR3             REG_ACCESS(RwReg  , 0x400A20C8U) /**< \brief (PDCA) Transfer Counter Register 3 */\r
+#define REG_PDCA_MARR3            REG_ACCESS(RwReg  , 0x400A20CCU) /**< \brief (PDCA) Memory Address Reload Register 3 */\r
+#define REG_PDCA_TCRR3            REG_ACCESS(RwReg  , 0x400A20D0U) /**< \brief (PDCA) Transfer Counter Reload Register 3 */\r
+#define REG_PDCA_CR3              REG_ACCESS(WoReg  , 0x400A20D4U) /**< \brief (PDCA) Control Register 3 */\r
+#define REG_PDCA_MR3              REG_ACCESS(RwReg  , 0x400A20D8U) /**< \brief (PDCA) Mode Register 3 */\r
+#define REG_PDCA_SR3              REG_ACCESS(RoReg  , 0x400A20DCU) /**< \brief (PDCA) Status Register 3 */\r
+#define REG_PDCA_IER3             REG_ACCESS(WoReg  , 0x400A20E0U) /**< \brief (PDCA) Interrupt Enable Register 3 */\r
+#define REG_PDCA_IDR3             REG_ACCESS(WoReg  , 0x400A20E4U) /**< \brief (PDCA) Interrupt Disable Register 3 */\r
+#define REG_PDCA_IMR3             REG_ACCESS(RoReg  , 0x400A20E8U) /**< \brief (PDCA) Interrupt Mask Register 3 */\r
+#define REG_PDCA_ISR3             REG_ACCESS(RoReg  , 0x400A20ECU) /**< \brief (PDCA) Interrupt Status Register 3 */\r
+#define REG_PDCA_MAR4             REG_ACCESS(RwReg  , 0x400A2100U) /**< \brief (PDCA) Memory Address Register 4 */\r
+#define REG_PDCA_PSR4             REG_ACCESS(RwReg  , 0x400A2104U) /**< \brief (PDCA) Peripheral Select Register 4 */\r
+#define REG_PDCA_TCR4             REG_ACCESS(RwReg  , 0x400A2108U) /**< \brief (PDCA) Transfer Counter Register 4 */\r
+#define REG_PDCA_MARR4            REG_ACCESS(RwReg  , 0x400A210CU) /**< \brief (PDCA) Memory Address Reload Register 4 */\r
+#define REG_PDCA_TCRR4            REG_ACCESS(RwReg  , 0x400A2110U) /**< \brief (PDCA) Transfer Counter Reload Register 4 */\r
+#define REG_PDCA_CR4              REG_ACCESS(WoReg  , 0x400A2114U) /**< \brief (PDCA) Control Register 4 */\r
+#define REG_PDCA_MR4              REG_ACCESS(RwReg  , 0x400A2118U) /**< \brief (PDCA) Mode Register 4 */\r
+#define REG_PDCA_SR4              REG_ACCESS(RoReg  , 0x400A211CU) /**< \brief (PDCA) Status Register 4 */\r
+#define REG_PDCA_IER4             REG_ACCESS(WoReg  , 0x400A2120U) /**< \brief (PDCA) Interrupt Enable Register 4 */\r
+#define REG_PDCA_IDR4             REG_ACCESS(WoReg  , 0x400A2124U) /**< \brief (PDCA) Interrupt Disable Register 4 */\r
+#define REG_PDCA_IMR4             REG_ACCESS(RoReg  , 0x400A2128U) /**< \brief (PDCA) Interrupt Mask Register 4 */\r
+#define REG_PDCA_ISR4             REG_ACCESS(RoReg  , 0x400A212CU) /**< \brief (PDCA) Interrupt Status Register 4 */\r
+#define REG_PDCA_MAR5             REG_ACCESS(RwReg  , 0x400A2140U) /**< \brief (PDCA) Memory Address Register 5 */\r
+#define REG_PDCA_PSR5             REG_ACCESS(RwReg  , 0x400A2144U) /**< \brief (PDCA) Peripheral Select Register 5 */\r
+#define REG_PDCA_TCR5             REG_ACCESS(RwReg  , 0x400A2148U) /**< \brief (PDCA) Transfer Counter Register 5 */\r
+#define REG_PDCA_MARR5            REG_ACCESS(RwReg  , 0x400A214CU) /**< \brief (PDCA) Memory Address Reload Register 5 */\r
+#define REG_PDCA_TCRR5            REG_ACCESS(RwReg  , 0x400A2150U) /**< \brief (PDCA) Transfer Counter Reload Register 5 */\r
+#define REG_PDCA_CR5              REG_ACCESS(WoReg  , 0x400A2154U) /**< \brief (PDCA) Control Register 5 */\r
+#define REG_PDCA_MR5              REG_ACCESS(RwReg  , 0x400A2158U) /**< \brief (PDCA) Mode Register 5 */\r
+#define REG_PDCA_SR5              REG_ACCESS(RoReg  , 0x400A215CU) /**< \brief (PDCA) Status Register 5 */\r
+#define REG_PDCA_IER5             REG_ACCESS(WoReg  , 0x400A2160U) /**< \brief (PDCA) Interrupt Enable Register 5 */\r
+#define REG_PDCA_IDR5             REG_ACCESS(WoReg  , 0x400A2164U) /**< \brief (PDCA) Interrupt Disable Register 5 */\r
+#define REG_PDCA_IMR5             REG_ACCESS(RoReg  , 0x400A2168U) /**< \brief (PDCA) Interrupt Mask Register 5 */\r
+#define REG_PDCA_ISR5             REG_ACCESS(RoReg  , 0x400A216CU) /**< \brief (PDCA) Interrupt Status Register 5 */\r
+#define REG_PDCA_MAR6             REG_ACCESS(RwReg  , 0x400A2180U) /**< \brief (PDCA) Memory Address Register 6 */\r
+#define REG_PDCA_PSR6             REG_ACCESS(RwReg  , 0x400A2184U) /**< \brief (PDCA) Peripheral Select Register 6 */\r
+#define REG_PDCA_TCR6             REG_ACCESS(RwReg  , 0x400A2188U) /**< \brief (PDCA) Transfer Counter Register 6 */\r
+#define REG_PDCA_MARR6            REG_ACCESS(RwReg  , 0x400A218CU) /**< \brief (PDCA) Memory Address Reload Register 6 */\r
+#define REG_PDCA_TCRR6            REG_ACCESS(RwReg  , 0x400A2190U) /**< \brief (PDCA) Transfer Counter Reload Register 6 */\r
+#define REG_PDCA_CR6              REG_ACCESS(WoReg  , 0x400A2194U) /**< \brief (PDCA) Control Register 6 */\r
+#define REG_PDCA_MR6              REG_ACCESS(RwReg  , 0x400A2198U) /**< \brief (PDCA) Mode Register 6 */\r
+#define REG_PDCA_SR6              REG_ACCESS(RoReg  , 0x400A219CU) /**< \brief (PDCA) Status Register 6 */\r
+#define REG_PDCA_IER6             REG_ACCESS(WoReg  , 0x400A21A0U) /**< \brief (PDCA) Interrupt Enable Register 6 */\r
+#define REG_PDCA_IDR6             REG_ACCESS(WoReg  , 0x400A21A4U) /**< \brief (PDCA) Interrupt Disable Register 6 */\r
+#define REG_PDCA_IMR6             REG_ACCESS(RoReg  , 0x400A21A8U) /**< \brief (PDCA) Interrupt Mask Register 6 */\r
+#define REG_PDCA_ISR6             REG_ACCESS(RoReg  , 0x400A21ACU) /**< \brief (PDCA) Interrupt Status Register 6 */\r
+#define REG_PDCA_MAR7             REG_ACCESS(RwReg  , 0x400A21C0U) /**< \brief (PDCA) Memory Address Register 7 */\r
+#define REG_PDCA_PSR7             REG_ACCESS(RwReg  , 0x400A21C4U) /**< \brief (PDCA) Peripheral Select Register 7 */\r
+#define REG_PDCA_TCR7             REG_ACCESS(RwReg  , 0x400A21C8U) /**< \brief (PDCA) Transfer Counter Register 7 */\r
+#define REG_PDCA_MARR7            REG_ACCESS(RwReg  , 0x400A21CCU) /**< \brief (PDCA) Memory Address Reload Register 7 */\r
+#define REG_PDCA_TCRR7            REG_ACCESS(RwReg  , 0x400A21D0U) /**< \brief (PDCA) Transfer Counter Reload Register 7 */\r
+#define REG_PDCA_CR7              REG_ACCESS(WoReg  , 0x400A21D4U) /**< \brief (PDCA) Control Register 7 */\r
+#define REG_PDCA_MR7              REG_ACCESS(RwReg  , 0x400A21D8U) /**< \brief (PDCA) Mode Register 7 */\r
+#define REG_PDCA_SR7              REG_ACCESS(RoReg  , 0x400A21DCU) /**< \brief (PDCA) Status Register 7 */\r
+#define REG_PDCA_IER7             REG_ACCESS(WoReg  , 0x400A21E0U) /**< \brief (PDCA) Interrupt Enable Register 7 */\r
+#define REG_PDCA_IDR7             REG_ACCESS(WoReg  , 0x400A21E4U) /**< \brief (PDCA) Interrupt Disable Register 7 */\r
+#define REG_PDCA_IMR7             REG_ACCESS(RoReg  , 0x400A21E8U) /**< \brief (PDCA) Interrupt Mask Register 7 */\r
+#define REG_PDCA_ISR7             REG_ACCESS(RoReg  , 0x400A21ECU) /**< \brief (PDCA) Interrupt Status Register 7 */\r
+#define REG_PDCA_MAR8             REG_ACCESS(RwReg  , 0x400A2200U) /**< \brief (PDCA) Memory Address Register 8 */\r
+#define REG_PDCA_PSR8             REG_ACCESS(RwReg  , 0x400A2204U) /**< \brief (PDCA) Peripheral Select Register 8 */\r
+#define REG_PDCA_TCR8             REG_ACCESS(RwReg  , 0x400A2208U) /**< \brief (PDCA) Transfer Counter Register 8 */\r
+#define REG_PDCA_MARR8            REG_ACCESS(RwReg  , 0x400A220CU) /**< \brief (PDCA) Memory Address Reload Register 8 */\r
+#define REG_PDCA_TCRR8            REG_ACCESS(RwReg  , 0x400A2210U) /**< \brief (PDCA) Transfer Counter Reload Register 8 */\r
+#define REG_PDCA_CR8              REG_ACCESS(WoReg  , 0x400A2214U) /**< \brief (PDCA) Control Register 8 */\r
+#define REG_PDCA_MR8              REG_ACCESS(RwReg  , 0x400A2218U) /**< \brief (PDCA) Mode Register 8 */\r
+#define REG_PDCA_SR8              REG_ACCESS(RoReg  , 0x400A221CU) /**< \brief (PDCA) Status Register 8 */\r
+#define REG_PDCA_IER8             REG_ACCESS(WoReg  , 0x400A2220U) /**< \brief (PDCA) Interrupt Enable Register 8 */\r
+#define REG_PDCA_IDR8             REG_ACCESS(WoReg  , 0x400A2224U) /**< \brief (PDCA) Interrupt Disable Register 8 */\r
+#define REG_PDCA_IMR8             REG_ACCESS(RoReg  , 0x400A2228U) /**< \brief (PDCA) Interrupt Mask Register 8 */\r
+#define REG_PDCA_ISR8             REG_ACCESS(RoReg  , 0x400A222CU) /**< \brief (PDCA) Interrupt Status Register 8 */\r
+#define REG_PDCA_MAR9             REG_ACCESS(RwReg  , 0x400A2240U) /**< \brief (PDCA) Memory Address Register 9 */\r
+#define REG_PDCA_PSR9             REG_ACCESS(RwReg  , 0x400A2244U) /**< \brief (PDCA) Peripheral Select Register 9 */\r
+#define REG_PDCA_TCR9             REG_ACCESS(RwReg  , 0x400A2248U) /**< \brief (PDCA) Transfer Counter Register 9 */\r
+#define REG_PDCA_MARR9            REG_ACCESS(RwReg  , 0x400A224CU) /**< \brief (PDCA) Memory Address Reload Register 9 */\r
+#define REG_PDCA_TCRR9            REG_ACCESS(RwReg  , 0x400A2250U) /**< \brief (PDCA) Transfer Counter Reload Register 9 */\r
+#define REG_PDCA_CR9              REG_ACCESS(WoReg  , 0x400A2254U) /**< \brief (PDCA) Control Register 9 */\r
+#define REG_PDCA_MR9              REG_ACCESS(RwReg  , 0x400A2258U) /**< \brief (PDCA) Mode Register 9 */\r
+#define REG_PDCA_SR9              REG_ACCESS(RoReg  , 0x400A225CU) /**< \brief (PDCA) Status Register 9 */\r
+#define REG_PDCA_IER9             REG_ACCESS(WoReg  , 0x400A2260U) /**< \brief (PDCA) Interrupt Enable Register 9 */\r
+#define REG_PDCA_IDR9             REG_ACCESS(WoReg  , 0x400A2264U) /**< \brief (PDCA) Interrupt Disable Register 9 */\r
+#define REG_PDCA_IMR9             REG_ACCESS(RoReg  , 0x400A2268U) /**< \brief (PDCA) Interrupt Mask Register 9 */\r
+#define REG_PDCA_ISR9             REG_ACCESS(RoReg  , 0x400A226CU) /**< \brief (PDCA) Interrupt Status Register 9 */\r
+#define REG_PDCA_MAR10            REG_ACCESS(RwReg  , 0x400A2280U) /**< \brief (PDCA) Memory Address Register 10 */\r
+#define REG_PDCA_PSR10            REG_ACCESS(RwReg  , 0x400A2284U) /**< \brief (PDCA) Peripheral Select Register 10 */\r
+#define REG_PDCA_TCR10            REG_ACCESS(RwReg  , 0x400A2288U) /**< \brief (PDCA) Transfer Counter Register 10 */\r
+#define REG_PDCA_MARR10           REG_ACCESS(RwReg  , 0x400A228CU) /**< \brief (PDCA) Memory Address Reload Register 10 */\r
+#define REG_PDCA_TCRR10           REG_ACCESS(RwReg  , 0x400A2290U) /**< \brief (PDCA) Transfer Counter Reload Register 10 */\r
+#define REG_PDCA_CR10             REG_ACCESS(WoReg  , 0x400A2294U) /**< \brief (PDCA) Control Register 10 */\r
+#define REG_PDCA_MR10             REG_ACCESS(RwReg  , 0x400A2298U) /**< \brief (PDCA) Mode Register 10 */\r
+#define REG_PDCA_SR10             REG_ACCESS(RoReg  , 0x400A229CU) /**< \brief (PDCA) Status Register 10 */\r
+#define REG_PDCA_IER10            REG_ACCESS(WoReg  , 0x400A22A0U) /**< \brief (PDCA) Interrupt Enable Register 10 */\r
+#define REG_PDCA_IDR10            REG_ACCESS(WoReg  , 0x400A22A4U) /**< \brief (PDCA) Interrupt Disable Register 10 */\r
+#define REG_PDCA_IMR10            REG_ACCESS(RoReg  , 0x400A22A8U) /**< \brief (PDCA) Interrupt Mask Register 10 */\r
+#define REG_PDCA_ISR10            REG_ACCESS(RoReg  , 0x400A22ACU) /**< \brief (PDCA) Interrupt Status Register 10 */\r
+#define REG_PDCA_MAR11            REG_ACCESS(RwReg  , 0x400A22C0U) /**< \brief (PDCA) Memory Address Register 11 */\r
+#define REG_PDCA_PSR11            REG_ACCESS(RwReg  , 0x400A22C4U) /**< \brief (PDCA) Peripheral Select Register 11 */\r
+#define REG_PDCA_TCR11            REG_ACCESS(RwReg  , 0x400A22C8U) /**< \brief (PDCA) Transfer Counter Register 11 */\r
+#define REG_PDCA_MARR11           REG_ACCESS(RwReg  , 0x400A22CCU) /**< \brief (PDCA) Memory Address Reload Register 11 */\r
+#define REG_PDCA_TCRR11           REG_ACCESS(RwReg  , 0x400A22D0U) /**< \brief (PDCA) Transfer Counter Reload Register 11 */\r
+#define REG_PDCA_CR11             REG_ACCESS(WoReg  , 0x400A22D4U) /**< \brief (PDCA) Control Register 11 */\r
+#define REG_PDCA_MR11             REG_ACCESS(RwReg  , 0x400A22D8U) /**< \brief (PDCA) Mode Register 11 */\r
+#define REG_PDCA_SR11             REG_ACCESS(RoReg  , 0x400A22DCU) /**< \brief (PDCA) Status Register 11 */\r
+#define REG_PDCA_IER11            REG_ACCESS(WoReg  , 0x400A22E0U) /**< \brief (PDCA) Interrupt Enable Register 11 */\r
+#define REG_PDCA_IDR11            REG_ACCESS(WoReg  , 0x400A22E4U) /**< \brief (PDCA) Interrupt Disable Register 11 */\r
+#define REG_PDCA_IMR11            REG_ACCESS(RoReg  , 0x400A22E8U) /**< \brief (PDCA) Interrupt Mask Register 11 */\r
+#define REG_PDCA_ISR11            REG_ACCESS(RoReg  , 0x400A22ECU) /**< \brief (PDCA) Interrupt Status Register 11 */\r
+#define REG_PDCA_MAR12            REG_ACCESS(RwReg  , 0x400A2300U) /**< \brief (PDCA) Memory Address Register 12 */\r
+#define REG_PDCA_PSR12            REG_ACCESS(RwReg  , 0x400A2304U) /**< \brief (PDCA) Peripheral Select Register 12 */\r
+#define REG_PDCA_TCR12            REG_ACCESS(RwReg  , 0x400A2308U) /**< \brief (PDCA) Transfer Counter Register 12 */\r
+#define REG_PDCA_MARR12           REG_ACCESS(RwReg  , 0x400A230CU) /**< \brief (PDCA) Memory Address Reload Register 12 */\r
+#define REG_PDCA_TCRR12           REG_ACCESS(RwReg  , 0x400A2310U) /**< \brief (PDCA) Transfer Counter Reload Register 12 */\r
+#define REG_PDCA_CR12             REG_ACCESS(WoReg  , 0x400A2314U) /**< \brief (PDCA) Control Register 12 */\r
+#define REG_PDCA_MR12             REG_ACCESS(RwReg  , 0x400A2318U) /**< \brief (PDCA) Mode Register 12 */\r
+#define REG_PDCA_SR12             REG_ACCESS(RoReg  , 0x400A231CU) /**< \brief (PDCA) Status Register 12 */\r
+#define REG_PDCA_IER12            REG_ACCESS(WoReg  , 0x400A2320U) /**< \brief (PDCA) Interrupt Enable Register 12 */\r
+#define REG_PDCA_IDR12            REG_ACCESS(WoReg  , 0x400A2324U) /**< \brief (PDCA) Interrupt Disable Register 12 */\r
+#define REG_PDCA_IMR12            REG_ACCESS(RoReg  , 0x400A2328U) /**< \brief (PDCA) Interrupt Mask Register 12 */\r
+#define REG_PDCA_ISR12            REG_ACCESS(RoReg  , 0x400A232CU) /**< \brief (PDCA) Interrupt Status Register 12 */\r
+#define REG_PDCA_MAR13            REG_ACCESS(RwReg  , 0x400A2340U) /**< \brief (PDCA) Memory Address Register 13 */\r
+#define REG_PDCA_PSR13            REG_ACCESS(RwReg  , 0x400A2344U) /**< \brief (PDCA) Peripheral Select Register 13 */\r
+#define REG_PDCA_TCR13            REG_ACCESS(RwReg  , 0x400A2348U) /**< \brief (PDCA) Transfer Counter Register 13 */\r
+#define REG_PDCA_MARR13           REG_ACCESS(RwReg  , 0x400A234CU) /**< \brief (PDCA) Memory Address Reload Register 13 */\r
+#define REG_PDCA_TCRR13           REG_ACCESS(RwReg  , 0x400A2350U) /**< \brief (PDCA) Transfer Counter Reload Register 13 */\r
+#define REG_PDCA_CR13             REG_ACCESS(WoReg  , 0x400A2354U) /**< \brief (PDCA) Control Register 13 */\r
+#define REG_PDCA_MR13             REG_ACCESS(RwReg  , 0x400A2358U) /**< \brief (PDCA) Mode Register 13 */\r
+#define REG_PDCA_SR13             REG_ACCESS(RoReg  , 0x400A235CU) /**< \brief (PDCA) Status Register 13 */\r
+#define REG_PDCA_IER13            REG_ACCESS(WoReg  , 0x400A2360U) /**< \brief (PDCA) Interrupt Enable Register 13 */\r
+#define REG_PDCA_IDR13            REG_ACCESS(WoReg  , 0x400A2364U) /**< \brief (PDCA) Interrupt Disable Register 13 */\r
+#define REG_PDCA_IMR13            REG_ACCESS(RoReg  , 0x400A2368U) /**< \brief (PDCA) Interrupt Mask Register 13 */\r
+#define REG_PDCA_ISR13            REG_ACCESS(RoReg  , 0x400A236CU) /**< \brief (PDCA) Interrupt Status Register 13 */\r
+#define REG_PDCA_MAR14            REG_ACCESS(RwReg  , 0x400A2380U) /**< \brief (PDCA) Memory Address Register 14 */\r
+#define REG_PDCA_PSR14            REG_ACCESS(RwReg  , 0x400A2384U) /**< \brief (PDCA) Peripheral Select Register 14 */\r
+#define REG_PDCA_TCR14            REG_ACCESS(RwReg  , 0x400A2388U) /**< \brief (PDCA) Transfer Counter Register 14 */\r
+#define REG_PDCA_MARR14           REG_ACCESS(RwReg  , 0x400A238CU) /**< \brief (PDCA) Memory Address Reload Register 14 */\r
+#define REG_PDCA_TCRR14           REG_ACCESS(RwReg  , 0x400A2390U) /**< \brief (PDCA) Transfer Counter Reload Register 14 */\r
+#define REG_PDCA_CR14             REG_ACCESS(WoReg  , 0x400A2394U) /**< \brief (PDCA) Control Register 14 */\r
+#define REG_PDCA_MR14             REG_ACCESS(RwReg  , 0x400A2398U) /**< \brief (PDCA) Mode Register 14 */\r
+#define REG_PDCA_SR14             REG_ACCESS(RoReg  , 0x400A239CU) /**< \brief (PDCA) Status Register 14 */\r
+#define REG_PDCA_IER14            REG_ACCESS(WoReg  , 0x400A23A0U) /**< \brief (PDCA) Interrupt Enable Register 14 */\r
+#define REG_PDCA_IDR14            REG_ACCESS(WoReg  , 0x400A23A4U) /**< \brief (PDCA) Interrupt Disable Register 14 */\r
+#define REG_PDCA_IMR14            REG_ACCESS(RoReg  , 0x400A23A8U) /**< \brief (PDCA) Interrupt Mask Register 14 */\r
+#define REG_PDCA_ISR14            REG_ACCESS(RoReg  , 0x400A23ACU) /**< \brief (PDCA) Interrupt Status Register 14 */\r
+#define REG_PDCA_MAR15            REG_ACCESS(RwReg  , 0x400A23C0U) /**< \brief (PDCA) Memory Address Register 15 */\r
+#define REG_PDCA_PSR15            REG_ACCESS(RwReg  , 0x400A23C4U) /**< \brief (PDCA) Peripheral Select Register 15 */\r
+#define REG_PDCA_TCR15            REG_ACCESS(RwReg  , 0x400A23C8U) /**< \brief (PDCA) Transfer Counter Register 15 */\r
+#define REG_PDCA_MARR15           REG_ACCESS(RwReg  , 0x400A23CCU) /**< \brief (PDCA) Memory Address Reload Register 15 */\r
+#define REG_PDCA_TCRR15           REG_ACCESS(RwReg  , 0x400A23D0U) /**< \brief (PDCA) Transfer Counter Reload Register 15 */\r
+#define REG_PDCA_CR15             REG_ACCESS(WoReg  , 0x400A23D4U) /**< \brief (PDCA) Control Register 15 */\r
+#define REG_PDCA_MR15             REG_ACCESS(RwReg  , 0x400A23D8U) /**< \brief (PDCA) Mode Register 15 */\r
+#define REG_PDCA_SR15             REG_ACCESS(RoReg  , 0x400A23DCU) /**< \brief (PDCA) Status Register 15 */\r
+#define REG_PDCA_IER15            REG_ACCESS(WoReg  , 0x400A23E0U) /**< \brief (PDCA) Interrupt Enable Register 15 */\r
+#define REG_PDCA_IDR15            REG_ACCESS(WoReg  , 0x400A23E4U) /**< \brief (PDCA) Interrupt Disable Register 15 */\r
+#define REG_PDCA_IMR15            REG_ACCESS(RoReg  , 0x400A23E8U) /**< \brief (PDCA) Interrupt Mask Register 15 */\r
+#define REG_PDCA_ISR15            REG_ACCESS(RoReg  , 0x400A23ECU) /**< \brief (PDCA) Interrupt Status Register 15 */\r
+#define REG_PDCA_PCONTROL         REG_ACCESS(RwReg  , 0x400A2800U) /**< \brief (PDCA) Performance Control Register */ \r
+#define REG_PDCA_PRDATA0          REG_ACCESS(RoReg  , 0x400A2804U) /**< \brief (PDCA) Channel 0 Read Data Cycles */ \r
+#define REG_PDCA_PRSTALL0         REG_ACCESS(RoReg  , 0x400A2808U) /**< \brief (PDCA) Channel 0 Read Stall Cycles */ \r
+#define REG_PDCA_PRLAT0           REG_ACCESS(RoReg  , 0x400A280CU) /**< \brief (PDCA) Channel 0 Read Max Latency */ \r
+#define REG_PDCA_PWDATA0          REG_ACCESS(RoReg  , 0x400A2810U) /**< \brief (PDCA) Channel 0 Write Data Cycles */ \r
+#define REG_PDCA_PWSTALL0         REG_ACCESS(RoReg  , 0x400A2814U) /**< \brief (PDCA) Channel 0 Write Stall Cycles */ \r
+#define REG_PDCA_PWLAT0           REG_ACCESS(RoReg  , 0x400A2818U) /**< \brief (PDCA) Channel0 Write Max Latency */ \r
+#define REG_PDCA_PRDATA1          REG_ACCESS(RoReg  , 0x400A281CU) /**< \brief (PDCA) Channel 1 Read Data Cycles */ \r
+#define REG_PDCA_PRSTALL1         REG_ACCESS(RoReg  , 0x400A2820U) /**< \brief (PDCA) Channel Read Stall Cycles */ \r
+#define REG_PDCA_PRLAT1           REG_ACCESS(RoReg  , 0x400A2824U) /**< \brief (PDCA) Channel 1 Read Max Latency */ \r
+#define REG_PDCA_PWDATA1          REG_ACCESS(RoReg  , 0x400A2828U) /**< \brief (PDCA) Channel 1 Write Data Cycles */ \r
+#define REG_PDCA_PWSTALL1         REG_ACCESS(RoReg  , 0x400A282CU) /**< \brief (PDCA) Channel 1 Write stall Cycles */ \r
+#define REG_PDCA_PWLAT1           REG_ACCESS(RoReg  , 0x400A2830U) /**< \brief (PDCA) Channel 1 Read Max Latency */ \r
+#define REG_PDCA_VERSION          REG_ACCESS(RoReg  , 0x400A2834U) /**< \brief (PDCA) Version Register */ \r
+/* ========== Register definition for SMAP peripheral ========== */\r
+#define REG_SMAP_CR               REG_ACCESS(WoReg  , 0x400A3000U) /**< \brief (SMAP) Control Register */ \r
+#define REG_SMAP_SR               REG_ACCESS(RoReg  , 0x400A3004U) /**< \brief (SMAP) Status Register */ \r
+#define REG_SMAP_SCR              REG_ACCESS(WoReg  , 0x400A3008U) /**< \brief (SMAP) Status Clear Register */ \r
+#define REG_SMAP_ADDR             REG_ACCESS(RwReg  , 0x400A300CU) /**< \brief (SMAP) Address Register */ \r
+#define REG_SMAP_LENGTH           REG_ACCESS(RwReg  , 0x400A3010U) /**< \brief (SMAP) Length Register */ \r
+#define REG_SMAP_DATA             REG_ACCESS(RwReg  , 0x400A3014U) /**< \brief (SMAP) Data Register */ \r
+#define REG_SMAP_VERSION          REG_ACCESS(RoReg  , 0x400A3028U) /**< \brief (SMAP) VERSION register */ \r
+#define REG_SMAP_CIDR             REG_ACCESS(RoReg  , 0x400A30F0U) /**< \brief (SMAP) Chip ID Register */ \r
+#define REG_SMAP_EXID             REG_ACCESS(RoReg  , 0x400A30F4U) /**< \brief (SMAP) Chip ID Extension Register */ \r
+#define REG_SMAP_IDR              REG_ACCESS(RoReg  , 0x400A30FCU) /**< \brief (SMAP) AP Identification register */ \r
+/* ========== Register definition for CRCCU peripheral ========== */\r
+#define REG_CRCCU_DSCR            REG_ACCESS(RwReg  , 0x400A4000U) /**< \brief (CRCCU) Descriptor Base Register */ \r
+#define REG_CRCCU_DMAEN           REG_ACCESS(WoReg  , 0x400A4008U) /**< \brief (CRCCU) DMA Enable Register */ \r
+#define REG_CRCCU_DMADIS          REG_ACCESS(WoReg  , 0x400A400CU) /**< \brief (CRCCU) DMA Disable Register */ \r
+#define REG_CRCCU_DMASR           REG_ACCESS(RoReg  , 0x400A4010U) /**< \brief (CRCCU) DMA Status Register */ \r
+#define REG_CRCCU_DMAIER          REG_ACCESS(WoReg  , 0x400A4014U) /**< \brief (CRCCU) DMA Interrupt Enable Register */ \r
+#define REG_CRCCU_DMAIDR          REG_ACCESS(WoReg  , 0x400A4018U) /**< \brief (CRCCU) DMA Interrupt Disable Register */ \r
+#define REG_CRCCU_DMAIMR          REG_ACCESS(RoReg  , 0x400A401CU) /**< \brief (CRCCU) DMA Interrupt Mask Register */ \r
+#define REG_CRCCU_DMAISR          REG_ACCESS(RoReg  , 0x400A4020U) /**< \brief (CRCCU) DMA Interrupt Status Register */ \r
+#define REG_CRCCU_CR              REG_ACCESS(WoReg  , 0x400A4034U) /**< \brief (CRCCU) Control Register */ \r
+#define REG_CRCCU_MR              REG_ACCESS(RwReg  , 0x400A4038U) /**< \brief (CRCCU) Mode Register */ \r
+#define REG_CRCCU_SR              REG_ACCESS(RoReg  , 0x400A403CU) /**< \brief (CRCCU) Status Register */ \r
+#define REG_CRCCU_IER             REG_ACCESS(WoReg  , 0x400A4040U) /**< \brief (CRCCU) Interrupt Enable Register */ \r
+#define REG_CRCCU_IDR             REG_ACCESS(WoReg  , 0x400A4044U) /**< \brief (CRCCU) Interrupt Disable Register */ \r
+#define REG_CRCCU_IMR             REG_ACCESS(RoReg  , 0x400A4048U) /**< \brief (CRCCU) Interrupt Mask Register */ \r
+#define REG_CRCCU_ISR             REG_ACCESS(RoReg  , 0x400A404CU) /**< \brief (CRCCU) Interrupt Status Register */ \r
+#define REG_CRCCU_VERSION         REG_ACCESS(RoReg  , 0x400A40FCU) /**< \brief (CRCCU) Version Register */ \r
+/* ========== Register definition for USBC peripheral ========== */\r
+#define REG_USBC_UDCON            REG_ACCESS(RwReg  , 0x400A5000U) /**< \brief (USBC) Device General Control Register */ \r
+#define REG_USBC_UDINT            REG_ACCESS(RoReg  , 0x400A5004U) /**< \brief (USBC) Device Global Interupt Register */ \r
+#define REG_USBC_UDINTCLR         REG_ACCESS(WoReg  , 0x400A5008U) /**< \brief (USBC) Device Global Interrupt Clear Register */ \r
+#define REG_USBC_UDINTSET         REG_ACCESS(WoReg  , 0x400A500CU) /**< \brief (USBC) Device Global Interrupt Set Regsiter */ \r
+#define REG_USBC_UDINTE           REG_ACCESS(RoReg  , 0x400A5010U) /**< \brief (USBC) Device Global Interrupt Enable Register */ \r
+#define REG_USBC_UDINTECLR        REG_ACCESS(WoReg  , 0x400A5014U) /**< \brief (USBC) Device Global Interrupt Enable Clear Register */ \r
+#define REG_USBC_UDINTESET        REG_ACCESS(WoReg  , 0x400A5018U) /**< \brief (USBC) Device Global Interrupt Enable Set Register */ \r
+#define REG_USBC_UERST            REG_ACCESS(RwReg  , 0x400A501CU) /**< \brief (USBC) Endpoint Enable/Reset Register */ \r
+#define REG_USBC_UDFNUM           REG_ACCESS(RoReg  , 0x400A5020U) /**< \brief (USBC) Device Frame Number Register */ \r
+#define REG_USBC_UECFG0           REG_ACCESS(RwReg  , 0x400A5100U) /**< \brief (USBC) Endpoint Configuration Register */ \r
+#define REG_USBC_UECFG1           REG_ACCESS(RwReg  , 0x400A5104U) /**< \brief (USBC) Endpoint Configuration Register */ \r
+#define REG_USBC_UECFG2           REG_ACCESS(RwReg  , 0x400A5108U) /**< \brief (USBC) Endpoint Configuration Register */ \r
+#define REG_USBC_UECFG3           REG_ACCESS(RwReg  , 0x400A510CU) /**< \brief (USBC) Endpoint Configuration Register */ \r
+#define REG_USBC_UECFG4           REG_ACCESS(RwReg  , 0x400A5110U) /**< \brief (USBC) Endpoint Configuration Register */ \r
+#define REG_USBC_UECFG5           REG_ACCESS(RwReg  , 0x400A5114U) /**< \brief (USBC) Endpoint Configuration Register */ \r
+#define REG_USBC_UECFG6           REG_ACCESS(RwReg  , 0x400A5118U) /**< \brief (USBC) Endpoint Configuration Register */ \r
+#define REG_USBC_UECFG7           REG_ACCESS(RwReg  , 0x400A511CU) /**< \brief (USBC) Endpoint Configuration Register */ \r
+#define REG_USBC_UESTA0           REG_ACCESS(RoReg  , 0x400A5130U) /**< \brief (USBC) Endpoint Status Register */ \r
+#define REG_USBC_UESTA1           REG_ACCESS(RoReg  , 0x400A5134U) /**< \brief (USBC) Endpoint Status Register */ \r
+#define REG_USBC_UESTA2           REG_ACCESS(RoReg  , 0x400A5138U) /**< \brief (USBC) Endpoint Status Register */ \r
+#define REG_USBC_UESTA3           REG_ACCESS(RoReg  , 0x400A513CU) /**< \brief (USBC) Endpoint Status Register */ \r
+#define REG_USBC_UESTA4           REG_ACCESS(RoReg  , 0x400A5140U) /**< \brief (USBC) Endpoint Status Register */ \r
+#define REG_USBC_UESTA5           REG_ACCESS(RoReg  , 0x400A5144U) /**< \brief (USBC) Endpoint Status Register */ \r
+#define REG_USBC_UESTA6           REG_ACCESS(RoReg  , 0x400A5148U) /**< \brief (USBC) Endpoint Status Register */ \r
+#define REG_USBC_UESTA7           REG_ACCESS(RoReg  , 0x400A514CU) /**< \brief (USBC) Endpoint Status Register */ \r
+#define REG_USBC_UESTA0CLR        REG_ACCESS(WoReg  , 0x400A5160U) /**< \brief (USBC) Endpoint Status Clear Register */ \r
+#define REG_USBC_UESTA1CLR        REG_ACCESS(WoReg  , 0x400A5164U) /**< \brief (USBC) Endpoint Status Clear Register */ \r
+#define REG_USBC_UESTA2CLR        REG_ACCESS(WoReg  , 0x400A5168U) /**< \brief (USBC) Endpoint Status Clear Register */ \r
+#define REG_USBC_UESTA3CLR        REG_ACCESS(WoReg  , 0x400A516CU) /**< \brief (USBC) Endpoint Status Clear Register */ \r
+#define REG_USBC_UESTA4CLR        REG_ACCESS(WoReg  , 0x400A5170U) /**< \brief (USBC) Endpoint Status Clear Register */ \r
+#define REG_USBC_UESTA5CLR        REG_ACCESS(WoReg  , 0x400A5174U) /**< \brief (USBC) Endpoint Status Clear Register */ \r
+#define REG_USBC_UESTA6CLR        REG_ACCESS(WoReg  , 0x400A5178U) /**< \brief (USBC) Endpoint Status Clear Register */ \r
+#define REG_USBC_UESTA7CLR        REG_ACCESS(WoReg  , 0x400A517CU) /**< \brief (USBC) Endpoint Status Clear Register */ \r
+#define REG_USBC_UESTA0SET        REG_ACCESS(WoReg  , 0x400A5190U) /**< \brief (USBC) Endpoint Status Set Register */ \r
+#define REG_USBC_UESTA1SET        REG_ACCESS(WoReg  , 0x400A5194U) /**< \brief (USBC) Endpoint Status Set Register */ \r
+#define REG_USBC_UESTA2SET        REG_ACCESS(WoReg  , 0x400A5198U) /**< \brief (USBC) Endpoint Status Set Register */ \r
+#define REG_USBC_UESTA3SET        REG_ACCESS(WoReg  , 0x400A519CU) /**< \brief (USBC) Endpoint Status Set Register */ \r
+#define REG_USBC_UESTA4SET        REG_ACCESS(WoReg  , 0x400A51A0U) /**< \brief (USBC) Endpoint Status Set Register */ \r
+#define REG_USBC_UESTA5SET        REG_ACCESS(WoReg  , 0x400A51A4U) /**< \brief (USBC) Endpoint Status Set Register */ \r
+#define REG_USBC_UESTA6SET        REG_ACCESS(WoReg  , 0x400A51A8U) /**< \brief (USBC) Endpoint Status Set Register */ \r
+#define REG_USBC_UESTA7SET        REG_ACCESS(WoReg  , 0x400A51ACU) /**< \brief (USBC) Endpoint Status Set Register */ \r
+#define REG_USBC_UECON0           REG_ACCESS(RoReg  , 0x400A51C0U) /**< \brief (USBC) Endpoint Control Register */ \r
+#define REG_USBC_UECON1           REG_ACCESS(RoReg  , 0x400A51C4U) /**< \brief (USBC) Endpoint Control Register */ \r
+#define REG_USBC_UECON2           REG_ACCESS(RoReg  , 0x400A51C8U) /**< \brief (USBC) Endpoint Control Register */ \r
+#define REG_USBC_UECON3           REG_ACCESS(RoReg  , 0x400A51CCU) /**< \brief (USBC) Endpoint Control Register */ \r
+#define REG_USBC_UECON4           REG_ACCESS(RoReg  , 0x400A51D0U) /**< \brief (USBC) Endpoint Control Register */ \r
+#define REG_USBC_UECON5           REG_ACCESS(RoReg  , 0x400A51D4U) /**< \brief (USBC) Endpoint Control Register */ \r
+#define REG_USBC_UECON6           REG_ACCESS(RoReg  , 0x400A51D8U) /**< \brief (USBC) Endpoint Control Register */ \r
+#define REG_USBC_UECON7           REG_ACCESS(RoReg  , 0x400A51DCU) /**< \brief (USBC) Endpoint Control Register */ \r
+#define REG_USBC_UECON0SET        REG_ACCESS(WoReg  , 0x400A51F0U) /**< \brief (USBC) Endpoint Control Set Register */ \r
+#define REG_USBC_UECON1SET        REG_ACCESS(WoReg  , 0x400A51F4U) /**< \brief (USBC) Endpoint Control Set Register */ \r
+#define REG_USBC_UECON2SET        REG_ACCESS(WoReg  , 0x400A51F8U) /**< \brief (USBC) Endpoint Control Set Register */ \r
+#define REG_USBC_UECON3SET        REG_ACCESS(WoReg  , 0x400A51FCU) /**< \brief (USBC) Endpoint Control Set Register */ \r
+#define REG_USBC_UECON4SET        REG_ACCESS(WoReg  , 0x400A5200U) /**< \brief (USBC) Endpoint Control Set Register */ \r
+#define REG_USBC_UECON5SET        REG_ACCESS(WoReg  , 0x400A5204U) /**< \brief (USBC) Endpoint Control Set Register */ \r
+#define REG_USBC_UECON6SET        REG_ACCESS(WoReg  , 0x400A5208U) /**< \brief (USBC) Endpoint Control Set Register */ \r
+#define REG_USBC_UECON7SET        REG_ACCESS(WoReg  , 0x400A520CU) /**< \brief (USBC) Endpoint Control Set Register */ \r
+#define REG_USBC_UECON0CLR        REG_ACCESS(WoReg  , 0x400A5220U) /**< \brief (USBC) Endpoint Control Clear Register */ \r
+#define REG_USBC_UECON1CLR        REG_ACCESS(WoReg  , 0x400A5224U) /**< \brief (USBC) TXINE Clear */ \r
+#define REG_USBC_UECON2CLR        REG_ACCESS(WoReg  , 0x400A5228U) /**< \brief (USBC) TXINE Clear */ \r
+#define REG_USBC_UECON3CLR        REG_ACCESS(WoReg  , 0x400A522CU) /**< \brief (USBC) TXINE Clear */ \r
+#define REG_USBC_UECON4CLR        REG_ACCESS(WoReg  , 0x400A5230U) /**< \brief (USBC) TXINE Clear */ \r
+#define REG_USBC_UECON5CLR        REG_ACCESS(WoReg  , 0x400A5234U) /**< \brief (USBC) TXINE Clear */ \r
+#define REG_USBC_UECON6CLR        REG_ACCESS(WoReg  , 0x400A5238U) /**< \brief (USBC) TXINE Clear */ \r
+#define REG_USBC_UECON7CLR        REG_ACCESS(WoReg  , 0x400A523CU) /**< \brief (USBC) TXINE Clear */ \r
+#define REG_USBC_UHCON            REG_ACCESS(RwReg  , 0x400A5400U) /**< \brief (USBC) Host General Control Register */ \r
+#define REG_USBC_UHINT            REG_ACCESS(RoReg  , 0x400A5404U) /**< \brief (USBC) Host Global Interrupt Register */ \r
+#define REG_USBC_UHINTCLR         REG_ACCESS(WoReg  , 0x400A5408U) /**< \brief (USBC) Host Global Interrrupt Clear Register */ \r
+#define REG_USBC_UHINTSET         REG_ACCESS(WoReg  , 0x400A540CU) /**< \brief (USBC) Host Global Interrupt Set Register */ \r
+#define REG_USBC_UHINTE           REG_ACCESS(RoReg  , 0x400A5410U) /**< \brief (USBC) Host Global Interrupt Enable Register */ \r
+#define REG_USBC_UHINTECLR        REG_ACCESS(WoReg  , 0x400A5414U) /**< \brief (USBC) Host Global Interrupt Enable Clear Register */ \r
+#define REG_USBC_UHINTESET        REG_ACCESS(WoReg  , 0x400A5418U) /**< \brief (USBC) Host Global Interrupt Enable Set Register */ \r
+#define REG_USBC_UPRST            REG_ACCESS(RwReg  , 0x400A541CU) /**< \brief (USBC) Pipe Reset Register */ \r
+#define REG_USBC_UHFNUM           REG_ACCESS(RwReg  , 0x400A5420U) /**< \brief (USBC) Host Frame Number Register */ \r
+#define REG_USBC_UHSOFC           REG_ACCESS(RwReg  , 0x400A5424U) /**< \brief (USBC) Host Start of Frame Control Register */ \r
+#define REG_USBC_UPCFG0           REG_ACCESS(RwReg  , 0x400A5500U) /**< \brief (USBC) Pipe Configuration Register */ \r
+#define REG_USBC_UPCFG1           REG_ACCESS(RwReg  , 0x400A5504U) /**< \brief (USBC) Pipe Configuration Register */ \r
+#define REG_USBC_UPCFG2           REG_ACCESS(RwReg  , 0x400A5508U) /**< \brief (USBC) Pipe Configuration Register */ \r
+#define REG_USBC_UPCFG3           REG_ACCESS(RwReg  , 0x400A550CU) /**< \brief (USBC) Pipe Configuration Register */ \r
+#define REG_USBC_UPCFG4           REG_ACCESS(RwReg  , 0x400A5510U) /**< \brief (USBC) Pipe Configuration Register */ \r
+#define REG_USBC_UPCFG5           REG_ACCESS(RwReg  , 0x400A5514U) /**< \brief (USBC) Pipe Configuration Register */ \r
+#define REG_USBC_UPCFG6           REG_ACCESS(RwReg  , 0x400A5518U) /**< \brief (USBC) Pipe Configuration Register */ \r
+#define REG_USBC_UPCFG7           REG_ACCESS(RwReg  , 0x400A551CU) /**< \brief (USBC) Pipe Configuration Register */ \r
+#define REG_USBC_UPSTA0           REG_ACCESS(RoReg  , 0x400A5530U) /**< \brief (USBC) Pipe Status Register */ \r
+#define REG_USBC_UPSTA1           REG_ACCESS(RoReg  , 0x400A5534U) /**< \brief (USBC) Pipe Status Register */ \r
+#define REG_USBC_UPSTA2           REG_ACCESS(RoReg  , 0x400A5538U) /**< \brief (USBC) Pipe Status Register */ \r
+#define REG_USBC_UPSTA3           REG_ACCESS(RoReg  , 0x400A553CU) /**< \brief (USBC) Pipe Status Register */ \r
+#define REG_USBC_UPSTA4           REG_ACCESS(RoReg  , 0x400A5540U) /**< \brief (USBC) Pipe Status Register */ \r
+#define REG_USBC_UPSTA5           REG_ACCESS(RoReg  , 0x400A5544U) /**< \brief (USBC) Pipe Status Register */ \r
+#define REG_USBC_UPSTA6           REG_ACCESS(RoReg  , 0x400A5548U) /**< \brief (USBC) Pipe Status Register */ \r
+#define REG_USBC_UPSTA7           REG_ACCESS(RoReg  , 0x400A554CU) /**< \brief (USBC) Pipe Status Register */ \r
+#define REG_USBC_UPSTA0CLR        REG_ACCESS(WoReg  , 0x400A5560U) /**< \brief (USBC) Pipe Status Clear Register */ \r
+#define REG_USBC_UPSTA1CLR        REG_ACCESS(WoReg  , 0x400A5564U) /**< \brief (USBC) Pipe Status Clear Register */ \r
+#define REG_USBC_UPSTA2CLR        REG_ACCESS(WoReg  , 0x400A5568U) /**< \brief (USBC) Pipe Status Clear Register */ \r
+#define REG_USBC_UPSTA3CLR        REG_ACCESS(WoReg  , 0x400A556CU) /**< \brief (USBC) Pipe Status Clear Register */ \r
+#define REG_USBC_UPSTA4CLR        REG_ACCESS(WoReg  , 0x400A5570U) /**< \brief (USBC) Pipe Status Clear Register */ \r
+#define REG_USBC_UPSTA5CLR        REG_ACCESS(WoReg  , 0x400A5574U) /**< \brief (USBC) Pipe Status Clear Register */ \r
+#define REG_USBC_UPSTA6CLR        REG_ACCESS(WoReg  , 0x400A5578U) /**< \brief (USBC) Pipe Status Clear Register */ \r
+#define REG_USBC_UPSTA7CLR        REG_ACCESS(WoReg  , 0x400A557CU) /**< \brief (USBC) Pipe Status Clear Register */ \r
+#define REG_USBC_UPSTA0SET        REG_ACCESS(WoReg  , 0x400A5590U) /**< \brief (USBC) Pipe Status Set Register */ \r
+#define REG_USBC_UPSTA1SET        REG_ACCESS(WoReg  , 0x400A5594U) /**< \brief (USBC) Pipe Status Set Register */ \r
+#define REG_USBC_UPSTA2SET        REG_ACCESS(WoReg  , 0x400A5598U) /**< \brief (USBC) Pipe Status Set Register */ \r
+#define REG_USBC_UPSTA3SET        REG_ACCESS(WoReg  , 0x400A559CU) /**< \brief (USBC) Pipe Status Set Register */ \r
+#define REG_USBC_UPSTA4SET        REG_ACCESS(WoReg  , 0x400A55A0U) /**< \brief (USBC) Pipe Status Set Register */ \r
+#define REG_USBC_UPSTA5SET        REG_ACCESS(WoReg  , 0x400A55A4U) /**< \brief (USBC) Pipe Status Set Register */ \r
+#define REG_USBC_UPSTA6SET        REG_ACCESS(WoReg  , 0x400A55A8U) /**< \brief (USBC) Pipe Status Set Register */ \r
+#define REG_USBC_UPSTA7SET        REG_ACCESS(WoReg  , 0x400A55ACU) /**< \brief (USBC) Pipe Status Set Register */ \r
+#define REG_USBC_UPCON0           REG_ACCESS(RoReg  , 0x400A55C0U) /**< \brief (USBC) Pipe Control Register */ \r
+#define REG_USBC_UPCON1           REG_ACCESS(RoReg  , 0x400A55C4U) /**< \brief (USBC) Pipe Control Register */ \r
+#define REG_USBC_UPCON2           REG_ACCESS(RoReg  , 0x400A55C8U) /**< \brief (USBC) Pipe Control Register */ \r
+#define REG_USBC_UPCON3           REG_ACCESS(RoReg  , 0x400A55CCU) /**< \brief (USBC) Pipe Control Register */ \r
+#define REG_USBC_UPCON4           REG_ACCESS(RoReg  , 0x400A55D0U) /**< \brief (USBC) Pipe Control Register */ \r
+#define REG_USBC_UPCON5           REG_ACCESS(RoReg  , 0x400A55D4U) /**< \brief (USBC) Pipe Control Register */ \r
+#define REG_USBC_UPCON6           REG_ACCESS(RoReg  , 0x400A55D8U) /**< \brief (USBC) Pipe Control Register */ \r
+#define REG_USBC_UPCON7           REG_ACCESS(RoReg  , 0x400A55DCU) /**< \brief (USBC) Pipe Control Register */ \r
+#define REG_USBC_UPCON0SET        REG_ACCESS(WoReg  , 0x400A55F0U) /**< \brief (USBC) Pipe Control Set Register */ \r
+#define REG_USBC_UPCON1SET        REG_ACCESS(WoReg  , 0x400A55F4U) /**< \brief (USBC) Pipe Control Set Register */ \r
+#define REG_USBC_UPCON2SET        REG_ACCESS(WoReg  , 0x400A55F8U) /**< \brief (USBC) Pipe Control Set Register */ \r
+#define REG_USBC_UPCON3SET        REG_ACCESS(WoReg  , 0x400A55FCU) /**< \brief (USBC) Pipe Control Set Register */ \r
+#define REG_USBC_UPCON4SET        REG_ACCESS(WoReg  , 0x400A5600U) /**< \brief (USBC) Pipe Control Set Register */ \r
+#define REG_USBC_UPCON5SET        REG_ACCESS(WoReg  , 0x400A5604U) /**< \brief (USBC) Pipe Control Set Register */ \r
+#define REG_USBC_UPCON6SET        REG_ACCESS(WoReg  , 0x400A5608U) /**< \brief (USBC) Pipe Control Set Register */ \r
+#define REG_USBC_UPCON7SET        REG_ACCESS(WoReg  , 0x400A560CU) /**< \brief (USBC) Pipe Control Set Register */ \r
+#define REG_USBC_UPCON0CLR        REG_ACCESS(WoReg  , 0x400A5620U) /**< \brief (USBC) Pipe Control Clear Register */ \r
+#define REG_USBC_UPCON1CLR        REG_ACCESS(WoReg  , 0x400A5624U) /**< \brief (USBC) Pipe Control Clear Register */ \r
+#define REG_USBC_UPCON2CLR        REG_ACCESS(WoReg  , 0x400A5628U) /**< \brief (USBC) Pipe Control Clear Register */ \r
+#define REG_USBC_UPCON3CLR        REG_ACCESS(WoReg  , 0x400A562CU) /**< \brief (USBC) Pipe Control Clear Register */ \r
+#define REG_USBC_UPCON4CLR        REG_ACCESS(WoReg  , 0x400A5630U) /**< \brief (USBC) Pipe Control Clear Register */ \r
+#define REG_USBC_UPCON5CLR        REG_ACCESS(WoReg  , 0x400A5634U) /**< \brief (USBC) Pipe Control Clear Register */ \r
+#define REG_USBC_UPCON6CLR        REG_ACCESS(WoReg  , 0x400A5638U) /**< \brief (USBC) Pipe Control Clear Register */ \r
+#define REG_USBC_UPCON7CLR        REG_ACCESS(WoReg  , 0x400A563CU) /**< \brief (USBC) Pipe Control Clear Register */ \r
+#define REG_USBC_UPINRQ0          REG_ACCESS(RwReg  , 0x400A5650U) /**< \brief (USBC) Pipe In Request */ \r
+#define REG_USBC_UPINRQ1          REG_ACCESS(RwReg  , 0x400A5654U) /**< \brief (USBC) Pipe In Request */ \r
+#define REG_USBC_UPINRQ2          REG_ACCESS(RwReg  , 0x400A5658U) /**< \brief (USBC) Pipe In Request */ \r
+#define REG_USBC_UPINRQ3          REG_ACCESS(RwReg  , 0x400A565CU) /**< \brief (USBC) Pipe In Request */ \r
+#define REG_USBC_UPINRQ4          REG_ACCESS(RwReg  , 0x400A5660U) /**< \brief (USBC) Pipe In Request */ \r
+#define REG_USBC_UPINRQ5          REG_ACCESS(RwReg  , 0x400A5664U) /**< \brief (USBC) Pipe In Request */ \r
+#define REG_USBC_UPINRQ6          REG_ACCESS(RwReg  , 0x400A5668U) /**< \brief (USBC) Pipe In Request */ \r
+#define REG_USBC_UPINRQ7          REG_ACCESS(RwReg  , 0x400A566CU) /**< \brief (USBC) Pipe In Request */ \r
+#define REG_USBC_USBCON           REG_ACCESS(RwReg  , 0x400A5800U) /**< \brief (USBC) General Control Register */ \r
+#define REG_USBC_USBSTA           REG_ACCESS(RoReg  , 0x400A5804U) /**< \brief (USBC) General Status Register */ \r
+#define REG_USBC_USBSTACLR        REG_ACCESS(WoReg  , 0x400A5808U) /**< \brief (USBC) General Status Clear Register */ \r
+#define REG_USBC_USBSTASET        REG_ACCESS(WoReg  , 0x400A580CU) /**< \brief (USBC) General Status Set Register */ \r
+#define REG_USBC_UVERS            REG_ACCESS(RoReg  , 0x400A5818U) /**< \brief (USBC) IP Version Register */ \r
+#define REG_USBC_UFEATURES        REG_ACCESS(RoReg  , 0x400A581CU) /**< \brief (USBC) IP Features Register */ \r
+#define REG_USBC_UADDRSIZE        REG_ACCESS(RoReg  , 0x400A5820U) /**< \brief (USBC) IP PB address size Register */ \r
+#define REG_USBC_UNAME1           REG_ACCESS(RoReg  , 0x400A5824U) /**< \brief (USBC) IP Name Part One: HUSB */ \r
+#define REG_USBC_UNAME2           REG_ACCESS(RoReg  , 0x400A5828U) /**< \brief (USBC) IP Name Part Two: HOST */ \r
+#define REG_USBC_USBFSM           REG_ACCESS(RoReg  , 0x400A582CU) /**< \brief (USBC) USB internal finite state machine */ \r
+#define REG_USBC_UDESC            REG_ACCESS(RwReg  , 0x400A5830U) /**< \brief (USBC) Endpoint descriptor table */ \r
+/* ========== Register definition for PEVC peripheral ========== */\r
+#define REG_PEVC_CHSR             REG_ACCESS(RoReg  , 0x400A6000U) /**< \brief (PEVC) Channel Status Register */ \r
+#define REG_PEVC_CHER             REG_ACCESS(WoReg  , 0x400A6004U) /**< \brief (PEVC) Channel Enable Register */ \r
+#define REG_PEVC_CHDR             REG_ACCESS(WoReg  , 0x400A6008U) /**< \brief (PEVC) Channel Disable Register */ \r
+#define REG_PEVC_SEV              REG_ACCESS(WoReg  , 0x400A6010U) /**< \brief (PEVC) Software Event */ \r
+#define REG_PEVC_BUSY             REG_ACCESS(RoReg  , 0x400A6014U) /**< \brief (PEVC) Channel / User Busy */ \r
+#define REG_PEVC_TRIER            REG_ACCESS(WoReg  , 0x400A6020U) /**< \brief (PEVC) Trigger Interrupt Mask Enable Register */ \r
+#define REG_PEVC_TRIDR            REG_ACCESS(WoReg  , 0x400A6024U) /**< \brief (PEVC) Trigger Interrupt Mask Disable Register */ \r
+#define REG_PEVC_TRIMR            REG_ACCESS(RoReg  , 0x400A6028U) /**< \brief (PEVC) Trigger Interrupt Mask Register */ \r
+#define REG_PEVC_TRSR             REG_ACCESS(RoReg  , 0x400A6030U) /**< \brief (PEVC) Trigger Status Register */ \r
+#define REG_PEVC_TRSCR            REG_ACCESS(WoReg  , 0x400A6034U) /**< \brief (PEVC) Trigger Status Clear Register */ \r
+#define REG_PEVC_OVIER            REG_ACCESS(WoReg  , 0x400A6040U) /**< \brief (PEVC) Overrun Interrupt Mask Enable Register */ \r
+#define REG_PEVC_OVIDR            REG_ACCESS(WoReg  , 0x400A6044U) /**< \brief (PEVC) Overrun Interrupt Mask Disable Register */ \r
+#define REG_PEVC_OVIMR            REG_ACCESS(RoReg  , 0x400A6048U) /**< \brief (PEVC) Overrun Interrupt Mask Register */ \r
+#define REG_PEVC_OVSR             REG_ACCESS(RoReg  , 0x400A6050U) /**< \brief (PEVC) Overrun Status Register */ \r
+#define REG_PEVC_OVSCR            REG_ACCESS(WoReg  , 0x400A6054U) /**< \brief (PEVC) Overrun Status Clear Register */ \r
+#define REG_PEVC_CHMX0            REG_ACCESS(RwReg  , 0x400A6100U) /**< \brief (PEVC) Channel Multiplexer 0 0 */\r
+#define REG_PEVC_CHMX1            REG_ACCESS(RwReg  , 0x400A6104U) /**< \brief (PEVC) Channel Multiplexer 0 1 */\r
+#define REG_PEVC_CHMX2            REG_ACCESS(RwReg  , 0x400A6108U) /**< \brief (PEVC) Channel Multiplexer 0 2 */\r
+#define REG_PEVC_CHMX3            REG_ACCESS(RwReg  , 0x400A610CU) /**< \brief (PEVC) Channel Multiplexer 0 3 */\r
+#define REG_PEVC_CHMX4            REG_ACCESS(RwReg  , 0x400A6110U) /**< \brief (PEVC) Channel Multiplexer 0 4 */\r
+#define REG_PEVC_CHMX5            REG_ACCESS(RwReg  , 0x400A6114U) /**< \brief (PEVC) Channel Multiplexer 0 5 */\r
+#define REG_PEVC_CHMX6            REG_ACCESS(RwReg  , 0x400A6118U) /**< \brief (PEVC) Channel Multiplexer 0 6 */\r
+#define REG_PEVC_CHMX7            REG_ACCESS(RwReg  , 0x400A611CU) /**< \brief (PEVC) Channel Multiplexer 0 7 */\r
+#define REG_PEVC_CHMX8            REG_ACCESS(RwReg  , 0x400A6120U) /**< \brief (PEVC) Channel Multiplexer 0 8 */\r
+#define REG_PEVC_CHMX9            REG_ACCESS(RwReg  , 0x400A6124U) /**< \brief (PEVC) Channel Multiplexer 0 9 */\r
+#define REG_PEVC_CHMX10           REG_ACCESS(RwReg  , 0x400A6128U) /**< \brief (PEVC) Channel Multiplexer 0 10 */\r
+#define REG_PEVC_CHMX11           REG_ACCESS(RwReg  , 0x400A612CU) /**< \brief (PEVC) Channel Multiplexer 0 11 */\r
+#define REG_PEVC_CHMX12           REG_ACCESS(RwReg  , 0x400A6130U) /**< \brief (PEVC) Channel Multiplexer 0 12 */\r
+#define REG_PEVC_CHMX13           REG_ACCESS(RwReg  , 0x400A6134U) /**< \brief (PEVC) Channel Multiplexer 0 13 */\r
+#define REG_PEVC_CHMX14           REG_ACCESS(RwReg  , 0x400A6138U) /**< \brief (PEVC) Channel Multiplexer 0 14 */\r
+#define REG_PEVC_CHMX15           REG_ACCESS(RwReg  , 0x400A613CU) /**< \brief (PEVC) Channel Multiplexer 0 15 */\r
+#define REG_PEVC_CHMX16           REG_ACCESS(RwReg  , 0x400A6140U) /**< \brief (PEVC) Channel Multiplexer 0 16 */\r
+#define REG_PEVC_CHMX17           REG_ACCESS(RwReg  , 0x400A6144U) /**< \brief (PEVC) Channel Multiplexer 0 17 */\r
+#define REG_PEVC_CHMX18           REG_ACCESS(RwReg  , 0x400A6148U) /**< \brief (PEVC) Channel Multiplexer 0 18 */\r
+#define REG_PEVC_EVS0             REG_ACCESS(RwReg  , 0x400A6200U) /**< \brief (PEVC) Event Shaper 0 0 */\r
+#define REG_PEVC_EVS1             REG_ACCESS(RwReg  , 0x400A6204U) /**< \brief (PEVC) Event Shaper 0 1 */\r
+#define REG_PEVC_EVS2             REG_ACCESS(RwReg  , 0x400A6208U) /**< \brief (PEVC) Event Shaper 0 2 */\r
+#define REG_PEVC_EVS3             REG_ACCESS(RwReg  , 0x400A620CU) /**< \brief (PEVC) Event Shaper 0 3 */\r
+#define REG_PEVC_EVS4             REG_ACCESS(RwReg  , 0x400A6210U) /**< \brief (PEVC) Event Shaper 0 4 */\r
+#define REG_PEVC_EVS5             REG_ACCESS(RwReg  , 0x400A6214U) /**< \brief (PEVC) Event Shaper 0 5 */\r
+#define REG_PEVC_EVS6             REG_ACCESS(RwReg  , 0x400A6218U) /**< \brief (PEVC) Event Shaper 0 6 */\r
+#define REG_PEVC_EVS7             REG_ACCESS(RwReg  , 0x400A621CU) /**< \brief (PEVC) Event Shaper 0 7 */\r
+#define REG_PEVC_EVS8             REG_ACCESS(RwReg  , 0x400A6220U) /**< \brief (PEVC) Event Shaper 0 8 */\r
+#define REG_PEVC_EVS9             REG_ACCESS(RwReg  , 0x400A6224U) /**< \brief (PEVC) Event Shaper 0 9 */\r
+#define REG_PEVC_EVS10            REG_ACCESS(RwReg  , 0x400A6228U) /**< \brief (PEVC) Event Shaper 0 10 */\r
+#define REG_PEVC_EVS11            REG_ACCESS(RwReg  , 0x400A622CU) /**< \brief (PEVC) Event Shaper 0 11 */\r
+#define REG_PEVC_EVS12            REG_ACCESS(RwReg  , 0x400A6230U) /**< \brief (PEVC) Event Shaper 0 12 */\r
+#define REG_PEVC_EVS13            REG_ACCESS(RwReg  , 0x400A6234U) /**< \brief (PEVC) Event Shaper 0 13 */\r
+#define REG_PEVC_EVS14            REG_ACCESS(RwReg  , 0x400A6238U) /**< \brief (PEVC) Event Shaper 0 14 */\r
+#define REG_PEVC_EVS15            REG_ACCESS(RwReg  , 0x400A623CU) /**< \brief (PEVC) Event Shaper 0 15 */\r
+#define REG_PEVC_EVS16            REG_ACCESS(RwReg  , 0x400A6240U) /**< \brief (PEVC) Event Shaper 0 16 */\r
+#define REG_PEVC_EVS17            REG_ACCESS(RwReg  , 0x400A6244U) /**< \brief (PEVC) Event Shaper 0 17 */\r
+#define REG_PEVC_EVS18            REG_ACCESS(RwReg  , 0x400A6248U) /**< \brief (PEVC) Event Shaper 0 18 */\r
+#define REG_PEVC_EVS19            REG_ACCESS(RwReg  , 0x400A624CU) /**< \brief (PEVC) Event Shaper 0 19 */\r
+#define REG_PEVC_EVS20            REG_ACCESS(RwReg  , 0x400A6250U) /**< \brief (PEVC) Event Shaper 0 20 */\r
+#define REG_PEVC_EVS21            REG_ACCESS(RwReg  , 0x400A6254U) /**< \brief (PEVC) Event Shaper 0 21 */\r
+#define REG_PEVC_EVS22            REG_ACCESS(RwReg  , 0x400A6258U) /**< \brief (PEVC) Event Shaper 0 22 */\r
+#define REG_PEVC_EVS23            REG_ACCESS(RwReg  , 0x400A625CU) /**< \brief (PEVC) Event Shaper 0 23 */\r
+#define REG_PEVC_EVS24            REG_ACCESS(RwReg  , 0x400A6260U) /**< \brief (PEVC) Event Shaper 0 24 */\r
+#define REG_PEVC_EVS25            REG_ACCESS(RwReg  , 0x400A6264U) /**< \brief (PEVC) Event Shaper 0 25 */\r
+#define REG_PEVC_EVS26            REG_ACCESS(RwReg  , 0x400A6268U) /**< \brief (PEVC) Event Shaper 0 26 */\r
+#define REG_PEVC_EVS27            REG_ACCESS(RwReg  , 0x400A626CU) /**< \brief (PEVC) Event Shaper 0 27 */\r
+#define REG_PEVC_EVS28            REG_ACCESS(RwReg  , 0x400A6270U) /**< \brief (PEVC) Event Shaper 0 28 */\r
+#define REG_PEVC_EVS29            REG_ACCESS(RwReg  , 0x400A6274U) /**< \brief (PEVC) Event Shaper 0 29 */\r
+#define REG_PEVC_EVS30            REG_ACCESS(RwReg  , 0x400A6278U) /**< \brief (PEVC) Event Shaper 0 30 */\r
+#define REG_PEVC_IGFDR            REG_ACCESS(RwReg  , 0x400A6300U) /**< \brief (PEVC) Input Glitch Filter Divider Register */ \r
+#define REG_PEVC_PARAMETER        REG_ACCESS(RoReg  , 0x400A63F8U) /**< \brief (PEVC) Parameter */ \r
+#define REG_PEVC_VERSION          REG_ACCESS(RoReg  , 0x400A63FCU) /**< \brief (PEVC) Version */ \r
+/* ========== Register definition for AESA peripheral ========== */\r
+#define REG_AESA_CTRL             REG_ACCESS(RwReg  , 0x400B0000U) /**< \brief (AESA) Control Register */ \r
+#define REG_AESA_MODE             REG_ACCESS(RwReg  , 0x400B0004U) /**< \brief (AESA) Mode Register */ \r
+#define REG_AESA_DATABUFPTR       REG_ACCESS(RwReg  , 0x400B0008U) /**< \brief (AESA) Data Buffer Pointer Register */ \r
+#define REG_AESA_SR               REG_ACCESS(RoReg  , 0x400B000CU) /**< \brief (AESA) Status Register */ \r
+#define REG_AESA_IER              REG_ACCESS(WoReg  , 0x400B0010U) /**< \brief (AESA) Interrupt Enable Register */ \r
+#define REG_AESA_IDR              REG_ACCESS(WoReg  , 0x400B0014U) /**< \brief (AESA) Interrupt Disable Register */ \r
+#define REG_AESA_IMR              REG_ACCESS(RoReg  , 0x400B0018U) /**< \brief (AESA) Interrupt Mask Register */ \r
+#define REG_AESA_KEY0             REG_ACCESS(WoReg  , 0x400B0020U) /**< \brief (AESA) Key Register 0 0 */\r
+#define REG_AESA_KEY1             REG_ACCESS(WoReg  , 0x400B0024U) /**< \brief (AESA) Key Register 0 1 */\r
+#define REG_AESA_KEY2             REG_ACCESS(WoReg  , 0x400B0028U) /**< \brief (AESA) Key Register 0 2 */\r
+#define REG_AESA_KEY3             REG_ACCESS(WoReg  , 0x400B002CU) /**< \brief (AESA) Key Register 0 3 */\r
+#define REG_AESA_KEY4             REG_ACCESS(WoReg  , 0x400B0030U) /**< \brief (AESA) Key Register 0 4 */\r
+#define REG_AESA_KEY5             REG_ACCESS(WoReg  , 0x400B0034U) /**< \brief (AESA) Key Register 0 5 */\r
+#define REG_AESA_KEY6             REG_ACCESS(WoReg  , 0x400B0038U) /**< \brief (AESA) Key Register 0 6 */\r
+#define REG_AESA_KEY7             REG_ACCESS(WoReg  , 0x400B003CU) /**< \brief (AESA) Key Register 0 7 */\r
+#define REG_AESA_INITVECT0        REG_ACCESS(WoReg  , 0x400B0040U) /**< \brief (AESA) Initialization Vector Register 0 0 */\r
+#define REG_AESA_INITVECT1        REG_ACCESS(WoReg  , 0x400B0044U) /**< \brief (AESA) Initialization Vector Register 0 1 */\r
+#define REG_AESA_INITVECT2        REG_ACCESS(WoReg  , 0x400B0048U) /**< \brief (AESA) Initialization Vector Register 0 2 */\r
+#define REG_AESA_INITVECT3        REG_ACCESS(WoReg  , 0x400B004CU) /**< \brief (AESA) Initialization Vector Register 0 3 */\r
+#define REG_AESA_IDATA            REG_ACCESS(WoReg  , 0x400B0050U) /**< \brief (AESA) Input Data Register */ \r
+#define REG_AESA_ODATA            REG_ACCESS(RoReg  , 0x400B0060U) /**< \brief (AESA) Output Data Register */ \r
+#define REG_AESA_DRNGSEED         REG_ACCESS(WoReg  , 0x400B0070U) /**< \brief (AESA) DRNG Seed Register */ \r
+#define REG_AESA_PARAMETER        REG_ACCESS(RoReg  , 0x400B00F8U) /**< \brief (AESA) Parameter Register */ \r
+#define REG_AESA_VERSION          REG_ACCESS(RoReg  , 0x400B00FCU) /**< \brief (AESA) Version Register */ \r
+/* ========== Register definition for PM peripheral ========== */\r
+#define REG_PM_MCCTRL             REG_ACCESS(RwReg  , 0x400E0000U) /**< \brief (PM) Main Clock Control */ \r
+#define REG_PM_CPUSEL             REG_ACCESS(RwReg  , 0x400E0004U) /**< \brief (PM) CPU Clock Select */ \r
+#define REG_PM_PBASEL             REG_ACCESS(RwReg  , 0x400E000CU) /**< \brief (PM) PBA Clock Select */ \r
+#define REG_PM_PBBSEL             REG_ACCESS(RwReg  , 0x400E0010U) /**< \brief (PM) PBB Clock Select */ \r
+#define REG_PM_PBCSEL             REG_ACCESS(RwReg  , 0x400E0014U) /**< \brief (PM) PBC Clock Select */ \r
+#define REG_PM_PBDSEL             REG_ACCESS(RwReg  , 0x400E0018U) /**< \brief (PM) PBD Clock Select */ \r
+#define REG_PM_CPUMASK            REG_ACCESS(RwReg  , 0x400E0020U) /**< \brief (PM) CPU Mask */ \r
+#define REG_PM_HSBMASK            REG_ACCESS(RwReg  , 0x400E0024U) /**< \brief (PM) HSB Mask */ \r
+#define REG_PM_PBAMASK            REG_ACCESS(RwReg  , 0x400E0028U) /**< \brief (PM) PBA Mask */ \r
+#define REG_PM_PBBMASK            REG_ACCESS(RwReg  , 0x400E002CU) /**< \brief (PM) PBB Mask */ \r
+#define REG_PM_PBCMASK            REG_ACCESS(RwReg  , 0x400E0030U) /**< \brief (PM) PBC Mask */ \r
+#define REG_PM_PBDMASK            REG_ACCESS(RwReg  , 0x400E0034U) /**< \brief (PM) PBD Mask */ \r
+#define REG_PM_PBADIVMASK         REG_ACCESS(RwReg  , 0x400E0040U) /**< \brief (PM) PBA Divided Clock Mask */ \r
+#define REG_PM_CFDCTRL            REG_ACCESS(RwReg  , 0x400E0054U) /**< \brief (PM) Clock Failure Detector Control */ \r
+#define REG_PM_UNLOCK             REG_ACCESS(WoReg  , 0x400E0058U) /**< \brief (PM) Unlock Register */ \r
+#define REG_PM_IER                REG_ACCESS(WoReg  , 0x400E00C0U) /**< \brief (PM) Interrupt Enable Register */ \r
+#define REG_PM_IDR                REG_ACCESS(WoReg  , 0x400E00C4U) /**< \brief (PM) Interrupt Disable Register */ \r
+#define REG_PM_IMR                REG_ACCESS(RoReg  , 0x400E00C8U) /**< \brief (PM) Interrupt Mask Register */ \r
+#define REG_PM_ISR                REG_ACCESS(RoReg  , 0x400E00CCU) /**< \brief (PM) Interrupt Status Register */ \r
+#define REG_PM_ICR                REG_ACCESS(WoReg  , 0x400E00D0U) /**< \brief (PM) Interrupt Clear Register */ \r
+#define REG_PM_SR                 REG_ACCESS(RoReg  , 0x400E00D4U) /**< \brief (PM) Status Register */ \r
+#define REG_PM_PPCR               REG_ACCESS(RwReg  , 0x400E0160U) /**< \brief (PM) Peripheral Power Control Register */ \r
+#define REG_PM_RCAUSE             REG_ACCESS(RoReg  , 0x400E0180U) /**< \brief (PM) Reset Cause Register */ \r
+#define REG_PM_WCAUSE             REG_ACCESS(RoReg  , 0x400E0184U) /**< \brief (PM) Wake Cause Register */ \r
+#define REG_PM_AWEN               REG_ACCESS(RwReg  , 0x400E0188U) /**< \brief (PM) Asynchronous Wake Enable */ \r
+#define REG_PM_OBS                REG_ACCESS(RwReg  , 0x400E0190U) /**< \brief (PM) Obsvervability */ \r
+#define REG_PM_FASTSLEEP          REG_ACCESS(RwReg  , 0x400E0194U) /**< \brief (PM) Fast Sleep Register */ \r
+#define REG_PM_CONFIG             REG_ACCESS(RoReg  , 0x400E03F8U) /**< \brief (PM) Configuration Register */ \r
+#define REG_PM_VERSION            REG_ACCESS(RoReg  , 0x400E03FCU) /**< \brief (PM) Version Register */ \r
+/* ========== Register definition for CHIPID peripheral ========== */\r
+#define REG_CHIPID_CIDR           REG_ACCESS(RoReg  , 0x400E0740U) /**< \brief (CHIPID) Chip ID Register */ \r
+#define REG_CHIPID_EXID           REG_ACCESS(RoReg  , 0x400E0744U) /**< \brief (CHIPID) Chip ID Extension Register */ \r
+/* ========== Register definition for SCIF peripheral ========== */\r
+#define REG_SCIF_IER              REG_ACCESS(WoReg  , 0x400E0800U) /**< \brief (SCIF) Interrupt Enable Register */ \r
+#define REG_SCIF_IDR              REG_ACCESS(WoReg  , 0x400E0804U) /**< \brief (SCIF) Interrupt Disable Register */ \r
+#define REG_SCIF_IMR              REG_ACCESS(RoReg  , 0x400E0808U) /**< \brief (SCIF) Interrupt Mask Register */ \r
+#define REG_SCIF_ISR              REG_ACCESS(RoReg  , 0x400E080CU) /**< \brief (SCIF) Interrupt Status Register */ \r
+#define REG_SCIF_ICR              REG_ACCESS(WoReg  , 0x400E0810U) /**< \brief (SCIF) Interrupt Clear Register */ \r
+#define REG_SCIF_PCLKSR           REG_ACCESS(RoReg  , 0x400E0814U) /**< \brief (SCIF) Power and Clocks Status Register */ \r
+#define REG_SCIF_UNLOCK           REG_ACCESS(WoReg  , 0x400E0818U) /**< \brief (SCIF) Unlock Register */ \r
+#define REG_SCIF_CSCR             REG_ACCESS(RwReg  , 0x400E081CU) /**< \brief (SCIF) Chip Specific Configuration Register */ \r
+#define REG_SCIF_OSCCTRL0         REG_ACCESS(RwReg  , 0x400E0820U) /**< \brief (SCIF) Oscillator Control Register */ \r
+#define REG_SCIF_PLL0             REG_ACCESS(RwReg  , 0x400E0824U) /**< \brief (SCIF) PLL0 Control Register 0 */\r
+#define REG_SCIF_DFLL0CONF        REG_ACCESS(RwReg  , 0x400E0828U) /**< \brief (SCIF) DFLL0 Config Register */ \r
+#define REG_SCIF_DFLL0VAL         REG_ACCESS(RwReg  , 0x400E082CU) /**< \brief (SCIF) DFLL Value Register */ \r
+#define REG_SCIF_DFLL0MUL         REG_ACCESS(RwReg  , 0x400E0830U) /**< \brief (SCIF) DFLL0 Multiplier Register */ \r
+#define REG_SCIF_DFLL0STEP        REG_ACCESS(RwReg  , 0x400E0834U) /**< \brief (SCIF) DFLL0 Step Register */ \r
+#define REG_SCIF_DFLL0SSG         REG_ACCESS(RwReg  , 0x400E0838U) /**< \brief (SCIF) DFLL0 Spread Spectrum Generator Control Register */ \r
+#define REG_SCIF_DFLL0RATIO       REG_ACCESS(RoReg  , 0x400E083CU) /**< \brief (SCIF) DFLL0 Ratio Registe */ \r
+#define REG_SCIF_DFLL0SYNC        REG_ACCESS(WoReg  , 0x400E0840U) /**< \brief (SCIF) DFLL0 Synchronization Register */ \r
+#define REG_SCIF_RCCR             REG_ACCESS(RwReg  , 0x400E0844U) /**< \brief (SCIF) System RC Oscillator Calibration Register */ \r
+#define REG_SCIF_RCFASTCFG        REG_ACCESS(RwReg  , 0x400E0848U) /**< \brief (SCIF) 4/8/12 MHz RC Oscillator Configuration\r
+Register */ \r
+#define REG_SCIF_RCFASTSR         REG_ACCESS(RwReg  , 0x400E084CU) /**< \brief (SCIF) 4/8/12 MHz RC Oscillator Status Register */ \r
+#define REG_SCIF_RC80MCR          REG_ACCESS(RwReg  , 0x400E0850U) /**< \brief (SCIF) 80 MHz RC Oscillator Register */ \r
+#define REG_SCIF_HRPCR            REG_ACCESS(RwReg  , 0x400E0864U) /**< \brief (SCIF) High Resolution Prescaler Control Register */ \r
+#define REG_SCIF_FPCR             REG_ACCESS(RwReg  , 0x400E0868U) /**< \brief (SCIF) Fractional Prescaler Control Register */ \r
+#define REG_SCIF_FPMUL            REG_ACCESS(RwReg  , 0x400E086CU) /**< \brief (SCIF) Fractional Prescaler Multiplier Register */ \r
+#define REG_SCIF_FPDIV            REG_ACCESS(RwReg  , 0x400E0870U) /**< \brief (SCIF) Fractional Prescaler DIVIDER Register */ \r
+#define REG_SCIF_GCCTRL0          REG_ACCESS(RwReg  , 0x400E0874U) /**< \brief (SCIF) Generic Clock Control 0 */\r
+#define REG_SCIF_GCCTRL1          REG_ACCESS(RwReg  , 0x400E0878U) /**< \brief (SCIF) Generic Clock Control 1 */\r
+#define REG_SCIF_GCCTRL2          REG_ACCESS(RwReg  , 0x400E087CU) /**< \brief (SCIF) Generic Clock Control 2 */\r
+#define REG_SCIF_GCCTRL3          REG_ACCESS(RwReg  , 0x400E0880U) /**< \brief (SCIF) Generic Clock Control 3 */\r
+#define REG_SCIF_GCCTRL4          REG_ACCESS(RwReg  , 0x400E0884U) /**< \brief (SCIF) Generic Clock Control 4 */\r
+#define REG_SCIF_GCCTRL5          REG_ACCESS(RwReg  , 0x400E0888U) /**< \brief (SCIF) Generic Clock Control 5 */\r
+#define REG_SCIF_GCCTRL6          REG_ACCESS(RwReg  , 0x400E088CU) /**< \brief (SCIF) Generic Clock Control 6 */\r
+#define REG_SCIF_GCCTRL7          REG_ACCESS(RwReg  , 0x400E0890U) /**< \brief (SCIF) Generic Clock Control 7 */\r
+#define REG_SCIF_GCCTRL8          REG_ACCESS(RwReg  , 0x400E0894U) /**< \brief (SCIF) Generic Clock Control 8 */\r
+#define REG_SCIF_GCCTRL9          REG_ACCESS(RwReg  , 0x400E0898U) /**< \brief (SCIF) Generic Clock Control 9 */\r
+#define REG_SCIF_GCCTRL10         REG_ACCESS(RwReg  , 0x400E089CU) /**< \brief (SCIF) Generic Clock Control 10 */\r
+#define REG_SCIF_GCCTRL11         REG_ACCESS(RwReg  , 0x400E08A0U) /**< \brief (SCIF) Generic Clock Control 11 */\r
+#define REG_SCIF_RCFASTVERSION    REG_ACCESS(RoReg  , 0x400E0BD8U) /**< \brief (SCIF) 4/8/12 MHz RC Oscillator Version Register */ \r
+#define REG_SCIF_GCLKPRESCVERSION REG_ACCESS(RoReg  , 0x400E0BDCU) /**< \brief (SCIF) Generic Clock Prescaler Version Register */ \r
+#define REG_SCIF_PLLIFAVERSION    REG_ACCESS(RoReg  , 0x400E0BE0U) /**< \brief (SCIF) PLL Version Register */ \r
+#define REG_SCIF_OSCIFAVERSION    REG_ACCESS(RoReg  , 0x400E0BE4U) /**< \brief (SCIF) Oscillator 0 Version Register */ \r
+#define REG_SCIF_DFLLIFBVERSION   REG_ACCESS(RoReg  , 0x400E0BE8U) /**< \brief (SCIF) DFLL Version Register */ \r
+#define REG_SCIF_RCOSCIFAVERSION  REG_ACCESS(RoReg  , 0x400E0BECU) /**< \brief (SCIF) System RC Oscillator Version Register */ \r
+#define REG_SCIF_FLOVERSION       REG_ACCESS(RoReg  , 0x400E0BF0U) /**< \brief (SCIF) Frequency Locked Oscillator Version Register */ \r
+#define REG_SCIF_RC80MVERSION     REG_ACCESS(RoReg  , 0x400E0BF4U) /**< \brief (SCIF) 80MHz RC Oscillator Version Register */ \r
+#define REG_SCIF_GCLKIFVERSION    REG_ACCESS(RoReg  , 0x400E0BF8U) /**< \brief (SCIF) Generic Clock Version Register */ \r
+#define REG_SCIF_VERSION          REG_ACCESS(RoReg  , 0x400E0BFCU) /**< \brief (SCIF) SCIF Version Register */ \r
+/* ========== Register definition for FREQM peripheral ========== */\r
+#define REG_FREQM_CTRL            REG_ACCESS(WoReg  , 0x400E0C00U) /**< \brief (FREQM) Control register */ \r
+#define REG_FREQM_MODE            REG_ACCESS(RwReg  , 0x400E0C04U) /**< \brief (FREQM) Mode  register */ \r
+#define REG_FREQM_STATUS          REG_ACCESS(RoReg  , 0x400E0C08U) /**< \brief (FREQM) Status  register */ \r
+#define REG_FREQM_VALUE           REG_ACCESS(RoReg  , 0x400E0C0CU) /**< \brief (FREQM) Value register */ \r
+#define REG_FREQM_IER             REG_ACCESS(WoReg  , 0x400E0C10U) /**< \brief (FREQM) Interrupt Enable Register */ \r
+#define REG_FREQM_IDR             REG_ACCESS(WoReg  , 0x400E0C14U) /**< \brief (FREQM) Interrupt Diable Register */ \r
+#define REG_FREQM_IMR             REG_ACCESS(RoReg  , 0x400E0C18U) /**< \brief (FREQM) Interrupt Mask Register */ \r
+#define REG_FREQM_ISR             REG_ACCESS(RoReg  , 0x400E0C1CU) /**< \brief (FREQM) Interrupt Status Register */ \r
+#define REG_FREQM_ICR             REG_ACCESS(WoReg  , 0x400E0C20U) /**< \brief (FREQM) Interrupt Clear Register */ \r
+#define REG_FREQM_VERSION         REG_ACCESS(RoReg  , 0x400E0FFCU) /**< \brief (FREQM) Version Register */ \r
+/* ========== Register definition for GPIO peripheral ========== */\r
+#define REG_GPIO_GPER0            REG_ACCESS(RwReg  , 0x400E1000U) /**< \brief (GPIO) GPIO Enable Register 0 */\r
+#define REG_GPIO_GPERS0           REG_ACCESS(WoReg  , 0x400E1004U) /**< \brief (GPIO) GPIO Enable Register - Set 0 */\r
+#define REG_GPIO_GPERC0           REG_ACCESS(WoReg  , 0x400E1008U) /**< \brief (GPIO) GPIO Enable Register - Clear 0 */\r
+#define REG_GPIO_GPERT0           REG_ACCESS(WoReg  , 0x400E100CU) /**< \brief (GPIO) GPIO Enable Register - Toggle 0 */\r
+#define REG_GPIO_PMR00            REG_ACCESS(RwReg  , 0x400E1010U) /**< \brief (GPIO) Peripheral Mux Register 0 0 */\r
+#define REG_GPIO_PMR0S0           REG_ACCESS(WoReg  , 0x400E1014U) /**< \brief (GPIO) Peripheral Mux Register 0 - Set 0 */\r
+#define REG_GPIO_PMR0C0           REG_ACCESS(WoReg  , 0x400E1018U) /**< \brief (GPIO) Peripheral Mux Register 0 - Clear 0 */\r
+#define REG_GPIO_PMR0T0           REG_ACCESS(WoReg  , 0x400E101CU) /**< \brief (GPIO) Peripheral Mux Register 0 - Toggle 0 */\r
+#define REG_GPIO_PMR10            REG_ACCESS(RwReg  , 0x400E1020U) /**< \brief (GPIO) Peripheral Mux Register 1 0 */\r
+#define REG_GPIO_PMR1S0           REG_ACCESS(WoReg  , 0x400E1024U) /**< \brief (GPIO) Peripheral Mux Register 1 - Set 0 */\r
+#define REG_GPIO_PMR1C0           REG_ACCESS(WoReg  , 0x400E1028U) /**< \brief (GPIO) Peripheral Mux Register 1 - Clear 0 */\r
+#define REG_GPIO_PMR1T0           REG_ACCESS(WoReg  , 0x400E102CU) /**< \brief (GPIO) Peripheral Mux Register 1 - Toggle 0 */\r
+#define REG_GPIO_PMR20            REG_ACCESS(RwReg  , 0x400E1030U) /**< \brief (GPIO) Peripheral Mux Register 2 0 */\r
+#define REG_GPIO_PMR2S0           REG_ACCESS(WoReg  , 0x400E1034U) /**< \brief (GPIO) Peripheral Mux Register 2 - Set 0 */\r
+#define REG_GPIO_PMR2C0           REG_ACCESS(WoReg  , 0x400E1038U) /**< \brief (GPIO) Peripheral Mux Register 2 - Clear 0 */\r
+#define REG_GPIO_PMR2T0           REG_ACCESS(WoReg  , 0x400E103CU) /**< \brief (GPIO) Peripheral Mux Register 2 - Toggle 0 */\r
+#define REG_GPIO_ODER0            REG_ACCESS(RwReg  , 0x400E1040U) /**< \brief (GPIO) Output Driver Enable Register 0 */\r
+#define REG_GPIO_ODERS0           REG_ACCESS(WoReg  , 0x400E1044U) /**< \brief (GPIO) Output Driver Enable Register - Set 0 */\r
+#define REG_GPIO_ODERC0           REG_ACCESS(WoReg  , 0x400E1048U) /**< \brief (GPIO) Output Driver Enable Register - Clear 0 */\r
+#define REG_GPIO_ODERT0           REG_ACCESS(WoReg  , 0x400E104CU) /**< \brief (GPIO) Output Driver Enable Register - Toggle 0 */\r
+#define REG_GPIO_OVR0             REG_ACCESS(RwReg  , 0x400E1050U) /**< \brief (GPIO) Output Value Register 0 */\r
+#define REG_GPIO_OVRS0            REG_ACCESS(WoReg  , 0x400E1054U) /**< \brief (GPIO) Output Value Register - Set 0 */\r
+#define REG_GPIO_OVRC0            REG_ACCESS(WoReg  , 0x400E1058U) /**< \brief (GPIO) Output Value Register - Clear 0 */\r
+#define REG_GPIO_OVRT0            REG_ACCESS(WoReg  , 0x400E105CU) /**< \brief (GPIO) Output Value Register - Toggle 0 */\r
+#define REG_GPIO_PVR0             REG_ACCESS(RoReg  , 0x400E1060U) /**< \brief (GPIO) Pin Value Register 0 */\r
+#define REG_GPIO_PUER0            REG_ACCESS(RwReg  , 0x400E1070U) /**< \brief (GPIO) Pull-up Enable Register 0 */\r
+#define REG_GPIO_PUERS0           REG_ACCESS(WoReg  , 0x400E1074U) /**< \brief (GPIO) Pull-up Enable Register - Set 0 */\r
+#define REG_GPIO_PUERC0           REG_ACCESS(WoReg  , 0x400E1078U) /**< \brief (GPIO) Pull-up Enable Register - Clear 0 */\r
+#define REG_GPIO_PUERT0           REG_ACCESS(WoReg  , 0x400E107CU) /**< \brief (GPIO) Pull-up Enable Register - Toggle 0 */\r
+#define REG_GPIO_PDER0            REG_ACCESS(RwReg  , 0x400E1080U) /**< \brief (GPIO) Pull-down Enable Register 0 */\r
+#define REG_GPIO_PDERS0           REG_ACCESS(WoReg  , 0x400E1084U) /**< \brief (GPIO) Pull-down Enable Register - Set 0 */\r
+#define REG_GPIO_PDERC0           REG_ACCESS(WoReg  , 0x400E1088U) /**< \brief (GPIO) Pull-down Enable Register - Clear 0 */\r
+#define REG_GPIO_PDERT0           REG_ACCESS(WoReg  , 0x400E108CU) /**< \brief (GPIO) Pull-down Enable Register - Toggle 0 */\r
+#define REG_GPIO_IER0             REG_ACCESS(RwReg  , 0x400E1090U) /**< \brief (GPIO) Interrupt Enable Register 0 */\r
+#define REG_GPIO_IERS0            REG_ACCESS(WoReg  , 0x400E1094U) /**< \brief (GPIO) Interrupt Enable Register - Set 0 */\r
+#define REG_GPIO_IERC0            REG_ACCESS(WoReg  , 0x400E1098U) /**< \brief (GPIO) Interrupt Enable Register - Clear 0 */\r
+#define REG_GPIO_IERT0            REG_ACCESS(WoReg  , 0x400E109CU) /**< \brief (GPIO) Interrupt Enable Register - Toggle 0 */\r
+#define REG_GPIO_IMR00            REG_ACCESS(RwReg  , 0x400E10A0U) /**< \brief (GPIO) Interrupt Mode Register 0 0 */\r
+#define REG_GPIO_IMR0S0           REG_ACCESS(WoReg  , 0x400E10A4U) /**< \brief (GPIO) Interrupt Mode Register 0 - Set 0 */\r
+#define REG_GPIO_IMR0C0           REG_ACCESS(WoReg  , 0x400E10A8U) /**< \brief (GPIO) Interrupt Mode Register 0 - Clear 0 */\r
+#define REG_GPIO_IMR0T0           REG_ACCESS(WoReg  , 0x400E10ACU) /**< \brief (GPIO) Interrupt Mode Register 0 - Toggle 0 */\r
+#define REG_GPIO_IMR10            REG_ACCESS(RwReg  , 0x400E10B0U) /**< \brief (GPIO) Interrupt Mode Register 1 0 */\r
+#define REG_GPIO_IMR1S0           REG_ACCESS(WoReg  , 0x400E10B4U) /**< \brief (GPIO) Interrupt Mode Register 1 - Set 0 */\r
+#define REG_GPIO_IMR1C0           REG_ACCESS(WoReg  , 0x400E10B8U) /**< \brief (GPIO) Interrupt Mode Register 1 - Clear 0 */\r
+#define REG_GPIO_IMR1T0           REG_ACCESS(WoReg  , 0x400E10BCU) /**< \brief (GPIO) Interrupt Mode Register 1 - Toggle 0 */\r
+#define REG_GPIO_GFER0            REG_ACCESS(RwReg  , 0x400E10C0U) /**< \brief (GPIO) Glitch Filter Enable Register 0 */\r
+#define REG_GPIO_GFERS0           REG_ACCESS(WoReg  , 0x400E10C4U) /**< \brief (GPIO) Glitch Filter Enable Register - Set 0 */\r
+#define REG_GPIO_GFERC0           REG_ACCESS(WoReg  , 0x400E10C8U) /**< \brief (GPIO) Glitch Filter Enable Register - Clear 0 */\r
+#define REG_GPIO_GFERT0           REG_ACCESS(WoReg  , 0x400E10CCU) /**< \brief (GPIO) Glitch Filter Enable Register - Toggle 0 */\r
+#define REG_GPIO_IFR0             REG_ACCESS(RoReg  , 0x400E10D0U) /**< \brief (GPIO) Interrupt Flag Register 0 */\r
+#define REG_GPIO_IFRC0            REG_ACCESS(WoReg  , 0x400E10D8U) /**< \brief (GPIO) Interrupt Flag Register - Clear 0 */\r
+#define REG_GPIO_ODMER0           REG_ACCESS(RwReg  , 0x400E10E0U) /**< \brief (GPIO) Open Drain Mode Register 0 */\r
+#define REG_GPIO_ODMERS0          REG_ACCESS(WoReg  , 0x400E10E4U) /**< \brief (GPIO) Open Drain Mode Register - Set 0 */\r
+#define REG_GPIO_ODMERC0          REG_ACCESS(WoReg  , 0x400E10E8U) /**< \brief (GPIO) Open Drain Mode Register - Clear 0 */\r
+#define REG_GPIO_ODMERT0          REG_ACCESS(WoReg  , 0x400E10ECU) /**< \brief (GPIO) Open Drain Mode Register - Toggle 0 */\r
+#define REG_GPIO_ODCR00           REG_ACCESS(RwReg  , 0x400E1100U) /**< \brief (GPIO) Output Driving Capability Register 0 0 */\r
+#define REG_GPIO_ODCR0S0          REG_ACCESS(RwReg  , 0x400E1104U) /**< \brief (GPIO) Output Driving Capability Register 0 - Set 0 */\r
+#define REG_GPIO_ODCR0C0          REG_ACCESS(RwReg  , 0x400E1108U) /**< \brief (GPIO) Output Driving Capability Register 0 - Clear 0 */\r
+#define REG_GPIO_ODCR0T0          REG_ACCESS(RwReg  , 0x400E110CU) /**< \brief (GPIO) Output Driving Capability Register 0 - Toggle 0 */\r
+#define REG_GPIO_ODCR10           REG_ACCESS(RwReg  , 0x400E1110U) /**< \brief (GPIO) Output Driving Capability Register 1 0 */\r
+#define REG_GPIO_ODCR1S0          REG_ACCESS(RwReg  , 0x400E1114U) /**< \brief (GPIO) Output Driving Capability Register 1 - Set 0 */\r
+#define REG_GPIO_ODCR1C0          REG_ACCESS(RwReg  , 0x400E1118U) /**< \brief (GPIO) Output Driving Capability Register 1 - Clear 0 */\r
+#define REG_GPIO_ODCR1T0          REG_ACCESS(RwReg  , 0x400E111CU) /**< \brief (GPIO) Output Driving Capability Register 1 - Toggle 0 */\r
+#define REG_GPIO_OSRR00           REG_ACCESS(RwReg  , 0x400E1130U) /**< \brief (GPIO) Output Slew Rate Register 0 0 */\r
+#define REG_GPIO_OSRR0S0          REG_ACCESS(RwReg  , 0x400E1134U) /**< \brief (GPIO) Output Slew Rate Register 0 - Set 0 */\r
+#define REG_GPIO_OSRR0C0          REG_ACCESS(RwReg  , 0x400E1138U) /**< \brief (GPIO) Output Slew Rate Register 0 - Clear 0 */\r
+#define REG_GPIO_OSRR0T0          REG_ACCESS(RwReg  , 0x400E113CU) /**< \brief (GPIO) Output Slew Rate Register 0 - Toggle 0 */\r
+#define REG_GPIO_STER0            REG_ACCESS(RwReg  , 0x400E1160U) /**< \brief (GPIO) Schmitt Trigger Enable Register 0 */\r
+#define REG_GPIO_STERS0           REG_ACCESS(RwReg  , 0x400E1164U) /**< \brief (GPIO) Schmitt Trigger Enable Register - Set 0 */\r
+#define REG_GPIO_STERC0           REG_ACCESS(RwReg  , 0x400E1168U) /**< \brief (GPIO) Schmitt Trigger Enable Register - Clear 0 */\r
+#define REG_GPIO_STERT0           REG_ACCESS(RwReg  , 0x400E116CU) /**< \brief (GPIO) Schmitt Trigger Enable Register - Toggle 0 */\r
+#define REG_GPIO_EVER0            REG_ACCESS(RwReg  , 0x400E1180U) /**< \brief (GPIO) Event Enable Register 0 */\r
+#define REG_GPIO_EVERS0           REG_ACCESS(WoReg  , 0x400E1184U) /**< \brief (GPIO) Event Enable Register - Set 0 */\r
+#define REG_GPIO_EVERC0           REG_ACCESS(WoReg  , 0x400E1188U) /**< \brief (GPIO) Event Enable Register - Clear 0 */\r
+#define REG_GPIO_EVERT0           REG_ACCESS(WoReg  , 0x400E118CU) /**< \brief (GPIO) Event Enable Register - Toggle 0 */\r
+#define REG_GPIO_LOCK0            REG_ACCESS(RwReg  , 0x400E11A0U) /**< \brief (GPIO) Lock Register 0 */\r
+#define REG_GPIO_LOCKS0           REG_ACCESS(WoReg  , 0x400E11A4U) /**< \brief (GPIO) Lock Register - Set 0 */\r
+#define REG_GPIO_LOCKC0           REG_ACCESS(WoReg  , 0x400E11A8U) /**< \brief (GPIO) Lock Register - Clear 0 */\r
+#define REG_GPIO_LOCKT0           REG_ACCESS(WoReg  , 0x400E11ACU) /**< \brief (GPIO) Lock Register - Toggle 0 */\r
+#define REG_GPIO_UNLOCK0          REG_ACCESS(WoReg  , 0x400E11E0U) /**< \brief (GPIO) Unlock Register 0 */\r
+#define REG_GPIO_ASR0             REG_ACCESS(RwReg  , 0x400E11E4U) /**< \brief (GPIO) Access Status Register 0 */\r
+#define REG_GPIO_PARAMETER0       REG_ACCESS(RoReg  , 0x400E11F8U) /**< \brief (GPIO) Parameter Register 0 */\r
+#define REG_GPIO_VERSION0         REG_ACCESS(RoReg  , 0x400E11FCU) /**< \brief (GPIO) Version Register 0 */\r
+#define REG_GPIO_GPER1            REG_ACCESS(RwReg  , 0x400E1200U) /**< \brief (GPIO) GPIO Enable Register 1 */\r
+#define REG_GPIO_GPERS1           REG_ACCESS(WoReg  , 0x400E1204U) /**< \brief (GPIO) GPIO Enable Register - Set 1 */\r
+#define REG_GPIO_GPERC1           REG_ACCESS(WoReg  , 0x400E1208U) /**< \brief (GPIO) GPIO Enable Register - Clear 1 */\r
+#define REG_GPIO_GPERT1           REG_ACCESS(WoReg  , 0x400E120CU) /**< \brief (GPIO) GPIO Enable Register - Toggle 1 */\r
+#define REG_GPIO_PMR01            REG_ACCESS(RwReg  , 0x400E1210U) /**< \brief (GPIO) Peripheral Mux Register 0 1 */\r
+#define REG_GPIO_PMR0S1           REG_ACCESS(WoReg  , 0x400E1214U) /**< \brief (GPIO) Peripheral Mux Register 0 - Set 1 */\r
+#define REG_GPIO_PMR0C1           REG_ACCESS(WoReg  , 0x400E1218U) /**< \brief (GPIO) Peripheral Mux Register 0 - Clear 1 */\r
+#define REG_GPIO_PMR0T1           REG_ACCESS(WoReg  , 0x400E121CU) /**< \brief (GPIO) Peripheral Mux Register 0 - Toggle 1 */\r
+#define REG_GPIO_PMR11            REG_ACCESS(RwReg  , 0x400E1220U) /**< \brief (GPIO) Peripheral Mux Register 1 1 */\r
+#define REG_GPIO_PMR1S1           REG_ACCESS(WoReg  , 0x400E1224U) /**< \brief (GPIO) Peripheral Mux Register 1 - Set 1 */\r
+#define REG_GPIO_PMR1C1           REG_ACCESS(WoReg  , 0x400E1228U) /**< \brief (GPIO) Peripheral Mux Register 1 - Clear 1 */\r
+#define REG_GPIO_PMR1T1           REG_ACCESS(WoReg  , 0x400E122CU) /**< \brief (GPIO) Peripheral Mux Register 1 - Toggle 1 */\r
+#define REG_GPIO_PMR21            REG_ACCESS(RwReg  , 0x400E1230U) /**< \brief (GPIO) Peripheral Mux Register 2 1 */\r
+#define REG_GPIO_PMR2S1           REG_ACCESS(WoReg  , 0x400E1234U) /**< \brief (GPIO) Peripheral Mux Register 2 - Set 1 */\r
+#define REG_GPIO_PMR2C1           REG_ACCESS(WoReg  , 0x400E1238U) /**< \brief (GPIO) Peripheral Mux Register 2 - Clear 1 */\r
+#define REG_GPIO_PMR2T1           REG_ACCESS(WoReg  , 0x400E123CU) /**< \brief (GPIO) Peripheral Mux Register 2 - Toggle 1 */\r
+#define REG_GPIO_ODER1            REG_ACCESS(RwReg  , 0x400E1240U) /**< \brief (GPIO) Output Driver Enable Register 1 */\r
+#define REG_GPIO_ODERS1           REG_ACCESS(WoReg  , 0x400E1244U) /**< \brief (GPIO) Output Driver Enable Register - Set 1 */\r
+#define REG_GPIO_ODERC1           REG_ACCESS(WoReg  , 0x400E1248U) /**< \brief (GPIO) Output Driver Enable Register - Clear 1 */\r
+#define REG_GPIO_ODERT1           REG_ACCESS(WoReg  , 0x400E124CU) /**< \brief (GPIO) Output Driver Enable Register - Toggle 1 */\r
+#define REG_GPIO_OVR1             REG_ACCESS(RwReg  , 0x400E1250U) /**< \brief (GPIO) Output Value Register 1 */\r
+#define REG_GPIO_OVRS1            REG_ACCESS(WoReg  , 0x400E1254U) /**< \brief (GPIO) Output Value Register - Set 1 */\r
+#define REG_GPIO_OVRC1            REG_ACCESS(WoReg  , 0x400E1258U) /**< \brief (GPIO) Output Value Register - Clear 1 */\r
+#define REG_GPIO_OVRT1            REG_ACCESS(WoReg  , 0x400E125CU) /**< \brief (GPIO) Output Value Register - Toggle 1 */\r
+#define REG_GPIO_PVR1             REG_ACCESS(RoReg  , 0x400E1260U) /**< \brief (GPIO) Pin Value Register 1 */\r
+#define REG_GPIO_PUER1            REG_ACCESS(RwReg  , 0x400E1270U) /**< \brief (GPIO) Pull-up Enable Register 1 */\r
+#define REG_GPIO_PUERS1           REG_ACCESS(WoReg  , 0x400E1274U) /**< \brief (GPIO) Pull-up Enable Register - Set 1 */\r
+#define REG_GPIO_PUERC1           REG_ACCESS(WoReg  , 0x400E1278U) /**< \brief (GPIO) Pull-up Enable Register - Clear 1 */\r
+#define REG_GPIO_PUERT1           REG_ACCESS(WoReg  , 0x400E127CU) /**< \brief (GPIO) Pull-up Enable Register - Toggle 1 */\r
+#define REG_GPIO_PDER1            REG_ACCESS(RwReg  , 0x400E1280U) /**< \brief (GPIO) Pull-down Enable Register 1 */\r
+#define REG_GPIO_PDERS1           REG_ACCESS(WoReg  , 0x400E1284U) /**< \brief (GPIO) Pull-down Enable Register - Set 1 */\r
+#define REG_GPIO_PDERC1           REG_ACCESS(WoReg  , 0x400E1288U) /**< \brief (GPIO) Pull-down Enable Register - Clear 1 */\r
+#define REG_GPIO_PDERT1           REG_ACCESS(WoReg  , 0x400E128CU) /**< \brief (GPIO) Pull-down Enable Register - Toggle 1 */\r
+#define REG_GPIO_IER1             REG_ACCESS(RwReg  , 0x400E1290U) /**< \brief (GPIO) Interrupt Enable Register 1 */\r
+#define REG_GPIO_IERS1            REG_ACCESS(WoReg  , 0x400E1294U) /**< \brief (GPIO) Interrupt Enable Register - Set 1 */\r
+#define REG_GPIO_IERC1            REG_ACCESS(WoReg  , 0x400E1298U) /**< \brief (GPIO) Interrupt Enable Register - Clear 1 */\r
+#define REG_GPIO_IERT1            REG_ACCESS(WoReg  , 0x400E129CU) /**< \brief (GPIO) Interrupt Enable Register - Toggle 1 */\r
+#define REG_GPIO_IMR01            REG_ACCESS(RwReg  , 0x400E12A0U) /**< \brief (GPIO) Interrupt Mode Register 0 1 */\r
+#define REG_GPIO_IMR0S1           REG_ACCESS(WoReg  , 0x400E12A4U) /**< \brief (GPIO) Interrupt Mode Register 0 - Set 1 */\r
+#define REG_GPIO_IMR0C1           REG_ACCESS(WoReg  , 0x400E12A8U) /**< \brief (GPIO) Interrupt Mode Register 0 - Clear 1 */\r
+#define REG_GPIO_IMR0T1           REG_ACCESS(WoReg  , 0x400E12ACU) /**< \brief (GPIO) Interrupt Mode Register 0 - Toggle 1 */\r
+#define REG_GPIO_IMR11            REG_ACCESS(RwReg  , 0x400E12B0U) /**< \brief (GPIO) Interrupt Mode Register 1 1 */\r
+#define REG_GPIO_IMR1S1           REG_ACCESS(WoReg  , 0x400E12B4U) /**< \brief (GPIO) Interrupt Mode Register 1 - Set 1 */\r
+#define REG_GPIO_IMR1C1           REG_ACCESS(WoReg  , 0x400E12B8U) /**< \brief (GPIO) Interrupt Mode Register 1 - Clear 1 */\r
+#define REG_GPIO_IMR1T1           REG_ACCESS(WoReg  , 0x400E12BCU) /**< \brief (GPIO) Interrupt Mode Register 1 - Toggle 1 */\r
+#define REG_GPIO_GFER1            REG_ACCESS(RwReg  , 0x400E12C0U) /**< \brief (GPIO) Glitch Filter Enable Register 1 */\r
+#define REG_GPIO_GFERS1           REG_ACCESS(WoReg  , 0x400E12C4U) /**< \brief (GPIO) Glitch Filter Enable Register - Set 1 */\r
+#define REG_GPIO_GFERC1           REG_ACCESS(WoReg  , 0x400E12C8U) /**< \brief (GPIO) Glitch Filter Enable Register - Clear 1 */\r
+#define REG_GPIO_GFERT1           REG_ACCESS(WoReg  , 0x400E12CCU) /**< \brief (GPIO) Glitch Filter Enable Register - Toggle 1 */\r
+#define REG_GPIO_IFR1             REG_ACCESS(RoReg  , 0x400E12D0U) /**< \brief (GPIO) Interrupt Flag Register 1 */\r
+#define REG_GPIO_IFRC1            REG_ACCESS(WoReg  , 0x400E12D8U) /**< \brief (GPIO) Interrupt Flag Register - Clear 1 */\r
+#define REG_GPIO_ODMER1           REG_ACCESS(RwReg  , 0x400E12E0U) /**< \brief (GPIO) Open Drain Mode Register 1 */\r
+#define REG_GPIO_ODMERS1          REG_ACCESS(WoReg  , 0x400E12E4U) /**< \brief (GPIO) Open Drain Mode Register - Set 1 */\r
+#define REG_GPIO_ODMERC1          REG_ACCESS(WoReg  , 0x400E12E8U) /**< \brief (GPIO) Open Drain Mode Register - Clear 1 */\r
+#define REG_GPIO_ODMERT1          REG_ACCESS(WoReg  , 0x400E12ECU) /**< \brief (GPIO) Open Drain Mode Register - Toggle 1 */\r
+#define REG_GPIO_ODCR01           REG_ACCESS(RwReg  , 0x400E1300U) /**< \brief (GPIO) Output Driving Capability Register 0 1 */\r
+#define REG_GPIO_ODCR0S1          REG_ACCESS(RwReg  , 0x400E1304U) /**< \brief (GPIO) Output Driving Capability Register 0 - Set 1 */\r
+#define REG_GPIO_ODCR0C1          REG_ACCESS(RwReg  , 0x400E1308U) /**< \brief (GPIO) Output Driving Capability Register 0 - Clear 1 */\r
+#define REG_GPIO_ODCR0T1          REG_ACCESS(RwReg  , 0x400E130CU) /**< \brief (GPIO) Output Driving Capability Register 0 - Toggle 1 */\r
+#define REG_GPIO_ODCR11           REG_ACCESS(RwReg  , 0x400E1310U) /**< \brief (GPIO) Output Driving Capability Register 1 1 */\r
+#define REG_GPIO_ODCR1S1          REG_ACCESS(RwReg  , 0x400E1314U) /**< \brief (GPIO) Output Driving Capability Register 1 - Set 1 */\r
+#define REG_GPIO_ODCR1C1          REG_ACCESS(RwReg  , 0x400E1318U) /**< \brief (GPIO) Output Driving Capability Register 1 - Clear 1 */\r
+#define REG_GPIO_ODCR1T1          REG_ACCESS(RwReg  , 0x400E131CU) /**< \brief (GPIO) Output Driving Capability Register 1 - Toggle 1 */\r
+#define REG_GPIO_OSRR01           REG_ACCESS(RwReg  , 0x400E1330U) /**< \brief (GPIO) Output Slew Rate Register 0 1 */\r
+#define REG_GPIO_OSRR0S1          REG_ACCESS(RwReg  , 0x400E1334U) /**< \brief (GPIO) Output Slew Rate Register 0 - Set 1 */\r
+#define REG_GPIO_OSRR0C1          REG_ACCESS(RwReg  , 0x400E1338U) /**< \brief (GPIO) Output Slew Rate Register 0 - Clear 1 */\r
+#define REG_GPIO_OSRR0T1          REG_ACCESS(RwReg  , 0x400E133CU) /**< \brief (GPIO) Output Slew Rate Register 0 - Toggle 1 */\r
+#define REG_GPIO_STER1            REG_ACCESS(RwReg  , 0x400E1360U) /**< \brief (GPIO) Schmitt Trigger Enable Register 1 */\r
+#define REG_GPIO_STERS1           REG_ACCESS(RwReg  , 0x400E1364U) /**< \brief (GPIO) Schmitt Trigger Enable Register - Set 1 */\r
+#define REG_GPIO_STERC1           REG_ACCESS(RwReg  , 0x400E1368U) /**< \brief (GPIO) Schmitt Trigger Enable Register - Clear 1 */\r
+#define REG_GPIO_STERT1           REG_ACCESS(RwReg  , 0x400E136CU) /**< \brief (GPIO) Schmitt Trigger Enable Register - Toggle 1 */\r
+#define REG_GPIO_EVER1            REG_ACCESS(RwReg  , 0x400E1380U) /**< \brief (GPIO) Event Enable Register 1 */\r
+#define REG_GPIO_EVERS1           REG_ACCESS(WoReg  , 0x400E1384U) /**< \brief (GPIO) Event Enable Register - Set 1 */\r
+#define REG_GPIO_EVERC1           REG_ACCESS(WoReg  , 0x400E1388U) /**< \brief (GPIO) Event Enable Register - Clear 1 */\r
+#define REG_GPIO_EVERT1           REG_ACCESS(WoReg  , 0x400E138CU) /**< \brief (GPIO) Event Enable Register - Toggle 1 */\r
+#define REG_GPIO_LOCK1            REG_ACCESS(RwReg  , 0x400E13A0U) /**< \brief (GPIO) Lock Register 1 */\r
+#define REG_GPIO_LOCKS1           REG_ACCESS(WoReg  , 0x400E13A4U) /**< \brief (GPIO) Lock Register - Set 1 */\r
+#define REG_GPIO_LOCKC1           REG_ACCESS(WoReg  , 0x400E13A8U) /**< \brief (GPIO) Lock Register - Clear 1 */\r
+#define REG_GPIO_LOCKT1           REG_ACCESS(WoReg  , 0x400E13ACU) /**< \brief (GPIO) Lock Register - Toggle 1 */\r
+#define REG_GPIO_UNLOCK1          REG_ACCESS(WoReg  , 0x400E13E0U) /**< \brief (GPIO) Unlock Register 1 */\r
+#define REG_GPIO_ASR1             REG_ACCESS(RwReg  , 0x400E13E4U) /**< \brief (GPIO) Access Status Register 1 */\r
+#define REG_GPIO_PARAMETER1       REG_ACCESS(RoReg  , 0x400E13F8U) /**< \brief (GPIO) Parameter Register 1 */\r
+#define REG_GPIO_VERSION1         REG_ACCESS(RoReg  , 0x400E13FCU) /**< \brief (GPIO) Version Register 1 */\r
+#define REG_GPIO_GPER2            REG_ACCESS(RwReg  , 0x400E1400U) /**< \brief (GPIO) GPIO Enable Register 2 */\r
+#define REG_GPIO_GPERS2           REG_ACCESS(WoReg  , 0x400E1404U) /**< \brief (GPIO) GPIO Enable Register - Set 2 */\r
+#define REG_GPIO_GPERC2           REG_ACCESS(WoReg  , 0x400E1408U) /**< \brief (GPIO) GPIO Enable Register - Clear 2 */\r
+#define REG_GPIO_GPERT2           REG_ACCESS(WoReg  , 0x400E140CU) /**< \brief (GPIO) GPIO Enable Register - Toggle 2 */\r
+#define REG_GPIO_PMR02            REG_ACCESS(RwReg  , 0x400E1410U) /**< \brief (GPIO) Peripheral Mux Register 0 2 */\r
+#define REG_GPIO_PMR0S2           REG_ACCESS(WoReg  , 0x400E1414U) /**< \brief (GPIO) Peripheral Mux Register 0 - Set 2 */\r
+#define REG_GPIO_PMR0C2           REG_ACCESS(WoReg  , 0x400E1418U) /**< \brief (GPIO) Peripheral Mux Register 0 - Clear 2 */\r
+#define REG_GPIO_PMR0T2           REG_ACCESS(WoReg  , 0x400E141CU) /**< \brief (GPIO) Peripheral Mux Register 0 - Toggle 2 */\r
+#define REG_GPIO_PMR12            REG_ACCESS(RwReg  , 0x400E1420U) /**< \brief (GPIO) Peripheral Mux Register 1 2 */\r
+#define REG_GPIO_PMR1S2           REG_ACCESS(WoReg  , 0x400E1424U) /**< \brief (GPIO) Peripheral Mux Register 1 - Set 2 */\r
+#define REG_GPIO_PMR1C2           REG_ACCESS(WoReg  , 0x400E1428U) /**< \brief (GPIO) Peripheral Mux Register 1 - Clear 2 */\r
+#define REG_GPIO_PMR1T2           REG_ACCESS(WoReg  , 0x400E142CU) /**< \brief (GPIO) Peripheral Mux Register 1 - Toggle 2 */\r
+#define REG_GPIO_PMR22            REG_ACCESS(RwReg  , 0x400E1430U) /**< \brief (GPIO) Peripheral Mux Register 2 2 */\r
+#define REG_GPIO_PMR2S2           REG_ACCESS(WoReg  , 0x400E1434U) /**< \brief (GPIO) Peripheral Mux Register 2 - Set 2 */\r
+#define REG_GPIO_PMR2C2           REG_ACCESS(WoReg  , 0x400E1438U) /**< \brief (GPIO) Peripheral Mux Register 2 - Clear 2 */\r
+#define REG_GPIO_PMR2T2           REG_ACCESS(WoReg  , 0x400E143CU) /**< \brief (GPIO) Peripheral Mux Register 2 - Toggle 2 */\r
+#define REG_GPIO_ODER2            REG_ACCESS(RwReg  , 0x400E1440U) /**< \brief (GPIO) Output Driver Enable Register 2 */\r
+#define REG_GPIO_ODERS2           REG_ACCESS(WoReg  , 0x400E1444U) /**< \brief (GPIO) Output Driver Enable Register - Set 2 */\r
+#define REG_GPIO_ODERC2           REG_ACCESS(WoReg  , 0x400E1448U) /**< \brief (GPIO) Output Driver Enable Register - Clear 2 */\r
+#define REG_GPIO_ODERT2           REG_ACCESS(WoReg  , 0x400E144CU) /**< \brief (GPIO) Output Driver Enable Register - Toggle 2 */\r
+#define REG_GPIO_OVR2             REG_ACCESS(RwReg  , 0x400E1450U) /**< \brief (GPIO) Output Value Register 2 */\r
+#define REG_GPIO_OVRS2            REG_ACCESS(WoReg  , 0x400E1454U) /**< \brief (GPIO) Output Value Register - Set 2 */\r
+#define REG_GPIO_OVRC2            REG_ACCESS(WoReg  , 0x400E1458U) /**< \brief (GPIO) Output Value Register - Clear 2 */\r
+#define REG_GPIO_OVRT2            REG_ACCESS(WoReg  , 0x400E145CU) /**< \brief (GPIO) Output Value Register - Toggle 2 */\r
+#define REG_GPIO_PVR2             REG_ACCESS(RoReg  , 0x400E1460U) /**< \brief (GPIO) Pin Value Register 2 */\r
+#define REG_GPIO_PUER2            REG_ACCESS(RwReg  , 0x400E1470U) /**< \brief (GPIO) Pull-up Enable Register 2 */\r
+#define REG_GPIO_PUERS2           REG_ACCESS(WoReg  , 0x400E1474U) /**< \brief (GPIO) Pull-up Enable Register - Set 2 */\r
+#define REG_GPIO_PUERC2           REG_ACCESS(WoReg  , 0x400E1478U) /**< \brief (GPIO) Pull-up Enable Register - Clear 2 */\r
+#define REG_GPIO_PUERT2           REG_ACCESS(WoReg  , 0x400E147CU) /**< \brief (GPIO) Pull-up Enable Register - Toggle 2 */\r
+#define REG_GPIO_PDER2            REG_ACCESS(RwReg  , 0x400E1480U) /**< \brief (GPIO) Pull-down Enable Register 2 */\r
+#define REG_GPIO_PDERS2           REG_ACCESS(WoReg  , 0x400E1484U) /**< \brief (GPIO) Pull-down Enable Register - Set 2 */\r
+#define REG_GPIO_PDERC2           REG_ACCESS(WoReg  , 0x400E1488U) /**< \brief (GPIO) Pull-down Enable Register - Clear 2 */\r
+#define REG_GPIO_PDERT2           REG_ACCESS(WoReg  , 0x400E148CU) /**< \brief (GPIO) Pull-down Enable Register - Toggle 2 */\r
+#define REG_GPIO_IER2             REG_ACCESS(RwReg  , 0x400E1490U) /**< \brief (GPIO) Interrupt Enable Register 2 */\r
+#define REG_GPIO_IERS2            REG_ACCESS(WoReg  , 0x400E1494U) /**< \brief (GPIO) Interrupt Enable Register - Set 2 */\r
+#define REG_GPIO_IERC2            REG_ACCESS(WoReg  , 0x400E1498U) /**< \brief (GPIO) Interrupt Enable Register - Clear 2 */\r
+#define REG_GPIO_IERT2            REG_ACCESS(WoReg  , 0x400E149CU) /**< \brief (GPIO) Interrupt Enable Register - Toggle 2 */\r
+#define REG_GPIO_IMR02            REG_ACCESS(RwReg  , 0x400E14A0U) /**< \brief (GPIO) Interrupt Mode Register 0 2 */\r
+#define REG_GPIO_IMR0S2           REG_ACCESS(WoReg  , 0x400E14A4U) /**< \brief (GPIO) Interrupt Mode Register 0 - Set 2 */\r
+#define REG_GPIO_IMR0C2           REG_ACCESS(WoReg  , 0x400E14A8U) /**< \brief (GPIO) Interrupt Mode Register 0 - Clear 2 */\r
+#define REG_GPIO_IMR0T2           REG_ACCESS(WoReg  , 0x400E14ACU) /**< \brief (GPIO) Interrupt Mode Register 0 - Toggle 2 */\r
+#define REG_GPIO_IMR12            REG_ACCESS(RwReg  , 0x400E14B0U) /**< \brief (GPIO) Interrupt Mode Register 1 2 */\r
+#define REG_GPIO_IMR1S2           REG_ACCESS(WoReg  , 0x400E14B4U) /**< \brief (GPIO) Interrupt Mode Register 1 - Set 2 */\r
+#define REG_GPIO_IMR1C2           REG_ACCESS(WoReg  , 0x400E14B8U) /**< \brief (GPIO) Interrupt Mode Register 1 - Clear 2 */\r
+#define REG_GPIO_IMR1T2           REG_ACCESS(WoReg  , 0x400E14BCU) /**< \brief (GPIO) Interrupt Mode Register 1 - Toggle 2 */\r
+#define REG_GPIO_GFER2            REG_ACCESS(RwReg  , 0x400E14C0U) /**< \brief (GPIO) Glitch Filter Enable Register 2 */\r
+#define REG_GPIO_GFERS2           REG_ACCESS(WoReg  , 0x400E14C4U) /**< \brief (GPIO) Glitch Filter Enable Register - Set 2 */\r
+#define REG_GPIO_GFERC2           REG_ACCESS(WoReg  , 0x400E14C8U) /**< \brief (GPIO) Glitch Filter Enable Register - Clear 2 */\r
+#define REG_GPIO_GFERT2           REG_ACCESS(WoReg  , 0x400E14CCU) /**< \brief (GPIO) Glitch Filter Enable Register - Toggle 2 */\r
+#define REG_GPIO_IFR2             REG_ACCESS(RoReg  , 0x400E14D0U) /**< \brief (GPIO) Interrupt Flag Register 2 */\r
+#define REG_GPIO_IFRC2            REG_ACCESS(WoReg  , 0x400E14D8U) /**< \brief (GPIO) Interrupt Flag Register - Clear 2 */\r
+#define REG_GPIO_ODMER2           REG_ACCESS(RwReg  , 0x400E14E0U) /**< \brief (GPIO) Open Drain Mode Register 2 */\r
+#define REG_GPIO_ODMERS2          REG_ACCESS(WoReg  , 0x400E14E4U) /**< \brief (GPIO) Open Drain Mode Register - Set 2 */\r
+#define REG_GPIO_ODMERC2          REG_ACCESS(WoReg  , 0x400E14E8U) /**< \brief (GPIO) Open Drain Mode Register - Clear 2 */\r
+#define REG_GPIO_ODMERT2          REG_ACCESS(WoReg  , 0x400E14ECU) /**< \brief (GPIO) Open Drain Mode Register - Toggle 2 */\r
+#define REG_GPIO_ODCR02           REG_ACCESS(RwReg  , 0x400E1500U) /**< \brief (GPIO) Output Driving Capability Register 0 2 */\r
+#define REG_GPIO_ODCR0S2          REG_ACCESS(RwReg  , 0x400E1504U) /**< \brief (GPIO) Output Driving Capability Register 0 - Set 2 */\r
+#define REG_GPIO_ODCR0C2          REG_ACCESS(RwReg  , 0x400E1508U) /**< \brief (GPIO) Output Driving Capability Register 0 - Clear 2 */\r
+#define REG_GPIO_ODCR0T2          REG_ACCESS(RwReg  , 0x400E150CU) /**< \brief (GPIO) Output Driving Capability Register 0 - Toggle 2 */\r
+#define REG_GPIO_ODCR12           REG_ACCESS(RwReg  , 0x400E1510U) /**< \brief (GPIO) Output Driving Capability Register 1 2 */\r
+#define REG_GPIO_ODCR1S2          REG_ACCESS(RwReg  , 0x400E1514U) /**< \brief (GPIO) Output Driving Capability Register 1 - Set 2 */\r
+#define REG_GPIO_ODCR1C2          REG_ACCESS(RwReg  , 0x400E1518U) /**< \brief (GPIO) Output Driving Capability Register 1 - Clear 2 */\r
+#define REG_GPIO_ODCR1T2          REG_ACCESS(RwReg  , 0x400E151CU) /**< \brief (GPIO) Output Driving Capability Register 1 - Toggle 2 */\r
+#define REG_GPIO_OSRR02           REG_ACCESS(RwReg  , 0x400E1530U) /**< \brief (GPIO) Output Slew Rate Register 0 2 */\r
+#define REG_GPIO_OSRR0S2          REG_ACCESS(RwReg  , 0x400E1534U) /**< \brief (GPIO) Output Slew Rate Register 0 - Set 2 */\r
+#define REG_GPIO_OSRR0C2          REG_ACCESS(RwReg  , 0x400E1538U) /**< \brief (GPIO) Output Slew Rate Register 0 - Clear 2 */\r
+#define REG_GPIO_OSRR0T2          REG_ACCESS(RwReg  , 0x400E153CU) /**< \brief (GPIO) Output Slew Rate Register 0 - Toggle 2 */\r
+#define REG_GPIO_STER2            REG_ACCESS(RwReg  , 0x400E1560U) /**< \brief (GPIO) Schmitt Trigger Enable Register 2 */\r
+#define REG_GPIO_STERS2           REG_ACCESS(RwReg  , 0x400E1564U) /**< \brief (GPIO) Schmitt Trigger Enable Register - Set 2 */\r
+#define REG_GPIO_STERC2           REG_ACCESS(RwReg  , 0x400E1568U) /**< \brief (GPIO) Schmitt Trigger Enable Register - Clear 2 */\r
+#define REG_GPIO_STERT2           REG_ACCESS(RwReg  , 0x400E156CU) /**< \brief (GPIO) Schmitt Trigger Enable Register - Toggle 2 */\r
+#define REG_GPIO_EVER2            REG_ACCESS(RwReg  , 0x400E1580U) /**< \brief (GPIO) Event Enable Register 2 */\r
+#define REG_GPIO_EVERS2           REG_ACCESS(WoReg  , 0x400E1584U) /**< \brief (GPIO) Event Enable Register - Set 2 */\r
+#define REG_GPIO_EVERC2           REG_ACCESS(WoReg  , 0x400E1588U) /**< \brief (GPIO) Event Enable Register - Clear 2 */\r
+#define REG_GPIO_EVERT2           REG_ACCESS(WoReg  , 0x400E158CU) /**< \brief (GPIO) Event Enable Register - Toggle 2 */\r
+#define REG_GPIO_LOCK2            REG_ACCESS(RwReg  , 0x400E15A0U) /**< \brief (GPIO) Lock Register 2 */\r
+#define REG_GPIO_LOCKS2           REG_ACCESS(WoReg  , 0x400E15A4U) /**< \brief (GPIO) Lock Register - Set 2 */\r
+#define REG_GPIO_LOCKC2           REG_ACCESS(WoReg  , 0x400E15A8U) /**< \brief (GPIO) Lock Register - Clear 2 */\r
+#define REG_GPIO_LOCKT2           REG_ACCESS(WoReg  , 0x400E15ACU) /**< \brief (GPIO) Lock Register - Toggle 2 */\r
+#define REG_GPIO_UNLOCK2          REG_ACCESS(WoReg  , 0x400E15E0U) /**< \brief (GPIO) Unlock Register 2 */\r
+#define REG_GPIO_ASR2             REG_ACCESS(RwReg  , 0x400E15E4U) /**< \brief (GPIO) Access Status Register 2 */\r
+#define REG_GPIO_PARAMETER2       REG_ACCESS(RoReg  , 0x400E15F8U) /**< \brief (GPIO) Parameter Register 2 */\r
+#define REG_GPIO_VERSION2         REG_ACCESS(RoReg  , 0x400E15FCU) /**< \brief (GPIO) Version Register 2 */\r
+/* ========== Register definition for BPM peripheral ========== */\r
+#define REG_BPM_IER               REG_ACCESS(WoReg  , 0x400F0000U) /**< \brief (BPM) Interrupt Enable Register */ \r
+#define REG_BPM_IDR               REG_ACCESS(WoReg  , 0x400F0004U) /**< \brief (BPM) Interrupt Disable Register */ \r
+#define REG_BPM_IMR               REG_ACCESS(RoReg  , 0x400F0008U) /**< \brief (BPM) Interrupt Mask Register */ \r
+#define REG_BPM_ISR               REG_ACCESS(RoReg  , 0x400F000CU) /**< \brief (BPM) Interrupt Status Register */ \r
+#define REG_BPM_ICR               REG_ACCESS(WoReg  , 0x400F0010U) /**< \brief (BPM) Interrupt Clear Register */ \r
+#define REG_BPM_SR                REG_ACCESS(RoReg  , 0x400F0014U) /**< \brief (BPM) Status Register */ \r
+#define REG_BPM_UNLOCK            REG_ACCESS(WoReg  , 0x400F0018U) /**< \brief (BPM) Unlock Register */ \r
+#define REG_BPM_PMCON             REG_ACCESS(RwReg  , 0x400F001CU) /**< \brief (BPM) Power Mode Control Register */ \r
+#define REG_BPM_BKUPWCAUSE        REG_ACCESS(RoReg  , 0x400F0028U) /**< \brief (BPM) Backup Wake up Cause Register */ \r
+#define REG_BPM_BKUPWEN           REG_ACCESS(RwReg  , 0x400F002CU) /**< \brief (BPM) Backup Wake up Enable Register */ \r
+#define REG_BPM_BKUPPMUX          REG_ACCESS(RwReg  , 0x400F0030U) /**< \brief (BPM) Backup Pin Muxing Register */ \r
+#define REG_BPM_IORET             REG_ACCESS(RwReg  , 0x400F0034U) /**< \brief (BPM) Input Output Retention Register */ \r
+#define REG_BPM_BPR               REG_ACCESS(RwReg  , 0x400F0040U) /**< \brief (BPM) Bypass Register */ \r
+#define REG_BPM_FWRUNPS           REG_ACCESS(RoReg  , 0x400F0044U) /**< \brief (BPM) Factory Word Run PS Register */ \r
+#define REG_BPM_FWPSAVEPS         REG_ACCESS(RoReg  , 0x400F0048U) /**< \brief (BPM) Factory Word Power Save PS Register */ \r
+#define REG_BPM_VERSION           REG_ACCESS(RoReg  , 0x400F00FCU) /**< \brief (BPM) Version Register */ \r
+/* ========== Register definition for BSCIF peripheral ========== */\r
+#define REG_BSCIF_IER             REG_ACCESS(WoReg  , 0x400F0400U) /**< \brief (BSCIF) Interrupt Enable Register */ \r
+#define REG_BSCIF_IDR             REG_ACCESS(WoReg  , 0x400F0404U) /**< \brief (BSCIF) Interrupt Disable Register */ \r
+#define REG_BSCIF_IMR             REG_ACCESS(RoReg  , 0x400F0408U) /**< \brief (BSCIF) Interrupt Mask Register */ \r
+#define REG_BSCIF_ISR             REG_ACCESS(RoReg  , 0x400F040CU) /**< \brief (BSCIF) Interrupt Status Register */ \r
+#define REG_BSCIF_ICR             REG_ACCESS(WoReg  , 0x400F0410U) /**< \brief (BSCIF) Interrupt Clear Register */ \r
+#define REG_BSCIF_PCLKSR          REG_ACCESS(RoReg  , 0x400F0414U) /**< \brief (BSCIF) Power and Clocks Status Register */ \r
+#define REG_BSCIF_UNLOCK          REG_ACCESS(WoReg  , 0x400F0418U) /**< \brief (BSCIF) Unlock Register */ \r
+#define REG_BSCIF_CSCR            REG_ACCESS(RwReg  , 0x400F041CU) /**< \brief (BSCIF) Chip Specific Configuration Register */ \r
+#define REG_BSCIF_OSCCTRL32       REG_ACCESS(RwReg  , 0x400F0420U) /**< \brief (BSCIF) Oscillator 32 Control Register */ \r
+#define REG_BSCIF_RC32KCR         REG_ACCESS(RwReg  , 0x400F0424U) /**< \brief (BSCIF) 32 kHz RC Oscillator Control Register */ \r
+#define REG_BSCIF_RC32KTUNE       REG_ACCESS(RwReg  , 0x400F0428U) /**< \brief (BSCIF) 32kHz RC Oscillator Tuning Register */ \r
+#define REG_BSCIF_BOD33CTRL       REG_ACCESS(RwReg  , 0x400F042CU) /**< \brief (BSCIF) BOD33 Control Register */ \r
+#define REG_BSCIF_BOD33LEVEL      REG_ACCESS(RwReg  , 0x400F0430U) /**< \brief (BSCIF) BOD33 Level Register */ \r
+#define REG_BSCIF_BOD33SAMPLING   REG_ACCESS(RwReg  , 0x400F0434U) /**< \brief (BSCIF) BOD33 Sampling Control Register */ \r
+#define REG_BSCIF_BOD18CTRL       REG_ACCESS(RwReg  , 0x400F0438U) /**< \brief (BSCIF) BOD18 Control Register */ \r
+#define REG_BSCIF_BOD18LEVEL      REG_ACCESS(RwReg  , 0x400F043CU) /**< \brief (BSCIF) BOD18 Level Register */ \r
+#define REG_BSCIF_VREGCR          REG_ACCESS(RwReg  , 0x400F0444U) /**< \brief (BSCIF) Voltage Regulator Configuration Register */ \r
+#define REG_BSCIF_VREGNCSR        REG_ACCESS(RwReg  , 0x400F044CU) /**< \brief (BSCIF) Normal Mode Control and Status Register */ \r
+#define REG_BSCIF_VREGLPCSR       REG_ACCESS(RwReg  , 0x400F0450U) /**< \brief (BSCIF) LP Mode Control and Status Register */ \r
+#define REG_BSCIF_RC1MCR          REG_ACCESS(RwReg  , 0x400F0458U) /**< \brief (BSCIF) 1MHz RC Clock Configuration Register */ \r
+#define REG_BSCIF_BGCR            REG_ACCESS(RwReg  , 0x400F045CU) /**< \brief (BSCIF) Bandgap Calibration Register */ \r
+#define REG_BSCIF_BGCTRL          REG_ACCESS(RwReg  , 0x400F0460U) /**< \brief (BSCIF) Bandgap Control Register */ \r
+#define REG_BSCIF_BGSR            REG_ACCESS(RoReg  , 0x400F0464U) /**< \brief (BSCIF) Bandgap Status Register */ \r
+#define REG_BSCIF_BR0             REG_ACCESS(RwReg  , 0x400F0478U) /**< \brief (BSCIF) Backup Register 0 */\r
+#define REG_BSCIF_BR1             REG_ACCESS(RwReg  , 0x400F047CU) /**< \brief (BSCIF) Backup Register 1 */\r
+#define REG_BSCIF_BR2             REG_ACCESS(RwReg  , 0x400F0480U) /**< \brief (BSCIF) Backup Register 2 */\r
+#define REG_BSCIF_BR3             REG_ACCESS(RwReg  , 0x400F0484U) /**< \brief (BSCIF) Backup Register 3 */\r
+#define REG_BSCIF_BRIFBVERSION    REG_ACCESS(RoReg  , 0x400F07E4U) /**< \brief (BSCIF) Backup Register Interface Version Register */ \r
+#define REG_BSCIF_BGREFIFBVERSION REG_ACCESS(RoReg  , 0x400F07E8U) /**< \brief (BSCIF) BGREFIFB Version Register */ \r
+#define REG_BSCIF_VREGIFGVERSION  REG_ACCESS(RoReg  , 0x400F07ECU) /**< \brief (BSCIF) VREGIFA Version Register */ \r
+#define REG_BSCIF_BODIFCVERSION   REG_ACCESS(RoReg  , 0x400F07F0U) /**< \brief (BSCIF) BODIFC Version Register */ \r
+#define REG_BSCIF_RC32KIFBVERSION REG_ACCESS(RoReg  , 0x400F07F4U) /**< \brief (BSCIF) 32 kHz RC Oscillator Version Register */ \r
+#define REG_BSCIF_OSC32IFAVERSION REG_ACCESS(RoReg  , 0x400F07F8U) /**< \brief (BSCIF) 32 KHz Oscillator Version Register */ \r
+#define REG_BSCIF_VERSION         REG_ACCESS(RoReg  , 0x400F07FCU) /**< \brief (BSCIF) BSCIF Version Register */ \r
+/* ========== Register definition for AST peripheral ========== */\r
+#define REG_AST_CR                REG_ACCESS(RwReg  , 0x400F0800U) /**< \brief (AST) Control Register */ \r
+#define REG_AST_CV                REG_ACCESS(RwReg  , 0x400F0804U) /**< \brief (AST) Counter Value */ \r
+#define REG_AST_SR                REG_ACCESS(RoReg  , 0x400F0808U) /**< \brief (AST) Status Register */ \r
+#define REG_AST_SCR               REG_ACCESS(WoReg  , 0x400F080CU) /**< \brief (AST) Status Clear Register */ \r
+#define REG_AST_IER               REG_ACCESS(WoReg  , 0x400F0810U) /**< \brief (AST) Interrupt Enable Register */ \r
+#define REG_AST_IDR               REG_ACCESS(WoReg  , 0x400F0814U) /**< \brief (AST) Interrupt Disable Register */ \r
+#define REG_AST_IMR               REG_ACCESS(RoReg  , 0x400F0818U) /**< \brief (AST) Interrupt Mask Register */ \r
+#define REG_AST_WER               REG_ACCESS(RwReg  , 0x400F081CU) /**< \brief (AST) Wake Enable Register */ \r
+#define REG_AST_AR0               REG_ACCESS(RwReg  , 0x400F0820U) /**< \brief (AST) Alarm Register 0 */ \r
+#define REG_AST_AR1               REG_ACCESS(RwReg  , 0x400F0824U) /**< \brief (AST) Alarm Register 1 */ \r
+#define REG_AST_PIR0              REG_ACCESS(RwReg  , 0x400F0830U) /**< \brief (AST) Periodic Interval Register 0 */ \r
+#define REG_AST_PIR1              REG_ACCESS(RwReg  , 0x400F0834U) /**< \brief (AST) Periodic Interval Register 1 */ \r
+#define REG_AST_CLOCK             REG_ACCESS(RwReg  , 0x400F0840U) /**< \brief (AST) Clock Control Register */ \r
+#define REG_AST_DTR               REG_ACCESS(RwReg  , 0x400F0844U) /**< \brief (AST) Digital Tuner Register */ \r
+#define REG_AST_EVE               REG_ACCESS(WoReg  , 0x400F0848U) /**< \brief (AST) Event Enable Register */ \r
+#define REG_AST_EVD               REG_ACCESS(WoReg  , 0x400F084CU) /**< \brief (AST) Event Disable Register */ \r
+#define REG_AST_EVM               REG_ACCESS(RoReg  , 0x400F0850U) /**< \brief (AST) Event Mask Register */ \r
+#define REG_AST_CALV              REG_ACCESS(RwReg  , 0x400F0854U) /**< \brief (AST) Calendar Value */ \r
+#define REG_AST_PARAMETER         REG_ACCESS(RoReg  , 0x400F08F0U) /**< \brief (AST) Parameter Register */ \r
+#define REG_AST_VERSION           REG_ACCESS(RoReg  , 0x400F08FCU) /**< \brief (AST) Version Register */ \r
+/* ========== Register definition for WDT peripheral ========== */\r
+#define REG_WDT_CTRL              REG_ACCESS(RwReg  , 0x400F0C00U) /**< \brief (WDT) Control Register */ \r
+#define REG_WDT_CLR               REG_ACCESS(WoReg  , 0x400F0C04U) /**< \brief (WDT) Clear Register */ \r
+#define REG_WDT_SR                REG_ACCESS(RoReg  , 0x400F0C08U) /**< \brief (WDT) Status Register */ \r
+#define REG_WDT_IER               REG_ACCESS(WoReg  , 0x400F0C0CU) /**< \brief (WDT) Interrupt Enable Register */ \r
+#define REG_WDT_IDR               REG_ACCESS(WoReg  , 0x400F0C10U) /**< \brief (WDT) Interrupt Disable Register */ \r
+#define REG_WDT_IMR               REG_ACCESS(RoReg  , 0x400F0C14U) /**< \brief (WDT) Interrupt Mask Register */ \r
+#define REG_WDT_ISR               REG_ACCESS(RoReg  , 0x400F0C18U) /**< \brief (WDT) Interrupt Status Register */ \r
+#define REG_WDT_ICR               REG_ACCESS(WoReg  , 0x400F0C1CU) /**< \brief (WDT) Interrupt Clear Register */ \r
+#define REG_WDT_VERSION           REG_ACCESS(RoReg  , 0x400F0FFCU) /**< \brief (WDT) Version Register */ \r
+/* ========== Register definition for EIC peripheral ========== */\r
+#define REG_EIC_IER               REG_ACCESS(WoReg  , 0x400F1000U) /**< \brief (EIC) Interrupt Enable Register */ \r
+#define REG_EIC_IDR               REG_ACCESS(WoReg  , 0x400F1004U) /**< \brief (EIC) Interrupt Disable Register */ \r
+#define REG_EIC_IMR               REG_ACCESS(RoReg  , 0x400F1008U) /**< \brief (EIC) Interrupt Mask Register */ \r
+#define REG_EIC_ISR               REG_ACCESS(RoReg  , 0x400F100CU) /**< \brief (EIC) Interrupt Status Register */ \r
+#define REG_EIC_ICR               REG_ACCESS(WoReg  , 0x400F1010U) /**< \brief (EIC) Interrupt Clear Register */ \r
+#define REG_EIC_MODE              REG_ACCESS(RwReg  , 0x400F1014U) /**< \brief (EIC) Mode Register */ \r
+#define REG_EIC_EDGE              REG_ACCESS(RwReg  , 0x400F1018U) /**< \brief (EIC) Edge Register */ \r
+#define REG_EIC_LEVEL             REG_ACCESS(RwReg  , 0x400F101CU) /**< \brief (EIC) Level Register */ \r
+#define REG_EIC_FILTER            REG_ACCESS(RwReg  , 0x400F1020U) /**< \brief (EIC) Filter Register */ \r
+#define REG_EIC_ASYNC             REG_ACCESS(RwReg  , 0x400F1028U) /**< \brief (EIC) Asynchronous Register */ \r
+#define REG_EIC_EN                REG_ACCESS(WoReg  , 0x400F1030U) /**< \brief (EIC) Enable Register */ \r
+#define REG_EIC_DIS               REG_ACCESS(WoReg  , 0x400F1034U) /**< \brief (EIC) Disable Register */ \r
+#define REG_EIC_CTRL              REG_ACCESS(RoReg  , 0x400F1038U) /**< \brief (EIC) Control Register */ \r
+#define REG_EIC_VERSION           REG_ACCESS(RoReg  , 0x400F13FCU) /**< \brief (EIC) Version Register */ \r
+/* ========== Register definition for PICOUART peripheral ========== */\r
+#define REG_PICOUART_CR           REG_ACCESS(WoReg  , 0x400F1400U) /**< \brief (PICOUART) Control Register */ \r
+#define REG_PICOUART_CFG          REG_ACCESS(RwReg  , 0x400F1404U) /**< \brief (PICOUART) Configuration Register */ \r
+#define REG_PICOUART_SR           REG_ACCESS(RoReg  , 0x400F1408U) /**< \brief (PICOUART) Status Register */ \r
+#define REG_PICOUART_RHR          REG_ACCESS(RoReg  , 0x400F140CU) /**< \brief (PICOUART) Receive Holding Register */ \r
+#define REG_PICOUART_VERSION      REG_ACCESS(RoReg  , 0x400F1420U) /**< \brief (PICOUART) Version Register */ \r
+/*@}*/\r
+\r
+/* ************************************************************************** */\r
+/**  NUMBER OF PERIPHERAL INSTANCES FOR SAM4L */\r
+/* ************************************************************************** */\r
+/** \addtogroup SAM4L_inst_num Number of Peripheral Instances */\r
+/*@{*/\r
+\r
+#define ABDACB_INST_NUM     1 /**< \brief Audio Bitstream DAC instances */\r
+#define ACIFC_INST_NUM      1 /**< \brief Analog Comparator Interface instances */\r
+#define ADCIFE_INST_NUM     1 /**< \brief ADC controller interface instances */\r
+#define AESA_INST_NUM       1 /**< \brief Advanced Encryption Standard instances */\r
+#define AST_INST_NUM        1 /**< \brief Asynchronous Timer instances */\r
+#define BPM_INST_NUM        1 /**< \brief Backup Power Manager instances */\r
+#define BSCIF_INST_NUM      1 /**< \brief Backup System Control Interface instances */\r
+#define CATB_INST_NUM       1 /**< \brief Capacitive Touch Module B instances */\r
+#define CHIPID_INST_NUM     1 /**< \brief Chip ID Registers instances */\r
+#define CRCCU_INST_NUM      1 /**< \brief CRC Calculation Unit instances */\r
+#define DACC_INST_NUM       1 /**< \brief DAC Controller instances */\r
+#define EIC_INST_NUM        1 /**< \brief External Interrupt Controller instances */\r
+#define FLASHCALW_INST_NUM  1 /**< \brief Flash Controller instances */\r
+#define FREQM_INST_NUM      1 /**< \brief Frequency Meter instances */\r
+#define GLOC_INST_NUM       1 /**< \brief Glue Logic Controller instances */\r
+#define GPIO_INST_NUM       1 /**< \brief General-Purpose Input/Output Controller instances */\r
+#define HCACHE_INST_NUM     1 /**< \brief Cortex M I&D Cache Controller instances */\r
+#define HMATRIXB_INST_NUM   1 /**< \brief HSB Matrix instances */\r
+#define IISC_INST_NUM       1 /**< \brief Inter-IC Sound (I2S) Controller instances */\r
+#define LCDCA_INST_NUM      1 /**< \brief LCD Controller instances */\r
+#define PARC_INST_NUM       1 /**< \brief Parallel Capture instances */\r
+#define PDCA_INST_NUM       1 /**< \brief Peripheral DMA Controller instances */\r
+#define PEVC_INST_NUM       1 /**< \brief Peripheral Event Controller instances */\r
+#define PICOUART_INST_NUM   1 /**< \brief Pico UART instances */\r
+#define PM_INST_NUM         1 /**< \brief Power Manager instances */\r
+#define SCIF_INST_NUM       1 /**< \brief System Control Interface instances */\r
+#define SMAP_INST_NUM       1 /**< \brief System Manager Access Port instances */\r
+#define SPI_INST_NUM        1 /**< \brief Serial Peripheral Interface instances */\r
+#define TC_INST_NUM         2 /**< \brief Timer/Counter instances */\r
+#define TRNG_INST_NUM       1 /**< \brief True Random Number Generator instances */\r
+#define TWIM_INST_NUM       4 /**< \brief Two-wire Master Interface instances */\r
+#define TWIS_INST_NUM       2 /**< \brief Two-wire Slave Interface instances */\r
+#define USART_INST_NUM      4 /**< \brief Universal Synchronous Asynchronous Receiver Transmitter instances */\r
+#define USBC_INST_NUM       1 /**< \brief USB 2.0 Interface instances */\r
+#define WDT_INST_NUM        1 /**< \brief Watchdog Timer instances */\r
+/*@}*/\r
+\r
+/* ************************************************************************** */\r
+/**  PERIPHERAL ID DEFINITIONS FOR SAM4L */\r
+/* ************************************************************************** */\r
+/** \addtogroup SAM4L_id Peripheral Ids Definitions */\r
+/*@{*/\r
+\r
+#define ID_IISC       ( 0) /**< \brief Inter-IC Sound (I2S) Controller (IISC) */\r
+#define ID_SPI        ( 1) /**< \brief Serial Peripheral Interface (SPI) */\r
+#define ID_TC0        ( 2) /**< \brief Timer/Counter TC (TC0) */\r
+#define ID_TC1        ( 3) /**< \brief Timer/Counter TC (TC1) */\r
+#define ID_TWIM0      ( 4) /**< \brief Two-wire Master Interface TWIM (TWIM0) */\r
+#define ID_TWIS0      ( 5) /**< \brief Two-wire Slave Interface TWIS (TWIS0) */\r
+#define ID_TWIM1      ( 6) /**< \brief Two-wire Master Interface TWIM (TWIM1) */\r
+#define ID_TWIS1      ( 7) /**< \brief Two-wire Slave Interface TWIS (TWIS1) */\r
+#define ID_USART0     ( 8) /**< \brief Universal Synchronous Asynchronous Receiver Transmitter USART (USART0) */\r
+#define ID_USART1     ( 9) /**< \brief Universal Synchronous Asynchronous Receiver Transmitter USART (USART1) */\r
+#define ID_USART2     (10) /**< \brief Universal Synchronous Asynchronous Receiver Transmitter USART (USART2) */\r
+#define ID_USART3     (11) /**< \brief Universal Synchronous Asynchronous Receiver Transmitter USART (USART3) */\r
+#define ID_ADCIFE     (12) /**< \brief ADC controller interface (ADCIFE) */\r
+#define ID_DACC       (13) /**< \brief DAC Controller (DACC) */\r
+#define ID_ACIFC      (14) /**< \brief Analog Comparator Interface (ACIFC) */\r
+#define ID_GLOC       (15) /**< \brief Glue Logic Controller (GLOC) */\r
+#define ID_ABDACB     (16) /**< \brief Audio Bitstream DAC (ABDACB) */\r
+#define ID_TRNG       (17) /**< \brief True Random Number Generator (TRNG) */\r
+#define ID_PARC       (18) /**< \brief Parallel Capture (PARC) */\r
+#define ID_CATB       (19) /**< \brief Capacitive Touch Module B (CATB) */\r
+#define ID_TWIM2      (20) /**< \brief Two-wire Master Interface TWIM (TWIM2) */\r
+#define ID_TWIM3      (21) /**< \brief Two-wire Master Interface TWIM (TWIM3) */\r
+#define ID_LCDCA      (22) /**< \brief LCD Controller (LCDCA) */\r
+#define ID_HFLASHC    (23) /**< \brief Flash Controller (HFLASHC) */\r
+#define ID_HCACHE     (24) /**< \brief Cortex M I&D Cache Controller (HCACHE) */\r
+#define ID_HMATRIX    (25) /**< \brief HSB Matrix (HMATRIX) */\r
+#define ID_PDCA       (26) /**< \brief Peripheral DMA Controller (PDCA) */\r
+#define ID_SMAP       (27) /**< \brief System Manager Access Port (SMAP) */\r
+#define ID_CRCCU      (28) /**< \brief CRC Calculation Unit (CRCCU) */\r
+#define ID_USBC       (29) /**< \brief USB 2.0 Interface (USBC) */\r
+#define ID_PEVC       (30) /**< \brief Peripheral Event Controller (PEVC) */\r
+#define ID_AESA       (31) /**< \brief Advanced Encryption Standard (AESA) */\r
+#define ID_PM         (32) /**< \brief Power Manager (PM) */\r
+#define ID_CHIPID     (33) /**< \brief Chip ID Registers (CHIPID) */\r
+#define ID_SCIF       (34) /**< \brief System Control Interface (SCIF) */\r
+#define ID_FREQM      (35) /**< \brief Frequency Meter (FREQM) */\r
+#define ID_GPIO       (36) /**< \brief General-Purpose Input/Output Controller (GPIO) */\r
+#define ID_BPM        (37) /**< \brief Backup Power Manager (BPM) */\r
+#define ID_BSCIF      (38) /**< \brief Backup System Control Interface (BSCIF) */\r
+#define ID_AST        (39) /**< \brief Asynchronous Timer (AST) */\r
+#define ID_WDT        (40) /**< \brief Watchdog Timer (WDT) */\r
+#define ID_EIC        (41) /**< \brief External Interrupt Controller (EIC) */\r
+#define ID_PICOUART   (42) /**< \brief Pico UART (PICOUART) */\r
+/*@}*/\r
+\r
+/* ************************************************************************** */\r
+/**  BASE ADDRESS DEFINITIONS FOR SAM4L */\r
+/* ************************************************************************** */\r
+/** \addtogroup SAM4L_base Peripheral Base Address Definitions */\r
+/*@{*/\r
+\r
+#define ABDACB_ADDR     (0x40064000U)                    /**< \brief (ABDACB) Base Address */\r
+#define ABDACB          CAST(Abdacb,    ABDACB_ADDR)    \r
+#define ACIFC_ADDR      (0x40040000U)                    /**< \brief (ACIFC) Base Address */\r
+#define ACIFC           CAST(Acifc,     ACIFC_ADDR)     \r
+#define ADCIFE_ADDR     (0x40038000U)                    /**< \brief (ADCIFE) Base Address */\r
+#define ADCIFE          CAST(Adcife,    ADCIFE_ADDR)    \r
+#define AESA_ADDR       (0x400B0000U)                    /**< \brief (AESA) Base Address */\r
+#define AESA            CAST(Aesa,      AESA_ADDR)      \r
+#define AST_ADDR        (0x400F0800U)                    /**< \brief (AST) Base Address */\r
+#define AST             CAST(Ast,       AST_ADDR)       \r
+#define BPM_ADDR        (0x400F0000U)                    /**< \brief (BPM) Base Address */\r
+#define BPM             CAST(Bpm,       BPM_ADDR)       \r
+#define BSCIF_ADDR      (0x400F0400U)                    /**< \brief (BSCIF) Base Address */\r
+#define BSCIF           CAST(Bscif,     BSCIF_ADDR)     \r
+#define CATB_ADDR       (0x40070000U)                    /**< \brief (CATB) Base Address */\r
+#define CATB            CAST(Catb,      CATB_ADDR)      \r
+#define CHIPID_ADDR     (0x400E0400U)                    /**< \brief (CHIPID) Base Address */\r
+#define CHIPID          CAST(Chipid,    CHIPID_ADDR)    \r
+#define CRCCU_ADDR      (0x400A4000U)                    /**< \brief (CRCCU) Base Address */\r
+#define CRCCU           CAST(Crccu,     CRCCU_ADDR)     \r
+#define DACC_ADDR       (0x4003C000U)                    /**< \brief (DACC) Base Address */\r
+#define DACC            CAST(Dacc,      DACC_ADDR)      \r
+#define EIC_ADDR        (0x400F1000U)                    /**< \brief (EIC) Base Address */\r
+#define EIC             CAST(Eic,       EIC_ADDR)       \r
+#define HFLASHC_ADDR    (0x400A0000U)                    /**< \brief (HFLASHC) Base Address */\r
+#define HFLASHC         CAST(Flashcalw, HFLASHC_ADDR)   \r
+#define FREQM_ADDR      (0x400E0C00U)                    /**< \brief (FREQM) Base Address */\r
+#define FREQM           CAST(Freqm,     FREQM_ADDR)     \r
+#define GLOC_ADDR       (0x40060000U)                    /**< \brief (GLOC) Base Address */\r
+#define GLOC            CAST(Gloc,      GLOC_ADDR)      \r
+#define GPIO_ADDR       (0x400E1000U)                    /**< \brief (GPIO) Base Address */\r
+#define GPIO            CAST(Gpio,      GPIO_ADDR)      \r
+#define HCACHE_ADDR     (0x400A0400U)                    /**< \brief (HCACHE) Base Address */\r
+#define HCACHE          CAST(Hcache,    HCACHE_ADDR)    \r
+#define HMATRIX_ADDR    (0x400A1000U)                    /**< \brief (HMATRIX) Base Address */\r
+#define HMATRIX         CAST(Hmatrixb,  HMATRIX_ADDR)   \r
+#define IISC_ADDR       (0x40004000U)                    /**< \brief (IISC) Base Address */\r
+#define IISC            CAST(Iisc,      IISC_ADDR)      \r
+#define LCDCA_ADDR      (0x40080000U)                    /**< \brief (LCDCA) Base Address */\r
+#define LCDCA           CAST(Lcdca,     LCDCA_ADDR)     \r
+#define PARC_ADDR       (0x4006C000U)                    /**< \brief (PARC) Base Address */\r
+#define PARC            CAST(Parc,      PARC_ADDR)      \r
+#define PDCA_ADDR       (0x400A2000U)                    /**< \brief (PDCA) Base Address */\r
+#define PDCA            CAST(Pdca,      PDCA_ADDR)      \r
+#define PEVC_ADDR       (0x400A6000U)                    /**< \brief (PEVC) Base Address */\r
+#define PEVC            CAST(Pevc,      PEVC_ADDR)      \r
+#define PICOUART_ADDR   (0x400F1400U)                    /**< \brief (PICOUART) Base Address */\r
+#define PICOUART        CAST(Picouart,  PICOUART_ADDR)  \r
+#define PM_ADDR         (0x400E0000U)                    /**< \brief (PM) Base Address */\r
+#define PM              CAST(Pm,        PM_ADDR)        \r
+#define SCIF_ADDR       (0x400E0800U)                    /**< \brief (SCIF) Base Address */\r
+#define SCIF            CAST(Scif,      SCIF_ADDR)      \r
+#define SMAP_ADDR       (0x400A3000U)                    /**< \brief (SMAP) Base Address */\r
+#define SMAP            CAST(Smap,      SMAP_ADDR)      \r
+#define SPI_ADDR        (0x40008000U)                    /**< \brief (SPI) Base Address */\r
+#define SPI             CAST(Spi,       SPI_ADDR)       \r
+#define TC0_ADDR        (0x40010000U)                    /**< \brief (TC0) Base Address */\r
+#define TC0             CAST(Tc,        TC0_ADDR)       \r
+#define TC1_ADDR        (0x40014000U)                    /**< \brief (TC1) Base Address */\r
+#define TC1             CAST(Tc,        TC1_ADDR)       \r
+#define TRNG_ADDR       (0x40068000U)                    /**< \brief (TRNG) Base Address */\r
+#define TRNG            CAST(Trng,      TRNG_ADDR)      \r
+#define TWIM0_ADDR      (0x40018000U)                    /**< \brief (TWIM0) Base Address */\r
+#define TWIM0           CAST(Twim,      TWIM0_ADDR)     \r
+#define TWIM1_ADDR      (0x4001C000U)                    /**< \brief (TWIM1) Base Address */\r
+#define TWIM1           CAST(Twim,      TWIM1_ADDR)     \r
+#define TWIM2_ADDR      (0x40078000U)                    /**< \brief (TWIM2) Base Address */\r
+#define TWIM2           CAST(Twim,      TWIM2_ADDR)     \r
+#define TWIM3_ADDR      (0x4007C000U)                    /**< \brief (TWIM3) Base Address */\r
+#define TWIM3           CAST(Twim,      TWIM3_ADDR)     \r
+#define TWIS0_ADDR      (0x40018400U)                    /**< \brief (TWIS0) Base Address */\r
+#define TWIS0           CAST(Twis,      TWIS0_ADDR)     \r
+#define TWIS1_ADDR      (0x4001C400U)                    /**< \brief (TWIS1) Base Address */\r
+#define TWIS1           CAST(Twis,      TWIS1_ADDR)     \r
+#define USART0_ADDR     (0x40024000U)                    /**< \brief (USART0) Base Address */\r
+#define USART0          CAST(Usart,     USART0_ADDR)    \r
+#define USART1_ADDR     (0x40028000U)                    /**< \brief (USART1) Base Address */\r
+#define USART1          CAST(Usart,     USART1_ADDR)    \r
+#define USART2_ADDR     (0x4002C000U)                    /**< \brief (USART2) Base Address */\r
+#define USART2          CAST(Usart,     USART2_ADDR)    \r
+#define USART3_ADDR     (0x40030000U)                    /**< \brief (USART3) Base Address */\r
+#define USART3          CAST(Usart,     USART3_ADDR)    \r
+#define USBC_ADDR       (0x400A5000U)                    /**< \brief (USBC) Base Address */\r
+#define USBC            CAST(Usbc,      USBC_ADDR)      \r
+#define WDT_ADDR        (0x400F0C00U)                    /**< \brief (WDT) Base Address */\r
+#define WDT             CAST(Wdt,       WDT_ADDR)       \r
+/*@}*/\r
+\r
+/* ************************************************************************** */\r
+/**  INSTANCE PARAMETERS DEFINITIONS FOR SAM4L */\r
+/* ************************************************************************** */\r
+/** \addtogroup SAM4L_parameters Instance Parameters Definitions */\r
+/*@{*/\r
+\r
+/* ========== Instance parameters for ABDACB peripheral ========== */\r
+#define ABDACB_GCLK_NUM             6\r
+#define ABDACB_PDCA_ID_TX_CH0       31\r
+#define ABDACB_PDCA_ID_TX_CH1       32\r
+/* ========== Instance parameters for ADCIFE peripheral ========== */\r
+#define ADCIFE_CHANNELS             16\r
+#define ADCIFE_CHANNEL_MSB          15\r
+#define ADCIFE_EXT_TRIGGERS_MSB     0\r
+#define ADCIFE_GCLK_NUM             10\r
+#define ADCIFE_PDCA_ID_RX           11\r
+#define ADCIFE_PDCA_ID_TX           29\r
+#define ADCIFE_REG_RX               LCV\r
+#define ADCIFE_REG_TX               CDMA\r
+/* ========== Instance parameters for AESA peripheral ========== */\r
+#define AESA_DMAC_ID_RX             \r
+#define AESA_DMAC_ID_TX             \r
+#define AESA_GCLK_NUM               4\r
+#define AESA_PDCA_ID_RX             17\r
+#define AESA_PDCA_ID_TX             36\r
+/* ========== Instance parameters for AST peripheral ========== */\r
+#define AST_CLK1K                   4\r
+#define AST_CLK32                   1\r
+#define AST_GCLK_NUM                2\r
+#define AST_GENCLK                  3\r
+#define AST_PB                      2\r
+#define AST_RCOSC                   0\r
+/* ========== Instance parameters for BPM peripheral ========== */\r
+#define BPM_BKUPPMUX_MSB            9\r
+#define BPM_BKUPWEN_AST             1\r
+#define BPM_BKUPWEN_BOD18           4\r
+#define BPM_BKUPWEN_BOD33           3\r
+#define BPM_BKUPWEN_EIC             0\r
+#define BPM_BKUPWEN_MSB             5\r
+#define BPM_BKUPWEN_PICOUART        5\r
+#define BPM_BKUPWEN_WDT             2\r
+/* ========== Instance parameters for BSCIF peripheral ========== */\r
+#define BSCIF_BGBUF_NUM             6\r
+#define BSCIF_BOD18_IMPLEMENTED     0\r
+#define BSCIF_BOD33_IMPLEMENTED     0\r
+#define BSCIF_BOD50_IMPLEMENTED     0\r
+#define BSCIF_BR_NUM                4\r
+/* ========== Instance parameters for CATB peripheral ========== */\r
+#define CATB_GCLK_NUM               3\r
+#define CATB_PDCA_ID_RX             12\r
+#define CATB_PDCA_ID_TX             30\r
+#define CATB_SENSORS_MSB            31\r
+#define CATB_STATUS_REG_NUMBER      1\r
+/* ========== Instance parameters for DACC peripheral ========== */\r
+#define DACC_DACC_EXT_TRIG_MSB      0\r
+#define DACC_DAC_RES_MSB            9\r
+#define DACC_PDCA_ID_TX             35\r
+/* ========== Instance parameters for EIC peripheral ========== */\r
+#define EIC_STD_NUM                 8\r
+/* ========== Instance parameters for FREQM peripheral ========== */\r
+#define FREQM_CPU                   0\r
+#define FREQM_CRIPOSC               10\r
+#define FREQM_DFLL0                 9\r
+#define FREQM_FLO_JITTER            27\r
+#define FREQM_GENCLK0               11\r
+#define FREQM_GENCLK1               12\r
+#define FREQM_GENCLK2               13\r
+#define FREQM_GENCLK3               14\r
+#define FREQM_GENCLK4               15\r
+#define FREQM_GENCLK5               16\r
+#define FREQM_GENCLK6               17\r
+#define FREQM_GENCLK7               18\r
+#define FREQM_GENCLK8               19\r
+#define FREQM_GENCLK9               20\r
+#define FREQM_GENCLK10              21\r
+#define FREQM_HSB                   1\r
+#define FREQM_NUM_CLK               28\r
+#define FREQM_NUM_REF_CLK           4\r
+#define FREQM_OSC0                  6\r
+#define FREQM_OSC32                 7\r
+#define FREQM_PBA                   2\r
+#define FREQM_PBB                   3\r
+#define FREQM_PBC                   4\r
+#define FREQM_PLL0                  26\r
+#define FREQM_RCFAST                24\r
+#define FREQM_RCOSC                 8\r
+#define FREQM_RC1M                  25\r
+#define FREQM_RC32K                 7\r
+#define FREQM_RC80M                 23\r
+#define FREQM_REFSEL_BITS           2\r
+#define FREQM_REF_OSC32             1\r
+#define FREQM_REF_RCOSC             0\r
+/* ========== Instance parameters for GLOC peripheral ========== */\r
+#define GLOC_GCLK_NUM               5\r
+#define GLOC_LUTS                   2\r
+/* ========== Instance parameters for GPIO peripheral ========== */\r
+#define GPIO_GPIO_IRQ_MSB           11\r
+#define GPIO_GPIO_MAX_IRQ_MSB       11\r
+#define GPIO_GPIO_PADDR_BITS        11\r
+#define GPIO_GPIO_PINS_MSB          95\r
+#define GPIO_IRQS_PER_GROUP         8\r
+#define GPIO_NUMBER_OF_PINS         96\r
+#define GPIO_PADDR_MSB              10\r
+#define GPIO_PDATA_MSB              31\r
+#define GPIO_PORT_LENGTH            3\r
+/* ========== Instance parameters for HMATRIX ========== */\r
+#define HMATRIX_SLAVE_FLASH             0\r
+#define HMATRIX_SLAVE_HTOP0             1\r
+#define HMATRIX_SLAVE_HTOP1             2\r
+#define HMATRIX_SLAVE_HTOP2             3\r
+#define HMATRIX_SLAVE_HTOP3             4\r
+#define HMATRIX_SLAVE_HRAMC0            5\r
+#define HMATRIX_SLAVE_HRAMC1            6\r
+#define HMATRIX_SLAVE_AESA              7\r
+#define HMATRIX_SLAVE_NUM               8\r
+\r
+#define HMATRIX_MASTER_CPU_IDCODE       0\r
+#define HMATRIX_MASTER_CPU_SYS          1\r
+#define HMATRIX_MASTER_SMAP             2\r
+#define HMATRIX_MASTER_PDCA             3\r
+#define HMATRIX_MASTER_USBC_MASTER      4\r
+#define HMATRIX_MASTER_CRCCU            5\r
+#define HMATRIX_MASTER_NUM              6\r
+/* ========== Instance parameters for IISC peripheral ========== */\r
+#define IISC_GCLK_NUM               6\r
+#define IISC_PDCA_ID_RX             14\r
+#define IISC_PDCA_ID_RX_1           15\r
+#define IISC_PDCA_ID_TX             33\r
+#define IISC_PDCA_ID_TX_1           34\r
+/* ========== Instance parameters for LCDCA peripheral ========== */\r
+#define LCDCA_PDCA_ID_TX_ABM        38\r
+#define LCDCA_PDCA_ID_TX_ACM        37\r
+/* ========== Instance parameters for PARC peripheral ========== */\r
+#define PARC_PDCA_ID_RX             16\r
+/* ========== Instance parameters for PDCA peripheral ========== */\r
+#define PDCA_CHANNEL_LENGTH         16\r
+#define PDCA_CLK_AHB_ID             0\r
+#define PDCA_MON_CH0_IMPL           0\r
+#define PDCA_MON_CH1_IMPL           0\r
+/* ========== Instance parameters for PEVC peripheral ========== */\r
+#define PEVC_EVIN_BITS              31\r
+#define PEVC_GCLK_NUM_0             8\r
+#define PEVC_GCLK_NUM_1             9\r
+#define PEVC_GCLK_NUM_LSB           8\r
+#define PEVC_GCLK_NUM_MSB           9\r
+#define PEVC_GCLK_NUM_SIZE          2\r
+#define PEVC_PADS_BITS              4\r
+#define PEVC_TRIGOUT_BITS           19\r
+\r
+// GENERATORS\r
+#define PEVC_ID_GEN_PAD_0                     0 /* EVS IGF */\r
+#define PEVC_ID_GEN_PAD_1                     1 /* EVS IGF */\r
+#define PEVC_ID_GEN_PAD_2                     2 /* EVS IGF */\r
+#define PEVC_ID_GEN_PAD_3                     3 /* EVS IGF */\r
+#define PEVC_ID_GEN_GCLK_0                    4 /* EVS */\r
+#define PEVC_ID_GEN_GCLK_1                    5 /* EVS */\r
+#define PEVC_ID_GEN_AST_0                     6 /* EVS */\r
+#define PEVC_ID_GEN_AST_1                     7 /* EVS */\r
+#define PEVC_ID_GEN_AST_2                     8 /* EVS */\r
+#define PEVC_ID_GEN_AST_3                     9 /* EVS */\r
+#define PEVC_ID_GEN_AST_4                     10 /* EVS */\r
+#define PEVC_ID_GEN_ACIFC_CHANNEL_POSITIVE_0  11\r
+#define PEVC_ID_GEN_ACIFC_CHANNEL_POSITIVE_1  12\r
+#define PEVC_ID_GEN_ACIFC_CHANNEL_POSITIVE_2  13\r
+#define PEVC_ID_GEN_ACIFC_CHANNEL_POSITIVE_3  14\r
+#define PEVC_ID_GEN_ACIFC_CHANNEL_NEGATIVE_0  15\r
+#define PEVC_ID_GEN_ACIFC_CHANNEL_NEGATIVE_1  16\r
+#define PEVC_ID_GEN_ACIFC_CHANNEL_NEGATIVE_2  17\r
+#define PEVC_ID_GEN_ACIFC_CHANNEL_NEGATIVE_3  18\r
+#define PEVC_ID_GEN_ACIFC_WINDOW_0            19\r
+#define PEVC_ID_GEN_ACIFC_WINDOW_1            20\r
+#define PEVC_ID_GEN_TC0_A0                    21 /* EVS */\r
+#define PEVC_ID_GEN_TC0_A1                    22 /* EVS */\r
+#define PEVC_ID_GEN_TC0_A2                    23 /* EVS */\r
+#define PEVC_ID_GEN_TC0_B0                    24 /* EVS */\r
+#define PEVC_ID_GEN_TC0_B1                    25 /* EVS */\r
+#define PEVC_ID_GEN_TC0_B2                    26 /* EVS */\r
+#define PEVC_ID_GEN_ADCIFE_WM                 27\r
+#define PEVC_ID_GEN_ADCIFE_EOC                28\r
+#define PEVC_ID_GEN_VREGIFG_SSWRDY            29\r
+#define PEVC_ID_GEN_PICOUART                  30 /* EVS */\r
+\r
+#define PEVC_CHMX0_EVMX_SIZE_IMPL 5\r
+#define PEVC_CHMX0_EVMX_MASK_IMPL 0x0000001F\r
+\r
+#define PEVC_EVS_IMPL 0b1000111111000000000011111111111\r
+#define PEVC_IGF_IMPL 0b0000000000000000000000000001111\r
+\r
+// USERS / CHANNELS\r
+#define PEVC_ID_USER_PDCA_0                   0\r
+#define PEVC_ID_USER_PDCA_1                   1\r
+#define PEVC_ID_USER_PDCA_2                   2\r
+#define PEVC_ID_USER_PDCA_3                   3\r
+#define PEVC_ID_USER_ADCIFE_SOC               4\r
+#define PEVC_ID_USER_DACC_CONV                5\r
+#define PEVC_ID_USER_CATB                     6\r
+#define PEVC_ID_USER_TC1_A0                   8\r
+#define PEVC_ID_USER_TC1_A1                   9\r
+#define PEVC_ID_USER_TC1_A2                   10\r
+#define PEVC_ID_USER_TC1_B0                   11\r
+#define PEVC_ID_USER_TC1_B1                   12\r
+#define PEVC_ID_USER_TC1_B2                   13\r
+#define PEVC_ID_USER_ACIFC                    14\r
+#define PEVC_ID_USER_PARC_START               15\r
+#define PEVC_ID_USER_PARC_STOP                16\r
+#define PEVC_ID_USER_VREGIFG_SSWREQ           17\r
+#define PEVC_ID_USER_VREGIFG_SSWDIS           18\r
+/* ========== Instance parameters for PM peripheral ========== */\r
+#define PM_AWEN_LCDCA               7\r
+#define PM_AWEN_PICOUART            6\r
+#define PM_AWEN_TWIS0               0\r
+#define PM_AWEN_TWIS1               1\r
+#define PM_AWEN_USBC                2\r
+#define PM_MCCTRL_MCSEL_DFLL0       3\r
+#define PM_MCCTRL_MCSEL_FLO         7\r
+#define PM_MCCTRL_MCSEL_OSC0        1\r
+#define PM_MCCTRL_MCSEL_PLL0        2\r
+#define PM_MCCTRL_MCSEL_RCFAST      5\r
+#define PM_MCCTRL_MCSEL_RC1M        6\r
+#define PM_MCCTRL_MCSEL_RC80M       4\r
+#define PM_MCCTRL_MCSEL_SLOW        0\r
+#define PM_PM_CLK_APB_NUM           4\r
+#define PM_PPCR_FLASH_WAIT_BGREF_MASK 512\r
+#define PM_PPCR_FLASH_WAIT_BOD18_MASK 1024\r
+/* ========== Instance parameters for SCIF peripheral ========== */\r
+#define SCIF_BOD33_IMPLEMENTED      0\r
+#define SCIF_BOD50_IMPLEMENTED      0\r
+#define SCIF_BR_NUM                 0\r
+#define SCIF_DFLL_CALIB_MSB         3\r
+#define SCIF_DFLL_COARSE_MSB        4\r
+#define SCIF_DFLL_FINE_MSB          7\r
+#define SCIF_DFLL_RANGE_MSB         1\r
+#define SCIF_GCLK_EXTCLK_MSB        3\r
+#define SCIF_GCLK_IN_MSB            1\r
+#define SCIF_GCLK_IN_NUM            2\r
+#define SCIF_GCLK_MSB               10\r
+#define SCIF_GCLK_NUM               12\r
+#define SCIF_GCLK_NUM_DFLL_REF      0\r
+#define SCIF_GCLK_NUM_DFLL_SSG      1\r
+#define SCIF_GCLK_NUM_EXTCLK_0      0\r
+#define SCIF_GCLK_NUM_EXTCLK_1      1\r
+#define SCIF_GCLK_NUM_EXTCLK_2      2\r
+#define SCIF_GCLK_NUM_EXTCLK_3      3\r
+#define SCIF_GCLK_NUM_EXTCLK_LSB    0\r
+#define SCIF_GCLK_NUM_EXTCLK_MSB    3\r
+#define SCIF_GCLK_NUM_EXTCLK_SIZE   4\r
+#define SCIF_GCLK_NUM_FLO           4\r
+#define SCIF_GCLK_NUM_MASTER        11\r
+#define SCIF_GCLK_NUM_PLL           9\r
+#define SCIF_GCLK_NUM_RC32KIFB_REF  5\r
+#define SCIF_GC_USES_CLK_CPU        7\r
+#define SCIF_GC_USES_CLK_HSB        8\r
+#define SCIF_GC_USES_CLK_PBA        9\r
+#define SCIF_GC_USES_CLK_PBB        10\r
+#define SCIF_GC_USES_CLK_PBC        11\r
+#define SCIF_GC_USES_CLK_PBD        12\r
+#define SCIF_GC_USES_CLK_SLOW       0\r
+#define SCIF_GC_USES_CLK_1K         15\r
+#define SCIF_GC_USES_CLK_32         1\r
+#define SCIF_GC_USES_DFLL0          2\r
+#define SCIF_GC_USES_FLO            14\r
+#define SCIF_GC_USES_GCLKPRESC_FP   18\r
+#define SCIF_GC_USES_GCLKPRESC_HRP  17\r
+#define SCIF_GC_USES_GCLK_IN0       19\r
+#define SCIF_GC_USES_GCLK_IN1       20\r
+#define SCIF_GC_USES_MASTER         21\r
+#define SCIF_GC_USES_OSC0           3\r
+#define SCIF_GC_USES_PLL0           16\r
+#define SCIF_GC_USES_RCFAST         5\r
+#define SCIF_GC_USES_RC1M           6\r
+#define SCIF_GC_USES_RC32K          13\r
+#define SCIF_GC_USES_RC80M          4\r
+#define SCIF_OSC_NUM                1\r
+#define SCIF_PLL_NUM                1\r
+#define SCIF_RCFAST_CALIBRATION_MSB 6\r
+#define SCIF_RCFAST_FRANGE_MSB      1\r
+#define SCIF_RC80M_CALIBRATION_MSB  1\r
+/* ========== Instance parameters for SPI peripheral ========== */\r
+#define SPI_CS_MSB                  3\r
+#define SPI_PDCA_ID_RX              4\r
+#define SPI_PDCA_ID_TX              22\r
+/* ========== Instance parameters for TC0 peripheral ========== */\r
+#define TC0_CLK_DIV1                gen_clk_tc0\r
+#define TC0_CLK_DIV2                2\r
+#define TC0_CLK_DIV3                8\r
+#define TC0_CLK_DIV4                32\r
+#define TC0_CLK_DIV5                128\r
+#define TC0_GCLK_NUM                5\r
+/* ========== Instance parameters for TC1 peripheral ========== */\r
+#define TC1_CLK_DIV1                gen_clk_tc1\r
+#define TC1_CLK_DIV2                2\r
+#define TC1_CLK_DIV3                8\r
+#define TC1_CLK_DIV4                32\r
+#define TC1_CLK_DIV5                128\r
+#define TC1_GCLK_NUM                8\r
+/* ========== Instance parameters for TWIM0 peripheral ========== */\r
+#define TWIM0_PDCA_ID_RX            5\r
+#define TWIM0_PDCA_ID_TX            23\r
+/* ========== Instance parameters for TWIM1 peripheral ========== */\r
+#define TWIM1_PDCA_ID_RX            6\r
+#define TWIM1_PDCA_ID_TX            24\r
+/* ========== Instance parameters for TWIM2 peripheral ========== */\r
+#define TWIM2_PDCA_ID_RX            7\r
+#define TWIM2_PDCA_ID_TX            25\r
+/* ========== Instance parameters for TWIM3 peripheral ========== */\r
+#define TWIM3_PDCA_ID_RX            8\r
+#define TWIM3_PDCA_ID_TX            26\r
+/* ========== Instance parameters for TWIS0 peripheral ========== */\r
+#define TWIS0_PDCA_ID_RX            9\r
+#define TWIS0_PDCA_ID_TX            27\r
+/* ========== Instance parameters for TWIS1 peripheral ========== */\r
+#define TWIS1_PDCA_ID_RX            10\r
+#define TWIS1_PDCA_ID_TX            28\r
+/* ========== Instance parameters for USART0 peripheral ========== */\r
+#define USART0_CLK_DIV              8\r
+#define USART0_PDCA_ID_RX           0\r
+#define USART0_PDCA_ID_TX           18\r
+/* ========== Instance parameters for USART1 peripheral ========== */\r
+#define USART1_CLK_DIV              8\r
+#define USART1_PDCA_ID_RX           1\r
+#define USART1_PDCA_ID_TX           19\r
+/* ========== Instance parameters for USART2 peripheral ========== */\r
+#define USART2_CLK_DIV              8\r
+#define USART2_PDCA_ID_RX           2\r
+#define USART2_PDCA_ID_TX           20\r
+/* ========== Instance parameters for USART3 peripheral ========== */\r
+#define USART3_CLK_DIV              8\r
+#define USART3_PDCA_ID_RX           3\r
+#define USART3_PDCA_ID_TX           21\r
+/* ========== Instance parameters for USBC peripheral ========== */\r
+#define USBC_EPT_NBR                7\r
+#define USBC_GCLK_NUM               7\r
+#define USBC_HOST_IMPLEMENTED       1\r
+#define USBC_OTG_IMPLEMENTED        \r
+#define USBC_USB_UTMI_IMPLEMENTED   \r
+/*@}*/\r
+\r
+/* ************************************************************************** */\r
+/**  GPIO DEFINITIONS FOR SAM4L */\r
+/* ************************************************************************** */\r
+/** \addtogroup SAM4L_gpio GPIO Definitions */\r
+/*@{*/\r
+\r
+#define PIN_PA00                           0  /**< \brief Pin Number for PA00 */\r
+#define GPIO_PA00                  (1u <<  0) /**< \brief GPIO Mask  for PA00 */\r
+#define PIN_PA01                           1  /**< \brief Pin Number for PA01 */\r
+#define GPIO_PA01                  (1u <<  1) /**< \brief GPIO Mask  for PA01 */\r
+#define PIN_PA02                           2  /**< \brief Pin Number for PA02 */\r
+#define GPIO_PA02                  (1u <<  2) /**< \brief GPIO Mask  for PA02 */\r
+#define PIN_PA03                           3  /**< \brief Pin Number for PA03 */\r
+#define GPIO_PA03                  (1u <<  3) /**< \brief GPIO Mask  for PA03 */\r
+#define PIN_PA04                           4  /**< \brief Pin Number for PA04 */\r
+#define GPIO_PA04                  (1u <<  4) /**< \brief GPIO Mask  for PA04 */\r
+#define PIN_PA05                           5  /**< \brief Pin Number for PA05 */\r
+#define GPIO_PA05                  (1u <<  5) /**< \brief GPIO Mask  for PA05 */\r
+#define PIN_PA06                           6  /**< \brief Pin Number for PA06 */\r
+#define GPIO_PA06                  (1u <<  6) /**< \brief GPIO Mask  for PA06 */\r
+#define PIN_PA07                           7  /**< \brief Pin Number for PA07 */\r
+#define GPIO_PA07                  (1u <<  7) /**< \brief GPIO Mask  for PA07 */\r
+#define PIN_PA08                           8  /**< \brief Pin Number for PA08 */\r
+#define GPIO_PA08                  (1u <<  8) /**< \brief GPIO Mask  for PA08 */\r
+#define PIN_PA09                           9  /**< \brief Pin Number for PA09 */\r
+#define GPIO_PA09                  (1u <<  9) /**< \brief GPIO Mask  for PA09 */\r
+#define PIN_PA10                          10  /**< \brief Pin Number for PA10 */\r
+#define GPIO_PA10                  (1u << 10) /**< \brief GPIO Mask  for PA10 */\r
+#define PIN_PA11                          11  /**< \brief Pin Number for PA11 */\r
+#define GPIO_PA11                  (1u << 11) /**< \brief GPIO Mask  for PA11 */\r
+#define PIN_PA12                          12  /**< \brief Pin Number for PA12 */\r
+#define GPIO_PA12                  (1u << 12) /**< \brief GPIO Mask  for PA12 */\r
+#define PIN_PA13                          13  /**< \brief Pin Number for PA13 */\r
+#define GPIO_PA13                  (1u << 13) /**< \brief GPIO Mask  for PA13 */\r
+#define PIN_PA14                          14  /**< \brief Pin Number for PA14 */\r
+#define GPIO_PA14                  (1u << 14) /**< \brief GPIO Mask  for PA14 */\r
+#define PIN_PA15                          15  /**< \brief Pin Number for PA15 */\r
+#define GPIO_PA15                  (1u << 15) /**< \brief GPIO Mask  for PA15 */\r
+#define PIN_PA16                          16  /**< \brief Pin Number for PA16 */\r
+#define GPIO_PA16                  (1u << 16) /**< \brief GPIO Mask  for PA16 */\r
+#define PIN_PA17                          17  /**< \brief Pin Number for PA17 */\r
+#define GPIO_PA17                  (1u << 17) /**< \brief GPIO Mask  for PA17 */\r
+#define PIN_PA18                          18  /**< \brief Pin Number for PA18 */\r
+#define GPIO_PA18                  (1u << 18) /**< \brief GPIO Mask  for PA18 */\r
+#define PIN_PA19                          19  /**< \brief Pin Number for PA19 */\r
+#define GPIO_PA19                  (1u << 19) /**< \brief GPIO Mask  for PA19 */\r
+#define PIN_PA20                          20  /**< \brief Pin Number for PA20 */\r
+#define GPIO_PA20                  (1u << 20) /**< \brief GPIO Mask  for PA20 */\r
+#define PIN_PA21                          21  /**< \brief Pin Number for PA21 */\r
+#define GPIO_PA21                  (1u << 21) /**< \brief GPIO Mask  for PA21 */\r
+#define PIN_PA22                          22  /**< \brief Pin Number for PA22 */\r
+#define GPIO_PA22                  (1u << 22) /**< \brief GPIO Mask  for PA22 */\r
+#define PIN_PA23                          23  /**< \brief Pin Number for PA23 */\r
+#define GPIO_PA23                  (1u << 23) /**< \brief GPIO Mask  for PA23 */\r
+#define PIN_PA24                          24  /**< \brief Pin Number for PA24 */\r
+#define GPIO_PA24                  (1u << 24) /**< \brief GPIO Mask  for PA24 */\r
+#define PIN_PA25                          25  /**< \brief Pin Number for PA25 */\r
+#define GPIO_PA25                  (1u << 25) /**< \brief GPIO Mask  for PA25 */\r
+#define PIN_PA26                          26  /**< \brief Pin Number for PA26 */\r
+#define GPIO_PA26                  (1u << 26) /**< \brief GPIO Mask  for PA26 */\r
+#define PIN_PA27                          27  /**< \brief Pin Number for PA27 */\r
+#define GPIO_PA27                  (1u << 27) /**< \brief GPIO Mask  for PA27 */\r
+#define PIN_PA28                          28  /**< \brief Pin Number for PA28 */\r
+#define GPIO_PA28                  (1u << 28) /**< \brief GPIO Mask  for PA28 */\r
+#define PIN_PA29                          29  /**< \brief Pin Number for PA29 */\r
+#define GPIO_PA29                  (1u << 29) /**< \brief GPIO Mask  for PA29 */\r
+#define PIN_PA30                          30  /**< \brief Pin Number for PA30 */\r
+#define GPIO_PA30                  (1u << 30) /**< \brief GPIO Mask  for PA30 */\r
+#define PIN_PA31                          31  /**< \brief Pin Number for PA31 */\r
+#define GPIO_PA31                  (1u << 31) /**< \brief GPIO Mask  for PA31 */\r
+#define PIN_PB00                          32  /**< \brief Pin Number for PB00 */\r
+#define GPIO_PB00                  (1u <<  0) /**< \brief GPIO Mask  for PB00 */\r
+#define PIN_PB01                          33  /**< \brief Pin Number for PB01 */\r
+#define GPIO_PB01                  (1u <<  1) /**< \brief GPIO Mask  for PB01 */\r
+#define PIN_PB02                          34  /**< \brief Pin Number for PB02 */\r
+#define GPIO_PB02                  (1u <<  2) /**< \brief GPIO Mask  for PB02 */\r
+#define PIN_PB03                          35  /**< \brief Pin Number for PB03 */\r
+#define GPIO_PB03                  (1u <<  3) /**< \brief GPIO Mask  for PB03 */\r
+#define PIN_PB04                          36  /**< \brief Pin Number for PB04 */\r
+#define GPIO_PB04                  (1u <<  4) /**< \brief GPIO Mask  for PB04 */\r
+#define PIN_PB05                          37  /**< \brief Pin Number for PB05 */\r
+#define GPIO_PB05                  (1u <<  5) /**< \brief GPIO Mask  for PB05 */\r
+#define PIN_PB06                          38  /**< \brief Pin Number for PB06 */\r
+#define GPIO_PB06                  (1u <<  6) /**< \brief GPIO Mask  for PB06 */\r
+#define PIN_PB07                          39  /**< \brief Pin Number for PB07 */\r
+#define GPIO_PB07                  (1u <<  7) /**< \brief GPIO Mask  for PB07 */\r
+#define PIN_PB08                          40  /**< \brief Pin Number for PB08 */\r
+#define GPIO_PB08                  (1u <<  8) /**< \brief GPIO Mask  for PB08 */\r
+#define PIN_PB09                          41  /**< \brief Pin Number for PB09 */\r
+#define GPIO_PB09                  (1u <<  9) /**< \brief GPIO Mask  for PB09 */\r
+#define PIN_PB10                          42  /**< \brief Pin Number for PB10 */\r
+#define GPIO_PB10                  (1u << 10) /**< \brief GPIO Mask  for PB10 */\r
+#define PIN_PB11                          43  /**< \brief Pin Number for PB11 */\r
+#define GPIO_PB11                  (1u << 11) /**< \brief GPIO Mask  for PB11 */\r
+#define PIN_PB12                          44  /**< \brief Pin Number for PB12 */\r
+#define GPIO_PB12                  (1u << 12) /**< \brief GPIO Mask  for PB12 */\r
+#define PIN_PB13                          45  /**< \brief Pin Number for PB13 */\r
+#define GPIO_PB13                  (1u << 13) /**< \brief GPIO Mask  for PB13 */\r
+#define PIN_PB14                          46  /**< \brief Pin Number for PB14 */\r
+#define GPIO_PB14                  (1u << 14) /**< \brief GPIO Mask  for PB14 */\r
+#define PIN_PB15                          47  /**< \brief Pin Number for PB15 */\r
+#define GPIO_PB15                  (1u << 15) /**< \brief GPIO Mask  for PB15 */\r
+#define PIN_PC00                          64  /**< \brief Pin Number for PC00 */\r
+#define GPIO_PC00                  (1u <<  0) /**< \brief GPIO Mask  for PC00 */\r
+#define PIN_PC01                          65  /**< \brief Pin Number for PC01 */\r
+#define GPIO_PC01                  (1u <<  1) /**< \brief GPIO Mask  for PC01 */\r
+#define PIN_PC02                          66  /**< \brief Pin Number for PC02 */\r
+#define GPIO_PC02                  (1u <<  2) /**< \brief GPIO Mask  for PC02 */\r
+#define PIN_PC03                          67  /**< \brief Pin Number for PC03 */\r
+#define GPIO_PC03                  (1u <<  3) /**< \brief GPIO Mask  for PC03 */\r
+#define PIN_PC04                          68  /**< \brief Pin Number for PC04 */\r
+#define GPIO_PC04                  (1u <<  4) /**< \brief GPIO Mask  for PC04 */\r
+#define PIN_PC05                          69  /**< \brief Pin Number for PC05 */\r
+#define GPIO_PC05                  (1u <<  5) /**< \brief GPIO Mask  for PC05 */\r
+#define PIN_PC06                          70  /**< \brief Pin Number for PC06 */\r
+#define GPIO_PC06                  (1u <<  6) /**< \brief GPIO Mask  for PC06 */\r
+#define PIN_PC07                          71  /**< \brief Pin Number for PC07 */\r
+#define GPIO_PC07                  (1u <<  7) /**< \brief GPIO Mask  for PC07 */\r
+#define PIN_PC08                          72  /**< \brief Pin Number for PC08 */\r
+#define GPIO_PC08                  (1u <<  8) /**< \brief GPIO Mask  for PC08 */\r
+#define PIN_PC09                          73  /**< \brief Pin Number for PC09 */\r
+#define GPIO_PC09                  (1u <<  9) /**< \brief GPIO Mask  for PC09 */\r
+#define PIN_PC10                          74  /**< \brief Pin Number for PC10 */\r
+#define GPIO_PC10                  (1u << 10) /**< \brief GPIO Mask  for PC10 */\r
+#define PIN_PC11                          75  /**< \brief Pin Number for PC11 */\r
+#define GPIO_PC11                  (1u << 11) /**< \brief GPIO Mask  for PC11 */\r
+#define PIN_PC12                          76  /**< \brief Pin Number for PC12 */\r
+#define GPIO_PC12                  (1u << 12) /**< \brief GPIO Mask  for PC12 */\r
+#define PIN_PC13                          77  /**< \brief Pin Number for PC13 */\r
+#define GPIO_PC13                  (1u << 13) /**< \brief GPIO Mask  for PC13 */\r
+#define PIN_PC14                          78  /**< \brief Pin Number for PC14 */\r
+#define GPIO_PC14                  (1u << 14) /**< \brief GPIO Mask  for PC14 */\r
+#define PIN_PC15                          79  /**< \brief Pin Number for PC15 */\r
+#define GPIO_PC15                  (1u << 15) /**< \brief GPIO Mask  for PC15 */\r
+#define PIN_PC16                          80  /**< \brief Pin Number for PC16 */\r
+#define GPIO_PC16                  (1u << 16) /**< \brief GPIO Mask  for PC16 */\r
+#define PIN_PC17                          81  /**< \brief Pin Number for PC17 */\r
+#define GPIO_PC17                  (1u << 17) /**< \brief GPIO Mask  for PC17 */\r
+#define PIN_PC18                          82  /**< \brief Pin Number for PC18 */\r
+#define GPIO_PC18                  (1u << 18) /**< \brief GPIO Mask  for PC18 */\r
+#define PIN_PC19                          83  /**< \brief Pin Number for PC19 */\r
+#define GPIO_PC19                  (1u << 19) /**< \brief GPIO Mask  for PC19 */\r
+#define PIN_PC20                          84  /**< \brief Pin Number for PC20 */\r
+#define GPIO_PC20                  (1u << 20) /**< \brief GPIO Mask  for PC20 */\r
+#define PIN_PC21                          85  /**< \brief Pin Number for PC21 */\r
+#define GPIO_PC21                  (1u << 21) /**< \brief GPIO Mask  for PC21 */\r
+#define PIN_PC22                          86  /**< \brief Pin Number for PC22 */\r
+#define GPIO_PC22                  (1u << 22) /**< \brief GPIO Mask  for PC22 */\r
+#define PIN_PC23                          87  /**< \brief Pin Number for PC23 */\r
+#define GPIO_PC23                  (1u << 23) /**< \brief GPIO Mask  for PC23 */\r
+#define PIN_PC24                          88  /**< \brief Pin Number for PC24 */\r
+#define GPIO_PC24                  (1u << 24) /**< \brief GPIO Mask  for PC24 */\r
+#define PIN_PC25                          89  /**< \brief Pin Number for PC25 */\r
+#define GPIO_PC25                  (1u << 25) /**< \brief GPIO Mask  for PC25 */\r
+#define PIN_PC26                          90  /**< \brief Pin Number for PC26 */\r
+#define GPIO_PC26                  (1u << 26) /**< \brief GPIO Mask  for PC26 */\r
+#define PIN_PC27                          91  /**< \brief Pin Number for PC27 */\r
+#define GPIO_PC27                  (1u << 27) /**< \brief GPIO Mask  for PC27 */\r
+#define PIN_PC28                          92  /**< \brief Pin Number for PC28 */\r
+#define GPIO_PC28                  (1u << 28) /**< \brief GPIO Mask  for PC28 */\r
+#define PIN_PC29                          93  /**< \brief Pin Number for PC29 */\r
+#define GPIO_PC29                  (1u << 29) /**< \brief GPIO Mask  for PC29 */\r
+#define PIN_PC30                          94  /**< \brief Pin Number for PC30 */\r
+#define GPIO_PC30                  (1u << 30) /**< \brief GPIO Mask  for PC30 */\r
+#define PIN_PC31                          95  /**< \brief Pin Number for PC31 */\r
+#define GPIO_PC31                  (1u << 31) /**< \brief GPIO Mask  for PC31 */\r
+/* ========== GPIO definition for ABDACB peripheral ========== */\r
+#define PIN_PA31C_ABDACB_CLK              31  /**< \brief ABDACB signal: CLK on PA31 mux C */\r
+#define MUX_PA31C_ABDACB_CLK               2\r
+#define GPIO_PA31C_ABDACB_CLK      (1u << 31)\r
+#define PIN_PC12C_ABDACB_CLK              76  /**< \brief ABDACB signal: CLK on PC12 mux C */\r
+#define MUX_PC12C_ABDACB_CLK               2\r
+#define GPIO_PC12C_ABDACB_CLK      (1u << 12)\r
+#define PIN_PA27C_ABDACB_DAC0             27  /**< \brief ABDACB signal: DAC0 on PA27 mux C */\r
+#define MUX_PA27C_ABDACB_DAC0              2\r
+#define GPIO_PA27C_ABDACB_DAC0     (1u << 27)\r
+#define PIN_PB02C_ABDACB_DAC0             34  /**< \brief ABDACB signal: DAC0 on PB02 mux C */\r
+#define MUX_PB02C_ABDACB_DAC0              2\r
+#define GPIO_PB02C_ABDACB_DAC0     (1u <<  2)\r
+#define PIN_PC09C_ABDACB_DAC0             73  /**< \brief ABDACB signal: DAC0 on PC09 mux C */\r
+#define MUX_PC09C_ABDACB_DAC0              2\r
+#define GPIO_PC09C_ABDACB_DAC0     (1u <<  9)\r
+#define PIN_PA17B_ABDACB_DAC0             17  /**< \brief ABDACB signal: DAC0 on PA17 mux B */\r
+#define MUX_PA17B_ABDACB_DAC0              1\r
+#define GPIO_PA17B_ABDACB_DAC0     (1u << 17)\r
+#define PIN_PA29C_ABDACB_DAC1             29  /**< \brief ABDACB signal: DAC1 on PA29 mux C */\r
+#define MUX_PA29C_ABDACB_DAC1              2\r
+#define GPIO_PA29C_ABDACB_DAC1     (1u << 29)\r
+#define PIN_PB04C_ABDACB_DAC1             36  /**< \brief ABDACB signal: DAC1 on PB04 mux C */\r
+#define MUX_PB04C_ABDACB_DAC1              2\r
+#define GPIO_PB04C_ABDACB_DAC1     (1u <<  4)\r
+#define PIN_PC13C_ABDACB_DAC1             77  /**< \brief ABDACB signal: DAC1 on PC13 mux C */\r
+#define MUX_PC13C_ABDACB_DAC1              2\r
+#define GPIO_PC13C_ABDACB_DAC1     (1u << 13)\r
+#define PIN_PA19B_ABDACB_DAC1             19  /**< \brief ABDACB signal: DAC1 on PA19 mux B */\r
+#define MUX_PA19B_ABDACB_DAC1              1\r
+#define GPIO_PA19B_ABDACB_DAC1     (1u << 19)\r
+#define PIN_PA28C_ABDACB_DACN0            28  /**< \brief ABDACB signal: DACN0 on PA28 mux C */\r
+#define MUX_PA28C_ABDACB_DACN0             2\r
+#define GPIO_PA28C_ABDACB_DACN0    (1u << 28)\r
+#define PIN_PB03C_ABDACB_DACN0            35  /**< \brief ABDACB signal: DACN0 on PB03 mux C */\r
+#define MUX_PB03C_ABDACB_DACN0             2\r
+#define GPIO_PB03C_ABDACB_DACN0    (1u <<  3)\r
+#define PIN_PC10C_ABDACB_DACN0            74  /**< \brief ABDACB signal: DACN0 on PC10 mux C */\r
+#define MUX_PC10C_ABDACB_DACN0             2\r
+#define GPIO_PC10C_ABDACB_DACN0    (1u << 10)\r
+#define PIN_PA18B_ABDACB_DACN0            18  /**< \brief ABDACB signal: DACN0 on PA18 mux B */\r
+#define MUX_PA18B_ABDACB_DACN0             1\r
+#define GPIO_PA18B_ABDACB_DACN0    (1u << 18)\r
+#define PIN_PA30C_ABDACB_DACN1            30  /**< \brief ABDACB signal: DACN1 on PA30 mux C */\r
+#define MUX_PA30C_ABDACB_DACN1             2\r
+#define GPIO_PA30C_ABDACB_DACN1    (1u << 30)\r
+#define PIN_PB05C_ABDACB_DACN1            37  /**< \brief ABDACB signal: DACN1 on PB05 mux C */\r
+#define MUX_PB05C_ABDACB_DACN1             2\r
+#define GPIO_PB05C_ABDACB_DACN1    (1u <<  5)\r
+#define PIN_PC14C_ABDACB_DACN1            78  /**< \brief ABDACB signal: DACN1 on PC14 mux C */\r
+#define MUX_PC14C_ABDACB_DACN1             2\r
+#define GPIO_PC14C_ABDACB_DACN1    (1u << 14)\r
+#define PIN_PA20B_ABDACB_DACN1            20  /**< \brief ABDACB signal: DACN1 on PA20 mux B */\r
+#define MUX_PA20B_ABDACB_DACN1             1\r
+#define GPIO_PA20B_ABDACB_DACN1    (1u << 20)\r
+/* ========== GPIO definition for ACIFC peripheral ========== */\r
+#define PIN_PA06E_ACIFC_ACAN0              6  /**< \brief ACIFC signal: ACAN0 on PA06 mux E */\r
+#define MUX_PA06E_ACIFC_ACAN0              4\r
+#define GPIO_PA06E_ACIFC_ACAN0     (1u <<  6)\r
+#define PIN_PC09E_ACIFC_ACAN1             73  /**< \brief ACIFC signal: ACAN1 on PC09 mux E */\r
+#define MUX_PC09E_ACIFC_ACAN1              4\r
+#define GPIO_PC09E_ACIFC_ACAN1     (1u <<  9)\r
+#define PIN_PA07E_ACIFC_ACAP0              7  /**< \brief ACIFC signal: ACAP0 on PA07 mux E */\r
+#define MUX_PA07E_ACIFC_ACAP0              4\r
+#define GPIO_PA07E_ACIFC_ACAP0     (1u <<  7)\r
+#define PIN_PC10E_ACIFC_ACAP1             74  /**< \brief ACIFC signal: ACAP1 on PC10 mux E */\r
+#define MUX_PC10E_ACIFC_ACAP1              4\r
+#define GPIO_PC10E_ACIFC_ACAP1     (1u << 10)\r
+#define PIN_PB02E_ACIFC_ACBN0             34  /**< \brief ACIFC signal: ACBN0 on PB02 mux E */\r
+#define MUX_PB02E_ACIFC_ACBN0              4\r
+#define GPIO_PB02E_ACIFC_ACBN0     (1u <<  2)\r
+#define PIN_PC13E_ACIFC_ACBN1             77  /**< \brief ACIFC signal: ACBN1 on PC13 mux E */\r
+#define MUX_PC13E_ACIFC_ACBN1              4\r
+#define GPIO_PC13E_ACIFC_ACBN1     (1u << 13)\r
+#define PIN_PB03E_ACIFC_ACBP0             35  /**< \brief ACIFC signal: ACBP0 on PB03 mux E */\r
+#define MUX_PB03E_ACIFC_ACBP0              4\r
+#define GPIO_PB03E_ACIFC_ACBP0     (1u <<  3)\r
+#define PIN_PC14E_ACIFC_ACBP1             78  /**< \brief ACIFC signal: ACBP1 on PC14 mux E */\r
+#define MUX_PC14E_ACIFC_ACBP1              4\r
+#define GPIO_PC14E_ACIFC_ACBP1     (1u << 14)\r
+/* ========== GPIO definition for ADCIFE peripheral ========== */\r
+#define PIN_PA04A_ADCIFE_AD0               4  /**< \brief ADCIFE signal: AD0 on PA04 mux A */\r
+#define MUX_PA04A_ADCIFE_AD0               0\r
+#define GPIO_PA04A_ADCIFE_AD0      (1u <<  4)\r
+#define PIN_PA05A_ADCIFE_AD1               5  /**< \brief ADCIFE signal: AD1 on PA05 mux A */\r
+#define MUX_PA05A_ADCIFE_AD1               0\r
+#define GPIO_PA05A_ADCIFE_AD1      (1u <<  5)\r
+#define PIN_PA07A_ADCIFE_AD2               7  /**< \brief ADCIFE signal: AD2 on PA07 mux A */\r
+#define MUX_PA07A_ADCIFE_AD2               0\r
+#define GPIO_PA07A_ADCIFE_AD2      (1u <<  7)\r
+#define PIN_PB02A_ADCIFE_AD3              34  /**< \brief ADCIFE signal: AD3 on PB02 mux A */\r
+#define MUX_PB02A_ADCIFE_AD3               0\r
+#define GPIO_PB02A_ADCIFE_AD3      (1u <<  2)\r
+#define PIN_PB03A_ADCIFE_AD4              35  /**< \brief ADCIFE signal: AD4 on PB03 mux A */\r
+#define MUX_PB03A_ADCIFE_AD4               0\r
+#define GPIO_PB03A_ADCIFE_AD4      (1u <<  3)\r
+#define PIN_PB04A_ADCIFE_AD5              36  /**< \brief ADCIFE signal: AD5 on PB04 mux A */\r
+#define MUX_PB04A_ADCIFE_AD5               0\r
+#define GPIO_PB04A_ADCIFE_AD5      (1u <<  4)\r
+#define PIN_PB05A_ADCIFE_AD6              37  /**< \brief ADCIFE signal: AD6 on PB05 mux A */\r
+#define MUX_PB05A_ADCIFE_AD6               0\r
+#define GPIO_PB05A_ADCIFE_AD6      (1u <<  5)\r
+#define PIN_PC07A_ADCIFE_AD7              71  /**< \brief ADCIFE signal: AD7 on PC07 mux A */\r
+#define MUX_PC07A_ADCIFE_AD7               0\r
+#define GPIO_PC07A_ADCIFE_AD7      (1u <<  7)\r
+#define PIN_PC08A_ADCIFE_AD8              72  /**< \brief ADCIFE signal: AD8 on PC08 mux A */\r
+#define MUX_PC08A_ADCIFE_AD8               0\r
+#define GPIO_PC08A_ADCIFE_AD8      (1u <<  8)\r
+#define PIN_PC09A_ADCIFE_AD9              73  /**< \brief ADCIFE signal: AD9 on PC09 mux A */\r
+#define MUX_PC09A_ADCIFE_AD9               0\r
+#define GPIO_PC09A_ADCIFE_AD9      (1u <<  9)\r
+#define PIN_PC10A_ADCIFE_AD10             74  /**< \brief ADCIFE signal: AD10 on PC10 mux A */\r
+#define MUX_PC10A_ADCIFE_AD10              0\r
+#define GPIO_PC10A_ADCIFE_AD10     (1u << 10)\r
+#define PIN_PC11A_ADCIFE_AD11             75  /**< \brief ADCIFE signal: AD11 on PC11 mux A */\r
+#define MUX_PC11A_ADCIFE_AD11              0\r
+#define GPIO_PC11A_ADCIFE_AD11     (1u << 11)\r
+#define PIN_PC12A_ADCIFE_AD12             76  /**< \brief ADCIFE signal: AD12 on PC12 mux A */\r
+#define MUX_PC12A_ADCIFE_AD12              0\r
+#define GPIO_PC12A_ADCIFE_AD12     (1u << 12)\r
+#define PIN_PC13A_ADCIFE_AD13             77  /**< \brief ADCIFE signal: AD13 on PC13 mux A */\r
+#define MUX_PC13A_ADCIFE_AD13              0\r
+#define GPIO_PC13A_ADCIFE_AD13     (1u << 13)\r
+#define PIN_PC14A_ADCIFE_AD14             78  /**< \brief ADCIFE signal: AD14 on PC14 mux A */\r
+#define MUX_PC14A_ADCIFE_AD14              0\r
+#define GPIO_PC14A_ADCIFE_AD14     (1u << 14)\r
+#define PIN_PA05E_ADCIFE_TRIGGER           5  /**< \brief ADCIFE signal: TRIGGER on PA05 mux E */\r
+#define MUX_PA05E_ADCIFE_TRIGGER           4\r
+#define GPIO_PA05E_ADCIFE_TRIGGER  (1u <<  5)\r
+/* ========== GPIO definition for CATB peripheral ========== */\r
+#define PIN_PA02G_CATB_DIS                 2  /**< \brief CATB signal: DIS on PA02 mux G */\r
+#define MUX_PA02G_CATB_DIS                 6\r
+#define GPIO_PA02G_CATB_DIS        (1u <<  2)\r
+#define PIN_PA12G_CATB_DIS                12  /**< \brief CATB signal: DIS on PA12 mux G */\r
+#define MUX_PA12G_CATB_DIS                 6\r
+#define GPIO_PA12G_CATB_DIS        (1u << 12)\r
+#define PIN_PA23G_CATB_DIS                23  /**< \brief CATB signal: DIS on PA23 mux G */\r
+#define MUX_PA23G_CATB_DIS                 6\r
+#define GPIO_PA23G_CATB_DIS        (1u << 23)\r
+#define PIN_PA31G_CATB_DIS                31  /**< \brief CATB signal: DIS on PA31 mux G */\r
+#define MUX_PA31G_CATB_DIS                 6\r
+#define GPIO_PA31G_CATB_DIS        (1u << 31)\r
+#define PIN_PB03G_CATB_DIS                35  /**< \brief CATB signal: DIS on PB03 mux G */\r
+#define MUX_PB03G_CATB_DIS                 6\r
+#define GPIO_PB03G_CATB_DIS        (1u <<  3)\r
+#define PIN_PB12G_CATB_DIS                44  /**< \brief CATB signal: DIS on PB12 mux G */\r
+#define MUX_PB12G_CATB_DIS                 6\r
+#define GPIO_PB12G_CATB_DIS        (1u << 12)\r
+#define PIN_PC05G_CATB_DIS                69  /**< \brief CATB signal: DIS on PC05 mux G */\r
+#define MUX_PC05G_CATB_DIS                 6\r
+#define GPIO_PC05G_CATB_DIS        (1u <<  5)\r
+#define PIN_PC14G_CATB_DIS                78  /**< \brief CATB signal: DIS on PC14 mux G */\r
+#define MUX_PC14G_CATB_DIS                 6\r
+#define GPIO_PC14G_CATB_DIS        (1u << 14)\r
+#define PIN_PC23G_CATB_DIS                87  /**< \brief CATB signal: DIS on PC23 mux G */\r
+#define MUX_PC23G_CATB_DIS                 6\r
+#define GPIO_PC23G_CATB_DIS        (1u << 23)\r
+#define PIN_PA04G_CATB_SENSE0              4  /**< \brief CATB signal: SENSE0 on PA04 mux G */\r
+#define MUX_PA04G_CATB_SENSE0              6\r
+#define GPIO_PA04G_CATB_SENSE0     (1u <<  4)\r
+#define PIN_PA27G_CATB_SENSE0             27  /**< \brief CATB signal: SENSE0 on PA27 mux G */\r
+#define MUX_PA27G_CATB_SENSE0              6\r
+#define GPIO_PA27G_CATB_SENSE0     (1u << 27)\r
+#define PIN_PB13G_CATB_SENSE0             45  /**< \brief CATB signal: SENSE0 on PB13 mux G */\r
+#define MUX_PB13G_CATB_SENSE0              6\r
+#define GPIO_PB13G_CATB_SENSE0     (1u << 13)\r
+#define PIN_PA05G_CATB_SENSE1              5  /**< \brief CATB signal: SENSE1 on PA05 mux G */\r
+#define MUX_PA05G_CATB_SENSE1              6\r
+#define GPIO_PA05G_CATB_SENSE1     (1u <<  5)\r
+#define PIN_PA28G_CATB_SENSE1             28  /**< \brief CATB signal: SENSE1 on PA28 mux G */\r
+#define MUX_PA28G_CATB_SENSE1              6\r
+#define GPIO_PA28G_CATB_SENSE1     (1u << 28)\r
+#define PIN_PB14G_CATB_SENSE1             46  /**< \brief CATB signal: SENSE1 on PB14 mux G */\r
+#define MUX_PB14G_CATB_SENSE1              6\r
+#define GPIO_PB14G_CATB_SENSE1     (1u << 14)\r
+#define PIN_PA06G_CATB_SENSE2              6  /**< \brief CATB signal: SENSE2 on PA06 mux G */\r
+#define MUX_PA06G_CATB_SENSE2              6\r
+#define GPIO_PA06G_CATB_SENSE2     (1u <<  6)\r
+#define PIN_PA29G_CATB_SENSE2             29  /**< \brief CATB signal: SENSE2 on PA29 mux G */\r
+#define MUX_PA29G_CATB_SENSE2              6\r
+#define GPIO_PA29G_CATB_SENSE2     (1u << 29)\r
+#define PIN_PB15G_CATB_SENSE2             47  /**< \brief CATB signal: SENSE2 on PB15 mux G */\r
+#define MUX_PB15G_CATB_SENSE2              6\r
+#define GPIO_PB15G_CATB_SENSE2     (1u << 15)\r
+#define PIN_PA07G_CATB_SENSE3              7  /**< \brief CATB signal: SENSE3 on PA07 mux G */\r
+#define MUX_PA07G_CATB_SENSE3              6\r
+#define GPIO_PA07G_CATB_SENSE3     (1u <<  7)\r
+#define PIN_PA30G_CATB_SENSE3             30  /**< \brief CATB signal: SENSE3 on PA30 mux G */\r
+#define MUX_PA30G_CATB_SENSE3              6\r
+#define GPIO_PA30G_CATB_SENSE3     (1u << 30)\r
+#define PIN_PC00G_CATB_SENSE3             64  /**< \brief CATB signal: SENSE3 on PC00 mux G */\r
+#define MUX_PC00G_CATB_SENSE3              6\r
+#define GPIO_PC00G_CATB_SENSE3     (1u <<  0)\r
+#define PIN_PA08G_CATB_SENSE4              8  /**< \brief CATB signal: SENSE4 on PA08 mux G */\r
+#define MUX_PA08G_CATB_SENSE4              6\r
+#define GPIO_PA08G_CATB_SENSE4     (1u <<  8)\r
+#define PIN_PC01G_CATB_SENSE4             65  /**< \brief CATB signal: SENSE4 on PC01 mux G */\r
+#define MUX_PC01G_CATB_SENSE4              6\r
+#define GPIO_PC01G_CATB_SENSE4     (1u <<  1)\r
+#define PIN_PA09G_CATB_SENSE5              9  /**< \brief CATB signal: SENSE5 on PA09 mux G */\r
+#define MUX_PA09G_CATB_SENSE5              6\r
+#define GPIO_PA09G_CATB_SENSE5     (1u <<  9)\r
+#define PIN_PC02G_CATB_SENSE5             66  /**< \brief CATB signal: SENSE5 on PC02 mux G */\r
+#define MUX_PC02G_CATB_SENSE5              6\r
+#define GPIO_PC02G_CATB_SENSE5     (1u <<  2)\r
+#define PIN_PA10G_CATB_SENSE6             10  /**< \brief CATB signal: SENSE6 on PA10 mux G */\r
+#define MUX_PA10G_CATB_SENSE6              6\r
+#define GPIO_PA10G_CATB_SENSE6     (1u << 10)\r
+#define PIN_PC03G_CATB_SENSE6             67  /**< \brief CATB signal: SENSE6 on PC03 mux G */\r
+#define MUX_PC03G_CATB_SENSE6              6\r
+#define GPIO_PC03G_CATB_SENSE6     (1u <<  3)\r
+#define PIN_PA11G_CATB_SENSE7             11  /**< \brief CATB signal: SENSE7 on PA11 mux G */\r
+#define MUX_PA11G_CATB_SENSE7              6\r
+#define GPIO_PA11G_CATB_SENSE7     (1u << 11)\r
+#define PIN_PC04G_CATB_SENSE7             68  /**< \brief CATB signal: SENSE7 on PC04 mux G */\r
+#define MUX_PC04G_CATB_SENSE7              6\r
+#define GPIO_PC04G_CATB_SENSE7     (1u <<  4)\r
+#define PIN_PA13G_CATB_SENSE8             13  /**< \brief CATB signal: SENSE8 on PA13 mux G */\r
+#define MUX_PA13G_CATB_SENSE8              6\r
+#define GPIO_PA13G_CATB_SENSE8     (1u << 13)\r
+#define PIN_PC06G_CATB_SENSE8             70  /**< \brief CATB signal: SENSE8 on PC06 mux G */\r
+#define MUX_PC06G_CATB_SENSE8              6\r
+#define GPIO_PC06G_CATB_SENSE8     (1u <<  6)\r
+#define PIN_PA14G_CATB_SENSE9             14  /**< \brief CATB signal: SENSE9 on PA14 mux G */\r
+#define MUX_PA14G_CATB_SENSE9              6\r
+#define GPIO_PA14G_CATB_SENSE9     (1u << 14)\r
+#define PIN_PC07G_CATB_SENSE9             71  /**< \brief CATB signal: SENSE9 on PC07 mux G */\r
+#define MUX_PC07G_CATB_SENSE9              6\r
+#define GPIO_PC07G_CATB_SENSE9     (1u <<  7)\r
+#define PIN_PA15G_CATB_SENSE10            15  /**< \brief CATB signal: SENSE10 on PA15 mux G */\r
+#define MUX_PA15G_CATB_SENSE10             6\r
+#define GPIO_PA15G_CATB_SENSE10    (1u << 15)\r
+#define PIN_PC08G_CATB_SENSE10            72  /**< \brief CATB signal: SENSE10 on PC08 mux G */\r
+#define MUX_PC08G_CATB_SENSE10             6\r
+#define GPIO_PC08G_CATB_SENSE10    (1u <<  8)\r
+#define PIN_PA16G_CATB_SENSE11            16  /**< \brief CATB signal: SENSE11 on PA16 mux G */\r
+#define MUX_PA16G_CATB_SENSE11             6\r
+#define GPIO_PA16G_CATB_SENSE11    (1u << 16)\r
+#define PIN_PC09G_CATB_SENSE11            73  /**< \brief CATB signal: SENSE11 on PC09 mux G */\r
+#define MUX_PC09G_CATB_SENSE11             6\r
+#define GPIO_PC09G_CATB_SENSE11    (1u <<  9)\r
+#define PIN_PA17G_CATB_SENSE12            17  /**< \brief CATB signal: SENSE12 on PA17 mux G */\r
+#define MUX_PA17G_CATB_SENSE12             6\r
+#define GPIO_PA17G_CATB_SENSE12    (1u << 17)\r
+#define PIN_PC10G_CATB_SENSE12            74  /**< \brief CATB signal: SENSE12 on PC10 mux G */\r
+#define MUX_PC10G_CATB_SENSE12             6\r
+#define GPIO_PC10G_CATB_SENSE12    (1u << 10)\r
+#define PIN_PA18G_CATB_SENSE13            18  /**< \brief CATB signal: SENSE13 on PA18 mux G */\r
+#define MUX_PA18G_CATB_SENSE13             6\r
+#define GPIO_PA18G_CATB_SENSE13    (1u << 18)\r
+#define PIN_PC11G_CATB_SENSE13            75  /**< \brief CATB signal: SENSE13 on PC11 mux G */\r
+#define MUX_PC11G_CATB_SENSE13             6\r
+#define GPIO_PC11G_CATB_SENSE13    (1u << 11)\r
+#define PIN_PA19G_CATB_SENSE14            19  /**< \brief CATB signal: SENSE14 on PA19 mux G */\r
+#define MUX_PA19G_CATB_SENSE14             6\r
+#define GPIO_PA19G_CATB_SENSE14    (1u << 19)\r
+#define PIN_PC12G_CATB_SENSE14            76  /**< \brief CATB signal: SENSE14 on PC12 mux G */\r
+#define MUX_PC12G_CATB_SENSE14             6\r
+#define GPIO_PC12G_CATB_SENSE14    (1u << 12)\r
+#define PIN_PA20G_CATB_SENSE15            20  /**< \brief CATB signal: SENSE15 on PA20 mux G */\r
+#define MUX_PA20G_CATB_SENSE15             6\r
+#define GPIO_PA20G_CATB_SENSE15    (1u << 20)\r
+#define PIN_PC13G_CATB_SENSE15            77  /**< \brief CATB signal: SENSE15 on PC13 mux G */\r
+#define MUX_PC13G_CATB_SENSE15             6\r
+#define GPIO_PC13G_CATB_SENSE15    (1u << 13)\r
+#define PIN_PA21G_CATB_SENSE16            21  /**< \brief CATB signal: SENSE16 on PA21 mux G */\r
+#define MUX_PA21G_CATB_SENSE16             6\r
+#define GPIO_PA21G_CATB_SENSE16    (1u << 21)\r
+#define PIN_PC15G_CATB_SENSE16            79  /**< \brief CATB signal: SENSE16 on PC15 mux G */\r
+#define MUX_PC15G_CATB_SENSE16             6\r
+#define GPIO_PC15G_CATB_SENSE16    (1u << 15)\r
+#define PIN_PA22G_CATB_SENSE17            22  /**< \brief CATB signal: SENSE17 on PA22 mux G */\r
+#define MUX_PA22G_CATB_SENSE17             6\r
+#define GPIO_PA22G_CATB_SENSE17    (1u << 22)\r
+#define PIN_PC16G_CATB_SENSE17            80  /**< \brief CATB signal: SENSE17 on PC16 mux G */\r
+#define MUX_PC16G_CATB_SENSE17             6\r
+#define GPIO_PC16G_CATB_SENSE17    (1u << 16)\r
+#define PIN_PA24G_CATB_SENSE18            24  /**< \brief CATB signal: SENSE18 on PA24 mux G */\r
+#define MUX_PA24G_CATB_SENSE18             6\r
+#define GPIO_PA24G_CATB_SENSE18    (1u << 24)\r
+#define PIN_PC17G_CATB_SENSE18            81  /**< \brief CATB signal: SENSE18 on PC17 mux G */\r
+#define MUX_PC17G_CATB_SENSE18             6\r
+#define GPIO_PC17G_CATB_SENSE18    (1u << 17)\r
+#define PIN_PA25G_CATB_SENSE19            25  /**< \brief CATB signal: SENSE19 on PA25 mux G */\r
+#define MUX_PA25G_CATB_SENSE19             6\r
+#define GPIO_PA25G_CATB_SENSE19    (1u << 25)\r
+#define PIN_PC18G_CATB_SENSE19            82  /**< \brief CATB signal: SENSE19 on PC18 mux G */\r
+#define MUX_PC18G_CATB_SENSE19             6\r
+#define GPIO_PC18G_CATB_SENSE19    (1u << 18)\r
+#define PIN_PA26G_CATB_SENSE20            26  /**< \brief CATB signal: SENSE20 on PA26 mux G */\r
+#define MUX_PA26G_CATB_SENSE20             6\r
+#define GPIO_PA26G_CATB_SENSE20    (1u << 26)\r
+#define PIN_PC19G_CATB_SENSE20            83  /**< \brief CATB signal: SENSE20 on PC19 mux G */\r
+#define MUX_PC19G_CATB_SENSE20             6\r
+#define GPIO_PC19G_CATB_SENSE20    (1u << 19)\r
+#define PIN_PB00G_CATB_SENSE21            32  /**< \brief CATB signal: SENSE21 on PB00 mux G */\r
+#define MUX_PB00G_CATB_SENSE21             6\r
+#define GPIO_PB00G_CATB_SENSE21    (1u <<  0)\r
+#define PIN_PC20G_CATB_SENSE21            84  /**< \brief CATB signal: SENSE21 on PC20 mux G */\r
+#define MUX_PC20G_CATB_SENSE21             6\r
+#define GPIO_PC20G_CATB_SENSE21    (1u << 20)\r
+#define PIN_PB01G_CATB_SENSE22            33  /**< \brief CATB signal: SENSE22 on PB01 mux G */\r
+#define MUX_PB01G_CATB_SENSE22             6\r
+#define GPIO_PB01G_CATB_SENSE22    (1u <<  1)\r
+#define PIN_PC21G_CATB_SENSE22            85  /**< \brief CATB signal: SENSE22 on PC21 mux G */\r
+#define MUX_PC21G_CATB_SENSE22             6\r
+#define GPIO_PC21G_CATB_SENSE22    (1u << 21)\r
+#define PIN_PB02G_CATB_SENSE23            34  /**< \brief CATB signal: SENSE23 on PB02 mux G */\r
+#define MUX_PB02G_CATB_SENSE23             6\r
+#define GPIO_PB02G_CATB_SENSE23    (1u <<  2)\r
+#define PIN_PC22G_CATB_SENSE23            86  /**< \brief CATB signal: SENSE23 on PC22 mux G */\r
+#define MUX_PC22G_CATB_SENSE23             6\r
+#define GPIO_PC22G_CATB_SENSE23    (1u << 22)\r
+#define PIN_PB04G_CATB_SENSE24            36  /**< \brief CATB signal: SENSE24 on PB04 mux G */\r
+#define MUX_PB04G_CATB_SENSE24             6\r
+#define GPIO_PB04G_CATB_SENSE24    (1u <<  4)\r
+#define PIN_PC24G_CATB_SENSE24            88  /**< \brief CATB signal: SENSE24 on PC24 mux G */\r
+#define MUX_PC24G_CATB_SENSE24             6\r
+#define GPIO_PC24G_CATB_SENSE24    (1u << 24)\r
+#define PIN_PB05G_CATB_SENSE25            37  /**< \brief CATB signal: SENSE25 on PB05 mux G */\r
+#define MUX_PB05G_CATB_SENSE25             6\r
+#define GPIO_PB05G_CATB_SENSE25    (1u <<  5)\r
+#define PIN_PC25G_CATB_SENSE25            89  /**< \brief CATB signal: SENSE25 on PC25 mux G */\r
+#define MUX_PC25G_CATB_SENSE25             6\r
+#define GPIO_PC25G_CATB_SENSE25    (1u << 25)\r
+#define PIN_PB06G_CATB_SENSE26            38  /**< \brief CATB signal: SENSE26 on PB06 mux G */\r
+#define MUX_PB06G_CATB_SENSE26             6\r
+#define GPIO_PB06G_CATB_SENSE26    (1u <<  6)\r
+#define PIN_PC26G_CATB_SENSE26            90  /**< \brief CATB signal: SENSE26 on PC26 mux G */\r
+#define MUX_PC26G_CATB_SENSE26             6\r
+#define GPIO_PC26G_CATB_SENSE26    (1u << 26)\r
+#define PIN_PB07G_CATB_SENSE27            39  /**< \brief CATB signal: SENSE27 on PB07 mux G */\r
+#define MUX_PB07G_CATB_SENSE27             6\r
+#define GPIO_PB07G_CATB_SENSE27    (1u <<  7)\r
+#define PIN_PC27G_CATB_SENSE27            91  /**< \brief CATB signal: SENSE27 on PC27 mux G */\r
+#define MUX_PC27G_CATB_SENSE27             6\r
+#define GPIO_PC27G_CATB_SENSE27    (1u << 27)\r
+#define PIN_PB08G_CATB_SENSE28            40  /**< \brief CATB signal: SENSE28 on PB08 mux G */\r
+#define MUX_PB08G_CATB_SENSE28             6\r
+#define GPIO_PB08G_CATB_SENSE28    (1u <<  8)\r
+#define PIN_PC28G_CATB_SENSE28            92  /**< \brief CATB signal: SENSE28 on PC28 mux G */\r
+#define MUX_PC28G_CATB_SENSE28             6\r
+#define GPIO_PC28G_CATB_SENSE28    (1u << 28)\r
+#define PIN_PB09G_CATB_SENSE29            41  /**< \brief CATB signal: SENSE29 on PB09 mux G */\r
+#define MUX_PB09G_CATB_SENSE29             6\r
+#define GPIO_PB09G_CATB_SENSE29    (1u <<  9)\r
+#define PIN_PC29G_CATB_SENSE29            93  /**< \brief CATB signal: SENSE29 on PC29 mux G */\r
+#define MUX_PC29G_CATB_SENSE29             6\r
+#define GPIO_PC29G_CATB_SENSE29    (1u << 29)\r
+#define PIN_PB10G_CATB_SENSE30            42  /**< \brief CATB signal: SENSE30 on PB10 mux G */\r
+#define MUX_PB10G_CATB_SENSE30             6\r
+#define GPIO_PB10G_CATB_SENSE30    (1u << 10)\r
+#define PIN_PC30G_CATB_SENSE30            94  /**< \brief CATB signal: SENSE30 on PC30 mux G */\r
+#define MUX_PC30G_CATB_SENSE30             6\r
+#define GPIO_PC30G_CATB_SENSE30    (1u << 30)\r
+#define PIN_PB11G_CATB_SENSE31            43  /**< \brief CATB signal: SENSE31 on PB11 mux G */\r
+#define MUX_PB11G_CATB_SENSE31             6\r
+#define GPIO_PB11G_CATB_SENSE31    (1u << 11)\r
+#define PIN_PC31G_CATB_SENSE31            95  /**< \brief CATB signal: SENSE31 on PC31 mux G */\r
+#define MUX_PC31G_CATB_SENSE31             6\r
+#define GPIO_PC31G_CATB_SENSE31    (1u << 31)\r
+/* ========== GPIO definition for DACC peripheral ========== */\r
+#define PIN_PB04E_DACC_EXT_TRIG0          36  /**< \brief DACC signal: EXT_TRIG0 on PB04 mux E */\r
+#define MUX_PB04E_DACC_EXT_TRIG0           4\r
+#define GPIO_PB04E_DACC_EXT_TRIG0  (1u <<  4)\r
+#define PIN_PA06A_DACC_VOUT                6  /**< \brief DACC signal: VOUT on PA06 mux A */\r
+#define MUX_PA06A_DACC_VOUT                0\r
+#define GPIO_PA06A_DACC_VOUT       (1u <<  6)\r
+/* ========== GPIO definition for EIC peripheral ========== */\r
+#define PIN_PB01C_EIC_EXTINT0             33  /**< \brief EIC signal: EXTINT0 on PB01 mux C */\r
+#define MUX_PB01C_EIC_EXTINT0              2\r
+#define GPIO_PB01C_EIC_EXTINT0     (1u <<  1)\r
+#define PIN_PA06C_EIC_EXTINT1              6  /**< \brief EIC signal: EXTINT1 on PA06 mux C */\r
+#define MUX_PA06C_EIC_EXTINT1              2\r
+#define GPIO_PA06C_EIC_EXTINT1     (1u <<  6)\r
+#define PIN_PA16C_EIC_EXTINT1             16  /**< \brief EIC signal: EXTINT1 on PA16 mux C */\r
+#define MUX_PA16C_EIC_EXTINT1              2\r
+#define GPIO_PA16C_EIC_EXTINT1     (1u << 16)\r
+#define PIN_PC24B_EIC_EXTINT1             88  /**< \brief EIC signal: EXTINT1 on PC24 mux B */\r
+#define MUX_PC24B_EIC_EXTINT1              1\r
+#define GPIO_PC24B_EIC_EXTINT1     (1u << 24)\r
+#define PIN_PA04C_EIC_EXTINT2              4  /**< \brief EIC signal: EXTINT2 on PA04 mux C */\r
+#define MUX_PA04C_EIC_EXTINT2              2\r
+#define GPIO_PA04C_EIC_EXTINT2     (1u <<  4)\r
+#define PIN_PA17C_EIC_EXTINT2             17  /**< \brief EIC signal: EXTINT2 on PA17 mux C */\r
+#define MUX_PA17C_EIC_EXTINT2              2\r
+#define GPIO_PA17C_EIC_EXTINT2     (1u << 17)\r
+#define PIN_PC25B_EIC_EXTINT2             89  /**< \brief EIC signal: EXTINT2 on PC25 mux B */\r
+#define MUX_PC25B_EIC_EXTINT2              1\r
+#define GPIO_PC25B_EIC_EXTINT2     (1u << 25)\r
+#define PIN_PA05C_EIC_EXTINT3              5  /**< \brief EIC signal: EXTINT3 on PA05 mux C */\r
+#define MUX_PA05C_EIC_EXTINT3              2\r
+#define GPIO_PA05C_EIC_EXTINT3     (1u <<  5)\r
+#define PIN_PA18C_EIC_EXTINT3             18  /**< \brief EIC signal: EXTINT3 on PA18 mux C */\r
+#define MUX_PA18C_EIC_EXTINT3              2\r
+#define GPIO_PA18C_EIC_EXTINT3     (1u << 18)\r
+#define PIN_PC26B_EIC_EXTINT3             90  /**< \brief EIC signal: EXTINT3 on PC26 mux B */\r
+#define MUX_PC26B_EIC_EXTINT3              1\r
+#define GPIO_PC26B_EIC_EXTINT3     (1u << 26)\r
+#define PIN_PA07C_EIC_EXTINT4              7  /**< \brief EIC signal: EXTINT4 on PA07 mux C */\r
+#define MUX_PA07C_EIC_EXTINT4              2\r
+#define GPIO_PA07C_EIC_EXTINT4     (1u <<  7)\r
+#define PIN_PA19C_EIC_EXTINT4             19  /**< \brief EIC signal: EXTINT4 on PA19 mux C */\r
+#define MUX_PA19C_EIC_EXTINT4              2\r
+#define GPIO_PA19C_EIC_EXTINT4     (1u << 19)\r
+#define PIN_PC27B_EIC_EXTINT4             91  /**< \brief EIC signal: EXTINT4 on PC27 mux B */\r
+#define MUX_PC27B_EIC_EXTINT4              1\r
+#define GPIO_PC27B_EIC_EXTINT4     (1u << 27)\r
+#define PIN_PA20C_EIC_EXTINT5             20  /**< \brief EIC signal: EXTINT5 on PA20 mux C */\r
+#define MUX_PA20C_EIC_EXTINT5              2\r
+#define GPIO_PA20C_EIC_EXTINT5     (1u << 20)\r
+#define PIN_PC03B_EIC_EXTINT5             67  /**< \brief EIC signal: EXTINT5 on PC03 mux B */\r
+#define MUX_PC03B_EIC_EXTINT5              1\r
+#define GPIO_PC03B_EIC_EXTINT5     (1u <<  3)\r
+#define PIN_PA21C_EIC_EXTINT6             21  /**< \brief EIC signal: EXTINT6 on PA21 mux C */\r
+#define MUX_PA21C_EIC_EXTINT6              2\r
+#define GPIO_PA21C_EIC_EXTINT6     (1u << 21)\r
+#define PIN_PC04B_EIC_EXTINT6             68  /**< \brief EIC signal: EXTINT6 on PC04 mux B */\r
+#define MUX_PC04B_EIC_EXTINT6              1\r
+#define GPIO_PC04B_EIC_EXTINT6     (1u <<  4)\r
+#define PIN_PA22C_EIC_EXTINT7             22  /**< \brief EIC signal: EXTINT7 on PA22 mux C */\r
+#define MUX_PA22C_EIC_EXTINT7              2\r
+#define GPIO_PA22C_EIC_EXTINT7     (1u << 22)\r
+#define PIN_PC05B_EIC_EXTINT7             69  /**< \brief EIC signal: EXTINT7 on PC05 mux B */\r
+#define MUX_PC05B_EIC_EXTINT7              1\r
+#define GPIO_PC05B_EIC_EXTINT7     (1u <<  5)\r
+#define PIN_PA23C_EIC_EXTINT8             23  /**< \brief EIC signal: EXTINT8 on PA23 mux C */\r
+#define MUX_PA23C_EIC_EXTINT8              2\r
+#define GPIO_PA23C_EIC_EXTINT8     (1u << 23)\r
+#define PIN_PC06B_EIC_EXTINT8             70  /**< \brief EIC signal: EXTINT8 on PC06 mux B */\r
+#define MUX_PC06B_EIC_EXTINT8              1\r
+#define GPIO_PC06B_EIC_EXTINT8     (1u <<  6)\r
+/* ========== GPIO definition for GLOC peripheral ========== */\r
+#define PIN_PA06D_GLOC_IN0                 6  /**< \brief GLOC signal: IN0 on PA06 mux D */\r
+#define MUX_PA06D_GLOC_IN0                 3\r
+#define GPIO_PA06D_GLOC_IN0        (1u <<  6)\r
+#define PIN_PA20D_GLOC_IN0                20  /**< \brief GLOC signal: IN0 on PA20 mux D */\r
+#define MUX_PA20D_GLOC_IN0                 3\r
+#define GPIO_PA20D_GLOC_IN0        (1u << 20)\r
+#define PIN_PA04D_GLOC_IN1                 4  /**< \brief GLOC signal: IN1 on PA04 mux D */\r
+#define MUX_PA04D_GLOC_IN1                 3\r
+#define GPIO_PA04D_GLOC_IN1        (1u <<  4)\r
+#define PIN_PA21D_GLOC_IN1                21  /**< \brief GLOC signal: IN1 on PA21 mux D */\r
+#define MUX_PA21D_GLOC_IN1                 3\r
+#define GPIO_PA21D_GLOC_IN1        (1u << 21)\r
+#define PIN_PA05D_GLOC_IN2                 5  /**< \brief GLOC signal: IN2 on PA05 mux D */\r
+#define MUX_PA05D_GLOC_IN2                 3\r
+#define GPIO_PA05D_GLOC_IN2        (1u <<  5)\r
+#define PIN_PA22D_GLOC_IN2                22  /**< \brief GLOC signal: IN2 on PA22 mux D */\r
+#define MUX_PA22D_GLOC_IN2                 3\r
+#define GPIO_PA22D_GLOC_IN2        (1u << 22)\r
+#define PIN_PA07D_GLOC_IN3                 7  /**< \brief GLOC signal: IN3 on PA07 mux D */\r
+#define MUX_PA07D_GLOC_IN3                 3\r
+#define GPIO_PA07D_GLOC_IN3        (1u <<  7)\r
+#define PIN_PA23D_GLOC_IN3                23  /**< \brief GLOC signal: IN3 on PA23 mux D */\r
+#define MUX_PA23D_GLOC_IN3                 3\r
+#define GPIO_PA23D_GLOC_IN3        (1u << 23)\r
+#define PIN_PA27D_GLOC_IN4                27  /**< \brief GLOC signal: IN4 on PA27 mux D */\r
+#define MUX_PA27D_GLOC_IN4                 3\r
+#define GPIO_PA27D_GLOC_IN4        (1u << 27)\r
+#define PIN_PC15D_GLOC_IN4                79  /**< \brief GLOC signal: IN4 on PC15 mux D */\r
+#define MUX_PC15D_GLOC_IN4                 3\r
+#define GPIO_PC15D_GLOC_IN4        (1u << 15)\r
+#define PIN_PB06C_GLOC_IN4                38  /**< \brief GLOC signal: IN4 on PB06 mux C */\r
+#define MUX_PB06C_GLOC_IN4                 2\r
+#define GPIO_PB06C_GLOC_IN4        (1u <<  6)\r
+#define PIN_PC28C_GLOC_IN4                92  /**< \brief GLOC signal: IN4 on PC28 mux C */\r
+#define MUX_PC28C_GLOC_IN4                 2\r
+#define GPIO_PC28C_GLOC_IN4        (1u << 28)\r
+#define PIN_PA28D_GLOC_IN5                28  /**< \brief GLOC signal: IN5 on PA28 mux D */\r
+#define MUX_PA28D_GLOC_IN5                 3\r
+#define GPIO_PA28D_GLOC_IN5        (1u << 28)\r
+#define PIN_PC16D_GLOC_IN5                80  /**< \brief GLOC signal: IN5 on PC16 mux D */\r
+#define MUX_PC16D_GLOC_IN5                 3\r
+#define GPIO_PC16D_GLOC_IN5        (1u << 16)\r
+#define PIN_PB07C_GLOC_IN5                39  /**< \brief GLOC signal: IN5 on PB07 mux C */\r
+#define MUX_PB07C_GLOC_IN5                 2\r
+#define GPIO_PB07C_GLOC_IN5        (1u <<  7)\r
+#define PIN_PC29C_GLOC_IN5                93  /**< \brief GLOC signal: IN5 on PC29 mux C */\r
+#define MUX_PC29C_GLOC_IN5                 2\r
+#define GPIO_PC29C_GLOC_IN5        (1u << 29)\r
+#define PIN_PA29D_GLOC_IN6                29  /**< \brief GLOC signal: IN6 on PA29 mux D */\r
+#define MUX_PA29D_GLOC_IN6                 3\r
+#define GPIO_PA29D_GLOC_IN6        (1u << 29)\r
+#define PIN_PC17D_GLOC_IN6                81  /**< \brief GLOC signal: IN6 on PC17 mux D */\r
+#define MUX_PC17D_GLOC_IN6                 3\r
+#define GPIO_PC17D_GLOC_IN6        (1u << 17)\r
+#define PIN_PB08C_GLOC_IN6                40  /**< \brief GLOC signal: IN6 on PB08 mux C */\r
+#define MUX_PB08C_GLOC_IN6                 2\r
+#define GPIO_PB08C_GLOC_IN6        (1u <<  8)\r
+#define PIN_PC30C_GLOC_IN6                94  /**< \brief GLOC signal: IN6 on PC30 mux C */\r
+#define MUX_PC30C_GLOC_IN6                 2\r
+#define GPIO_PC30C_GLOC_IN6        (1u << 30)\r
+#define PIN_PA30D_GLOC_IN7                30  /**< \brief GLOC signal: IN7 on PA30 mux D */\r
+#define MUX_PA30D_GLOC_IN7                 3\r
+#define GPIO_PA30D_GLOC_IN7        (1u << 30)\r
+#define PIN_PC18D_GLOC_IN7                82  /**< \brief GLOC signal: IN7 on PC18 mux D */\r
+#define MUX_PC18D_GLOC_IN7                 3\r
+#define GPIO_PC18D_GLOC_IN7        (1u << 18)\r
+#define PIN_PB09C_GLOC_IN7                41  /**< \brief GLOC signal: IN7 on PB09 mux C */\r
+#define MUX_PB09C_GLOC_IN7                 2\r
+#define GPIO_PB09C_GLOC_IN7        (1u <<  9)\r
+#define PIN_PA08D_GLOC_OUT0                8  /**< \brief GLOC signal: OUT0 on PA08 mux D */\r
+#define MUX_PA08D_GLOC_OUT0                3\r
+#define GPIO_PA08D_GLOC_OUT0       (1u <<  8)\r
+#define PIN_PA24D_GLOC_OUT0               24  /**< \brief GLOC signal: OUT0 on PA24 mux D */\r
+#define MUX_PA24D_GLOC_OUT0                3\r
+#define GPIO_PA24D_GLOC_OUT0       (1u << 24)\r
+#define PIN_PA31D_GLOC_OUT1               31  /**< \brief GLOC signal: OUT1 on PA31 mux D */\r
+#define MUX_PA31D_GLOC_OUT1                3\r
+#define GPIO_PA31D_GLOC_OUT1       (1u << 31)\r
+#define PIN_PC19D_GLOC_OUT1               83  /**< \brief GLOC signal: OUT1 on PC19 mux D */\r
+#define MUX_PC19D_GLOC_OUT1                3\r
+#define GPIO_PC19D_GLOC_OUT1       (1u << 19)\r
+#define PIN_PB10C_GLOC_OUT1               42  /**< \brief GLOC signal: OUT1 on PB10 mux C */\r
+#define MUX_PB10C_GLOC_OUT1                2\r
+#define GPIO_PB10C_GLOC_OUT1       (1u << 10)\r
+#define PIN_PC31C_GLOC_OUT1               95  /**< \brief GLOC signal: OUT1 on PC31 mux C */\r
+#define MUX_PC31C_GLOC_OUT1                2\r
+#define GPIO_PC31C_GLOC_OUT1       (1u << 31)\r
+/* ========== GPIO definition for IISC peripheral ========== */\r
+#define PIN_PB05D_IISC_IMCK               37  /**< \brief IISC signal: IMCK on PB05 mux D */\r
+#define MUX_PB05D_IISC_IMCK                3\r
+#define GPIO_PB05D_IISC_IMCK       (1u <<  5)\r
+#define PIN_PC14D_IISC_IMCK               78  /**< \brief IISC signal: IMCK on PC14 mux D */\r
+#define MUX_PC14D_IISC_IMCK                3\r
+#define GPIO_PC14D_IISC_IMCK       (1u << 14)\r
+#define PIN_PA31B_IISC_IMCK               31  /**< \brief IISC signal: IMCK on PA31 mux B */\r
+#define MUX_PA31B_IISC_IMCK                1\r
+#define GPIO_PA31B_IISC_IMCK       (1u << 31)\r
+#define PIN_PB02D_IISC_ISCK               34  /**< \brief IISC signal: ISCK on PB02 mux D */\r
+#define MUX_PB02D_IISC_ISCK                3\r
+#define GPIO_PB02D_IISC_ISCK       (1u <<  2)\r
+#define PIN_PC09D_IISC_ISCK               73  /**< \brief IISC signal: ISCK on PC09 mux D */\r
+#define MUX_PC09D_IISC_ISCK                3\r
+#define GPIO_PC09D_IISC_ISCK       (1u <<  9)\r
+#define PIN_PA27B_IISC_ISCK               27  /**< \brief IISC signal: ISCK on PA27 mux B */\r
+#define MUX_PA27B_IISC_ISCK                1\r
+#define GPIO_PA27B_IISC_ISCK       (1u << 27)\r
+#define PIN_PB03D_IISC_ISDI               35  /**< \brief IISC signal: ISDI on PB03 mux D */\r
+#define MUX_PB03D_IISC_ISDI                3\r
+#define GPIO_PB03D_IISC_ISDI       (1u <<  3)\r
+#define PIN_PC10D_IISC_ISDI               74  /**< \brief IISC signal: ISDI on PC10 mux D */\r
+#define MUX_PC10D_IISC_ISDI                3\r
+#define GPIO_PC10D_IISC_ISDI       (1u << 10)\r
+#define PIN_PA28B_IISC_ISDI               28  /**< \brief IISC signal: ISDI on PA28 mux B */\r
+#define MUX_PA28B_IISC_ISDI                1\r
+#define GPIO_PA28B_IISC_ISDI       (1u << 28)\r
+#define PIN_PB04D_IISC_ISDO               36  /**< \brief IISC signal: ISDO on PB04 mux D */\r
+#define MUX_PB04D_IISC_ISDO                3\r
+#define GPIO_PB04D_IISC_ISDO       (1u <<  4)\r
+#define PIN_PC13D_IISC_ISDO               77  /**< \brief IISC signal: ISDO on PC13 mux D */\r
+#define MUX_PC13D_IISC_ISDO                3\r
+#define GPIO_PC13D_IISC_ISDO       (1u << 13)\r
+#define PIN_PA30B_IISC_ISDO               30  /**< \brief IISC signal: ISDO on PA30 mux B */\r
+#define MUX_PA30B_IISC_ISDO                1\r
+#define GPIO_PA30B_IISC_ISDO       (1u << 30)\r
+#define PIN_PB06D_IISC_IWS                38  /**< \brief IISC signal: IWS on PB06 mux D */\r
+#define MUX_PB06D_IISC_IWS                 3\r
+#define GPIO_PB06D_IISC_IWS        (1u <<  6)\r
+#define PIN_PC12D_IISC_IWS                76  /**< \brief IISC signal: IWS on PC12 mux D */\r
+#define MUX_PC12D_IISC_IWS                 3\r
+#define GPIO_PC12D_IISC_IWS        (1u << 12)\r
+#define PIN_PA29B_IISC_IWS                29  /**< \brief IISC signal: IWS on PA29 mux B */\r
+#define MUX_PA29B_IISC_IWS                 1\r
+#define GPIO_PA29B_IISC_IWS        (1u << 29)\r
+/* ========== GPIO definition for LCDCA peripheral ========== */\r
+#define PIN_PA12F_LCDCA_COM0              12  /**< \brief LCDCA signal: COM0 on PA12 mux F */\r
+#define MUX_PA12F_LCDCA_COM0               5\r
+#define GPIO_PA12F_LCDCA_COM0      (1u << 12)\r
+#define PIN_PA11F_LCDCA_COM1              11  /**< \brief LCDCA signal: COM1 on PA11 mux F */\r
+#define MUX_PA11F_LCDCA_COM1               5\r
+#define GPIO_PA11F_LCDCA_COM1      (1u << 11)\r
+#define PIN_PA10F_LCDCA_COM2              10  /**< \brief LCDCA signal: COM2 on PA10 mux F */\r
+#define MUX_PA10F_LCDCA_COM2               5\r
+#define GPIO_PA10F_LCDCA_COM2      (1u << 10)\r
+#define PIN_PA09F_LCDCA_COM3               9  /**< \brief LCDCA signal: COM3 on PA09 mux F */\r
+#define MUX_PA09F_LCDCA_COM3               5\r
+#define GPIO_PA09F_LCDCA_COM3      (1u <<  9)\r
+#define PIN_PC15F_LCDCA_SEG0              79  /**< \brief LCDCA signal: SEG0 on PC15 mux F */\r
+#define MUX_PC15F_LCDCA_SEG0               5\r
+#define GPIO_PC15F_LCDCA_SEG0      (1u << 15)\r
+#define PIN_PC16F_LCDCA_SEG1              80  /**< \brief LCDCA signal: SEG1 on PC16 mux F */\r
+#define MUX_PC16F_LCDCA_SEG1               5\r
+#define GPIO_PC16F_LCDCA_SEG1      (1u << 16)\r
+#define PIN_PC17F_LCDCA_SEG2              81  /**< \brief LCDCA signal: SEG2 on PC17 mux F */\r
+#define MUX_PC17F_LCDCA_SEG2               5\r
+#define GPIO_PC17F_LCDCA_SEG2      (1u << 17)\r
+#define PIN_PC18F_LCDCA_SEG3              82  /**< \brief LCDCA signal: SEG3 on PC18 mux F */\r
+#define MUX_PC18F_LCDCA_SEG3               5\r
+#define GPIO_PC18F_LCDCA_SEG3      (1u << 18)\r
+#define PIN_PC19F_LCDCA_SEG4              83  /**< \brief LCDCA signal: SEG4 on PC19 mux F */\r
+#define MUX_PC19F_LCDCA_SEG4               5\r
+#define GPIO_PC19F_LCDCA_SEG4      (1u << 19)\r
+#define PIN_PA13F_LCDCA_SEG5              13  /**< \brief LCDCA signal: SEG5 on PA13 mux F */\r
+#define MUX_PA13F_LCDCA_SEG5               5\r
+#define GPIO_PA13F_LCDCA_SEG5      (1u << 13)\r
+#define PIN_PA14F_LCDCA_SEG6              14  /**< \brief LCDCA signal: SEG6 on PA14 mux F */\r
+#define MUX_PA14F_LCDCA_SEG6               5\r
+#define GPIO_PA14F_LCDCA_SEG6      (1u << 14)\r
+#define PIN_PA15F_LCDCA_SEG7              15  /**< \brief LCDCA signal: SEG7 on PA15 mux F */\r
+#define MUX_PA15F_LCDCA_SEG7               5\r
+#define GPIO_PA15F_LCDCA_SEG7      (1u << 15)\r
+#define PIN_PA16F_LCDCA_SEG8              16  /**< \brief LCDCA signal: SEG8 on PA16 mux F */\r
+#define MUX_PA16F_LCDCA_SEG8               5\r
+#define GPIO_PA16F_LCDCA_SEG8      (1u << 16)\r
+#define PIN_PA17F_LCDCA_SEG9              17  /**< \brief LCDCA signal: SEG9 on PA17 mux F */\r
+#define MUX_PA17F_LCDCA_SEG9               5\r
+#define GPIO_PA17F_LCDCA_SEG9      (1u << 17)\r
+#define PIN_PC20F_LCDCA_SEG10             84  /**< \brief LCDCA signal: SEG10 on PC20 mux F */\r
+#define MUX_PC20F_LCDCA_SEG10              5\r
+#define GPIO_PC20F_LCDCA_SEG10     (1u << 20)\r
+#define PIN_PC21F_LCDCA_SEG11             85  /**< \brief LCDCA signal: SEG11 on PC21 mux F */\r
+#define MUX_PC21F_LCDCA_SEG11              5\r
+#define GPIO_PC21F_LCDCA_SEG11     (1u << 21)\r
+#define PIN_PC22F_LCDCA_SEG12             86  /**< \brief LCDCA signal: SEG12 on PC22 mux F */\r
+#define MUX_PC22F_LCDCA_SEG12              5\r
+#define GPIO_PC22F_LCDCA_SEG12     (1u << 22)\r
+#define PIN_PC23F_LCDCA_SEG13             87  /**< \brief LCDCA signal: SEG13 on PC23 mux F */\r
+#define MUX_PC23F_LCDCA_SEG13              5\r
+#define GPIO_PC23F_LCDCA_SEG13     (1u << 23)\r
+#define PIN_PB08F_LCDCA_SEG14             40  /**< \brief LCDCA signal: SEG14 on PB08 mux F */\r
+#define MUX_PB08F_LCDCA_SEG14              5\r
+#define GPIO_PB08F_LCDCA_SEG14     (1u <<  8)\r
+#define PIN_PB09F_LCDCA_SEG15             41  /**< \brief LCDCA signal: SEG15 on PB09 mux F */\r
+#define MUX_PB09F_LCDCA_SEG15              5\r
+#define GPIO_PB09F_LCDCA_SEG15     (1u <<  9)\r
+#define PIN_PB10F_LCDCA_SEG16             42  /**< \brief LCDCA signal: SEG16 on PB10 mux F */\r
+#define MUX_PB10F_LCDCA_SEG16              5\r
+#define GPIO_PB10F_LCDCA_SEG16     (1u << 10)\r
+#define PIN_PB11F_LCDCA_SEG17             43  /**< \brief LCDCA signal: SEG17 on PB11 mux F */\r
+#define MUX_PB11F_LCDCA_SEG17              5\r
+#define GPIO_PB11F_LCDCA_SEG17     (1u << 11)\r
+#define PIN_PA18F_LCDCA_SEG18             18  /**< \brief LCDCA signal: SEG18 on PA18 mux F */\r
+#define MUX_PA18F_LCDCA_SEG18              5\r
+#define GPIO_PA18F_LCDCA_SEG18     (1u << 18)\r
+#define PIN_PA19F_LCDCA_SEG19             19  /**< \brief LCDCA signal: SEG19 on PA19 mux F */\r
+#define MUX_PA19F_LCDCA_SEG19              5\r
+#define GPIO_PA19F_LCDCA_SEG19     (1u << 19)\r
+#define PIN_PA20F_LCDCA_SEG20             20  /**< \brief LCDCA signal: SEG20 on PA20 mux F */\r
+#define MUX_PA20F_LCDCA_SEG20              5\r
+#define GPIO_PA20F_LCDCA_SEG20     (1u << 20)\r
+#define PIN_PB07F_LCDCA_SEG21             39  /**< \brief LCDCA signal: SEG21 on PB07 mux F */\r
+#define MUX_PB07F_LCDCA_SEG21              5\r
+#define GPIO_PB07F_LCDCA_SEG21     (1u <<  7)\r
+#define PIN_PB06F_LCDCA_SEG22             38  /**< \brief LCDCA signal: SEG22 on PB06 mux F */\r
+#define MUX_PB06F_LCDCA_SEG22              5\r
+#define GPIO_PB06F_LCDCA_SEG22     (1u <<  6)\r
+#define PIN_PA08F_LCDCA_SEG23              8  /**< \brief LCDCA signal: SEG23 on PA08 mux F */\r
+#define MUX_PA08F_LCDCA_SEG23              5\r
+#define GPIO_PA08F_LCDCA_SEG23     (1u <<  8)\r
+#define PIN_PC24F_LCDCA_SEG24             88  /**< \brief LCDCA signal: SEG24 on PC24 mux F */\r
+#define MUX_PC24F_LCDCA_SEG24              5\r
+#define GPIO_PC24F_LCDCA_SEG24     (1u << 24)\r
+#define PIN_PC25F_LCDCA_SEG25             89  /**< \brief LCDCA signal: SEG25 on PC25 mux F */\r
+#define MUX_PC25F_LCDCA_SEG25              5\r
+#define GPIO_PC25F_LCDCA_SEG25     (1u << 25)\r
+#define PIN_PC26F_LCDCA_SEG26             90  /**< \brief LCDCA signal: SEG26 on PC26 mux F */\r
+#define MUX_PC26F_LCDCA_SEG26              5\r
+#define GPIO_PC26F_LCDCA_SEG26     (1u << 26)\r
+#define PIN_PC27F_LCDCA_SEG27             91  /**< \brief LCDCA signal: SEG27 on PC27 mux F */\r
+#define MUX_PC27F_LCDCA_SEG27              5\r
+#define GPIO_PC27F_LCDCA_SEG27     (1u << 27)\r
+#define PIN_PC28F_LCDCA_SEG28             92  /**< \brief LCDCA signal: SEG28 on PC28 mux F */\r
+#define MUX_PC28F_LCDCA_SEG28              5\r
+#define GPIO_PC28F_LCDCA_SEG28     (1u << 28)\r
+#define PIN_PC29F_LCDCA_SEG29             93  /**< \brief LCDCA signal: SEG29 on PC29 mux F */\r
+#define MUX_PC29F_LCDCA_SEG29              5\r
+#define GPIO_PC29F_LCDCA_SEG29     (1u << 29)\r
+#define PIN_PC30F_LCDCA_SEG30             94  /**< \brief LCDCA signal: SEG30 on PC30 mux F */\r
+#define MUX_PC30F_LCDCA_SEG30              5\r
+#define GPIO_PC30F_LCDCA_SEG30     (1u << 30)\r
+#define PIN_PC31F_LCDCA_SEG31             95  /**< \brief LCDCA signal: SEG31 on PC31 mux F */\r
+#define MUX_PC31F_LCDCA_SEG31              5\r
+#define GPIO_PC31F_LCDCA_SEG31     (1u << 31)\r
+#define PIN_PB12F_LCDCA_SEG32             44  /**< \brief LCDCA signal: SEG32 on PB12 mux F */\r
+#define MUX_PB12F_LCDCA_SEG32              5\r
+#define GPIO_PB12F_LCDCA_SEG32     (1u << 12)\r
+#define PIN_PB13F_LCDCA_SEG33             45  /**< \brief LCDCA signal: SEG33 on PB13 mux F */\r
+#define MUX_PB13F_LCDCA_SEG33              5\r
+#define GPIO_PB13F_LCDCA_SEG33     (1u << 13)\r
+#define PIN_PA21F_LCDCA_SEG34             21  /**< \brief LCDCA signal: SEG34 on PA21 mux F */\r
+#define MUX_PA21F_LCDCA_SEG34              5\r
+#define GPIO_PA21F_LCDCA_SEG34     (1u << 21)\r
+#define PIN_PA22F_LCDCA_SEG35             22  /**< \brief LCDCA signal: SEG35 on PA22 mux F */\r
+#define MUX_PA22F_LCDCA_SEG35              5\r
+#define GPIO_PA22F_LCDCA_SEG35     (1u << 22)\r
+#define PIN_PB14F_LCDCA_SEG36             46  /**< \brief LCDCA signal: SEG36 on PB14 mux F */\r
+#define MUX_PB14F_LCDCA_SEG36              5\r
+#define GPIO_PB14F_LCDCA_SEG36     (1u << 14)\r
+#define PIN_PB15F_LCDCA_SEG37             47  /**< \brief LCDCA signal: SEG37 on PB15 mux F */\r
+#define MUX_PB15F_LCDCA_SEG37              5\r
+#define GPIO_PB15F_LCDCA_SEG37     (1u << 15)\r
+#define PIN_PA23F_LCDCA_SEG38             23  /**< \brief LCDCA signal: SEG38 on PA23 mux F */\r
+#define MUX_PA23F_LCDCA_SEG38              5\r
+#define GPIO_PA23F_LCDCA_SEG38     (1u << 23)\r
+#define PIN_PA24F_LCDCA_SEG39             24  /**< \brief LCDCA signal: SEG39 on PA24 mux F */\r
+#define MUX_PA24F_LCDCA_SEG39              5\r
+#define GPIO_PA24F_LCDCA_SEG39     (1u << 24)\r
+/* ========== GPIO definition for PARC peripheral ========== */\r
+#define PIN_PA17D_PARC_PCCK               17  /**< \brief PARC signal: PCCK on PA17 mux D */\r
+#define MUX_PA17D_PARC_PCCK                3\r
+#define GPIO_PA17D_PARC_PCCK       (1u << 17)\r
+#define PIN_PC21D_PARC_PCCK               85  /**< \brief PARC signal: PCCK on PC21 mux D */\r
+#define MUX_PC21D_PARC_PCCK                3\r
+#define GPIO_PC21D_PARC_PCCK       (1u << 21)\r
+#define PIN_PA09D_PARC_PCDATA0             9  /**< \brief PARC signal: PCDATA0 on PA09 mux D */\r
+#define MUX_PA09D_PARC_PCDATA0             3\r
+#define GPIO_PA09D_PARC_PCDATA0    (1u <<  9)\r
+#define PIN_PC24D_PARC_PCDATA0            88  /**< \brief PARC signal: PCDATA0 on PC24 mux D */\r
+#define MUX_PC24D_PARC_PCDATA0             3\r
+#define GPIO_PC24D_PARC_PCDATA0    (1u << 24)\r
+#define PIN_PA10D_PARC_PCDATA1            10  /**< \brief PARC signal: PCDATA1 on PA10 mux D */\r
+#define MUX_PA10D_PARC_PCDATA1             3\r
+#define GPIO_PA10D_PARC_PCDATA1    (1u << 10)\r
+#define PIN_PC25D_PARC_PCDATA1            89  /**< \brief PARC signal: PCDATA1 on PC25 mux D */\r
+#define MUX_PC25D_PARC_PCDATA1             3\r
+#define GPIO_PC25D_PARC_PCDATA1    (1u << 25)\r
+#define PIN_PA11D_PARC_PCDATA2            11  /**< \brief PARC signal: PCDATA2 on PA11 mux D */\r
+#define MUX_PA11D_PARC_PCDATA2             3\r
+#define GPIO_PA11D_PARC_PCDATA2    (1u << 11)\r
+#define PIN_PC26D_PARC_PCDATA2            90  /**< \brief PARC signal: PCDATA2 on PC26 mux D */\r
+#define MUX_PC26D_PARC_PCDATA2             3\r
+#define GPIO_PC26D_PARC_PCDATA2    (1u << 26)\r
+#define PIN_PA12D_PARC_PCDATA3            12  /**< \brief PARC signal: PCDATA3 on PA12 mux D */\r
+#define MUX_PA12D_PARC_PCDATA3             3\r
+#define GPIO_PA12D_PARC_PCDATA3    (1u << 12)\r
+#define PIN_PC27D_PARC_PCDATA3            91  /**< \brief PARC signal: PCDATA3 on PC27 mux D */\r
+#define MUX_PC27D_PARC_PCDATA3             3\r
+#define GPIO_PC27D_PARC_PCDATA3    (1u << 27)\r
+#define PIN_PA13D_PARC_PCDATA4            13  /**< \brief PARC signal: PCDATA4 on PA13 mux D */\r
+#define MUX_PA13D_PARC_PCDATA4             3\r
+#define GPIO_PA13D_PARC_PCDATA4    (1u << 13)\r
+#define PIN_PC28D_PARC_PCDATA4            92  /**< \brief PARC signal: PCDATA4 on PC28 mux D */\r
+#define MUX_PC28D_PARC_PCDATA4             3\r
+#define GPIO_PC28D_PARC_PCDATA4    (1u << 28)\r
+#define PIN_PA14D_PARC_PCDATA5            14  /**< \brief PARC signal: PCDATA5 on PA14 mux D */\r
+#define MUX_PA14D_PARC_PCDATA5             3\r
+#define GPIO_PA14D_PARC_PCDATA5    (1u << 14)\r
+#define PIN_PC29D_PARC_PCDATA5            93  /**< \brief PARC signal: PCDATA5 on PC29 mux D */\r
+#define MUX_PC29D_PARC_PCDATA5             3\r
+#define GPIO_PC29D_PARC_PCDATA5    (1u << 29)\r
+#define PIN_PA15D_PARC_PCDATA6            15  /**< \brief PARC signal: PCDATA6 on PA15 mux D */\r
+#define MUX_PA15D_PARC_PCDATA6             3\r
+#define GPIO_PA15D_PARC_PCDATA6    (1u << 15)\r
+#define PIN_PC30D_PARC_PCDATA6            94  /**< \brief PARC signal: PCDATA6 on PC30 mux D */\r
+#define MUX_PC30D_PARC_PCDATA6             3\r
+#define GPIO_PC30D_PARC_PCDATA6    (1u << 30)\r
+#define PIN_PA16D_PARC_PCDATA7            16  /**< \brief PARC signal: PCDATA7 on PA16 mux D */\r
+#define MUX_PA16D_PARC_PCDATA7             3\r
+#define GPIO_PA16D_PARC_PCDATA7    (1u << 16)\r
+#define PIN_PC31D_PARC_PCDATA7            95  /**< \brief PARC signal: PCDATA7 on PC31 mux D */\r
+#define MUX_PC31D_PARC_PCDATA7             3\r
+#define GPIO_PC31D_PARC_PCDATA7    (1u << 31)\r
+#define PIN_PA18D_PARC_PCEN1              18  /**< \brief PARC signal: PCEN1 on PA18 mux D */\r
+#define MUX_PA18D_PARC_PCEN1               3\r
+#define GPIO_PA18D_PARC_PCEN1      (1u << 18)\r
+#define PIN_PC22D_PARC_PCEN1              86  /**< \brief PARC signal: PCEN1 on PC22 mux D */\r
+#define MUX_PC22D_PARC_PCEN1               3\r
+#define GPIO_PC22D_PARC_PCEN1      (1u << 22)\r
+#define PIN_PA19D_PARC_PCEN2              19  /**< \brief PARC signal: PCEN2 on PA19 mux D */\r
+#define MUX_PA19D_PARC_PCEN2               3\r
+#define GPIO_PA19D_PARC_PCEN2      (1u << 19)\r
+#define PIN_PC23D_PARC_PCEN2              87  /**< \brief PARC signal: PCEN2 on PC23 mux D */\r
+#define MUX_PC23D_PARC_PCEN2               3\r
+#define GPIO_PC23D_PARC_PCEN2      (1u << 23)\r
+/* ========== GPIO definition for PEVC peripheral ========== */\r
+#define PIN_PA08C_PEVC_PAD_EVT0            8  /**< \brief PEVC signal: PAD_EVT0 on PA08 mux C */\r
+#define MUX_PA08C_PEVC_PAD_EVT0            2\r
+#define GPIO_PA08C_PEVC_PAD_EVT0   (1u <<  8)\r
+#define PIN_PB12C_PEVC_PAD_EVT0           44  /**< \brief PEVC signal: PAD_EVT0 on PB12 mux C */\r
+#define MUX_PB12C_PEVC_PAD_EVT0            2\r
+#define GPIO_PB12C_PEVC_PAD_EVT0   (1u << 12)\r
+#define PIN_PC07C_PEVC_PAD_EVT0           71  /**< \brief PEVC signal: PAD_EVT0 on PC07 mux C */\r
+#define MUX_PC07C_PEVC_PAD_EVT0            2\r
+#define GPIO_PC07C_PEVC_PAD_EVT0   (1u <<  7)\r
+#define PIN_PC24C_PEVC_PAD_EVT0           88  /**< \brief PEVC signal: PAD_EVT0 on PC24 mux C */\r
+#define MUX_PC24C_PEVC_PAD_EVT0            2\r
+#define GPIO_PC24C_PEVC_PAD_EVT0   (1u << 24)\r
+#define PIN_PA09C_PEVC_PAD_EVT1            9  /**< \brief PEVC signal: PAD_EVT1 on PA09 mux C */\r
+#define MUX_PA09C_PEVC_PAD_EVT1            2\r
+#define GPIO_PA09C_PEVC_PAD_EVT1   (1u <<  9)\r
+#define PIN_PB13C_PEVC_PAD_EVT1           45  /**< \brief PEVC signal: PAD_EVT1 on PB13 mux C */\r
+#define MUX_PB13C_PEVC_PAD_EVT1            2\r
+#define GPIO_PB13C_PEVC_PAD_EVT1   (1u << 13)\r
+#define PIN_PC08C_PEVC_PAD_EVT1           72  /**< \brief PEVC signal: PAD_EVT1 on PC08 mux C */\r
+#define MUX_PC08C_PEVC_PAD_EVT1            2\r
+#define GPIO_PC08C_PEVC_PAD_EVT1   (1u <<  8)\r
+#define PIN_PC25C_PEVC_PAD_EVT1           89  /**< \brief PEVC signal: PAD_EVT1 on PC25 mux C */\r
+#define MUX_PC25C_PEVC_PAD_EVT1            2\r
+#define GPIO_PC25C_PEVC_PAD_EVT1   (1u << 25)\r
+#define PIN_PA10C_PEVC_PAD_EVT2           10  /**< \brief PEVC signal: PAD_EVT2 on PA10 mux C */\r
+#define MUX_PA10C_PEVC_PAD_EVT2            2\r
+#define GPIO_PA10C_PEVC_PAD_EVT2   (1u << 10)\r
+#define PIN_PC11C_PEVC_PAD_EVT2           75  /**< \brief PEVC signal: PAD_EVT2 on PC11 mux C */\r
+#define MUX_PC11C_PEVC_PAD_EVT2            2\r
+#define GPIO_PC11C_PEVC_PAD_EVT2   (1u << 11)\r
+#define PIN_PC26C_PEVC_PAD_EVT2           90  /**< \brief PEVC signal: PAD_EVT2 on PC26 mux C */\r
+#define MUX_PC26C_PEVC_PAD_EVT2            2\r
+#define GPIO_PC26C_PEVC_PAD_EVT2   (1u << 26)\r
+#define PIN_PB09B_PEVC_PAD_EVT2           41  /**< \brief PEVC signal: PAD_EVT2 on PB09 mux B */\r
+#define MUX_PB09B_PEVC_PAD_EVT2            1\r
+#define GPIO_PB09B_PEVC_PAD_EVT2   (1u <<  9)\r
+#define PIN_PA11C_PEVC_PAD_EVT3           11  /**< \brief PEVC signal: PAD_EVT3 on PA11 mux C */\r
+#define MUX_PA11C_PEVC_PAD_EVT3            2\r
+#define GPIO_PA11C_PEVC_PAD_EVT3   (1u << 11)\r
+#define PIN_PC27C_PEVC_PAD_EVT3           91  /**< \brief PEVC signal: PAD_EVT3 on PC27 mux C */\r
+#define MUX_PC27C_PEVC_PAD_EVT3            2\r
+#define GPIO_PC27C_PEVC_PAD_EVT3   (1u << 27)\r
+#define PIN_PB10B_PEVC_PAD_EVT3           42  /**< \brief PEVC signal: PAD_EVT3 on PB10 mux B */\r
+#define MUX_PB10B_PEVC_PAD_EVT3            1\r
+#define GPIO_PB10B_PEVC_PAD_EVT3   (1u << 10)\r
+/* ========== GPIO definition for SCIF peripheral ========== */\r
+#define PIN_PA19E_SCIF_GCLK0              19  /**< \brief SCIF signal: GCLK0 on PA19 mux E */\r
+#define MUX_PA19E_SCIF_GCLK0               4\r
+#define GPIO_PA19E_SCIF_GCLK0      (1u << 19)\r
+#define PIN_PB10E_SCIF_GCLK0              42  /**< \brief SCIF signal: GCLK0 on PB10 mux E */\r
+#define MUX_PB10E_SCIF_GCLK0               4\r
+#define GPIO_PB10E_SCIF_GCLK0      (1u << 10)\r
+#define PIN_PC26E_SCIF_GCLK0              90  /**< \brief SCIF signal: GCLK0 on PC26 mux E */\r
+#define MUX_PC26E_SCIF_GCLK0               4\r
+#define GPIO_PC26E_SCIF_GCLK0      (1u << 26)\r
+#define PIN_PA02A_SCIF_GCLK0               2  /**< \brief SCIF signal: GCLK0 on PA02 mux A */\r
+#define MUX_PA02A_SCIF_GCLK0               0\r
+#define GPIO_PA02A_SCIF_GCLK0      (1u <<  2)\r
+#define PIN_PA20E_SCIF_GCLK1              20  /**< \brief SCIF signal: GCLK1 on PA20 mux E */\r
+#define MUX_PA20E_SCIF_GCLK1               4\r
+#define GPIO_PA20E_SCIF_GCLK1      (1u << 20)\r
+#define PIN_PB11E_SCIF_GCLK1              43  /**< \brief SCIF signal: GCLK1 on PB11 mux E */\r
+#define MUX_PB11E_SCIF_GCLK1               4\r
+#define GPIO_PB11E_SCIF_GCLK1      (1u << 11)\r
+#define PIN_PC27E_SCIF_GCLK1              91  /**< \brief SCIF signal: GCLK1 on PC27 mux E */\r
+#define MUX_PC27E_SCIF_GCLK1               4\r
+#define GPIO_PC27E_SCIF_GCLK1      (1u << 27)\r
+#define PIN_PB12E_SCIF_GCLK2              44  /**< \brief SCIF signal: GCLK2 on PB12 mux E */\r
+#define MUX_PB12E_SCIF_GCLK2               4\r
+#define GPIO_PB12E_SCIF_GCLK2      (1u << 12)\r
+#define PIN_PC28E_SCIF_GCLK2              92  /**< \brief SCIF signal: GCLK2 on PC28 mux E */\r
+#define MUX_PC28E_SCIF_GCLK2               4\r
+#define GPIO_PC28E_SCIF_GCLK2      (1u << 28)\r
+#define PIN_PB13E_SCIF_GCLK3              45  /**< \brief SCIF signal: GCLK3 on PB13 mux E */\r
+#define MUX_PB13E_SCIF_GCLK3               4\r
+#define GPIO_PB13E_SCIF_GCLK3      (1u << 13)\r
+#define PIN_PC29E_SCIF_GCLK3              93  /**< \brief SCIF signal: GCLK3 on PC29 mux E */\r
+#define MUX_PC29E_SCIF_GCLK3               4\r
+#define GPIO_PC29E_SCIF_GCLK3      (1u << 29)\r
+#define PIN_PA23E_SCIF_GCLK_IN0           23  /**< \brief SCIF signal: GCLK_IN0 on PA23 mux E */\r
+#define MUX_PA23E_SCIF_GCLK_IN0            4\r
+#define GPIO_PA23E_SCIF_GCLK_IN0   (1u << 23)\r
+#define PIN_PB14E_SCIF_GCLK_IN0           46  /**< \brief SCIF signal: GCLK_IN0 on PB14 mux E */\r
+#define MUX_PB14E_SCIF_GCLK_IN0            4\r
+#define GPIO_PB14E_SCIF_GCLK_IN0   (1u << 14)\r
+#define PIN_PC30E_SCIF_GCLK_IN0           94  /**< \brief SCIF signal: GCLK_IN0 on PC30 mux E */\r
+#define MUX_PC30E_SCIF_GCLK_IN0            4\r
+#define GPIO_PC30E_SCIF_GCLK_IN0   (1u << 30)\r
+#define PIN_PA24E_SCIF_GCLK_IN1           24  /**< \brief SCIF signal: GCLK_IN1 on PA24 mux E */\r
+#define MUX_PA24E_SCIF_GCLK_IN1            4\r
+#define GPIO_PA24E_SCIF_GCLK_IN1   (1u << 24)\r
+#define PIN_PB15E_SCIF_GCLK_IN1           47  /**< \brief SCIF signal: GCLK_IN1 on PB15 mux E */\r
+#define MUX_PB15E_SCIF_GCLK_IN1            4\r
+#define GPIO_PB15E_SCIF_GCLK_IN1   (1u << 15)\r
+#define PIN_PC31E_SCIF_GCLK_IN1           95  /**< \brief SCIF signal: GCLK_IN1 on PC31 mux E */\r
+#define MUX_PC31E_SCIF_GCLK_IN1            4\r
+#define GPIO_PC31E_SCIF_GCLK_IN1   (1u << 31)\r
+/* ========== GPIO definition for SPI peripheral ========== */\r
+#define PIN_PA03B_SPI_MISO                 3  /**< \brief SPI signal: MISO on PA03 mux B */\r
+#define MUX_PA03B_SPI_MISO                 1\r
+#define GPIO_PA03B_SPI_MISO        (1u <<  3)\r
+#define PIN_PB14B_SPI_MISO                46  /**< \brief SPI signal: MISO on PB14 mux B */\r
+#define MUX_PB14B_SPI_MISO                 1\r
+#define GPIO_PB14B_SPI_MISO        (1u << 14)\r
+#define PIN_PC28B_SPI_MISO                92  /**< \brief SPI signal: MISO on PC28 mux B */\r
+#define MUX_PC28B_SPI_MISO                 1\r
+#define GPIO_PC28B_SPI_MISO        (1u << 28)\r
+#define PIN_PA21A_SPI_MISO                21  /**< \brief SPI signal: MISO on PA21 mux A */\r
+#define MUX_PA21A_SPI_MISO                 0\r
+#define GPIO_PA21A_SPI_MISO        (1u << 21)\r
+#define PIN_PA27A_SPI_MISO                27  /**< \brief SPI signal: MISO on PA27 mux A */\r
+#define MUX_PA27A_SPI_MISO                 0\r
+#define GPIO_PA27A_SPI_MISO        (1u << 27)\r
+#define PIN_PC04A_SPI_MISO                68  /**< \brief SPI signal: MISO on PC04 mux A */\r
+#define MUX_PC04A_SPI_MISO                 0\r
+#define GPIO_PC04A_SPI_MISO        (1u <<  4)\r
+#define PIN_PB15B_SPI_MOSI                47  /**< \brief SPI signal: MOSI on PB15 mux B */\r
+#define MUX_PB15B_SPI_MOSI                 1\r
+#define GPIO_PB15B_SPI_MOSI        (1u << 15)\r
+#define PIN_PC29B_SPI_MOSI                93  /**< \brief SPI signal: MOSI on PC29 mux B */\r
+#define MUX_PC29B_SPI_MOSI                 1\r
+#define GPIO_PC29B_SPI_MOSI        (1u << 29)\r
+#define PIN_PA22A_SPI_MOSI                22  /**< \brief SPI signal: MOSI on PA22 mux A */\r
+#define MUX_PA22A_SPI_MOSI                 0\r
+#define GPIO_PA22A_SPI_MOSI        (1u << 22)\r
+#define PIN_PA28A_SPI_MOSI                28  /**< \brief SPI signal: MOSI on PA28 mux A */\r
+#define MUX_PA28A_SPI_MOSI                 0\r
+#define GPIO_PA28A_SPI_MOSI        (1u << 28)\r
+#define PIN_PC05A_SPI_MOSI                69  /**< \brief SPI signal: MOSI on PC05 mux A */\r
+#define MUX_PC05A_SPI_MOSI                 0\r
+#define GPIO_PC05A_SPI_MOSI        (1u <<  5)\r
+#define PIN_PA02B_SPI_NPCS0                2  /**< \brief SPI signal: NPCS0 on PA02 mux B */\r
+#define MUX_PA02B_SPI_NPCS0                1\r
+#define GPIO_PA02B_SPI_NPCS0       (1u <<  2)\r
+#define PIN_PC31B_SPI_NPCS0               95  /**< \brief SPI signal: NPCS0 on PC31 mux B */\r
+#define MUX_PC31B_SPI_NPCS0                1\r
+#define GPIO_PC31B_SPI_NPCS0       (1u << 31)\r
+#define PIN_PA24A_SPI_NPCS0               24  /**< \brief SPI signal: NPCS0 on PA24 mux A */\r
+#define MUX_PA24A_SPI_NPCS0                0\r
+#define GPIO_PA24A_SPI_NPCS0       (1u << 24)\r
+#define PIN_PA30A_SPI_NPCS0               30  /**< \brief SPI signal: NPCS0 on PA30 mux A */\r
+#define MUX_PA30A_SPI_NPCS0                0\r
+#define GPIO_PA30A_SPI_NPCS0       (1u << 30)\r
+#define PIN_PC03A_SPI_NPCS0               67  /**< \brief SPI signal: NPCS0 on PC03 mux A */\r
+#define MUX_PC03A_SPI_NPCS0                0\r
+#define GPIO_PC03A_SPI_NPCS0       (1u <<  3)\r
+#define PIN_PA13C_SPI_NPCS1               13  /**< \brief SPI signal: NPCS1 on PA13 mux C */\r
+#define MUX_PA13C_SPI_NPCS1                2\r
+#define GPIO_PA13C_SPI_NPCS1       (1u << 13)\r
+#define PIN_PB13B_SPI_NPCS1               45  /**< \brief SPI signal: NPCS1 on PB13 mux B */\r
+#define MUX_PB13B_SPI_NPCS1                1\r
+#define GPIO_PB13B_SPI_NPCS1       (1u << 13)\r
+#define PIN_PA31A_SPI_NPCS1               31  /**< \brief SPI signal: NPCS1 on PA31 mux A */\r
+#define MUX_PA31A_SPI_NPCS1                0\r
+#define GPIO_PA31A_SPI_NPCS1       (1u << 31)\r
+#define PIN_PC02A_SPI_NPCS1               66  /**< \brief SPI signal: NPCS1 on PC02 mux A */\r
+#define MUX_PC02A_SPI_NPCS1                0\r
+#define GPIO_PC02A_SPI_NPCS1       (1u <<  2)\r
+#define PIN_PA14C_SPI_NPCS2               14  /**< \brief SPI signal: NPCS2 on PA14 mux C */\r
+#define MUX_PA14C_SPI_NPCS2                2\r
+#define GPIO_PA14C_SPI_NPCS2       (1u << 14)\r
+#define PIN_PB11B_SPI_NPCS2               43  /**< \brief SPI signal: NPCS2 on PB11 mux B */\r
+#define MUX_PB11B_SPI_NPCS2                1\r
+#define GPIO_PB11B_SPI_NPCS2       (1u << 11)\r
+#define PIN_PC00A_SPI_NPCS2               64  /**< \brief SPI signal: NPCS2 on PC00 mux A */\r
+#define MUX_PC00A_SPI_NPCS2                0\r
+#define GPIO_PC00A_SPI_NPCS2       (1u <<  0)\r
+#define PIN_PA15C_SPI_NPCS3               15  /**< \brief SPI signal: NPCS3 on PA15 mux C */\r
+#define MUX_PA15C_SPI_NPCS3                2\r
+#define GPIO_PA15C_SPI_NPCS3       (1u << 15)\r
+#define PIN_PB12B_SPI_NPCS3               44  /**< \brief SPI signal: NPCS3 on PB12 mux B */\r
+#define MUX_PB12B_SPI_NPCS3                1\r
+#define GPIO_PB12B_SPI_NPCS3       (1u << 12)\r
+#define PIN_PC01A_SPI_NPCS3               65  /**< \brief SPI signal: NPCS3 on PC01 mux A */\r
+#define MUX_PC01A_SPI_NPCS3                0\r
+#define GPIO_PC01A_SPI_NPCS3       (1u <<  1)\r
+#define PIN_PC30B_SPI_SCK                 94  /**< \brief SPI signal: SCK on PC30 mux B */\r
+#define MUX_PC30B_SPI_SCK                  1\r
+#define GPIO_PC30B_SPI_SCK         (1u << 30)\r
+#define PIN_PA23A_SPI_SCK                 23  /**< \brief SPI signal: SCK on PA23 mux A */\r
+#define MUX_PA23A_SPI_SCK                  0\r
+#define GPIO_PA23A_SPI_SCK         (1u << 23)\r
+#define PIN_PA29A_SPI_SCK                 29  /**< \brief SPI signal: SCK on PA29 mux A */\r
+#define MUX_PA29A_SPI_SCK                  0\r
+#define GPIO_PA29A_SPI_SCK         (1u << 29)\r
+#define PIN_PC06A_SPI_SCK                 70  /**< \brief SPI signal: SCK on PC06 mux A */\r
+#define MUX_PC06A_SPI_SCK                  0\r
+#define GPIO_PC06A_SPI_SCK         (1u <<  6)\r
+/* ========== GPIO definition for TC0 peripheral ========== */\r
+#define PIN_PB07D_TC0_A0                  39  /**< \brief TC0 signal: A0 on PB07 mux D */\r
+#define MUX_PB07D_TC0_A0                   3\r
+#define GPIO_PB07D_TC0_A0          (1u <<  7)\r
+#define PIN_PA08B_TC0_A0                   8  /**< \brief TC0 signal: A0 on PA08 mux B */\r
+#define MUX_PA08B_TC0_A0                   1\r
+#define GPIO_PA08B_TC0_A0          (1u <<  8)\r
+#define PIN_PB09D_TC0_A1                  41  /**< \brief TC0 signal: A1 on PB09 mux D */\r
+#define MUX_PB09D_TC0_A1                   3\r
+#define GPIO_PB09D_TC0_A1          (1u <<  9)\r
+#define PIN_PA10B_TC0_A1                  10  /**< \brief TC0 signal: A1 on PA10 mux B */\r
+#define MUX_PA10B_TC0_A1                   1\r
+#define GPIO_PA10B_TC0_A1          (1u << 10)\r
+#define PIN_PB11D_TC0_A2                  43  /**< \brief TC0 signal: A2 on PB11 mux D */\r
+#define MUX_PB11D_TC0_A2                   3\r
+#define GPIO_PB11D_TC0_A2          (1u << 11)\r
+#define PIN_PA12B_TC0_A2                  12  /**< \brief TC0 signal: A2 on PA12 mux B */\r
+#define MUX_PA12B_TC0_A2                   1\r
+#define GPIO_PA12B_TC0_A2          (1u << 12)\r
+#define PIN_PB08D_TC0_B0                  40  /**< \brief TC0 signal: B0 on PB08 mux D */\r
+#define MUX_PB08D_TC0_B0                   3\r
+#define GPIO_PB08D_TC0_B0          (1u <<  8)\r
+#define PIN_PA09B_TC0_B0                   9  /**< \brief TC0 signal: B0 on PA09 mux B */\r
+#define MUX_PA09B_TC0_B0                   1\r
+#define GPIO_PA09B_TC0_B0          (1u <<  9)\r
+#define PIN_PB10D_TC0_B1                  42  /**< \brief TC0 signal: B1 on PB10 mux D */\r
+#define MUX_PB10D_TC0_B1                   3\r
+#define GPIO_PB10D_TC0_B1          (1u << 10)\r
+#define PIN_PA11B_TC0_B1                  11  /**< \brief TC0 signal: B1 on PA11 mux B */\r
+#define MUX_PA11B_TC0_B1                   1\r
+#define GPIO_PA11B_TC0_B1          (1u << 11)\r
+#define PIN_PB12D_TC0_B2                  44  /**< \brief TC0 signal: B2 on PB12 mux D */\r
+#define MUX_PB12D_TC0_B2                   3\r
+#define GPIO_PB12D_TC0_B2          (1u << 12)\r
+#define PIN_PA13B_TC0_B2                  13  /**< \brief TC0 signal: B2 on PA13 mux B */\r
+#define MUX_PA13B_TC0_B2                   1\r
+#define GPIO_PA13B_TC0_B2          (1u << 13)\r
+#define PIN_PB13D_TC0_CLK0                45  /**< \brief TC0 signal: CLK0 on PB13 mux D */\r
+#define MUX_PB13D_TC0_CLK0                 3\r
+#define GPIO_PB13D_TC0_CLK0        (1u << 13)\r
+#define PIN_PA14B_TC0_CLK0                14  /**< \brief TC0 signal: CLK0 on PA14 mux B */\r
+#define MUX_PA14B_TC0_CLK0                 1\r
+#define GPIO_PA14B_TC0_CLK0        (1u << 14)\r
+#define PIN_PB14D_TC0_CLK1                46  /**< \brief TC0 signal: CLK1 on PB14 mux D */\r
+#define MUX_PB14D_TC0_CLK1                 3\r
+#define GPIO_PB14D_TC0_CLK1        (1u << 14)\r
+#define PIN_PA15B_TC0_CLK1                15  /**< \brief TC0 signal: CLK1 on PA15 mux B */\r
+#define MUX_PA15B_TC0_CLK1                 1\r
+#define GPIO_PA15B_TC0_CLK1        (1u << 15)\r
+#define PIN_PB15D_TC0_CLK2                47  /**< \brief TC0 signal: CLK2 on PB15 mux D */\r
+#define MUX_PB15D_TC0_CLK2                 3\r
+#define GPIO_PB15D_TC0_CLK2        (1u << 15)\r
+#define PIN_PA16B_TC0_CLK2                16  /**< \brief TC0 signal: CLK2 on PA16 mux B */\r
+#define MUX_PA16B_TC0_CLK2                 1\r
+#define GPIO_PA16B_TC0_CLK2        (1u << 16)\r
+/* ========== GPIO definition for TC1 peripheral ========== */\r
+#define PIN_PC00D_TC1_A0                  64  /**< \brief TC1 signal: A0 on PC00 mux D */\r
+#define MUX_PC00D_TC1_A0                   3\r
+#define GPIO_PC00D_TC1_A0          (1u <<  0)\r
+#define PIN_PC15A_TC1_A0                  79  /**< \brief TC1 signal: A0 on PC15 mux A */\r
+#define MUX_PC15A_TC1_A0                   0\r
+#define GPIO_PC15A_TC1_A0          (1u << 15)\r
+#define PIN_PC02D_TC1_A1                  66  /**< \brief TC1 signal: A1 on PC02 mux D */\r
+#define MUX_PC02D_TC1_A1                   3\r
+#define GPIO_PC02D_TC1_A1          (1u <<  2)\r
+#define PIN_PC17A_TC1_A1                  81  /**< \brief TC1 signal: A1 on PC17 mux A */\r
+#define MUX_PC17A_TC1_A1                   0\r
+#define GPIO_PC17A_TC1_A1          (1u << 17)\r
+#define PIN_PC04D_TC1_A2                  68  /**< \brief TC1 signal: A2 on PC04 mux D */\r
+#define MUX_PC04D_TC1_A2                   3\r
+#define GPIO_PC04D_TC1_A2          (1u <<  4)\r
+#define PIN_PC19A_TC1_A2                  83  /**< \brief TC1 signal: A2 on PC19 mux A */\r
+#define MUX_PC19A_TC1_A2                   0\r
+#define GPIO_PC19A_TC1_A2          (1u << 19)\r
+#define PIN_PC01D_TC1_B0                  65  /**< \brief TC1 signal: B0 on PC01 mux D */\r
+#define MUX_PC01D_TC1_B0                   3\r
+#define GPIO_PC01D_TC1_B0          (1u <<  1)\r
+#define PIN_PC16A_TC1_B0                  80  /**< \brief TC1 signal: B0 on PC16 mux A */\r
+#define MUX_PC16A_TC1_B0                   0\r
+#define GPIO_PC16A_TC1_B0          (1u << 16)\r
+#define PIN_PC03D_TC1_B1                  67  /**< \brief TC1 signal: B1 on PC03 mux D */\r
+#define MUX_PC03D_TC1_B1                   3\r
+#define GPIO_PC03D_TC1_B1          (1u <<  3)\r
+#define PIN_PC18A_TC1_B1                  82  /**< \brief TC1 signal: B1 on PC18 mux A */\r
+#define MUX_PC18A_TC1_B1                   0\r
+#define GPIO_PC18A_TC1_B1          (1u << 18)\r
+#define PIN_PC05D_TC1_B2                  69  /**< \brief TC1 signal: B2 on PC05 mux D */\r
+#define MUX_PC05D_TC1_B2                   3\r
+#define GPIO_PC05D_TC1_B2          (1u <<  5)\r
+#define PIN_PC20A_TC1_B2                  84  /**< \brief TC1 signal: B2 on PC20 mux A */\r
+#define MUX_PC20A_TC1_B2                   0\r
+#define GPIO_PC20A_TC1_B2          (1u << 20)\r
+#define PIN_PC06D_TC1_CLK0                70  /**< \brief TC1 signal: CLK0 on PC06 mux D */\r
+#define MUX_PC06D_TC1_CLK0                 3\r
+#define GPIO_PC06D_TC1_CLK0        (1u <<  6)\r
+#define PIN_PC21A_TC1_CLK0                85  /**< \brief TC1 signal: CLK0 on PC21 mux A */\r
+#define MUX_PC21A_TC1_CLK0                 0\r
+#define GPIO_PC21A_TC1_CLK0        (1u << 21)\r
+#define PIN_PC07D_TC1_CLK1                71  /**< \brief TC1 signal: CLK1 on PC07 mux D */\r
+#define MUX_PC07D_TC1_CLK1                 3\r
+#define GPIO_PC07D_TC1_CLK1        (1u <<  7)\r
+#define PIN_PC22A_TC1_CLK1                86  /**< \brief TC1 signal: CLK1 on PC22 mux A */\r
+#define MUX_PC22A_TC1_CLK1                 0\r
+#define GPIO_PC22A_TC1_CLK1        (1u << 22)\r
+#define PIN_PC08D_TC1_CLK2                72  /**< \brief TC1 signal: CLK2 on PC08 mux D */\r
+#define MUX_PC08D_TC1_CLK2                 3\r
+#define GPIO_PC08D_TC1_CLK2        (1u <<  8)\r
+#define PIN_PC23A_TC1_CLK2                87  /**< \brief TC1 signal: CLK2 on PC23 mux A */\r
+#define MUX_PC23A_TC1_CLK2                 0\r
+#define GPIO_PC23A_TC1_CLK2        (1u << 23)\r
+/* ========== GPIO definition for TWIMS0 peripheral ========== */\r
+#define PIN_PA24B_TWIMS0_TWCK             24  /**< \brief TWIMS0 signal: TWCK on PA24 mux B */\r
+#define MUX_PA24B_TWIMS0_TWCK              1\r
+#define GPIO_PA24B_TWIMS0_TWCK     (1u << 24)\r
+#define PIN_PA23B_TWIMS0_TWD              23  /**< \brief TWIMS0 signal: TWD on PA23 mux B */\r
+#define MUX_PA23B_TWIMS0_TWD               1\r
+#define GPIO_PA23B_TWIMS0_TWD      (1u << 23)\r
+/* ========== GPIO definition for TWIMS1 peripheral ========== */\r
+#define PIN_PB01A_TWIMS1_TWCK             33  /**< \brief TWIMS1 signal: TWCK on PB01 mux A */\r
+#define MUX_PB01A_TWIMS1_TWCK              0\r
+#define GPIO_PB01A_TWIMS1_TWCK     (1u <<  1)\r
+#define PIN_PB00A_TWIMS1_TWD              32  /**< \brief TWIMS1 signal: TWD on PB00 mux A */\r
+#define MUX_PB00A_TWIMS1_TWD               0\r
+#define GPIO_PB00A_TWIMS1_TWD      (1u <<  0)\r
+/* ========== GPIO definition for TWIMS2 peripheral ========== */\r
+#define PIN_PA22E_TWIMS2_TWCK             22  /**< \brief TWIMS2 signal: TWCK on PA22 mux E */\r
+#define MUX_PA22E_TWIMS2_TWCK              4\r
+#define GPIO_PA22E_TWIMS2_TWCK     (1u << 22)\r
+#define PIN_PA21E_TWIMS2_TWD              21  /**< \brief TWIMS2 signal: TWD on PA21 mux E */\r
+#define MUX_PA21E_TWIMS2_TWD               4\r
+#define GPIO_PA21E_TWIMS2_TWD      (1u << 21)\r
+/* ========== GPIO definition for TWIMS3 peripheral ========== */\r
+#define PIN_PB15C_TWIMS3_TWCK             47  /**< \brief TWIMS3 signal: TWCK on PB15 mux C */\r
+#define MUX_PB15C_TWIMS3_TWCK              2\r
+#define GPIO_PB15C_TWIMS3_TWCK     (1u << 15)\r
+#define PIN_PB14C_TWIMS3_TWD              46  /**< \brief TWIMS3 signal: TWD on PB14 mux C */\r
+#define MUX_PB14C_TWIMS3_TWD               2\r
+#define GPIO_PB14C_TWIMS3_TWD      (1u << 14)\r
+/* ========== GPIO definition for USART0 peripheral ========== */\r
+#define PIN_PA04B_USART0_CLK               4  /**< \brief USART0 signal: CLK on PA04 mux B */\r
+#define MUX_PA04B_USART0_CLK               1\r
+#define GPIO_PA04B_USART0_CLK      (1u <<  4)\r
+#define PIN_PC00B_USART0_CLK              64  /**< \brief USART0 signal: CLK on PC00 mux B */\r
+#define MUX_PC00B_USART0_CLK               1\r
+#define GPIO_PC00B_USART0_CLK      (1u <<  0)\r
+#define PIN_PA10A_USART0_CLK              10  /**< \brief USART0 signal: CLK on PA10 mux A */\r
+#define MUX_PA10A_USART0_CLK               0\r
+#define GPIO_PA10A_USART0_CLK      (1u << 10)\r
+#define PIN_PB13A_USART0_CLK              45  /**< \brief USART0 signal: CLK on PB13 mux A */\r
+#define MUX_PB13A_USART0_CLK               0\r
+#define GPIO_PB13A_USART0_CLK      (1u << 13)\r
+#define PIN_PC02B_USART0_CTS              66  /**< \brief USART0 signal: CTS on PC02 mux B */\r
+#define MUX_PC02B_USART0_CTS               1\r
+#define GPIO_PC02B_USART0_CTS      (1u <<  2)\r
+#define PIN_PA09A_USART0_CTS               9  /**< \brief USART0 signal: CTS on PA09 mux A */\r
+#define MUX_PA09A_USART0_CTS               0\r
+#define GPIO_PA09A_USART0_CTS      (1u <<  9)\r
+#define PIN_PB11A_USART0_CTS              43  /**< \brief USART0 signal: CTS on PB11 mux A */\r
+#define MUX_PB11A_USART0_CTS               0\r
+#define GPIO_PB11A_USART0_CTS      (1u << 11)\r
+#define PIN_PA06B_USART0_RTS               6  /**< \brief USART0 signal: RTS on PA06 mux B */\r
+#define MUX_PA06B_USART0_RTS               1\r
+#define GPIO_PA06B_USART0_RTS      (1u <<  6)\r
+#define PIN_PC01B_USART0_RTS              65  /**< \brief USART0 signal: RTS on PC01 mux B */\r
+#define MUX_PC01B_USART0_RTS               1\r
+#define GPIO_PC01B_USART0_RTS      (1u <<  1)\r
+#define PIN_PA08A_USART0_RTS               8  /**< \brief USART0 signal: RTS on PA08 mux A */\r
+#define MUX_PA08A_USART0_RTS               0\r
+#define GPIO_PA08A_USART0_RTS      (1u <<  8)\r
+#define PIN_PB12A_USART0_RTS              44  /**< \brief USART0 signal: RTS on PB12 mux A */\r
+#define MUX_PB12A_USART0_RTS               0\r
+#define GPIO_PB12A_USART0_RTS      (1u << 12)\r
+#define PIN_PC02C_USART0_RXD              66  /**< \brief USART0 signal: RXD on PC02 mux C */\r
+#define MUX_PC02C_USART0_RXD               2\r
+#define GPIO_PC02C_USART0_RXD      (1u <<  2)\r
+#define PIN_PA05B_USART0_RXD               5  /**< \brief USART0 signal: RXD on PA05 mux B */\r
+#define MUX_PA05B_USART0_RXD               1\r
+#define GPIO_PA05B_USART0_RXD      (1u <<  5)\r
+#define PIN_PB00B_USART0_RXD              32  /**< \brief USART0 signal: RXD on PB00 mux B */\r
+#define MUX_PB00B_USART0_RXD               1\r
+#define GPIO_PB00B_USART0_RXD      (1u <<  0)\r
+#define PIN_PA11A_USART0_RXD              11  /**< \brief USART0 signal: RXD on PA11 mux A */\r
+#define MUX_PA11A_USART0_RXD               0\r
+#define GPIO_PA11A_USART0_RXD      (1u << 11)\r
+#define PIN_PB14A_USART0_RXD              46  /**< \brief USART0 signal: RXD on PB14 mux A */\r
+#define MUX_PB14A_USART0_RXD               0\r
+#define GPIO_PB14A_USART0_RXD      (1u << 14)\r
+#define PIN_PC03C_USART0_TXD              67  /**< \brief USART0 signal: TXD on PC03 mux C */\r
+#define MUX_PC03C_USART0_TXD               2\r
+#define GPIO_PC03C_USART0_TXD      (1u <<  3)\r
+#define PIN_PA07B_USART0_TXD               7  /**< \brief USART0 signal: TXD on PA07 mux B */\r
+#define MUX_PA07B_USART0_TXD               1\r
+#define GPIO_PA07B_USART0_TXD      (1u <<  7)\r
+#define PIN_PB01B_USART0_TXD              33  /**< \brief USART0 signal: TXD on PB01 mux B */\r
+#define MUX_PB01B_USART0_TXD               1\r
+#define GPIO_PB01B_USART0_TXD      (1u <<  1)\r
+#define PIN_PA12A_USART0_TXD              12  /**< \brief USART0 signal: TXD on PA12 mux A */\r
+#define MUX_PA12A_USART0_TXD               0\r
+#define GPIO_PA12A_USART0_TXD      (1u << 12)\r
+#define PIN_PB15A_USART0_TXD              47  /**< \brief USART0 signal: TXD on PB15 mux A */\r
+#define MUX_PB15A_USART0_TXD               0\r
+#define GPIO_PB15A_USART0_TXD      (1u << 15)\r
+/* ========== GPIO definition for USART1 peripheral ========== */\r
+#define PIN_PB03B_USART1_CLK              35  /**< \brief USART1 signal: CLK on PB03 mux B */\r
+#define MUX_PB03B_USART1_CLK               1\r
+#define GPIO_PB03B_USART1_CLK      (1u <<  3)\r
+#define PIN_PA14A_USART1_CLK              14  /**< \brief USART1 signal: CLK on PA14 mux A */\r
+#define MUX_PA14A_USART1_CLK               0\r
+#define GPIO_PA14A_USART1_CLK      (1u << 14)\r
+#define PIN_PC25A_USART1_CLK              89  /**< \brief USART1 signal: CLK on PC25 mux A */\r
+#define MUX_PC25A_USART1_CLK               0\r
+#define GPIO_PC25A_USART1_CLK      (1u << 25)\r
+#define PIN_PA21B_USART1_CTS              21  /**< \brief USART1 signal: CTS on PA21 mux B */\r
+#define MUX_PA21B_USART1_CTS               1\r
+#define GPIO_PA21B_USART1_CTS      (1u << 21)\r
+#define PIN_PB02B_USART1_RTS              34  /**< \brief USART1 signal: RTS on PB02 mux B */\r
+#define MUX_PB02B_USART1_RTS               1\r
+#define GPIO_PB02B_USART1_RTS      (1u <<  2)\r
+#define PIN_PA13A_USART1_RTS              13  /**< \brief USART1 signal: RTS on PA13 mux A */\r
+#define MUX_PA13A_USART1_RTS               0\r
+#define GPIO_PA13A_USART1_RTS      (1u << 13)\r
+#define PIN_PC24A_USART1_RTS              88  /**< \brief USART1 signal: RTS on PC24 mux A */\r
+#define MUX_PC24A_USART1_RTS               0\r
+#define GPIO_PC24A_USART1_RTS      (1u << 24)\r
+#define PIN_PB04B_USART1_RXD              36  /**< \brief USART1 signal: RXD on PB04 mux B */\r
+#define MUX_PB04B_USART1_RXD               1\r
+#define GPIO_PB04B_USART1_RXD      (1u <<  4)\r
+#define PIN_PA15A_USART1_RXD              15  /**< \brief USART1 signal: RXD on PA15 mux A */\r
+#define MUX_PA15A_USART1_RXD               0\r
+#define GPIO_PA15A_USART1_RXD      (1u << 15)\r
+#define PIN_PC26A_USART1_RXD              90  /**< \brief USART1 signal: RXD on PC26 mux A */\r
+#define MUX_PC26A_USART1_RXD               0\r
+#define GPIO_PC26A_USART1_RXD      (1u << 26)\r
+#define PIN_PB05B_USART1_TXD              37  /**< \brief USART1 signal: TXD on PB05 mux B */\r
+#define MUX_PB05B_USART1_TXD               1\r
+#define GPIO_PB05B_USART1_TXD      (1u <<  5)\r
+#define PIN_PA16A_USART1_TXD              16  /**< \brief USART1 signal: TXD on PA16 mux A */\r
+#define MUX_PA16A_USART1_TXD               0\r
+#define GPIO_PA16A_USART1_TXD      (1u << 16)\r
+#define PIN_PC27A_USART1_TXD              91  /**< \brief USART1 signal: TXD on PC27 mux A */\r
+#define MUX_PC27A_USART1_TXD               0\r
+#define GPIO_PC27A_USART1_TXD      (1u << 27)\r
+/* ========== GPIO definition for USART2 peripheral ========== */\r
+#define PIN_PC08B_USART2_CLK              72  /**< \brief USART2 signal: CLK on PC08 mux B */\r
+#define MUX_PC08B_USART2_CLK               1\r
+#define GPIO_PC08B_USART2_CLK      (1u <<  8)\r
+#define PIN_PA18A_USART2_CLK              18  /**< \brief USART2 signal: CLK on PA18 mux A */\r
+#define MUX_PA18A_USART2_CLK               0\r
+#define GPIO_PA18A_USART2_CLK      (1u << 18)\r
+#define PIN_PC08E_USART2_CTS              72  /**< \brief USART2 signal: CTS on PC08 mux E */\r
+#define MUX_PC08E_USART2_CTS               4\r
+#define GPIO_PC08E_USART2_CTS      (1u <<  8)\r
+#define PIN_PA22B_USART2_CTS              22  /**< \brief USART2 signal: CTS on PA22 mux B */\r
+#define MUX_PA22B_USART2_CTS               1\r
+#define GPIO_PA22B_USART2_CTS      (1u << 22)\r
+#define PIN_PC07B_USART2_RTS              71  /**< \brief USART2 signal: RTS on PC07 mux B */\r
+#define MUX_PC07B_USART2_RTS               1\r
+#define GPIO_PC07B_USART2_RTS      (1u <<  7)\r
+#define PIN_PA17A_USART2_RTS              17  /**< \brief USART2 signal: RTS on PA17 mux A */\r
+#define MUX_PA17A_USART2_RTS               0\r
+#define GPIO_PA17A_USART2_RTS      (1u << 17)\r
+#define PIN_PA25B_USART2_RXD              25  /**< \brief USART2 signal: RXD on PA25 mux B */\r
+#define MUX_PA25B_USART2_RXD               1\r
+#define GPIO_PA25B_USART2_RXD      (1u << 25)\r
+#define PIN_PC11B_USART2_RXD              75  /**< \brief USART2 signal: RXD on PC11 mux B */\r
+#define MUX_PC11B_USART2_RXD               1\r
+#define GPIO_PC11B_USART2_RXD      (1u << 11)\r
+#define PIN_PA19A_USART2_RXD              19  /**< \brief USART2 signal: RXD on PA19 mux A */\r
+#define MUX_PA19A_USART2_RXD               0\r
+#define GPIO_PA19A_USART2_RXD      (1u << 19)\r
+#define PIN_PA26B_USART2_TXD              26  /**< \brief USART2 signal: TXD on PA26 mux B */\r
+#define MUX_PA26B_USART2_TXD               1\r
+#define GPIO_PA26B_USART2_TXD      (1u << 26)\r
+#define PIN_PC12B_USART2_TXD              76  /**< \brief USART2 signal: TXD on PC12 mux B */\r
+#define MUX_PC12B_USART2_TXD               1\r
+#define GPIO_PC12B_USART2_TXD      (1u << 12)\r
+#define PIN_PA20A_USART2_TXD              20  /**< \brief USART2 signal: TXD on PA20 mux A */\r
+#define MUX_PA20A_USART2_TXD               0\r
+#define GPIO_PA20A_USART2_TXD      (1u << 20)\r
+/* ========== GPIO definition for USART3 peripheral ========== */\r
+#define PIN_PA29E_USART3_CLK              29  /**< \brief USART3 signal: CLK on PA29 mux E */\r
+#define MUX_PA29E_USART3_CLK               4\r
+#define GPIO_PA29E_USART3_CLK      (1u << 29)\r
+#define PIN_PC14B_USART3_CLK              78  /**< \brief USART3 signal: CLK on PC14 mux B */\r
+#define MUX_PC14B_USART3_CLK               1\r
+#define GPIO_PC14B_USART3_CLK      (1u << 14)\r
+#define PIN_PB08A_USART3_CLK              40  /**< \brief USART3 signal: CLK on PB08 mux A */\r
+#define MUX_PB08A_USART3_CLK               0\r
+#define GPIO_PB08A_USART3_CLK      (1u <<  8)\r
+#define PIN_PC31A_USART3_CLK              95  /**< \brief USART3 signal: CLK on PC31 mux A */\r
+#define MUX_PC31A_USART3_CLK               0\r
+#define GPIO_PC31A_USART3_CLK      (1u << 31)\r
+#define PIN_PA28E_USART3_CTS              28  /**< \brief USART3 signal: CTS on PA28 mux E */\r
+#define MUX_PA28E_USART3_CTS               4\r
+#define GPIO_PA28E_USART3_CTS      (1u << 28)\r
+#define PIN_PB07A_USART3_CTS              39  /**< \brief USART3 signal: CTS on PB07 mux A */\r
+#define MUX_PB07A_USART3_CTS               0\r
+#define GPIO_PB07A_USART3_CTS      (1u <<  7)\r
+#define PIN_PA27E_USART3_RTS              27  /**< \brief USART3 signal: RTS on PA27 mux E */\r
+#define MUX_PA27E_USART3_RTS               4\r
+#define GPIO_PA27E_USART3_RTS      (1u << 27)\r
+#define PIN_PC13B_USART3_RTS              77  /**< \brief USART3 signal: RTS on PC13 mux B */\r
+#define MUX_PC13B_USART3_RTS               1\r
+#define GPIO_PC13B_USART3_RTS      (1u << 13)\r
+#define PIN_PB06A_USART3_RTS              38  /**< \brief USART3 signal: RTS on PB06 mux A */\r
+#define MUX_PB06A_USART3_RTS               0\r
+#define GPIO_PB06A_USART3_RTS      (1u <<  6)\r
+#define PIN_PC30A_USART3_RTS              94  /**< \brief USART3 signal: RTS on PC30 mux A */\r
+#define MUX_PC30A_USART3_RTS               0\r
+#define GPIO_PC30A_USART3_RTS      (1u << 30)\r
+#define PIN_PA30E_USART3_RXD              30  /**< \brief USART3 signal: RXD on PA30 mux E */\r
+#define MUX_PA30E_USART3_RXD               4\r
+#define GPIO_PA30E_USART3_RXD      (1u << 30)\r
+#define PIN_PC09B_USART3_RXD              73  /**< \brief USART3 signal: RXD on PC09 mux B */\r
+#define MUX_PC09B_USART3_RXD               1\r
+#define GPIO_PC09B_USART3_RXD      (1u <<  9)\r
+#define PIN_PB09A_USART3_RXD              41  /**< \brief USART3 signal: RXD on PB09 mux A */\r
+#define MUX_PB09A_USART3_RXD               0\r
+#define GPIO_PB09A_USART3_RXD      (1u <<  9)\r
+#define PIN_PC28A_USART3_RXD              92  /**< \brief USART3 signal: RXD on PC28 mux A */\r
+#define MUX_PC28A_USART3_RXD               0\r
+#define GPIO_PC28A_USART3_RXD      (1u << 28)\r
+#define PIN_PA31E_USART3_TXD              31  /**< \brief USART3 signal: TXD on PA31 mux E */\r
+#define MUX_PA31E_USART3_TXD               4\r
+#define GPIO_PA31E_USART3_TXD      (1u << 31)\r
+#define PIN_PC10B_USART3_TXD              74  /**< \brief USART3 signal: TXD on PC10 mux B */\r
+#define MUX_PC10B_USART3_TXD               1\r
+#define GPIO_PC10B_USART3_TXD      (1u << 10)\r
+#define PIN_PB10A_USART3_TXD              42  /**< \brief USART3 signal: TXD on PB10 mux A */\r
+#define MUX_PB10A_USART3_TXD               0\r
+#define GPIO_PB10A_USART3_TXD      (1u << 10)\r
+#define PIN_PC29A_USART3_TXD              93  /**< \brief USART3 signal: TXD on PC29 mux A */\r
+#define MUX_PC29A_USART3_TXD               0\r
+#define GPIO_PC29A_USART3_TXD      (1u << 29)\r
+/* ========== GPIO definition for USBC peripheral ========== */\r
+#define PIN_PA25A_USBC_DM                 25  /**< \brief USBC signal: DM on PA25 mux A */\r
+#define MUX_PA25A_USBC_DM                  0\r
+#define GPIO_PA25A_USBC_DM         (1u << 25)\r
+#define PIN_PA26A_USBC_DP                 26  /**< \brief USBC signal: DP on PA26 mux A */\r
+#define MUX_PA26A_USBC_DP                  0\r
+#define GPIO_PA26A_USBC_DP         (1u << 26)\r
+/*@}*/\r
+\r
+/* ************************************************************************** */\r
+/**  MEMORY MAPPING DEFINITIONS FOR SAM4L */\r
+/* ************************************************************************** */\r
+\r
+#if defined __SAM4LC2A__\r
+  #define FLASH_SIZE          0x20000 /* 128 kB */\r
+  #define FLASH_PAGE_SIZE     512\r
+  #define FLASH_NB_OF_PAGES   256\r
+  #define FLASH_USER_PAGE_SIZE 512\r
+  #define HRAMC0_SIZE         0x8000 /* 32 kB */\r
+  #define HRAMC1_SIZE         0xc00 /* 3 kB */\r
+\r
+#elif defined __SAM4LC2B__\r
+  #define FLASH_SIZE          0x20000 /* 128 kB */\r
+  #define FLASH_PAGE_SIZE     512\r
+  #define FLASH_NB_OF_PAGES   256\r
+  #define FLASH_USER_PAGE_SIZE 512\r
+  #define HRAMC0_SIZE         0x8000 /* 32 kB */\r
+  #define HRAMC1_SIZE         0xc00 /* 3 kB */\r
+\r
+#elif defined __SAM4LC2C__\r
+  #define FLASH_SIZE          0x20000 /* 128 kB */\r
+  #define FLASH_PAGE_SIZE     512\r
+  #define FLASH_NB_OF_PAGES   256\r
+  #define FLASH_USER_PAGE_SIZE 512\r
+  #define HRAMC0_SIZE         0x8000 /* 32 kB */\r
+  #define HRAMC1_SIZE         0xc00 /* 3 kB */\r
+\r
+#elif defined __SAM4LC4A__\r
+  #define FLASH_SIZE          0x40000 /* 256 kB */\r
+  #define FLASH_PAGE_SIZE     512\r
+  #define FLASH_NB_OF_PAGES   512\r
+  #define FLASH_USER_PAGE_SIZE 512\r
+  #define HRAMC0_SIZE         0x8000 /* 32 kB */\r
+  #define HRAMC1_SIZE         0xc00 /* 3 kB */\r
+\r
+#elif defined __SAM4LC4B__\r
+  #define FLASH_SIZE          0x40000 /* 256 kB */\r
+  #define FLASH_PAGE_SIZE     512\r
+  #define FLASH_NB_OF_PAGES   512\r
+  #define FLASH_USER_PAGE_SIZE 512\r
+  #define HRAMC0_SIZE         0x8000 /* 32 kB */\r
+  #define HRAMC1_SIZE         0xc00 /* 3 kB */\r
+\r
+#elif defined __SAM4LC4C__\r
+  #define FLASH_SIZE          0x40000 /* 256 kB */\r
+  #define FLASH_PAGE_SIZE     512\r
+  #define FLASH_NB_OF_PAGES   512\r
+  #define FLASH_USER_PAGE_SIZE 512\r
+  #define HRAMC0_SIZE         0x8000 /* 32 kB */\r
+  #define HRAMC1_SIZE         0xc00 /* 3 kB */\r
+\r
+#elif defined __SAM4LS2A__\r
+  #define FLASH_SIZE          0x20000 /* 128 kB */\r
+  #define FLASH_PAGE_SIZE     512\r
+  #define FLASH_NB_OF_PAGES   256\r
+  #define FLASH_USER_PAGE_SIZE 512\r
+  #define HRAMC0_SIZE         0x8000 /* 32 kB */\r
+  #define HRAMC1_SIZE         0xc00 /* 3 kB */\r
+\r
+#elif defined __SAM4LS2B__\r
+  #define FLASH_SIZE          0x20000 /* 128 kB */\r
+  #define FLASH_PAGE_SIZE     512\r
+  #define FLASH_NB_OF_PAGES   256\r
+  #define FLASH_USER_PAGE_SIZE 512\r
+  #define HRAMC0_SIZE         0x8000 /* 32 kB */\r
+  #define HRAMC1_SIZE         0xc00 /* 3 kB */\r
+\r
+#elif defined __SAM4LS2C__\r
+  #define FLASH_SIZE          0x20000 /* 128 kB */\r
+  #define FLASH_PAGE_SIZE     512\r
+  #define FLASH_NB_OF_PAGES   256\r
+  #define FLASH_USER_PAGE_SIZE 512\r
+  #define HRAMC0_SIZE         0x8000 /* 32 kB */\r
+  #define HRAMC1_SIZE         0xc00 /* 3 kB */\r
+\r
+#elif defined __SAM4LS4A__\r
+  #define FLASH_SIZE          0x40000 /* 256 kB */\r
+  #define FLASH_PAGE_SIZE     512\r
+  #define FLASH_NB_OF_PAGES   512\r
+  #define FLASH_USER_PAGE_SIZE 512\r
+  #define HRAMC0_SIZE         0x8000 /* 32 kB */\r
+  #define HRAMC1_SIZE         0xc00 /* 3 kB */\r
+\r
+#elif defined __SAM4LS4B__\r
+  #define FLASH_SIZE          0x40000 /* 256 kB */\r
+  #define FLASH_PAGE_SIZE     512\r
+  #define FLASH_NB_OF_PAGES   512\r
+  #define FLASH_USER_PAGE_SIZE 512\r
+  #define HRAMC0_SIZE         0x8000 /* 32 kB */\r
+  #define HRAMC1_SIZE         0xc00 /* 3 kB */\r
+\r
+#elif defined __SAM4LS4C__\r
+  #define FLASH_SIZE          0x40000 /* 256 kB */\r
+  #define FLASH_PAGE_SIZE     512\r
+  #define FLASH_NB_OF_PAGES   512\r
+  #define FLASH_USER_PAGE_SIZE 512\r
+  #define HRAMC0_SIZE         0x8000 /* 32 kB */\r
+  #define HRAMC1_SIZE         0xc00 /* 3 kB */\r
+#else\r
+  #error Library does not support the specified device.\r
+#endif\r
+\r
+#define FLASH_ADDR            (0x00000000u) /**< FLASH base address */\r
+#define FLASH_USER_PAGE_ADDR  (0x00800000u) /**< FLASH_USER_PAGE base address */\r
+#define HRAMC0_ADDR           (0x20000000u) /**< HRAMC0 base address */\r
+#define HRAMC1_ADDR           (0x21000000u) /**< HRAMC1 base address */\r
+\r
+#include "sam4l_patch_asf.h"\r
+\r
+#ifdef __cplusplus\r
+}\r
+#endif\r
+\r
+/*@}*/\r
+\r
+#endif /* SAM4L_H */\r
diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/asf/sam/utils/cmsis/sam4l/include/sam4l_patch_asf.h b/FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/asf/sam/utils/cmsis/sam4l/include/sam4l_patch_asf.h
new file mode 100644 (file)
index 0000000..59ebe0a
--- /dev/null
@@ -0,0 +1,122 @@
+/**\r
+ * \file\r
+ *\r
+ * \brief ASF Patch Header file definitions for SAM4L.\r
+ *\r
+ * Copyright (c) 2012 Atmel Corporation. All rights reserved.\r
+ *\r
+ * \asf_license_start\r
+ *\r
+ * \page License\r
+ *\r
+ * Redistribution and use in source and binary forms, with or without\r
+ * modification, are permitted provided that the following conditions are met:\r
+ *\r
+ * 1. Redistributions of source code must retain the above copyright notice,\r
+ *    this list of conditions and the following disclaimer.\r
+ *\r
+ * 2. Redistributions in binary form must reproduce the above copyright notice,\r
+ *    this list of conditions and the following disclaimer in the documentation\r
+ *    and/or other materials provided with the distribution.\r
+ *\r
+ * 3. The name of Atmel may not be used to endorse or promote products derived\r
+ *    from this software without specific prior written permission.\r
+ *\r
+ * 4. This software may only be redistributed and used in connection with an\r
+ *    Atmel microcontroller product.\r
+ *\r
+ * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED\r
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\r
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE\r
+ * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR\r
+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\r
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS\r
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)\r
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,\r
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\r
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\r
+ * POSSIBILITY OF SUCH DAMAGE.\r
+ *\r
+ * \asf_license_stop\r
+ *\r
+ */\r
+\r
+#ifndef SAM4L_PATCH_ASF_H_INCLUDED\r
+#define SAM4L_PATCH_ASF_H_INCLUDED\r
+\r
+// These defines are used for sam/drivers/flashcalw implementation.\r
+#define   FLASHCALW_FCMD_CMD_HSEN    (0x10u <<  0)\r
+#define   FLASHCALW_FCMD_CMD_HSDIS   (0x11u <<  0)\r
+\r
+// These defines are used to keep compatibility with existing \r
+// sam/drivers/usart implementation from SAM3/4 products with SAM4L product.\r
+#define US_MR_USART_MODE_HW_HANDSHAKING     US_MR_USART_MODE_HARDWARE\r
+#define US_MR_USART_MODE_IS07816_T_0        US_MR_USART_MODE_ISO7816_T0\r
+#define US_MR_USART_MODE_IS07816_T_1        US_MR_USART_MODE_ISO7816_T1\r
+#define US_MR_NBSTOP_2_BIT                  US_MR_NBSTOP_2\r
+#define US_MR_NBSTOP_1_5_BIT                US_MR_NBSTOP_1_5\r
+#define US_MR_NBSTOP_1_BIT                  US_MR_NBSTOP_1\r
+#define US_MR_CHRL_8_BIT                    US_MR_CHRL_8\r
+#define US_MR_PAR_NO                        US_MR_PAR_NONE\r
+#define US_MR_PAR_MULTIDROP                 US_MR_PAR_MULTI\r
+#define US_IF                               US_IFR\r
+#define US_WPSR_WPVS                        US_WPSR_WPV_1\r
+\r
+#if (!defined SCIF_RCOSC_FREQUENCY)\r
+#    define SCIF_RCOSC_FREQUENCY            115200\r
+#endif\r
+\r
+// These defines for homogeneity with other SAM header files.\r
+#define CHIP_FREQ_FWS_0                     (18000000UL) /**< \brief Maximum operating frequency when FWS is 0 */\r
+#define CHIP_FREQ_FWS_1                     (36000000UL) /**< \brief Maximum operating frequency when FWS is 1 */\r
+// WARNING NOTE: these are preliminary values.\r
+#define CHIP_FREQ_FLASH_HSEN_FWS_0          (18000000UL) /**< \brief Maximum operating frequency when FWS is 0 and the FLASH HS mode is enabled */\r
+#define CHIP_FREQ_FLASH_HSEN_FWS_1          (36000000UL) /**< \brief Maximum operating frequency when FWS is 1 and the FLASH HS mode is enabled */\r
+\r
+// Size of HRAMC1 with 32-bit access\r
+#undef HRAMC1_SIZE\r
+#define HRAMC1_SIZE                         (0x800UL)\r
+\r
+// USBC related offsets\r
+#define USBC_UHINT_P0INT_Pos                                   8\r
+#define USBC_UHINTE_P0INTE_Pos                                 8\r
+#define USBC_UPCFG0_PBK_Pos                                    2\r
+#define USBC_UPCFG0_PBK_Msk                     (0x1u << USBC_UPCFG0_PBK_Pos)\r
+\r
+// These defines are used to keep compatibility with existing \r
+// sam/drivers/tc implementation from SAM3/4 products with SAM4L product. \r
+#define        TC_SMMR                TC_SMC\r
+#define        TC_CMR_LDRA_RISING     TC_CMR_LDRA_POS_EDGE_TIOA\r
+#define        TC_CMR_LDRB_FALLING    TC_CMR_LDRB_NEG_EDGE_TIOA\r
+#define        TC_CMR_ETRGEDG_FALLING TC_CMR_ETRGEDG_NEG_EDGE\r
+\r
+// These defines are used to keep compatibility with existing \r
+// sam/drivers/spi implementation from SAM3/4 products with SAM4L product. \r
+#define SPI_CSR_BITS_8_BIT     SPI_CSR_BITS_8_BPT\r
+\r
+#define SPI_WPSR_WPVS_Pos      SPI_WPSR_SPIWPVS_Pos\r
+#define SPI_WPSR_WPVS_Msk      SPI_WPSR_SPIWPVS_Msk\r
+#define SPI_WPSR_WPVSRC_Pos    SPI_WPSR_SPIWPVSRC_Pos\r
+#define SPI_WPSR_WPVSRC_Msk    SPI_WPSR_SPIWPVSRC_Msk\r
+\r
+// These defines are used to keep compatibility with existing \r
+// sam/drivers/crccu implementation from SAM3/4 products with SAM4L product. \r
+#define        CRCCU_DMA_EN              CRCCU_DMAEN\r
+#define        CRCCU_DMA_DIS             CRCCU_DMADIS\r
+#define        CRCCU_DMA_SR              CRCCU_DMASR\r
+#define        CRCCU_DMA_IER             CRCCU_DMAIER\r
+#define        CRCCU_DMA_IDR             CRCCU_DMAIDR\r
+#define        CRCCU_DMA_IMR             CRCCU_DMAIMR\r
+#define        CRCCU_DMA_ISR             CRCCU_DMAISR\r
+#define        CRCCU_DMA_EN_DMAEN            CRCCU_DMAEN_DMAEN\r
+#define        CRCCU_DMA_DIS_DMADIS      CRCCU_DMADIS_DMADIS\r
+#define        CRCCU_DMA_SR_DMASR        CRCCU_DMASR_DMASR\r
+#define        CRCCU_DMA_IER_DMAIER      CRCCU_DMAIER_DMAIER\r
+#define        CRCCU_DMA_IDR_DMAIDR      CRCCU_DMAIDR_DMAIDR\r
+#define        CRCCU_DMA_IMR_DMAIMR      CRCCU_DMAIMR_DMAIMR\r
+#define        CRCCU_DMA_ISR_DMAISR      CRCCU_DMAISR_DMAISR\r
+#define        CRCCU_MR_PTYPE_CCITT8023  CRCCU_MR_PTYPE(0)\r
+#define        CRCCU_MR_PTYPE_CASTAGNOLI CRCCU_MR_PTYPE(1)\r
+#define        CRCCU_MR_PTYPE_CCITT16    CRCCU_MR_PTYPE(2)\r
+\r
+#endif  // SAM4L_PATCH_ASF_H_INCLUDED\r
diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/asf/sam/utils/cmsis/sam4l/source/templates/exceptions.c b/FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/asf/sam/utils/cmsis/sam4l/source/templates/exceptions.c
new file mode 100644 (file)
index 0000000..385c997
--- /dev/null
@@ -0,0 +1,269 @@
+/**\r
+ * \file\r
+ *\r
+ * \brief This file contains the default exception handlers.\r
+ *\r
+ * Copyright (c) 2012 Atmel Corporation. All rights reserved.\r
+ *\r
+ * \asf_license_start\r
+ *\r
+ * \page License\r
+ *\r
+ * Redistribution and use in source and binary forms, with or without\r
+ * modification, are permitted provided that the following conditions are met:\r
+ *\r
+ * 1. Redistributions of source code must retain the above copyright notice,\r
+ *    this list of conditions and the following disclaimer.\r
+ *\r
+ * 2. Redistributions in binary form must reproduce the above copyright notice,\r
+ *    this list of conditions and the following disclaimer in the documentation\r
+ *    and/or other materials provided with the distribution.\r
+ *\r
+ * 3. The name of Atmel may not be used to endorse or promote products derived\r
+ *    from this software without specific prior written permission.\r
+ *\r
+ * 4. This software may only be redistributed and used in connection with an\r
+ *    Atmel microcontroller product.\r
+ *\r
+ * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED\r
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\r
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE\r
+ * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR\r
+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\r
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS\r
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)\r
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,\r
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\r
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\r
+ * POSSIBILITY OF SUCH DAMAGE.\r
+ *\r
+ * \asf_license_stop\r
+ *\r
+ * \par Purpose\r
+ *\r
+ * This file provides basic support for Cortex-M processor based\r
+ * microcontrollers.\r
+ *\r
+ * \note\r
+ * The exception handler has weak aliases.\r
+ * As they are weak aliases, any function with the same name will override\r
+ * this definition.\r
+ *\r
+ */\r
+\r
+#include "exceptions.h"\r
+\r
+/* @cond 0 */\r
+/**INDENT-OFF**/\r
+#ifdef __cplusplus\r
+extern "C" {\r
+#endif\r
+/**INDENT-ON**/\r
+/* @endcond */\r
+\r
+#ifdef __GNUC__\r
+/* Cortex-M3 core handlers */\r
+void Reset_Handler      ( void ) __attribute__ ((weak, alias("Dummy_Handler")));\r
+void NMI_Handler        ( void ) __attribute__ ((weak, alias("Dummy_Handler")));\r
+void HardFault_Handler  ( void ) __attribute__ ((weak, alias("Dummy_Handler")));\r
+void MemManage_Handler  ( void ) __attribute__ ((weak, alias("Dummy_Handler")));\r
+void BusFault_Handler   ( void ) __attribute__ ((weak, alias("Dummy_Handler")));\r
+void UsageFault_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));\r
+void SVC_Handler        ( void ) __attribute__ ((weak, alias("Dummy_Handler")));\r
+void DebugMon_Handler   ( void ) __attribute__ ((weak, alias("Dummy_Handler")));\r
+void PendSV_Handler     ( void ) __attribute__ ((weak, alias("Dummy_Handler")));\r
+void SysTick_Handler    ( void ) __attribute__ ((weak, alias("Dummy_Handler")));\r
+\r
+/* Peripherals handlers */\r
+void ABDACB_Handler(void)       __attribute__ ((weak, alias("Dummy_Handler")));\r
+void ACIFC_Handler(void)        __attribute__ ((weak, alias("Dummy_Handler")));\r
+void ADCIFE_Handler(void)       __attribute__ ((weak, alias("Dummy_Handler")));\r
+void AESA_Handler(void)         __attribute__ ((weak, alias("Dummy_Handler")));\r
+void AST_ALARM_Handler(void)    __attribute__ ((weak, alias("Dummy_Handler")));\r
+void AST_CLKREADY_Handler(void) __attribute__ ((weak, alias("Dummy_Handler")));\r
+void AST_OVF_Handler(void)      __attribute__ ((weak, alias("Dummy_Handler")));\r
+void AST_PER_Handler(void)      __attribute__ ((weak, alias("Dummy_Handler")));\r
+void AST_READY_Handler(void)    __attribute__ ((weak, alias("Dummy_Handler")));\r
+void BPM_Handler(void)          __attribute__ ((weak, alias("Dummy_Handler")));\r
+void BSCIF_Handler(void)        __attribute__ ((weak, alias("Dummy_Handler")));\r
+void CATB_Handler(void)         __attribute__ ((weak, alias("Dummy_Handler")));\r
+void CRCCU_Handler(void)        __attribute__ ((weak, alias("Dummy_Handler")));\r
+void DACC_Handler(void)         __attribute__ ((weak, alias("Dummy_Handler")));\r
+void EIC_1_Handler(void)        __attribute__ ((weak, alias("Dummy_Handler")));\r
+void EIC_2_Handler(void)        __attribute__ ((weak, alias("Dummy_Handler")));\r
+void EIC_3_Handler(void)        __attribute__ ((weak, alias("Dummy_Handler")));\r
+void EIC_4_Handler(void)        __attribute__ ((weak, alias("Dummy_Handler")));\r
+void EIC_5_Handler(void)        __attribute__ ((weak, alias("Dummy_Handler")));\r
+void EIC_6_Handler(void)        __attribute__ ((weak, alias("Dummy_Handler")));\r
+void EIC_7_Handler(void)        __attribute__ ((weak, alias("Dummy_Handler")));\r
+void EIC_8_Handler(void)        __attribute__ ((weak, alias("Dummy_Handler")));\r
+void FREQM_Handler(void)        __attribute__ ((weak, alias("Dummy_Handler")));\r
+void GPIO_0_Handler(void)       __attribute__ ((weak, alias("Dummy_Handler")));\r
+void GPIO_1_Handler(void)       __attribute__ ((weak, alias("Dummy_Handler")));\r
+void GPIO_10_Handler(void)      __attribute__ ((weak, alias("Dummy_Handler")));\r
+void GPIO_11_Handler(void)      __attribute__ ((weak, alias("Dummy_Handler")));\r
+void GPIO_2_Handler(void)       __attribute__ ((weak, alias("Dummy_Handler")));\r
+void GPIO_3_Handler(void)       __attribute__ ((weak, alias("Dummy_Handler")));\r
+void GPIO_4_Handler(void)       __attribute__ ((weak, alias("Dummy_Handler")));\r
+void GPIO_5_Handler(void)       __attribute__ ((weak, alias("Dummy_Handler")));\r
+void GPIO_6_Handler(void)       __attribute__ ((weak, alias("Dummy_Handler")));\r
+void GPIO_7_Handler(void)       __attribute__ ((weak, alias("Dummy_Handler")));\r
+void GPIO_8_Handler(void)       __attribute__ ((weak, alias("Dummy_Handler")));\r
+void GPIO_9_Handler(void)       __attribute__ ((weak, alias("Dummy_Handler")));\r
+void HFLASHC_Handler(void)      __attribute__ ((weak, alias("Dummy_Handler")));\r
+void IISC_Handler(void)         __attribute__ ((weak, alias("Dummy_Handler")));\r
+void LCDCA_Handler(void)        __attribute__ ((weak, alias("Dummy_Handler")));\r
+void PARC_Handler(void)         __attribute__ ((weak, alias("Dummy_Handler")));\r
+void PDCA_0_Handler(void)       __attribute__ ((weak, alias("Dummy_Handler")));\r
+void PDCA_1_Handler(void)       __attribute__ ((weak, alias("Dummy_Handler")));\r
+void PDCA_10_Handler(void)      __attribute__ ((weak, alias("Dummy_Handler")));\r
+void PDCA_11_Handler(void)      __attribute__ ((weak, alias("Dummy_Handler")));\r
+void PDCA_12_Handler(void)      __attribute__ ((weak, alias("Dummy_Handler")));\r
+void PDCA_13_Handler(void)      __attribute__ ((weak, alias("Dummy_Handler")));\r
+void PDCA_14_Handler(void)      __attribute__ ((weak, alias("Dummy_Handler")));\r
+void PDCA_15_Handler(void)      __attribute__ ((weak, alias("Dummy_Handler")));\r
+void PDCA_2_Handler(void)       __attribute__ ((weak, alias("Dummy_Handler")));\r
+void PDCA_3_Handler(void)       __attribute__ ((weak, alias("Dummy_Handler")));\r
+void PDCA_4_Handler(void)       __attribute__ ((weak, alias("Dummy_Handler")));\r
+void PDCA_5_Handler(void)       __attribute__ ((weak, alias("Dummy_Handler")));\r
+void PDCA_6_Handler(void)       __attribute__ ((weak, alias("Dummy_Handler")));\r
+void PDCA_7_Handler(void)       __attribute__ ((weak, alias("Dummy_Handler")));\r
+void PDCA_8_Handler(void)       __attribute__ ((weak, alias("Dummy_Handler")));\r
+void PDCA_9_Handler(void)       __attribute__ ((weak, alias("Dummy_Handler")));\r
+void PEVC_OV_Handler(void)      __attribute__ ((weak, alias("Dummy_Handler")));\r
+void PEVC_TR_Handler(void)      __attribute__ ((weak, alias("Dummy_Handler")));\r
+void PM_Handler(void)           __attribute__ ((weak, alias("Dummy_Handler")));\r
+void SCIF_Handler(void)         __attribute__ ((weak, alias("Dummy_Handler")));\r
+void SPI_Handler(void)          __attribute__ ((weak, alias("Dummy_Handler")));\r
+void TC00_Handler(void)        __attribute__ ((weak, alias("Dummy_Handler")));\r
+void TC01_Handler(void)        __attribute__ ((weak, alias("Dummy_Handler")));\r
+void TC02_Handler(void)        __attribute__ ((weak, alias("Dummy_Handler")));\r
+void TC10_Handler(void)        __attribute__ ((weak, alias("Dummy_Handler")));\r
+void TC11_Handler(void)        __attribute__ ((weak, alias("Dummy_Handler")));\r
+void TC12_Handler(void)        __attribute__ ((weak, alias("Dummy_Handler")));\r
+void TRNG_Handler(void)         __attribute__ ((weak, alias("Dummy_Handler")));\r
+void TWIM0_Handler(void)        __attribute__ ((weak, alias("Dummy_Handler")));\r
+void TWIM1_Handler(void)        __attribute__ ((weak, alias("Dummy_Handler")));\r
+void TWIM2_Handler(void)        __attribute__ ((weak, alias("Dummy_Handler")));\r
+void TWIM3_Handler(void)        __attribute__ ((weak, alias("Dummy_Handler")));\r
+void TWIS0_Handler(void)        __attribute__ ((weak, alias("Dummy_Handler")));\r
+void TWIS1_Handler(void)        __attribute__ ((weak, alias("Dummy_Handler")));\r
+void USART0_Handler(void)       __attribute__ ((weak, alias("Dummy_Handler")));\r
+void USART1_Handler(void)       __attribute__ ((weak, alias("Dummy_Handler")));\r
+void USART2_Handler(void)       __attribute__ ((weak, alias("Dummy_Handler")));\r
+void USART3_Handler(void)       __attribute__ ((weak, alias("Dummy_Handler")));\r
+void USBC_Handler(void)         __attribute__ ((weak, alias("Dummy_Handler")));\r
+void WDT_Handler(void)          __attribute__ ((weak, alias("Dummy_Handler")));\r
+#endif /* __GNUC__ */\r
+\r
+#ifdef __ICCARM__\r
+/* Cortex-M3 core handlers */\r
+#pragma weak Reset_Handler=Dummy_Handler\r
+#pragma weak NMI_Handler=Dummy_Handler\r
+#pragma weak HardFault_Handler=Dummy_Handler\r
+#pragma weak MemManage_Handler=Dummy_Handler\r
+#pragma weak BusFault_Handler=Dummy_Handler\r
+#pragma weak UsageFault_Handler=Dummy_Handler\r
+#pragma weak SVC_Handler=Dummy_Handler\r
+#pragma weak DebugMon_Handler=Dummy_Handler\r
+#pragma weak PendSV_Handler=Dummy_Handler\r
+#pragma weak SysTick_Handler=Dummy_Handler\r
+\r
+/* Peripherals handlers */\r
+#pragma weak ABDACB_Handler       = Dummy_Handler\r
+#pragma weak ACIFC_Handler        = Dummy_Handler\r
+#pragma weak ADCIFE_Handler       = Dummy_Handler\r
+#pragma weak AESA_Handler         = Dummy_Handler\r
+#pragma weak AST_ALARM_Handler    = Dummy_Handler\r
+#pragma weak AST_CLKREADY_Handler = Dummy_Handler\r
+#pragma weak AST_OVF_Handler      = Dummy_Handler\r
+#pragma weak AST_PER_Handler      = Dummy_Handler\r
+#pragma weak AST_READY_Handler    = Dummy_Handler\r
+#pragma weak BPM_Handler          = Dummy_Handler\r
+#pragma weak BSCIF_Handler        = Dummy_Handler\r
+#pragma weak CATB_Handler         = Dummy_Handler\r
+#pragma weak CRCCU_Handler        = Dummy_Handler\r
+#pragma weak DACC_Handler         = Dummy_Handler\r
+#pragma weak EIC_1_Handler        = Dummy_Handler\r
+#pragma weak EIC_2_Handler        = Dummy_Handler\r
+#pragma weak EIC_3_Handler        = Dummy_Handler\r
+#pragma weak EIC_4_Handler        = Dummy_Handler\r
+#pragma weak EIC_5_Handler        = Dummy_Handler\r
+#pragma weak EIC_6_Handler        = Dummy_Handler\r
+#pragma weak EIC_7_Handler        = Dummy_Handler\r
+#pragma weak EIC_8_Handler        = Dummy_Handler\r
+#pragma weak FREQM_Handler        = Dummy_Handler\r
+#pragma weak GPIO_0_Handler       = Dummy_Handler\r
+#pragma weak GPIO_1_Handler       = Dummy_Handler\r
+#pragma weak GPIO_10_Handler      = Dummy_Handler\r
+#pragma weak GPIO_11_Handler      = Dummy_Handler\r
+#pragma weak GPIO_2_Handler       = Dummy_Handler\r
+#pragma weak GPIO_3_Handler       = Dummy_Handler\r
+#pragma weak GPIO_4_Handler       = Dummy_Handler\r
+#pragma weak GPIO_5_Handler       = Dummy_Handler\r
+#pragma weak GPIO_6_Handler       = Dummy_Handler\r
+#pragma weak GPIO_7_Handler       = Dummy_Handler\r
+#pragma weak GPIO_8_Handler       = Dummy_Handler\r
+#pragma weak GPIO_9_Handler       = Dummy_Handler\r
+#pragma weak HFLASHC_Handler      = Dummy_Handler\r
+#pragma weak IISC_Handler         = Dummy_Handler\r
+#pragma weak LCDCA_Handler        = Dummy_Handler\r
+#pragma weak PARC_Handler         = Dummy_Handler\r
+#pragma weak PDCA_0_Handler       = Dummy_Handler\r
+#pragma weak PDCA_1_Handler       = Dummy_Handler\r
+#pragma weak PDCA_10_Handler      = Dummy_Handler\r
+#pragma weak PDCA_11_Handler      = Dummy_Handler\r
+#pragma weak PDCA_12_Handler      = Dummy_Handler\r
+#pragma weak PDCA_13_Handler      = Dummy_Handler\r
+#pragma weak PDCA_14_Handler      = Dummy_Handler\r
+#pragma weak PDCA_15_Handler      = Dummy_Handler\r
+#pragma weak PDCA_2_Handler       = Dummy_Handler\r
+#pragma weak PDCA_3_Handler       = Dummy_Handler\r
+#pragma weak PDCA_4_Handler       = Dummy_Handler\r
+#pragma weak PDCA_5_Handler       = Dummy_Handler\r
+#pragma weak PDCA_6_Handler       = Dummy_Handler\r
+#pragma weak PDCA_7_Handler       = Dummy_Handler\r
+#pragma weak PDCA_8_Handler       = Dummy_Handler\r
+#pragma weak PDCA_9_Handler       = Dummy_Handler\r
+#pragma weak PEVC_OV_Handler      = Dummy_Handler\r
+#pragma weak PEVC_TR_Handler      = Dummy_Handler\r
+#pragma weak PM_Handler           = Dummy_Handler\r
+#pragma weak SCIF_Handler         = Dummy_Handler\r
+#pragma weak SPI_Handler          = Dummy_Handler\r
+#pragma weak TC00_Handler        = Dummy_Handler\r
+#pragma weak TC01_Handler        = Dummy_Handler\r
+#pragma weak TC02_Handler        = Dummy_Handler\r
+#pragma weak TC10_Handler        = Dummy_Handler\r
+#pragma weak TC11_Handler        = Dummy_Handler\r
+#pragma weak TC12_Handler        = Dummy_Handler\r
+#pragma weak TRNG_Handler         = Dummy_Handler\r
+#pragma weak TWIM0_Handler        = Dummy_Handler\r
+#pragma weak TWIM1_Handler        = Dummy_Handler\r
+#pragma weak TWIM2_Handler        = Dummy_Handler\r
+#pragma weak TWIM3_Handler        = Dummy_Handler\r
+#pragma weak TWIS0_Handler        = Dummy_Handler\r
+#pragma weak TWIS1_Handler        = Dummy_Handler\r
+#pragma weak USART0_Handler       = Dummy_Handler\r
+#pragma weak USART1_Handler       = Dummy_Handler\r
+#pragma weak USART2_Handler       = Dummy_Handler\r
+#pragma weak USART3_Handler       = Dummy_Handler\r
+#pragma weak USBC_Handler         = Dummy_Handler\r
+#pragma weak WDT_Handler          = Dummy_Handler\r
+#endif /* __ICCARM__ */\r
+\r
+/**\r
+ * \brief Default interrupt handler for unused IRQs.\r
+ */\r
+void Dummy_Handler(void)\r
+{\r
+       while (1) {\r
+       }\r
+}\r
+\r
+/* @cond 0 */\r
+/**INDENT-OFF**/\r
+#ifdef __cplusplus\r
+}\r
+#endif\r
+/**INDENT-ON**/\r
+/* @endcond */\r
diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/asf/sam/utils/cmsis/sam4l/source/templates/exceptions.h b/FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/asf/sam/utils/cmsis/sam4l/source/templates/exceptions.h
new file mode 100644 (file)
index 0000000..2ca1353
--- /dev/null
@@ -0,0 +1,71 @@
+/**\r
+ * \file\r
+ *\r
+ * \brief This file contains the interface for default exception handlers.\r
+ *\r
+ * Copyright (c) 2012 Atmel Corporation. All rights reserved.\r
+ *\r
+ * \asf_license_start\r
+ *\r
+ * \page License\r
+ *\r
+ * Redistribution and use in source and binary forms, with or without\r
+ * modification, are permitted provided that the following conditions are met:\r
+ *\r
+ * 1. Redistributions of source code must retain the above copyright notice,\r
+ *    this list of conditions and the following disclaimer.\r
+ *\r
+ * 2. Redistributions in binary form must reproduce the above copyright notice,\r
+ *    this list of conditions and the following disclaimer in the documentation\r
+ *    and/or other materials provided with the distribution.\r
+ *\r
+ * 3. The name of Atmel may not be used to endorse or promote products derived\r
+ *    from this software without specific prior written permission.\r
+ *\r
+ * 4. This software may only be redistributed and used in connection with an\r
+ *    Atmel microcontroller product.\r
+ *\r
+ * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED\r
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\r
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE\r
+ * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR\r
+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\r
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS\r
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)\r
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,\r
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\r
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\r
+ * POSSIBILITY OF SUCH DAMAGE.\r
+ *\r
+ * \asf_license_stop\r
+ *\r
+ */\r
+\r
+#ifndef EXCEPTIONS_H_INCLUDED\r
+#define EXCEPTIONS_H_INCLUDED\r
+\r
+#include "sam4l.h"\r
+\r
+/* @cond 0 */\r
+/**INDENT-OFF**/\r
+#ifdef __cplusplus\r
+extern "C" {\r
+#endif\r
+/**INDENT-ON**/\r
+/* @endcond */\r
+\r
+/* Function prototype for exception table items (interrupt handler). */\r
+typedef void (*IntFunc) (void);\r
+\r
+/* Default empty handler */\r
+void Dummy_Handler(void);\r
+\r
+/* @cond 0 */\r
+/**INDENT-OFF**/\r
+#ifdef __cplusplus\r
+}\r
+#endif\r
+/**INDENT-ON**/\r
+/* @endcond */\r
+\r
+#endif /* EXCEPTIONS_H_INCLUDED */\r
diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/asf/sam/utils/cmsis/sam4l/source/templates/gcc/startup_sam4l.c b/FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/asf/sam/utils/cmsis/sam4l/source/templates/gcc/startup_sam4l.c
new file mode 100644 (file)
index 0000000..8a40e9e
--- /dev/null
@@ -0,0 +1,205 @@
+/**\r
+ * \file\r
+ *\r
+ * \brief GCC Startup file for SAM4L.\r
+ *\r
+ * Copyright (c) 2012 Atmel Corporation. All rights reserved.\r
+ *\r
+ * \asf_license_start\r
+ *\r
+ * \page License\r
+ *\r
+ * Redistribution and use in source and binary forms, with or without\r
+ * modification, are permitted provided that the following conditions are met:\r
+ *\r
+ * 1. Redistributions of source code must retain the above copyright notice,\r
+ *    this list of conditions and the following disclaimer.\r
+ *\r
+ * 2. Redistributions in binary form must reproduce the above copyright notice,\r
+ *    this list of conditions and the following disclaimer in the documentation\r
+ *    and/or other materials provided with the distribution.\r
+ *\r
+ * 3. The name of Atmel may not be used to endorse or promote products derived\r
+ *    from this software without specific prior written permission.\r
+ *\r
+ * 4. This software may only be redistributed and used in connection with an\r
+ *    Atmel microcontroller product.\r
+ *\r
+ * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED\r
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\r
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE\r
+ * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR\r
+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\r
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS\r
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)\r
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,\r
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\r
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\r
+ * POSSIBILITY OF SUCH DAMAGE.\r
+ *\r
+ * \asf_license_stop\r
+ *\r
+ */\r
+\r
+#include "exceptions.h"\r
+#include "sam4l.h"\r
+#include "system_sam4l.h"\r
+\r
+/* Initialize segments */\r
+extern uint32_t _sfixed;\r
+extern uint32_t _efixed;\r
+extern uint32_t _etext;\r
+extern uint32_t _srelocate;\r
+extern uint32_t _erelocate;\r
+extern uint32_t _szero;\r
+extern uint32_t _ezero;\r
+extern uint32_t _sstack;\r
+extern uint32_t _estack;\r
+\r
+/** \cond DOXYGEN_SHOULD_SKIP_THIS */\r
+int main(void);\r
+/** \endcond */\r
+\r
+void __libc_init_array(void);\r
+\r
+/* Exception Table */\r
+__attribute__ ((section(".vectors")))\r
+IntFunc exception_table[] = {\r
+\r
+       /* Configure Initial Stack Pointer, using linker-generated symbols */\r
+       (IntFunc) (&_estack),\r
+       Reset_Handler,\r
+\r
+       NMI_Handler,\r
+       HardFault_Handler,\r
+       MemManage_Handler,\r
+       BusFault_Handler,\r
+       UsageFault_Handler,\r
+       0, 0, 0, 0,        /* Reserved */\r
+       SVC_Handler,\r
+       DebugMon_Handler,\r
+       0,                 /* Reserved  */\r
+       PendSV_Handler,\r
+       SysTick_Handler,\r
+\r
+       // Configurable interrupts\r
+       HFLASHC_Handler,      // 0\r
+       PDCA_0_Handler,       // 1\r
+       PDCA_1_Handler,       // 2\r
+       PDCA_2_Handler,       // 3\r
+       PDCA_3_Handler,       // 4\r
+       PDCA_4_Handler,       // 5\r
+       PDCA_5_Handler,       // 6\r
+       PDCA_6_Handler,       // 7\r
+       PDCA_7_Handler,       // 8\r
+       PDCA_8_Handler,       // 9\r
+       PDCA_9_Handler,       // 10\r
+       PDCA_10_Handler,      // 11\r
+       PDCA_11_Handler,      // 12\r
+       PDCA_12_Handler,      // 13\r
+       PDCA_13_Handler,      // 14\r
+       PDCA_14_Handler,      // 15\r
+       PDCA_15_Handler,      // 16\r
+       CRCCU_Handler,        // 17\r
+       USBC_Handler,         // 18\r
+       PEVC_TR_Handler,      // 19\r
+       PEVC_OV_Handler,      // 20\r
+       AESA_Handler,         // 21\r
+       PM_Handler,           // 22\r
+       SCIF_Handler,         // 23\r
+       FREQM_Handler,        // 24\r
+       GPIO_0_Handler,       // 25\r
+       GPIO_1_Handler,       // 26\r
+       GPIO_2_Handler,       // 27\r
+       GPIO_3_Handler,       // 28\r
+       GPIO_4_Handler,       // 29\r
+       GPIO_5_Handler,       // 30\r
+       GPIO_6_Handler,       // 31\r
+       GPIO_7_Handler,       // 32\r
+       GPIO_8_Handler,       // 33\r
+       GPIO_9_Handler,       // 34\r
+       GPIO_10_Handler,      // 35\r
+       GPIO_11_Handler,      // 36\r
+       BPM_Handler,          // 37\r
+       BSCIF_Handler,        // 38\r
+       AST_ALARM_Handler,    // 39\r
+       AST_PER_Handler,      // 40\r
+       AST_OVF_Handler,      // 41\r
+       AST_READY_Handler,    // 42\r
+       AST_CLKREADY_Handler, // 43\r
+       WDT_Handler,          // 44\r
+       EIC_1_Handler,        // 45\r
+       EIC_2_Handler,        // 46\r
+       EIC_3_Handler,        // 47\r
+       EIC_4_Handler,        // 48\r
+       EIC_5_Handler,        // 49\r
+       EIC_6_Handler,        // 50\r
+       EIC_7_Handler,        // 51\r
+       EIC_8_Handler,        // 52\r
+       IISC_Handler,         // 53\r
+       SPI_Handler,          // 54\r
+       TC00_Handler,         // 55\r
+       TC01_Handler,         // 56\r
+       TC02_Handler,         // 57\r
+       TC10_Handler,         // 58\r
+       TC11_Handler,         // 59\r
+       TC12_Handler,         // 60\r
+       TWIM0_Handler,        // 61\r
+       TWIS0_Handler,        // 62\r
+       TWIM1_Handler,        // 63\r
+       TWIS1_Handler,        // 64\r
+       USART0_Handler,       // 65\r
+       USART1_Handler,       // 66\r
+       USART2_Handler,       // 67\r
+       USART3_Handler,       // 68\r
+       ADCIFE_Handler,       // 69\r
+       DACC_Handler,         // 70\r
+       ACIFC_Handler,        // 71\r
+       ABDACB_Handler,       // 72\r
+       TRNG_Handler,         // 73\r
+       PARC_Handler,         // 74\r
+       CATB_Handler,         // 75\r
+       Dummy_Handler,        // one not used\r
+       TWIM2_Handler,        // 77\r
+       TWIM3_Handler,        // 78\r
+       LCDCA_Handler         // 79\r
+\r
+};\r
+\r
+\r
+/**\r
+ * \brief This is the code that gets called on processor reset.\r
+ * To initialize the device, and call the main() routine.\r
+ */\r
+void Reset_Handler(void)\r
+{\r
+       uint32_t *pSrc, *pDest;\r
+\r
+       /* Initialize the relocate segment */\r
+       pSrc = &_etext;\r
+       pDest = &_srelocate;\r
+\r
+       if (pSrc != pDest) {\r
+               for (; pDest < &_erelocate;) {\r
+                       *pDest++ = *pSrc++;\r
+               }\r
+       }\r
+\r
+       /* Clear the zero segment */\r
+       for (pDest = &_szero; pDest < &_ezero;) {\r
+               *pDest++ = 0;\r
+       }\r
+\r
+       /* Set the vector table base address */\r
+       pSrc = (uint32_t *) &_sfixed;\r
+       SCB->VTOR = ((uint32_t) pSrc & SCB_VTOR_TBLOFF_Msk);\r
+\r
+       /* Initialize the C library */\r
+       __libc_init_array();\r
+\r
+       /* Branch to main function */\r
+       main();\r
+\r
+       /* Infinite loop */\r
+       while (1);\r
+}\r
diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/asf/sam/utils/cmsis/sam4l/source/templates/system_sam4l.h b/FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/asf/sam/utils/cmsis/sam4l/source/templates/system_sam4l.h
new file mode 100644 (file)
index 0000000..519cf6c
--- /dev/null
@@ -0,0 +1,62 @@
+/**\r
+ * \file\r
+ *\r
+ * \brief Low-level initialization functions called upon chip startup.\r
+ *\r
+ * Copyright (c) 2012 Atmel Corporation. All rights reserved.\r
+ *\r
+ * \asf_license_start\r
+ *\r
+ * \page License\r
+ *\r
+ * Redistribution and use in source and binary forms, with or without\r
+ * modification, are permitted provided that the following conditions are met:\r
+ *\r
+ * 1. Redistributions of source code must retain the above copyright notice,\r
+ *    this list of conditions and the following disclaimer.\r
+ *\r
+ * 2. Redistributions in binary form must reproduce the above copyright notice,\r
+ *    this list of conditions and the following disclaimer in the documentation\r
+ *    and/or other materials provided with the distribution.\r
+ *\r
+ * 3. The name of Atmel may not be used to endorse or promote products derived\r
+ *    from this software without specific prior written permission.\r
+ *\r
+ * 4. This software may only be redistributed and used in connection with an\r
+ *    Atmel microcontroller product.\r
+ *\r
+ * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED\r
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\r
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE\r
+ * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR\r
+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\r
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS\r
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)\r
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,\r
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\r
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\r
+ * POSSIBILITY OF SUCH DAMAGE.\r
+ *\r
+ * \asf_license_stop\r
+ *\r
+ */\r
+\r
+#ifndef SYSTEM_SAM4L_H_INCLUDED\r
+#define SYSTEM_SAM4L_H_INCLUDED\r
+\r
+#ifdef __cplusplus\r
+extern "C" {\r
+#endif\r
+\r
+#include <stdint.h>\r
+\r
+extern uint32_t SystemCoreClock;   /*!< System Clock Frequency (Core Clock)  */\r
+\r
+void SystemInit(void);\r
+void SystemCoreClockUpdate(void);\r
+\r
+#ifdef __cplusplus\r
+}\r
+#endif\r
+\r
+#endif /* SYSTEM_SAM4L_H_INCLUDED */\r
diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/asf/sam/utils/compiler.h b/FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/asf/sam/utils/compiler.h
new file mode 100644 (file)
index 0000000..5f1e1d2
--- /dev/null
@@ -0,0 +1,1063 @@
+/**\r
+ * \file\r
+ *\r
+ * \brief Commonly used includes, types and macros.\r
+ *\r
+ * Copyright (c) 2010-2013 Atmel Corporation. All rights reserved.\r
+ *\r
+ * \asf_license_start\r
+ *\r
+ * \page License\r
+ *\r
+ * Redistribution and use in source and binary forms, with or without\r
+ * modification, are permitted provided that the following conditions are met:\r
+ *\r
+ * 1. Redistributions of source code must retain the above copyright notice,\r
+ *    this list of conditions and the following disclaimer.\r
+ *\r
+ * 2. Redistributions in binary form must reproduce the above copyright notice,\r
+ *    this list of conditions and the following disclaimer in the documentation\r
+ *    and/or other materials provided with the distribution.\r
+ *\r
+ * 3. The name of Atmel may not be used to endorse or promote products derived\r
+ *    from this software without specific prior written permission.\r
+ *\r
+ * 4. This software may only be redistributed and used in connection with an\r
+ *    Atmel microcontroller product.\r
+ *\r
+ * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED\r
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\r
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE\r
+ * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR\r
+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\r
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS\r
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)\r
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,\r
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\r
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\r
+ * POSSIBILITY OF SUCH DAMAGE.\r
+ *\r
+ * \asf_license_stop\r
+ *\r
+ */\r
+\r
+#ifndef UTILS_COMPILER_H\r
+#define UTILS_COMPILER_H\r
+\r
+/**\r
+ * \defgroup group_sam_utils Compiler abstraction layer and code utilities\r
+ *\r
+ * Compiler abstraction layer and code utilities for AT91SAM.\r
+ * This module provides various abstraction layers and utilities to make code compatible between different compilers.\r
+ *\r
+ * \{\r
+ */\r
+#include <stddef.h>\r
+\r
+#if (defined __ICCARM__)\r
+#  include <intrinsics.h>\r
+#endif\r
+\r
+#include <parts.h>\r
+#include "preprocessor.h"\r
+\r
+#include <io.h>\r
+\r
+//_____ D E C L A R A T I O N S ____________________________________________\r
+\r
+#ifndef __ASSEMBLY__ // Not defined for assembling.\r
+\r
+#include <stdio.h>\r
+#include <stdbool.h>\r
+#include <stdint.h>\r
+#include <stdlib.h>\r
+\r
+#ifdef __ICCARM__\r
+/*! \name Compiler Keywords\r
+ *\r
+ * Port of some keywords from GCC to IAR Embedded Workbench.\r
+ */\r
+//! @{\r
+#define __asm__             asm\r
+#define __inline__          inline\r
+#define __volatile__\r
+//! @}\r
+\r
+#endif\r
+\r
+#define FUNC_PTR                            void *\r
+/**\r
+ * \def UNUSED\r
+ * \brief Marking \a v as a unused parameter or value.\r
+ */\r
+#define UNUSED(v)          (void)(v)\r
+\r
+/**\r
+ * \def unused\r
+ * \brief Marking \a v as a unused parameter or value.\r
+ */\r
+#define unused(v)          do { (void)(v); } while(0)\r
+\r
+/**\r
+ * \def barrier\r
+ * \brief Memory barrier\r
+ */\r
+#define barrier()          __DMB()\r
+\r
+/**\r
+ * \brief Emit the compiler pragma \a arg.\r
+ *\r
+ * \param arg The pragma directive as it would appear after \e \#pragma\r
+ * (i.e. not stringified).\r
+ */\r
+#define COMPILER_PRAGMA(arg)            _Pragma(#arg)\r
+\r
+/**\r
+ * \def COMPILER_PACK_SET(alignment)\r
+ * \brief Set maximum alignment for subsequent struct and union\r
+ * definitions to \a alignment.\r
+ */\r
+#define COMPILER_PACK_SET(alignment)   COMPILER_PRAGMA(pack(alignment))\r
+\r
+/**\r
+ * \def COMPILER_PACK_RESET()\r
+ * \brief Set default alignment for subsequent struct and union\r
+ * definitions.\r
+ */\r
+#define COMPILER_PACK_RESET()          COMPILER_PRAGMA(pack())\r
+\r
+\r
+/**\r
+ * \brief Set aligned boundary.\r
+ */\r
+#if (defined __GNUC__) || (defined __CC_ARM)\r
+#   define COMPILER_ALIGNED(a)    __attribute__((__aligned__(a)))\r
+#elif (defined __ICCARM__)\r
+#   define COMPILER_ALIGNED(a)    COMPILER_PRAGMA(data_alignment = a)\r
+#endif\r
+\r
+/**\r
+ * \brief Set word-aligned boundary.\r
+ */\r
+#if (defined __GNUC__) || defined(__CC_ARM)\r
+#define COMPILER_WORD_ALIGNED    __attribute__((__aligned__(4)))\r
+#elif (defined __ICCARM__)\r
+#define COMPILER_WORD_ALIGNED    COMPILER_PRAGMA(data_alignment = 4)\r
+#endif\r
+\r
+/**\r
+ * \def __always_inline\r
+ * \brief The function should always be inlined.\r
+ *\r
+ * This annotation instructs the compiler to ignore its inlining\r
+ * heuristics and inline the function no matter how big it thinks it\r
+ * becomes.\r
+ */\r
+#if defined(__CC_ARM)\r
+#   define __always_inline   __forceinline\r
+#elif (defined __GNUC__)\r
+#      define __always_inline   inline __attribute__((__always_inline__))\r
+#elif (defined __ICCARM__)\r
+#      define __always_inline   _Pragma("inline=forced")\r
+#endif\r
+\r
+/*! \brief This macro is used to test fatal errors.\r
+ *\r
+ * The macro tests if the expression is false. If it is, a fatal error is\r
+ * detected and the application hangs up. If TEST_SUITE_DEFINE_ASSERT_MACRO\r
+ * is defined, a unit test version of the macro is used, to allow execution\r
+ * of further tests after a false expression.\r
+ *\r
+ * \param expr  Expression to evaluate and supposed to be nonzero.\r
+ */\r
+#if defined(_ASSERT_ENABLE_)\r
+#  if defined(TEST_SUITE_DEFINE_ASSERT_MACRO)\r
+     // Assert() is defined in unit_test/suite.h\r
+#    include "unit_test/suite.h"\r
+#  else\r
+#undef TEST_SUITE_DEFINE_ASSERT_MACRO\r
+#    define Assert(expr) \\r
+       {\\r
+               if (!(expr)) while (true);\\r
+       }\r
+#  endif\r
+#else\r
+#  define Assert(expr) ((void) 0)\r
+#endif\r
+\r
+/* Define WEAK attribute */\r
+#if defined   ( __CC_ARM   ) /* Keil µVision 4 */\r
+#   define WEAK __attribute__ ((weak))\r
+#elif defined ( __ICCARM__ ) /* IAR Ewarm 5.41+ */\r
+#   define WEAK __weak\r
+#elif defined (  __GNUC__  ) /* GCC CS3 2009q3-68 */\r
+#   define WEAK __attribute__ ((weak))\r
+#endif\r
+\r
+/* Define NO_INIT attribute */\r
+#if defined   ( __CC_ARM   )\r
+#   define NO_INIT __attribute__((zero_init))\r
+#elif defined ( __ICCARM__ )\r
+#   define NO_INIT __no_init\r
+#elif defined (  __GNUC__  )\r
+#   define NO_INIT __attribute__((section(".no_init")))\r
+#endif\r
+\r
+/* Define RAMFUNC attribute */\r
+#if defined   ( __CC_ARM   ) /* Keil µVision 4 */\r
+#   define RAMFUNC __attribute__ ((section(".ramfunc")))\r
+#elif defined ( __ICCARM__ ) /* IAR Ewarm 5.41+ */\r
+#   define RAMFUNC __ramfunc\r
+#elif defined (  __GNUC__  ) /* GCC CS3 2009q3-68 */\r
+#   define RAMFUNC __attribute__ ((section(".ramfunc")))\r
+#endif\r
+\r
+/* Define OPTIMIZE_HIGH attribute */\r
+#if defined   ( __CC_ARM   ) /* Keil µVision 4 */\r
+#   define OPTIMIZE_HIGH _Pragma("O3") \r
+#elif defined ( __ICCARM__ ) /* IAR Ewarm 5.41+ */\r
+#   define OPTIMIZE_HIGH _Pragma("optimize=high")\r
+#elif defined (  __GNUC__  ) /* GCC CS3 2009q3-68 */\r
+#   define OPTIMIZE_HIGH __attribute__((optimize(s)))\r
+#endif\r
+\r
+#include "interrupt.h"\r
+\r
+/*! \name Usual Types\r
+ */\r
+//! @{\r
+typedef unsigned char           Bool; //!< Boolean.\r
+#ifndef __cplusplus\r
+#if !defined(__bool_true_false_are_defined)\r
+typedef unsigned char           bool; //!< Boolean.\r
+#endif\r
+#endif\r
+typedef int8_t                  S8 ;  //!< 8-bit signed integer.\r
+typedef uint8_t                 U8 ;  //!< 8-bit unsigned integer.\r
+typedef int16_t                 S16;  //!< 16-bit signed integer.\r
+typedef uint16_t                U16;  //!< 16-bit unsigned integer.\r
+typedef uint16_t                le16_t;\r
+typedef uint16_t                be16_t;\r
+typedef int32_t                 S32;  //!< 32-bit signed integer.\r
+typedef uint32_t                U32;  //!< 32-bit unsigned integer.\r
+typedef uint32_t                le32_t;\r
+typedef uint32_t                be32_t;\r
+typedef int64_t                 S64;  //!< 64-bit signed integer.\r
+typedef uint64_t                U64;  //!< 64-bit unsigned integer.\r
+typedef float                   F32;  //!< 32-bit floating-point number.\r
+typedef double                  F64;  //!< 64-bit floating-point number.\r
+typedef uint32_t                iram_size_t;\r
+//! @}\r
+\r
+\r
+/*! \name Status Types\r
+ */\r
+//! @{\r
+typedef bool                Status_bool_t;  //!< Boolean status.\r
+typedef U8                  Status_t;       //!< 8-bit-coded status.\r
+//! @}\r
+\r
+\r
+/*! \name Aliasing Aggregate Types\r
+ */\r
+//! @{\r
+\r
+//! 16-bit union.\r
+typedef union\r
+{\r
+  S16 s16   ;\r
+  U16 u16   ;\r
+  S8  s8 [2];\r
+  U8  u8 [2];\r
+} Union16;\r
+\r
+//! 32-bit union.\r
+typedef union\r
+{\r
+  S32 s32   ;\r
+  U32 u32   ;\r
+  S16 s16[2];\r
+  U16 u16[2];\r
+  S8  s8 [4];\r
+  U8  u8 [4];\r
+} Union32;\r
+\r
+//! 64-bit union.\r
+typedef union\r
+{\r
+  S64 s64   ;\r
+  U64 u64   ;\r
+  S32 s32[2];\r
+  U32 u32[2];\r
+  S16 s16[4];\r
+  U16 u16[4];\r
+  S8  s8 [8];\r
+  U8  u8 [8];\r
+} Union64;\r
+\r
+//! Union of pointers to 64-, 32-, 16- and 8-bit unsigned integers.\r
+typedef union\r
+{\r
+  S64 *s64ptr;\r
+  U64 *u64ptr;\r
+  S32 *s32ptr;\r
+  U32 *u32ptr;\r
+  S16 *s16ptr;\r
+  U16 *u16ptr;\r
+  S8  *s8ptr ;\r
+  U8  *u8ptr ;\r
+} UnionPtr;\r
+\r
+//! Union of pointers to volatile 64-, 32-, 16- and 8-bit unsigned integers.\r
+typedef union\r
+{\r
+  volatile S64 *s64ptr;\r
+  volatile U64 *u64ptr;\r
+  volatile S32 *s32ptr;\r
+  volatile U32 *u32ptr;\r
+  volatile S16 *s16ptr;\r
+  volatile U16 *u16ptr;\r
+  volatile S8  *s8ptr ;\r
+  volatile U8  *u8ptr ;\r
+} UnionVPtr;\r
+\r
+//! Union of pointers to constant 64-, 32-, 16- and 8-bit unsigned integers.\r
+typedef union\r
+{\r
+  const S64 *s64ptr;\r
+  const U64 *u64ptr;\r
+  const S32 *s32ptr;\r
+  const U32 *u32ptr;\r
+  const S16 *s16ptr;\r
+  const U16 *u16ptr;\r
+  const S8  *s8ptr ;\r
+  const U8  *u8ptr ;\r
+} UnionCPtr;\r
+\r
+//! Union of pointers to constant volatile 64-, 32-, 16- and 8-bit unsigned integers.\r
+typedef union\r
+{\r
+  const volatile S64 *s64ptr;\r
+  const volatile U64 *u64ptr;\r
+  const volatile S32 *s32ptr;\r
+  const volatile U32 *u32ptr;\r
+  const volatile S16 *s16ptr;\r
+  const volatile U16 *u16ptr;\r
+  const volatile S8  *s8ptr ;\r
+  const volatile U8  *u8ptr ;\r
+} UnionCVPtr;\r
+\r
+//! Structure of pointers to 64-, 32-, 16- and 8-bit unsigned integers.\r
+typedef struct\r
+{\r
+  S64 *s64ptr;\r
+  U64 *u64ptr;\r
+  S32 *s32ptr;\r
+  U32 *u32ptr;\r
+  S16 *s16ptr;\r
+  U16 *u16ptr;\r
+  S8  *s8ptr ;\r
+  U8  *u8ptr ;\r
+} StructPtr;\r
+\r
+//! Structure of pointers to volatile 64-, 32-, 16- and 8-bit unsigned integers.\r
+typedef struct\r
+{\r
+  volatile S64 *s64ptr;\r
+  volatile U64 *u64ptr;\r
+  volatile S32 *s32ptr;\r
+  volatile U32 *u32ptr;\r
+  volatile S16 *s16ptr;\r
+  volatile U16 *u16ptr;\r
+  volatile S8  *s8ptr ;\r
+  volatile U8  *u8ptr ;\r
+} StructVPtr;\r
+\r
+//! Structure of pointers to constant 64-, 32-, 16- and 8-bit unsigned integers.\r
+typedef struct\r
+{\r
+  const S64 *s64ptr;\r
+  const U64 *u64ptr;\r
+  const S32 *s32ptr;\r
+  const U32 *u32ptr;\r
+  const S16 *s16ptr;\r
+  const U16 *u16ptr;\r
+  const S8  *s8ptr ;\r
+  const U8  *u8ptr ;\r
+} StructCPtr;\r
+\r
+//! Structure of pointers to constant volatile 64-, 32-, 16- and 8-bit unsigned integers.\r
+typedef struct\r
+{\r
+  const volatile S64 *s64ptr;\r
+  const volatile U64 *u64ptr;\r
+  const volatile S32 *s32ptr;\r
+  const volatile U32 *u32ptr;\r
+  const volatile S16 *s16ptr;\r
+  const volatile U16 *u16ptr;\r
+  const volatile S8  *s8ptr ;\r
+  const volatile U8  *u8ptr ;\r
+} StructCVPtr;\r
+\r
+//! @}\r
+\r
+#endif  // #ifndef __ASSEMBLY__\r
+\r
+/*! \name Usual Constants\r
+ */\r
+//! @{\r
+#define DISABLE   0\r
+#define ENABLE    1\r
+#ifndef __cplusplus\r
+#if !defined(__bool_true_false_are_defined)\r
+#define false     0\r
+#define true      1\r
+#endif\r
+#endif\r
+#define PASS      0\r
+#define FAIL      1\r
+#define LOW       0\r
+#define HIGH      1\r
+//! @}\r
+\r
+\r
+#ifndef __ASSEMBLY__ // not for assembling.\r
+\r
+//! \name Optimization Control\r
+//@{\r
+\r
+/**\r
+ * \def likely(exp)\r
+ * \brief The expression \a exp is likely to be true\r
+ */\r
+#ifndef likely\r
+#   define likely(exp)    (exp)\r
+#endif\r
+\r
+/**\r
+ * \def unlikely(exp)\r
+ * \brief The expression \a exp is unlikely to be true\r
+ */\r
+#ifndef unlikely\r
+#   define unlikely(exp)  (exp)\r
+#endif\r
+\r
+/**\r
+ * \def is_constant(exp)\r
+ * \brief Determine if an expression evaluates to a constant value.\r
+ *\r
+ * \param exp Any expression\r
+ *\r
+ * \return true if \a exp is constant, false otherwise.\r
+ */\r
+#if (defined __GNUC__) || (defined __CC_ARM)\r
+#   define is_constant(exp)       __builtin_constant_p(exp)\r
+#else\r
+#   define is_constant(exp)       (0)\r
+#endif\r
+\r
+//! @}\r
+\r
+/*! \name Bit-Field Handling\r
+ */\r
+//! @{\r
+\r
+/*! \brief Reads the bits of a value specified by a given bit-mask.\r
+ *\r
+ * \param value Value to read bits from.\r
+ * \param mask  Bit-mask indicating bits to read.\r
+ *\r
+ * \return Read bits.\r
+ */\r
+#define Rd_bits( value, mask)        ((value) & (mask))\r
+\r
+/*! \brief Writes the bits of a C lvalue specified by a given bit-mask.\r
+ *\r
+ * \param lvalue  C lvalue to write bits to.\r
+ * \param mask    Bit-mask indicating bits to write.\r
+ * \param bits    Bits to write.\r
+ *\r
+ * \return Resulting value with written bits.\r
+ */\r
+#define Wr_bits(lvalue, mask, bits)  ((lvalue) = ((lvalue) & ~(mask)) |\\r
+                                                 ((bits  ) &  (mask)))\r
+\r
+/*! \brief Tests the bits of a value specified by a given bit-mask.\r
+ *\r
+ * \param value Value of which to test bits.\r
+ * \param mask  Bit-mask indicating bits to test.\r
+ *\r
+ * \return \c 1 if at least one of the tested bits is set, else \c 0.\r
+ */\r
+#define Tst_bits( value, mask)  (Rd_bits(value, mask) != 0)\r
+\r
+/*! \brief Clears the bits of a C lvalue specified by a given bit-mask.\r
+ *\r
+ * \param lvalue  C lvalue of which to clear bits.\r
+ * \param mask    Bit-mask indicating bits to clear.\r
+ *\r
+ * \return Resulting value with cleared bits.\r
+ */\r
+#define Clr_bits(lvalue, mask)  ((lvalue) &= ~(mask))\r
+\r
+/*! \brief Sets the bits of a C lvalue specified by a given bit-mask.\r
+ *\r
+ * \param lvalue  C lvalue of which to set bits.\r
+ * \param mask    Bit-mask indicating bits to set.\r
+ *\r
+ * \return Resulting value with set bits.\r
+ */\r
+#define Set_bits(lvalue, mask)  ((lvalue) |=  (mask))\r
+\r
+/*! \brief Toggles the bits of a C lvalue specified by a given bit-mask.\r
+ *\r
+ * \param lvalue  C lvalue of which to toggle bits.\r
+ * \param mask    Bit-mask indicating bits to toggle.\r
+ *\r
+ * \return Resulting value with toggled bits.\r
+ */\r
+#define Tgl_bits(lvalue, mask)  ((lvalue) ^=  (mask))\r
+\r
+/*! \brief Reads the bit-field of a value specified by a given bit-mask.\r
+ *\r
+ * \param value Value to read a bit-field from.\r
+ * \param mask  Bit-mask indicating the bit-field to read.\r
+ *\r
+ * \return Read bit-field.\r
+ */\r
+#define Rd_bitfield( value, mask)           (Rd_bits( value, mask) >> ctz(mask))\r
+\r
+/*! \brief Writes the bit-field of a C lvalue specified by a given bit-mask.\r
+ *\r
+ * \param lvalue    C lvalue to write a bit-field to.\r
+ * \param mask      Bit-mask indicating the bit-field to write.\r
+ * \param bitfield  Bit-field to write.\r
+ *\r
+ * \return Resulting value with written bit-field.\r
+ */\r
+#define Wr_bitfield(lvalue, mask, bitfield) (Wr_bits(lvalue, mask, (U32)(bitfield) << ctz(mask)))\r
+\r
+//! @}\r
+\r
+\r
+/*! \name Zero-Bit Counting\r
+ *\r
+ * Under GCC, __builtin_clz and __builtin_ctz behave like macros when\r
+ * applied to constant expressions (values known at compile time), so they are\r
+ * more optimized than the use of the corresponding assembly instructions and\r
+ * they can be used as constant expressions e.g. to initialize objects having\r
+ * static storage duration, and like the corresponding assembly instructions\r
+ * when applied to non-constant expressions (values unknown at compile time), so\r
+ * they are more optimized than an assembly periphrasis. Hence, clz and ctz\r
+ * ensure a possible and optimized behavior for both constant and non-constant\r
+ * expressions.\r
+ */\r
+//! @{\r
+\r
+/*! \brief Counts the leading zero bits of the given value considered as a 32-bit integer.\r
+ *\r
+ * \param u Value of which to count the leading zero bits.\r
+ *\r
+ * \return The count of leading zero bits in \a u.\r
+ */\r
+#if (defined __GNUC__) || (defined __CC_ARM)\r
+#   define clz(u)              __builtin_clz(u)\r
+#elif (defined __ICCARM__)\r
+#   define clz(u)              __CLZ(u)\r
+#else\r
+#   define clz(u)              (((u) == 0)          ? 32 : \\r
+                                ((u) & (1ul << 31)) ?  0 : \\r
+                                ((u) & (1ul << 30)) ?  1 : \\r
+                                ((u) & (1ul << 29)) ?  2 : \\r
+                                ((u) & (1ul << 28)) ?  3 : \\r
+                                ((u) & (1ul << 27)) ?  4 : \\r
+                                ((u) & (1ul << 26)) ?  5 : \\r
+                                ((u) & (1ul << 25)) ?  6 : \\r
+                                ((u) & (1ul << 24)) ?  7 : \\r
+                                ((u) & (1ul << 23)) ?  8 : \\r
+                                ((u) & (1ul << 22)) ?  9 : \\r
+                                ((u) & (1ul << 21)) ? 10 : \\r
+                                ((u) & (1ul << 20)) ? 11 : \\r
+                                ((u) & (1ul << 19)) ? 12 : \\r
+                                ((u) & (1ul << 18)) ? 13 : \\r
+                                ((u) & (1ul << 17)) ? 14 : \\r
+                                ((u) & (1ul << 16)) ? 15 : \\r
+                                ((u) & (1ul << 15)) ? 16 : \\r
+                                ((u) & (1ul << 14)) ? 17 : \\r
+                                ((u) & (1ul << 13)) ? 18 : \\r
+                                ((u) & (1ul << 12)) ? 19 : \\r
+                                ((u) & (1ul << 11)) ? 20 : \\r
+                                ((u) & (1ul << 10)) ? 21 : \\r
+                                ((u) & (1ul <<  9)) ? 22 : \\r
+                                ((u) & (1ul <<  8)) ? 23 : \\r
+                                ((u) & (1ul <<  7)) ? 24 : \\r
+                                ((u) & (1ul <<  6)) ? 25 : \\r
+                                ((u) & (1ul <<  5)) ? 26 : \\r
+                                ((u) & (1ul <<  4)) ? 27 : \\r
+                                ((u) & (1ul <<  3)) ? 28 : \\r
+                                ((u) & (1ul <<  2)) ? 29 : \\r
+                                ((u) & (1ul <<  1)) ? 30 : \\r
+                                31)\r
+#endif\r
+\r
+/*! \brief Counts the trailing zero bits of the given value considered as a 32-bit integer.\r
+ *\r
+ * \param u Value of which to count the trailing zero bits.\r
+ *\r
+ * \return The count of trailing zero bits in \a u.\r
+ */\r
+#if (defined __GNUC__) || (defined __CC_ARM)\r
+#   define ctz(u)              __builtin_ctz(u)\r
+#else\r
+#   define ctz(u)              ((u) & (1ul <<  0) ?  0 : \\r
+                                (u) & (1ul <<  1) ?  1 : \\r
+                                (u) & (1ul <<  2) ?  2 : \\r
+                                (u) & (1ul <<  3) ?  3 : \\r
+                                (u) & (1ul <<  4) ?  4 : \\r
+                                (u) & (1ul <<  5) ?  5 : \\r
+                                (u) & (1ul <<  6) ?  6 : \\r
+                                (u) & (1ul <<  7) ?  7 : \\r
+                                (u) & (1ul <<  8) ?  8 : \\r
+                                (u) & (1ul <<  9) ?  9 : \\r
+                                (u) & (1ul << 10) ? 10 : \\r
+                                (u) & (1ul << 11) ? 11 : \\r
+                                (u) & (1ul << 12) ? 12 : \\r
+                                (u) & (1ul << 13) ? 13 : \\r
+                                (u) & (1ul << 14) ? 14 : \\r
+                                (u) & (1ul << 15) ? 15 : \\r
+                                (u) & (1ul << 16) ? 16 : \\r
+                                (u) & (1ul << 17) ? 17 : \\r
+                                (u) & (1ul << 18) ? 18 : \\r
+                                (u) & (1ul << 19) ? 19 : \\r
+                                (u) & (1ul << 20) ? 20 : \\r
+                                (u) & (1ul << 21) ? 21 : \\r
+                                (u) & (1ul << 22) ? 22 : \\r
+                                (u) & (1ul << 23) ? 23 : \\r
+                                (u) & (1ul << 24) ? 24 : \\r
+                                (u) & (1ul << 25) ? 25 : \\r
+                                (u) & (1ul << 26) ? 26 : \\r
+                                (u) & (1ul << 27) ? 27 : \\r
+                                (u) & (1ul << 28) ? 28 : \\r
+                                (u) & (1ul << 29) ? 29 : \\r
+                                (u) & (1ul << 30) ? 30 : \\r
+                                (u) & (1ul << 31) ? 31 : \\r
+                                32)\r
+#endif\r
+\r
+//! @}\r
+\r
+\r
+/*! \name Bit Reversing\r
+ */\r
+//! @{\r
+\r
+/*! \brief Reverses the bits of \a u8.\r
+ *\r
+ * \param u8  U8 of which to reverse the bits.\r
+ *\r
+ * \return Value resulting from \a u8 with reversed bits.\r
+ */\r
+#define bit_reverse8(u8)    ((U8)(bit_reverse32((U8)(u8)) >> 24))\r
+\r
+/*! \brief Reverses the bits of \a u16.\r
+ *\r
+ * \param u16 U16 of which to reverse the bits.\r
+ *\r
+ * \return Value resulting from \a u16 with reversed bits.\r
+ */\r
+#define bit_reverse16(u16)  ((U16)(bit_reverse32((U16)(u16)) >> 16))\r
+\r
+/*! \brief Reverses the bits of \a u32.\r
+ *\r
+ * \param u32 U32 of which to reverse the bits.\r
+ *\r
+ * \return Value resulting from \a u32 with reversed bits.\r
+ */\r
+#define bit_reverse32(u32)   __RBIT(u32)\r
+\r
+/*! \brief Reverses the bits of \a u64.\r
+ *\r
+ * \param u64 U64 of which to reverse the bits.\r
+ *\r
+ * \return Value resulting from \a u64 with reversed bits.\r
+ */\r
+#define bit_reverse64(u64)  ((U64)(((U64)bit_reverse32((U64)(u64) >> 32)) |\\r
+                                   ((U64)bit_reverse32((U64)(u64)) << 32)))\r
+\r
+//! @}\r
+\r
+\r
+/*! \name Alignment\r
+ */\r
+//! @{\r
+\r
+/*! \brief Tests alignment of the number \a val with the \a n boundary.\r
+ *\r
+ * \param val Input value.\r
+ * \param n   Boundary.\r
+ *\r
+ * \return \c 1 if the number \a val is aligned with the \a n boundary, else \c 0.\r
+ */\r
+#define Test_align(val, n     ) (!Tst_bits( val, (n) - 1     )   )\r
+\r
+/*! \brief Gets alignment of the number \a val with respect to the \a n boundary.\r
+ *\r
+ * \param val Input value.\r
+ * \param n   Boundary.\r
+ *\r
+ * \return Alignment of the number \a val with respect to the \a n boundary.\r
+ */\r
+#define Get_align( val, n     ) (  Rd_bits( val, (n) - 1     )   )\r
+\r
+/*! \brief Sets alignment of the lvalue number \a lval to \a alg with respect to the \a n boundary.\r
+ *\r
+ * \param lval  Input/output lvalue.\r
+ * \param n     Boundary.\r
+ * \param alg   Alignment.\r
+ *\r
+ * \return New value of \a lval resulting from its alignment set to \a alg with respect to the \a n boundary.\r
+ */\r
+#define Set_align(lval, n, alg) (  Wr_bits(lval, (n) - 1, alg)   )\r
+\r
+/*! \brief Aligns the number \a val with the upper \a n boundary.\r
+ *\r
+ * \param val Input value.\r
+ * \param n   Boundary.\r
+ *\r
+ * \return Value resulting from the number \a val aligned with the upper \a n boundary.\r
+ */\r
+#define Align_up(  val, n     ) (((val) + ((n) - 1)) & ~((n) - 1))\r
+\r
+/*! \brief Aligns the number \a val with the lower \a n boundary.\r
+ *\r
+ * \param val Input value.\r
+ * \param n   Boundary.\r
+ *\r
+ * \return Value resulting from the number \a val aligned with the lower \a n boundary.\r
+ */\r
+#define Align_down(val, n     ) ( (val)              & ~((n) - 1))\r
+\r
+//! @}\r
+\r
+\r
+/*! \name Mathematics\r
+ *\r
+ * The same considerations as for clz and ctz apply here but GCC does not\r
+ * provide built-in functions to access the assembly instructions abs, min and\r
+ * max and it does not produce them by itself in most cases, so two sets of\r
+ * macros are defined here:\r
+ *   - Abs, Min and Max to apply to constant expressions (values known at\r
+ *     compile time);\r
+ *   - abs, min and max to apply to non-constant expressions (values unknown at\r
+ *     compile time), abs is found in stdlib.h.\r
+ */\r
+//! @{\r
+\r
+/*! \brief Takes the absolute value of \a a.\r
+ *\r
+ * \param a Input value.\r
+ *\r
+ * \return Absolute value of \a a.\r
+ *\r
+ * \note More optimized if only used with values known at compile time.\r
+ */\r
+#define Abs(a)              (((a) <  0 ) ? -(a) : (a))\r
+\r
+/*! \brief Takes the minimal value of \a a and \a b.\r
+ *\r
+ * \param a Input value.\r
+ * \param b Input value.\r
+ *\r
+ * \return Minimal value of \a a and \a b.\r
+ *\r
+ * \note More optimized if only used with values known at compile time.\r
+ */\r
+#define Min(a, b)           (((a) < (b)) ?  (a) : (b))\r
+\r
+/*! \brief Takes the maximal value of \a a and \a b.\r
+ *\r
+ * \param a Input value.\r
+ * \param b Input value.\r
+ *\r
+ * \return Maximal value of \a a and \a b.\r
+ *\r
+ * \note More optimized if only used with values known at compile time.\r
+ */\r
+#define Max(a, b)           (((a) > (b)) ?  (a) : (b))\r
+\r
+// abs() is already defined by stdlib.h\r
+\r
+/*! \brief Takes the minimal value of \a a and \a b.\r
+ *\r
+ * \param a Input value.\r
+ * \param b Input value.\r
+ *\r
+ * \return Minimal value of \a a and \a b.\r
+ *\r
+ * \note More optimized if only used with values unknown at compile time.\r
+ */\r
+#define min(a, b)   Min(a, b)\r
+\r
+/*! \brief Takes the maximal value of \a a and \a b.\r
+ *\r
+ * \param a Input value.\r
+ * \param b Input value.\r
+ *\r
+ * \return Maximal value of \a a and \a b.\r
+ *\r
+ * \note More optimized if only used with values unknown at compile time.\r
+ */\r
+#define max(a, b)   Max(a, b)\r
+\r
+//! @}\r
+\r
+\r
+/*! \brief Calls the routine at address \a addr.\r
+ *\r
+ * It generates a long call opcode.\r
+ *\r
+ * For example, `Long_call(0x80000000)' generates a software reset on a UC3 if\r
+ * it is invoked from the CPU supervisor mode.\r
+ *\r
+ * \param addr  Address of the routine to call.\r
+ *\r
+ * \note It may be used as a long jump opcode in some special cases.\r
+ */\r
+#define Long_call(addr)                   ((*(void (*)(void))(addr))())\r
+\r
+\r
+/*! \name MCU Endianism Handling\r
+ * ARM is MCU little endianism.\r
+ */\r
+//! @{\r
+#define  MSB(u16)       (((U8  *)&(u16))[1]) //!< Most significant byte of \a u16.\r
+#define  LSB(u16)       (((U8  *)&(u16))[0]) //!< Least significant byte of \a u16.\r
+\r
+#define  MSH(u32)       (((U16 *)&(u32))[1]) //!< Most significant half-word of \a u32.\r
+#define  LSH(u32)       (((U16 *)&(u32))[0]) //!< Least significant half-word of \a u32.\r
+#define  MSB0W(u32)     (((U8  *)&(u32))[3]) //!< Most significant byte of 1st rank of \a u32.\r
+#define  MSB1W(u32)     (((U8  *)&(u32))[2]) //!< Most significant byte of 2nd rank of \a u32.\r
+#define  MSB2W(u32)     (((U8  *)&(u32))[1]) //!< Most significant byte of 3rd rank of \a u32.\r
+#define  MSB3W(u32)     (((U8  *)&(u32))[0]) //!< Most significant byte of 4th rank of \a u32.\r
+#define  LSB3W(u32)     MSB0W(u32)           //!< Least significant byte of 4th rank of \a u32.\r
+#define  LSB2W(u32)     MSB1W(u32)           //!< Least significant byte of 3rd rank of \a u32.\r
+#define  LSB1W(u32)     MSB2W(u32)           //!< Least significant byte of 2nd rank of \a u32.\r
+#define  LSB0W(u32)     MSB3W(u32)           //!< Least significant byte of 1st rank of \a u32.\r
+        \r
+#define  MSW(u64)       (((U32 *)&(u64))[1]) //!< Most significant word of \a u64.\r
+#define  LSW(u64)       (((U32 *)&(u64))[0]) //!< Least significant word of \a u64.\r
+#define  MSH0(u64)      (((U16 *)&(u64))[3]) //!< Most significant half-word of 1st rank of \a u64.\r
+#define  MSH1(u64)      (((U16 *)&(u64))[2]) //!< Most significant half-word of 2nd rank of \a u64.\r
+#define  MSH2(u64)      (((U16 *)&(u64))[1]) //!< Most significant half-word of 3rd rank of \a u64.\r
+#define  MSH3(u64)      (((U16 *)&(u64))[0]) //!< Most significant half-word of 4th rank of \a u64.\r
+#define  LSH3(u64)      MSH0(u64)            //!< Least significant half-word of 4th rank of \a u64.\r
+#define  LSH2(u64)      MSH1(u64)            //!< Least significant half-word of 3rd rank of \a u64.\r
+#define  LSH1(u64)      MSH2(u64)            //!< Least significant half-word of 2nd rank of \a u64.\r
+#define  LSH0(u64)      MSH3(u64)            //!< Least significant half-word of 1st rank of \a u64.\r
+#define  MSB0D(u64)     (((U8  *)&(u64))[7]) //!< Most significant byte of 1st rank of \a u64.\r
+#define  MSB1D(u64)     (((U8  *)&(u64))[6]) //!< Most significant byte of 2nd rank of \a u64.\r
+#define  MSB2D(u64)     (((U8  *)&(u64))[5]) //!< Most significant byte of 3rd rank of \a u64.\r
+#define  MSB3D(u64)     (((U8  *)&(u64))[4]) //!< Most significant byte of 4th rank of \a u64.\r
+#define  MSB4D(u64)     (((U8  *)&(u64))[3]) //!< Most significant byte of 5th rank of \a u64.\r
+#define  MSB5D(u64)     (((U8  *)&(u64))[2]) //!< Most significant byte of 6th rank of \a u64.\r
+#define  MSB6D(u64)     (((U8  *)&(u64))[1]) //!< Most significant byte of 7th rank of \a u64.\r
+#define  MSB7D(u64)     (((U8  *)&(u64))[0]) //!< Most significant byte of 8th rank of \a u64.\r
+#define  LSB7D(u64)     MSB0D(u64)           //!< Least significant byte of 8th rank of \a u64.\r
+#define  LSB6D(u64)     MSB1D(u64)           //!< Least significant byte of 7th rank of \a u64.\r
+#define  LSB5D(u64)     MSB2D(u64)           //!< Least significant byte of 6th rank of \a u64.\r
+#define  LSB4D(u64)     MSB3D(u64)           //!< Least significant byte of 5th rank of \a u64.\r
+#define  LSB3D(u64)     MSB4D(u64)           //!< Least significant byte of 4th rank of \a u64.\r
+#define  LSB2D(u64)     MSB5D(u64)           //!< Least significant byte of 3rd rank of \a u64.\r
+#define  LSB1D(u64)     MSB6D(u64)           //!< Least significant byte of 2nd rank of \a u64.\r
+#define  LSB0D(u64)     MSB7D(u64)           //!< Least significant byte of 1st rank of \a u64.\r
+\r
+#define  BE16(x)        Swap16(x)\r
+#define  LE16(x)        (x)\r
+\r
+#define  le16_to_cpu(x) (x)\r
+#define  cpu_to_le16(x) (x)\r
+#define  LE16_TO_CPU(x) (x)\r
+#define  CPU_TO_LE16(x) (x)\r
+\r
+#define  be16_to_cpu(x) Swap16(x)\r
+#define  cpu_to_be16(x) Swap16(x)\r
+#define  BE16_TO_CPU(x) Swap16(x)\r
+#define  CPU_TO_BE16(x) Swap16(x)\r
+\r
+#define  le32_to_cpu(x) (x)\r
+#define  cpu_to_le32(x) (x)\r
+#define  LE32_TO_CPU(x) (x)\r
+#define  CPU_TO_LE32(x) (x)\r
+\r
+#define  be32_to_cpu(x) swap32(x)\r
+#define  cpu_to_be32(x) swap32(x)\r
+#define  BE32_TO_CPU(x) swap32(x)\r
+#define  CPU_TO_BE32(x) swap32(x)\r
+//! @}\r
+\r
+\r
+/*! \name Endianism Conversion\r
+ *\r
+ * The same considerations as for clz and ctz apply here but GCC's\r
+ * __builtin_bswap_32 and __builtin_bswap_64 do not behave like macros when\r
+ * applied to constant expressions, so two sets of macros are defined here:\r
+ *   - Swap16, Swap32 and Swap64 to apply to constant expressions (values known\r
+ *     at compile time);\r
+ *   - swap16, swap32 and swap64 to apply to non-constant expressions (values\r
+ *     unknown at compile time).\r
+ */\r
+//! @{\r
+\r
+/*! \brief Toggles the endianism of \a u16 (by swapping its bytes).\r
+ *\r
+ * \param u16 U16 of which to toggle the endianism.\r
+ *\r
+ * \return Value resulting from \a u16 with toggled endianism.\r
+ *\r
+ * \note More optimized if only used with values known at compile time.\r
+ */\r
+#define Swap16(u16) ((U16)(((U16)(u16) >> 8) |\\r
+                           ((U16)(u16) << 8)))\r
+\r
+/*! \brief Toggles the endianism of \a u32 (by swapping its bytes).\r
+ *\r
+ * \param u32 U32 of which to toggle the endianism.\r
+ *\r
+ * \return Value resulting from \a u32 with toggled endianism.\r
+ *\r
+ * \note More optimized if only used with values known at compile time.\r
+ */\r
+#define Swap32(u32) ((U32)(((U32)Swap16((U32)(u32) >> 16)) |\\r
+                           ((U32)Swap16((U32)(u32)) << 16)))\r
+\r
+/*! \brief Toggles the endianism of \a u64 (by swapping its bytes).\r
+ *\r
+ * \param u64 U64 of which to toggle the endianism.\r
+ *\r
+ * \return Value resulting from \a u64 with toggled endianism.\r
+ *\r
+ * \note More optimized if only used with values known at compile time.\r
+ */\r
+#define Swap64(u64) ((U64)(((U64)Swap32((U64)(u64) >> 32)) |\\r
+                           ((U64)Swap32((U64)(u64)) << 32)))\r
+\r
+/*! \brief Toggles the endianism of \a u16 (by swapping its bytes).\r
+ *\r
+ * \param u16 U16 of which to toggle the endianism.\r
+ *\r
+ * \return Value resulting from \a u16 with toggled endianism.\r
+ *\r
+ * \note More optimized if only used with values unknown at compile time.\r
+ */\r
+#define swap16(u16) Swap16(u16)\r
+\r
+/*! \brief Toggles the endianism of \a u32 (by swapping its bytes).\r
+ *\r
+ * \param u32 U32 of which to toggle the endianism.\r
+ *\r
+ * \return Value resulting from \a u32 with toggled endianism.\r
+ *\r
+ * \note More optimized if only used with values unknown at compile time.\r
+ */\r
+#if (defined __GNUC__)\r
+#   define swap32(u32) ((U32)__builtin_bswap32((U32)(u32)))\r
+#else\r
+#   define swap32(u32) Swap32(u32)\r
+#endif\r
+\r
+/*! \brief Toggles the endianism of \a u64 (by swapping its bytes).\r
+ *\r
+ * \param u64 U64 of which to toggle the endianism.\r
+ *\r
+ * \return Value resulting from \a u64 with toggled endianism.\r
+ *\r
+ * \note More optimized if only used with values unknown at compile time.\r
+ */\r
+#if (defined __GNUC__)\r
+#   define swap64(u64) ((U64)__builtin_bswap64((U64)(u64)))\r
+#else\r
+#   define swap64(u64) ((U64)(((U64)swap32((U64)(u64) >> 32)) |\\r
+                           ((U64)swap32((U64)(u64)) << 32)))\r
+#endif\r
+\r
+//! @}\r
+\r
+\r
+/*! \name Target Abstraction\r
+ */\r
+//! @{\r
+\r
+#define _GLOBEXT_           extern      //!< extern storage-class specifier.\r
+#define _CONST_TYPE_        const       //!< const type qualifier.\r
+#define _MEM_TYPE_SLOW_                 //!< Slow memory type.\r
+#define _MEM_TYPE_MEDFAST_              //!< Fairly fast memory type.\r
+#define _MEM_TYPE_FAST_                 //!< Fast memory type.\r
+\r
+typedef U8                  Byte;       //!< 8-bit unsigned integer.\r
+\r
+#define memcmp_ram2ram      memcmp      //!< Target-specific memcmp of RAM to RAM.\r
+#define memcmp_code2ram     memcmp      //!< Target-specific memcmp of RAM to NVRAM.\r
+#define memcpy_ram2ram      memcpy      //!< Target-specific memcpy from RAM to RAM.\r
+#define memcpy_code2ram     memcpy      //!< Target-specific memcpy from NVRAM to RAM.\r
+\r
+#define LSB0(u32)           LSB0W(u32)  //!< Least significant byte of 1st rank of \a u32.\r
+#define LSB1(u32)           LSB1W(u32)  //!< Least significant byte of 2nd rank of \a u32.\r
+#define LSB2(u32)           LSB2W(u32)  //!< Least significant byte of 3rd rank of \a u32.\r
+#define LSB3(u32)           LSB3W(u32)  //!< Least significant byte of 4th rank of \a u32.\r
+#define MSB3(u32)           MSB3W(u32)  //!< Most significant byte of 4th rank of \a u32.\r
+#define MSB2(u32)           MSB2W(u32)  //!< Most significant byte of 3rd rank of \a u32.\r
+#define MSB1(u32)           MSB1W(u32)  //!< Most significant byte of 2nd rank of \a u32.\r
+#define MSB0(u32)           MSB0W(u32)  //!< Most significant byte of 1st rank of \a u32.\r
+\r
+//! @}\r
+\r
+/**\r
+ * \brief Calculate \f$ \left\lceil \frac{a}{b} \right\rceil \f$ using\r
+ * integer arithmetic.\r
+ *\r
+ * \param a An integer\r
+ * \param b Another integer\r
+ *\r
+ * \return (\a a / \a b) rounded up to the nearest integer.\r
+ */\r
+#define div_ceil(a, b)      (((a) + (b) - 1) / (b))\r
+\r
+#endif  // #ifndef __ASSEMBLY__\r
+\r
+\r
+#if defined(__ICCARM__)\r
+#define SHORTENUM           __packed\r
+#elif defined(__GNUC__)\r
+#define SHORTENUM           __attribute__((packed))\r
+#endif\r
+\r
+#define FLASH_DECLARE(x)  const x\r
+#define FLASH_EXTERN(x) extern const x\r
+#define PGM_READ_BYTE(x) *(x)\r
+#define PGM_READ_WORD(x) *(x)\r
+#define MEMCPY_ENDIAN memcpy\r
+#define PGM_READ_BLOCK(dst, src, len) memcpy((dst), (src), (len))\r
+\r
+/* Converting of values from CPU endian to little endian. */\r
+#define CPU_ENDIAN_TO_LE16(x)   (x)\r
+#define CPU_ENDIAN_TO_LE32(x)   (x)\r
+#define CPU_ENDIAN_TO_LE64(x)   (x)\r
+\r
+/* Converting of values from little endian to CPU endian. */\r
+#define LE16_TO_CPU_ENDIAN(x)   (x)\r
+#define LE32_TO_CPU_ENDIAN(x)   (x)\r
+#define LE64_TO_CPU_ENDIAN(x)   (x)\r
+\r
+/* Converting of constants from CPU endian to little endian. */\r
+#define CCPU_ENDIAN_TO_LE16(x)  (x)\r
+#define CCPU_ENDIAN_TO_LE32(x)  (x)\r
+#define CCPU_ENDIAN_TO_LE64(x)  (x)\r
+\r
+#define ADDR_COPY_DST_SRC_16(dst, src)  ((dst) = (src))\r
+#define ADDR_COPY_DST_SRC_64(dst, src)  ((dst) = (src))\r
+\r
+/**\r
+ * \}\r
+ */\r
+\r
+#endif /* UTILS_COMPILER_H */\r
diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/asf/sam/utils/header_files/io.h b/FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/asf/sam/utils/header_files/io.h
new file mode 100644 (file)
index 0000000..4e91b8c
--- /dev/null
@@ -0,0 +1,90 @@
+/**\r
+ * \file\r
+ *\r
+ * \brief Arch file for SAM.\r
+ *\r
+ * This file defines common SAM series.\r
+ *\r
+ * Copyright (c) 2011-2012 Atmel Corporation. All rights reserved.\r
+ *\r
+ * \asf_license_start\r
+ *\r
+ * \page License\r
+ *\r
+ * Redistribution and use in source and binary forms, with or without\r
+ * modification, are permitted provided that the following conditions are met:\r
+ *\r
+ * 1. Redistributions of source code must retain the above copyright notice,\r
+ *    this list of conditions and the following disclaimer.\r
+ *\r
+ * 2. Redistributions in binary form must reproduce the above copyright notice,\r
+ *    this list of conditions and the following disclaimer in the documentation\r
+ *    and/or other materials provided with the distribution.\r
+ *\r
+ * 3. The name of Atmel may not be used to endorse or promote products derived\r
+ *    from this software without specific prior written permission.\r
+ *\r
+ * 4. This software may only be redistributed and used in connection with an\r
+ *    Atmel microcontroller product.\r
+ *\r
+ * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED\r
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\r
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE\r
+ * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR\r
+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\r
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS\r
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)\r
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,\r
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\r
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\r
+ * POSSIBILITY OF SUCH DAMAGE.\r
+ *\r
+ * \asf_license_stop\r
+ *\r
+ */\r
+\r
+#ifndef _SAM_IO_\r
+#define _SAM_IO_\r
+\r
+/* SAM3 family */\r
+\r
+/* SAM3S series */\r
+#if (SAM3S)\r
+# if (SAM3S8 || SAM3SD8)\r
+#  include "sam3s8.h"\r
+# else\r
+#  include "sam3s.h"\r
+# endif\r
+#endif\r
+\r
+/* SAM3U series */\r
+#if (SAM3U)\r
+#  include "sam3u.h"\r
+#endif\r
+\r
+/* SAM3N series */\r
+#if (SAM3N)\r
+#  include "sam3n.h"\r
+#endif\r
+\r
+/* SAM3XA series */\r
+#if (SAM3XA)\r
+#  include "sam3xa.h"\r
+#endif\r
+\r
+/* SAM4S series */\r
+#if (SAM4S)\r
+#  include "sam4s.h"\r
+#endif\r
+\r
+/* SAM4L series */\r
+#if (SAM4L)\r
+#  include "sam4l.h"\r
+#endif\r
+\r
+/* SAM4E series */\r
+#if (SAM4E)\r
+#  include "sam4e.h"\r
+#endif\r
+\r
+#endif /* _SAM_IO_ */\r
diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/asf/sam/utils/linker_scripts/sam4l/sam4l4/gcc/flash.ld b/FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/asf/sam/utils/linker_scripts/sam4l/sam4l4/gcc/flash.ld
new file mode 100644 (file)
index 0000000..a2d1197
--- /dev/null
@@ -0,0 +1,154 @@
+/**\r
+ * \file\r
+ *\r
+ * \brief Flash Linker script for SAM.\r
+ *\r
+ * Copyright (c) 2012 Atmel Corporation. All rights reserved.\r
+ *\r
+ * \asf_license_start\r
+ *\r
+ * Redistribution and use in source and binary forms, with or without\r
+ * modification, are permitted provided that the following conditions are met:\r
+ * \r
+ * 1. Redistributions of source code must retain the above copyright notice, \r
+ *    this list of conditions and the following disclaimer.\r
+ * \r
+ * 2. Redistributions in binary form must reproduce the above copyright notice,\r
+ *    this list of conditions and the following disclaimer in the documentation\r
+ *    and/or other materials provided with the distribution.\r
+ * \r
+ * 3. The name of Atmel may not be used to endorse or promote products derived\r
+ *    from this software without specific prior written permission.\r
+ * \r
+ * 4. This software may only be redistributed and used in connection with an \r
+ *    Atmel microcontroller product.\r
+ * \r
+ * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED\r
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\r
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE\r
+ * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR\r
+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\r
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS\r
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)\r
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,\r
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\r
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\r
+ * POSSIBILITY OF SUCH DAMAGE.\r
+ *\r
+ * \asf_license_stop\r
+ *\r
+ */\r
+\r
+OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")\r
+OUTPUT_ARCH(arm)\r
+SEARCH_DIR(.)\r
+\r
+/* Memory Spaces Definitions */\r
+MEMORY\r
+{\r
+       rom (rx)  : ORIGIN = 0x00000000, LENGTH = 0x00040000 /* flash, 256K */\r
+       ram (rwx) : ORIGIN = 0x20000000, LENGTH = 0x00008000 /* sram, 32K */\r
+}\r
+\r
+/* The stack size used by the application. NOTE: you need to adjust according to your application. */\r
+__stack_size__ = DEFINED(__stack_size__) ? __stack_size__ : 0x1000;\r
+\r
+/* Section Definitions */\r
+SECTIONS\r
+{\r
+    .text :\r
+    {\r
+        . = ALIGN(4);\r
+        _sfixed = .;\r
+        KEEP(*(.vectors .vectors.*))\r
+        *(.text .text.* .gnu.linkonce.t.*)\r
+        *(.glue_7t) *(.glue_7)\r
+        *(.rodata .rodata* .gnu.linkonce.r.*)\r
+        *(.ARM.extab* .gnu.linkonce.armextab.*)\r
+\r
+        /* Support C constructors, and C destructors in both user code\r
+           and the C library. This also provides support for C++ code. */\r
+        . = ALIGN(4);\r
+        KEEP(*(.init))\r
+        . = ALIGN(4);\r
+        __preinit_array_start = .;\r
+        KEEP (*(.preinit_array))\r
+        __preinit_array_end = .;\r
+\r
+        . = ALIGN(4);\r
+        __init_array_start = .;\r
+        KEEP (*(SORT(.init_array.*)))\r
+        KEEP (*(.init_array))\r
+        __init_array_end = .;\r
+\r
+        . = ALIGN(0x4);\r
+        KEEP (*crtbegin.o(.ctors))\r
+        KEEP (*(EXCLUDE_FILE (*crtend.o) .ctors))\r
+        KEEP (*(SORT(.ctors.*)))\r
+        KEEP (*crtend.o(.ctors))\r
+\r
+        . = ALIGN(4);\r
+        KEEP(*(.fini))\r
+\r
+        . = ALIGN(4);\r
+        __fini_array_start = .;\r
+        KEEP (*(.fini_array))\r
+        KEEP (*(SORT(.fini_array.*)))\r
+        __fini_array_end = .;\r
+\r
+        KEEP (*crtbegin.o(.dtors))\r
+        KEEP (*(EXCLUDE_FILE (*crtend.o) .dtors))\r
+        KEEP (*(SORT(.dtors.*)))\r
+        KEEP (*crtend.o(.dtors))\r
+\r
+        . = ALIGN(4);\r
+        _efixed = .;            /* End of text section */\r
+    } > rom\r
+\r
+    /* .ARM.exidx is sorted, so has to go in its own output section.  */\r
+    PROVIDE_HIDDEN (__exidx_start = .);\r
+    .ARM.exidx :\r
+    {\r
+      *(.ARM.exidx* .gnu.linkonce.armexidx.*)\r
+    } > rom\r
+    PROVIDE_HIDDEN (__exidx_end = .);\r
+\r
+    . = ALIGN(4);\r
+    _etext = .;\r
+\r
+    .relocate : AT (_etext)\r
+    {\r
+        . = ALIGN(4);\r
+        _srelocate = .;\r
+        *(.ramfunc .ramfunc.*);\r
+        *(.data .data.*);\r
+        . = ALIGN(4);\r
+        _erelocate = .;\r
+    } > ram\r
+\r
+    /* .bss section which is used for uninitialized data */\r
+    .bss (NOLOAD) :\r
+    {\r
+        . = ALIGN(4);\r
+        _sbss = . ;\r
+        _szero = .;\r
+        *(.bss .bss.*)\r
+        *(COMMON)\r
+        . = ALIGN(4);\r
+        _ebss = . ;\r
+        _ezero = .;\r
+    } > ram\r
+\r
+    /* stack section */\r
+    .stack (NOLOAD):\r
+    {\r
+        . = ALIGN(8);\r
+         _sstack = .;\r
+        . = . + __stack_size__;\r
+        . = ALIGN(8);\r
+        _estack = .;\r
+    } > ram\r
+\r
+    . = ALIGN(4);\r
+    _end = . ;\r
+}\r
diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/asf/sam/utils/make/Makefile.in b/FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/asf/sam/utils/make/Makefile.in
new file mode 100644 (file)
index 0000000..85fbe9b
--- /dev/null
@@ -0,0 +1,496 @@
+# List of available make goals:\r
+#\r
+# all                     Default target, builds the project\r
+# clean                   Clean up the project\r
+# rebuild                 Rebuild the project\r
+# debug_flash             Builds the project and debug in flash\r
+# debug_sram              Builds the project and debug in sram\r
+#\r
+# doc                     Build the documentation\r
+# cleandoc                Clean up the documentation\r
+# rebuilddoc              Rebuild the documentation\r
+#\r
+# \file\r
+#\r
+# Copyright (c) 2011 - 2012 Atmel Corporation. All rights reserved.\r
+#\r
+# \asf_license_start\r
+#\r
+# \page License\r
+#\r
+# Redistribution and use in source and binary forms, with or without\r
+# modification, are permitted provided that the following conditions are met:\r
+#\r
+# 1. Redistributions of source code must retain the above copyright notice,\r
+#    this list of conditions and the following disclaimer.\r
+#\r
+# 2. Redistributions in binary form must reproduce the above copyright notice,\r
+#    this list of conditions and the following disclaimer in the documentation\r
+#    and/or other materials provided with the distribution.\r
+#\r
+# 3. The name of Atmel may not be used to endorse or promote products derived\r
+#    from this software without specific prior written permission.\r
+#\r
+# 4. This software may only be redistributed and used in connection with an\r
+#    Atmel microcontroller product.\r
+#\r
+# THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED\r
+# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\r
+# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE\r
+# EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR\r
+# ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\r
+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS\r
+# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)\r
+# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,\r
+# STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\r
+# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\r
+# POSSIBILITY OF SUCH DAMAGE.\r
+#\r
+# \asf_license_stop\r
+#\r
+\r
+# Include the config.mk file from the current working path, e.g., where the\r
+# user called make.\r
+include config.mk\r
+\r
+# Tool to use to generate documentation from the source code\r
+DOCGEN          ?= doxygen\r
+\r
+# Look for source files relative to the top-level source directory\r
+VPATH           := $(PRJ_PATH)\r
+\r
+# Output target file\r
+project_type    := $(PROJECT_TYPE)\r
+\r
+# Output target file\r
+ifeq ($(project_type),flash)\r
+target          := $(TARGET_FLASH)\r
+linker_script   := $(PRJ_PATH)/$(LINKER_SCRIPT_FLASH)\r
+debug_script    := $(PRJ_PATH)/$(DEBUG_SCRIPT_FLASH)\r
+else\r
+target          := $(TARGET_SRAM)\r
+linker_script   := $(PRJ_PATH)/$(LINKER_SCRIPT_SRAM)\r
+debug_script    := $(PRJ_PATH)/$(DEBUG_SCRIPT_SRAM)\r
+endif\r
+\r
+# Output project name (target name minus suffix)\r
+project         := $(basename $(target))\r
+\r
+# Output target file (typically ELF or static library)\r
+ifeq ($(suffix $(target)),.a)\r
+target_type     := lib\r
+else\r
+ifeq ($(suffix $(target)),.elf)\r
+target_type     := elf\r
+else\r
+$(error "Target type $(target_type) is not supported")\r
+endif\r
+endif\r
+\r
+# Allow override of operating system detection. The user can add OS=Linux or\r
+# OS=Windows on the command line to explicit set the host OS.\r
+#\r
+# This allows to work around broken uname utility on certain systems.\r
+ifdef OS\r
+  ifeq ($(strip $(OS)), Linux)\r
+    os_type     := Linux\r
+  endif\r
+  ifeq (Windows,$(findstring Windows,$(OS)))\r
+    os_type     := windows32_64\r
+  endif\r
+endif\r
+\r
+#os_type         ?= $(strip $(shell uname))\r
+\r
+#ifeq ($(os_type),windows32)\r
+#os              := Windows\r
+#else\r
+#ifeq ($(os_type),windows64)\r
+#os              := Windows\r
+#else\r
+#ifeq ($(os_type),)\r
+#os              := Windows\r
+#else\r
+## Default to Linux style operating system. Both Cygwin and mingw are fully\r
+## compatible (for this Makefile) with Linux.\r
+#os              := Linux\r
+#endif\r
+#endif\r
+#endif\r
+\r
+ifeq ($(os_type),windows32_64)\r
+os              := Windows\r
+else\r
+ifeq ($(os_type),Linux)\r
+os              := Linux\r
+else\r
+os              := Linux\r
+endif\r
+endif\r
+\r
+# Output documentation directory and configuration file.\r
+docdir          := ../doxygen/html\r
+doccfg          := ../doxygen/doxyfile.doxygen\r
+\r
+CROSS           ?= arm-none-eabi-\r
+AR              := $(CROSS)ar\r
+AS              := $(CROSS)as\r
+CC              := $(CROSS)gcc\r
+CPP             := $(CROSS)gcc -E\r
+CXX             := $(CROSS)g++\r
+LD              := $(CROSS)g++\r
+NM              := $(CROSS)nm\r
+OBJCOPY         := $(CROSS)objcopy\r
+OBJDUMP         := $(CROSS)objdump\r
+SIZE            := $(CROSS)size\r
+GDB             := $(CROSS)gdb\r
+\r
+RM              := rm -f\r
+ifeq ($(os),Windows)\r
+#RMDIR           := rmdir /S /Q\r
+RMDIR           := rm  -rf\r
+else\r
+RMDIR           := rmdir -p --ignore-fail-on-non-empty\r
+endif\r
+\r
+# Strings for beautifying output\r
+MSG_CLEAN_FILES         = "RM      *.o *.d"\r
+MSG_CLEAN_DIRS          = "RMDIR   $(strip $(clean-dirs))"\r
+MSG_CLEAN_DOC           = "RMDIR   $(docdir)"\r
+MSG_MKDIR               = "MKDIR   $(dir $@)"\r
+\r
+MSG_INFO                = "INFO    "\r
+\r
+MSG_ARCHIVING           = "AR      $@"\r
+MSG_ASSEMBLING          = "AS      $@"\r
+MSG_BINARY_IMAGE        = "OBJCOPY $@"\r
+MSG_COMPILING           = "CC      $@"\r
+MSG_COMPILING_CXX       = "CXX     $@"\r
+MSG_EXTENDED_LISTING    = "OBJDUMP $@"\r
+MSG_IHEX_IMAGE          = "OBJCOPY $@"\r
+MSG_LINKING             = "LN      $@"\r
+MSG_PREPROCESSING       = "CPP     $@"\r
+MSG_SIZE                = "SIZE    $@"\r
+MSG_SYMBOL_TABLE        = "NM      $@"\r
+\r
+MSG_GENERATING_DOC      = "DOXYGEN $(docdir)"\r
+\r
+# Don't use make's built-in rules and variables\r
+MAKEFLAGS       += -rR\r
+\r
+# Don't print 'Entering directory ...'\r
+MAKEFLAGS       += --no-print-directory\r
+\r
+# Function for reversing the order of a list\r
+reverse = $(if $(1),$(call reverse,$(wordlist 2,$(words $(1)),$(1)))) $(firstword $(1))\r
+\r
+# Hide command output by default, but allow the user to override this\r
+# by adding V=1 on the command line.\r
+#\r
+# This is inspired by the Kbuild system used by the Linux kernel.\r
+ifdef V\r
+  ifeq ("$(origin V)", "command line")\r
+    VERBOSE = $(V)\r
+  endif\r
+endif\r
+ifndef VERBOSE\r
+  VERBOSE = 0\r
+endif\r
+\r
+ifeq ($(VERBOSE), 1)\r
+  Q =\r
+else\r
+#  Q = @\r
+  Q =\r
+endif\r
+\r
+arflags-gnu-y           := $(ARFLAGS)\r
+asflags-gnu-y           := $(ASFLAGS)\r
+cflags-gnu-y            := $(CFLAGS)\r
+cxxflags-gnu-y          := $(CXXFLAGS)\r
+cppflags-gnu-y          := $(CPPFLAGS)\r
+cpuflags-gnu-y          :=\r
+dbgflags-gnu-y          := $(DBGFLAGS)\r
+libflags-gnu-y          := $(foreach LIB,$(LIBS),-l$(LIB))\r
+ldflags-gnu-y           := $(LDFLAGS)\r
+flashflags-gnu-y        :=\r
+clean-files             :=\r
+clean-dirs              :=\r
+\r
+clean-files             += $(wildcard $(target) $(project).map)\r
+clean-files             += $(wildcard $(project).hex $(project).bin)\r
+clean-files             += $(wildcard $(project).lss $(project).sym)\r
+clean-files             += $(wildcard $(build))\r
+\r
+# Use pipes instead of temporary files for communication between processes\r
+cflags-gnu-y    += -pipe\r
+asflags-gnu-y   += -pipe\r
+ldflags-gnu-y   += -pipe\r
+\r
+# Archiver flags.\r
+arflags-gnu-y   += rcs\r
+\r
+# Always enable warnings. And be very careful about implicit\r
+# declarations.\r
+cflags-gnu-y    += -Wall -Wstrict-prototypes -Wmissing-prototypes\r
+cflags-gnu-y    += -Werror-implicit-function-declaration\r
+cxxflags-gnu-y  += -Wall\r
+# IAR doesn't allow arithmetic on void pointers, so warn about that.\r
+cflags-gnu-y    += -Wpointer-arith\r
+cxxflags-gnu-y  += -Wpointer-arith\r
+\r
+# Preprocessor flags.\r
+cppflags-gnu-y  += $(foreach INC,$(addprefix $(PRJ_PATH)/,$(INC_PATH)),-I$(INC))\r
+asflags-gnu-y   += $(foreach INC,$(addprefix $(PRJ_PATH)/,$(INC_PATH)),'-Wa,-I$(INC)')\r
+\r
+# CPU specific flags.\r
+cpuflags-gnu-y  += -mcpu=$(ARCH) -mthumb -D=__$(PART)__\r
+\r
+# Dependency file flags.\r
+depflags        = -MD -MP -MQ $@\r
+\r
+# Debug specific flags.\r
+ifdef BUILD_DEBUG_LEVEL\r
+dbgflags-gnu-y  += -g$(BUILD_DEBUG_LEVEL)\r
+else\r
+dbgflags-gnu-y  += -g3\r
+endif\r
+\r
+# Optimization specific flags.\r
+ifdef BUILD_OPTIMIZATION\r
+optflags-gnu-y  = -O$(BUILD_OPTIMIZATION)\r
+else\r
+optflags-gnu-y  = $(OPTIMIZATION)\r
+endif\r
+\r
+# Always preprocess assembler files.\r
+asflags-gnu-y   += -x assembler-with-cpp\r
+# Compile C files using the GNU99 standard.\r
+cflags-gnu-y    += -std=gnu99\r
+# Compile C++ files using the GNU++98 standard.\r
+cxxflags-gnu-y  += -std=gnu++98\r
+\r
+\r
+# Separate each function and data into its own separate section to allow\r
+# garbage collection of unused sections.\r
+cflags-gnu-y    += -ffunction-sections -fdata-sections\r
+cxxflags-gnu-y  += -ffunction-sections -fdata-sections\r
+\r
+# Various cflags.\r
+cflags-gnu-y += -Wchar-subscripts -Wcomment -Wformat=2 -Wimplicit-int\r
+cflags-gnu-y += -Wmain -Wparentheses\r
+cflags-gnu-y += -Wsequence-point -Wreturn-type -Wswitch -Wtrigraphs -Wunused\r
+cflags-gnu-y += -Wuninitialized -Wunknown-pragmas -Wfloat-equal -Wundef\r
+cflags-gnu-y += -Wshadow -Wbad-function-cast -Wwrite-strings\r
+cflags-gnu-y += -Wsign-compare -Waggregate-return \r
+cflags-gnu-y += -Wmissing-declarations\r
+cflags-gnu-y += -Wformat -Wmissing-format-attribute -Wno-deprecated-declarations\r
+cflags-gnu-y += -Wpacked -Wredundant-decls -Wnested-externs -Winline -Wlong-long\r
+cflags-gnu-y += -Wunreachable-code\r
+cflags-gnu-y += -Wcast-align\r
+cflags-gnu-y += --param max-inline-insns-single=500\r
+\r
+# To reduce application size use only integer printf function.\r
+cflags-gnu-y += -Dprintf=iprintf\r
+\r
+# Garbage collect unreferred sections when linking.\r
+ldflags-gnu-y   += -Wl,--gc-sections\r
+\r
+# Use the linker script if provided by the project.\r
+ifneq ($(strip $(linker_script)),)\r
+ldflags-gnu-y   += -Wl,-T $(linker_script)\r
+endif\r
+\r
+# Output a link map file and a cross reference table\r
+ldflags-gnu-y   += -Wl,-Map=$(project).map,--cref\r
+\r
+# Add library search paths relative to the top level directory.\r
+ldflags-gnu-y   += $(foreach _LIB_PATH,$(addprefix $(PRJ_PATH)/,$(LIB_PATH)),-L$(_LIB_PATH))\r
+\r
+a_flags  = $(cpuflags-gnu-y) $(depflags) $(cppflags-gnu-y) $(asflags-gnu-y) -D__ASSEMBLY__\r
+c_flags  = $(cpuflags-gnu-y) $(dbgflags-gnu-y) $(depflags) $(optflags-gnu-y) $(cppflags-gnu-y) $(cflags-gnu-y)\r
+cxx_flags= $(cpuflags-gnu-y) $(dbgflags-gnu-y) $(depflags) $(optflags-gnu-y) $(cppflags-gnu-y) $(cxxflags-gnu-y)\r
+l_flags  = -Wl,--entry=Reset_Handler -Wl,--cref $(cpuflags-gnu-y) $(optflags-gnu-y) $(ldflags-gnu-y)\r
+ar_flags = $(arflags-gnu-y)\r
+\r
+# Source files list and part informations must already be included before\r
+# running this makefile\r
+\r
+# If a custom build directory is specified, use it -- force trailing / in directory name.\r
+ifdef BUILD_DIR\r
+       build-dir       := $(dir $(BUILD_DIR))$(if $(notdir $(BUILD_DIR)),$(notdir $(BUILD_DIR))/)\r
+else\r
+       build-dir        =\r
+endif\r
+\r
+# Create object files list from source files list.\r
+obj-y                   := $(addprefix $(build-dir), $(addsuffix .o,$(basename $(CSRCS) $(ASSRCS))))\r
+# Create dependency files list from source files list.\r
+dep-files               := $(wildcard $(foreach f,$(obj-y),$(basename $(f)).d))\r
+\r
+clean-files             += $(wildcard $(obj-y))\r
+clean-files             += $(dep-files)\r
+\r
+clean-dirs              += $(call reverse,$(sort $(wildcard $(dir $(obj-y)))))\r
+\r
+.PHONY: all\r
+\r
+# Default target.\r
+.PHONY: all\r
+ifeq ($(project_type),all)\r
+all:\r
+       $(MAKE) all PROJECT_TYPE=flash\r
+       $(MAKE) all PROJECT_TYPE=sram\r
+else\r
+ifeq ($(target_type),lib)\r
+all: $(target) $(project).lss $(project).sym\r
+else\r
+ifeq ($(target_type),elf)\r
+all: $(target) $(project).lss $(project).sym $(project).hex $(project).bin\r
+endif\r
+endif\r
+endif\r
+\r
+# Default target.\r
+.PHONY: os\r
+os:\r
+       @echo OS '$(OS)'\r
+       @echo os type '$(os_type)'\r
+       @echo os '$(os)'\r
+       @echo '$(findstring Windows,$(OS))'\r
+\r
+# Clean up the project.\r
+.PHONY: clean\r
+clean:\r
+       @$(if $(strip $(clean-files)),echo $(MSG_CLEAN_FILES))\r
+       $(if $(strip $(clean-files)),$(Q)$(RM) $(clean-files),)\r
+       @$(if $(strip $(clean-dirs)),echo $(MSG_CLEAN_DIRS))\r
+# Remove created directories, and make sure we only remove existing\r
+# directories, since recursive rmdir might help us a bit on the way.\r
+ifeq ($(os),Windows)\r
+       $(Q)$(if $(strip $(clean-dirs)),                        \\r
+                       $(RMDIR) $(strip $(subst /,\,$(clean-dirs))))\r
+else\r
+       $(Q)$(if $(strip $(clean-dirs)),                        \\r
+               for directory in $(strip $(clean-dirs)); do     \\r
+                       if [ -d "$$directory" ]; then           \\r
+                               $(RMDIR) $$directory;           \\r
+                       fi                                      \\r
+               done                                            \\r
+       )\r
+endif\r
+\r
+# Rebuild the project.\r
+.PHONY: rebuild\r
+rebuild: clean all\r
+\r
+# Debug the project in flash.\r
+.PHONY: debug_flash\r
+debug_flash: all\r
+       $(GDB) -x "$(PRJ_PATH)/$(DEBUG_SCRIPT_FLASH)" -ex "reset" -readnow -se $(TARGET_FLASH)\r
+\r
+# Debug the project in sram.\r
+.PHONY: debug_sram\r
+debug_sram: all\r
+       $(GDB) -x "$(PRJ_PATH)/$(DEBUG_SCRIPT_SRAM)" -ex "reset" -readnow -se $(TARGET_SRAM)\r
+\r
+.PHONY: objfiles\r
+objfiles: $(obj-y)\r
+\r
+# Create object files from C source files.\r
+$(build-dir)%.o: %.c $(PRJ_PATH)/sam/utils/make/Makefile.in config.mk\r
+       @echo $(MSG_MKDIR)\r
+ifeq ($(os),Windows)\r
+       -mkdir $(subst /,\,$(dir $@))\r
+else\r
+       -mkdir -p $(dir $@)\r
+endif\r
+       @echo $(MSG_COMPILING)\r
+       $(Q)$(CC) $(c_flags) -c $< -o $@\r
+\r
+# Create object files from C++ source files.\r
+$(build-dir)%.o: %.cpp $(PRJ_PATH)/sam/utils/make/Makefile.in config.mk\r
+       @echo $(MSG_MKDIR)\r
+ifeq ($(os),Windows)\r
+       -mkdir $(subst /,\,$(dir $@))\r
+else\r
+       -mkdir -p $(dir $@)\r
+endif\r
+       @echo $(MSG_COMPILING_CXX)\r
+       $(Q)$(CXX) $(cxx_flags) -c $< -o $@\r
+\r
+# Preprocess and assemble: create object files from assembler source files.\r
+$(build-dir)%.o: %.S $(PRJ_PATH)/sam/utils/make/Makefile.in config.mk\r
+       @echo $(MSG_MKDIR)\r
+ifeq ($(os),Windows)\r
+       -mkdir $(subst /,\,$(dir $@))\r
+else\r
+       -mkdir -p $(dir $@)\r
+endif\r
+       @echo $(MSG_ASSEMBLING)\r
+       $(Q)$(CC) $(a_flags) -c $< -o $@\r
+\r
+# Include all dependency files to add depedency to all header files in use.\r
+include $(dep-files)\r
+\r
+ifeq ($(target_type),lib)\r
+# Archive object files into an archive\r
+$(target): $(PRJ_PATH)/sam/utils/make/Makefile.in config.mk $(obj-y)\r
+       @echo $(MSG_ARCHIVING)\r
+       $(Q)$(AR) $(ar_flags) $@ $(obj-y)\r
+       @echo $(MSG_SIZE)\r
+       $(Q)$(SIZE) -Bxt $@\r
+else\r
+ifeq ($(target_type),elf)\r
+# Link the object files into an ELF file. Also make sure the target is rebuilt\r
+# if the common Makefile.in or project config.mk is changed.\r
+$(target): $(linker_script) $(PRJ_PATH)/sam/utils/make/Makefile.in config.mk $(obj-y)\r
+       @echo $(MSG_LINKING)\r
+       @echo $(Q)$(LD) $(l_flags) $(obj-y) $(libflags-gnu-y) -o $@\r
+       $(Q)$(LD) $(l_flags) $(obj-y) $(libflags-gnu-y) -o $@\r
+       @echo $(MSG_SIZE)\r
+       $(Q)$(SIZE) -Ax $@\r
+       $(Q)$(SIZE) -Bx $@\r
+endif\r
+endif\r
+\r
+# Create extended function listing from target output file.\r
+%.lss: $(target)\r
+       @echo $(MSG_EXTENDED_LISTING)\r
+       $(Q)$(OBJDUMP) -h -S $< > $@\r
+\r
+# Create symbol table from target output file.\r
+%.sym: $(target)\r
+       @echo $(MSG_SYMBOL_TABLE)\r
+       $(Q)$(NM) -n $< > $@\r
+\r
+# Create Intel HEX image from ELF output file.\r
+%.hex: $(target)\r
+       @echo $(MSG_IHEX_IMAGE)\r
+       $(Q)$(OBJCOPY) -O ihex $(flashflags-gnu-y)  $< $@\r
+\r
+# Create binary image from ELF output file.\r
+%.bin: $(target)\r
+       @echo $(MSG_BINARY_IMAGE)\r
+       $(Q)$(OBJCOPY) -O binary $< $@\r
+\r
+# Provide information about the detected host operating system.\r
+.SECONDARY: info-os\r
+info-os:\r
+       @echo $(MSG_INFO)$(os) build host detected\r
+\r
+# Build Doxygen generated documentation.\r
+.PHONY: doc\r
+doc:\r
+       @echo $(MSG_GENERATING_DOC)\r
+       $(Q)cd $(dir $(doccfg)) && $(DOCGEN) $(notdir $(doccfg))\r
+\r
+# Clean Doxygen generated documentation.\r
+.PHONY: cleandoc\r
+cleandoc:\r
+       @$(if $(wildcard $(docdir)),echo $(MSG_CLEAN_DOC))\r
+       $(Q)$(if $(wildcard $(docdir)),$(RM) --recursive $(docdir))\r
+\r
+# Rebuild the Doxygen generated documentation.\r
+.PHONY: rebuilddoc\r
+rebuilddoc: cleandoc doc\r
diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/asf/sam/utils/preprocessor/mrepeat.h b/FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/asf/sam/utils/preprocessor/mrepeat.h
new file mode 100644 (file)
index 0000000..954dd5f
--- /dev/null
@@ -0,0 +1,336 @@
+/**\r
+ * \file\r
+ *\r
+ * \brief Preprocessor macro repeating utils.\r
+ *\r
+ * Copyright (c) 2010-2012 Atmel Corporation. All rights reserved.\r
+ *\r
+ * \asf_license_start\r
+ *\r
+ * \page License\r
+ *\r
+ * Redistribution and use in source and binary forms, with or without\r
+ * modification, are permitted provided that the following conditions are met:\r
+ *\r
+ * 1. Redistributions of source code must retain the above copyright notice,\r
+ *    this list of conditions and the following disclaimer.\r
+ *\r
+ * 2. Redistributions in binary form must reproduce the above copyright notice,\r
+ *    this list of conditions and the following disclaimer in the documentation\r
+ *    and/or other materials provided with the distribution.\r
+ *\r
+ * 3. The name of Atmel may not be used to endorse or promote products derived\r
+ *    from this software without specific prior written permission.\r
+ *\r
+ * 4. This software may only be redistributed and used in connection with an\r
+ *    Atmel microcontroller product.\r
+ *\r
+ * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED\r
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\r
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE\r
+ * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR\r
+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\r
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS\r
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)\r
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,\r
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\r
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\r
+ * POSSIBILITY OF SUCH DAMAGE.\r
+ *\r
+ * \asf_license_stop\r
+ *\r
+ */\r
+\r
+#ifndef _MREPEAT_H_\r
+#define _MREPEAT_H_\r
+\r
+/**\r
+ * \defgroup group_sam_utils_mrepeat Preprocessor - Macro Repeat\r
+ *\r
+ * \ingroup group_sam_utils\r
+ *\r
+ * \{\r
+ */\r
+\r
+#include "preprocessor.h"\r
+\r
+\r
+//! Maximal number of repetitions supported by MREPEAT.\r
+#define MREPEAT_LIMIT   256\r
+\r
+/*! \brief Macro repeat.\r
+ *\r
+ * This macro represents a horizontal repetition construct.\r
+ *\r
+ * \param count  The number of repetitious calls to macro. Valid values range from 0 to MREPEAT_LIMIT.\r
+ * \param macro  A binary operation of the form macro(n, data). This macro is expanded by MREPEAT with\r
+ *               the current repetition number and the auxiliary data argument.\r
+ * \param data   Auxiliary data passed to macro.\r
+ *\r
+ * \return       <tt>macro(0, data) macro(1, data) ... macro(count - 1, data)</tt>\r
+ */\r
+#define MREPEAT(count, macro, data)         TPASTE2(MREPEAT, count)(macro, data)\r
+\r
+#define MREPEAT0(  macro, data)\r
+#define MREPEAT1(  macro, data)       MREPEAT0(  macro, data)   macro(  0, data)\r
+#define MREPEAT2(  macro, data)       MREPEAT1(  macro, data)   macro(  1, data)\r
+#define MREPEAT3(  macro, data)       MREPEAT2(  macro, data)   macro(  2, data)\r
+#define MREPEAT4(  macro, data)       MREPEAT3(  macro, data)   macro(  3, data)\r
+#define MREPEAT5(  macro, data)       MREPEAT4(  macro, data)   macro(  4, data)\r
+#define MREPEAT6(  macro, data)       MREPEAT5(  macro, data)   macro(  5, data)\r
+#define MREPEAT7(  macro, data)       MREPEAT6(  macro, data)   macro(  6, data)\r
+#define MREPEAT8(  macro, data)       MREPEAT7(  macro, data)   macro(  7, data)\r
+#define MREPEAT9(  macro, data)       MREPEAT8(  macro, data)   macro(  8, data)\r
+#define MREPEAT10( macro, data)       MREPEAT9(  macro, data)   macro(  9, data)\r
+#define MREPEAT11( macro, data)       MREPEAT10( macro, data)   macro( 10, data)\r
+#define MREPEAT12( macro, data)       MREPEAT11( macro, data)   macro( 11, data)\r
+#define MREPEAT13( macro, data)       MREPEAT12( macro, data)   macro( 12, data)\r
+#define MREPEAT14( macro, data)       MREPEAT13( macro, data)   macro( 13, data)\r
+#define MREPEAT15( macro, data)       MREPEAT14( macro, data)   macro( 14, data)\r
+#define MREPEAT16( macro, data)       MREPEAT15( macro, data)   macro( 15, data)\r
+#define MREPEAT17( macro, data)       MREPEAT16( macro, data)   macro( 16, data)\r
+#define MREPEAT18( macro, data)       MREPEAT17( macro, data)   macro( 17, data)\r
+#define MREPEAT19( macro, data)       MREPEAT18( macro, data)   macro( 18, data)\r
+#define MREPEAT20( macro, data)       MREPEAT19( macro, data)   macro( 19, data)\r
+#define MREPEAT21( macro, data)       MREPEAT20( macro, data)   macro( 20, data)\r
+#define MREPEAT22( macro, data)       MREPEAT21( macro, data)   macro( 21, data)\r
+#define MREPEAT23( macro, data)       MREPEAT22( macro, data)   macro( 22, data)\r
+#define MREPEAT24( macro, data)       MREPEAT23( macro, data)   macro( 23, data)\r
+#define MREPEAT25( macro, data)       MREPEAT24( macro, data)   macro( 24, data)\r
+#define MREPEAT26( macro, data)       MREPEAT25( macro, data)   macro( 25, data)\r
+#define MREPEAT27( macro, data)       MREPEAT26( macro, data)   macro( 26, data)\r
+#define MREPEAT28( macro, data)       MREPEAT27( macro, data)   macro( 27, data)\r
+#define MREPEAT29( macro, data)       MREPEAT28( macro, data)   macro( 28, data)\r
+#define MREPEAT30( macro, data)       MREPEAT29( macro, data)   macro( 29, data)\r
+#define MREPEAT31( macro, data)       MREPEAT30( macro, data)   macro( 30, data)\r
+#define MREPEAT32( macro, data)       MREPEAT31( macro, data)   macro( 31, data)\r
+#define MREPEAT33( macro, data)       MREPEAT32( macro, data)   macro( 32, data)\r
+#define MREPEAT34( macro, data)       MREPEAT33( macro, data)   macro( 33, data)\r
+#define MREPEAT35( macro, data)       MREPEAT34( macro, data)   macro( 34, data)\r
+#define MREPEAT36( macro, data)       MREPEAT35( macro, data)   macro( 35, data)\r
+#define MREPEAT37( macro, data)       MREPEAT36( macro, data)   macro( 36, data)\r
+#define MREPEAT38( macro, data)       MREPEAT37( macro, data)   macro( 37, data)\r
+#define MREPEAT39( macro, data)       MREPEAT38( macro, data)   macro( 38, data)\r
+#define MREPEAT40( macro, data)       MREPEAT39( macro, data)   macro( 39, data)\r
+#define MREPEAT41( macro, data)       MREPEAT40( macro, data)   macro( 40, data)\r
+#define MREPEAT42( macro, data)       MREPEAT41( macro, data)   macro( 41, data)\r
+#define MREPEAT43( macro, data)       MREPEAT42( macro, data)   macro( 42, data)\r
+#define MREPEAT44( macro, data)       MREPEAT43( macro, data)   macro( 43, data)\r
+#define MREPEAT45( macro, data)       MREPEAT44( macro, data)   macro( 44, data)\r
+#define MREPEAT46( macro, data)       MREPEAT45( macro, data)   macro( 45, data)\r
+#define MREPEAT47( macro, data)       MREPEAT46( macro, data)   macro( 46, data)\r
+#define MREPEAT48( macro, data)       MREPEAT47( macro, data)   macro( 47, data)\r
+#define MREPEAT49( macro, data)       MREPEAT48( macro, data)   macro( 48, data)\r
+#define MREPEAT50( macro, data)       MREPEAT49( macro, data)   macro( 49, data)\r
+#define MREPEAT51( macro, data)       MREPEAT50( macro, data)   macro( 50, data)\r
+#define MREPEAT52( macro, data)       MREPEAT51( macro, data)   macro( 51, data)\r
+#define MREPEAT53( macro, data)       MREPEAT52( macro, data)   macro( 52, data)\r
+#define MREPEAT54( macro, data)       MREPEAT53( macro, data)   macro( 53, data)\r
+#define MREPEAT55( macro, data)       MREPEAT54( macro, data)   macro( 54, data)\r
+#define MREPEAT56( macro, data)       MREPEAT55( macro, data)   macro( 55, data)\r
+#define MREPEAT57( macro, data)       MREPEAT56( macro, data)   macro( 56, data)\r
+#define MREPEAT58( macro, data)       MREPEAT57( macro, data)   macro( 57, data)\r
+#define MREPEAT59( macro, data)       MREPEAT58( macro, data)   macro( 58, data)\r
+#define MREPEAT60( macro, data)       MREPEAT59( macro, data)   macro( 59, data)\r
+#define MREPEAT61( macro, data)       MREPEAT60( macro, data)   macro( 60, data)\r
+#define MREPEAT62( macro, data)       MREPEAT61( macro, data)   macro( 61, data)\r
+#define MREPEAT63( macro, data)       MREPEAT62( macro, data)   macro( 62, data)\r
+#define MREPEAT64( macro, data)       MREPEAT63( macro, data)   macro( 63, data)\r
+#define MREPEAT65( macro, data)       MREPEAT64( macro, data)   macro( 64, data)\r
+#define MREPEAT66( macro, data)       MREPEAT65( macro, data)   macro( 65, data)\r
+#define MREPEAT67( macro, data)       MREPEAT66( macro, data)   macro( 66, data)\r
+#define MREPEAT68( macro, data)       MREPEAT67( macro, data)   macro( 67, data)\r
+#define MREPEAT69( macro, data)       MREPEAT68( macro, data)   macro( 68, data)\r
+#define MREPEAT70( macro, data)       MREPEAT69( macro, data)   macro( 69, data)\r
+#define MREPEAT71( macro, data)       MREPEAT70( macro, data)   macro( 70, data)\r
+#define MREPEAT72( macro, data)       MREPEAT71( macro, data)   macro( 71, data)\r
+#define MREPEAT73( macro, data)       MREPEAT72( macro, data)   macro( 72, data)\r
+#define MREPEAT74( macro, data)       MREPEAT73( macro, data)   macro( 73, data)\r
+#define MREPEAT75( macro, data)       MREPEAT74( macro, data)   macro( 74, data)\r
+#define MREPEAT76( macro, data)       MREPEAT75( macro, data)   macro( 75, data)\r
+#define MREPEAT77( macro, data)       MREPEAT76( macro, data)   macro( 76, data)\r
+#define MREPEAT78( macro, data)       MREPEAT77( macro, data)   macro( 77, data)\r
+#define MREPEAT79( macro, data)       MREPEAT78( macro, data)   macro( 78, data)\r
+#define MREPEAT80( macro, data)       MREPEAT79( macro, data)   macro( 79, data)\r
+#define MREPEAT81( macro, data)       MREPEAT80( macro, data)   macro( 80, data)\r
+#define MREPEAT82( macro, data)       MREPEAT81( macro, data)   macro( 81, data)\r
+#define MREPEAT83( macro, data)       MREPEAT82( macro, data)   macro( 82, data)\r
+#define MREPEAT84( macro, data)       MREPEAT83( macro, data)   macro( 83, data)\r
+#define MREPEAT85( macro, data)       MREPEAT84( macro, data)   macro( 84, data)\r
+#define MREPEAT86( macro, data)       MREPEAT85( macro, data)   macro( 85, data)\r
+#define MREPEAT87( macro, data)       MREPEAT86( macro, data)   macro( 86, data)\r
+#define MREPEAT88( macro, data)       MREPEAT87( macro, data)   macro( 87, data)\r
+#define MREPEAT89( macro, data)       MREPEAT88( macro, data)   macro( 88, data)\r
+#define MREPEAT90( macro, data)       MREPEAT89( macro, data)   macro( 89, data)\r
+#define MREPEAT91( macro, data)       MREPEAT90( macro, data)   macro( 90, data)\r
+#define MREPEAT92( macro, data)       MREPEAT91( macro, data)   macro( 91, data)\r
+#define MREPEAT93( macro, data)       MREPEAT92( macro, data)   macro( 92, data)\r
+#define MREPEAT94( macro, data)       MREPEAT93( macro, data)   macro( 93, data)\r
+#define MREPEAT95( macro, data)       MREPEAT94( macro, data)   macro( 94, data)\r
+#define MREPEAT96( macro, data)       MREPEAT95( macro, data)   macro( 95, data)\r
+#define MREPEAT97( macro, data)       MREPEAT96( macro, data)   macro( 96, data)\r
+#define MREPEAT98( macro, data)       MREPEAT97( macro, data)   macro( 97, data)\r
+#define MREPEAT99( macro, data)       MREPEAT98( macro, data)   macro( 98, data)\r
+#define MREPEAT100(macro, data)       MREPEAT99( macro, data)   macro( 99, data)\r
+#define MREPEAT101(macro, data)       MREPEAT100(macro, data)   macro(100, data)\r
+#define MREPEAT102(macro, data)       MREPEAT101(macro, data)   macro(101, data)\r
+#define MREPEAT103(macro, data)       MREPEAT102(macro, data)   macro(102, data)\r
+#define MREPEAT104(macro, data)       MREPEAT103(macro, data)   macro(103, data)\r
+#define MREPEAT105(macro, data)       MREPEAT104(macro, data)   macro(104, data)\r
+#define MREPEAT106(macro, data)       MREPEAT105(macro, data)   macro(105, data)\r
+#define MREPEAT107(macro, data)       MREPEAT106(macro, data)   macro(106, data)\r
+#define MREPEAT108(macro, data)       MREPEAT107(macro, data)   macro(107, data)\r
+#define MREPEAT109(macro, data)       MREPEAT108(macro, data)   macro(108, data)\r
+#define MREPEAT110(macro, data)       MREPEAT109(macro, data)   macro(109, data)\r
+#define MREPEAT111(macro, data)       MREPEAT110(macro, data)   macro(110, data)\r
+#define MREPEAT112(macro, data)       MREPEAT111(macro, data)   macro(111, data)\r
+#define MREPEAT113(macro, data)       MREPEAT112(macro, data)   macro(112, data)\r
+#define MREPEAT114(macro, data)       MREPEAT113(macro, data)   macro(113, data)\r
+#define MREPEAT115(macro, data)       MREPEAT114(macro, data)   macro(114, data)\r
+#define MREPEAT116(macro, data)       MREPEAT115(macro, data)   macro(115, data)\r
+#define MREPEAT117(macro, data)       MREPEAT116(macro, data)   macro(116, data)\r
+#define MREPEAT118(macro, data)       MREPEAT117(macro, data)   macro(117, data)\r
+#define MREPEAT119(macro, data)       MREPEAT118(macro, data)   macro(118, data)\r
+#define MREPEAT120(macro, data)       MREPEAT119(macro, data)   macro(119, data)\r
+#define MREPEAT121(macro, data)       MREPEAT120(macro, data)   macro(120, data)\r
+#define MREPEAT122(macro, data)       MREPEAT121(macro, data)   macro(121, data)\r
+#define MREPEAT123(macro, data)       MREPEAT122(macro, data)   macro(122, data)\r
+#define MREPEAT124(macro, data)       MREPEAT123(macro, data)   macro(123, data)\r
+#define MREPEAT125(macro, data)       MREPEAT124(macro, data)   macro(124, data)\r
+#define MREPEAT126(macro, data)       MREPEAT125(macro, data)   macro(125, data)\r
+#define MREPEAT127(macro, data)       MREPEAT126(macro, data)   macro(126, data)\r
+#define MREPEAT128(macro, data)       MREPEAT127(macro, data)   macro(127, data)\r
+#define MREPEAT129(macro, data)       MREPEAT128(macro, data)   macro(128, data)\r
+#define MREPEAT130(macro, data)       MREPEAT129(macro, data)   macro(129, data)\r
+#define MREPEAT131(macro, data)       MREPEAT130(macro, data)   macro(130, data)\r
+#define MREPEAT132(macro, data)       MREPEAT131(macro, data)   macro(131, data)\r
+#define MREPEAT133(macro, data)       MREPEAT132(macro, data)   macro(132, data)\r
+#define MREPEAT134(macro, data)       MREPEAT133(macro, data)   macro(133, data)\r
+#define MREPEAT135(macro, data)       MREPEAT134(macro, data)   macro(134, data)\r
+#define MREPEAT136(macro, data)       MREPEAT135(macro, data)   macro(135, data)\r
+#define MREPEAT137(macro, data)       MREPEAT136(macro, data)   macro(136, data)\r
+#define MREPEAT138(macro, data)       MREPEAT137(macro, data)   macro(137, data)\r
+#define MREPEAT139(macro, data)       MREPEAT138(macro, data)   macro(138, data)\r
+#define MREPEAT140(macro, data)       MREPEAT139(macro, data)   macro(139, data)\r
+#define MREPEAT141(macro, data)       MREPEAT140(macro, data)   macro(140, data)\r
+#define MREPEAT142(macro, data)       MREPEAT141(macro, data)   macro(141, data)\r
+#define MREPEAT143(macro, data)       MREPEAT142(macro, data)   macro(142, data)\r
+#define MREPEAT144(macro, data)       MREPEAT143(macro, data)   macro(143, data)\r
+#define MREPEAT145(macro, data)       MREPEAT144(macro, data)   macro(144, data)\r
+#define MREPEAT146(macro, data)       MREPEAT145(macro, data)   macro(145, data)\r
+#define MREPEAT147(macro, data)       MREPEAT146(macro, data)   macro(146, data)\r
+#define MREPEAT148(macro, data)       MREPEAT147(macro, data)   macro(147, data)\r
+#define MREPEAT149(macro, data)       MREPEAT148(macro, data)   macro(148, data)\r
+#define MREPEAT150(macro, data)       MREPEAT149(macro, data)   macro(149, data)\r
+#define MREPEAT151(macro, data)       MREPEAT150(macro, data)   macro(150, data)\r
+#define MREPEAT152(macro, data)       MREPEAT151(macro, data)   macro(151, data)\r
+#define MREPEAT153(macro, data)       MREPEAT152(macro, data)   macro(152, data)\r
+#define MREPEAT154(macro, data)       MREPEAT153(macro, data)   macro(153, data)\r
+#define MREPEAT155(macro, data)       MREPEAT154(macro, data)   macro(154, data)\r
+#define MREPEAT156(macro, data)       MREPEAT155(macro, data)   macro(155, data)\r
+#define MREPEAT157(macro, data)       MREPEAT156(macro, data)   macro(156, data)\r
+#define MREPEAT158(macro, data)       MREPEAT157(macro, data)   macro(157, data)\r
+#define MREPEAT159(macro, data)       MREPEAT158(macro, data)   macro(158, data)\r
+#define MREPEAT160(macro, data)       MREPEAT159(macro, data)   macro(159, data)\r
+#define MREPEAT161(macro, data)       MREPEAT160(macro, data)   macro(160, data)\r
+#define MREPEAT162(macro, data)       MREPEAT161(macro, data)   macro(161, data)\r
+#define MREPEAT163(macro, data)       MREPEAT162(macro, data)   macro(162, data)\r
+#define MREPEAT164(macro, data)       MREPEAT163(macro, data)   macro(163, data)\r
+#define MREPEAT165(macro, data)       MREPEAT164(macro, data)   macro(164, data)\r
+#define MREPEAT166(macro, data)       MREPEAT165(macro, data)   macro(165, data)\r
+#define MREPEAT167(macro, data)       MREPEAT166(macro, data)   macro(166, data)\r
+#define MREPEAT168(macro, data)       MREPEAT167(macro, data)   macro(167, data)\r
+#define MREPEAT169(macro, data)       MREPEAT168(macro, data)   macro(168, data)\r
+#define MREPEAT170(macro, data)       MREPEAT169(macro, data)   macro(169, data)\r
+#define MREPEAT171(macro, data)       MREPEAT170(macro, data)   macro(170, data)\r
+#define MREPEAT172(macro, data)       MREPEAT171(macro, data)   macro(171, data)\r
+#define MREPEAT173(macro, data)       MREPEAT172(macro, data)   macro(172, data)\r
+#define MREPEAT174(macro, data)       MREPEAT173(macro, data)   macro(173, data)\r
+#define MREPEAT175(macro, data)       MREPEAT174(macro, data)   macro(174, data)\r
+#define MREPEAT176(macro, data)       MREPEAT175(macro, data)   macro(175, data)\r
+#define MREPEAT177(macro, data)       MREPEAT176(macro, data)   macro(176, data)\r
+#define MREPEAT178(macro, data)       MREPEAT177(macro, data)   macro(177, data)\r
+#define MREPEAT179(macro, data)       MREPEAT178(macro, data)   macro(178, data)\r
+#define MREPEAT180(macro, data)       MREPEAT179(macro, data)   macro(179, data)\r
+#define MREPEAT181(macro, data)       MREPEAT180(macro, data)   macro(180, data)\r
+#define MREPEAT182(macro, data)       MREPEAT181(macro, data)   macro(181, data)\r
+#define MREPEAT183(macro, data)       MREPEAT182(macro, data)   macro(182, data)\r
+#define MREPEAT184(macro, data)       MREPEAT183(macro, data)   macro(183, data)\r
+#define MREPEAT185(macro, data)       MREPEAT184(macro, data)   macro(184, data)\r
+#define MREPEAT186(macro, data)       MREPEAT185(macro, data)   macro(185, data)\r
+#define MREPEAT187(macro, data)       MREPEAT186(macro, data)   macro(186, data)\r
+#define MREPEAT188(macro, data)       MREPEAT187(macro, data)   macro(187, data)\r
+#define MREPEAT189(macro, data)       MREPEAT188(macro, data)   macro(188, data)\r
+#define MREPEAT190(macro, data)       MREPEAT189(macro, data)   macro(189, data)\r
+#define MREPEAT191(macro, data)       MREPEAT190(macro, data)   macro(190, data)\r
+#define MREPEAT192(macro, data)       MREPEAT191(macro, data)   macro(191, data)\r
+#define MREPEAT193(macro, data)       MREPEAT192(macro, data)   macro(192, data)\r
+#define MREPEAT194(macro, data)       MREPEAT193(macro, data)   macro(193, data)\r
+#define MREPEAT195(macro, data)       MREPEAT194(macro, data)   macro(194, data)\r
+#define MREPEAT196(macro, data)       MREPEAT195(macro, data)   macro(195, data)\r
+#define MREPEAT197(macro, data)       MREPEAT196(macro, data)   macro(196, data)\r
+#define MREPEAT198(macro, data)       MREPEAT197(macro, data)   macro(197, data)\r
+#define MREPEAT199(macro, data)       MREPEAT198(macro, data)   macro(198, data)\r
+#define MREPEAT200(macro, data)       MREPEAT199(macro, data)   macro(199, data)\r
+#define MREPEAT201(macro, data)       MREPEAT200(macro, data)   macro(200, data)\r
+#define MREPEAT202(macro, data)       MREPEAT201(macro, data)   macro(201, data)\r
+#define MREPEAT203(macro, data)       MREPEAT202(macro, data)   macro(202, data)\r
+#define MREPEAT204(macro, data)       MREPEAT203(macro, data)   macro(203, data)\r
+#define MREPEAT205(macro, data)       MREPEAT204(macro, data)   macro(204, data)\r
+#define MREPEAT206(macro, data)       MREPEAT205(macro, data)   macro(205, data)\r
+#define MREPEAT207(macro, data)       MREPEAT206(macro, data)   macro(206, data)\r
+#define MREPEAT208(macro, data)       MREPEAT207(macro, data)   macro(207, data)\r
+#define MREPEAT209(macro, data)       MREPEAT208(macro, data)   macro(208, data)\r
+#define MREPEAT210(macro, data)       MREPEAT209(macro, data)   macro(209, data)\r
+#define MREPEAT211(macro, data)       MREPEAT210(macro, data)   macro(210, data)\r
+#define MREPEAT212(macro, data)       MREPEAT211(macro, data)   macro(211, data)\r
+#define MREPEAT213(macro, data)       MREPEAT212(macro, data)   macro(212, data)\r
+#define MREPEAT214(macro, data)       MREPEAT213(macro, data)   macro(213, data)\r
+#define MREPEAT215(macro, data)       MREPEAT214(macro, data)   macro(214, data)\r
+#define MREPEAT216(macro, data)       MREPEAT215(macro, data)   macro(215, data)\r
+#define MREPEAT217(macro, data)       MREPEAT216(macro, data)   macro(216, data)\r
+#define MREPEAT218(macro, data)       MREPEAT217(macro, data)   macro(217, data)\r
+#define MREPEAT219(macro, data)       MREPEAT218(macro, data)   macro(218, data)\r
+#define MREPEAT220(macro, data)       MREPEAT219(macro, data)   macro(219, data)\r
+#define MREPEAT221(macro, data)       MREPEAT220(macro, data)   macro(220, data)\r
+#define MREPEAT222(macro, data)       MREPEAT221(macro, data)   macro(221, data)\r
+#define MREPEAT223(macro, data)       MREPEAT222(macro, data)   macro(222, data)\r
+#define MREPEAT224(macro, data)       MREPEAT223(macro, data)   macro(223, data)\r
+#define MREPEAT225(macro, data)       MREPEAT224(macro, data)   macro(224, data)\r
+#define MREPEAT226(macro, data)       MREPEAT225(macro, data)   macro(225, data)\r
+#define MREPEAT227(macro, data)       MREPEAT226(macro, data)   macro(226, data)\r
+#define MREPEAT228(macro, data)       MREPEAT227(macro, data)   macro(227, data)\r
+#define MREPEAT229(macro, data)       MREPEAT228(macro, data)   macro(228, data)\r
+#define MREPEAT230(macro, data)       MREPEAT229(macro, data)   macro(229, data)\r
+#define MREPEAT231(macro, data)       MREPEAT230(macro, data)   macro(230, data)\r
+#define MREPEAT232(macro, data)       MREPEAT231(macro, data)   macro(231, data)\r
+#define MREPEAT233(macro, data)       MREPEAT232(macro, data)   macro(232, data)\r
+#define MREPEAT234(macro, data)       MREPEAT233(macro, data)   macro(233, data)\r
+#define MREPEAT235(macro, data)       MREPEAT234(macro, data)   macro(234, data)\r
+#define MREPEAT236(macro, data)       MREPEAT235(macro, data)   macro(235, data)\r
+#define MREPEAT237(macro, data)       MREPEAT236(macro, data)   macro(236, data)\r
+#define MREPEAT238(macro, data)       MREPEAT237(macro, data)   macro(237, data)\r
+#define MREPEAT239(macro, data)       MREPEAT238(macro, data)   macro(238, data)\r
+#define MREPEAT240(macro, data)       MREPEAT239(macro, data)   macro(239, data)\r
+#define MREPEAT241(macro, data)       MREPEAT240(macro, data)   macro(240, data)\r
+#define MREPEAT242(macro, data)       MREPEAT241(macro, data)   macro(241, data)\r
+#define MREPEAT243(macro, data)       MREPEAT242(macro, data)   macro(242, data)\r
+#define MREPEAT244(macro, data)       MREPEAT243(macro, data)   macro(243, data)\r
+#define MREPEAT245(macro, data)       MREPEAT244(macro, data)   macro(244, data)\r
+#define MREPEAT246(macro, data)       MREPEAT245(macro, data)   macro(245, data)\r
+#define MREPEAT247(macro, data)       MREPEAT246(macro, data)   macro(246, data)\r
+#define MREPEAT248(macro, data)       MREPEAT247(macro, data)   macro(247, data)\r
+#define MREPEAT249(macro, data)       MREPEAT248(macro, data)   macro(248, data)\r
+#define MREPEAT250(macro, data)       MREPEAT249(macro, data)   macro(249, data)\r
+#define MREPEAT251(macro, data)       MREPEAT250(macro, data)   macro(250, data)\r
+#define MREPEAT252(macro, data)       MREPEAT251(macro, data)   macro(251, data)\r
+#define MREPEAT253(macro, data)       MREPEAT252(macro, data)   macro(252, data)\r
+#define MREPEAT254(macro, data)       MREPEAT253(macro, data)   macro(253, data)\r
+#define MREPEAT255(macro, data)       MREPEAT254(macro, data)   macro(254, data)\r
+#define MREPEAT256(macro, data)       MREPEAT255(macro, data)   macro(255, data)\r
+\r
+/**\r
+ * \}\r
+ */\r
+\r
+#endif  // _MREPEAT_H_\r
diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/asf/sam/utils/preprocessor/preprocessor.h b/FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/asf/sam/utils/preprocessor/preprocessor.h
new file mode 100644 (file)
index 0000000..fd544e3
--- /dev/null
@@ -0,0 +1,52 @@
+/**\r
+ * \file\r
+ *\r
+ * \brief Preprocessor utils.\r
+ *\r
+ * Copyright (c) 2010-2012 Atmel Corporation. All rights reserved.\r
+ *\r
+ * \asf_license_start\r
+ *\r
+ * \page License\r
+ *\r
+ * Redistribution and use in source and binary forms, with or without\r
+ * modification, are permitted provided that the following conditions are met:\r
+ *\r
+ * 1. Redistributions of source code must retain the above copyright notice,\r
+ *    this list of conditions and the following disclaimer.\r
+ *\r
+ * 2. Redistributions in binary form must reproduce the above copyright notice,\r
+ *    this list of conditions and the following disclaimer in the documentation\r
+ *    and/or other materials provided with the distribution.\r
+ *\r
+ * 3. The name of Atmel may not be used to endorse or promote products derived\r
+ *    from this software without specific prior written permission.\r
+ *\r
+ * 4. This software may only be redistributed and used in connection with an\r
+ *    Atmel microcontroller product.\r
+ *\r
+ * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED\r
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\r
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE\r
+ * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR\r
+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\r
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS\r
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)\r
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,\r
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\r
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\r
+ * POSSIBILITY OF SUCH DAMAGE.\r
+ *\r
+ * \asf_license_stop\r
+ *\r
+ */\r
+\r
+#ifndef _PREPROCESSOR_H_\r
+#define _PREPROCESSOR_H_\r
+\r
+#include "tpaste.h"\r
+#include "stringz.h"\r
+#include "mrepeat.h"\r
+\r
+\r
+#endif  // _PREPROCESSOR_H_\r
diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/asf/sam/utils/preprocessor/stringz.h b/FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/asf/sam/utils/preprocessor/stringz.h
new file mode 100644 (file)
index 0000000..063b944
--- /dev/null
@@ -0,0 +1,82 @@
+/**\r
+ * \file\r
+ *\r
+ * \brief Preprocessor stringizing utils.\r
+ *\r
+ * Copyright (c) 2010-2012 Atmel Corporation. All rights reserved.\r
+ *\r
+ * \asf_license_start\r
+ *\r
+ * \page License\r
+ *\r
+ * Redistribution and use in source and binary forms, with or without\r
+ * modification, are permitted provided that the following conditions are met:\r
+ *\r
+ * 1. Redistributions of source code must retain the above copyright notice,\r
+ *    this list of conditions and the following disclaimer.\r
+ *\r
+ * 2. Redistributions in binary form must reproduce the above copyright notice,\r
+ *    this list of conditions and the following disclaimer in the documentation\r
+ *    and/or other materials provided with the distribution.\r
+ *\r
+ * 3. The name of Atmel may not be used to endorse or promote products derived\r
+ *    from this software without specific prior written permission.\r
+ *\r
+ * 4. This software may only be redistributed and used in connection with an\r
+ *    Atmel microcontroller product.\r
+ *\r
+ * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED\r
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\r
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE\r
+ * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR\r
+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\r
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS\r
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)\r
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,\r
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\r
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\r
+ * POSSIBILITY OF SUCH DAMAGE.\r
+ *\r
+ * \asf_license_stop\r
+ *\r
+ */\r
+\r
+#ifndef _STRINGZ_H_\r
+#define _STRINGZ_H_\r
+\r
+/**\r
+ * \defgroup group_sam_utils_stringz Preprocessor - Stringize\r
+ *\r
+ * \ingroup group_sam_utils\r
+ *\r
+ * \{\r
+ */\r
+\r
+/*! \brief Stringize.\r
+ *\r
+ * Stringize a preprocessing token, this token being allowed to be \#defined.\r
+ *\r
+ * May be used only within macros with the token passed as an argument if the token is \#defined.\r
+ *\r
+ * For example, writing STRINGZ(PIN) within a macro \#defined by PIN_NAME(PIN)\r
+ * and invoked as PIN_NAME(PIN0) with PIN0 \#defined as A0 is equivalent to\r
+ * writing "A0".\r
+ */\r
+#define STRINGZ(x)                                #x\r
+\r
+/*! \brief Absolute stringize.\r
+ *\r
+ * Stringize a preprocessing token, this token being allowed to be \#defined.\r
+ *\r
+ * No restriction of use if the token is \#defined.\r
+ *\r
+ * For example, writing ASTRINGZ(PIN0) anywhere with PIN0 \#defined as A0 is\r
+ * equivalent to writing "A0".\r
+ */\r
+#define ASTRINGZ(x)                               STRINGZ(x)\r
+\r
+/**\r
+ * \}\r
+ */\r
+\r
+#endif  // _STRINGZ_H_\r
diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/asf/sam/utils/preprocessor/tpaste.h b/FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/asf/sam/utils/preprocessor/tpaste.h
new file mode 100644 (file)
index 0000000..8894ba6
--- /dev/null
@@ -0,0 +1,102 @@
+/**\r
+ * \file\r
+ *\r
+ * \brief Preprocessor token pasting utils.\r
+ *\r
+ * Copyright (c) 2010-2012 Atmel Corporation. All rights reserved.\r
+ *\r
+ * \asf_license_start\r
+ *\r
+ * \page License\r
+ *\r
+ * Redistribution and use in source and binary forms, with or without\r
+ * modification, are permitted provided that the following conditions are met:\r
+ *\r
+ * 1. Redistributions of source code must retain the above copyright notice,\r
+ *    this list of conditions and the following disclaimer.\r
+ *\r
+ * 2. Redistributions in binary form must reproduce the above copyright notice,\r
+ *    this list of conditions and the following disclaimer in the documentation\r
+ *    and/or other materials provided with the distribution.\r
+ *\r
+ * 3. The name of Atmel may not be used to endorse or promote products derived\r
+ *    from this software without specific prior written permission.\r
+ *\r
+ * 4. This software may only be redistributed and used in connection with an\r
+ *    Atmel microcontroller product.\r
+ *\r
+ * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED\r
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\r
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE\r
+ * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR\r
+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\r
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS\r
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)\r
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,\r
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\r
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\r
+ * POSSIBILITY OF SUCH DAMAGE.\r
+ *\r
+ * \asf_license_stop\r
+ *\r
+ */\r
+\r
+#ifndef _TPASTE_H_\r
+#define _TPASTE_H_\r
+\r
+/**\r
+ * \defgroup group_sam_utils_tpaste Preprocessor - Token Paste\r
+ *\r
+ * \ingroup group_sam_utils\r
+ *\r
+ * \{\r
+ */\r
+\r
+/*! \name Token Paste\r
+ *\r
+ * Paste N preprocessing tokens together, these tokens being allowed to be \#defined.\r
+ *\r
+ * May be used only within macros with the tokens passed as arguments if the tokens are \#defined.\r
+ *\r
+ * For example, writing TPASTE2(U, WIDTH) within a macro \#defined by\r
+ * UTYPE(WIDTH) and invoked as UTYPE(UL_WIDTH) with UL_WIDTH \#defined as 32 is\r
+ * equivalent to writing U32.\r
+ */\r
+//! @{\r
+#define TPASTE2( a, b)                            a##b\r
+#define TPASTE3( a, b, c)                         a##b##c\r
+#define TPASTE4( a, b, c, d)                      a##b##c##d\r
+#define TPASTE5( a, b, c, d, e)                   a##b##c##d##e\r
+#define TPASTE6( a, b, c, d, e, f)                a##b##c##d##e##f\r
+#define TPASTE7( a, b, c, d, e, f, g)             a##b##c##d##e##f##g\r
+#define TPASTE8( a, b, c, d, e, f, g, h)          a##b##c##d##e##f##g##h\r
+#define TPASTE9( a, b, c, d, e, f, g, h, i)       a##b##c##d##e##f##g##h##i\r
+#define TPASTE10(a, b, c, d, e, f, g, h, i, j)    a##b##c##d##e##f##g##h##i##j\r
+//! @}\r
+\r
+/*! \name Absolute Token Paste\r
+ *\r
+ * Paste N preprocessing tokens together, these tokens being allowed to be \#defined.\r
+ *\r
+ * No restriction of use if the tokens are \#defined.\r
+ *\r
+ * For example, writing ATPASTE2(U, UL_WIDTH) anywhere with UL_WIDTH \#defined\r
+ * as 32 is equivalent to writing U32.\r
+ */\r
+//! @{\r
+#define ATPASTE2( a, b)                           TPASTE2( a, b)\r
+#define ATPASTE3( a, b, c)                        TPASTE3( a, b, c)\r
+#define ATPASTE4( a, b, c, d)                     TPASTE4( a, b, c, d)\r
+#define ATPASTE5( a, b, c, d, e)                  TPASTE5( a, b, c, d, e)\r
+#define ATPASTE6( a, b, c, d, e, f)               TPASTE6( a, b, c, d, e, f)\r
+#define ATPASTE7( a, b, c, d, e, f, g)            TPASTE7( a, b, c, d, e, f, g)\r
+#define ATPASTE8( a, b, c, d, e, f, g, h)         TPASTE8( a, b, c, d, e, f, g, h)\r
+#define ATPASTE9( a, b, c, d, e, f, g, h, i)      TPASTE9( a, b, c, d, e, f, g, h, i)\r
+#define ATPASTE10(a, b, c, d, e, f, g, h, i, j)   TPASTE10(a, b, c, d, e, f, g, h, i, j)\r
+//! @}\r
+\r
+/**\r
+ * \}\r
+ */\r
+\r
+#endif  // _TPASTE_H_\r
diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/asf/sam/utils/status_codes.h b/FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/asf/sam/utils/status_codes.h
new file mode 100644 (file)
index 0000000..3b99dfc
--- /dev/null
@@ -0,0 +1,110 @@
+/**\r
+ * \file\r
+ *\r
+ * \brief Status code definitions.\r
+ *\r
+ * This file defines various status codes returned by functions,\r
+ * indicating success or failure as well as what kind of failure.\r
+ *\r
+ * Copyright (c) 2011-2013 Atmel Corporation. All rights reserved.\r
+ *\r
+ * \asf_license_start\r
+ *\r
+ * \page License\r
+ *\r
+ * Redistribution and use in source and binary forms, with or without\r
+ * modification, are permitted provided that the following conditions are met:\r
+ *\r
+ * 1. Redistributions of source code must retain the above copyright notice,\r
+ *    this list of conditions and the following disclaimer.\r
+ *\r
+ * 2. Redistributions in binary form must reproduce the above copyright notice,\r
+ *    this list of conditions and the following disclaimer in the documentation\r
+ *    and/or other materials provided with the distribution.\r
+ *\r
+ * 3. The name of Atmel may not be used to endorse or promote products derived\r
+ *    from this software without specific prior written permission.\r
+ *\r
+ * 4. This software may only be redistributed and used in connection with an\r
+ *    Atmel microcontroller product.\r
+ *\r
+ * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED\r
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\r
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE\r
+ * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR\r
+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\r
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS\r
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)\r
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,\r
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\r
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\r
+ * POSSIBILITY OF SUCH DAMAGE.\r
+ *\r
+ * \asf_license_stop\r
+ *\r
+ */\r
+\r
+#ifndef STATUS_CODES_H_INCLUDED\r
+#define STATUS_CODES_H_INCLUDED\r
+\r
+/* Note: this is a local workaround to avoid a pre-processor clash due to the\r
+ * lwIP macro ERR_TIMEOUT. */\r
+#if defined(__LWIP_ERR_H__) && defined(ERR_TIMEOUT)\r
+#if (ERR_TIMEOUT != -3)\r
+\r
+/* Internal check to make sure that the later restore of lwIP's ERR_TIMEOUT\r
+ * macro is set to the correct value. Note that it is highly improbable that\r
+ * this value ever changes in lwIP. */\r
+#error ASF developers: check lwip err.h new value for ERR_TIMEOUT\r
+#endif\r
+#undef ERR_TIMEOUT\r
+#endif\r
+\r
+/**\r
+ * Status code that may be returned by shell commands and protocol\r
+ * implementations.\r
+ *\r
+ * \note Any change to these status codes and the corresponding\r
+ * message strings is strictly forbidden. New codes can be added,\r
+ * however, but make sure that any message string tables are updated\r
+ * at the same time.\r
+ */\r
+enum status_code {\r
+       STATUS_OK               =  0, //!< Success\r
+       STATUS_ERR_BUSY         =  0x19,\r
+       STATUS_ERR_DENIED       =  0x1C,\r
+       STATUS_ERR_TIMEOUT      =  0x12,\r
+       ERR_IO_ERROR            =  -1, //!< I/O error\r
+       ERR_FLUSHED             =  -2, //!< Request flushed from queue\r
+       ERR_TIMEOUT             =  -3, //!< Operation timed out\r
+       ERR_BAD_DATA            =  -4, //!< Data integrity check failed\r
+       ERR_PROTOCOL            =  -5, //!< Protocol error\r
+       ERR_UNSUPPORTED_DEV     =  -6, //!< Unsupported device\r
+       ERR_NO_MEMORY           =  -7, //!< Insufficient memory\r
+       ERR_INVALID_ARG         =  -8, //!< Invalid argument\r
+       ERR_BAD_ADDRESS         =  -9, //!< Bad address\r
+       ERR_BUSY                =  -10, //!< Resource is busy\r
+       ERR_BAD_FORMAT          =  -11, //!< Data format not recognized\r
+       ERR_NO_TIMER            =  -12, //!< No timer available\r
+       ERR_TIMER_ALREADY_RUNNING   =  -13, //!< Timer already running\r
+       ERR_TIMER_NOT_RUNNING   =  -14, //!< Timer not running\r
+\r
+       /**\r
+        * \brief Operation in progress\r
+        *\r
+        * This status code is for driver-internal use when an operation\r
+        * is currently being performed.\r
+        *\r
+        * \note Drivers should never return this status code to any\r
+        * callers. It is strictly for internal use.\r
+        */\r
+       OPERATION_IN_PROGRESS   = -128,\r
+};\r
+\r
+typedef enum status_code status_code_t;\r
+\r
+#if defined(__LWIP_ERR_H__)\r
+#define ERR_TIMEOUT -3\r
+#endif\r
+\r
+#endif /* STATUS_CODES_H_INCLUDED */\r
diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/asf/sam/utils/syscalls/gcc/syscalls.c b/FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/asf/sam/utils/syscalls/gcc/syscalls.c
new file mode 100644 (file)
index 0000000..6092014
--- /dev/null
@@ -0,0 +1,136 @@
+/**\r
+ * \file\r
+ *\r
+ * \brief Syscalls for SAM (GCC).\r
+ *\r
+ * Copyright (c) 2011-2012 Atmel Corporation. All rights reserved.\r
+ *\r
+ * \asf_license_start\r
+ *\r
+ * \page License\r
+ *\r
+ * Redistribution and use in source and binary forms, with or without\r
+ * modification, are permitted provided that the following conditions are met:\r
+ *\r
+ * 1. Redistributions of source code must retain the above copyright notice,\r
+ *    this list of conditions and the following disclaimer.\r
+ *\r
+ * 2. Redistributions in binary form must reproduce the above copyright notice,\r
+ *    this list of conditions and the following disclaimer in the documentation\r
+ *    and/or other materials provided with the distribution.\r
+ *\r
+ * 3. The name of Atmel may not be used to endorse or promote products derived\r
+ *    from this software without specific prior written permission.\r
+ *\r
+ * 4. This software may only be redistributed and used in connection with an\r
+ *    Atmel microcontroller product.\r
+ *\r
+ * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED\r
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\r
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE\r
+ * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR\r
+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\r
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS\r
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)\r
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,\r
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\r
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\r
+ * POSSIBILITY OF SUCH DAMAGE.\r
+ *\r
+ * \asf_license_stop\r
+ *\r
+ */\r
+\r
+#include <stdio.h>\r
+#include <stdarg.h>\r
+#include <sys/types.h>\r
+#include <sys/stat.h>\r
+\r
+/// @cond 0\r
+/**INDENT-OFF**/\r
+#ifdef __cplusplus\r
+extern "C" {\r
+#endif\r
+/**INDENT-ON**/\r
+/// @endcond\r
+\r
+#undef errno\r
+extern int errno;\r
+extern int _end;\r
+\r
+extern caddr_t _sbrk(int incr);\r
+extern int link(char *old, char *new);\r
+extern int _close(int file);\r
+extern int _fstat(int file, struct stat *st);\r
+extern int _isatty(int file);\r
+extern int _lseek(int file, int ptr, int dir);\r
+extern void _exit(int status);\r
+extern void _kill(int pid, int sig);\r
+extern int _getpid(void);\r
+\r
+extern caddr_t _sbrk(int incr)\r
+{\r
+       static unsigned char *heap = NULL;\r
+       unsigned char *prev_heap;\r
+\r
+       if (heap == NULL) {\r
+               heap = (unsigned char *)&_end;\r
+       }\r
+       prev_heap = heap;\r
+\r
+       heap += incr;\r
+\r
+       return (caddr_t) prev_heap;\r
+}\r
+\r
+extern int link(char *old, char *new)\r
+{\r
+       return -1;\r
+}\r
+\r
+extern int _close(int file)\r
+{\r
+       return -1;\r
+}\r
+\r
+extern int _fstat(int file, struct stat *st)\r
+{\r
+       st->st_mode = S_IFCHR;\r
+\r
+       return 0;\r
+}\r
+\r
+extern int _isatty(int file)\r
+{\r
+       return 1;\r
+}\r
+\r
+extern int _lseek(int file, int ptr, int dir)\r
+{\r
+       return 0;\r
+}\r
+\r
+extern void _exit(int status)\r
+{\r
+       printf("Exiting with status %d.\n", status);\r
+\r
+       for (;;);\r
+}\r
+\r
+extern void _kill(int pid, int sig)\r
+{\r
+       return;\r
+}\r
+\r
+extern int _getpid(void)\r
+{\r
+       return -1;\r
+}\r
+\r
+/// @cond 0\r
+/**INDENT-OFF**/\r
+#ifdef __cplusplus\r
+}\r
+#endif\r
+/**INDENT-ON**/\r
+/// @endcond\r
diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/asf/thirdparty/CMSIS/CMSIS END USER LICENCE AGREEMENT.pdf b/FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/asf/thirdparty/CMSIS/CMSIS END USER LICENCE AGREEMENT.pdf
new file mode 100644 (file)
index 0000000..c8feab4
Binary files /dev/null and b/FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/asf/thirdparty/CMSIS/CMSIS END USER LICENCE AGREEMENT.pdf differ
diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/asf/thirdparty/CMSIS/Include/arm_math.h b/FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/asf/thirdparty/CMSIS/Include/arm_math.h
new file mode 100644 (file)
index 0000000..b01681c
--- /dev/null
@@ -0,0 +1,7057 @@
+/* ----------------------------------------------------------------------\r
+ * Copyright (C) 2010-2011 ARM Limited. All rights reserved.\r
+ *\r
+ * $Date:        15. July 2011\r
+ * $Revision:  V1.0.10\r
+ *\r
+ * Project:        CMSIS DSP Library\r
+ * Title:           arm_math.h\r
+ *\r
+ * Description:         Public header file for CMSIS DSP Library\r
+ *\r
+ * Target Processor: Cortex-M4/Cortex-M3/Cortex-M0\r
+ *\r
+ * Version 1.0.10 2011/7/15\r
+ *    Big Endian support added and Merged M0 and M3/M4 Source code.\r
+ *\r
+ * Version 1.0.3 2010/11/29\r
+ *    Re-organized the CMSIS folders and updated documentation.\r
+ *\r
+ * Version 1.0.2 2010/11/11\r
+ *    Documentation updated.\r
+ *\r
+ * Version 1.0.1 2010/10/05\r
+ *    Production release and review comments incorporated.\r
+ *\r
+ * Version 1.0.0 2010/09/20\r
+ *    Production release and review comments incorporated.\r
+ * -------------------------------------------------------------------- */\r
+\r
+/**\r
+   \mainpage CMSIS DSP Software Library\r
+   *\r
+   * <b>Introduction</b>\r
+   *\r
+   * This user manual describes the CMSIS DSP software library,\r
+   * a suite of common signal processing functions for use on Cortex-M processor based devices.\r
+   *\r
+   * The library is divided into a number of modules each covering a specific category:\r
+   * - Basic math functions\r
+   * - Fast math functions\r
+   * - Complex math functions\r
+   * - Filters\r
+   * - Matrix functions\r
+   * - Transforms\r
+   * - Motor control functions\r
+   * - Statistical functions\r
+   * - Support functions\r
+   * - Interpolation functions\r
+   *\r
+   * The library has separate functions for operating on 8-bit integers, 16-bit integers,\r
+   * 32-bit integer and 32-bit floating-point values.\r
+   *\r
+   * <b>Processor Support</b>\r
+   *\r
+   * The library is completely written in C and is fully CMSIS compliant.\r
+   * High performance is achieved through maximum use of Cortex-M4 intrinsics.\r
+   *\r
+   * The supplied library source code also builds and runs on the Cortex-M3 and Cortex-M0 processor,\r
+   * with the DSP intrinsics being emulated through software.\r
+   *\r
+   *\r
+   * <b>Toolchain Support</b>\r
+   *\r
+   * The library has been developed and tested with MDK-ARM version 4.21.\r
+   * The library is being tested in GCC and IAR toolchains and updates on this activity will be made available shortly.\r
+   *\r
+   * <b>Using the Library</b>\r
+   *\r
+   * The library installer contains prebuilt versions of the libraries in the <code>Lib</code> folder.\r
+   * - arm_cortexM4lf_math.lib (Little endian and Floating Point Unit on Cortex-M4)\r
+   * - arm_cortexM4bf_math.lib (Big endian and Floating Point Unit on Cortex-M4)\r
+   * - arm_cortexM4l_math.lib (Little endian on Cortex-M4)\r
+   * - arm_cortexM4b_math.lib (Big endian on Cortex-M4)\r
+   * - arm_cortexM3l_math.lib (Little endian on Cortex-M3)\r
+   * - arm_cortexM3b_math.lib (Big endian on Cortex-M3)\r
+   * - arm_cortexM0l_math.lib (Little endian on Cortex-M0)\r
+   * - arm_cortexM0b_math.lib (Big endian on Cortex-M3)\r
+   *\r
+   * The library functions are declared in the public file <code>arm_math.h</code> which is placed in the <code>Include</code> folder.\r
+   * Simply include this file and link the appropriate library in the application and begin calling the library functions. The Library supports single\r
+   * public header file <code>arm_math.h</code> for Cortex-M4/M3/M0 with little endian and big endian. Same header file will be used for floating point unit(FPU) variants.\r
+   * Define the appropriate pre processor MACRO ARM_MATH_CM4 or  ARM_MATH_CM3 or\r
+   * ARM_MATH_CM0 depending on the target processor in the application.\r
+   *\r
+   * <b>Examples</b>\r
+   *\r
+   * The library ships with a number of examples which demonstrate how to use the library functions.\r
+   *\r
+   * <b>Building the Library</b>\r
+   *\r
+   * The library installer contains project files to re build libraries on MDK Tool chain in the <code>CMSIS\\DSP_Lib\\Source\\ARM</code> folder.\r
+   * - arm_cortexM0b_math.uvproj\r
+   * - arm_cortexM0l_math.uvproj\r
+   * - arm_cortexM3b_math.uvproj\r
+   * - arm_cortexM3l_math.uvproj\r
+   * - arm_cortexM4b_math.uvproj\r
+   * - arm_cortexM4l_math.uvproj\r
+   * - arm_cortexM4bf_math.uvproj\r
+   * - arm_cortexM4lf_math.uvproj\r
+   *\r
+   * Each library project have differant pre-processor macros.\r
+   *\r
+   * <b>ARM_MATH_CMx:</b>\r
+   * Define macro ARM_MATH_CM4 for building the library on Cortex-M4 target, ARM_MATH_CM3 for building library on Cortex-M3 target\r
+   * and ARM_MATH_CM0 for building library on cortex-M0 target.\r
+   *\r
+   * <b>ARM_MATH_BIG_ENDIAN:</b>\r
+   * Define macro ARM_MATH_BIG_ENDIAN to build the library for big endian targets. By default library builds for little endian targets.\r
+   *\r
+   * <b>ARM_MATH_MATRIX_CHECK:</b>\r
+   * Define macro for checking on the input and output sizes of matrices\r
+   *\r
+   * <b>ARM_MATH_ROUNDING:</b>\r
+   * Define macro for rounding on support functions\r
+   *\r
+   * <b>__FPU_PRESENT:</b>\r
+   * Initialize macro __FPU_PRESENT = 1 when building on FPU supported Targets. Enable this macro for M4bf and M4lf libraries\r
+   *\r
+   *\r
+   * The project can be built by opening the appropriate project in MDK-ARM 4.21 chain and defining the optional pre processor MACROs detailed above.\r
+   *\r
+   * <b>Copyright Notice</b>\r
+   *\r
+   * Copyright (C) 2010 ARM Limited. All rights reserved.\r
+   */\r
+\r
+\r
+/**\r
+ * @defgroup groupMath Basic Math Functions\r
+ */\r
+\r
+/**\r
+ * @defgroup groupFastMath Fast Math Functions\r
+ * This set of functions provides a fast approximation to sine, cosine, and square root.\r
+ * As compared to most of the other functions in the CMSIS math library, the fast math functions\r
+ * operate on individual values and not arrays.\r
+ * There are separate functions for Q15, Q31, and floating-point data.\r
+ *\r
+ */\r
+\r
+/**\r
+ * @defgroup groupCmplxMath Complex Math Functions\r
+ * This set of functions operates on complex data vectors.\r
+ * The data in the complex arrays is stored in an interleaved fashion\r
+ * (real, imag, real, imag, ...).\r
+ * In the API functions, the number of samples in a complex array refers\r
+ * to the number of complex values; the array contains twice this number of\r
+ * real values.\r
+ */\r
+\r
+/**\r
+ * @defgroup groupFilters Filtering Functions\r
+ */\r
+\r
+/**\r
+ * @defgroup groupMatrix Matrix Functions\r
+ *\r
+ * This set of functions provides basic matrix math operations.\r
+ * The functions operate on matrix data structures.  For example,\r
+ * the type\r
+ * definition for the floating-point matrix structure is shown\r
+ * below:\r
+ * <pre>\r
+ *     typedef struct\r
+ *     {\r
+ *       uint16_t numRows;     // number of rows of the matrix.\r
+ *       uint16_t numCols;     // number of columns of the matrix.\r
+ *       float32_t *pData;     // points to the data of the matrix.\r
+ *     } arm_matrix_instance_f32;\r
+ * </pre>\r
+ * There are similar definitions for Q15 and Q31 data types.\r
+ *\r
+ * The structure specifies the size of the matrix and then points to\r
+ * an array of data.  The array is of size <code>numRows X numCols</code>\r
+ * and the values are arranged in row order.  That is, the\r
+ * matrix element (i, j) is stored at:\r
+ * <pre>\r
+ *     pData[i*numCols + j]\r
+ * </pre>\r
+ *\r
+ * \par Init Functions\r
+ * There is an associated initialization function for each type of matrix\r
+ * data structure.\r
+ * The initialization function sets the values of the internal structure fields.\r
+ * Refer to the function <code>arm_mat_init_f32()</code>, <code>arm_mat_init_q31()</code>\r
+ * and <code>arm_mat_init_q15()</code> for floating-point, Q31 and Q15 types,  respectively.\r
+ *\r
+ * \par\r
+ * Use of the initialization function is optional. However, if initialization function is used\r
+ * then the instance structure cannot be placed into a const data section.\r
+ * To place the instance structure in a const data\r
+ * section, manually initialize the data structure.  For example:\r
+ * <pre>\r
+ * <code>arm_matrix_instance_f32 S = {nRows, nColumns, pData};</code>\r
+ * <code>arm_matrix_instance_q31 S = {nRows, nColumns, pData};</code>\r
+ * <code>arm_matrix_instance_q15 S = {nRows, nColumns, pData};</code>\r
+ * </pre>\r
+ * where <code>nRows</code> specifies the number of rows, <code>nColumns</code>\r
+ * specifies the number of columns, and <code>pData</code> points to the\r
+ * data array.\r
+ *\r
+ * \par Size Checking\r
+ * By default all of the matrix functions perform size checking on the input and\r
+ * output matrices.  For example, the matrix addition function verifies that the\r
+ * two input matrices and the output matrix all have the same number of rows and\r
+ * columns.  If the size check fails the functions return:\r
+ * <pre>\r
+ *     ARM_MATH_SIZE_MISMATCH\r
+ * </pre>\r
+ * Otherwise the functions return\r
+ * <pre>\r
+ *     ARM_MATH_SUCCESS\r
+ * </pre>\r
+ * There is some overhead associated with this matrix size checking.\r
+ * The matrix size checking is enabled via the \#define\r
+ * <pre>\r
+ *     ARM_MATH_MATRIX_CHECK\r
+ * </pre>\r
+ * within the library project settings.  By default this macro is defined\r
+ * and size checking is enabled.  By changing the project settings and\r
+ * undefining this macro size checking is eliminated and the functions\r
+ * run a bit faster.  With size checking disabled the functions always\r
+ * return <code>ARM_MATH_SUCCESS</code>.\r
+ */\r
+\r
+/**\r
+ * @defgroup groupTransforms Transform Functions\r
+ */\r
+\r
+/**\r
+ * @defgroup groupController Controller Functions\r
+ */\r
+\r
+/**\r
+ * @defgroup groupStats Statistics Functions\r
+ */\r
+/**\r
+ * @defgroup groupSupport Support Functions\r
+ */\r
+\r
+/**\r
+ * @defgroup groupInterpolation Interpolation Functions\r
+ * These functions perform 1- and 2-dimensional interpolation of data.\r
+ * Linear interpolation is used for 1-dimensional data and\r
+ * bilinear interpolation is used for 2-dimensional data.\r
+ */\r
+\r
+/**\r
+ * @defgroup groupExamples Examples\r
+ */\r
+#ifndef _ARM_MATH_H\r
+#define _ARM_MATH_H\r
+\r
+#define __CMSIS_GENERIC              /* disable NVIC and Systick functions */\r
+\r
+#if defined (ARM_MATH_CM4)\r
+  #include "core_cm4.h"\r
+#elif defined (ARM_MATH_CM3)\r
+  #include "core_cm3.h"\r
+#elif defined (ARM_MATH_CM0)\r
+  #include "core_cm0.h"\r
+#else\r
+#include "ARMCM4.h"\r
+#warning "Define either ARM_MATH_CM4 OR ARM_MATH_CM3...By Default building on ARM_MATH_CM4....."\r
+#endif\r
+\r
+#undef  __CMSIS_GENERIC              /* enable NVIC and Systick functions */\r
+#include "string.h"\r
+    #include "math.h"\r
+#ifdef __cplusplus\r
+extern "C"\r
+{\r
+#endif\r
+\r
+\r
+  /**\r
+   * @brief Macros required for reciprocal calculation in Normalized LMS\r
+   */\r
+\r
+#define DELTA_Q31                      (0x100)\r
+#define DELTA_Q15                      0x5\r
+#define INDEX_MASK                     0x0000003F\r
+#define PI                                     3.14159265358979f\r
+\r
+  /**\r
+   * @brief Macros required for SINE and COSINE Fast math approximations\r
+   */\r
+\r
+#define TABLE_SIZE                     256\r
+#define TABLE_SPACING_Q31      0x800000\r
+#define TABLE_SPACING_Q15      0x80\r
+\r
+  /**\r
+   * @brief Macros required for SINE and COSINE Controller functions\r
+   */\r
+  /* 1.31(q31) Fixed value of 2/360 */\r
+  /* -1 to +1 is divided into 360 values so total spacing is (2/360) */\r
+#define INPUT_SPACING                  0xB60B61\r
+\r
+\r
+  /**\r
+   * @brief Error status returned by some functions in the library.\r
+   */\r
+\r
+  typedef enum\r
+    {\r
+      ARM_MATH_SUCCESS = 0,              /**< No error */\r
+      ARM_MATH_ARGUMENT_ERROR = -1,      /**< One or more arguments are incorrect */\r
+      ARM_MATH_LENGTH_ERROR = -2,        /**< Length of data buffer is incorrect */\r
+      ARM_MATH_SIZE_MISMATCH = -3,       /**< Size of matrices is not compatible with the operation. */\r
+      ARM_MATH_NANINF = -4,              /**< Not-a-number (NaN) or infinity is generated */\r
+      ARM_MATH_SINGULAR = -5,            /**< Generated by matrix inversion if the input matrix is singular and cannot be inverted. */\r
+      ARM_MATH_TEST_FAILURE = -6         /**< Test Failed  */\r
+    } arm_status;\r
+\r
+  /**\r
+   * @brief 8-bit fractional data type in 1.7 format.\r
+   */\r
+  typedef int8_t q7_t;\r
+\r
+  /**\r
+   * @brief 16-bit fractional data type in 1.15 format.\r
+   */\r
+  typedef int16_t q15_t;\r
+\r
+  /**\r
+   * @brief 32-bit fractional data type in 1.31 format.\r
+   */\r
+  typedef int32_t q31_t;\r
+\r
+  /**\r
+   * @brief 64-bit fractional data type in 1.63 format.\r
+   */\r
+  typedef int64_t q63_t;\r
+\r
+  /**\r
+   * @brief 32-bit floating-point type definition.\r
+   */\r
+  typedef float float32_t;\r
+\r
+  /**\r
+   * @brief 64-bit floating-point type definition.\r
+   */\r
+  typedef double float64_t;\r
+\r
+  /**\r
+   * @brief definition to read/write two 16 bit values.\r
+   */\r
+#define __SIMD32(addr)  (*(int32_t **) & (addr))\r
+\r
+#if defined (ARM_MATH_CM3) || defined (ARM_MATH_CM0)\r
+  /**\r
+   * @brief definition to pack two 16 bit values.\r
+   */\r
+#define __PKHBT(ARG1, ARG2, ARG3)      ( (((int32_t)(ARG1) <<  0) & (int32_t)0x0000FFFF) | \\r
+                                         (((int32_t)(ARG2) << ARG3) & (int32_t)0xFFFF0000)  )\r
+\r
+#endif\r
+\r
+\r
+   /**\r
+   * @brief definition to pack four 8 bit values.\r
+   */\r
+#ifndef ARM_MATH_BIG_ENDIAN\r
+\r
+#define __PACKq7(v0,v1,v2,v3) ( (((int32_t)(v0) <<  0) & (int32_t)0x000000FF) |        \\r
+                                (((int32_t)(v1) <<  8) & (int32_t)0x0000FF00) |        \\r
+                                                           (((int32_t)(v2) << 16) & (int32_t)0x00FF0000) |     \\r
+                                                           (((int32_t)(v3) << 24) & (int32_t)0xFF000000)  )\r
+#else\r
+\r
+#define __PACKq7(v0,v1,v2,v3) ( (((int32_t)(v3) <<  0) & (int32_t)0x000000FF) |        \\r
+                                (((int32_t)(v2) <<  8) & (int32_t)0x0000FF00) |        \\r
+                                                           (((int32_t)(v1) << 16) & (int32_t)0x00FF0000) |     \\r
+                                                           (((int32_t)(v0) << 24) & (int32_t)0xFF000000)  )\r
+\r
+#endif\r
+\r
+\r
+  /**\r
+   * @brief Clips Q63 to Q31 values.\r
+   */\r
+  __STATIC_INLINE q31_t clip_q63_to_q31(\r
+                                       q63_t x)\r
+  {\r
+    return ((q31_t) (x >> 32) != ((q31_t) x >> 31)) ?\r
+      ((0x7FFFFFFF ^ ((q31_t) (x >> 63)))) : (q31_t) x;\r
+  }\r
+\r
+  /**\r
+   * @brief Clips Q63 to Q15 values.\r
+   */\r
+  __STATIC_INLINE q15_t clip_q63_to_q15(\r
+                                       q63_t x)\r
+  {\r
+    return ((q31_t) (x >> 32) != ((q31_t) x >> 31)) ?\r
+      ((0x7FFF ^ ((q15_t) (x >> 63)))) : (q15_t) (x >> 15);\r
+  }\r
+\r
+  /**\r
+   * @brief Clips Q31 to Q7 values.\r
+   */\r
+  __STATIC_INLINE q7_t clip_q31_to_q7(\r
+                                     q31_t x)\r
+  {\r
+    return ((q31_t) (x >> 24) != ((q31_t) x >> 23)) ?\r
+      ((0x7F ^ ((q7_t) (x >> 31)))) : (q7_t) x;\r
+  }\r
+\r
+  /**\r
+   * @brief Clips Q31 to Q15 values.\r
+   */\r
+  __STATIC_INLINE q15_t clip_q31_to_q15(\r
+                                       q31_t x)\r
+  {\r
+    return ((q31_t) (x >> 16) != ((q31_t) x >> 15)) ?\r
+      ((0x7FFF ^ ((q15_t) (x >> 31)))) : (q15_t) x;\r
+  }\r
+\r
+  /**\r
+   * @brief Multiplies 32 X 64 and returns 32 bit result in 2.30 format.\r
+   */\r
+\r
+  __STATIC_INLINE q63_t mult32x64(\r
+                                 q63_t x,\r
+                                 q31_t y)\r
+  {\r
+    return ((((q63_t) (x & 0x00000000FFFFFFFF) * y) >> 32) +\r
+            (((q63_t) (x >> 32) * y)));\r
+  }\r
+\r
+\r
+#if defined (ARM_MATH_CM0) && defined ( __CC_ARM   )\r
+#define __CLZ __clz\r
+#endif\r
+\r
+#if defined (ARM_MATH_CM0) && defined ( __TASKING__ )\r
+/* No need to redefine __CLZ */\r
+#endif\r
+\r
+#if defined (ARM_MATH_CM0) && ((defined (__ICCARM__)) ||(defined (__GNUC__)) )\r
+\r
+  __STATIC_INLINE  uint32_t __CLZ(q31_t data);\r
+\r
+\r
+  __STATIC_INLINE uint32_t __CLZ(q31_t data)\r
+  {\r
+         uint32_t count = 0;\r
+         uint32_t mask = 0x80000000;\r
+\r
+         while((data & mask) ==  0)\r
+         {\r
+                 count += 1u;\r
+                 mask = mask >> 1u;\r
+         }\r
+\r
+         return(count);\r
+\r
+  }\r
+\r
+#endif\r
+\r
+  /**\r
+   * @brief Function to Calculates 1/in(reciprocal) value of Q31 Data type.\r
+   */\r
+\r
+  __STATIC_INLINE uint32_t arm_recip_q31(\r
+                                        q31_t in,\r
+                                        q31_t * dst,\r
+                                        q31_t * pRecipTable)\r
+  {\r
+\r
+    uint32_t out, tempVal;\r
+    uint32_t index, i;\r
+    uint32_t signBits;\r
+\r
+    if(in > 0)\r
+      {\r
+       signBits = __CLZ(in) - 1;\r
+      }\r
+    else\r
+      {\r
+       signBits = __CLZ(-in) - 1;\r
+      }\r
+\r
+    /* Convert input sample to 1.31 format */\r
+    in = in << signBits;\r
+\r
+    /* calculation of index for initial approximated Val */\r
+    index = (uint32_t) (in >> 24u);\r
+    index = (index & INDEX_MASK);\r
+\r
+    /* 1.31 with exp 1 */\r
+    out = pRecipTable[index];\r
+\r
+    /* calculation of reciprocal value */\r
+    /* running approximation for two iterations */\r
+    for (i = 0u; i < 2u; i++)\r
+      {\r
+       tempVal = (q31_t) (((q63_t) in * out) >> 31u);\r
+       tempVal = 0x7FFFFFFF - tempVal;\r
+       /*      1.31 with exp 1 */\r
+       //out = (q31_t) (((q63_t) out * tempVal) >> 30u);\r
+       out = (q31_t) clip_q63_to_q31(((q63_t) out * tempVal) >> 30u);\r
+      }\r
+\r
+    /* write output */\r
+    *dst = out;\r
+\r
+    /* return num of signbits of out = 1/in value */\r
+    return (signBits + 1u);\r
+\r
+  }\r
+\r
+  /**\r
+   * @brief Function to Calculates 1/in(reciprocal) value of Q15 Data type.\r
+   */\r
+  __STATIC_INLINE uint32_t arm_recip_q15(\r
+                                        q15_t in,\r
+                                        q15_t * dst,\r
+                                        q15_t * pRecipTable)\r
+  {\r
+\r
+    uint32_t out = 0, tempVal = 0;\r
+    uint32_t index = 0, i = 0;\r
+    uint32_t signBits = 0;\r
+\r
+    if(in > 0)\r
+      {\r
+       signBits = __CLZ(in) - 17;\r
+      }\r
+    else\r
+      {\r
+       signBits = __CLZ(-in) - 17;\r
+      }\r
+\r
+    /* Convert input sample to 1.15 format */\r
+    in = in << signBits;\r
+\r
+    /* calculation of index for initial approximated Val */\r
+    index = in >> 8;\r
+    index = (index & INDEX_MASK);\r
+\r
+    /*      1.15 with exp 1  */\r
+    out = pRecipTable[index];\r
+\r
+    /* calculation of reciprocal value */\r
+    /* running approximation for two iterations */\r
+    for (i = 0; i < 2; i++)\r
+      {\r
+       tempVal = (q15_t) (((q31_t) in * out) >> 15);\r
+       tempVal = 0x7FFF - tempVal;\r
+       /*      1.15 with exp 1 */\r
+       out = (q15_t) (((q31_t) out * tempVal) >> 14);\r
+      }\r
+\r
+    /* write output */\r
+    *dst = out;\r
+\r
+    /* return num of signbits of out = 1/in value */\r
+    return (signBits + 1);\r
+\r
+  }\r
+\r
+\r
+  /*\r
+   * @brief C custom defined intrinisic function for only M0 processors\r
+   */\r
+#if defined(ARM_MATH_CM0)\r
+\r
+  __STATIC_INLINE q31_t __SSAT(\r
+                              q31_t x,\r
+                              uint32_t y)\r
+  {\r
+    int32_t posMax, negMin;\r
+    uint32_t i;\r
+\r
+    posMax = 1;\r
+    for (i = 0; i < (y - 1); i++)\r
+      {\r
+       posMax = posMax * 2;\r
+      }\r
+\r
+    if(x > 0)\r
+      {\r
+       posMax = (posMax - 1);\r
+\r
+       if(x > posMax)\r
+         {\r
+           x = posMax;\r
+         }\r
+      }\r
+    else\r
+      {\r
+       negMin = -posMax;\r
+\r
+       if(x < negMin)\r
+         {\r
+           x = negMin;\r
+         }\r
+      }\r
+    return (x);\r
+\r
+\r
+  }\r
+\r
+#endif /* end of ARM_MATH_CM0 */\r
+\r
+\r
+\r
+  /*\r
+   * @brief C custom defined intrinsic function for M3 and M0 processors\r
+   */\r
+#if defined (ARM_MATH_CM3) || defined (ARM_MATH_CM0)\r
+\r
+  /*\r
+   * @brief C custom defined QADD8 for M3 and M0 processors\r
+   */\r
+  __STATIC_INLINE q31_t __QADD8(\r
+                               q31_t x,\r
+                               q31_t y)\r
+  {\r
+\r
+    q31_t sum;\r
+    q7_t r, s, t, u;\r
+\r
+    r = (char) x;\r
+    s = (char) y;\r
+\r
+    r = __SSAT((q31_t) (r + s), 8);\r
+    s = __SSAT(((q31_t) (((x << 16) >> 24) + ((y << 16) >> 24))), 8);\r
+    t = __SSAT(((q31_t) (((x << 8) >> 24) + ((y << 8) >> 24))), 8);\r
+    u = __SSAT(((q31_t) ((x >> 24) + (y >> 24))), 8);\r
+\r
+    sum = (((q31_t) u << 24) & 0xFF000000) | (((q31_t) t << 16) & 0x00FF0000) |\r
+      (((q31_t) s << 8) & 0x0000FF00) | (r & 0x000000FF);\r
+\r
+    return sum;\r
+\r
+  }\r
+\r
+  /*\r
+   * @brief C custom defined QSUB8 for M3 and M0 processors\r
+   */\r
+  __STATIC_INLINE q31_t __QSUB8(\r
+                               q31_t x,\r
+                               q31_t y)\r
+  {\r
+\r
+    q31_t sum;\r
+    q31_t r, s, t, u;\r
+\r
+    r = (char) x;\r
+    s = (char) y;\r
+\r
+    r = __SSAT((r - s), 8);\r
+    s = __SSAT(((q31_t) (((x << 16) >> 24) - ((y << 16) >> 24))), 8) << 8;\r
+    t = __SSAT(((q31_t) (((x << 8) >> 24) - ((y << 8) >> 24))), 8) << 16;\r
+    u = __SSAT(((q31_t) ((x >> 24) - (y >> 24))), 8) << 24;\r
+\r
+    sum =\r
+      (u & 0xFF000000) | (t & 0x00FF0000) | (s & 0x0000FF00) | (r & 0x000000FF);\r
+\r
+    return sum;\r
+  }\r
+\r
+  /*\r
+   * @brief C custom defined QADD16 for M3 and M0 processors\r
+   */\r
+\r
+  /*\r
+   * @brief C custom defined QADD16 for M3 and M0 processors\r
+   */\r
+  __STATIC_INLINE q31_t __QADD16(\r
+                                q31_t x,\r
+                                q31_t y)\r
+  {\r
+\r
+    q31_t sum;\r
+    q31_t r, s;\r
+\r
+    r = (short) x;\r
+    s = (short) y;\r
+\r
+    r = __SSAT(r + s, 16);\r
+    s = __SSAT(((q31_t) ((x >> 16) + (y >> 16))), 16) << 16;\r
+\r
+    sum = (s & 0xFFFF0000) | (r & 0x0000FFFF);\r
+\r
+    return sum;\r
+\r
+  }\r
+\r
+  /*\r
+   * @brief C custom defined SHADD16 for M3 and M0 processors\r
+   */\r
+  __STATIC_INLINE q31_t __SHADD16(\r
+                                 q31_t x,\r
+                                 q31_t y)\r
+  {\r
+\r
+    q31_t sum;\r
+    q31_t r, s;\r
+\r
+    r = (short) x;\r
+    s = (short) y;\r
+\r
+    r = ((r >> 1) + (s >> 1));\r
+    s = ((q31_t) ((x >> 17) + (y >> 17))) << 16;\r
+\r
+    sum = (s & 0xFFFF0000) | (r & 0x0000FFFF);\r
+\r
+    return sum;\r
+\r
+  }\r
+\r
+  /*\r
+   * @brief C custom defined QSUB16 for M3 and M0 processors\r
+   */\r
+  __STATIC_INLINE q31_t __QSUB16(\r
+                                q31_t x,\r
+                                q31_t y)\r
+  {\r
+\r
+    q31_t sum;\r
+    q31_t r, s;\r
+\r
+    r = (short) x;\r
+    s = (short) y;\r
+\r
+    r = __SSAT(r - s, 16);\r
+    s = __SSAT(((q31_t) ((x >> 16) - (y >> 16))), 16) << 16;\r
+\r
+    sum = (s & 0xFFFF0000) | (r & 0x0000FFFF);\r
+\r
+    return sum;\r
+  }\r
+\r
+  /*\r
+   * @brief C custom defined SHSUB16 for M3 and M0 processors\r
+   */\r
+  __STATIC_INLINE q31_t __SHSUB16(\r
+                                 q31_t x,\r
+                                 q31_t y)\r
+  {\r
+\r
+    q31_t diff;\r
+    q31_t r, s;\r
+\r
+    r = (short) x;\r
+    s = (short) y;\r
+\r
+    r = ((r >> 1) - (s >> 1));\r
+    s = (((x >> 17) - (y >> 17)) << 16);\r
+\r
+    diff = (s & 0xFFFF0000) | (r & 0x0000FFFF);\r
+\r
+    return diff;\r
+  }\r
+\r
+  /*\r
+   * @brief C custom defined QASX for M3 and M0 processors\r
+   */\r
+  __STATIC_INLINE q31_t __QASX(\r
+                              q31_t x,\r
+                              q31_t y)\r
+  {\r
+\r
+    q31_t sum = 0;\r
+\r
+    sum = ((sum + clip_q31_to_q15((q31_t) ((short) (x >> 16) + (short) y))) << 16) +\r
+      clip_q31_to_q15((q31_t) ((short) x - (short) (y >> 16)));\r
+\r
+    return sum;\r
+  }\r
+\r
+  /*\r
+   * @brief C custom defined SHASX for M3 and M0 processors\r
+   */\r
+  __STATIC_INLINE q31_t __SHASX(\r
+                               q31_t x,\r
+                               q31_t y)\r
+  {\r
+\r
+    q31_t sum;\r
+    q31_t r, s;\r
+\r
+    r = (short) x;\r
+    s = (short) y;\r
+\r
+    r = ((r >> 1) - (y >> 17));\r
+    s = (((x >> 17) + (s >> 1)) << 16);\r
+\r
+    sum = (s & 0xFFFF0000) | (r & 0x0000FFFF);\r
+\r
+    return sum;\r
+  }\r
+\r
+\r
+  /*\r
+   * @brief C custom defined QSAX for M3 and M0 processors\r
+   */\r
+  __STATIC_INLINE q31_t __QSAX(\r
+                              q31_t x,\r
+                              q31_t y)\r
+  {\r
+\r
+    q31_t sum = 0;\r
+\r
+    sum = ((sum + clip_q31_to_q15((q31_t) ((short) (x >> 16) - (short) y))) << 16) +\r
+      clip_q31_to_q15((q31_t) ((short) x + (short) (y >> 16)));\r
+\r
+    return sum;\r
+  }\r
+\r
+  /*\r
+   * @brief C custom defined SHSAX for M3 and M0 processors\r
+   */\r
+  __STATIC_INLINE q31_t __SHSAX(\r
+                               q31_t x,\r
+                               q31_t y)\r
+  {\r
+\r
+    q31_t sum;\r
+    q31_t r, s;\r
+\r
+    r = (short) x;\r
+    s = (short) y;\r
+\r
+    r = ((r >> 1) + (y >> 17));\r
+    s = (((x >> 17) - (s >> 1)) << 16);\r
+\r
+    sum = (s & 0xFFFF0000) | (r & 0x0000FFFF);\r
+\r
+    return sum;\r
+  }\r
+\r
+  /*\r
+   * @brief C custom defined SMUSDX for M3 and M0 processors\r
+   */\r
+  __STATIC_INLINE q31_t __SMUSDX(\r
+                                q31_t x,\r
+                                q31_t y)\r
+  {\r
+\r
+    return ((q31_t)(((short) x * (short) (y >> 16)) -\r
+                   ((short) (x >> 16) * (short) y)));\r
+  }\r
+\r
+  /*\r
+   * @brief C custom defined SMUADX for M3 and M0 processors\r
+   */\r
+  __STATIC_INLINE q31_t __SMUADX(\r
+                                q31_t x,\r
+                                q31_t y)\r
+  {\r
+\r
+    return ((q31_t)(((short) x * (short) (y >> 16)) +\r
+                   ((short) (x >> 16) * (short) y)));\r
+  }\r
+\r
+  /*\r
+   * @brief C custom defined QADD for M3 and M0 processors\r
+   */\r
+  __STATIC_INLINE q31_t __QADD(\r
+                              q31_t x,\r
+                              q31_t y)\r
+  {\r
+    return clip_q63_to_q31((q63_t) x + y);\r
+  }\r
+\r
+  /*\r
+   * @brief C custom defined QSUB for M3 and M0 processors\r
+   */\r
+  __STATIC_INLINE q31_t __QSUB(\r
+                              q31_t x,\r
+                              q31_t y)\r
+  {\r
+    return clip_q63_to_q31((q63_t) x - y);\r
+  }\r
+\r
+  /*\r
+   * @brief C custom defined SMLAD for M3 and M0 processors\r
+   */\r
+  __STATIC_INLINE q31_t __SMLAD(\r
+                               q31_t x,\r
+                               q31_t y,\r
+                               q31_t sum)\r
+  {\r
+\r
+    return (sum + ((short) (x >> 16) * (short) (y >> 16)) +\r
+            ((short) x * (short) y));\r
+  }\r
+\r
+  /*\r
+   * @brief C custom defined SMLADX for M3 and M0 processors\r
+   */\r
+  __STATIC_INLINE q31_t __SMLADX(\r
+                                q31_t x,\r
+                                q31_t y,\r
+                                q31_t sum)\r
+  {\r
+\r
+    return (sum + ((short) (x >> 16) * (short) (y)) +\r
+            ((short) x * (short) (y >> 16)));\r
+  }\r
+\r
+  /*\r
+   * @brief C custom defined SMLSDX for M3 and M0 processors\r
+   */\r
+  __STATIC_INLINE q31_t __SMLSDX(\r
+                                q31_t x,\r
+                                q31_t y,\r
+                                q31_t sum)\r
+  {\r
+\r
+    return (sum - ((short) (x >> 16) * (short) (y)) +\r
+            ((short) x * (short) (y >> 16)));\r
+  }\r
+\r
+  /*\r
+   * @brief C custom defined SMLALD for M3 and M0 processors\r
+   */\r
+  __STATIC_INLINE q63_t __SMLALD(\r
+                                q31_t x,\r
+                                q31_t y,\r
+                                q63_t sum)\r
+  {\r
+\r
+    return (sum + ((short) (x >> 16) * (short) (y >> 16)) +\r
+            ((short) x * (short) y));\r
+  }\r
+\r
+  /*\r
+   * @brief C custom defined SMLALDX for M3 and M0 processors\r
+   */\r
+  __STATIC_INLINE q63_t __SMLALDX(\r
+                                 q31_t x,\r
+                                 q31_t y,\r
+                                 q63_t sum)\r
+  {\r
+\r
+    return (sum + ((short) (x >> 16) * (short) y)) +\r
+      ((short) x * (short) (y >> 16));\r
+  }\r
+\r
+  /*\r
+   * @brief C custom defined SMUAD for M3 and M0 processors\r
+   */\r
+  __STATIC_INLINE q31_t __SMUAD(\r
+                               q31_t x,\r
+                               q31_t y)\r
+  {\r
+\r
+    return (((x >> 16) * (y >> 16)) +\r
+            (((x << 16) >> 16) * ((y << 16) >> 16)));\r
+  }\r
+\r
+  /*\r
+   * @brief C custom defined SMUSD for M3 and M0 processors\r
+   */\r
+  __STATIC_INLINE q31_t __SMUSD(\r
+                               q31_t x,\r
+                               q31_t y)\r
+  {\r
+\r
+    return (-((x >> 16) * (y >> 16)) +\r
+            (((x << 16) >> 16) * ((y << 16) >> 16)));\r
+  }\r
+\r
+\r
+\r
+\r
+#endif /* (ARM_MATH_CM3) || defined (ARM_MATH_CM0) */\r
+\r
+\r
+  /**\r
+   * @brief Instance structure for the Q7 FIR filter.\r
+   */\r
+  typedef struct\r
+  {\r
+    uint16_t numTaps;        /**< number of filter coefficients in the filter. */\r
+    q7_t *pState;            /**< points to the state variable array. The array is of length numTaps+blockSize-1. */\r
+    q7_t *pCoeffs;           /**< points to the coefficient array. The array is of length numTaps.*/\r
+  } arm_fir_instance_q7;\r
+\r
+  /**\r
+   * @brief Instance structure for the Q15 FIR filter.\r
+   */\r
+  typedef struct\r
+  {\r
+    uint16_t numTaps;         /**< number of filter coefficients in the filter. */\r
+    q15_t *pState;            /**< points to the state variable array. The array is of length numTaps+blockSize-1. */\r
+    q15_t *pCoeffs;           /**< points to the coefficient array. The array is of length numTaps.*/\r
+  } arm_fir_instance_q15;\r
+\r
+  /**\r
+   * @brief Instance structure for the Q31 FIR filter.\r
+   */\r
+  typedef struct\r
+  {\r
+    uint16_t numTaps;         /**< number of filter coefficients in the filter. */\r
+    q31_t *pState;            /**< points to the state variable array. The array is of length numTaps+blockSize-1. */\r
+    q31_t *pCoeffs;           /**< points to the coefficient array. The array is of length numTaps. */\r
+  } arm_fir_instance_q31;\r
+\r
+  /**\r
+   * @brief Instance structure for the floating-point FIR filter.\r
+   */\r
+  typedef struct\r
+  {\r
+    uint16_t numTaps;     /**< number of filter coefficients in the filter. */\r
+    float32_t *pState;    /**< points to the state variable array. The array is of length numTaps+blockSize-1. */\r
+    float32_t *pCoeffs;   /**< points to the coefficient array. The array is of length numTaps. */\r
+  } arm_fir_instance_f32;\r
+\r
+\r
+  /**\r
+   * @brief Processing function for the Q7 FIR filter.\r
+   * @param[in] *S points to an instance of the Q7 FIR filter structure.\r
+   * @param[in] *pSrc points to the block of input data.\r
+   * @param[out] *pDst points to the block of output data.\r
+   * @param[in] blockSize number of samples to process.\r
+   * @return none.\r
+   */\r
+  void arm_fir_q7(\r
+                 const arm_fir_instance_q7 * S,\r
+                  q7_t * pSrc,\r
+                 q7_t * pDst,\r
+                 uint32_t blockSize);\r
+\r
+\r
+  /**\r
+   * @brief  Initialization function for the Q7 FIR filter.\r
+   * @param[in,out] *S points to an instance of the Q7 FIR structure.\r
+   * @param[in] numTaps  Number of filter coefficients in the filter.\r
+   * @param[in] *pCoeffs points to the filter coefficients.\r
+   * @param[in] *pState points to the state buffer.\r
+   * @param[in] blockSize number of samples that are processed.\r
+   * @return none\r
+   */\r
+  void arm_fir_init_q7(\r
+                      arm_fir_instance_q7 * S,\r
+                      uint16_t numTaps,\r
+                      q7_t * pCoeffs,\r
+                      q7_t * pState,\r
+                      uint32_t blockSize);\r
+\r
+\r
+  /**\r
+   * @brief Processing function for the Q15 FIR filter.\r
+   * @param[in] *S points to an instance of the Q15 FIR structure.\r
+   * @param[in] *pSrc points to the block of input data.\r
+   * @param[out] *pDst points to the block of output data.\r
+   * @param[in] blockSize number of samples to process.\r
+   * @return none.\r
+   */\r
+  void arm_fir_q15(\r
+                  const arm_fir_instance_q15 * S,\r
+                   q15_t * pSrc,\r
+                  q15_t * pDst,\r
+                  uint32_t blockSize);\r
+\r
+  /**\r
+   * @brief Processing function for the fast Q15 FIR filter for Cortex-M3 and Cortex-M4.\r
+   * @param[in] *S points to an instance of the Q15 FIR filter structure.\r
+   * @param[in] *pSrc points to the block of input data.\r
+   * @param[out] *pDst points to the block of output data.\r
+   * @param[in] blockSize number of samples to process.\r
+   * @return none.\r
+   */\r
+  void arm_fir_fast_q15(\r
+                       const arm_fir_instance_q15 * S,\r
+                        q15_t * pSrc,\r
+                       q15_t * pDst,\r
+                       uint32_t blockSize);\r
+\r
+  /**\r
+   * @brief  Initialization function for the Q15 FIR filter.\r
+   * @param[in,out] *S points to an instance of the Q15 FIR filter structure.\r
+   * @param[in] numTaps  Number of filter coefficients in the filter. Must be even and greater than or equal to 4.\r
+   * @param[in] *pCoeffs points to the filter coefficients.\r
+   * @param[in] *pState points to the state buffer.\r
+   * @param[in] blockSize number of samples that are processed at a time.\r
+   * @return The function returns ARM_MATH_SUCCESS if initialization was successful or ARM_MATH_ARGUMENT_ERROR if\r
+   * <code>numTaps</code> is not a supported value.\r
+   */\r
+\r
+       arm_status arm_fir_init_q15(\r
+                             arm_fir_instance_q15 * S,\r
+                             uint16_t numTaps,\r
+                             q15_t * pCoeffs,\r
+                             q15_t * pState,\r
+                             uint32_t blockSize);\r
+\r
+  /**\r
+   * @brief Processing function for the Q31 FIR filter.\r
+   * @param[in] *S points to an instance of the Q31 FIR filter structure.\r
+   * @param[in] *pSrc points to the block of input data.\r
+   * @param[out] *pDst points to the block of output data.\r
+   * @param[in] blockSize number of samples to process.\r
+   * @return none.\r
+   */\r
+  void arm_fir_q31(\r
+                  const arm_fir_instance_q31 * S,\r
+                   q31_t * pSrc,\r
+                  q31_t * pDst,\r
+                  uint32_t blockSize);\r
+\r
+  /**\r
+   * @brief Processing function for the fast Q31 FIR filter for Cortex-M3 and Cortex-M4.\r
+   * @param[in] *S points to an instance of the Q31 FIR structure.\r
+   * @param[in] *pSrc points to the block of input data.\r
+   * @param[out] *pDst points to the block of output data.\r
+   * @param[in] blockSize number of samples to process.\r
+   * @return none.\r
+   */\r
+  void arm_fir_fast_q31(\r
+                       const arm_fir_instance_q31 * S,\r
+                        q31_t * pSrc,\r
+                       q31_t * pDst,\r
+                       uint32_t blockSize);\r
+\r
+  /**\r
+   * @brief  Initialization function for the Q31 FIR filter.\r
+   * @param[in,out] *S points to an instance of the Q31 FIR structure.\r
+   * @param[in]        numTaps  Number of filter coefficients in the filter.\r
+   * @param[in]        *pCoeffs points to the filter coefficients.\r
+   * @param[in]        *pState points to the state buffer.\r
+   * @param[in]        blockSize number of samples that are processed at a time.\r
+   * @return           none.\r
+   */\r
+  void arm_fir_init_q31(\r
+                       arm_fir_instance_q31 * S,\r
+                       uint16_t numTaps,\r
+                       q31_t * pCoeffs,\r
+                       q31_t * pState,\r
+                       uint32_t blockSize);\r
+\r
+  /**\r
+   * @brief Processing function for the floating-point FIR filter.\r
+   * @param[in] *S points to an instance of the floating-point FIR structure.\r
+   * @param[in] *pSrc points to the block of input data.\r
+   * @param[out] *pDst points to the block of output data.\r
+   * @param[in] blockSize number of samples to process.\r
+   * @return none.\r
+   */\r
+  void arm_fir_f32(\r
+                  const arm_fir_instance_f32 * S,\r
+                   float32_t * pSrc,\r
+                  float32_t * pDst,\r
+                  uint32_t blockSize);\r
+\r
+  /**\r
+   * @brief  Initialization function for the floating-point FIR filter.\r
+   * @param[in,out] *S points to an instance of the floating-point FIR filter structure.\r
+   * @param[in]        numTaps  Number of filter coefficients in the filter.\r
+   * @param[in]        *pCoeffs points to the filter coefficients.\r
+   * @param[in]        *pState points to the state buffer.\r
+   * @param[in]        blockSize number of samples that are processed at a time.\r
+   * @return           none.\r
+   */\r
+  void arm_fir_init_f32(\r
+                       arm_fir_instance_f32 * S,\r
+                       uint16_t numTaps,\r
+                       float32_t * pCoeffs,\r
+                       float32_t * pState,\r
+                       uint32_t blockSize);\r
+\r
+\r
+  /**\r
+   * @brief Instance structure for the Q15 Biquad cascade filter.\r
+   */\r
+  typedef struct\r
+  {\r
+    int8_t numStages;         /**< number of 2nd order stages in the filter.  Overall order is 2*numStages. */\r
+    q15_t *pState;            /**< Points to the array of state coefficients.  The array is of length 4*numStages. */\r
+    q15_t *pCoeffs;           /**< Points to the array of coefficients.  The array is of length 5*numStages. */\r
+    int8_t postShift;         /**< Additional shift, in bits, applied to each output sample. */\r
+\r
+  } arm_biquad_casd_df1_inst_q15;\r
+\r
+\r
+  /**\r
+   * @brief Instance structure for the Q31 Biquad cascade filter.\r
+   */\r
+  typedef struct\r
+  {\r
+    uint32_t numStages;      /**< number of 2nd order stages in the filter.  Overall order is 2*numStages. */\r
+    q31_t *pState;           /**< Points to the array of state coefficients.  The array is of length 4*numStages. */\r
+    q31_t *pCoeffs;          /**< Points to the array of coefficients.  The array is of length 5*numStages. */\r
+    uint8_t postShift;       /**< Additional shift, in bits, applied to each output sample. */\r
+\r
+  } arm_biquad_casd_df1_inst_q31;\r
+\r
+  /**\r
+   * @brief Instance structure for the floating-point Biquad cascade filter.\r
+   */\r
+  typedef struct\r
+  {\r
+    uint32_t numStages;         /**< number of 2nd order stages in the filter.  Overall order is 2*numStages. */\r
+    float32_t *pState;          /**< Points to the array of state coefficients.  The array is of length 4*numStages. */\r
+    float32_t *pCoeffs;         /**< Points to the array of coefficients.  The array is of length 5*numStages. */\r
+\r
+\r
+  } arm_biquad_casd_df1_inst_f32;\r
+\r
+\r
+\r
+  /**\r
+   * @brief Processing function for the Q15 Biquad cascade filter.\r
+   * @param[in]  *S points to an instance of the Q15 Biquad cascade structure.\r
+   * @param[in]  *pSrc points to the block of input data.\r
+   * @param[out] *pDst points to the block of output data.\r
+   * @param[in]  blockSize number of samples to process.\r
+   * @return     none.\r
+   */\r
+\r
+  void arm_biquad_cascade_df1_q15(\r
+                                 const arm_biquad_casd_df1_inst_q15 * S,\r
+                                  q15_t * pSrc,\r
+                                 q15_t * pDst,\r
+                                 uint32_t blockSize);\r
+\r
+  /**\r
+   * @brief  Initialization function for the Q15 Biquad cascade filter.\r
+   * @param[in,out] *S           points to an instance of the Q15 Biquad cascade structure.\r
+   * @param[in]     numStages    number of 2nd order stages in the filter.\r
+   * @param[in]     *pCoeffs     points to the filter coefficients.\r
+   * @param[in]     *pState      points to the state buffer.\r
+   * @param[in]     postShift    Shift to be applied to the output. Varies according to the coefficients format\r
+   * @return        none\r
+   */\r
+\r
+  void arm_biquad_cascade_df1_init_q15(\r
+                                      arm_biquad_casd_df1_inst_q15 * S,\r
+                                      uint8_t numStages,\r
+                                      q15_t * pCoeffs,\r
+                                      q15_t * pState,\r
+                                      int8_t postShift);\r
+\r
+\r
+  /**\r
+   * @brief Fast but less precise processing function for the Q15 Biquad cascade filter for Cortex-M3 and Cortex-M4.\r
+   * @param[in]  *S points to an instance of the Q15 Biquad cascade structure.\r
+   * @param[in]  *pSrc points to the block of input data.\r
+   * @param[out] *pDst points to the block of output data.\r
+   * @param[in]  blockSize number of samples to process.\r
+   * @return     none.\r
+   */\r
+\r
+  void arm_biquad_cascade_df1_fast_q15(\r
+                                      const arm_biquad_casd_df1_inst_q15 * S,\r
+                                       q15_t * pSrc,\r
+                                      q15_t * pDst,\r
+                                      uint32_t blockSize);\r
+\r
+\r
+  /**\r
+   * @brief Processing function for the Q31 Biquad cascade filter\r
+   * @param[in]  *S         points to an instance of the Q31 Biquad cascade structure.\r
+   * @param[in]  *pSrc      points to the block of input data.\r
+   * @param[out] *pDst      points to the block of output data.\r
+   * @param[in]  blockSize  number of samples to process.\r
+   * @return     none.\r
+   */\r
+\r
+  void arm_biquad_cascade_df1_q31(\r
+                                 const arm_biquad_casd_df1_inst_q31 * S,\r
+                                  q31_t * pSrc,\r
+                                 q31_t * pDst,\r
+                                 uint32_t blockSize);\r
+\r
+  /**\r
+   * @brief Fast but less precise processing function for the Q31 Biquad cascade filter for Cortex-M3 and Cortex-M4.\r
+   * @param[in]  *S         points to an instance of the Q31 Biquad cascade structure.\r
+   * @param[in]  *pSrc      points to the block of input data.\r
+   * @param[out] *pDst      points to the block of output data.\r
+   * @param[in]  blockSize  number of samples to process.\r
+   * @return     none.\r
+   */\r
+\r
+  void arm_biquad_cascade_df1_fast_q31(\r
+                                      const arm_biquad_casd_df1_inst_q31 * S,\r
+                                       q31_t * pSrc,\r
+                                      q31_t * pDst,\r
+                                      uint32_t blockSize);\r
+\r
+  /**\r
+   * @brief  Initialization function for the Q31 Biquad cascade filter.\r
+   * @param[in,out] *S           points to an instance of the Q31 Biquad cascade structure.\r
+   * @param[in]     numStages      number of 2nd order stages in the filter.\r
+   * @param[in]     *pCoeffs     points to the filter coefficients.\r
+   * @param[in]     *pState      points to the state buffer.\r
+   * @param[in]     postShift    Shift to be applied to the output. Varies according to the coefficients format\r
+   * @return        none\r
+   */\r
+\r
+  void arm_biquad_cascade_df1_init_q31(\r
+                                      arm_biquad_casd_df1_inst_q31 * S,\r
+                                      uint8_t numStages,\r
+                                      q31_t * pCoeffs,\r
+                                      q31_t * pState,\r
+                                      int8_t postShift);\r
+\r
+  /**\r
+   * @brief Processing function for the floating-point Biquad cascade filter.\r
+   * @param[in]  *S         points to an instance of the floating-point Biquad cascade structure.\r
+   * @param[in]  *pSrc      points to the block of input data.\r
+   * @param[out] *pDst      points to the block of output data.\r
+   * @param[in]  blockSize  number of samples to process.\r
+   * @return     none.\r
+   */\r
+\r
+  void arm_biquad_cascade_df1_f32(\r
+                                 const arm_biquad_casd_df1_inst_f32 * S,\r
+                                  float32_t * pSrc,\r
+                                 float32_t * pDst,\r
+                                 uint32_t blockSize);\r
+\r
+  /**\r
+   * @brief  Initialization function for the floating-point Biquad cascade filter.\r
+   * @param[in,out] *S           points to an instance of the floating-point Biquad cascade structure.\r
+   * @param[in]     numStages    number of 2nd order stages in the filter.\r
+   * @param[in]     *pCoeffs     points to the filter coefficients.\r
+   * @param[in]     *pState      points to the state buffer.\r
+   * @return        none\r
+   */\r
+\r
+  void arm_biquad_cascade_df1_init_f32(\r
+                                      arm_biquad_casd_df1_inst_f32 * S,\r
+                                      uint8_t numStages,\r
+                                      float32_t * pCoeffs,\r
+                                      float32_t * pState);\r
+\r
+\r
+  /**\r
+   * @brief Instance structure for the floating-point matrix structure.\r
+   */\r
+\r
+  typedef struct\r
+  {\r
+    uint16_t numRows;     /**< number of rows of the matrix.     */\r
+    uint16_t numCols;     /**< number of columns of the matrix.  */\r
+    float32_t *pData;     /**< points to the data of the matrix. */\r
+  } arm_matrix_instance_f32;\r
+\r
+  /**\r
+   * @brief Instance structure for the Q15 matrix structure.\r
+   */\r
+\r
+  typedef struct\r
+  {\r
+    uint16_t numRows;     /**< number of rows of the matrix.     */\r
+    uint16_t numCols;     /**< number of columns of the matrix.  */\r
+    q15_t *pData;         /**< points to the data of the matrix. */\r
+\r
+  } arm_matrix_instance_q15;\r
+\r
+  /**\r
+   * @brief Instance structure for the Q31 matrix structure.\r
+   */\r
+\r
+  typedef struct\r
+  {\r
+    uint16_t numRows;     /**< number of rows of the matrix.     */\r
+    uint16_t numCols;     /**< number of columns of the matrix.  */\r
+    q31_t *pData;         /**< points to the data of the matrix. */\r
+\r
+  } arm_matrix_instance_q31;\r
+\r
+\r
+\r
+  /**\r
+   * @brief Floating-point matrix addition.\r
+   * @param[in]       *pSrcA points to the first input matrix structure\r
+   * @param[in]       *pSrcB points to the second input matrix structure\r
+   * @param[out]      *pDst points to output matrix structure\r
+   * @return     The function returns either\r
+   * <code>ARM_MATH_SIZE_MISMATCH</code> or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.\r
+   */\r
+\r
+  arm_status arm_mat_add_f32(\r
+                            const arm_matrix_instance_f32 * pSrcA,\r
+                            const arm_matrix_instance_f32 * pSrcB,\r
+                            arm_matrix_instance_f32 * pDst);\r
+\r
+  /**\r
+   * @brief Q15 matrix addition.\r
+   * @param[in]       *pSrcA points to the first input matrix structure\r
+   * @param[in]       *pSrcB points to the second input matrix structure\r
+   * @param[out]      *pDst points to output matrix structure\r
+   * @return     The function returns either\r
+   * <code>ARM_MATH_SIZE_MISMATCH</code> or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.\r
+   */\r
+\r
+  arm_status arm_mat_add_q15(\r
+                            const arm_matrix_instance_q15 * pSrcA,\r
+                            const arm_matrix_instance_q15 * pSrcB,\r
+                            arm_matrix_instance_q15 * pDst);\r
+\r
+  /**\r
+   * @brief Q31 matrix addition.\r
+   * @param[in]       *pSrcA points to the first input matrix structure\r
+   * @param[in]       *pSrcB points to the second input matrix structure\r
+   * @param[out]      *pDst points to output matrix structure\r
+   * @return     The function returns either\r
+   * <code>ARM_MATH_SIZE_MISMATCH</code> or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.\r
+   */\r
+\r
+  arm_status arm_mat_add_q31(\r
+                            const arm_matrix_instance_q31 * pSrcA,\r
+                            const arm_matrix_instance_q31 * pSrcB,\r
+                            arm_matrix_instance_q31 * pDst);\r
+\r
+\r
+  /**\r
+   * @brief Floating-point matrix transpose.\r
+   * @param[in]  *pSrc points to the input matrix\r
+   * @param[out] *pDst points to the output matrix\r
+   * @return   The function returns either  <code>ARM_MATH_SIZE_MISMATCH</code>\r
+   * or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.\r
+   */\r
+\r
+  arm_status arm_mat_trans_f32(\r
+                              const arm_matrix_instance_f32 * pSrc,\r
+                              arm_matrix_instance_f32 * pDst);\r
+\r
+\r
+  /**\r
+   * @brief Q15 matrix transpose.\r
+   * @param[in]  *pSrc points to the input matrix\r
+   * @param[out] *pDst points to the output matrix\r
+   * @return   The function returns either  <code>ARM_MATH_SIZE_MISMATCH</code>\r
+   * or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.\r
+   */\r
+\r
+  arm_status arm_mat_trans_q15(\r
+                              const arm_matrix_instance_q15 * pSrc,\r
+                              arm_matrix_instance_q15 * pDst);\r
+\r
+  /**\r
+   * @brief Q31 matrix transpose.\r
+   * @param[in]  *pSrc points to the input matrix\r
+   * @param[out] *pDst points to the output matrix\r
+   * @return   The function returns either  <code>ARM_MATH_SIZE_MISMATCH</code>\r
+   * or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.\r
+   */\r
+\r
+  arm_status arm_mat_trans_q31(\r
+                              const arm_matrix_instance_q31 * pSrc,\r
+                              arm_matrix_instance_q31 * pDst);\r
+\r
+\r
+  /**\r
+   * @brief Floating-point matrix multiplication\r
+   * @param[in]       *pSrcA points to the first input matrix structure\r
+   * @param[in]       *pSrcB points to the second input matrix structure\r
+   * @param[out]      *pDst points to output matrix structure\r
+   * @return     The function returns either\r
+   * <code>ARM_MATH_SIZE_MISMATCH</code> or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.\r
+   */\r
+\r
+  arm_status arm_mat_mult_f32(\r
+                             const arm_matrix_instance_f32 * pSrcA,\r
+                             const arm_matrix_instance_f32 * pSrcB,\r
+                             arm_matrix_instance_f32 * pDst);\r
+\r
+  /**\r
+   * @brief Q15 matrix multiplication\r
+   * @param[in]       *pSrcA points to the first input matrix structure\r
+   * @param[in]       *pSrcB points to the second input matrix structure\r
+   * @param[out]      *pDst points to output matrix structure\r
+   * @return     The function returns either\r
+   * <code>ARM_MATH_SIZE_MISMATCH</code> or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.\r
+   */\r
+\r
+  arm_status arm_mat_mult_q15(\r
+                             const arm_matrix_instance_q15 * pSrcA,\r
+                             const arm_matrix_instance_q15 * pSrcB,\r
+                             arm_matrix_instance_q15 * pDst,\r
+                             q15_t * pState);\r
+\r
+  /**\r
+   * @brief Q15 matrix multiplication (fast variant) for Cortex-M3 and Cortex-M4\r
+   * @param[in]       *pSrcA  points to the first input matrix structure\r
+   * @param[in]       *pSrcB  points to the second input matrix structure\r
+   * @param[out]      *pDst   points to output matrix structure\r
+   * @param[in]                  *pState points to the array for storing intermediate results\r
+   * @return     The function returns either\r
+   * <code>ARM_MATH_SIZE_MISMATCH</code> or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.\r
+   */\r
+\r
+  arm_status arm_mat_mult_fast_q15(\r
+                                  const arm_matrix_instance_q15 * pSrcA,\r
+                                  const arm_matrix_instance_q15 * pSrcB,\r
+                                  arm_matrix_instance_q15 * pDst,\r
+                                  q15_t * pState);\r
+\r
+  /**\r
+   * @brief Q31 matrix multiplication\r
+   * @param[in]       *pSrcA points to the first input matrix structure\r
+   * @param[in]       *pSrcB points to the second input matrix structure\r
+   * @param[out]      *pDst points to output matrix structure\r
+   * @return     The function returns either\r
+   * <code>ARM_MATH_SIZE_MISMATCH</code> or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.\r
+   */\r
+\r
+  arm_status arm_mat_mult_q31(\r
+                             const arm_matrix_instance_q31 * pSrcA,\r
+                             const arm_matrix_instance_q31 * pSrcB,\r
+                             arm_matrix_instance_q31 * pDst);\r
+\r
+  /**\r
+   * @brief Q31 matrix multiplication (fast variant) for Cortex-M3 and Cortex-M4\r
+   * @param[in]       *pSrcA points to the first input matrix structure\r
+   * @param[in]       *pSrcB points to the second input matrix structure\r
+   * @param[out]      *pDst points to output matrix structure\r
+   * @return     The function returns either\r
+   * <code>ARM_MATH_SIZE_MISMATCH</code> or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.\r
+   */\r
+\r
+  arm_status arm_mat_mult_fast_q31(\r
+                                  const arm_matrix_instance_q31 * pSrcA,\r
+                                  const arm_matrix_instance_q31 * pSrcB,\r
+                                  arm_matrix_instance_q31 * pDst);\r
+\r
+\r
+  /**\r
+   * @brief Floating-point matrix subtraction\r
+   * @param[in]       *pSrcA points to the first input matrix structure\r
+   * @param[in]       *pSrcB points to the second input matrix structure\r
+   * @param[out]      *pDst points to output matrix structure\r
+   * @return     The function returns either\r
+   * <code>ARM_MATH_SIZE_MISMATCH</code> or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.\r
+   */\r
+\r
+  arm_status arm_mat_sub_f32(\r
+                            const arm_matrix_instance_f32 * pSrcA,\r
+                            const arm_matrix_instance_f32 * pSrcB,\r
+                            arm_matrix_instance_f32 * pDst);\r
+\r
+  /**\r
+   * @brief Q15 matrix subtraction\r
+   * @param[in]       *pSrcA points to the first input matrix structure\r
+   * @param[in]       *pSrcB points to the second input matrix structure\r
+   * @param[out]      *pDst points to output matrix structure\r
+   * @return     The function returns either\r
+   * <code>ARM_MATH_SIZE_MISMATCH</code> or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.\r
+   */\r
+\r
+  arm_status arm_mat_sub_q15(\r
+                            const arm_matrix_instance_q15 * pSrcA,\r
+                            const arm_matrix_instance_q15 * pSrcB,\r
+                            arm_matrix_instance_q15 * pDst);\r
+\r
+  /**\r
+   * @brief Q31 matrix subtraction\r
+   * @param[in]       *pSrcA points to the first input matrix structure\r
+   * @param[in]       *pSrcB points to the second input matrix structure\r
+   * @param[out]      *pDst points to output matrix structure\r
+   * @return     The function returns either\r
+   * <code>ARM_MATH_SIZE_MISMATCH</code> or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.\r
+   */\r
+\r
+  arm_status arm_mat_sub_q31(\r
+                            const arm_matrix_instance_q31 * pSrcA,\r
+                            const arm_matrix_instance_q31 * pSrcB,\r
+                            arm_matrix_instance_q31 * pDst);\r
+\r
+  /**\r
+   * @brief Floating-point matrix scaling.\r
+   * @param[in]  *pSrc points to the input matrix\r
+   * @param[in]  scale scale factor\r
+   * @param[out] *pDst points to the output matrix\r
+   * @return     The function returns either\r
+   * <code>ARM_MATH_SIZE_MISMATCH</code> or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.\r
+   */\r
+\r
+  arm_status arm_mat_scale_f32(\r
+                              const arm_matrix_instance_f32 * pSrc,\r
+                              float32_t scale,\r
+                              arm_matrix_instance_f32 * pDst);\r
+\r
+  /**\r
+   * @brief Q15 matrix scaling.\r
+   * @param[in]       *pSrc points to input matrix\r
+   * @param[in]       scaleFract fractional portion of the scale factor\r
+   * @param[in]       shift number of bits to shift the result by\r
+   * @param[out]      *pDst points to output matrix\r
+   * @return     The function returns either\r
+   * <code>ARM_MATH_SIZE_MISMATCH</code> or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.\r
+   */\r
+\r
+  arm_status arm_mat_scale_q15(\r
+                              const arm_matrix_instance_q15 * pSrc,\r
+                              q15_t scaleFract,\r
+                              int32_t shift,\r
+                              arm_matrix_instance_q15 * pDst);\r
+\r
+  /**\r
+   * @brief Q31 matrix scaling.\r
+   * @param[in]       *pSrc points to input matrix\r
+   * @param[in]       scaleFract fractional portion of the scale factor\r
+   * @param[in]       shift number of bits to shift the result by\r
+   * @param[out]      *pDst points to output matrix structure\r
+   * @return     The function returns either\r
+   * <code>ARM_MATH_SIZE_MISMATCH</code> or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.\r
+   */\r
+\r
+  arm_status arm_mat_scale_q31(\r
+                              const arm_matrix_instance_q31 * pSrc,\r
+                              q31_t scaleFract,\r
+                              int32_t shift,\r
+                              arm_matrix_instance_q31 * pDst);\r
+\r
+\r
+  /**\r
+   * @brief  Q31 matrix initialization.\r
+   * @param[in,out] *S             points to an instance of the floating-point matrix structure.\r
+   * @param[in]     nRows          number of rows in the matrix.\r
+   * @param[in]     nColumns       number of columns in the matrix.\r
+   * @param[in]     *pData            points to the matrix data array.\r
+   * @return        none\r
+   */\r
+\r
+  void arm_mat_init_q31(\r
+                       arm_matrix_instance_q31 * S,\r
+                       uint16_t nRows,\r
+                       uint16_t nColumns,\r
+                       q31_t   *pData);\r
+\r
+  /**\r
+   * @brief  Q15 matrix initialization.\r
+   * @param[in,out] *S             points to an instance of the floating-point matrix structure.\r
+   * @param[in]     nRows          number of rows in the matrix.\r
+   * @param[in]     nColumns       number of columns in the matrix.\r
+   * @param[in]     *pData            points to the matrix data array.\r
+   * @return        none\r
+   */\r
+\r
+  void arm_mat_init_q15(\r
+                       arm_matrix_instance_q15 * S,\r
+                       uint16_t nRows,\r
+                       uint16_t nColumns,\r
+                       q15_t    *pData);\r
+\r
+  /**\r
+   * @brief  Floating-point matrix initialization.\r
+   * @param[in,out] *S             points to an instance of the floating-point matrix structure.\r
+   * @param[in]     nRows          number of rows in the matrix.\r
+   * @param[in]     nColumns       number of columns in the matrix.\r
+   * @param[in]     *pData            points to the matrix data array.\r
+   * @return        none\r
+   */\r
+\r
+  void arm_mat_init_f32(\r
+                       arm_matrix_instance_f32 * S,\r
+                       uint16_t nRows,\r
+                       uint16_t nColumns,\r
+                       float32_t   *pData);\r
+\r
+\r
+\r
+  /**\r
+   * @brief Instance structure for the Q15 PID Control.\r
+   */\r
+  typedef struct\r
+  {\r
+    q15_t A0;   /**< The derived gain, A0 = Kp + Ki + Kd . */\r
+       #ifdef ARM_MATH_CM0\r
+       q15_t A1;\r
+       q15_t A2;\r
+       #else\r
+    q31_t A1;           /**< The derived gain A1 = -Kp - 2Kd | Kd.*/\r
+       #endif\r
+    q15_t state[3];       /**< The state array of length 3. */\r
+    q15_t Kp;           /**< The proportional gain. */\r
+    q15_t Ki;           /**< The integral gain. */\r
+    q15_t Kd;           /**< The derivative gain. */\r
+  } arm_pid_instance_q15;\r
+\r
+  /**\r
+   * @brief Instance structure for the Q31 PID Control.\r
+   */\r
+  typedef struct\r
+  {\r
+    q31_t A0;            /**< The derived gain, A0 = Kp + Ki + Kd . */\r
+    q31_t A1;            /**< The derived gain, A1 = -Kp - 2Kd. */\r
+    q31_t A2;            /**< The derived gain, A2 = Kd . */\r
+    q31_t state[3];      /**< The state array of length 3. */\r
+    q31_t Kp;            /**< The proportional gain. */\r
+    q31_t Ki;            /**< The integral gain. */\r
+    q31_t Kd;            /**< The derivative gain. */\r
+\r
+  } arm_pid_instance_q31;\r
+\r
+  /**\r
+   * @brief Instance structure for the floating-point PID Control.\r
+   */\r
+  typedef struct\r
+  {\r
+    float32_t A0;          /**< The derived gain, A0 = Kp + Ki + Kd . */\r
+    float32_t A1;          /**< The derived gain, A1 = -Kp - 2Kd. */\r
+    float32_t A2;          /**< The derived gain, A2 = Kd . */\r
+    float32_t state[3];    /**< The state array of length 3. */\r
+    float32_t Kp;               /**< The proportional gain. */\r
+    float32_t Ki;               /**< The integral gain. */\r
+    float32_t Kd;               /**< The derivative gain. */\r
+  } arm_pid_instance_f32;\r
+\r
+\r
+\r
+  /**\r
+   * @brief  Initialization function for the floating-point PID Control.\r
+   * @param[in,out] *S      points to an instance of the PID structure.\r
+   * @param[in]     resetStateFlag  flag to reset the state. 0 = no change in state 1 = reset the state.\r
+   * @return none.\r
+   */\r
+  void arm_pid_init_f32(\r
+                       arm_pid_instance_f32 * S,\r
+                       int32_t resetStateFlag);\r
+\r
+  /**\r
+   * @brief  Reset function for the floating-point PID Control.\r
+   * @param[in,out] *S is an instance of the floating-point PID Control structure\r
+   * @return none\r
+   */\r
+  void arm_pid_reset_f32(\r
+                        arm_pid_instance_f32 * S);\r
+\r
+\r
+  /**\r
+   * @brief  Initialization function for the Q31 PID Control.\r
+   * @param[in,out] *S points to an instance of the Q15 PID structure.\r
+   * @param[in]     resetStateFlag  flag to reset the state. 0 = no change in state 1 = reset the state.\r
+   * @return none.\r
+   */\r
+  void arm_pid_init_q31(\r
+                       arm_pid_instance_q31 * S,\r
+                       int32_t resetStateFlag);\r
+\r
+\r
+  /**\r
+   * @brief  Reset function for the Q31 PID Control.\r
+   * @param[in,out] *S points to an instance of the Q31 PID Control structure\r
+   * @return none\r
+   */\r
+\r
+  void arm_pid_reset_q31(\r
+                        arm_pid_instance_q31 * S);\r
+\r
+  /**\r
+   * @brief  Initialization function for the Q15 PID Control.\r
+   * @param[in,out] *S points to an instance of the Q15 PID structure.\r
+   * @param[in] resetStateFlag  flag to reset the state. 0 = no change in state 1 = reset the state.\r
+   * @return none.\r
+   */\r
+  void arm_pid_init_q15(\r
+                       arm_pid_instance_q15 * S,\r
+                       int32_t resetStateFlag);\r
+\r
+  /**\r
+   * @brief  Reset function for the Q15 PID Control.\r
+   * @param[in,out] *S points to an instance of the q15 PID Control structure\r
+   * @return none\r
+   */\r
+  void arm_pid_reset_q15(\r
+                        arm_pid_instance_q15 * S);\r
+\r
+\r
+  /**\r
+   * @brief Instance structure for the floating-point Linear Interpolate function.\r
+   */\r
+  typedef struct\r
+  {\r
+    uint32_t nValues;           /**< nValues */\r
+    float32_t x1;               /**< x1 */\r
+    float32_t xSpacing;         /**< xSpacing */\r
+    float32_t *pYData;          /**< pointer to the table of Y values */\r
+  } arm_linear_interp_instance_f32;\r
+\r
+  /**\r
+   * @brief Instance structure for the floating-point bilinear interpolation function.\r
+   */\r
+\r
+  typedef struct\r
+  {\r
+    uint16_t numRows;  /**< number of rows in the data table. */\r
+    uint16_t numCols;  /**< number of columns in the data table. */\r
+    float32_t *pData;  /**< points to the data table. */\r
+  } arm_bilinear_interp_instance_f32;\r
+\r
+   /**\r
+   * @brief Instance structure for the Q31 bilinear interpolation function.\r
+   */\r
+\r
+  typedef struct\r
+  {\r
+    uint16_t numRows;  /**< number of rows in the data table. */\r
+    uint16_t numCols;  /**< number of columns in the data table. */\r
+    q31_t *pData;      /**< points to the data table. */\r
+  } arm_bilinear_interp_instance_q31;\r
+\r
+   /**\r
+   * @brief Instance structure for the Q15 bilinear interpolation function.\r
+   */\r
+\r
+  typedef struct\r
+  {\r
+    uint16_t numRows;  /**< number of rows in the data table. */\r
+    uint16_t numCols;  /**< number of columns in the data table. */\r
+    q15_t *pData;      /**< points to the data table. */\r
+  } arm_bilinear_interp_instance_q15;\r
+\r
+   /**\r
+   * @brief Instance structure for the Q15 bilinear interpolation function.\r
+   */\r
+\r
+  typedef struct\r
+  {\r
+    uint16_t numRows;  /**< number of rows in the data table. */\r
+    uint16_t numCols;  /**< number of columns in the data table. */\r
+    q7_t *pData;               /**< points to the data table. */\r
+  } arm_bilinear_interp_instance_q7;\r
+\r
+\r
+  /**\r
+   * @brief Q7 vector multiplication.\r
+   * @param[in]       *pSrcA points to the first input vector\r
+   * @param[in]       *pSrcB points to the second input vector\r
+   * @param[out]      *pDst  points to the output vector\r
+   * @param[in]       blockSize number of samples in each vector\r
+   * @return none.\r
+   */\r
+\r
+  void arm_mult_q7(\r
+                   q7_t * pSrcA,\r
+                   q7_t * pSrcB,\r
+                  q7_t * pDst,\r
+                  uint32_t blockSize);\r
+\r
+  /**\r
+   * @brief Q15 vector multiplication.\r
+   * @param[in]       *pSrcA points to the first input vector\r
+   * @param[in]       *pSrcB points to the second input vector\r
+   * @param[out]      *pDst  points to the output vector\r
+   * @param[in]       blockSize number of samples in each vector\r
+   * @return none.\r
+   */\r
+\r
+  void arm_mult_q15(\r
+                    q15_t * pSrcA,\r
+                    q15_t * pSrcB,\r
+                   q15_t * pDst,\r
+                   uint32_t blockSize);\r
+\r
+  /**\r
+   * @brief Q31 vector multiplication.\r
+   * @param[in]       *pSrcA points to the first input vector\r
+   * @param[in]       *pSrcB points to the second input vector\r
+   * @param[out]      *pDst points to the output vector\r
+   * @param[in]       blockSize number of samples in each vector\r
+   * @return none.\r
+   */\r
+\r
+  void arm_mult_q31(\r
+                    q31_t * pSrcA,\r
+                    q31_t * pSrcB,\r
+                   q31_t * pDst,\r
+                   uint32_t blockSize);\r
+\r
+  /**\r
+   * @brief Floating-point vector multiplication.\r
+   * @param[in]       *pSrcA points to the first input vector\r
+   * @param[in]       *pSrcB points to the second input vector\r
+   * @param[out]      *pDst points to the output vector\r
+   * @param[in]       blockSize number of samples in each vector\r
+   * @return none.\r
+   */\r
+\r
+  void arm_mult_f32(\r
+                    float32_t * pSrcA,\r
+                    float32_t * pSrcB,\r
+                   float32_t * pDst,\r
+                   uint32_t blockSize);\r
+\r
+\r
+  /**\r
+   * @brief Instance structure for the Q15 CFFT/CIFFT function.\r
+   */\r
+\r
+  typedef struct\r
+  {\r
+    uint16_t  fftLen;                /**< length of the FFT. */\r
+    uint8_t   ifftFlag;              /**< flag that selects forward (ifftFlag=0) or inverse (ifftFlag=1) transform. */\r
+    uint8_t   bitReverseFlag;        /**< flag that enables (bitReverseFlag=1) or disables (bitReverseFlag=0) bit reversal of output. */\r
+    q15_t     *pTwiddle;             /**< points to the twiddle factor table. */\r
+    uint16_t  *pBitRevTable;         /**< points to the bit reversal table. */\r
+    uint16_t  twidCoefModifier;      /**< twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. */\r
+    uint16_t  bitRevFactor;          /**< bit reversal modifier that supports different size FFTs with the same bit reversal table. */\r
+  } arm_cfft_radix4_instance_q15;\r
+\r
+  /**\r
+   * @brief Instance structure for the Q31 CFFT/CIFFT function.\r
+   */\r
+\r
+  typedef struct\r
+  {\r
+    uint16_t    fftLen;              /**< length of the FFT. */\r
+    uint8_t     ifftFlag;            /**< flag that selects forward (ifftFlag=0) or inverse (ifftFlag=1) transform. */\r
+    uint8_t     bitReverseFlag;      /**< flag that enables (bitReverseFlag=1) or disables (bitReverseFlag=0) bit reversal of output. */\r
+    q31_t       *pTwiddle;           /**< points to the twiddle factor table. */\r
+    uint16_t    *pBitRevTable;       /**< points to the bit reversal table. */\r
+    uint16_t    twidCoefModifier;    /**< twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. */\r
+    uint16_t    bitRevFactor;        /**< bit reversal modifier that supports different size FFTs with the same bit reversal table. */\r
+  } arm_cfft_radix4_instance_q31;\r
+\r
+  /**\r
+   * @brief Instance structure for the floating-point CFFT/CIFFT function.\r
+   */\r
+\r
+  typedef struct\r
+  {\r
+    uint16_t     fftLen;               /**< length of the FFT. */\r
+    uint8_t      ifftFlag;             /**< flag that selects forward (ifftFlag=0) or inverse (ifftFlag=1) transform. */\r
+    uint8_t      bitReverseFlag;       /**< flag that enables (bitReverseFlag=1) or disables (bitReverseFlag=0) bit reversal of output. */\r
+    float32_t    *pTwiddle;            /**< points to the twiddle factor table. */\r
+    uint16_t     *pBitRevTable;        /**< points to the bit reversal table. */\r
+    uint16_t     twidCoefModifier;     /**< twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. */\r
+    uint16_t     bitRevFactor;         /**< bit reversal modifier that supports different size FFTs with the same bit reversal table. */\r
+       float32_t    onebyfftLen;          /**< value of 1/fftLen. */\r
+  } arm_cfft_radix4_instance_f32;\r
+\r
+  /**\r
+   * @brief Processing function for the Q15 CFFT/CIFFT.\r
+   * @param[in]      *S    points to an instance of the Q15 CFFT/CIFFT structure.\r
+   * @param[in, out] *pSrc points to the complex data buffer. Processing occurs in-place.\r
+   * @return none.\r
+   */\r
+\r
+  void arm_cfft_radix4_q15(\r
+                          const arm_cfft_radix4_instance_q15 * S,\r
+                          q15_t * pSrc);\r
+\r
+  /**\r
+   * @brief Initialization function for the Q15 CFFT/CIFFT.\r
+   * @param[in,out] *S             points to an instance of the Q15 CFFT/CIFFT structure.\r
+   * @param[in]     fftLen         length of the FFT.\r
+   * @param[in]     ifftFlag       flag that selects forward (ifftFlag=0) or inverse (ifftFlag=1) transform.\r
+   * @param[in]     bitReverseFlag flag that enables (bitReverseFlag=1) or disables (bitReverseFlag=0) bit reversal of output.\r
+   * @return        arm_status     function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_ARGUMENT_ERROR if <code>fftLen</code> is not a supported value.\r
+   */\r
+\r
+  arm_status arm_cfft_radix4_init_q15(\r
+                                     arm_cfft_radix4_instance_q15 * S,\r
+                                     uint16_t fftLen,\r
+                                     uint8_t ifftFlag,\r
+                                     uint8_t bitReverseFlag);\r
+\r
+  /**\r
+   * @brief Processing function for the Q31 CFFT/CIFFT.\r
+   * @param[in]      *S    points to an instance of the Q31 CFFT/CIFFT structure.\r
+   * @param[in, out] *pSrc points to the complex data buffer. Processing occurs in-place.\r
+   * @return none.\r
+   */\r
+\r
+  void arm_cfft_radix4_q31(\r
+                          const arm_cfft_radix4_instance_q31 * S,\r
+                          q31_t * pSrc);\r
+\r
+  /**\r
+   * @brief  Initialization function for the Q31 CFFT/CIFFT.\r
+   * @param[in,out] *S             points to an instance of the Q31 CFFT/CIFFT structure.\r
+   * @param[in]     fftLen         length of the FFT.\r
+   * @param[in]     ifftFlag       flag that selects forward (ifftFlag=0) or inverse (ifftFlag=1) transform.\r
+   * @param[in]     bitReverseFlag flag that enables (bitReverseFlag=1) or disables (bitReverseFlag=0) bit reversal of output.\r
+   * @return        arm_status     function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_ARGUMENT_ERROR if <code>fftLen</code> is not a supported value.\r
+   */\r
+\r
+  arm_status arm_cfft_radix4_init_q31(\r
+                                     arm_cfft_radix4_instance_q31 * S,\r
+                                     uint16_t fftLen,\r
+                                     uint8_t ifftFlag,\r
+                                     uint8_t bitReverseFlag);\r
+\r
+  /**\r
+   * @brief Processing function for the floating-point CFFT/CIFFT.\r
+   * @param[in]      *S    points to an instance of the floating-point CFFT/CIFFT structure.\r
+   * @param[in, out] *pSrc points to the complex data buffer. Processing occurs in-place.\r
+   * @return none.\r
+   */\r
+\r
+  void arm_cfft_radix4_f32(\r
+                          const arm_cfft_radix4_instance_f32 * S,\r
+                          float32_t * pSrc);\r
+\r
+  /**\r
+   * @brief  Initialization function for the floating-point CFFT/CIFFT.\r
+   * @param[in,out] *S             points to an instance of the floating-point CFFT/CIFFT structure.\r
+   * @param[in]     fftLen         length of the FFT.\r
+   * @param[in]     ifftFlag       flag that selects forward (ifftFlag=0) or inverse (ifftFlag=1) transform.\r
+   * @param[in]     bitReverseFlag flag that enables (bitReverseFlag=1) or disables (bitReverseFlag=0) bit reversal of output.\r
+   * @return        The function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_ARGUMENT_ERROR if <code>fftLen</code> is not a supported value.\r
+   */\r
+\r
+  arm_status arm_cfft_radix4_init_f32(\r
+                                     arm_cfft_radix4_instance_f32 * S,\r
+                                     uint16_t fftLen,\r
+                                     uint8_t ifftFlag,\r
+                                     uint8_t bitReverseFlag);\r
+\r
+\r
+\r
+  /*----------------------------------------------------------------------\r
+   *           Internal functions prototypes FFT function\r
+   ----------------------------------------------------------------------*/\r
+\r
+  /**\r
+   * @brief  Core function for the floating-point CFFT butterfly process.\r
+   * @param[in, out] *pSrc            points to the in-place buffer of floating-point data type.\r
+   * @param[in]      fftLen           length of the FFT.\r
+   * @param[in]      *pCoef           points to the twiddle coefficient buffer.\r
+   * @param[in]      twidCoefModifier twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table.\r
+   * @return none.\r
+   */\r
+\r
+  void arm_radix4_butterfly_f32(\r
+                               float32_t * pSrc,\r
+                               uint16_t fftLen,\r
+                               float32_t * pCoef,\r
+                               uint16_t twidCoefModifier);\r
+\r
+  /**\r
+   * @brief  Core function for the floating-point CIFFT butterfly process.\r
+   * @param[in, out] *pSrc            points to the in-place buffer of floating-point data type.\r
+   * @param[in]      fftLen           length of the FFT.\r
+   * @param[in]      *pCoef           points to twiddle coefficient buffer.\r
+   * @param[in]      twidCoefModifier twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table.\r
+   * @param[in]      onebyfftLen      value of 1/fftLen.\r
+   * @return none.\r
+   */\r
+\r
+  void arm_radix4_butterfly_inverse_f32(\r
+                                       float32_t * pSrc,\r
+                                       uint16_t fftLen,\r
+                                       float32_t * pCoef,\r
+                                       uint16_t twidCoefModifier,\r
+                                       float32_t onebyfftLen);\r
+\r
+  /**\r
+   * @brief  In-place bit reversal function.\r
+   * @param[in, out] *pSrc        points to the in-place buffer of floating-point data type.\r
+   * @param[in]      fftSize      length of the FFT.\r
+   * @param[in]      bitRevFactor bit reversal modifier that supports different size FFTs with the same bit reversal table.\r
+   * @param[in]      *pBitRevTab  points to the bit reversal table.\r
+   * @return none.\r
+   */\r
+\r
+  void arm_bitreversal_f32(\r
+                          float32_t *pSrc,\r
+                          uint16_t fftSize,\r
+                          uint16_t bitRevFactor,\r
+                          uint16_t *pBitRevTab);\r
+\r
+  /**\r
+   * @brief  Core function for the Q31 CFFT butterfly process.\r
+   * @param[in, out] *pSrc            points to the in-place buffer of Q31 data type.\r
+   * @param[in]      fftLen           length of the FFT.\r
+   * @param[in]      *pCoef           points to twiddle coefficient buffer.\r
+   * @param[in]      twidCoefModifier twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table.\r
+   * @return none.\r
+   */\r
+\r
+  void arm_radix4_butterfly_q31(\r
+                               q31_t *pSrc,\r
+                               uint32_t fftLen,\r
+                               q31_t *pCoef,\r
+                               uint32_t twidCoefModifier);\r
+\r
+  /**\r
+   * @brief  Core function for the Q31 CIFFT butterfly process.\r
+   * @param[in, out] *pSrc            points to the in-place buffer of Q31 data type.\r
+   * @param[in]      fftLen           length of the FFT.\r
+   * @param[in]      *pCoef           points to twiddle coefficient buffer.\r
+   * @param[in]      twidCoefModifier twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table.\r
+   * @return none.\r
+   */\r
+\r
+  void arm_radix4_butterfly_inverse_q31(\r
+                                       q31_t * pSrc,\r
+                                       uint32_t fftLen,\r
+                                       q31_t * pCoef,\r
+                                       uint32_t twidCoefModifier);\r
+\r
+  /**\r
+   * @brief  In-place bit reversal function.\r
+   * @param[in, out] *pSrc        points to the in-place buffer of Q31 data type.\r
+   * @param[in]      fftLen       length of the FFT.\r
+   * @param[in]      bitRevFactor bit reversal modifier that supports different size FFTs with the same bit reversal table\r
+   * @param[in]      *pBitRevTab  points to bit reversal table.\r
+   * @return none.\r
+   */\r
+\r
+  void arm_bitreversal_q31(\r
+                          q31_t * pSrc,\r
+                          uint32_t fftLen,\r
+                          uint16_t bitRevFactor,\r
+                          uint16_t *pBitRevTab);\r
+\r
+  /**\r
+   * @brief  Core function for the Q15 CFFT butterfly process.\r
+   * @param[in, out] *pSrc16          points to the in-place buffer of Q15 data type.\r
+   * @param[in]      fftLen           length of the FFT.\r
+   * @param[in]      *pCoef16         points to twiddle coefficient buffer.\r
+   * @param[in]      twidCoefModifier twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table.\r
+   * @return none.\r
+   */\r
+\r
+  void arm_radix4_butterfly_q15(\r
+                               q15_t *pSrc16,\r
+                               uint32_t fftLen,\r
+                               q15_t *pCoef16,\r
+                               uint32_t twidCoefModifier);\r
+\r
+  /**\r
+   * @brief  Core function for the Q15 CIFFT butterfly process.\r
+   * @param[in, out] *pSrc16          points to the in-place buffer of Q15 data type.\r
+   * @param[in]      fftLen           length of the FFT.\r
+   * @param[in]      *pCoef16         points to twiddle coefficient buffer.\r
+   * @param[in]      twidCoefModifier twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table.\r
+   * @return none.\r
+   */\r
+\r
+  void arm_radix4_butterfly_inverse_q15(\r
+                                       q15_t *pSrc16,\r
+                                       uint32_t fftLen,\r
+                                       q15_t *pCoef16,\r
+                                       uint32_t twidCoefModifier);\r
+\r
+  /**\r
+   * @brief  In-place bit reversal function.\r
+   * @param[in, out] *pSrc        points to the in-place buffer of Q15 data type.\r
+   * @param[in]      fftLen       length of the FFT.\r
+   * @param[in]      bitRevFactor bit reversal modifier that supports different size FFTs with the same bit reversal table\r
+   * @param[in]      *pBitRevTab  points to bit reversal table.\r
+   * @return none.\r
+   */\r
+\r
+  void arm_bitreversal_q15(\r
+                          q15_t * pSrc,\r
+                          uint32_t fftLen,\r
+                          uint16_t bitRevFactor,\r
+                          uint16_t *pBitRevTab);\r
+\r
+  /**\r
+   * @brief Instance structure for the Q15 RFFT/RIFFT function.\r
+   */\r
+\r
+  typedef struct\r
+  {\r
+    uint32_t fftLenReal;                      /**< length of the real FFT. */\r
+    uint32_t fftLenBy2;                       /**< length of the complex FFT. */\r
+    uint8_t  ifftFlagR;                       /**< flag that selects forward (ifftFlagR=0) or inverse (ifftFlagR=1) transform. */\r
+       uint8_t  bitReverseFlagR;                 /**< flag that enables (bitReverseFlagR=1) or disables (bitReverseFlagR=0) bit reversal of output. */\r
+    uint32_t twidCoefRModifier;               /**< twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. */\r
+    q15_t    *pTwiddleAReal;                  /**< points to the real twiddle factor table. */\r
+    q15_t    *pTwiddleBReal;                  /**< points to the imag twiddle factor table. */\r
+    arm_cfft_radix4_instance_q15 *pCfft;         /**< points to the complex FFT instance. */\r
+  } arm_rfft_instance_q15;\r
+\r
+  /**\r
+   * @brief Instance structure for the Q31 RFFT/RIFFT function.\r
+   */\r
+\r
+  typedef struct\r
+  {\r
+    uint32_t fftLenReal;                        /**< length of the real FFT. */\r
+    uint32_t fftLenBy2;                         /**< length of the complex FFT. */\r
+    uint8_t  ifftFlagR;                         /**< flag that selects forward (ifftFlagR=0) or inverse (ifftFlagR=1) transform. */\r
+       uint8_t  bitReverseFlagR;                   /**< flag that enables (bitReverseFlagR=1) or disables (bitReverseFlagR=0) bit reversal of output. */\r
+    uint32_t twidCoefRModifier;                 /**< twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. */\r
+    q31_t    *pTwiddleAReal;                    /**< points to the real twiddle factor table. */\r
+    q31_t    *pTwiddleBReal;                    /**< points to the imag twiddle factor table. */\r
+    arm_cfft_radix4_instance_q31 *pCfft;        /**< points to the complex FFT instance. */\r
+  } arm_rfft_instance_q31;\r
+\r
+  /**\r
+   * @brief Instance structure for the floating-point RFFT/RIFFT function.\r
+   */\r
+\r
+  typedef struct\r
+  {\r
+    uint32_t  fftLenReal;                       /**< length of the real FFT. */\r
+    uint16_t  fftLenBy2;                        /**< length of the complex FFT. */\r
+    uint8_t   ifftFlagR;                        /**< flag that selects forward (ifftFlagR=0) or inverse (ifftFlagR=1) transform. */\r
+    uint8_t   bitReverseFlagR;                  /**< flag that enables (bitReverseFlagR=1) or disables (bitReverseFlagR=0) bit reversal of output. */\r
+       uint32_t  twidCoefRModifier;                /**< twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. */\r
+    float32_t *pTwiddleAReal;                   /**< points to the real twiddle factor table. */\r
+    float32_t *pTwiddleBReal;                   /**< points to the imag twiddle factor table. */\r
+    arm_cfft_radix4_instance_f32 *pCfft;        /**< points to the complex FFT instance. */\r
+  } arm_rfft_instance_f32;\r
+\r
+  /**\r
+   * @brief Processing function for the Q15 RFFT/RIFFT.\r
+   * @param[in]  *S    points to an instance of the Q15 RFFT/RIFFT structure.\r
+   * @param[in]  *pSrc points to the input buffer.\r
+   * @param[out] *pDst points to the output buffer.\r
+   * @return none.\r
+   */\r
+\r
+  void arm_rfft_q15(\r
+                   const arm_rfft_instance_q15 * S,\r
+                   q15_t * pSrc,\r
+                   q15_t * pDst);\r
+\r
+  /**\r
+   * @brief  Initialization function for the Q15 RFFT/RIFFT.\r
+   * @param[in, out] *S             points to an instance of the Q15 RFFT/RIFFT structure.\r
+   * @param[in]      *S_CFFT        points to an instance of the Q15 CFFT/CIFFT structure.\r
+   * @param[in]      fftLenReal     length of the FFT.\r
+   * @param[in]      ifftFlagR      flag that selects forward (ifftFlagR=0) or inverse (ifftFlagR=1) transform.\r
+   * @param[in]      bitReverseFlag flag that enables (bitReverseFlag=1) or disables (bitReverseFlag=0) bit reversal of output.\r
+   * @return           The function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_ARGUMENT_ERROR if <code>fftLenReal</code> is not a supported value.\r
+   */\r
+\r
+  arm_status arm_rfft_init_q15(\r
+                              arm_rfft_instance_q15 * S,\r
+                              arm_cfft_radix4_instance_q15 * S_CFFT,\r
+                              uint32_t fftLenReal,\r
+                              uint32_t ifftFlagR,\r
+                              uint32_t bitReverseFlag);\r
+\r
+  /**\r
+   * @brief Processing function for the Q31 RFFT/RIFFT.\r
+   * @param[in]  *S    points to an instance of the Q31 RFFT/RIFFT structure.\r
+   * @param[in]  *pSrc points to the input buffer.\r
+   * @param[out] *pDst points to the output buffer.\r
+   * @return none.\r
+   */\r
+\r
+  void arm_rfft_q31(\r
+                   const arm_rfft_instance_q31 * S,\r
+                   q31_t * pSrc,\r
+                   q31_t * pDst);\r
+\r
+  /**\r
+   * @brief  Initialization function for the Q31 RFFT/RIFFT.\r
+   * @param[in, out] *S             points to an instance of the Q31 RFFT/RIFFT structure.\r
+   * @param[in, out] *S_CFFT        points to an instance of the Q31 CFFT/CIFFT structure.\r
+   * @param[in]      fftLenReal     length of the FFT.\r
+   * @param[in]      ifftFlagR      flag that selects forward (ifftFlagR=0) or inverse (ifftFlagR=1) transform.\r
+   * @param[in]      bitReverseFlag flag that enables (bitReverseFlag=1) or disables (bitReverseFlag=0) bit reversal of output.\r
+   * @return           The function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_ARGUMENT_ERROR if <code>fftLenReal</code> is not a supported value.\r
+   */\r
+\r
+  arm_status arm_rfft_init_q31(\r
+                              arm_rfft_instance_q31 * S,\r
+                              arm_cfft_radix4_instance_q31 * S_CFFT,\r
+                              uint32_t fftLenReal,\r
+                              uint32_t ifftFlagR,\r
+                              uint32_t bitReverseFlag);\r
+\r
+  /**\r
+   * @brief  Initialization function for the floating-point RFFT/RIFFT.\r
+   * @param[in,out] *S             points to an instance of the floating-point RFFT/RIFFT structure.\r
+   * @param[in,out] *S_CFFT        points to an instance of the floating-point CFFT/CIFFT structure.\r
+   * @param[in]     fftLenReal     length of the FFT.\r
+   * @param[in]     ifftFlagR      flag that selects forward (ifftFlagR=0) or inverse (ifftFlagR=1) transform.\r
+   * @param[in]     bitReverseFlag flag that enables (bitReverseFlag=1) or disables (bitReverseFlag=0) bit reversal of output.\r
+   * @return           The function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_ARGUMENT_ERROR if <code>fftLenReal</code> is not a supported value.\r
+   */\r
+\r
+  arm_status arm_rfft_init_f32(\r
+                              arm_rfft_instance_f32 * S,\r
+                              arm_cfft_radix4_instance_f32 * S_CFFT,\r
+                              uint32_t fftLenReal,\r
+                              uint32_t ifftFlagR,\r
+                              uint32_t bitReverseFlag);\r
+\r
+  /**\r
+   * @brief Processing function for the floating-point RFFT/RIFFT.\r
+   * @param[in]  *S    points to an instance of the floating-point RFFT/RIFFT structure.\r
+   * @param[in]  *pSrc points to the input buffer.\r
+   * @param[out] *pDst points to the output buffer.\r
+   * @return none.\r
+   */\r
+\r
+  void arm_rfft_f32(\r
+                   const arm_rfft_instance_f32 * S,\r
+                   float32_t * pSrc,\r
+                   float32_t * pDst);\r
+\r
+  /**\r
+   * @brief Instance structure for the floating-point DCT4/IDCT4 function.\r
+   */\r
+\r
+  typedef struct\r
+  {\r
+    uint16_t N;                         /**< length of the DCT4. */\r
+    uint16_t Nby2;                      /**< half of the length of the DCT4. */\r
+    float32_t normalize;                /**< normalizing factor. */\r
+    float32_t *pTwiddle;                /**< points to the twiddle factor table. */\r
+    float32_t *pCosFactor;              /**< points to the cosFactor table. */\r
+    arm_rfft_instance_f32 *pRfft;        /**< points to the real FFT instance. */\r
+    arm_cfft_radix4_instance_f32 *pCfft; /**< points to the complex FFT instance. */\r
+  } arm_dct4_instance_f32;\r
+\r
+  /**\r
+   * @brief  Initialization function for the floating-point DCT4/IDCT4.\r
+   * @param[in,out] *S         points to an instance of floating-point DCT4/IDCT4 structure.\r
+   * @param[in]     *S_RFFT    points to an instance of floating-point RFFT/RIFFT structure.\r
+   * @param[in]     *S_CFFT    points to an instance of floating-point CFFT/CIFFT structure.\r
+   * @param[in]     N          length of the DCT4.\r
+   * @param[in]     Nby2       half of the length of the DCT4.\r
+   * @param[in]     normalize  normalizing factor.\r
+   * @return           arm_status function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_ARGUMENT_ERROR if <code>fftLenReal</code> is not a supported transform length.\r
+   */\r
+\r
+  arm_status arm_dct4_init_f32(\r
+                              arm_dct4_instance_f32 * S,\r
+                              arm_rfft_instance_f32 * S_RFFT,\r
+                              arm_cfft_radix4_instance_f32 * S_CFFT,\r
+                              uint16_t N,\r
+                              uint16_t Nby2,\r
+                              float32_t normalize);\r
+\r
+  /**\r
+   * @brief Processing function for the floating-point DCT4/IDCT4.\r
+   * @param[in]       *S             points to an instance of the floating-point DCT4/IDCT4 structure.\r
+   * @param[in]       *pState        points to state buffer.\r
+   * @param[in,out]   *pInlineBuffer points to the in-place input and output buffer.\r
+   * @return none.\r
+   */\r
+\r
+  void arm_dct4_f32(\r
+                   const arm_dct4_instance_f32 * S,\r
+                   float32_t * pState,\r
+                   float32_t * pInlineBuffer);\r
+\r
+  /**\r
+   * @brief Instance structure for the Q31 DCT4/IDCT4 function.\r
+   */\r
+\r
+  typedef struct\r
+  {\r
+    uint16_t N;                         /**< length of the DCT4. */\r
+    uint16_t Nby2;                      /**< half of the length of the DCT4. */\r
+    q31_t normalize;                    /**< normalizing factor. */\r
+    q31_t *pTwiddle;                    /**< points to the twiddle factor table. */\r
+    q31_t *pCosFactor;                  /**< points to the cosFactor table. */\r
+    arm_rfft_instance_q31 *pRfft;        /**< points to the real FFT instance. */\r
+    arm_cfft_radix4_instance_q31 *pCfft; /**< points to the complex FFT instance. */\r
+  } arm_dct4_instance_q31;\r
+\r
+  /**\r
+   * @brief  Initialization function for the Q31 DCT4/IDCT4.\r
+   * @param[in,out] *S         points to an instance of Q31 DCT4/IDCT4 structure.\r
+   * @param[in]     *S_RFFT    points to an instance of Q31 RFFT/RIFFT structure\r
+   * @param[in]     *S_CFFT    points to an instance of Q31 CFFT/CIFFT structure\r
+   * @param[in]     N          length of the DCT4.\r
+   * @param[in]     Nby2       half of the length of the DCT4.\r
+   * @param[in]     normalize  normalizing factor.\r
+   * @return           arm_status function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_ARGUMENT_ERROR if <code>N</code> is not a supported transform length.\r
+   */\r
+\r
+  arm_status arm_dct4_init_q31(\r
+                              arm_dct4_instance_q31 * S,\r
+                              arm_rfft_instance_q31 * S_RFFT,\r
+                              arm_cfft_radix4_instance_q31 * S_CFFT,\r
+                              uint16_t N,\r
+                              uint16_t Nby2,\r
+                              q31_t normalize);\r
+\r
+  /**\r
+   * @brief Processing function for the Q31 DCT4/IDCT4.\r
+   * @param[in]       *S             points to an instance of the Q31 DCT4 structure.\r
+   * @param[in]       *pState        points to state buffer.\r
+   * @param[in,out]   *pInlineBuffer points to the in-place input and output buffer.\r
+   * @return none.\r
+   */\r
+\r
+  void arm_dct4_q31(\r
+                   const arm_dct4_instance_q31 * S,\r
+                   q31_t * pState,\r
+                   q31_t * pInlineBuffer);\r
+\r
+  /**\r
+   * @brief Instance structure for the Q15 DCT4/IDCT4 function.\r
+   */\r
+\r
+  typedef struct\r
+  {\r
+    uint16_t N;                         /**< length of the DCT4. */\r
+    uint16_t Nby2;                      /**< half of the length of the DCT4. */\r
+    q15_t normalize;                    /**< normalizing factor. */\r
+    q15_t *pTwiddle;                    /**< points to the twiddle factor table. */\r
+    q15_t *pCosFactor;                  /**< points to the cosFactor table. */\r
+    arm_rfft_instance_q15 *pRfft;        /**< points to the real FFT instance. */\r
+    arm_cfft_radix4_instance_q15 *pCfft; /**< points to the complex FFT instance. */\r
+  } arm_dct4_instance_q15;\r
+\r
+  /**\r
+   * @brief  Initialization function for the Q15 DCT4/IDCT4.\r
+   * @param[in,out] *S         points to an instance of Q15 DCT4/IDCT4 structure.\r
+   * @param[in]     *S_RFFT    points to an instance of Q15 RFFT/RIFFT structure.\r
+   * @param[in]     *S_CFFT    points to an instance of Q15 CFFT/CIFFT structure.\r
+   * @param[in]     N          length of the DCT4.\r
+   * @param[in]     Nby2       half of the length of the DCT4.\r
+   * @param[in]     normalize  normalizing factor.\r
+   * @return           arm_status function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_ARGUMENT_ERROR if <code>N</code> is not a supported transform length.\r
+   */\r
+\r
+  arm_status arm_dct4_init_q15(\r
+                              arm_dct4_instance_q15 * S,\r
+                              arm_rfft_instance_q15 * S_RFFT,\r
+                              arm_cfft_radix4_instance_q15 * S_CFFT,\r
+                              uint16_t N,\r
+                              uint16_t Nby2,\r
+                              q15_t normalize);\r
+\r
+  /**\r
+   * @brief Processing function for the Q15 DCT4/IDCT4.\r
+   * @param[in]       *S             points to an instance of the Q15 DCT4 structure.\r
+   * @param[in]       *pState        points to state buffer.\r
+   * @param[in,out]   *pInlineBuffer points to the in-place input and output buffer.\r
+   * @return none.\r
+   */\r
+\r
+  void arm_dct4_q15(\r
+                   const arm_dct4_instance_q15 * S,\r
+                   q15_t * pState,\r
+                   q15_t * pInlineBuffer);\r
+\r
+  /**\r
+   * @brief Floating-point vector addition.\r
+   * @param[in]       *pSrcA points to the first input vector\r
+   * @param[in]       *pSrcB points to the second input vector\r
+   * @param[out]      *pDst points to the output vector\r
+   * @param[in]       blockSize number of samples in each vector\r
+   * @return none.\r
+   */\r
+\r
+  void arm_add_f32(\r
+                  float32_t * pSrcA,\r
+                  float32_t * pSrcB,\r
+                  float32_t * pDst,\r
+                  uint32_t blockSize);\r
+\r
+  /**\r
+   * @brief Q7 vector addition.\r
+   * @param[in]       *pSrcA points to the first input vector\r
+   * @param[in]       *pSrcB points to the second input vector\r
+   * @param[out]      *pDst points to the output vector\r
+   * @param[in]       blockSize number of samples in each vector\r
+   * @return none.\r
+   */\r
+\r
+  void arm_add_q7(\r
+                 q7_t * pSrcA,\r
+                 q7_t * pSrcB,\r
+                 q7_t * pDst,\r
+                 uint32_t blockSize);\r
+\r
+  /**\r
+   * @brief Q15 vector addition.\r
+   * @param[in]       *pSrcA points to the first input vector\r
+   * @param[in]       *pSrcB points to the second input vector\r
+   * @param[out]      *pDst points to the output vector\r
+   * @param[in]       blockSize number of samples in each vector\r
+   * @return none.\r
+   */\r
+\r
+  void arm_add_q15(\r
+                   q15_t * pSrcA,\r
+                   q15_t * pSrcB,\r
+                  q15_t * pDst,\r
+                  uint32_t blockSize);\r
+\r
+  /**\r
+   * @brief Q31 vector addition.\r
+   * @param[in]       *pSrcA points to the first input vector\r
+   * @param[in]       *pSrcB points to the second input vector\r
+   * @param[out]      *pDst points to the output vector\r
+   * @param[in]       blockSize number of samples in each vector\r
+   * @return none.\r
+   */\r
+\r
+  void arm_add_q31(\r
+                   q31_t * pSrcA,\r
+                   q31_t * pSrcB,\r
+                  q31_t * pDst,\r
+                  uint32_t blockSize);\r
+\r
+  /**\r
+   * @brief Floating-point vector subtraction.\r
+   * @param[in]       *pSrcA points to the first input vector\r
+   * @param[in]       *pSrcB points to the second input vector\r
+   * @param[out]      *pDst points to the output vector\r
+   * @param[in]       blockSize number of samples in each vector\r
+   * @return none.\r
+   */\r
+\r
+  void arm_sub_f32(\r
+                   float32_t * pSrcA,\r
+                   float32_t * pSrcB,\r
+                  float32_t * pDst,\r
+                  uint32_t blockSize);\r
+\r
+  /**\r
+   * @brief Q7 vector subtraction.\r
+   * @param[in]       *pSrcA points to the first input vector\r
+   * @param[in]       *pSrcB points to the second input vector\r
+   * @param[out]      *pDst points to the output vector\r
+   * @param[in]       blockSize number of samples in each vector\r
+   * @return none.\r
+   */\r
+\r
+  void arm_sub_q7(\r
+                  q7_t * pSrcA,\r
+                  q7_t * pSrcB,\r
+                 q7_t * pDst,\r
+                 uint32_t blockSize);\r
+\r
+  /**\r
+   * @brief Q15 vector subtraction.\r
+   * @param[in]       *pSrcA points to the first input vector\r
+   * @param[in]       *pSrcB points to the second input vector\r
+   * @param[out]      *pDst points to the output vector\r
+   * @param[in]       blockSize number of samples in each vector\r
+   * @return none.\r
+   */\r
+\r
+  void arm_sub_q15(\r
+                   q15_t * pSrcA,\r
+                   q15_t * pSrcB,\r
+                  q15_t * pDst,\r
+                  uint32_t blockSize);\r
+\r
+  /**\r
+   * @brief Q31 vector subtraction.\r
+   * @param[in]       *pSrcA points to the first input vector\r
+   * @param[in]       *pSrcB points to the second input vector\r
+   * @param[out]      *pDst points to the output vector\r
+   * @param[in]       blockSize number of samples in each vector\r
+   * @return none.\r
+   */\r
+\r
+  void arm_sub_q31(\r
+                   q31_t * pSrcA,\r
+                   q31_t * pSrcB,\r
+                  q31_t * pDst,\r
+                  uint32_t blockSize);\r
+\r
+  /**\r
+   * @brief Multiplies a floating-point vector by a scalar.\r
+   * @param[in]       *pSrc points to the input vector\r
+   * @param[in]       scale scale factor to be applied\r
+   * @param[out]      *pDst points to the output vector\r
+   * @param[in]       blockSize number of samples in the vector\r
+   * @return none.\r
+   */\r
+\r
+  void arm_scale_f32(\r
+                     float32_t * pSrc,\r
+                    float32_t scale,\r
+                    float32_t * pDst,\r
+                    uint32_t blockSize);\r
+\r
+  /**\r
+   * @brief Multiplies a Q7 vector by a scalar.\r
+   * @param[in]       *pSrc points to the input vector\r
+   * @param[in]       scaleFract fractional portion of the scale value\r
+   * @param[in]       shift number of bits to shift the result by\r
+   * @param[out]      *pDst points to the output vector\r
+   * @param[in]       blockSize number of samples in the vector\r
+   * @return none.\r
+   */\r
+\r
+  void arm_scale_q7(\r
+                    q7_t * pSrc,\r
+                   q7_t scaleFract,\r
+                   int8_t shift,\r
+                   q7_t * pDst,\r
+                   uint32_t blockSize);\r
+\r
+  /**\r
+   * @brief Multiplies a Q15 vector by a scalar.\r
+   * @param[in]       *pSrc points to the input vector\r
+   * @param[in]       scaleFract fractional portion of the scale value\r
+   * @param[in]       shift number of bits to shift the result by\r
+   * @param[out]      *pDst points to the output vector\r
+   * @param[in]       blockSize number of samples in the vector\r
+   * @return none.\r
+   */\r
+\r
+  void arm_scale_q15(\r
+                     q15_t * pSrc,\r
+                    q15_t scaleFract,\r
+                    int8_t shift,\r
+                    q15_t * pDst,\r
+                    uint32_t blockSize);\r
+\r
+  /**\r
+   * @brief Multiplies a Q31 vector by a scalar.\r
+   * @param[in]       *pSrc points to the input vector\r
+   * @param[in]       scaleFract fractional portion of the scale value\r
+   * @param[in]       shift number of bits to shift the result by\r
+   * @param[out]      *pDst points to the output vector\r
+   * @param[in]       blockSize number of samples in the vector\r
+   * @return none.\r
+   */\r
+\r
+  void arm_scale_q31(\r
+                     q31_t * pSrc,\r
+                    q31_t scaleFract,\r
+                    int8_t shift,\r
+                    q31_t * pDst,\r
+                    uint32_t blockSize);\r
+\r
+  /**\r
+   * @brief Q7 vector absolute value.\r
+   * @param[in]       *pSrc points to the input buffer\r
+   * @param[out]      *pDst points to the output buffer\r
+   * @param[in]       blockSize number of samples in each vector\r
+   * @return none.\r
+   */\r
+\r
+  void arm_abs_q7(\r
+                  q7_t * pSrc,\r
+                 q7_t * pDst,\r
+                 uint32_t blockSize);\r
+\r
+  /**\r
+   * @brief Floating-point vector absolute value.\r
+   * @param[in]       *pSrc points to the input buffer\r
+   * @param[out]      *pDst points to the output buffer\r
+   * @param[in]       blockSize number of samples in each vector\r
+   * @return none.\r
+   */\r
+\r
+  void arm_abs_f32(\r
+                   float32_t * pSrc,\r
+                  float32_t * pDst,\r
+                  uint32_t blockSize);\r
+\r
+  /**\r
+   * @brief Q15 vector absolute value.\r
+   * @param[in]       *pSrc points to the input buffer\r
+   * @param[out]      *pDst points to the output buffer\r
+   * @param[in]       blockSize number of samples in each vector\r
+   * @return none.\r
+   */\r
+\r
+  void arm_abs_q15(\r
+                   q15_t * pSrc,\r
+                  q15_t * pDst,\r
+                  uint32_t blockSize);\r
+\r
+  /**\r
+   * @brief Q31 vector absolute value.\r
+   * @param[in]       *pSrc points to the input buffer\r
+   * @param[out]      *pDst points to the output buffer\r
+   * @param[in]       blockSize number of samples in each vector\r
+   * @return none.\r
+   */\r
+\r
+  void arm_abs_q31(\r
+                   q31_t * pSrc,\r
+                  q31_t * pDst,\r
+                  uint32_t blockSize);\r
+\r
+  /**\r
+   * @brief Dot product of floating-point vectors.\r
+   * @param[in]       *pSrcA points to the first input vector\r
+   * @param[in]       *pSrcB points to the second input vector\r
+   * @param[in]       blockSize number of samples in each vector\r
+   * @param[out]      *result output result returned here\r
+   * @return none.\r
+   */\r
+\r
+  void arm_dot_prod_f32(\r
+                        float32_t * pSrcA,\r
+                        float32_t * pSrcB,\r
+                       uint32_t blockSize,\r
+                       float32_t * result);\r
+\r
+  /**\r
+   * @brief Dot product of Q7 vectors.\r
+   * @param[in]       *pSrcA points to the first input vector\r
+   * @param[in]       *pSrcB points to the second input vector\r
+   * @param[in]       blockSize number of samples in each vector\r
+   * @param[out]      *result output result returned here\r
+   * @return none.\r
+   */\r
+\r
+  void arm_dot_prod_q7(\r
+                       q7_t * pSrcA,\r
+                       q7_t * pSrcB,\r
+                      uint32_t blockSize,\r
+                      q31_t * result);\r
+\r
+  /**\r
+   * @brief Dot product of Q15 vectors.\r
+   * @param[in]       *pSrcA points to the first input vector\r
+   * @param[in]       *pSrcB points to the second input vector\r
+   * @param[in]       blockSize number of samples in each vector\r
+   * @param[out]      *result output result returned here\r
+   * @return none.\r
+   */\r
+\r
+  void arm_dot_prod_q15(\r
+                        q15_t * pSrcA,\r
+                        q15_t * pSrcB,\r
+                       uint32_t blockSize,\r
+                       q63_t * result);\r
+\r
+  /**\r
+   * @brief Dot product of Q31 vectors.\r
+   * @param[in]       *pSrcA points to the first input vector\r
+   * @param[in]       *pSrcB points to the second input vector\r
+   * @param[in]       blockSize number of samples in each vector\r
+   * @param[out]      *result output result returned here\r
+   * @return none.\r
+   */\r
+\r
+  void arm_dot_prod_q31(\r
+                        q31_t * pSrcA,\r
+                        q31_t * pSrcB,\r
+                       uint32_t blockSize,\r
+                       q63_t * result);\r
+\r
+  /**\r
+   * @brief  Shifts the elements of a Q7 vector a specified number of bits.\r
+   * @param[in]  *pSrc points to the input vector\r
+   * @param[in]  shiftBits number of bits to shift.  A positive value shifts left; a negative value shifts right.\r
+   * @param[out]  *pDst points to the output vector\r
+   * @param[in]  blockSize number of samples in the vector\r
+   * @return none.\r
+   */\r
+\r
+  void arm_shift_q7(\r
+                    q7_t * pSrc,\r
+                   int8_t shiftBits,\r
+                   q7_t * pDst,\r
+                   uint32_t blockSize);\r
+\r
+  /**\r
+   * @brief  Shifts the elements of a Q15 vector a specified number of bits.\r
+   * @param[in]  *pSrc points to the input vector\r
+   * @param[in]  shiftBits number of bits to shift.  A positive value shifts left; a negative value shifts right.\r
+   * @param[out]  *pDst points to the output vector\r
+   * @param[in]  blockSize number of samples in the vector\r
+   * @return none.\r
+   */\r
+\r
+  void arm_shift_q15(\r
+                     q15_t * pSrc,\r
+                    int8_t shiftBits,\r
+                    q15_t * pDst,\r
+                    uint32_t blockSize);\r
+\r
+  /**\r
+   * @brief  Shifts the elements of a Q31 vector a specified number of bits.\r
+   * @param[in]  *pSrc points to the input vector\r
+   * @param[in]  shiftBits number of bits to shift.  A positive value shifts left; a negative value shifts right.\r
+   * @param[out]  *pDst points to the output vector\r
+   * @param[in]  blockSize number of samples in the vector\r
+   * @return none.\r
+   */\r
+\r
+  void arm_shift_q31(\r
+                     q31_t * pSrc,\r
+                    int8_t shiftBits,\r
+                    q31_t * pDst,\r
+                    uint32_t blockSize);\r
+\r
+  /**\r
+   * @brief  Adds a constant offset to a floating-point vector.\r
+   * @param[in]  *pSrc points to the input vector\r
+   * @param[in]  offset is the offset to be added\r
+   * @param[out]  *pDst points to the output vector\r
+   * @param[in]  blockSize number of samples in the vector\r
+   * @return none.\r
+   */\r
+\r
+  void arm_offset_f32(\r
+                      float32_t * pSrc,\r
+                     float32_t offset,\r
+                     float32_t * pDst,\r
+                     uint32_t blockSize);\r
+\r
+  /**\r
+   * @brief  Adds a constant offset to a Q7 vector.\r
+   * @param[in]  *pSrc points to the input vector\r
+   * @param[in]  offset is the offset to be added\r
+   * @param[out]  *pDst points to the output vector\r
+   * @param[in]  blockSize number of samples in the vector\r
+   * @return none.\r
+   */\r
+\r
+  void arm_offset_q7(\r
+                     q7_t * pSrc,\r
+                    q7_t offset,\r
+                    q7_t * pDst,\r
+                    uint32_t blockSize);\r
+\r
+  /**\r
+   * @brief  Adds a constant offset to a Q15 vector.\r
+   * @param[in]  *pSrc points to the input vector\r
+   * @param[in]  offset is the offset to be added\r
+   * @param[out]  *pDst points to the output vector\r
+   * @param[in]  blockSize number of samples in the vector\r
+   * @return none.\r
+   */\r
+\r
+  void arm_offset_q15(\r
+                      q15_t * pSrc,\r
+                     q15_t offset,\r
+                     q15_t * pDst,\r
+                     uint32_t blockSize);\r
+\r
+  /**\r
+   * @brief  Adds a constant offset to a Q31 vector.\r
+   * @param[in]  *pSrc points to the input vector\r
+   * @param[in]  offset is the offset to be added\r
+   * @param[out]  *pDst points to the output vector\r
+   * @param[in]  blockSize number of samples in the vector\r
+   * @return none.\r
+   */\r
+\r
+  void arm_offset_q31(\r
+                      q31_t * pSrc,\r
+                     q31_t offset,\r
+                     q31_t * pDst,\r
+                     uint32_t blockSize);\r
+\r
+  /**\r
+   * @brief  Negates the elements of a floating-point vector.\r
+   * @param[in]  *pSrc points to the input vector\r
+   * @param[out]  *pDst points to the output vector\r
+   * @param[in]  blockSize number of samples in the vector\r
+   * @return none.\r
+   */\r
+\r
+  void arm_negate_f32(\r
+                      float32_t * pSrc,\r
+                     float32_t * pDst,\r
+                     uint32_t blockSize);\r
+\r
+  /**\r
+   * @brief  Negates the elements of a Q7 vector.\r
+   * @param[in]  *pSrc points to the input vector\r
+   * @param[out]  *pDst points to the output vector\r
+   * @param[in]  blockSize number of samples in the vector\r
+   * @return none.\r
+   */\r
+\r
+  void arm_negate_q7(\r
+                     q7_t * pSrc,\r
+                    q7_t * pDst,\r
+                    uint32_t blockSize);\r
+\r
+  /**\r
+   * @brief  Negates the elements of a Q15 vector.\r
+   * @param[in]  *pSrc points to the input vector\r
+   * @param[out]  *pDst points to the output vector\r
+   * @param[in]  blockSize number of samples in the vector\r
+   * @return none.\r
+   */\r
+\r
+  void arm_negate_q15(\r
+                      q15_t * pSrc,\r
+                     q15_t * pDst,\r
+                     uint32_t blockSize);\r
+\r
+  /**\r
+   * @brief  Negates the elements of a Q31 vector.\r
+   * @param[in]  *pSrc points to the input vector\r
+   * @param[out]  *pDst points to the output vector\r
+   * @param[in]  blockSize number of samples in the vector\r
+   * @return none.\r
+   */\r
+\r
+  void arm_negate_q31(\r
+                      q31_t * pSrc,\r
+                     q31_t * pDst,\r
+                     uint32_t blockSize);\r
+  /**\r
+   * @brief  Copies the elements of a floating-point vector.\r
+   * @param[in]  *pSrc input pointer\r
+   * @param[out]  *pDst output pointer\r
+   * @param[in]  blockSize number of samples to process\r
+   * @return none.\r
+   */\r
+  void arm_copy_f32(\r
+                    float32_t * pSrc,\r
+                   float32_t * pDst,\r
+                   uint32_t blockSize);\r
+\r
+  /**\r
+   * @brief  Copies the elements of a Q7 vector.\r
+   * @param[in]  *pSrc input pointer\r
+   * @param[out]  *pDst output pointer\r
+   * @param[in]  blockSize number of samples to process\r
+   * @return none.\r
+   */\r
+  void arm_copy_q7(\r
+                   q7_t * pSrc,\r
+                  q7_t * pDst,\r
+                  uint32_t blockSize);\r
+\r
+  /**\r
+   * @brief  Copies the elements of a Q15 vector.\r
+   * @param[in]  *pSrc input pointer\r
+   * @param[out]  *pDst output pointer\r
+   * @param[in]  blockSize number of samples to process\r
+   * @return none.\r
+   */\r
+  void arm_copy_q15(\r
+                    q15_t * pSrc,\r
+                   q15_t * pDst,\r
+                   uint32_t blockSize);\r
+\r
+  /**\r
+   * @brief  Copies the elements of a Q31 vector.\r
+   * @param[in]  *pSrc input pointer\r
+   * @param[out]  *pDst output pointer\r
+   * @param[in]  blockSize number of samples to process\r
+   * @return none.\r
+   */\r
+  void arm_copy_q31(\r
+                    q31_t * pSrc,\r
+                   q31_t * pDst,\r
+                   uint32_t blockSize);\r
+  /**\r
+   * @brief  Fills a constant value into a floating-point vector.\r
+   * @param[in]  value input value to be filled\r
+   * @param[out]  *pDst output pointer\r
+   * @param[in]  blockSize number of samples to process\r
+   * @return none.\r
+   */\r
+  void arm_fill_f32(\r
+                    float32_t value,\r
+                   float32_t * pDst,\r
+                   uint32_t blockSize);\r
+\r
+  /**\r
+   * @brief  Fills a constant value into a Q7 vector.\r
+   * @param[in]  value input value to be filled\r
+   * @param[out]  *pDst output pointer\r
+   * @param[in]  blockSize number of samples to process\r
+   * @return none.\r
+   */\r
+  void arm_fill_q7(\r
+                   q7_t value,\r
+                  q7_t * pDst,\r
+                  uint32_t blockSize);\r
+\r
+  /**\r
+   * @brief  Fills a constant value into a Q15 vector.\r
+   * @param[in]  value input value to be filled\r
+   * @param[out]  *pDst output pointer\r
+   * @param[in]  blockSize number of samples to process\r
+   * @return none.\r
+   */\r
+  void arm_fill_q15(\r
+                    q15_t value,\r
+                   q15_t * pDst,\r
+                   uint32_t blockSize);\r
+\r
+  /**\r
+   * @brief  Fills a constant value into a Q31 vector.\r
+   * @param[in]  value input value to be filled\r
+   * @param[out]  *pDst output pointer\r
+   * @param[in]  blockSize number of samples to process\r
+   * @return none.\r
+   */\r
+  void arm_fill_q31(\r
+                    q31_t value,\r
+                   q31_t * pDst,\r
+                   uint32_t blockSize);\r
+\r
+/**\r
+ * @brief Convolution of floating-point sequences.\r
+ * @param[in] *pSrcA points to the first input sequence.\r
+ * @param[in] srcALen length of the first input sequence.\r
+ * @param[in] *pSrcB points to the second input sequence.\r
+ * @param[in] srcBLen length of the second input sequence.\r
+ * @param[out] *pDst points to the location where the output result is written.  Length srcALen+srcBLen-1.\r
+ * @return none.\r
+ */\r
+\r
+  void arm_conv_f32(\r
+                    float32_t * pSrcA,\r
+                   uint32_t srcALen,\r
+                    float32_t * pSrcB,\r
+                   uint32_t srcBLen,\r
+                   float32_t * pDst);\r
+\r
+/**\r
+ * @brief Convolution of Q15 sequences.\r
+ * @param[in] *pSrcA points to the first input sequence.\r
+ * @param[in] srcALen length of the first input sequence.\r
+ * @param[in] *pSrcB points to the second input sequence.\r
+ * @param[in] srcBLen length of the second input sequence.\r
+ * @param[out] *pDst points to the location where the output result is written.  Length srcALen+srcBLen-1.\r
+ * @return none.\r
+ */\r
+\r
+  void arm_conv_q15(\r
+                    q15_t * pSrcA,\r
+                   uint32_t srcALen,\r
+                    q15_t * pSrcB,\r
+                   uint32_t srcBLen,\r
+                   q15_t * pDst);\r
+\r
+  /**\r
+   * @brief Convolution of Q15 sequences (fast version) for Cortex-M3 and Cortex-M4\r
+   * @param[in] *pSrcA points to the first input sequence.\r
+   * @param[in] srcALen length of the first input sequence.\r
+   * @param[in] *pSrcB points to the second input sequence.\r
+   * @param[in] srcBLen length of the second input sequence.\r
+   * @param[out] *pDst points to the block of output data  Length srcALen+srcBLen-1.\r
+   * @return none.\r
+   */\r
+\r
+  void arm_conv_fast_q15(\r
+                         q15_t * pSrcA,\r
+                        uint32_t srcALen,\r
+                         q15_t * pSrcB,\r
+                        uint32_t srcBLen,\r
+                        q15_t * pDst);\r
+\r
+  /**\r
+   * @brief Convolution of Q31 sequences.\r
+   * @param[in] *pSrcA points to the first input sequence.\r
+   * @param[in] srcALen length of the first input sequence.\r
+   * @param[in] *pSrcB points to the second input sequence.\r
+   * @param[in] srcBLen length of the second input sequence.\r
+   * @param[out] *pDst points to the block of output data  Length srcALen+srcBLen-1.\r
+   * @return none.\r
+   */\r
+\r
+  void arm_conv_q31(\r
+                    q31_t * pSrcA,\r
+                   uint32_t srcALen,\r
+                    q31_t * pSrcB,\r
+                   uint32_t srcBLen,\r
+                   q31_t * pDst);\r
+\r
+  /**\r
+   * @brief Convolution of Q31 sequences (fast version) for Cortex-M3 and Cortex-M4\r
+   * @param[in] *pSrcA points to the first input sequence.\r
+   * @param[in] srcALen length of the first input sequence.\r
+   * @param[in] *pSrcB points to the second input sequence.\r
+   * @param[in] srcBLen length of the second input sequence.\r
+   * @param[out] *pDst points to the block of output data  Length srcALen+srcBLen-1.\r
+   * @return none.\r
+   */\r
+\r
+  void arm_conv_fast_q31(\r
+                         q31_t * pSrcA,\r
+                        uint32_t srcALen,\r
+                         q31_t * pSrcB,\r
+                        uint32_t srcBLen,\r
+                        q31_t * pDst);\r
+\r
+  /**\r
+   * @brief Convolution of Q7 sequences.\r
+   * @param[in] *pSrcA points to the first input sequence.\r
+   * @param[in] srcALen length of the first input sequence.\r
+   * @param[in] *pSrcB points to the second input sequence.\r
+   * @param[in] srcBLen length of the second input sequence.\r
+   * @param[out] *pDst points to the block of output data  Length srcALen+srcBLen-1.\r
+   * @return none.\r
+   */\r
+\r
+  void arm_conv_q7(\r
+                   q7_t * pSrcA,\r
+                  uint32_t srcALen,\r
+                   q7_t * pSrcB,\r
+                  uint32_t srcBLen,\r
+                  q7_t * pDst);\r
+\r
+  /**\r
+   * @brief Partial convolution of floating-point sequences.\r
+   * @param[in]       *pSrcA points to the first input sequence.\r
+   * @param[in]       srcALen length of the first input sequence.\r
+   * @param[in]       *pSrcB points to the second input sequence.\r
+   * @param[in]       srcBLen length of the second input sequence.\r
+   * @param[out]      *pDst points to the block of output data\r
+   * @param[in]       firstIndex is the first output sample to start with.\r
+   * @param[in]       numPoints is the number of output points to be computed.\r
+   * @return  Returns either ARM_MATH_SUCCESS if the function completed correctly or ARM_MATH_ARGUMENT_ERROR if the requested subset is not in the range [0 srcALen+srcBLen-2].\r
+   */\r
+\r
+  arm_status arm_conv_partial_f32(\r
+                                  float32_t * pSrcA,\r
+                                 uint32_t srcALen,\r
+                                  float32_t * pSrcB,\r
+                                 uint32_t srcBLen,\r
+                                 float32_t * pDst,\r
+                                 uint32_t firstIndex,\r
+                                 uint32_t numPoints);\r
+\r
+  /**\r
+   * @brief Partial convolution of Q15 sequences.\r
+   * @param[in]       *pSrcA points to the first input sequence.\r
+   * @param[in]       srcALen length of the first input sequence.\r
+   * @param[in]       *pSrcB points to the second input sequence.\r
+   * @param[in]       srcBLen length of the second input sequence.\r
+   * @param[out]      *pDst points to the block of output data\r
+   * @param[in]       firstIndex is the first output sample to start with.\r
+   * @param[in]       numPoints is the number of output points to be computed.\r
+   * @return  Returns either ARM_MATH_SUCCESS if the function completed correctly or ARM_MATH_ARGUMENT_ERROR if the requested subset is not in the range [0 srcALen+srcBLen-2].\r
+   */\r
+\r
+  arm_status arm_conv_partial_q15(\r
+                                  q15_t * pSrcA,\r
+                                 uint32_t srcALen,\r
+                                  q15_t * pSrcB,\r
+                                 uint32_t srcBLen,\r
+                                 q15_t * pDst,\r
+                                 uint32_t firstIndex,\r
+                                 uint32_t numPoints);\r
+\r
+  /**\r
+   * @brief Partial convolution of Q15 sequences (fast version) for Cortex-M3 and Cortex-M4\r
+   * @param[in]       *pSrcA points to the first input sequence.\r
+   * @param[in]       srcALen length of the first input sequence.\r
+   * @param[in]       *pSrcB points to the second input sequence.\r
+   * @param[in]       srcBLen length of the second input sequence.\r
+   * @param[out]      *pDst points to the block of output data\r
+   * @param[in]       firstIndex is the first output sample to start with.\r
+   * @param[in]       numPoints is the number of output points to be computed.\r
+   * @return  Returns either ARM_MATH_SUCCESS if the function completed correctly or ARM_MATH_ARGUMENT_ERROR if the requested subset is not in the range [0 srcALen+srcBLen-2].\r
+   */\r
+\r
+  arm_status arm_conv_partial_fast_q15(\r
+                                       q15_t * pSrcA,\r
+                                      uint32_t srcALen,\r
+                                       q15_t * pSrcB,\r
+                                      uint32_t srcBLen,\r
+                                      q15_t * pDst,\r
+                                      uint32_t firstIndex,\r
+                                      uint32_t numPoints);\r
+\r
+  /**\r
+   * @brief Partial convolution of Q31 sequences.\r
+   * @param[in]       *pSrcA points to the first input sequence.\r
+   * @param[in]       srcALen length of the first input sequence.\r
+   * @param[in]       *pSrcB points to the second input sequence.\r
+   * @param[in]       srcBLen length of the second input sequence.\r
+   * @param[out]      *pDst points to the block of output data\r
+   * @param[in]       firstIndex is the first output sample to start with.\r
+   * @param[in]       numPoints is the number of output points to be computed.\r
+   * @return  Returns either ARM_MATH_SUCCESS if the function completed correctly or ARM_MATH_ARGUMENT_ERROR if the requested subset is not in the range [0 srcALen+srcBLen-2].\r
+   */\r
+\r
+  arm_status arm_conv_partial_q31(\r
+                                  q31_t * pSrcA,\r
+                                 uint32_t srcALen,\r
+                                  q31_t * pSrcB,\r
+                                 uint32_t srcBLen,\r
+                                 q31_t * pDst,\r
+                                 uint32_t firstIndex,\r
+                                 uint32_t numPoints);\r
+\r
+\r
+  /**\r
+   * @brief Partial convolution of Q31 sequences (fast version) for Cortex-M3 and Cortex-M4\r
+   * @param[in]       *pSrcA points to the first input sequence.\r
+   * @param[in]       srcALen length of the first input sequence.\r
+   * @param[in]       *pSrcB points to the second input sequence.\r
+   * @param[in]       srcBLen length of the second input sequence.\r
+   * @param[out]      *pDst points to the block of output data\r
+   * @param[in]       firstIndex is the first output sample to start with.\r
+   * @param[in]       numPoints is the number of output points to be computed.\r
+   * @return  Returns either ARM_MATH_SUCCESS if the function completed correctly or ARM_MATH_ARGUMENT_ERROR if the requested subset is not in the range [0 srcALen+srcBLen-2].\r
+   */\r
+\r
+  arm_status arm_conv_partial_fast_q31(\r
+                                       q31_t * pSrcA,\r
+                                      uint32_t srcALen,\r
+                                       q31_t * pSrcB,\r
+                                      uint32_t srcBLen,\r
+                                      q31_t * pDst,\r
+                                      uint32_t firstIndex,\r
+                                      uint32_t numPoints);\r
+\r
+  /**\r
+   * @brief Partial convolution of Q7 sequences.\r
+   * @param[in]       *pSrcA points to the first input sequence.\r
+   * @param[in]       srcALen length of the first input sequence.\r
+   * @param[in]       *pSrcB points to the second input sequence.\r
+   * @param[in]       srcBLen length of the second input sequence.\r
+   * @param[out]      *pDst points to the block of output data\r
+   * @param[in]       firstIndex is the first output sample to start with.\r
+   * @param[in]       numPoints is the number of output points to be computed.\r
+   * @return  Returns either ARM_MATH_SUCCESS if the function completed correctly or ARM_MATH_ARGUMENT_ERROR if the requested subset is not in the range [0 srcALen+srcBLen-2].\r
+   */\r
+\r
+  arm_status arm_conv_partial_q7(\r
+                                 q7_t * pSrcA,\r
+                                uint32_t srcALen,\r
+                                 q7_t * pSrcB,\r
+                                uint32_t srcBLen,\r
+                                q7_t * pDst,\r
+                                uint32_t firstIndex,\r
+                                uint32_t numPoints);\r
+\r
+\r
+  /**\r
+   * @brief Instance structure for the Q15 FIR decimator.\r
+   */\r
+\r
+  typedef struct\r
+  {\r
+    uint8_t M;                      /**< decimation factor. */\r
+    uint16_t numTaps;               /**< number of coefficients in the filter. */\r
+    q15_t *pCoeffs;                  /**< points to the coefficient array. The array is of length numTaps.*/\r
+    q15_t *pState;                   /**< points to the state variable array. The array is of length numTaps+blockSize-1. */\r
+  } arm_fir_decimate_instance_q15;\r
+\r
+  /**\r
+   * @brief Instance structure for the Q31 FIR decimator.\r
+   */\r
+\r
+  typedef struct\r
+  {\r
+    uint8_t M;                  /**< decimation factor. */\r
+    uint16_t numTaps;           /**< number of coefficients in the filter. */\r
+    q31_t *pCoeffs;              /**< points to the coefficient array. The array is of length numTaps.*/\r
+    q31_t *pState;               /**< points to the state variable array. The array is of length numTaps+blockSize-1. */\r
+\r
+  } arm_fir_decimate_instance_q31;\r
+\r
+  /**\r
+   * @brief Instance structure for the floating-point FIR decimator.\r
+   */\r
+\r
+  typedef struct\r
+  {\r
+    uint8_t M;                          /**< decimation factor. */\r
+    uint16_t numTaps;                   /**< number of coefficients in the filter. */\r
+    float32_t *pCoeffs;                  /**< points to the coefficient array. The array is of length numTaps.*/\r
+    float32_t *pState;                   /**< points to the state variable array. The array is of length numTaps+blockSize-1. */\r
+\r
+  } arm_fir_decimate_instance_f32;\r
+\r
+\r
+\r
+  /**\r
+   * @brief Processing function for the floating-point FIR decimator.\r
+   * @param[in] *S points to an instance of the floating-point FIR decimator structure.\r
+   * @param[in] *pSrc points to the block of input data.\r
+   * @param[out] *pDst points to the block of output data\r
+   * @param[in] blockSize number of input samples to process per call.\r
+   * @return none\r
+   */\r
+\r
+  void arm_fir_decimate_f32(\r
+                           const arm_fir_decimate_instance_f32 * S,\r
+                            float32_t * pSrc,\r
+                           float32_t * pDst,\r
+                           uint32_t blockSize);\r
+\r
+\r
+  /**\r
+   * @brief  Initialization function for the floating-point FIR decimator.\r
+   * @param[in,out] *S points to an instance of the floating-point FIR decimator structure.\r
+   * @param[in] numTaps  number of coefficients in the filter.\r
+   * @param[in] M  decimation factor.\r
+   * @param[in] *pCoeffs points to the filter coefficients.\r
+   * @param[in] *pState points to the state buffer.\r
+   * @param[in] blockSize number of input samples to process per call.\r
+   * @return    The function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_LENGTH_ERROR if\r
+   * <code>blockSize</code> is not a multiple of <code>M</code>.\r
+   */\r
+\r
+  arm_status arm_fir_decimate_init_f32(\r
+                                      arm_fir_decimate_instance_f32 * S,\r
+                                      uint16_t numTaps,\r
+                                      uint8_t M,\r
+                                      float32_t * pCoeffs,\r
+                                      float32_t * pState,\r
+                                      uint32_t blockSize);\r
+\r
+  /**\r
+   * @brief Processing function for the Q15 FIR decimator.\r
+   * @param[in] *S points to an instance of the Q15 FIR decimator structure.\r
+   * @param[in] *pSrc points to the block of input data.\r
+   * @param[out] *pDst points to the block of output data\r
+   * @param[in] blockSize number of input samples to process per call.\r
+   * @return none\r
+   */\r
+\r
+  void arm_fir_decimate_q15(\r
+                           const arm_fir_decimate_instance_q15 * S,\r
+                            q15_t * pSrc,\r
+                           q15_t * pDst,\r
+                           uint32_t blockSize);\r
+\r
+  /**\r
+   * @brief Processing function for the Q15 FIR decimator (fast variant) for Cortex-M3 and Cortex-M4.\r
+   * @param[in] *S points to an instance of the Q15 FIR decimator structure.\r
+   * @param[in] *pSrc points to the block of input data.\r
+   * @param[out] *pDst points to the block of output data\r
+   * @param[in] blockSize number of input samples to process per call.\r
+   * @return none\r
+   */\r
+\r
+  void arm_fir_decimate_fast_q15(\r
+                                const arm_fir_decimate_instance_q15 * S,\r
+                                 q15_t * pSrc,\r
+                                q15_t * pDst,\r
+                                uint32_t blockSize);\r
+\r
+\r
+\r
+  /**\r
+   * @brief  Initialization function for the Q15 FIR decimator.\r
+   * @param[in,out] *S points to an instance of the Q15 FIR decimator structure.\r
+   * @param[in] numTaps  number of coefficients in the filter.\r
+   * @param[in] M  decimation factor.\r
+   * @param[in] *pCoeffs points to the filter coefficients.\r
+   * @param[in] *pState points to the state buffer.\r
+   * @param[in] blockSize number of input samples to process per call.\r
+   * @return    The function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_LENGTH_ERROR if\r
+   * <code>blockSize</code> is not a multiple of <code>M</code>.\r
+   */\r
+\r
+  arm_status arm_fir_decimate_init_q15(\r
+                                      arm_fir_decimate_instance_q15 * S,\r
+                                      uint16_t numTaps,\r
+                                      uint8_t M,\r
+                                      q15_t * pCoeffs,\r
+                                      q15_t * pState,\r
+                                      uint32_t blockSize);\r
+\r
+  /**\r
+   * @brief Processing function for the Q31 FIR decimator.\r
+   * @param[in] *S points to an instance of the Q31 FIR decimator structure.\r
+   * @param[in] *pSrc points to the block of input data.\r
+   * @param[out] *pDst points to the block of output data\r
+   * @param[in] blockSize number of input samples to process per call.\r
+   * @return none\r
+   */\r
+\r
+  void arm_fir_decimate_q31(\r
+                           const arm_fir_decimate_instance_q31 * S,\r
+                            q31_t * pSrc,\r
+                           q31_t * pDst,\r
+                           uint32_t blockSize);\r
+\r
+  /**\r
+   * @brief Processing function for the Q31 FIR decimator (fast variant) for Cortex-M3 and Cortex-M4.\r
+   * @param[in] *S points to an instance of the Q31 FIR decimator structure.\r
+   * @param[in] *pSrc points to the block of input data.\r
+   * @param[out] *pDst points to the block of output data\r
+   * @param[in] blockSize number of input samples to process per call.\r
+   * @return none\r
+   */\r
+\r
+  void arm_fir_decimate_fast_q31(\r
+                                arm_fir_decimate_instance_q31 * S,\r
+                                 q31_t * pSrc,\r
+                                q31_t * pDst,\r
+                                uint32_t blockSize);\r
+\r
+\r
+  /**\r
+   * @brief  Initialization function for the Q31 FIR decimator.\r
+   * @param[in,out] *S points to an instance of the Q31 FIR decimator structure.\r
+   * @param[in] numTaps  number of coefficients in the filter.\r
+   * @param[in] M  decimation factor.\r
+   * @param[in] *pCoeffs points to the filter coefficients.\r
+   * @param[in] *pState points to the state buffer.\r
+   * @param[in] blockSize number of input samples to process per call.\r
+   * @return    The function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_LENGTH_ERROR if\r
+   * <code>blockSize</code> is not a multiple of <code>M</code>.\r
+   */\r
+\r
+  arm_status arm_fir_decimate_init_q31(\r
+                                      arm_fir_decimate_instance_q31 * S,\r
+                                      uint16_t numTaps,\r
+                                      uint8_t M,\r
+                                      q31_t * pCoeffs,\r
+                                      q31_t * pState,\r
+                                      uint32_t blockSize);\r
+\r
+\r
+\r
+  /**\r
+   * @brief Instance structure for the Q15 FIR interpolator.\r
+   */\r
+\r
+  typedef struct\r
+  {\r
+    uint8_t L;                      /**< upsample factor. */\r
+    uint16_t phaseLength;           /**< length of each polyphase filter component. */\r
+    q15_t *pCoeffs;                 /**< points to the coefficient array. The array is of length L*phaseLength. */\r
+    q15_t *pState;                  /**< points to the state variable array. The array is of length blockSize+phaseLength-1. */\r
+  } arm_fir_interpolate_instance_q15;\r
+\r
+  /**\r
+   * @brief Instance structure for the Q31 FIR interpolator.\r
+   */\r
+\r
+  typedef struct\r
+  {\r
+    uint8_t L;                      /**< upsample factor. */\r
+    uint16_t phaseLength;           /**< length of each polyphase filter component. */\r
+    q31_t *pCoeffs;                  /**< points to the coefficient array. The array is of length L*phaseLength. */\r
+    q31_t *pState;                   /**< points to the state variable array. The array is of length blockSize+phaseLength-1. */\r
+  } arm_fir_interpolate_instance_q31;\r
+\r
+  /**\r
+   * @brief Instance structure for the floating-point FIR interpolator.\r
+   */\r
+\r
+  typedef struct\r
+  {\r
+    uint8_t L;                     /**< upsample factor. */\r
+    uint16_t phaseLength;          /**< length of each polyphase filter component. */\r
+    float32_t *pCoeffs;             /**< points to the coefficient array. The array is of length L*phaseLength. */\r
+    float32_t *pState;              /**< points to the state variable array. The array is of length phaseLength+numTaps-1. */\r
+  } arm_fir_interpolate_instance_f32;\r
+\r
+\r
+  /**\r
+   * @brief Processing function for the Q15 FIR interpolator.\r
+   * @param[in] *S        points to an instance of the Q15 FIR interpolator structure.\r
+   * @param[in] *pSrc     points to the block of input data.\r
+   * @param[out] *pDst    points to the block of output data.\r
+   * @param[in] blockSize number of input samples to process per call.\r
+   * @return none.\r
+   */\r
+\r
+  void arm_fir_interpolate_q15(\r
+                              const arm_fir_interpolate_instance_q15 * S,\r
+                               q15_t * pSrc,\r
+                              q15_t * pDst,\r
+                              uint32_t blockSize);\r
+\r
+\r
+  /**\r
+   * @brief  Initialization function for the Q15 FIR interpolator.\r
+   * @param[in,out] *S        points to an instance of the Q15 FIR interpolator structure.\r
+   * @param[in]     L         upsample factor.\r
+   * @param[in]     numTaps   number of filter coefficients in the filter.\r
+   * @param[in]     *pCoeffs  points to the filter coefficient buffer.\r
+   * @param[in]     *pState   points to the state buffer.\r
+   * @param[in]     blockSize number of input samples to process per call.\r
+   * @return        The function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_LENGTH_ERROR if\r
+   * the filter length <code>numTaps</code> is not a multiple of the interpolation factor <code>L</code>.\r
+   */\r
+\r
+  arm_status arm_fir_interpolate_init_q15(\r
+                                         arm_fir_interpolate_instance_q15 * S,\r
+                                         uint8_t L,\r
+                                         uint16_t numTaps,\r
+                                         q15_t * pCoeffs,\r
+                                         q15_t * pState,\r
+                                         uint32_t blockSize);\r
+\r
+  /**\r
+   * @brief Processing function for the Q31 FIR interpolator.\r
+   * @param[in] *S        points to an instance of the Q15 FIR interpolator structure.\r
+   * @param[in] *pSrc     points to the block of input data.\r
+   * @param[out] *pDst    points to the block of output data.\r
+   * @param[in] blockSize number of input samples to process per call.\r
+   * @return none.\r
+   */\r
+\r
+  void arm_fir_interpolate_q31(\r
+                              const arm_fir_interpolate_instance_q31 * S,\r
+                               q31_t * pSrc,\r
+                              q31_t * pDst,\r
+                              uint32_t blockSize);\r
+\r
+  /**\r
+   * @brief  Initialization function for the Q31 FIR interpolator.\r
+   * @param[in,out] *S        points to an instance of the Q31 FIR interpolator structure.\r
+   * @param[in]     L         upsample factor.\r
+   * @param[in]     numTaps   number of filter coefficients in the filter.\r
+   * @param[in]     *pCoeffs  points to the filter coefficient buffer.\r
+   * @param[in]     *pState   points to the state buffer.\r
+   * @param[in]     blockSize number of input samples to process per call.\r
+   * @return        The function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_LENGTH_ERROR if\r
+   * the filter length <code>numTaps</code> is not a multiple of the interpolation factor <code>L</code>.\r
+   */\r
+\r
+  arm_status arm_fir_interpolate_init_q31(\r
+                                         arm_fir_interpolate_instance_q31 * S,\r
+                                         uint8_t L,\r
+                                         uint16_t numTaps,\r
+                                         q31_t * pCoeffs,\r
+                                         q31_t * pState,\r
+                                         uint32_t blockSize);\r
+\r
+\r
+  /**\r
+   * @brief Processing function for the floating-point FIR interpolator.\r
+   * @param[in] *S        points to an instance of the floating-point FIR interpolator structure.\r
+   * @param[in] *pSrc     points to the block of input data.\r
+   * @param[out] *pDst    points to the block of output data.\r
+   * @param[in] blockSize number of input samples to process per call.\r
+   * @return none.\r
+   */\r
+\r
+  void arm_fir_interpolate_f32(\r
+                              const arm_fir_interpolate_instance_f32 * S,\r
+                               float32_t * pSrc,\r
+                              float32_t * pDst,\r
+                              uint32_t blockSize);\r
+\r
+  /**\r
+   * @brief  Initialization function for the floating-point FIR interpolator.\r
+   * @param[in,out] *S        points to an instance of the floating-point FIR interpolator structure.\r
+   * @param[in]     L         upsample factor.\r
+   * @param[in]     numTaps   number of filter coefficients in the filter.\r
+   * @param[in]     *pCoeffs  points to the filter coefficient buffer.\r
+   * @param[in]     *pState   points to the state buffer.\r
+   * @param[in]     blockSize number of input samples to process per call.\r
+   * @return        The function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_LENGTH_ERROR if\r
+   * the filter length <code>numTaps</code> is not a multiple of the interpolation factor <code>L</code>.\r
+   */\r
+\r
+  arm_status arm_fir_interpolate_init_f32(\r
+                                         arm_fir_interpolate_instance_f32 * S,\r
+                                         uint8_t L,\r
+                                         uint16_t numTaps,\r
+                                         float32_t * pCoeffs,\r
+                                         float32_t * pState,\r
+                                         uint32_t blockSize);\r
+\r
+  /**\r
+   * @brief Instance structure for the high precision Q31 Biquad cascade filter.\r
+   */\r
+\r
+  typedef struct\r
+  {\r
+    uint8_t numStages;       /**< number of 2nd order stages in the filter.  Overall order is 2*numStages. */\r
+    q63_t *pState;           /**< points to the array of state coefficients.  The array is of length 4*numStages. */\r
+    q31_t *pCoeffs;          /**< points to the array of coefficients.  The array is of length 5*numStages. */\r
+    uint8_t postShift;       /**< additional shift, in bits, applied to each output sample. */\r
+\r
+  } arm_biquad_cas_df1_32x64_ins_q31;\r
+\r
+\r
+  /**\r
+   * @param[in]  *S        points to an instance of the high precision Q31 Biquad cascade filter structure.\r
+   * @param[in]  *pSrc     points to the block of input data.\r
+   * @param[out] *pDst     points to the block of output data\r
+   * @param[in]  blockSize number of samples to process.\r
+   * @return none.\r
+   */\r
+\r
+  void arm_biquad_cas_df1_32x64_q31(\r
+                                   const arm_biquad_cas_df1_32x64_ins_q31 * S,\r
+                                    q31_t * pSrc,\r
+                                   q31_t * pDst,\r
+                                   uint32_t blockSize);\r
+\r
+\r
+  /**\r
+   * @param[in,out] *S           points to an instance of the high precision Q31 Biquad cascade filter structure.\r
+   * @param[in]     numStages    number of 2nd order stages in the filter.\r
+   * @param[in]     *pCoeffs     points to the filter coefficients.\r
+   * @param[in]     *pState      points to the state buffer.\r
+   * @param[in]     postShift    shift to be applied to the output. Varies according to the coefficients format\r
+   * @return        none\r
+   */\r
+\r
+  void arm_biquad_cas_df1_32x64_init_q31(\r
+                                        arm_biquad_cas_df1_32x64_ins_q31 * S,\r
+                                        uint8_t numStages,\r
+                                        q31_t * pCoeffs,\r
+                                        q63_t * pState,\r
+                                        uint8_t postShift);\r
+\r
+\r
+\r
+  /**\r
+   * @brief Instance structure for the floating-point transposed direct form II Biquad cascade filter.\r
+   */\r
+\r
+  typedef struct\r
+  {\r
+    uint8_t   numStages;       /**< number of 2nd order stages in the filter.  Overall order is 2*numStages. */\r
+    float32_t *pState;         /**< points to the array of state coefficients.  The array is of length 2*numStages. */\r
+    float32_t *pCoeffs;        /**< points to the array of coefficients.  The array is of length 5*numStages. */\r
+  } arm_biquad_cascade_df2T_instance_f32;\r
+\r
+\r
+  /**\r
+   * @brief Processing function for the floating-point transposed direct form II Biquad cascade filter.\r
+   * @param[in]  *S        points to an instance of the filter data structure.\r
+   * @param[in]  *pSrc     points to the block of input data.\r
+   * @param[out] *pDst     points to the block of output data\r
+   * @param[in]  blockSize number of samples to process.\r
+   * @return none.\r
+   */\r
+\r
+  void arm_biquad_cascade_df2T_f32(\r
+                                  const arm_biquad_cascade_df2T_instance_f32 * S,\r
+                                   float32_t * pSrc,\r
+                                  float32_t * pDst,\r
+                                  uint32_t blockSize);\r
+\r
+\r
+  /**\r
+   * @brief  Initialization function for the floating-point transposed direct form II Biquad cascade filter.\r
+   * @param[in,out] *S           points to an instance of the filter data structure.\r
+   * @param[in]     numStages    number of 2nd order stages in the filter.\r
+   * @param[in]     *pCoeffs     points to the filter coefficients.\r
+   * @param[in]     *pState      points to the state buffer.\r
+   * @return        none\r
+   */\r
+\r
+  void arm_biquad_cascade_df2T_init_f32(\r
+                                       arm_biquad_cascade_df2T_instance_f32 * S,\r
+                                       uint8_t numStages,\r
+                                       float32_t * pCoeffs,\r
+                                       float32_t * pState);\r
+\r
+\r
+\r
+  /**\r
+   * @brief Instance structure for the Q15 FIR lattice filter.\r
+   */\r
+\r
+  typedef struct\r
+  {\r
+    uint16_t numStages;                          /**< number of filter stages. */\r
+    q15_t *pState;                               /**< points to the state variable array. The array is of length numStages. */\r
+    q15_t *pCoeffs;                              /**< points to the coefficient array. The array is of length numStages. */\r
+  } arm_fir_lattice_instance_q15;\r
+\r
+  /**\r
+   * @brief Instance structure for the Q31 FIR lattice filter.\r
+   */\r
+\r
+  typedef struct\r
+  {\r
+    uint16_t numStages;                          /**< number of filter stages. */\r
+    q31_t *pState;                               /**< points to the state variable array. The array is of length numStages. */\r
+    q31_t *pCoeffs;                              /**< points to the coefficient array. The array is of length numStages. */\r
+  } arm_fir_lattice_instance_q31;\r
+\r
+  /**\r
+   * @brief Instance structure for the floating-point FIR lattice filter.\r
+   */\r
+\r
+  typedef struct\r
+  {\r
+    uint16_t numStages;                  /**< number of filter stages. */\r
+    float32_t *pState;                   /**< points to the state variable array. The array is of length numStages. */\r
+    float32_t *pCoeffs;                  /**< points to the coefficient array. The array is of length numStages. */\r
+  } arm_fir_lattice_instance_f32;\r
+\r
+  /**\r
+   * @brief Initialization function for the Q15 FIR lattice filter.\r
+   * @param[in] *S points to an instance of the Q15 FIR lattice structure.\r
+   * @param[in] numStages  number of filter stages.\r
+   * @param[in] *pCoeffs points to the coefficient buffer.  The array is of length numStages.\r
+   * @param[in] *pState points to the state buffer.  The array is of length numStages.\r
+   * @return none.\r
+   */\r
+\r
+  void arm_fir_lattice_init_q15(\r
+                               arm_fir_lattice_instance_q15 * S,\r
+                               uint16_t numStages,\r
+                               q15_t * pCoeffs,\r
+                               q15_t * pState);\r
+\r
+\r
+  /**\r
+   * @brief Processing function for the Q15 FIR lattice filter.\r
+   * @param[in] *S points to an instance of the Q15 FIR lattice structure.\r
+   * @param[in] *pSrc points to the block of input data.\r
+   * @param[out] *pDst points to the block of output data.\r
+   * @param[in] blockSize number of samples to process.\r
+   * @return none.\r
+   */\r
+  void arm_fir_lattice_q15(\r
+                          const arm_fir_lattice_instance_q15 * S,\r
+                           q15_t * pSrc,\r
+                          q15_t * pDst,\r
+                          uint32_t blockSize);\r
+\r
+  /**\r
+   * @brief Initialization function for the Q31 FIR lattice filter.\r
+   * @param[in] *S points to an instance of the Q31 FIR lattice structure.\r
+   * @param[in] numStages  number of filter stages.\r
+   * @param[in] *pCoeffs points to the coefficient buffer.  The array is of length numStages.\r
+   * @param[in] *pState points to the state buffer.   The array is of length numStages.\r
+   * @return none.\r
+   */\r
+\r
+  void arm_fir_lattice_init_q31(\r
+                               arm_fir_lattice_instance_q31 * S,\r
+                               uint16_t numStages,\r
+                               q31_t * pCoeffs,\r
+                               q31_t * pState);\r
+\r
+\r
+  /**\r
+   * @brief Processing function for the Q31 FIR lattice filter.\r
+   * @param[in]  *S        points to an instance of the Q31 FIR lattice structure.\r
+   * @param[in]  *pSrc     points to the block of input data.\r
+   * @param[out] *pDst     points to the block of output data\r
+   * @param[in]  blockSize number of samples to process.\r
+   * @return none.\r
+   */\r
+\r
+  void arm_fir_lattice_q31(\r
+                          const arm_fir_lattice_instance_q31 * S,\r
+                           q31_t * pSrc,\r
+                          q31_t * pDst,\r
+                          uint32_t blockSize);\r
+\r
+/**\r
+ * @brief Initialization function for the floating-point FIR lattice filter.\r
+ * @param[in] *S points to an instance of the floating-point FIR lattice structure.\r
+ * @param[in] numStages  number of filter stages.\r
+ * @param[in] *pCoeffs points to the coefficient buffer.  The array is of length numStages.\r
+ * @param[in] *pState points to the state buffer.  The array is of length numStages.\r
+ * @return none.\r
+ */\r
+\r
+  void arm_fir_lattice_init_f32(\r
+                               arm_fir_lattice_instance_f32 * S,\r
+                               uint16_t numStages,\r
+                               float32_t * pCoeffs,\r
+                               float32_t * pState);\r
+\r
+  /**\r
+   * @brief Processing function for the floating-point FIR lattice filter.\r
+   * @param[in]  *S        points to an instance of the floating-point FIR lattice structure.\r
+   * @param[in]  *pSrc     points to the block of input data.\r
+   * @param[out] *pDst     points to the block of output data\r
+   * @param[in]  blockSize number of samples to process.\r
+   * @return none.\r
+   */\r
+\r
+  void arm_fir_lattice_f32(\r
+                          const arm_fir_lattice_instance_f32 * S,\r
+                           float32_t * pSrc,\r
+                          float32_t * pDst,\r
+                          uint32_t blockSize);\r
+\r
+  /**\r
+   * @brief Instance structure for the Q15 IIR lattice filter.\r
+   */\r
+  typedef struct\r
+  {\r
+    uint16_t numStages;                         /**< number of stages in the filter. */\r
+    q15_t *pState;                              /**< points to the state variable array. The array is of length numStages+blockSize. */\r
+    q15_t *pkCoeffs;                            /**< points to the reflection coefficient array. The array is of length numStages. */\r
+    q15_t *pvCoeffs;                            /**< points to the ladder coefficient array. The array is of length numStages+1. */\r
+  } arm_iir_lattice_instance_q15;\r
+\r
+  /**\r
+   * @brief Instance structure for the Q31 IIR lattice filter.\r
+   */\r
+  typedef struct\r
+  {\r
+    uint16_t numStages;                         /**< number of stages in the filter. */\r
+    q31_t *pState;                              /**< points to the state variable array. The array is of length numStages+blockSize. */\r
+    q31_t *pkCoeffs;                            /**< points to the reflection coefficient array. The array is of length numStages. */\r
+    q31_t *pvCoeffs;                            /**< points to the ladder coefficient array. The array is of length numStages+1. */\r
+  } arm_iir_lattice_instance_q31;\r
+\r
+  /**\r
+   * @brief Instance structure for the floating-point IIR lattice filter.\r
+   */\r
+  typedef struct\r
+  {\r
+    uint16_t numStages;                         /**< number of stages in the filter. */\r
+    float32_t *pState;                          /**< points to the state variable array. The array is of length numStages+blockSize. */\r
+    float32_t *pkCoeffs;                        /**< points to the reflection coefficient array. The array is of length numStages. */\r
+    float32_t *pvCoeffs;                        /**< points to the ladder coefficient array. The array is of length numStages+1. */\r
+  } arm_iir_lattice_instance_f32;\r
+\r
+  /**\r
+   * @brief Processing function for the floating-point IIR lattice filter.\r
+   * @param[in] *S points to an instance of the floating-point IIR lattice structure.\r
+   * @param[in] *pSrc points to the block of input data.\r
+   * @param[out] *pDst points to the block of output data.\r
+   * @param[in] blockSize number of samples to process.\r
+   * @return none.\r
+   */\r
+\r
+  void arm_iir_lattice_f32(\r
+                          const arm_iir_lattice_instance_f32 * S,\r
+                           float32_t * pSrc,\r
+                          float32_t * pDst,\r
+                          uint32_t blockSize);\r
+\r
+  /**\r
+   * @brief Initialization function for the floating-point IIR lattice filter.\r
+   * @param[in] *S points to an instance of the floating-point IIR lattice structure.\r
+   * @param[in] numStages number of stages in the filter.\r
+   * @param[in] *pkCoeffs points to the reflection coefficient buffer.  The array is of length numStages.\r
+   * @param[in] *pvCoeffs points to the ladder coefficient buffer.  The array is of length numStages+1.\r
+   * @param[in] *pState points to the state buffer.  The array is of length numStages+blockSize-1.\r
+   * @param[in] blockSize number of samples to process.\r
+   * @return none.\r
+   */\r
+\r
+  void arm_iir_lattice_init_f32(\r
+                               arm_iir_lattice_instance_f32 * S,\r
+                               uint16_t numStages,\r
+                               float32_t *pkCoeffs,\r
+                               float32_t *pvCoeffs,\r
+                               float32_t *pState,\r
+                               uint32_t blockSize);\r
+\r
+\r
+  /**\r
+   * @brief Processing function for the Q31 IIR lattice filter.\r
+   * @param[in] *S points to an instance of the Q31 IIR lattice structure.\r
+   * @param[in] *pSrc points to the block of input data.\r
+   * @param[out] *pDst points to the block of output data.\r
+   * @param[in] blockSize number of samples to process.\r
+   * @return none.\r
+   */\r
+\r
+  void arm_iir_lattice_q31(\r
+                          const arm_iir_lattice_instance_q31 * S,\r
+                           q31_t * pSrc,\r
+                          q31_t * pDst,\r
+                          uint32_t blockSize);\r
+\r
+\r
+  /**\r
+   * @brief Initialization function for the Q31 IIR lattice filter.\r
+   * @param[in] *S points to an instance of the Q31 IIR lattice structure.\r
+   * @param[in] numStages number of stages in the filter.\r
+   * @param[in] *pkCoeffs points to the reflection coefficient buffer.  The array is of length numStages.\r
+   * @param[in] *pvCoeffs points to the ladder coefficient buffer.  The array is of length numStages+1.\r
+   * @param[in] *pState points to the state buffer.  The array is of length numStages+blockSize.\r
+   * @param[in] blockSize number of samples to process.\r
+   * @return none.\r
+   */\r
+\r
+  void arm_iir_lattice_init_q31(\r
+                               arm_iir_lattice_instance_q31 * S,\r
+                               uint16_t numStages,\r
+                               q31_t *pkCoeffs,\r
+                               q31_t *pvCoeffs,\r
+                               q31_t *pState,\r
+                               uint32_t blockSize);\r
+\r
+\r
+  /**\r
+   * @brief Processing function for the Q15 IIR lattice filter.\r
+   * @param[in] *S points to an instance of the Q15 IIR lattice structure.\r
+   * @param[in] *pSrc points to the block of input data.\r
+   * @param[out] *pDst points to the block of output data.\r
+   * @param[in] blockSize number of samples to process.\r
+   * @return none.\r
+   */\r
+\r
+  void arm_iir_lattice_q15(\r
+                          const arm_iir_lattice_instance_q15 * S,\r
+                           q15_t * pSrc,\r
+                          q15_t * pDst,\r
+                          uint32_t blockSize);\r
+\r
+\r
+/**\r
+ * @brief Initialization function for the Q15 IIR lattice filter.\r
+ * @param[in] *S points to an instance of the fixed-point Q15 IIR lattice structure.\r
+ * @param[in] numStages  number of stages in the filter.\r
+ * @param[in] *pkCoeffs points to reflection coefficient buffer.  The array is of length numStages.\r
+ * @param[in] *pvCoeffs points to ladder coefficient buffer.  The array is of length numStages+1.\r
+ * @param[in] *pState points to state buffer.  The array is of length numStages+blockSize.\r
+ * @param[in] blockSize number of samples to process per call.\r
+ * @return none.\r
+ */\r
+\r
+  void arm_iir_lattice_init_q15(\r
+                               arm_iir_lattice_instance_q15 * S,\r
+                               uint16_t numStages,\r
+                               q15_t *pkCoeffs,\r
+                               q15_t *pvCoeffs,\r
+                               q15_t *pState,\r
+                               uint32_t blockSize);\r
+\r
+  /**\r
+   * @brief Instance structure for the floating-point LMS filter.\r
+   */\r
+\r
+  typedef struct\r
+  {\r
+    uint16_t numTaps;    /**< number of coefficients in the filter. */\r
+    float32_t *pState;   /**< points to the state variable array. The array is of length numTaps+blockSize-1. */\r
+    float32_t *pCoeffs;  /**< points to the coefficient array. The array is of length numTaps. */\r
+    float32_t mu;        /**< step size that controls filter coefficient updates. */\r
+  } arm_lms_instance_f32;\r
+\r
+  /**\r
+   * @brief Processing function for floating-point LMS filter.\r
+   * @param[in]  *S points to an instance of the floating-point LMS filter structure.\r
+   * @param[in]  *pSrc points to the block of input data.\r
+   * @param[in]  *pRef points to the block of reference data.\r
+   * @param[out] *pOut points to the block of output data.\r
+   * @param[out] *pErr points to the block of error data.\r
+   * @param[in]  blockSize number of samples to process.\r
+   * @return     none.\r
+   */\r
+\r
+  void arm_lms_f32(\r
+                  const arm_lms_instance_f32 * S,\r
+                   float32_t * pSrc,\r
+                   float32_t * pRef,\r
+                  float32_t * pOut,\r
+                  float32_t * pErr,\r
+                  uint32_t blockSize);\r
+\r
+  /**\r
+   * @brief Initialization function for floating-point LMS filter.\r
+   * @param[in] *S points to an instance of the floating-point LMS filter structure.\r
+   * @param[in] numTaps  number of filter coefficients.\r
+   * @param[in] *pCoeffs points to the coefficient buffer.\r
+   * @param[in] *pState points to state buffer.\r
+   * @param[in] mu step size that controls filter coefficient updates.\r
+   * @param[in] blockSize number of samples to process.\r
+   * @return none.\r
+   */\r
+\r
+  void arm_lms_init_f32(\r
+                       arm_lms_instance_f32 * S,\r
+                       uint16_t numTaps,\r
+                       float32_t * pCoeffs,\r
+                       float32_t * pState,\r
+                       float32_t mu,\r
+                       uint32_t blockSize);\r
+\r
+  /**\r
+   * @brief Instance structure for the Q15 LMS filter.\r
+   */\r
+\r
+  typedef struct\r
+  {\r
+    uint16_t numTaps;    /**< number of coefficients in the filter. */\r
+    q15_t *pState;       /**< points to the state variable array. The array is of length numTaps+blockSize-1. */\r
+    q15_t *pCoeffs;      /**< points to the coefficient array. The array is of length numTaps. */\r
+    q15_t mu;            /**< step size that controls filter coefficient updates. */\r
+    uint32_t postShift;  /**< bit shift applied to coefficients. */\r
+  } arm_lms_instance_q15;\r
+\r
+\r
+  /**\r
+   * @brief Initialization function for the Q15 LMS filter.\r
+   * @param[in] *S points to an instance of the Q15 LMS filter structure.\r
+   * @param[in] numTaps  number of filter coefficients.\r
+   * @param[in] *pCoeffs points to the coefficient buffer.\r
+   * @param[in] *pState points to the state buffer.\r
+   * @param[in] mu step size that controls filter coefficient updates.\r
+   * @param[in] blockSize number of samples to process.\r
+   * @param[in] postShift bit shift applied to coefficients.\r
+   * @return    none.\r
+   */\r
+\r
+  void arm_lms_init_q15(\r
+                       arm_lms_instance_q15 * S,\r
+                       uint16_t numTaps,\r
+                       q15_t * pCoeffs,\r
+                       q15_t * pState,\r
+                       q15_t mu,\r
+                       uint32_t blockSize,\r
+                       uint32_t postShift);\r
+\r
+  /**\r
+   * @brief Processing function for Q15 LMS filter.\r
+   * @param[in] *S points to an instance of the Q15 LMS filter structure.\r
+   * @param[in] *pSrc points to the block of input data.\r
+   * @param[in] *pRef points to the block of reference data.\r
+   * @param[out] *pOut points to the block of output data.\r
+   * @param[out] *pErr points to the block of error data.\r
+   * @param[in] blockSize number of samples to process.\r
+   * @return none.\r
+   */\r
+\r
+  void arm_lms_q15(\r
+                  const arm_lms_instance_q15 * S,\r
+                   q15_t * pSrc,\r
+                   q15_t * pRef,\r
+                  q15_t * pOut,\r
+                  q15_t * pErr,\r
+                  uint32_t blockSize);\r
+\r
+\r
+  /**\r
+   * @brief Instance structure for the Q31 LMS filter.\r
+   */\r
+\r
+  typedef struct\r
+  {\r
+    uint16_t numTaps;    /**< number of coefficients in the filter. */\r
+    q31_t *pState;       /**< points to the state variable array. The array is of length numTaps+blockSize-1. */\r
+    q31_t *pCoeffs;      /**< points to the coefficient array. The array is of length numTaps. */\r
+    q31_t mu;            /**< step size that controls filter coefficient updates. */\r
+    uint32_t postShift;  /**< bit shift applied to coefficients. */\r
+\r
+  } arm_lms_instance_q31;\r
+\r
+  /**\r
+   * @brief Processing function for Q31 LMS filter.\r
+   * @param[in]  *S points to an instance of the Q15 LMS filter structure.\r
+   * @param[in]  *pSrc points to the block of input data.\r
+   * @param[in]  *pRef points to the block of reference data.\r
+   * @param[out] *pOut points to the block of output data.\r
+   * @param[out] *pErr points to the block of error data.\r
+   * @param[in]  blockSize number of samples to process.\r
+   * @return     none.\r
+   */\r
+\r
+  void arm_lms_q31(\r
+                  const arm_lms_instance_q31 * S,\r
+                   q31_t * pSrc,\r
+                   q31_t * pRef,\r
+                  q31_t * pOut,\r
+                  q31_t * pErr,\r
+                  uint32_t blockSize);\r
+\r
+  /**\r
+   * @brief Initialization function for Q31 LMS filter.\r
+   * @param[in] *S points to an instance of the Q31 LMS filter structure.\r
+   * @param[in] numTaps  number of filter coefficients.\r
+   * @param[in] *pCoeffs points to coefficient buffer.\r
+   * @param[in] *pState points to state buffer.\r
+   * @param[in] mu step size that controls filter coefficient updates.\r
+   * @param[in] blockSize number of samples to process.\r
+   * @param[in] postShift bit shift applied to coefficients.\r
+   * @return none.\r
+   */\r
+\r
+  void arm_lms_init_q31(\r
+                       arm_lms_instance_q31 * S,\r
+                       uint16_t numTaps,\r
+                       q31_t *pCoeffs,\r
+                       q31_t *pState,\r
+                       q31_t mu,\r
+                       uint32_t blockSize,\r
+                       uint32_t postShift);\r
+\r
+  /**\r
+   * @brief Instance structure for the floating-point normalized LMS filter.\r
+   */\r
+\r
+  typedef struct\r
+  {\r
+    uint16_t  numTaps;    /**< number of coefficients in the filter. */\r
+    float32_t *pState;    /**< points to the state variable array. The array is of length numTaps+blockSize-1. */\r
+    float32_t *pCoeffs;   /**< points to the coefficient array. The array is of length numTaps. */\r
+    float32_t mu;        /**< step size that control filter coefficient updates. */\r
+    float32_t energy;    /**< saves previous frame energy. */\r
+    float32_t x0;        /**< saves previous input sample. */\r
+  } arm_lms_norm_instance_f32;\r
+\r
+  /**\r
+   * @brief Processing function for floating-point normalized LMS filter.\r
+   * @param[in] *S points to an instance of the floating-point normalized LMS filter structure.\r
+   * @param[in] *pSrc points to the block of input data.\r
+   * @param[in] *pRef points to the block of reference data.\r
+   * @param[out] *pOut points to the block of output data.\r
+   * @param[out] *pErr points to the block of error data.\r
+   * @param[in] blockSize number of samples to process.\r
+   * @return none.\r
+   */\r
+\r
+  void arm_lms_norm_f32(\r
+                       arm_lms_norm_instance_f32 * S,\r
+                        float32_t * pSrc,\r
+                        float32_t * pRef,\r
+                       float32_t * pOut,\r
+                       float32_t * pErr,\r
+                       uint32_t blockSize);\r
+\r
+  /**\r
+   * @brief Initialization function for floating-point normalized LMS filter.\r
+   * @param[in] *S points to an instance of the floating-point LMS filter structure.\r
+   * @param[in] numTaps  number of filter coefficients.\r
+   * @param[in] *pCoeffs points to coefficient buffer.\r
+   * @param[in] *pState points to state buffer.\r
+   * @param[in] mu step size that controls filter coefficient updates.\r
+   * @param[in] blockSize number of samples to process.\r
+   * @return none.\r
+   */\r
+\r
+  void arm_lms_norm_init_f32(\r
+                            arm_lms_norm_instance_f32 * S,\r
+                            uint16_t numTaps,\r
+                            float32_t * pCoeffs,\r
+                            float32_t * pState,\r
+                            float32_t mu,\r
+                            uint32_t blockSize);\r
+\r
+\r
+  /**\r
+   * @brief Instance structure for the Q31 normalized LMS filter.\r
+   */\r
+  typedef struct\r
+  {\r
+    uint16_t numTaps;     /**< number of coefficients in the filter. */\r
+    q31_t *pState;        /**< points to the state variable array. The array is of length numTaps+blockSize-1. */\r
+    q31_t *pCoeffs;       /**< points to the coefficient array. The array is of length numTaps. */\r
+    q31_t mu;             /**< step size that controls filter coefficient updates. */\r
+    uint8_t postShift;    /**< bit shift applied to coefficients. */\r
+    q31_t *recipTable;    /**< points to the reciprocal initial value table. */\r
+    q31_t energy;         /**< saves previous frame energy. */\r
+    q31_t x0;             /**< saves previous input sample. */\r
+  } arm_lms_norm_instance_q31;\r
+\r
+  /**\r
+   * @brief Processing function for Q31 normalized LMS filter.\r
+   * @param[in] *S points to an instance of the Q31 normalized LMS filter structure.\r
+   * @param[in] *pSrc points to the block of input data.\r
+   * @param[in] *pRef points to the block of reference data.\r
+   * @param[out] *pOut points to the block of output data.\r
+   * @param[out] *pErr points to the block of error data.\r
+   * @param[in] blockSize number of samples to process.\r
+   * @return none.\r
+   */\r
+\r
+  void arm_lms_norm_q31(\r
+                       arm_lms_norm_instance_q31 * S,\r
+                        q31_t * pSrc,\r
+                        q31_t * pRef,\r
+                       q31_t * pOut,\r
+                       q31_t * pErr,\r
+                       uint32_t blockSize);\r
+\r
+  /**\r
+   * @brief Initialization function for Q31 normalized LMS filter.\r
+   * @param[in] *S points to an instance of the Q31 normalized LMS filter structure.\r
+   * @param[in] numTaps  number of filter coefficients.\r
+   * @param[in] *pCoeffs points to coefficient buffer.\r
+   * @param[in] *pState points to state buffer.\r
+   * @param[in] mu step size that controls filter coefficient updates.\r
+   * @param[in] blockSize number of samples to process.\r
+   * @param[in] postShift bit shift applied to coefficients.\r
+   * @return none.\r
+   */\r
+\r
+  void arm_lms_norm_init_q31(\r
+                            arm_lms_norm_instance_q31 * S,\r
+                            uint16_t numTaps,\r
+                            q31_t * pCoeffs,\r
+                            q31_t * pState,\r
+                            q31_t mu,\r
+                            uint32_t blockSize,\r
+                            uint8_t postShift);\r
+\r
+  /**\r
+   * @brief Instance structure for the Q15 normalized LMS filter.\r
+   */\r
+\r
+  typedef struct\r
+  {\r
+    uint16_t numTaps;    /**< Number of coefficients in the filter. */\r
+    q15_t *pState;        /**< points to the state variable array. The array is of length numTaps+blockSize-1. */\r
+    q15_t *pCoeffs;       /**< points to the coefficient array. The array is of length numTaps. */\r
+    q15_t mu;            /**< step size that controls filter coefficient updates. */\r
+    uint8_t postShift;   /**< bit shift applied to coefficients. */\r
+    q15_t *recipTable;   /**< Points to the reciprocal initial value table. */\r
+    q15_t energy;        /**< saves previous frame energy. */\r
+    q15_t x0;            /**< saves previous input sample. */\r
+  } arm_lms_norm_instance_q15;\r
+\r
+  /**\r
+   * @brief Processing function for Q15 normalized LMS filter.\r
+   * @param[in] *S points to an instance of the Q15 normalized LMS filter structure.\r
+   * @param[in] *pSrc points to the block of input data.\r
+   * @param[in] *pRef points to the block of reference data.\r
+   * @param[out] *pOut points to the block of output data.\r
+   * @param[out] *pErr points to the block of error data.\r
+   * @param[in] blockSize number of samples to process.\r
+   * @return none.\r
+   */\r
+\r
+  void arm_lms_norm_q15(\r
+                       arm_lms_norm_instance_q15 * S,\r
+                        q15_t * pSrc,\r
+                        q15_t * pRef,\r
+                       q15_t * pOut,\r
+                       q15_t * pErr,\r
+                       uint32_t blockSize);\r
+\r
+\r
+  /**\r
+   * @brief Initialization function for Q15 normalized LMS filter.\r
+   * @param[in] *S points to an instance of the Q15 normalized LMS filter structure.\r
+   * @param[in] numTaps  number of filter coefficients.\r
+   * @param[in] *pCoeffs points to coefficient buffer.\r
+   * @param[in] *pState points to state buffer.\r
+   * @param[in] mu step size that controls filter coefficient updates.\r
+   * @param[in] blockSize number of samples to process.\r
+   * @param[in] postShift bit shift applied to coefficients.\r
+   * @return none.\r
+   */\r
+\r
+  void arm_lms_norm_init_q15(\r
+                            arm_lms_norm_instance_q15 * S,\r
+                            uint16_t numTaps,\r
+                            q15_t * pCoeffs,\r
+                            q15_t * pState,\r
+                            q15_t mu,\r
+                            uint32_t blockSize,\r
+                            uint8_t postShift);\r
+\r
+  /**\r
+   * @brief Correlation of floating-point sequences.\r
+   * @param[in] *pSrcA points to the first input sequence.\r
+   * @param[in] srcALen length of the first input sequence.\r
+   * @param[in] *pSrcB points to the second input sequence.\r
+   * @param[in] srcBLen length of the second input sequence.\r
+   * @param[out] *pDst points to the block of output data  Length 2 * max(srcALen, srcBLen) - 1.\r
+   * @return none.\r
+   */\r
+\r
+  void arm_correlate_f32(\r
+                         float32_t * pSrcA,\r
+                        uint32_t srcALen,\r
+                         float32_t * pSrcB,\r
+                        uint32_t srcBLen,\r
+                        float32_t * pDst);\r
+\r
+  /**\r
+   * @brief Correlation of Q15 sequences.\r
+   * @param[in] *pSrcA points to the first input sequence.\r
+   * @param[in] srcALen length of the first input sequence.\r
+   * @param[in] *pSrcB points to the second input sequence.\r
+   * @param[in] srcBLen length of the second input sequence.\r
+   * @param[out] *pDst points to the block of output data  Length 2 * max(srcALen, srcBLen) - 1.\r
+   * @return none.\r
+   */\r
+\r
+  void arm_correlate_q15(\r
+                         q15_t * pSrcA,\r
+                        uint32_t srcALen,\r
+                         q15_t * pSrcB,\r
+                        uint32_t srcBLen,\r
+                        q15_t * pDst);\r
+\r
+  /**\r
+   * @brief Correlation of Q15 sequences (fast version) for Cortex-M3 and Cortex-M4.\r
+   * @param[in] *pSrcA points to the first input sequence.\r
+   * @param[in] srcALen length of the first input sequence.\r
+   * @param[in] *pSrcB points to the second input sequence.\r
+   * @param[in] srcBLen length of the second input sequence.\r
+   * @param[out] *pDst points to the block of output data  Length 2 * max(srcALen, srcBLen) - 1.\r
+   * @return none.\r
+   */\r
+\r
+  void arm_correlate_fast_q15(\r
+                              q15_t * pSrcA,\r
+                             uint32_t srcALen,\r
+                              q15_t * pSrcB,\r
+                             uint32_t srcBLen,\r
+                             q15_t * pDst);\r
+\r
+  /**\r
+   * @brief Correlation of Q31 sequences.\r
+   * @param[in] *pSrcA points to the first input sequence.\r
+   * @param[in] srcALen length of the first input sequence.\r
+   * @param[in] *pSrcB points to the second input sequence.\r
+   * @param[in] srcBLen length of the second input sequence.\r
+   * @param[out] *pDst points to the block of output data  Length 2 * max(srcALen, srcBLen) - 1.\r
+   * @return none.\r
+   */\r
+\r
+  void arm_correlate_q31(\r
+                         q31_t * pSrcA,\r
+                        uint32_t srcALen,\r
+                         q31_t * pSrcB,\r
+                        uint32_t srcBLen,\r
+                        q31_t * pDst);\r
+\r
+  /**\r
+   * @brief Correlation of Q31 sequences (fast version) for Cortex-M3 and Cortex-M4\r
+   * @param[in] *pSrcA points to the first input sequence.\r
+   * @param[in] srcALen length of the first input sequence.\r
+   * @param[in] *pSrcB points to the second input sequence.\r
+   * @param[in] srcBLen length of the second input sequence.\r
+   * @param[out] *pDst points to the block of output data  Length 2 * max(srcALen, srcBLen) - 1.\r
+   * @return none.\r
+   */\r
+\r
+  void arm_correlate_fast_q31(\r
+                              q31_t * pSrcA,\r
+                             uint32_t srcALen,\r
+                              q31_t * pSrcB,\r
+                             uint32_t srcBLen,\r
+                             q31_t * pDst);\r
+\r
+  /**\r
+   * @brief Correlation of Q7 sequences.\r
+   * @param[in] *pSrcA points to the first input sequence.\r
+   * @param[in] srcALen length of the first input sequence.\r
+   * @param[in] *pSrcB points to the second input sequence.\r
+   * @param[in] srcBLen length of the second input sequence.\r
+   * @param[out] *pDst points to the block of output data  Length 2 * max(srcALen, srcBLen) - 1.\r
+   * @return none.\r
+   */\r
+\r
+  void arm_correlate_q7(\r
+                        q7_t * pSrcA,\r
+                       uint32_t srcALen,\r
+                        q7_t * pSrcB,\r
+                       uint32_t srcBLen,\r
+                       q7_t * pDst);\r
+\r
+  /**\r
+   * @brief Instance structure for the floating-point sparse FIR filter.\r
+   */\r
+  typedef struct\r
+  {\r
+    uint16_t numTaps;             /**< number of coefficients in the filter. */\r
+    uint16_t stateIndex;          /**< state buffer index.  Points to the oldest sample in the state buffer. */\r
+    float32_t *pState;            /**< points to the state buffer array. The array is of length maxDelay+blockSize-1. */\r
+    float32_t *pCoeffs;           /**< points to the coefficient array. The array is of length numTaps.*/\r
+    uint16_t maxDelay;            /**< maximum offset specified by the pTapDelay array. */\r
+    int32_t *pTapDelay;           /**< points to the array of delay values.  The array is of length numTaps. */\r
+  } arm_fir_sparse_instance_f32;\r
+\r
+  /**\r
+   * @brief Instance structure for the Q31 sparse FIR filter.\r
+   */\r
+\r
+  typedef struct\r
+  {\r
+    uint16_t numTaps;             /**< number of coefficients in the filter. */\r
+    uint16_t stateIndex;          /**< state buffer index.  Points to the oldest sample in the state buffer. */\r
+    q31_t *pState;                /**< points to the state buffer array. The array is of length maxDelay+blockSize-1. */\r
+    q31_t *pCoeffs;               /**< points to the coefficient array. The array is of length numTaps.*/\r
+    uint16_t maxDelay;            /**< maximum offset specified by the pTapDelay array. */\r
+    int32_t *pTapDelay;           /**< points to the array of delay values.  The array is of length numTaps. */\r
+  } arm_fir_sparse_instance_q31;\r
+\r
+  /**\r
+   * @brief Instance structure for the Q15 sparse FIR filter.\r
+   */\r
+\r
+  typedef struct\r
+  {\r
+    uint16_t numTaps;             /**< number of coefficients in the filter. */\r
+    uint16_t stateIndex;          /**< state buffer index.  Points to the oldest sample in the state buffer. */\r
+    q15_t *pState;                /**< points to the state buffer array. The array is of length maxDelay+blockSize-1. */\r
+    q15_t *pCoeffs;               /**< points to the coefficient array. The array is of length numTaps.*/\r
+    uint16_t maxDelay;            /**< maximum offset specified by the pTapDelay array. */\r
+    int32_t *pTapDelay;           /**< points to the array of delay values.  The array is of length numTaps. */\r
+  } arm_fir_sparse_instance_q15;\r
+\r
+  /**\r
+   * @brief Instance structure for the Q7 sparse FIR filter.\r
+   */\r
+\r
+  typedef struct\r
+  {\r
+    uint16_t numTaps;             /**< number of coefficients in the filter. */\r
+    uint16_t stateIndex;          /**< state buffer index.  Points to the oldest sample in the state buffer. */\r
+    q7_t *pState;                 /**< points to the state buffer array. The array is of length maxDelay+blockSize-1. */\r
+    q7_t *pCoeffs;                /**< points to the coefficient array. The array is of length numTaps.*/\r
+    uint16_t maxDelay;            /**< maximum offset specified by the pTapDelay array. */\r
+    int32_t *pTapDelay;           /**< points to the array of delay values.  The array is of length numTaps. */\r
+  } arm_fir_sparse_instance_q7;\r
+\r
+  /**\r
+   * @brief Processing function for the floating-point sparse FIR filter.\r
+   * @param[in]  *S          points to an instance of the floating-point sparse FIR structure.\r
+   * @param[in]  *pSrc       points to the block of input data.\r
+   * @param[out] *pDst       points to the block of output data\r
+   * @param[in]  *pScratchIn points to a temporary buffer of size blockSize.\r
+   * @param[in]  blockSize   number of input samples to process per call.\r
+   * @return none.\r
+   */\r
+\r
+  void arm_fir_sparse_f32(\r
+                         arm_fir_sparse_instance_f32 * S,\r
+                          float32_t * pSrc,\r
+                         float32_t * pDst,\r
+                         float32_t * pScratchIn,\r
+                         uint32_t blockSize);\r
+\r
+  /**\r
+   * @brief  Initialization function for the floating-point sparse FIR filter.\r
+   * @param[in,out] *S         points to an instance of the floating-point sparse FIR structure.\r
+   * @param[in]     numTaps    number of nonzero coefficients in the filter.\r
+   * @param[in]     *pCoeffs   points to the array of filter coefficients.\r
+   * @param[in]     *pState    points to the state buffer.\r
+   * @param[in]     *pTapDelay points to the array of offset times.\r
+   * @param[in]     maxDelay   maximum offset time supported.\r
+   * @param[in]     blockSize  number of samples that will be processed per block.\r
+   * @return none\r
+   */\r
+\r
+  void arm_fir_sparse_init_f32(\r
+                              arm_fir_sparse_instance_f32 * S,\r
+                              uint16_t numTaps,\r
+                              float32_t * pCoeffs,\r
+                              float32_t * pState,\r
+                              int32_t * pTapDelay,\r
+                              uint16_t maxDelay,\r
+                              uint32_t blockSize);\r
+\r
+  /**\r
+   * @brief Processing function for the Q31 sparse FIR filter.\r
+   * @param[in]  *S          points to an instance of the Q31 sparse FIR structure.\r
+   * @param[in]  *pSrc       points to the block of input data.\r
+   * @param[out] *pDst       points to the block of output data\r
+   * @param[in]  *pScratchIn points to a temporary buffer of size blockSize.\r
+   * @param[in]  blockSize   number of input samples to process per call.\r
+   * @return none.\r
+   */\r
+\r
+  void arm_fir_sparse_q31(\r
+                         arm_fir_sparse_instance_q31 * S,\r
+                          q31_t * pSrc,\r
+                         q31_t * pDst,\r
+                         q31_t * pScratchIn,\r
+                         uint32_t blockSize);\r
+\r
+  /**\r
+   * @brief  Initialization function for the Q31 sparse FIR filter.\r
+   * @param[in,out] *S         points to an instance of the Q31 sparse FIR structure.\r
+   * @param[in]     numTaps    number of nonzero coefficients in the filter.\r
+   * @param[in]     *pCoeffs   points to the array of filter coefficients.\r
+   * @param[in]     *pState    points to the state buffer.\r
+   * @param[in]     *pTapDelay points to the array of offset times.\r
+   * @param[in]     maxDelay   maximum offset time supported.\r
+   * @param[in]     blockSize  number of samples that will be processed per block.\r
+   * @return none\r
+   */\r
+\r
+  void arm_fir_sparse_init_q31(\r
+                              arm_fir_sparse_instance_q31 * S,\r
+                              uint16_t numTaps,\r
+                              q31_t * pCoeffs,\r
+                              q31_t * pState,\r
+                              int32_t * pTapDelay,\r
+                              uint16_t maxDelay,\r
+                              uint32_t blockSize);\r
+\r
+  /**\r
+   * @brief Processing function for the Q15 sparse FIR filter.\r
+   * @param[in]  *S           points to an instance of the Q15 sparse FIR structure.\r
+   * @param[in]  *pSrc        points to the block of input data.\r
+   * @param[out] *pDst        points to the block of output data\r
+   * @param[in]  *pScratchIn  points to a temporary buffer of size blockSize.\r
+   * @param[in]  *pScratchOut points to a temporary buffer of size blockSize.\r
+   * @param[in]  blockSize    number of input samples to process per call.\r
+   * @return none.\r
+   */\r
+\r
+  void arm_fir_sparse_q15(\r
+                         arm_fir_sparse_instance_q15 * S,\r
+                          q15_t * pSrc,\r
+                         q15_t * pDst,\r
+                         q15_t * pScratchIn,\r
+                         q31_t * pScratchOut,\r
+                         uint32_t blockSize);\r
+\r
+\r
+  /**\r
+   * @brief  Initialization function for the Q15 sparse FIR filter.\r
+   * @param[in,out] *S         points to an instance of the Q15 sparse FIR structure.\r
+   * @param[in]     numTaps    number of nonzero coefficients in the filter.\r
+   * @param[in]     *pCoeffs   points to the array of filter coefficients.\r
+   * @param[in]     *pState    points to the state buffer.\r
+   * @param[in]     *pTapDelay points to the array of offset times.\r
+   * @param[in]     maxDelay   maximum offset time supported.\r
+   * @param[in]     blockSize  number of samples that will be processed per block.\r
+   * @return none\r
+   */\r
+\r
+  void arm_fir_sparse_init_q15(\r
+                              arm_fir_sparse_instance_q15 * S,\r
+                              uint16_t numTaps,\r
+                              q15_t * pCoeffs,\r
+                              q15_t * pState,\r
+                              int32_t * pTapDelay,\r
+                              uint16_t maxDelay,\r
+                              uint32_t blockSize);\r
+\r
+  /**\r
+   * @brief Processing function for the Q7 sparse FIR filter.\r
+   * @param[in]  *S           points to an instance of the Q7 sparse FIR structure.\r
+   * @param[in]  *pSrc        points to the block of input data.\r
+   * @param[out] *pDst        points to the block of output data\r
+   * @param[in]  *pScratchIn  points to a temporary buffer of size blockSize.\r
+   * @param[in]  *pScratchOut points to a temporary buffer of size blockSize.\r
+   * @param[in]  blockSize    number of input samples to process per call.\r
+   * @return none.\r
+   */\r
+\r
+  void arm_fir_sparse_q7(\r
+                        arm_fir_sparse_instance_q7 * S,\r
+                         q7_t * pSrc,\r
+                        q7_t * pDst,\r
+                        q7_t * pScratchIn,\r
+                        q31_t * pScratchOut,\r
+                        uint32_t blockSize);\r
+\r
+  /**\r
+   * @brief  Initialization function for the Q7 sparse FIR filter.\r
+   * @param[in,out] *S         points to an instance of the Q7 sparse FIR structure.\r
+   * @param[in]     numTaps    number of nonzero coefficients in the filter.\r
+   * @param[in]     *pCoeffs   points to the array of filter coefficients.\r
+   * @param[in]     *pState    points to the state buffer.\r
+   * @param[in]     *pTapDelay points to the array of offset times.\r
+   * @param[in]     maxDelay   maximum offset time supported.\r
+   * @param[in]     blockSize  number of samples that will be processed per block.\r
+   * @return none\r
+   */\r
+\r
+  void arm_fir_sparse_init_q7(\r
+                             arm_fir_sparse_instance_q7 * S,\r
+                             uint16_t numTaps,\r
+                             q7_t * pCoeffs,\r
+                             q7_t * pState,\r
+                             int32_t *pTapDelay,\r
+                             uint16_t maxDelay,\r
+                             uint32_t blockSize);\r
+\r
+\r
+  /*\r
+   * @brief  Floating-point sin_cos function.\r
+   * @param[in]  theta    input value in degrees\r
+   * @param[out] *pSinVal points to the processed sine output.\r
+   * @param[out] *pCosVal points to the processed cos output.\r
+   * @return none.\r
+   */\r
+\r
+  void arm_sin_cos_f32(\r
+                      float32_t theta,\r
+                      float32_t *pSinVal,\r
+                      float32_t *pCcosVal);\r
+\r
+  /*\r
+   * @brief  Q31 sin_cos function.\r
+   * @param[in]  theta    scaled input value in degrees\r
+   * @param[out] *pSinVal points to the processed sine output.\r
+   * @param[out] *pCosVal points to the processed cosine output.\r
+   * @return none.\r
+   */\r
+\r
+  void arm_sin_cos_q31(\r
+                      q31_t theta,\r
+                      q31_t *pSinVal,\r
+                      q31_t *pCosVal);\r
+\r
+\r
+  /**\r
+   * @brief  Floating-point complex conjugate.\r
+   * @param[in]  *pSrc points to the input vector\r
+   * @param[out]  *pDst points to the output vector\r
+   * @param[in]  numSamples number of complex samples in each vector\r
+   * @return none.\r
+   */\r
+\r
+  void arm_cmplx_conj_f32(\r
+                          float32_t * pSrc,\r
+                         float32_t * pDst,\r
+                         uint32_t numSamples);\r
+\r
+  /**\r
+   * @brief  Q31 complex conjugate.\r
+   * @param[in]  *pSrc points to the input vector\r
+   * @param[out]  *pDst points to the output vector\r
+   * @param[in]  numSamples number of complex samples in each vector\r
+   * @return none.\r
+   */\r
+\r
+  void arm_cmplx_conj_q31(\r
+                          q31_t * pSrc,\r
+                         q31_t * pDst,\r
+                         uint32_t numSamples);\r
+\r
+  /**\r
+   * @brief  Q15 complex conjugate.\r
+   * @param[in]  *pSrc points to the input vector\r
+   * @param[out]  *pDst points to the output vector\r
+   * @param[in]  numSamples number of complex samples in each vector\r
+   * @return none.\r
+   */\r
+\r
+  void arm_cmplx_conj_q15(\r
+                          q15_t * pSrc,\r
+                         q15_t * pDst,\r
+                         uint32_t numSamples);\r
+\r
+\r
+\r
+  /**\r
+   * @brief  Floating-point complex magnitude squared\r
+   * @param[in]  *pSrc points to the complex input vector\r
+   * @param[out]  *pDst points to the real output vector\r
+   * @param[in]  numSamples number of complex samples in the input vector\r
+   * @return none.\r
+   */\r
+\r
+  void arm_cmplx_mag_squared_f32(\r
+                                 float32_t * pSrc,\r
+                                float32_t * pDst,\r
+                                uint32_t numSamples);\r
+\r
+  /**\r
+   * @brief  Q31 complex magnitude squared\r
+   * @param[in]  *pSrc points to the complex input vector\r
+   * @param[out]  *pDst points to the real output vector\r
+   * @param[in]  numSamples number of complex samples in the input vector\r
+   * @return none.\r
+   */\r
+\r
+  void arm_cmplx_mag_squared_q31(\r
+                                 q31_t * pSrc,\r
+                                q31_t * pDst,\r
+                                uint32_t numSamples);\r
+\r
+  /**\r
+   * @brief  Q15 complex magnitude squared\r
+   * @param[in]  *pSrc points to the complex input vector\r
+   * @param[out]  *pDst points to the real output vector\r
+   * @param[in]  numSamples number of complex samples in the input vector\r
+   * @return none.\r
+   */\r
+\r
+  void arm_cmplx_mag_squared_q15(\r
+                                 q15_t * pSrc,\r
+                                q15_t * pDst,\r
+                                uint32_t numSamples);\r
+\r
+\r
+ /**\r
+   * @ingroup groupController\r
+   */\r
+\r
+  /**\r
+   * @defgroup PID PID Motor Control\r
+   *\r
+   * A Proportional Integral Derivative (PID) controller is a generic feedback control\r
+   * loop mechanism widely used in industrial control systems.\r
+   * A PID controller is the most commonly used type of feedback controller.\r
+   *\r
+   * This set of functions implements (PID) controllers\r
+   * for Q15, Q31, and floating-point data types.  The functions operate on a single sample\r
+   * of data and each call to the function returns a single processed value.\r
+   * <code>S</code> points to an instance of the PID control data structure.  <code>in</code>\r
+   * is the input sample value. The functions return the output value.\r
+   *\r
+   * \par Algorithm:\r
+   * <pre>\r
+   *    y[n] = y[n-1] + A0 * x[n] + A1 * x[n-1] + A2 * x[n-2]\r
+   *    A0 = Kp + Ki + Kd\r
+   *    A1 = (-Kp ) - (2 * Kd )\r
+   *    A2 = Kd  </pre>\r
+   *\r
+   * \par\r
+   * where \c Kp is proportional constant, \c Ki is Integral constant and \c Kd is Derivative constant\r
+   *\r
+   * \par\r
+   * \image html PID.gif "Proportional Integral Derivative Controller"\r
+   *\r
+   * \par\r
+   * The PID controller calculates an "error" value as the difference between\r
+   * the measured output and the reference input.\r
+   * The controller attempts to minimize the error by adjusting the process control inputs.\r
+   * The proportional value determines the reaction to the current error,\r
+   * the integral value determines the reaction based on the sum of recent errors,\r
+   * and the derivative value determines the reaction based on the rate at which the error has been changing.\r
+   *\r
+   * \par Instance Structure\r
+   * The Gains A0, A1, A2 and state variables for a PID controller are stored together in an instance data structure.\r
+   * A separate instance structure must be defined for each PID Controller.\r
+   * There are separate instance structure declarations for each of the 3 supported data types.\r
+   *\r
+   * \par Reset Functions\r
+   * There is also an associated reset function for each data type which clears the state array.\r
+   *\r
+   * \par Initialization Functions\r
+   * There is also an associated initialization function for each data type.\r
+   * The initialization function performs the following operations:\r
+   * - Initializes the Gains A0, A1, A2 from Kp,Ki, Kd gains.\r
+   * - Zeros out the values in the state buffer.\r
+   *\r
+   * \par\r
+   * Instance structure cannot be placed into a const data section and it is recommended to use the initialization function.\r
+   *\r
+   * \par Fixed-Point Behavior\r
+   * Care must be taken when using the fixed-point versions of the PID Controller functions.\r
+   * In particular, the overflow and saturation behavior of the accumulator used in each function must be considered.\r
+   * Refer to the function specific documentation below for usage guidelines.\r
+   */\r
+\r
+  /**\r
+   * @addtogroup PID\r
+   * @{\r
+   */\r
+\r
+  /**\r
+   * @brief  Process function for the floating-point PID Control.\r
+   * @param[in,out] *S is an instance of the floating-point PID Control structure\r
+   * @param[in] in input sample to process\r
+   * @return out processed output sample.\r
+   */\r
+\r
+\r
+  __STATIC_INLINE float32_t arm_pid_f32(\r
+                                       arm_pid_instance_f32 * S,\r
+                                       float32_t in)\r
+  {\r
+    float32_t out;\r
+\r
+    /* y[n] = y[n-1] + A0 * x[n] + A1 * x[n-1] + A2 * x[n-2]  */\r
+    out = (S->A0 * in) +\r
+      (S->A1 * S->state[0]) + (S->A2 * S->state[1]) + (S->state[2]);\r
+\r
+    /* Update state */\r
+    S->state[1] = S->state[0];\r
+    S->state[0] = in;\r
+    S->state[2] = out;\r
+\r
+    /* return to application */\r
+    return (out);\r
+\r
+  }\r
+\r
+  /**\r
+   * @brief  Process function for the Q31 PID Control.\r
+   * @param[in,out] *S points to an instance of the Q31 PID Control structure\r
+   * @param[in] in input sample to process\r
+   * @return out processed output sample.\r
+   *\r
+   * <b>Scaling and Overflow Behavior:</b>\r
+   * \par\r
+   * The function is implemented using an internal 64-bit accumulator.\r
+   * The accumulator has a 2.62 format and maintains full precision of the intermediate multiplication results but provides only a single guard bit.\r
+   * Thus, if the accumulator result overflows it wraps around rather than clip.\r
+   * In order to avoid overflows completely the input signal must be scaled down by 2 bits as there are four additions.\r
+   * After all multiply-accumulates are performed, the 2.62 accumulator is truncated to 1.32 format and then saturated to 1.31 format.\r
+   */\r
+\r
+  __STATIC_INLINE q31_t arm_pid_q31(\r
+                                   arm_pid_instance_q31 * S,\r
+                                   q31_t in)\r
+  {\r
+    q63_t acc;\r
+       q31_t out;\r
+\r
+    /* acc = A0 * x[n]  */\r
+    acc = (q63_t) S->A0 * in;\r
+\r
+    /* acc += A1 * x[n-1] */\r
+    acc += (q63_t) S->A1 * S->state[0];\r
+\r
+    /* acc += A2 * x[n-2]  */\r
+    acc += (q63_t) S->A2 * S->state[1];\r
+\r
+    /* convert output to 1.31 format to add y[n-1] */\r
+    out = (q31_t) (acc >> 31u);\r
+\r
+    /* out += y[n-1] */\r
+    out += S->state[2];\r
+\r
+    /* Update state */\r
+    S->state[1] = S->state[0];\r
+    S->state[0] = in;\r
+    S->state[2] = out;\r
+\r
+    /* return to application */\r
+    return (out);\r
+\r
+  }\r
+\r
+  /**\r
+   * @brief  Process function for the Q15 PID Control.\r
+   * @param[in,out] *S points to an instance of the Q15 PID Control structure\r
+   * @param[in] in input sample to process\r
+   * @return out processed output sample.\r
+   *\r
+   * <b>Scaling and Overflow Behavior:</b>\r
+   * \par\r
+   * The function is implemented using a 64-bit internal accumulator.\r
+   * Both Gains and state variables are represented in 1.15 format and multiplications yield a 2.30 result.\r
+   * The 2.30 intermediate results are accumulated in a 64-bit accumulator in 34.30 format.\r
+   * There is no risk of internal overflow with this approach and the full precision of intermediate multiplications is preserved.\r
+   * After all additions have been performed, the accumulator is truncated to 34.15 format by discarding low 15 bits.\r
+   * Lastly, the accumulator is saturated to yield a result in 1.15 format.\r
+   */\r
+\r
+  __STATIC_INLINE q15_t arm_pid_q15(\r
+                                   arm_pid_instance_q15 * S,\r
+                                   q15_t in)\r
+  {\r
+    q63_t acc;\r
+    q15_t out;\r
+\r
+    /* Implementation of PID controller */\r
+\r
+       #ifdef ARM_MATH_CM0\r
+\r
+       /* acc = A0 * x[n]  */\r
+       acc = ((q31_t) S->A0 )* in ;\r
+\r
+    #else\r
+\r
+    /* acc = A0 * x[n]  */\r
+    acc = (q31_t) __SMUAD(S->A0, in);\r
+\r
+       #endif\r
+\r
+       #ifdef ARM_MATH_CM0\r
+\r
+       /* acc += A1 * x[n-1] + A2 * x[n-2]  */\r
+       acc += (q31_t) S->A1  *  S->state[0] ;\r
+       acc += (q31_t) S->A2  *  S->state[1] ;\r
+\r
+       #else\r
+\r
+    /* acc += A1 * x[n-1] + A2 * x[n-2]  */\r
+    acc = __SMLALD(S->A1, (q31_t)__SIMD32(S->state), acc);\r
+\r
+       #endif\r
+\r
+    /* acc += y[n-1] */\r
+    acc += (q31_t) S->state[2] << 15;\r
+\r
+    /* saturate the output */\r
+    out = (q15_t) (__SSAT((acc >> 15), 16));\r
+\r
+    /* Update state */\r
+    S->state[1] = S->state[0];\r
+    S->state[0] = in;\r
+    S->state[2] = out;\r
+\r
+    /* return to application */\r
+    return (out);\r
+\r
+  }\r
+\r
+  /**\r
+   * @} end of PID group\r
+   */\r
+\r
+\r
+  /**\r
+   * @brief Floating-point matrix inverse.\r
+   * @param[in]  *src points to the instance of the input floating-point matrix structure.\r
+   * @param[out] *dst points to the instance of the output floating-point matrix structure.\r
+   * @return The function returns ARM_MATH_SIZE_MISMATCH, if the dimensions do not match.\r
+   * If the input matrix is singular (does not have an inverse), then the algorithm terminates and returns error status ARM_MATH_SINGULAR.\r
+   */\r
+\r
+  arm_status arm_mat_inverse_f32(\r
+                                const arm_matrix_instance_f32 * src,\r
+                                arm_matrix_instance_f32 * dst);\r
+\r
+\r
+\r
+  /**\r
+   * @ingroup groupController\r
+   */\r
+\r
+\r
+  /**\r
+   * @defgroup clarke Vector Clarke Transform\r
+   * Forward Clarke transform converts the instantaneous stator phases into a two-coordinate time invariant vector.\r
+   * Generally the Clarke transform uses three-phase currents <code>Ia, Ib and Ic</code> to calculate currents\r
+   * in the two-phase orthogonal stator axis <code>Ialpha</code> and <code>Ibeta</code>.\r
+   * When <code>Ialpha</code> is superposed with <code>Ia</code> as shown in the figure below\r
+   * \image html clarke.gif Stator current space vector and its components in (a,b).\r
+   * and <code>Ia + Ib + Ic = 0</code>, in this condition <code>Ialpha</code> and <code>Ibeta</code>\r
+   * can be calculated using only <code>Ia</code> and <code>Ib</code>.\r
+   *\r
+   * The function operates on a single sample of data and each call to the function returns the processed output.\r
+   * The library provides separate functions for Q31 and floating-point data types.\r
+   * \par Algorithm\r
+   * \image html clarkeFormula.gif\r
+   * where <code>Ia</code> and <code>Ib</code> are the instantaneous stator phases and\r
+   * <code>pIalpha</code> and <code>pIbeta</code> are the two coordinates of time invariant vector.\r
+   * \par Fixed-Point Behavior\r
+   * Care must be taken when using the Q31 version of the Clarke transform.\r
+   * In particular, the overflow and saturation behavior of the accumulator used must be considered.\r
+   * Refer to the function specific documentation below for usage guidelines.\r
+   */\r
+\r
+  /**\r
+   * @addtogroup clarke\r
+   * @{\r
+   */\r
+\r
+  /**\r
+   *\r
+   * @brief  Floating-point Clarke transform\r
+   * @param[in]       Ia       input three-phase coordinate <code>a</code>\r
+   * @param[in]       Ib       input three-phase coordinate <code>b</code>\r
+   * @param[out]      *pIalpha points to output two-phase orthogonal vector axis alpha\r
+   * @param[out]      *pIbeta  points to output two-phase orthogonal vector axis beta\r
+   * @return none.\r
+   */\r
+\r
+  __STATIC_INLINE void arm_clarke_f32(\r
+                                     float32_t Ia,\r
+                                     float32_t Ib,\r
+                                     float32_t * pIalpha,\r
+                                     float32_t * pIbeta)\r
+  {\r
+    /* Calculate pIalpha using the equation, pIalpha = Ia */\r
+    *pIalpha = Ia;\r
+\r
+    /* Calculate pIbeta using the equation, pIbeta = (1/sqrt(3)) * Ia + (2/sqrt(3)) * Ib */\r
+    *pIbeta = ((float32_t) 0.57735026919 * Ia + (float32_t) 1.15470053838 * Ib);\r
+\r
+  }\r
+\r
+  /**\r
+   * @brief  Clarke transform for Q31 version\r
+   * @param[in]       Ia       input three-phase coordinate <code>a</code>\r
+   * @param[in]       Ib       input three-phase coordinate <code>b</code>\r
+   * @param[out]      *pIalpha points to output two-phase orthogonal vector axis alpha\r
+   * @param[out]      *pIbeta  points to output two-phase orthogonal vector axis beta\r
+   * @return none.\r
+   *\r
+   * <b>Scaling and Overflow Behavior:</b>\r
+   * \par\r
+   * The function is implemented using an internal 32-bit accumulator.\r
+   * The accumulator maintains 1.31 format by truncating lower 31 bits of the intermediate multiplication in 2.62 format.\r
+   * There is saturation on the addition, hence there is no risk of overflow.\r
+   */\r
+\r
+  __STATIC_INLINE void arm_clarke_q31(\r
+                                     q31_t Ia,\r
+                                     q31_t Ib,\r
+                                     q31_t * pIalpha,\r
+                                     q31_t * pIbeta)\r
+  {\r
+    q31_t product1, product2;                    /* Temporary variables used to store intermediate results */\r
+\r
+    /* Calculating pIalpha from Ia by equation pIalpha = Ia */\r
+    *pIalpha = Ia;\r
+\r
+    /* Intermediate product is calculated by (1/(sqrt(3)) * Ia) */\r
+    product1 = (q31_t) (((q63_t) Ia * 0x24F34E8B) >> 30);\r
+\r
+    /* Intermediate product is calculated by (2/sqrt(3) * Ib) */\r
+    product2 = (q31_t) (((q63_t) Ib * 0x49E69D16) >> 30);\r
+\r
+    /* pIbeta is calculated by adding the intermediate products */\r
+    *pIbeta = __QADD(product1, product2);\r
+  }\r
+\r
+  /**\r
+   * @} end of clarke group\r
+   */\r
+\r
+  /**\r
+   * @brief  Converts the elements of the Q7 vector to Q31 vector.\r
+   * @param[in]  *pSrc     input pointer\r
+   * @param[out]  *pDst    output pointer\r
+   * @param[in]  blockSize number of samples to process\r
+   * @return none.\r
+   */\r
+  void arm_q7_to_q31(\r
+                    q7_t * pSrc,\r
+                    q31_t * pDst,\r
+                    uint32_t blockSize);\r
+\r
+\r
+\r
+\r
+  /**\r
+   * @ingroup groupController\r
+   */\r
+\r
+  /**\r
+   * @defgroup inv_clarke Vector Inverse Clarke Transform\r
+   * Inverse Clarke transform converts the two-coordinate time invariant vector into instantaneous stator phases.\r
+   *\r
+   * The function operates on a single sample of data and each call to the function returns the processed output.\r
+   * The library provides separate functions for Q31 and floating-point data types.\r
+   * \par Algorithm\r
+   * \image html clarkeInvFormula.gif\r
+   * where <code>pIa</code> and <code>pIb</code> are the instantaneous stator phases and\r
+   * <code>Ialpha</code> and <code>Ibeta</code> are the two coordinates of time invariant vector.\r
+   * \par Fixed-Point Behavior\r
+   * Care must be taken when using the Q31 version of the Clarke transform.\r
+   * In particular, the overflow and saturation behavior of the accumulator used must be considered.\r
+   * Refer to the function specific documentation below for usage guidelines.\r
+   */\r
+\r
+  /**\r
+   * @addtogroup inv_clarke\r
+   * @{\r
+   */\r
+\r
+   /**\r
+   * @brief  Floating-point Inverse Clarke transform\r
+   * @param[in]       Ialpha  input two-phase orthogonal vector axis alpha\r
+   * @param[in]       Ibeta   input two-phase orthogonal vector axis beta\r
+   * @param[out]      *pIa    points to output three-phase coordinate <code>a</code>\r
+   * @param[out]      *pIb    points to output three-phase coordinate <code>b</code>\r
+   * @return none.\r
+   */\r
+\r
+\r
+  __STATIC_INLINE void arm_inv_clarke_f32(\r
+                                         float32_t Ialpha,\r
+                                         float32_t Ibeta,\r
+                                         float32_t * pIa,\r
+                                         float32_t * pIb)\r
+  {\r
+    /* Calculating pIa from Ialpha by equation pIa = Ialpha */\r
+    *pIa = Ialpha;\r
+\r
+    /* Calculating pIb from Ialpha and Ibeta by equation pIb = -(1/2) * Ialpha + (sqrt(3)/2) * Ibeta */\r
+    *pIb = -0.5 * Ialpha + (float32_t) 0.8660254039 *Ibeta;\r
+\r
+  }\r
+\r
+  /**\r
+   * @brief  Inverse Clarke transform for Q31 version\r
+   * @param[in]       Ialpha  input two-phase orthogonal vector axis alpha\r
+   * @param[in]       Ibeta   input two-phase orthogonal vector axis beta\r
+   * @param[out]      *pIa    points to output three-phase coordinate <code>a</code>\r
+   * @param[out]      *pIb    points to output three-phase coordinate <code>b</code>\r
+   * @return none.\r
+   *\r
+   * <b>Scaling and Overflow Behavior:</b>\r
+   * \par\r
+   * The function is implemented using an internal 32-bit accumulator.\r
+   * The accumulator maintains 1.31 format by truncating lower 31 bits of the intermediate multiplication in 2.62 format.\r
+   * There is saturation on the subtraction, hence there is no risk of overflow.\r
+   */\r
+\r
+  __STATIC_INLINE void arm_inv_clarke_q31(\r
+                                         q31_t Ialpha,\r
+                                         q31_t Ibeta,\r
+                                         q31_t * pIa,\r
+                                         q31_t * pIb)\r
+  {\r
+    q31_t product1, product2;                    /* Temporary variables used to store intermediate results */\r
+\r
+    /* Calculating pIa from Ialpha by equation pIa = Ialpha */\r
+    *pIa = Ialpha;\r
+\r
+    /* Intermediate product is calculated by (1/(2*sqrt(3)) * Ia) */\r
+    product1 = (q31_t) (((q63_t) (Ialpha) * (0x40000000)) >> 31);\r
+\r
+    /* Intermediate product is calculated by (1/sqrt(3) * pIb) */\r
+    product2 = (q31_t) (((q63_t) (Ibeta) * (0x6ED9EBA1)) >> 31);\r
+\r
+    /* pIb is calculated by subtracting the products */\r
+    *pIb = __QSUB(product2, product1);\r
+\r
+  }\r
+\r
+  /**\r
+   * @} end of inv_clarke group\r
+   */\r
+\r
+  /**\r
+   * @brief  Converts the elements of the Q7 vector to Q15 vector.\r
+   * @param[in]  *pSrc     input pointer\r
+   * @param[out] *pDst     output pointer\r
+   * @param[in]  blockSize number of samples to process\r
+   * @return none.\r
+   */\r
+  void arm_q7_to_q15(\r
+                     q7_t * pSrc,\r
+                    q15_t * pDst,\r
+                    uint32_t blockSize);\r
+\r
+\r
+\r
+  /**\r
+   * @ingroup groupController\r
+   */\r
+\r
+  /**\r
+   * @defgroup park Vector Park Transform\r
+   *\r
+   * Forward Park transform converts the input two-coordinate vector to flux and torque components.\r
+   * The Park transform can be used to realize the transformation of the <code>Ialpha</code> and the <code>Ibeta</code> currents\r
+   * from the stationary to the moving reference frame and control the spatial relationship between\r
+   * the stator vector current and rotor flux vector.\r
+   * If we consider the d axis aligned with the rotor flux, the diagram below shows the\r
+   * current vector and the relationship from the two reference frames:\r
+   * \image html park.gif "Stator current space vector and its component in (a,b) and in the d,q rotating reference frame"\r
+   *\r
+   * The function operates on a single sample of data and each call to the function returns the processed output.\r
+   * The library provides separate functions for Q31 and floating-point data types.\r
+   * \par Algorithm\r
+   * \image html parkFormula.gif\r
+   * where <code>Ialpha</code> and <code>Ibeta</code> are the stator vector components,\r
+   * <code>pId</code> and <code>pIq</code> are rotor vector components and <code>cosVal</code> and <code>sinVal</code> are the\r
+   * cosine and sine values of theta (rotor flux position).\r
+   * \par Fixed-Point Behavior\r
+   * Care must be taken when using the Q31 version of the Park transform.\r
+   * In particular, the overflow and saturation behavior of the accumulator used must be considered.\r
+   * Refer to the function specific documentation below for usage guidelines.\r
+   */\r
+\r
+  /**\r
+   * @addtogroup park\r
+   * @{\r
+   */\r
+\r
+  /**\r
+   * @brief Floating-point Park transform\r
+   * @param[in]       Ialpha input two-phase vector coordinate alpha\r
+   * @param[in]       Ibeta  input two-phase vector coordinate beta\r
+   * @param[out]      *pId   points to output  rotor reference frame d\r
+   * @param[out]      *pIq   points to output  rotor reference frame q\r
+   * @param[in]       sinVal sine value of rotation angle theta\r
+   * @param[in]       cosVal cosine value of rotation angle theta\r
+   * @return none.\r
+   *\r
+   * The function implements the forward Park transform.\r
+   *\r
+   */\r
+\r
+  __STATIC_INLINE void arm_park_f32(\r
+                                   float32_t Ialpha,\r
+                                   float32_t Ibeta,\r
+                                   float32_t * pId,\r
+                                   float32_t * pIq,\r
+                                   float32_t sinVal,\r
+                                   float32_t cosVal)\r
+  {\r
+    /* Calculate pId using the equation, pId = Ialpha * cosVal + Ibeta * sinVal */\r
+    *pId = Ialpha * cosVal + Ibeta * sinVal;\r
+\r
+    /* Calculate pIq using the equation, pIq = - Ialpha * sinVal + Ibeta * cosVal */\r
+    *pIq = -Ialpha * sinVal + Ibeta * cosVal;\r
+\r
+  }\r
+\r
+  /**\r
+   * @brief  Park transform for Q31 version\r
+   * @param[in]       Ialpha input two-phase vector coordinate alpha\r
+   * @param[in]       Ibeta  input two-phase vector coordinate beta\r
+   * @param[out]      *pId   points to output rotor reference frame d\r
+   * @param[out]      *pIq   points to output rotor reference frame q\r
+   * @param[in]       sinVal sine value of rotation angle theta\r
+   * @param[in]       cosVal cosine value of rotation angle theta\r
+   * @return none.\r
+   *\r
+   * <b>Scaling and Overflow Behavior:</b>\r
+   * \par\r
+   * The function is implemented using an internal 32-bit accumulator.\r
+   * The accumulator maintains 1.31 format by truncating lower 31 bits of the intermediate multiplication in 2.62 format.\r
+   * There is saturation on the addition and subtraction, hence there is no risk of overflow.\r
+   */\r
+\r
+\r
+  __STATIC_INLINE void arm_park_q31(\r
+                                   q31_t Ialpha,\r
+                                   q31_t Ibeta,\r
+                                   q31_t * pId,\r
+                                   q31_t * pIq,\r
+                                   q31_t sinVal,\r
+                                   q31_t cosVal)\r
+  {\r
+    q31_t product1, product2;                    /* Temporary variables used to store intermediate results */\r
+    q31_t product3, product4;                    /* Temporary variables used to store intermediate results */\r
+\r
+    /* Intermediate product is calculated by (Ialpha * cosVal) */\r
+    product1 = (q31_t) (((q63_t) (Ialpha) * (cosVal)) >> 31);\r
+\r
+    /* Intermediate product is calculated by (Ibeta * sinVal) */\r
+    product2 = (q31_t) (((q63_t) (Ibeta) * (sinVal)) >> 31);\r
+\r
+\r
+    /* Intermediate product is calculated by (Ialpha * sinVal) */\r
+    product3 = (q31_t) (((q63_t) (Ialpha) * (sinVal)) >> 31);\r
+\r
+    /* Intermediate product is calculated by (Ibeta * cosVal) */\r
+    product4 = (q31_t) (((q63_t) (Ibeta) * (cosVal)) >> 31);\r
+\r
+    /* Calculate pId by adding the two intermediate products 1 and 2 */\r
+    *pId = __QADD(product1, product2);\r
+\r
+    /* Calculate pIq by subtracting the two intermediate products 3 from 4 */\r
+    *pIq = __QSUB(product4, product3);\r
+  }\r
+\r
+  /**\r
+   * @} end of park group\r
+   */\r
+\r
+  /**\r
+   * @brief  Converts the elements of the Q7 vector to floating-point vector.\r
+   * @param[in]  *pSrc is input pointer\r
+   * @param[out]  *pDst is output pointer\r
+   * @param[in]  blockSize is the number of samples to process\r
+   * @return none.\r
+   */\r
+  void arm_q7_to_float(\r
+                       q7_t * pSrc,\r
+                      float32_t * pDst,\r
+                      uint32_t blockSize);\r
+\r
+\r
+  /**\r
+   * @ingroup groupController\r
+   */\r
+\r
+  /**\r
+   * @defgroup inv_park Vector Inverse Park transform\r
+   * Inverse Park transform converts the input flux and torque components to two-coordinate vector.\r
+   *\r
+   * The function operates on a single sample of data and each call to the function returns the processed output.\r
+   * The library provides separate functions for Q31 and floating-point data types.\r
+   * \par Algorithm\r
+   * \image html parkInvFormula.gif\r
+   * where <code>pIalpha</code> and <code>pIbeta</code> are the stator vector components,\r
+   * <code>Id</code> and <code>Iq</code> are rotor vector components and <code>cosVal</code> and <code>sinVal</code> are the\r
+   * cosine and sine values of theta (rotor flux position).\r
+   * \par Fixed-Point Behavior\r
+   * Care must be taken when using the Q31 version of the Park transform.\r
+   * In particular, the overflow and saturation behavior of the accumulator used must be considered.\r
+   * Refer to the function specific documentation below for usage guidelines.\r
+   */\r
+\r
+  /**\r
+   * @addtogroup inv_park\r
+   * @{\r
+   */\r
+\r
+   /**\r
+   * @brief  Floating-point Inverse Park transform\r
+   * @param[in]       Id        input coordinate of rotor reference frame d\r
+   * @param[in]       Iq        input coordinate of rotor reference frame q\r
+   * @param[out]      *pIalpha  points to output two-phase orthogonal vector axis alpha\r
+   * @param[out]      *pIbeta   points to output two-phase orthogonal vector axis beta\r
+   * @param[in]       sinVal    sine value of rotation angle theta\r
+   * @param[in]       cosVal    cosine value of rotation angle theta\r
+   * @return none.\r
+   */\r
+\r
+  __STATIC_INLINE void arm_inv_park_f32(\r
+                                       float32_t Id,\r
+                                       float32_t Iq,\r
+                                       float32_t * pIalpha,\r
+                                       float32_t * pIbeta,\r
+                                       float32_t sinVal,\r
+                                       float32_t cosVal)\r
+  {\r
+    /* Calculate pIalpha using the equation, pIalpha = Id * cosVal - Iq * sinVal */\r
+    *pIalpha = Id * cosVal - Iq * sinVal;\r
+\r
+    /* Calculate pIbeta using the equation, pIbeta = Id * sinVal + Iq * cosVal */\r
+    *pIbeta = Id * sinVal + Iq * cosVal;\r
+\r
+  }\r
+\r
+\r
+  /**\r
+   * @brief  Inverse Park transform for        Q31 version\r
+   * @param[in]       Id        input coordinate of rotor reference frame d\r
+   * @param[in]       Iq        input coordinate of rotor reference frame q\r
+   * @param[out]      *pIalpha  points to output two-phase orthogonal vector axis alpha\r
+   * @param[out]      *pIbeta   points to output two-phase orthogonal vector axis beta\r
+   * @param[in]       sinVal    sine value of rotation angle theta\r
+   * @param[in]       cosVal    cosine value of rotation angle theta\r
+   * @return none.\r
+   *\r
+   * <b>Scaling and Overflow Behavior:</b>\r
+   * \par\r
+   * The function is implemented using an internal 32-bit accumulator.\r
+   * The accumulator maintains 1.31 format by truncating lower 31 bits of the intermediate multiplication in 2.62 format.\r
+   * There is saturation on the addition, hence there is no risk of overflow.\r
+   */\r
+\r
+\r
+  __STATIC_INLINE void arm_inv_park_q31(\r
+                                       q31_t Id,\r
+                                       q31_t Iq,\r
+                                       q31_t * pIalpha,\r
+                                       q31_t * pIbeta,\r
+                                       q31_t sinVal,\r
+                                       q31_t cosVal)\r
+  {\r
+    q31_t product1, product2;                    /* Temporary variables used to store intermediate results */\r
+    q31_t product3, product4;                    /* Temporary variables used to store intermediate results */\r
+\r
+    /* Intermediate product is calculated by (Id * cosVal) */\r
+    product1 = (q31_t) (((q63_t) (Id) * (cosVal)) >> 31);\r
+\r
+    /* Intermediate product is calculated by (Iq * sinVal) */\r
+    product2 = (q31_t) (((q63_t) (Iq) * (sinVal)) >> 31);\r
+\r
+\r
+    /* Intermediate product is calculated by (Id * sinVal) */\r
+    product3 = (q31_t) (((q63_t) (Id) * (sinVal)) >> 31);\r
+\r
+    /* Intermediate product is calculated by (Iq * cosVal) */\r
+    product4 = (q31_t) (((q63_t) (Iq) * (cosVal)) >> 31);\r
+\r
+    /* Calculate pIalpha by using the two intermediate products 1 and 2 */\r
+    *pIalpha = __QSUB(product1, product2);\r
+\r
+    /* Calculate pIbeta by using the two intermediate products 3 and 4 */\r
+    *pIbeta = __QADD(product4, product3);\r
+\r
+  }\r
+\r
+  /**\r
+   * @} end of Inverse park group\r
+   */\r
+\r
+\r
+  /**\r
+   * @brief  Converts the elements of the Q31 vector to floating-point vector.\r
+   * @param[in]  *pSrc is input pointer\r
+   * @param[out]  *pDst is output pointer\r
+   * @param[in]  blockSize is the number of samples to process\r
+   * @return none.\r
+   */\r
+  void arm_q31_to_float(\r
+                        q31_t * pSrc,\r
+                       float32_t * pDst,\r
+                       uint32_t blockSize);\r
+\r
+  /**\r
+   * @ingroup groupInterpolation\r
+   */\r
+\r
+  /**\r
+   * @defgroup LinearInterpolate Linear Interpolation\r
+   *\r
+   * Linear interpolation is a method of curve fitting using linear polynomials.\r
+   * Linear interpolation works by effectively drawing a straight line between two neighboring samples and returning the appropriate point along that line\r
+   *\r
+   * \par\r
+   * \image html LinearInterp.gif "Linear interpolation"\r
+   *\r
+   * \par\r
+   * A  Linear Interpolate function calculates an output value(y), for the input(x)\r
+   * using linear interpolation of the input values x0, x1( nearest input values) and the output values y0 and y1(nearest output values)\r
+   *\r
+   * \par Algorithm:\r
+   * <pre>\r
+   *       y = y0 + (x - x0) * ((y1 - y0)/(x1-x0))\r
+   *       where x0, x1 are nearest values of input x\r
+   *             y0, y1 are nearest values to output y\r
+   * </pre>\r
+   *\r
+   * \par\r
+   * This set of functions implements Linear interpolation process\r
+   * for Q7, Q15, Q31, and floating-point data types.  The functions operate on a single\r
+   * sample of data and each call to the function returns a single processed value.\r
+   * <code>S</code> points to an instance of the Linear Interpolate function data structure.\r
+   * <code>x</code> is the input sample value. The functions returns the output value.\r
+   *\r
+   * \par\r
+   * if x is outside of the table boundary, Linear interpolation returns first value of the table\r
+   * if x is below input range and returns last value of table if x is above range.\r
+   */\r
+\r
+  /**\r
+   * @addtogroup LinearInterpolate\r
+   * @{\r
+   */\r
+\r
+  /**\r
+   * @brief  Process function for the floating-point Linear Interpolation Function.\r
+   * @param[in,out] *S is an instance of the floating-point Linear Interpolation structure\r
+   * @param[in] x input sample to process\r
+   * @return y processed output sample.\r
+   *\r
+   */\r
+\r
+  __STATIC_INLINE float32_t arm_linear_interp_f32(\r
+                                                 arm_linear_interp_instance_f32 * S,\r
+                                                 float32_t x)\r
+  {\r
+\r
+         float32_t y;\r
+         float32_t x0, x1;                                             /* Nearest input values */\r
+         float32_t y0, y1;                                             /* Nearest output values */\r
+         float32_t xSpacing = S->xSpacing;             /* spacing between input values */\r
+         int32_t i;                                                    /* Index variable */\r
+         float32_t *pYData = S->pYData;            /* pointer to output table */\r
+\r
+         /* Calculation of index */\r
+         i =   (x - S->x1) / xSpacing;\r
+\r
+         if(i < 0)\r
+         {\r
+            /* Iniatilize output for below specified range as least output value of table */\r
+                y = pYData[0];\r
+         }\r
+         else if(i >= S->nValues)\r
+         {\r
+                 /* Iniatilize output for above specified range as last output value of table */\r
+                 y = pYData[S->nValues-1];\r
+         }\r
+         else\r
+         {\r
+                 /* Calculation of nearest input values */\r
+                 x0 = S->x1 + i * xSpacing;\r
+                 x1 = S->x1 + (i +1) * xSpacing;\r
+\r
+                /* Read of nearest output values */\r
+                 y0 = pYData[i];\r
+                 y1 = pYData[i + 1];\r
+\r
+                 /* Calculation of output */\r
+                 y = y0 + (x - x0) * ((y1 - y0)/(x1-x0));\r
+\r
+         }\r
+\r
+      /* returns output value */\r
+         return (y);\r
+  }\r
+\r
+   /**\r
+   *\r
+   * @brief  Process function for the Q31 Linear Interpolation Function.\r
+   * @param[in] *pYData  pointer to Q31 Linear Interpolation table\r
+   * @param[in] x input sample to process\r
+   * @param[in] nValues number of table values\r
+   * @return y processed output sample.\r
+   *\r
+   * \par\r
+   * Input sample <code>x</code> is in 12.20 format which contains 12 bits for table index and 20 bits for fractional part.\r
+   * This function can support maximum of table size 2^12.\r
+   *\r
+   */\r
+\r
+\r
+  __STATIC_INLINE q31_t arm_linear_interp_q31(q31_t *pYData,\r
+                                             q31_t x, uint32_t nValues)\r
+  {\r
+    q31_t y;                                   /* output */\r
+    q31_t y0, y1;                                /* Nearest output values */\r
+    q31_t fract;                                 /* fractional part */\r
+    int32_t index;                              /* Index to read nearest output values */\r
+\r
+    /* Input is in 12.20 format */\r
+    /* 12 bits for the table index */\r
+    /* Index value calculation */\r
+    index = ((x & 0xFFF00000) >> 20);\r
+\r
+       if(index >= (nValues - 1))\r
+       {\r
+               return(pYData[nValues - 1]);\r
+       }\r
+       else if(index < 0)\r
+       {\r
+               return(pYData[0]);\r
+       }\r
+       else\r
+       {\r
+\r
+           /* 20 bits for the fractional part */\r
+           /* shift left by 11 to keep fract in 1.31 format */\r
+           fract = (x & 0x000FFFFF) << 11;\r
+\r
+           /* Read two nearest output values from the index in 1.31(q31) format */\r
+           y0 = pYData[index];\r
+           y1 = pYData[index + 1u];\r
+\r
+           /* Calculation of y0 * (1-fract) and y is in 2.30 format */\r
+           y = ((q31_t) ((q63_t) y0 * (0x7FFFFFFF - fract) >> 32));\r
+\r
+           /* Calculation of y0 * (1-fract) + y1 *fract and y is in 2.30 format */\r
+           y += ((q31_t) (((q63_t) y1 * fract) >> 32));\r
+\r
+           /* Convert y to 1.31 format */\r
+           return (y << 1u);\r
+\r
+       }\r
+\r
+  }\r
+\r
+  /**\r
+   *\r
+   * @brief  Process function for the Q15 Linear Interpolation Function.\r
+   * @param[in] *pYData  pointer to Q15 Linear Interpolation table\r
+   * @param[in] x input sample to process\r
+   * @param[in] nValues number of table values\r
+   * @return y processed output sample.\r
+   *\r
+   * \par\r
+   * Input sample <code>x</code> is in 12.20 format which contains 12 bits for table index and 20 bits for fractional part.\r
+   * This function can support maximum of table size 2^12.\r
+   *\r
+   */\r
+\r
+\r
+  __STATIC_INLINE q15_t arm_linear_interp_q15(q15_t *pYData, q31_t x, uint32_t nValues)\r
+  {\r
+    q63_t y;                                   /* output */\r
+    q15_t y0, y1;                              /* Nearest output values */\r
+    q31_t fract;                               /* fractional part */\r
+    int32_t index;                            /* Index to read nearest output values */\r
+\r
+    /* Input is in 12.20 format */\r
+    /* 12 bits for the table index */\r
+    /* Index value calculation */\r
+    index = ((x & 0xFFF00000) >> 20u);\r
+\r
+       if(index >= (nValues - 1))\r
+       {\r
+               return(pYData[nValues - 1]);\r
+       }\r
+       else if(index < 0)\r
+       {\r
+               return(pYData[0]);\r
+       }\r
+       else\r
+       {\r
+           /* 20 bits for the fractional part */\r
+           /* fract is in 12.20 format */\r
+           fract = (x & 0x000FFFFF);\r
+\r
+           /* Read two nearest output values from the index */\r
+           y0 = pYData[index];\r
+           y1 = pYData[index + 1u];\r
+\r
+           /* Calculation of y0 * (1-fract) and y is in 13.35 format */\r
+           y = ((q63_t) y0 * (0xFFFFF - fract));\r
+\r
+           /* Calculation of (y0 * (1-fract) + y1 * fract) and y is in 13.35 format */\r
+           y += ((q63_t) y1 * (fract));\r
+\r
+           /* convert y to 1.15 format */\r
+           return (y >> 20);\r
+       }\r
+\r
+\r
+  }\r
+\r
+  /**\r
+   *\r
+   * @brief  Process function for the Q7 Linear Interpolation Function.\r
+   * @param[in] *pYData  pointer to Q7 Linear Interpolation table\r
+   * @param[in] x input sample to process\r
+   * @param[in] nValues number of table values\r
+   * @return y processed output sample.\r
+   *\r
+   * \par\r
+   * Input sample <code>x</code> is in 12.20 format which contains 12 bits for table index and 20 bits for fractional part.\r
+   * This function can support maximum of table size 2^12.\r
+   */\r
+\r
+\r
+  __STATIC_INLINE q7_t arm_linear_interp_q7(q7_t *pYData, q31_t x,  uint32_t nValues)\r
+  {\r
+    q31_t y;                                   /* output */\r
+    q7_t y0, y1;                                 /* Nearest output values */\r
+    q31_t fract;                                 /* fractional part */\r
+    int32_t index;                              /* Index to read nearest output values */\r
+\r
+    /* Input is in 12.20 format */\r
+    /* 12 bits for the table index */\r
+    /* Index value calculation */\r
+    index = ((x & 0xFFF00000) >> 20u);\r
+\r
+\r
+    if(index >= (nValues - 1))\r
+       {\r
+               return(pYData[nValues - 1]);\r
+       }\r
+       else if(index < 0)\r
+       {\r
+               return(pYData[0]);\r
+       }\r
+       else\r
+       {\r
+\r
+           /* 20 bits for the fractional part */\r
+           /* fract is in 12.20 format */\r
+           fract = (x & 0x000FFFFF);\r
+\r
+           /* Read two nearest output values from the index and are in 1.7(q7) format */\r
+           y0 = pYData[index];\r
+           y1 = pYData[index + 1u];\r
+\r
+           /* Calculation of y0 * (1-fract ) and y is in 13.27(q27) format */\r
+           y = ((y0 * (0xFFFFF - fract)));\r
+\r
+           /* Calculation of y1 * fract + y0 * (1-fract) and y is in 13.27(q27) format */\r
+           y += (y1 * fract);\r
+\r
+           /* convert y to 1.7(q7) format */\r
+           return (y >> 20u);\r
+\r
+       }\r
+\r
+  }\r
+  /**\r
+   * @} end of LinearInterpolate group\r
+   */\r
+\r
+  /**\r
+   * @brief  Fast approximation to the trigonometric sine function for floating-point data.\r
+   * @param[in] x input value in radians.\r
+   * @return  sin(x).\r
+   */\r
+\r
+  float32_t arm_sin_f32(\r
+                        float32_t x);\r
+\r
+  /**\r
+   * @brief  Fast approximation to the trigonometric sine function for Q31 data.\r
+   * @param[in] x Scaled input value in radians.\r
+   * @return  sin(x).\r
+   */\r
+\r
+  q31_t arm_sin_q31(\r
+                    q31_t x);\r
+\r
+  /**\r
+   * @brief  Fast approximation to the trigonometric sine function for Q15 data.\r
+   * @param[in] x Scaled input value in radians.\r
+   * @return  sin(x).\r
+   */\r
+\r
+  q15_t arm_sin_q15(\r
+                    q15_t x);\r
+\r
+  /**\r
+   * @brief  Fast approximation to the trigonometric cosine function for floating-point data.\r
+   * @param[in] x input value in radians.\r
+   * @return  cos(x).\r
+   */\r
+\r
+  float32_t arm_cos_f32(\r
+                        float32_t x);\r
+\r
+  /**\r
+   * @brief Fast approximation to the trigonometric cosine function for Q31 data.\r
+   * @param[in] x Scaled input value in radians.\r
+   * @return  cos(x).\r
+   */\r
+\r
+  q31_t arm_cos_q31(\r
+                    q31_t x);\r
+\r
+  /**\r
+   * @brief  Fast approximation to the trigonometric cosine function for Q15 data.\r
+   * @param[in] x Scaled input value in radians.\r
+   * @return  cos(x).\r
+   */\r
+\r
+  q15_t arm_cos_q15(\r
+                    q15_t x);\r
+\r
+\r
+  /**\r
+   * @ingroup groupFastMath\r
+   */\r
+\r
+\r
+  /**\r
+   * @defgroup SQRT Square Root\r
+   *\r
+   * Computes the square root of a number.\r
+   * There are separate functions for Q15, Q31, and floating-point data types.\r
+   * The square root function is computed using the Newton-Raphson algorithm.\r
+   * This is an iterative algorithm of the form:\r
+   * <pre>\r
+   *      x1 = x0 - f(x0)/f'(x0)\r
+   * </pre>\r
+   * where <code>x1</code> is the current estimate,\r
+   * <code>x0</code> is the previous estimate and\r
+   * <code>f'(x0)</code> is the derivative of <code>f()</code> evaluated at <code>x0</code>.\r
+   * For the square root function, the algorithm reduces to:\r
+   * <pre>\r
+   *     x0 = in/2                         [initial guess]\r
+   *     x1 = 1/2 * ( x0 + in / x0)        [each iteration]\r
+   * </pre>\r
+   */\r
+\r
+\r
+  /**\r
+   * @addtogroup SQRT\r
+   * @{\r
+   */\r
+\r
+  /**\r
+   * @brief  Floating-point square root function.\r
+   * @param[in]  in     input value.\r
+   * @param[out] *pOut  square root of input value.\r
+   * @return The function returns ARM_MATH_SUCCESS if input value is positive value or ARM_MATH_ARGUMENT_ERROR if\r
+   * <code>in</code> is negative value and returns zero output for negative values.\r
+   */\r
+\r
+  __STATIC_INLINE arm_status  arm_sqrt_f32(\r
+                      float32_t in, float32_t *pOut)\r
+  {\r
+    if(in > 0)\r
+    {\r
+\r
+//    #if __FPU_USED\r
+    #if (__FPU_USED == 1) && defined ( __CC_ARM   )\r
+        *pOut = __sqrtf(in);\r
+    #elif (__FPU_USED == 1) && defined ( __TMS_740 )\r
+        *pOut = __builtin_sqrtf(in);\r
+    #else\r
+        *pOut = sqrtf(in);\r
+    #endif\r
+\r
+        return (ARM_MATH_SUCCESS);\r
+    }\r
+    else\r
+    {\r
+        *pOut = 0.0f;\r
+        return (ARM_MATH_ARGUMENT_ERROR);\r
+    }\r
+\r
+  }\r
+\r
+\r
+  /**\r
+   * @brief Q31 square root function.\r
+   * @param[in]   in    input value.  The range of the input value is [0 +1) or 0x00000000 to 0x7FFFFFFF.\r
+   * @param[out]  *pOut square root of input value.\r
+   * @return The function returns ARM_MATH_SUCCESS if input value is positive value or ARM_MATH_ARGUMENT_ERROR if\r
+   * <code>in</code> is negative value and returns zero output for negative values.\r
+   */\r
+  arm_status arm_sqrt_q31(\r
+                     q31_t in, q31_t *pOut);\r
+\r
+  /**\r
+   * @brief  Q15 square root function.\r
+   * @param[in]   in     input value.  The range of the input value is [0 +1) or 0x0000 to 0x7FFF.\r
+   * @param[out]  *pOut  square root of input value.\r
+   * @return The function returns ARM_MATH_SUCCESS if input value is positive value or ARM_MATH_ARGUMENT_ERROR if\r
+   * <code>in</code> is negative value and returns zero output for negative values.\r
+   */\r
+  arm_status arm_sqrt_q15(\r
+                     q15_t in, q15_t *pOut);\r
+\r
+  /**\r
+   * @} end of SQRT group\r
+   */\r
+\r
+\r
+\r
+\r
+\r
+\r
+  /**\r
+   * @brief floating-point Circular write function.\r
+   */\r
+\r
+  __STATIC_INLINE void arm_circularWrite_f32(\r
+                                            int32_t * circBuffer,\r
+                                            int32_t L,\r
+                                            uint16_t * writeOffset,\r
+                                            int32_t bufferInc,\r
+                                            const int32_t * src,\r
+                                            int32_t srcInc,\r
+                                            uint32_t blockSize)\r
+  {\r
+    uint32_t i = 0u;\r
+    int32_t wOffset;\r
+\r
+    /* Copy the value of Index pointer that points\r
+     * to the current location where the input samples to be copied */\r
+    wOffset = *writeOffset;\r
+\r
+    /* Loop over the blockSize */\r
+    i = blockSize;\r
+\r
+    while(i > 0u)\r
+      {\r
+       /* copy the input sample to the circular buffer */\r
+       circBuffer[wOffset] = *src;\r
+\r
+       /* Update the input pointer */\r
+       src += srcInc;\r
+\r
+       /* Circularly update wOffset.  Watch out for positive and negative value */\r
+       wOffset += bufferInc;\r
+       if(wOffset >= L)\r
+         wOffset -= L;\r
+\r
+       /* Decrement the loop counter */\r
+       i--;\r
+      }\r
+\r
+    /* Update the index pointer */\r
+    *writeOffset = wOffset;\r
+  }\r
+\r
+\r
+\r
+  /**\r
+   * @brief floating-point Circular Read function.\r
+   */\r
+  __STATIC_INLINE void arm_circularRead_f32(\r
+                                           int32_t * circBuffer,\r
+                                           int32_t L,\r
+                                           int32_t * readOffset,\r
+                                           int32_t bufferInc,\r
+                                           int32_t * dst,\r
+                                           int32_t * dst_base,\r
+                                           int32_t dst_length,\r
+                                           int32_t dstInc,\r
+                                           uint32_t blockSize)\r
+  {\r
+    uint32_t i = 0u;\r
+    int32_t rOffset, dst_end;\r
+\r
+    /* Copy the value of Index pointer that points\r
+     * to the current location from where the input samples to be read */\r
+    rOffset = *readOffset;\r
+    dst_end = (int32_t) (dst_base + dst_length);\r
+\r
+    /* Loop over the blockSize */\r
+    i = blockSize;\r
+\r
+    while(i > 0u)\r
+      {\r
+       /* copy the sample from the circular buffer to the destination buffer */\r
+       *dst = circBuffer[rOffset];\r
+\r
+       /* Update the input pointer */\r
+       dst += dstInc;\r
+\r
+       if(dst == (int32_t *) dst_end)\r
+         {\r
+           dst = dst_base;\r
+         }\r
+\r
+       /* Circularly update rOffset.  Watch out for positive and negative value  */\r
+       rOffset += bufferInc;\r
+\r
+       if(rOffset >= L)\r
+         {\r
+           rOffset -= L;\r
+         }\r
+\r
+       /* Decrement the loop counter */\r
+       i--;\r
+      }\r
+\r
+    /* Update the index pointer */\r
+    *readOffset = rOffset;\r
+  }\r
+\r
+  /**\r
+   * @brief Q15 Circular write function.\r
+   */\r
+\r
+  __STATIC_INLINE void arm_circularWrite_q15(\r
+                                            q15_t * circBuffer,\r
+                                            int32_t L,\r
+                                            uint16_t * writeOffset,\r
+                                            int32_t bufferInc,\r
+                                            const q15_t * src,\r
+                                            int32_t srcInc,\r
+                                            uint32_t blockSize)\r
+  {\r
+    uint32_t i = 0u;\r
+    int32_t wOffset;\r
+\r
+    /* Copy the value of Index pointer that points\r
+     * to the current location where the input samples to be copied */\r
+    wOffset = *writeOffset;\r
+\r
+    /* Loop over the blockSize */\r
+    i = blockSize;\r
+\r
+    while(i > 0u)\r
+      {\r
+       /* copy the input sample to the circular buffer */\r
+       circBuffer[wOffset] = *src;\r
+\r
+       /* Update the input pointer */\r
+       src += srcInc;\r
+\r
+       /* Circularly update wOffset.  Watch out for positive and negative value */\r
+       wOffset += bufferInc;\r
+       if(wOffset >= L)\r
+         wOffset -= L;\r
+\r
+       /* Decrement the loop counter */\r
+       i--;\r
+      }\r
+\r
+    /* Update the index pointer */\r
+    *writeOffset = wOffset;\r
+  }\r
+\r
+\r
+\r
+  /**\r
+   * @brief Q15 Circular Read function.\r
+   */\r
+  __STATIC_INLINE void arm_circularRead_q15(\r
+                                           q15_t * circBuffer,\r
+                                           int32_t L,\r
+                                           int32_t * readOffset,\r
+                                           int32_t bufferInc,\r
+                                           q15_t * dst,\r
+                                           q15_t * dst_base,\r
+                                           int32_t dst_length,\r
+                                           int32_t dstInc,\r
+                                           uint32_t blockSize)\r
+  {\r
+    uint32_t i = 0;\r
+    int32_t rOffset, dst_end;\r
+\r
+    /* Copy the value of Index pointer that points\r
+     * to the current location from where the input samples to be read */\r
+    rOffset = *readOffset;\r
+\r
+    dst_end = (int32_t) (dst_base + dst_length);\r
+\r
+    /* Loop over the blockSize */\r
+    i = blockSize;\r
+\r
+    while(i > 0u)\r
+      {\r
+       /* copy the sample from the circular buffer to the destination buffer */\r
+       *dst = circBuffer[rOffset];\r
+\r
+       /* Update the input pointer */\r
+       dst += dstInc;\r
+\r
+       if(dst == (q15_t *) dst_end)\r
+         {\r
+           dst = dst_base;\r
+         }\r
+\r
+       /* Circularly update wOffset.  Watch out for positive and negative value */\r
+       rOffset += bufferInc;\r
+\r
+       if(rOffset >= L)\r
+         {\r
+           rOffset -= L;\r
+         }\r
+\r
+       /* Decrement the loop counter */\r
+       i--;\r
+      }\r
+\r
+    /* Update the index pointer */\r
+    *readOffset = rOffset;\r
+  }\r
+\r
+\r
+  /**\r
+   * @brief Q7 Circular write function.\r
+   */\r
+\r
+  __STATIC_INLINE void arm_circularWrite_q7(\r
+                                           q7_t * circBuffer,\r
+                                           int32_t L,\r
+                                           uint16_t * writeOffset,\r
+                                           int32_t bufferInc,\r
+                                           const q7_t * src,\r
+                                           int32_t srcInc,\r
+                                           uint32_t blockSize)\r
+  {\r
+    uint32_t i = 0u;\r
+    int32_t wOffset;\r
+\r
+    /* Copy the value of Index pointer that points\r
+     * to the current location where the input samples to be copied */\r
+    wOffset = *writeOffset;\r
+\r
+    /* Loop over the blockSize */\r
+    i = blockSize;\r
+\r
+    while(i > 0u)\r
+      {\r
+       /* copy the input sample to the circular buffer */\r
+       circBuffer[wOffset] = *src;\r
+\r
+       /* Update the input pointer */\r
+       src += srcInc;\r
+\r
+       /* Circularly update wOffset.  Watch out for positive and negative value */\r
+       wOffset += bufferInc;\r
+       if(wOffset >= L)\r
+         wOffset -= L;\r
+\r
+       /* Decrement the loop counter */\r
+       i--;\r
+      }\r
+\r
+    /* Update the index pointer */\r
+    *writeOffset = wOffset;\r
+  }\r
+\r
+\r
+\r
+  /**\r
+   * @brief Q7 Circular Read function.\r
+   */\r
+  __STATIC_INLINE void arm_circularRead_q7(\r
+                                          q7_t * circBuffer,\r
+                                          int32_t L,\r
+                                          int32_t * readOffset,\r
+                                          int32_t bufferInc,\r
+                                          q7_t * dst,\r
+                                          q7_t * dst_base,\r
+                                          int32_t dst_length,\r
+                                          int32_t dstInc,\r
+                                          uint32_t blockSize)\r
+  {\r
+    uint32_t i = 0;\r
+    int32_t rOffset, dst_end;\r
+\r
+    /* Copy the value of Index pointer that points\r
+     * to the current location from where the input samples to be read */\r
+    rOffset = *readOffset;\r
+\r
+    dst_end = (int32_t) (dst_base + dst_length);\r
+\r
+    /* Loop over the blockSize */\r
+    i = blockSize;\r
+\r
+    while(i > 0u)\r
+      {\r
+       /* copy the sample from the circular buffer to the destination buffer */\r
+       *dst = circBuffer[rOffset];\r
+\r
+       /* Update the input pointer */\r
+       dst += dstInc;\r
+\r
+       if(dst == (q7_t *) dst_end)\r
+         {\r
+           dst = dst_base;\r
+         }\r
+\r
+       /* Circularly update rOffset.  Watch out for positive and negative value */\r
+       rOffset += bufferInc;\r
+\r
+       if(rOffset >= L)\r
+         {\r
+           rOffset -= L;\r
+         }\r
+\r
+       /* Decrement the loop counter */\r
+       i--;\r
+      }\r
+\r
+    /* Update the index pointer */\r
+    *readOffset = rOffset;\r
+  }\r
+\r
+\r
+  /**\r
+   * @brief  Sum of the squares of the elements of a Q31 vector.\r
+   * @param[in]  *pSrc is input pointer\r
+   * @param[in]  blockSize is the number of samples to process\r
+   * @param[out]  *pResult is output value.\r
+   * @return none.\r
+   */\r
+\r
+  void arm_power_q31(\r
+                     q31_t * pSrc,\r
+                    uint32_t blockSize,\r
+                    q63_t * pResult);\r
+\r
+  /**\r
+   * @brief  Sum of the squares of the elements of a floating-point vector.\r
+   * @param[in]  *pSrc is input pointer\r
+   * @param[in]  blockSize is the number of samples to process\r
+   * @param[out]  *pResult is output value.\r
+   * @return none.\r
+   */\r
+\r
+  void arm_power_f32(\r
+                     float32_t * pSrc,\r
+                    uint32_t blockSize,\r
+                    float32_t * pResult);\r
+\r
+  /**\r
+   * @brief  Sum of the squares of the elements of a Q15 vector.\r
+   * @param[in]  *pSrc is input pointer\r
+   * @param[in]  blockSize is the number of samples to process\r
+   * @param[out]  *pResult is output value.\r
+   * @return none.\r
+   */\r
+\r
+  void arm_power_q15(\r
+                     q15_t * pSrc,\r
+                    uint32_t blockSize,\r
+                    q63_t * pResult);\r
+\r
+  /**\r
+   * @brief  Sum of the squares of the elements of a Q7 vector.\r
+   * @param[in]  *pSrc is input pointer\r
+   * @param[in]  blockSize is the number of samples to process\r
+   * @param[out]  *pResult is output value.\r
+   * @return none.\r
+   */\r
+\r
+  void arm_power_q7(\r
+                    q7_t * pSrc,\r
+                   uint32_t blockSize,\r
+                   q31_t * pResult);\r
+\r
+  /**\r
+   * @brief  Mean value of a Q7 vector.\r
+   * @param[in]  *pSrc is input pointer\r
+   * @param[in]  blockSize is the number of samples to process\r
+   * @param[out]  *pResult is output value.\r
+   * @return none.\r
+   */\r
+\r
+  void arm_mean_q7(\r
+                   q7_t * pSrc,\r
+                  uint32_t blockSize,\r
+                  q7_t * pResult);\r
+\r
+  /**\r
+   * @brief  Mean value of a Q15 vector.\r
+   * @param[in]  *pSrc is input pointer\r
+   * @param[in]  blockSize is the number of samples to process\r
+   * @param[out]  *pResult is output value.\r
+   * @return none.\r
+   */\r
+  void arm_mean_q15(\r
+                    q15_t * pSrc,\r
+                   uint32_t blockSize,\r
+                   q15_t * pResult);\r
+\r
+  /**\r
+   * @brief  Mean value of a Q31 vector.\r
+   * @param[in]  *pSrc is input pointer\r
+   * @param[in]  blockSize is the number of samples to process\r
+   * @param[out]  *pResult is output value.\r
+   * @return none.\r
+   */\r
+  void arm_mean_q31(\r
+                    q31_t * pSrc,\r
+                   uint32_t blockSize,\r
+                   q31_t * pResult);\r
+\r
+  /**\r
+   * @brief  Mean value of a floating-point vector.\r
+   * @param[in]  *pSrc is input pointer\r
+   * @param[in]  blockSize is the number of samples to process\r
+   * @param[out]  *pResult is output value.\r
+   * @return none.\r
+   */\r
+  void arm_mean_f32(\r
+                    float32_t * pSrc,\r
+                   uint32_t blockSize,\r
+                   float32_t * pResult);\r
+\r
+  /**\r
+   * @brief  Variance of the elements of a floating-point vector.\r
+   * @param[in]  *pSrc is input pointer\r
+   * @param[in]  blockSize is the number of samples to process\r
+   * @param[out]  *pResult is output value.\r
+   * @return none.\r
+   */\r
+\r
+  void arm_var_f32(\r
+                   float32_t * pSrc,\r
+                  uint32_t blockSize,\r
+                  float32_t * pResult);\r
+\r
+  /**\r
+   * @brief  Variance of the elements of a Q31 vector.\r
+   * @param[in]  *pSrc is input pointer\r
+   * @param[in]  blockSize is the number of samples to process\r
+   * @param[out]  *pResult is output value.\r
+   * @return none.\r
+   */\r
+\r
+  void arm_var_q31(\r
+                   q31_t * pSrc,\r
+                  uint32_t blockSize,\r
+                  q63_t * pResult);\r
+\r
+  /**\r
+   * @brief  Variance of the elements of a Q15 vector.\r
+   * @param[in]  *pSrc is input pointer\r
+   * @param[in]  blockSize is the number of samples to process\r
+   * @param[out]  *pResult is output value.\r
+   * @return none.\r
+   */\r
+\r
+  void arm_var_q15(\r
+                   q15_t * pSrc,\r
+                  uint32_t blockSize,\r
+                  q31_t * pResult);\r
+\r
+  /**\r
+   * @brief  Root Mean Square of the elements of a floating-point vector.\r
+   * @param[in]  *pSrc is input pointer\r
+   * @param[in]  blockSize is the number of samples to process\r
+   * @param[out]  *pResult is output value.\r
+   * @return none.\r
+   */\r
+\r
+  void arm_rms_f32(\r
+                   float32_t * pSrc,\r
+                  uint32_t blockSize,\r
+                  float32_t * pResult);\r
+\r
+  /**\r
+   * @brief  Root Mean Square of the elements of a Q31 vector.\r
+   * @param[in]  *pSrc is input pointer\r
+   * @param[in]  blockSize is the number of samples to process\r
+   * @param[out]  *pResult is output value.\r
+   * @return none.\r
+   */\r
+\r
+  void arm_rms_q31(\r
+                   q31_t * pSrc,\r
+                  uint32_t blockSize,\r
+                  q31_t * pResult);\r
+\r
+  /**\r
+   * @brief  Root Mean Square of the elements of a Q15 vector.\r
+   * @param[in]  *pSrc is input pointer\r
+   * @param[in]  blockSize is the number of samples to process\r
+   * @param[out]  *pResult is output value.\r
+   * @return none.\r
+   */\r
+\r
+  void arm_rms_q15(\r
+                   q15_t * pSrc,\r
+                  uint32_t blockSize,\r
+                  q15_t * pResult);\r
+\r
+  /**\r
+   * @brief  Standard deviation of the elements of a floating-point vector.\r
+   * @param[in]  *pSrc is input pointer\r
+   * @param[in]  blockSize is the number of samples to process\r
+   * @param[out]  *pResult is output value.\r
+   * @return none.\r
+   */\r
+\r
+  void arm_std_f32(\r
+                   float32_t * pSrc,\r
+                  uint32_t blockSize,\r
+                  float32_t * pResult);\r
+\r
+  /**\r
+   * @brief  Standard deviation of the elements of a Q31 vector.\r
+   * @param[in]  *pSrc is input pointer\r
+   * @param[in]  blockSize is the number of samples to process\r
+   * @param[out]  *pResult is output value.\r
+   * @return none.\r
+   */\r
+\r
+  void arm_std_q31(\r
+                   q31_t * pSrc,\r
+                  uint32_t blockSize,\r
+                  q31_t * pResult);\r
+\r
+  /**\r
+   * @brief  Standard deviation of the elements of a Q15 vector.\r
+   * @param[in]  *pSrc is input pointer\r
+   * @param[in]  blockSize is the number of samples to process\r
+   * @param[out]  *pResult is output value.\r
+   * @return none.\r
+   */\r
+\r
+  void arm_std_q15(\r
+                   q15_t * pSrc,\r
+                  uint32_t blockSize,\r
+                  q15_t * pResult);\r
+\r
+  /**\r
+   * @brief  Floating-point complex magnitude\r
+   * @param[in]  *pSrc points to the complex input vector\r
+   * @param[out]  *pDst points to the real output vector\r
+   * @param[in]  numSamples number of complex samples in the input vector\r
+   * @return none.\r
+   */\r
+\r
+  void arm_cmplx_mag_f32(\r
+                         float32_t * pSrc,\r
+                        float32_t * pDst,\r
+                        uint32_t numSamples);\r
+\r
+  /**\r
+   * @brief  Q31 complex magnitude\r
+   * @param[in]  *pSrc points to the complex input vector\r
+   * @param[out]  *pDst points to the real output vector\r
+   * @param[in]  numSamples number of complex samples in the input vector\r
+   * @return none.\r
+   */\r
+\r
+  void arm_cmplx_mag_q31(\r
+                         q31_t * pSrc,\r
+                        q31_t * pDst,\r
+                        uint32_t numSamples);\r
+\r
+  /**\r
+   * @brief  Q15 complex magnitude\r
+   * @param[in]  *pSrc points to the complex input vector\r
+   * @param[out]  *pDst points to the real output vector\r
+   * @param[in]  numSamples number of complex samples in the input vector\r
+   * @return none.\r
+   */\r
+\r
+  void arm_cmplx_mag_q15(\r
+                         q15_t * pSrc,\r
+                        q15_t * pDst,\r
+                        uint32_t numSamples);\r
+\r
+  /**\r
+   * @brief  Q15 complex dot product\r
+   * @param[in]  *pSrcA points to the first input vector\r
+   * @param[in]  *pSrcB points to the second input vector\r
+   * @param[in]  numSamples number of complex samples in each vector\r
+   * @param[out]  *realResult real part of the result returned here\r
+   * @param[out]  *imagResult imaginary part of the result returned here\r
+   * @return none.\r
+   */\r
+\r
+  void arm_cmplx_dot_prod_q15(\r
+                              q15_t * pSrcA,\r
+                              q15_t * pSrcB,\r
+                             uint32_t numSamples,\r
+                             q31_t * realResult,\r
+                             q31_t * imagResult);\r
+\r
+  /**\r
+   * @brief  Q31 complex dot product\r
+   * @param[in]  *pSrcA points to the first input vector\r
+   * @param[in]  *pSrcB points to the second input vector\r
+   * @param[in]  numSamples number of complex samples in each vector\r
+   * @param[out]  *realResult real part of the result returned here\r
+   * @param[out]  *imagResult imaginary part of the result returned here\r
+   * @return none.\r
+   */\r
+\r
+  void arm_cmplx_dot_prod_q31(\r
+                              q31_t * pSrcA,\r
+                              q31_t * pSrcB,\r
+                             uint32_t numSamples,\r
+                             q63_t * realResult,\r
+                             q63_t * imagResult);\r
+\r
+  /**\r
+   * @brief  Floating-point complex dot product\r
+   * @param[in]  *pSrcA points to the first input vector\r
+   * @param[in]  *pSrcB points to the second input vector\r
+   * @param[in]  numSamples number of complex samples in each vector\r
+   * @param[out]  *realResult real part of the result returned here\r
+   * @param[out]  *imagResult imaginary part of the result returned here\r
+   * @return none.\r
+   */\r
+\r
+  void arm_cmplx_dot_prod_f32(\r
+                              float32_t * pSrcA,\r
+                              float32_t * pSrcB,\r
+                             uint32_t numSamples,\r
+                             float32_t * realResult,\r
+                             float32_t * imagResult);\r
+\r
+  /**\r
+   * @brief  Q15 complex-by-real multiplication\r
+   * @param[in]  *pSrcCmplx points to the complex input vector\r
+   * @param[in]  *pSrcReal points to the real input vector\r
+   * @param[out]  *pCmplxDst points to the complex output vector\r
+   * @param[in]  numSamples number of samples in each vector\r
+   * @return none.\r
+   */\r
+\r
+  void arm_cmplx_mult_real_q15(\r
+                               q15_t * pSrcCmplx,\r
+                               q15_t * pSrcReal,\r
+                              q15_t * pCmplxDst,\r
+                              uint32_t numSamples);\r
+\r
+  /**\r
+   * @brief  Q31 complex-by-real multiplication\r
+   * @param[in]  *pSrcCmplx points to the complex input vector\r
+   * @param[in]  *pSrcReal points to the real input vector\r
+   * @param[out]  *pCmplxDst points to the complex output vector\r
+   * @param[in]  numSamples number of samples in each vector\r
+   * @return none.\r
+   */\r
+\r
+  void arm_cmplx_mult_real_q31(\r
+                               q31_t * pSrcCmplx,\r
+                               q31_t * pSrcReal,\r
+                              q31_t * pCmplxDst,\r
+                              uint32_t numSamples);\r
+\r
+  /**\r
+   * @brief  Floating-point complex-by-real multiplication\r
+   * @param[in]  *pSrcCmplx points to the complex input vector\r
+   * @param[in]  *pSrcReal points to the real input vector\r
+   * @param[out]  *pCmplxDst points to the complex output vector\r
+   * @param[in]  numSamples number of samples in each vector\r
+   * @return none.\r
+   */\r
+\r
+  void arm_cmplx_mult_real_f32(\r
+                               float32_t * pSrcCmplx,\r
+                               float32_t * pSrcReal,\r
+                              float32_t * pCmplxDst,\r
+                              uint32_t numSamples);\r
+\r
+  /**\r
+   * @brief  Minimum value of a Q7 vector.\r
+   * @param[in]  *pSrc is input pointer\r
+   * @param[in]  blockSize is the number of samples to process\r
+   * @param[out]  *result is output pointer\r
+   * @param[in]  index is the array index of the minimum value in the input buffer.\r
+   * @return none.\r
+   */\r
+\r
+  void arm_min_q7(\r
+                  q7_t * pSrc,\r
+                 uint32_t blockSize,\r
+                 q7_t * result,\r
+                 uint32_t * index);\r
+\r
+  /**\r
+   * @brief  Minimum value of a Q15 vector.\r
+   * @param[in]  *pSrc is input pointer\r
+   * @param[in]  blockSize is the number of samples to process\r
+   * @param[out]  *pResult is output pointer\r
+   * @param[in]  *pIndex is the array index of the minimum value in the input buffer.\r
+   * @return none.\r
+   */\r
+\r
+  void arm_min_q15(\r
+                   q15_t * pSrc,\r
+                  uint32_t blockSize,\r
+                  q15_t * pResult,\r
+                  uint32_t * pIndex);\r
+\r
+  /**\r
+   * @brief  Minimum value of a Q31 vector.\r
+   * @param[in]  *pSrc is input pointer\r
+   * @param[in]  blockSize is the number of samples to process\r
+   * @param[out]  *pResult is output pointer\r
+   * @param[out]  *pIndex is the array index of the minimum value in the input buffer.\r
+   * @return none.\r
+   */\r
+  void arm_min_q31(\r
+                   q31_t * pSrc,\r
+                  uint32_t blockSize,\r
+                  q31_t * pResult,\r
+                  uint32_t * pIndex);\r
+\r
+  /**\r
+   * @brief  Minimum value of a floating-point vector.\r
+   * @param[in]  *pSrc is input pointer\r
+   * @param[in]  blockSize is the number of samples to process\r
+   * @param[out]  *pResult is output pointer\r
+   * @param[out]  *pIndex is the array index of the minimum value in the input buffer.\r
+   * @return none.\r
+   */\r
+\r
+  void arm_min_f32(\r
+                   float32_t * pSrc,\r
+                  uint32_t blockSize,\r
+                  float32_t * pResult,\r
+                  uint32_t * pIndex);\r
+\r
+/**\r
+ * @brief Maximum value of a Q7 vector.\r
+ * @param[in]       *pSrc points to the input buffer\r
+ * @param[in]       blockSize length of the input vector\r
+ * @param[out]      *pResult maximum value returned here\r
+ * @param[out]      *pIndex index of maximum value returned here\r
+ * @return none.\r
+ */\r
+\r
+  void arm_max_q7(\r
+                  q7_t * pSrc,\r
+                 uint32_t blockSize,\r
+                 q7_t * pResult,\r
+                 uint32_t * pIndex);\r
+\r
+/**\r
+ * @brief Maximum value of a Q15 vector.\r
+ * @param[in]       *pSrc points to the input buffer\r
+ * @param[in]       blockSize length of the input vector\r
+ * @param[out]      *pResult maximum value returned here\r
+ * @param[out]      *pIndex index of maximum value returned here\r
+ * @return none.\r
+ */\r
+\r
+  void arm_max_q15(\r
+                   q15_t * pSrc,\r
+                  uint32_t blockSize,\r
+                  q15_t * pResult,\r
+                  uint32_t * pIndex);\r
+\r
+/**\r
+ * @brief Maximum value of a Q31 vector.\r
+ * @param[in]       *pSrc points to the input buffer\r
+ * @param[in]       blockSize length of the input vector\r
+ * @param[out]      *pResult maximum value returned here\r
+ * @param[out]      *pIndex index of maximum value returned here\r
+ * @return none.\r
+ */\r
+\r
+  void arm_max_q31(\r
+                   q31_t * pSrc,\r
+                  uint32_t blockSize,\r
+                  q31_t * pResult,\r
+                  uint32_t * pIndex);\r
+\r
+/**\r
+ * @brief Maximum value of a floating-point vector.\r
+ * @param[in]       *pSrc points to the input buffer\r
+ * @param[in]       blockSize length of the input vector\r
+ * @param[out]      *pResult maximum value returned here\r
+ * @param[out]      *pIndex index of maximum value returned here\r
+ * @return none.\r
+ */\r
+\r
+  void arm_max_f32(\r
+                   float32_t * pSrc,\r
+                  uint32_t blockSize,\r
+                  float32_t * pResult,\r
+                  uint32_t * pIndex);\r
+\r
+  /**\r
+   * @brief  Q15 complex-by-complex multiplication\r
+   * @param[in]  *pSrcA points to the first input vector\r
+   * @param[in]  *pSrcB points to the second input vector\r
+   * @param[out]  *pDst  points to the output vector\r
+   * @param[in]  numSamples number of complex samples in each vector\r
+   * @return none.\r
+   */\r
+\r
+  void arm_cmplx_mult_cmplx_q15(\r
+                               q15_t * pSrcA,\r
+                               q15_t * pSrcB,\r
+                              q15_t * pDst,\r
+                              uint32_t numSamples);\r
+\r
+  /**\r
+   * @brief  Q31 complex-by-complex multiplication\r
+   * @param[in]  *pSrcA points to the first input vector\r
+   * @param[in]  *pSrcB points to the second input vector\r
+   * @param[out]  *pDst  points to the output vector\r
+   * @param[in]  numSamples number of complex samples in each vector\r
+   * @return none.\r
+   */\r
+\r
+  void arm_cmplx_mult_cmplx_q31(\r
+                               q31_t * pSrcA,\r
+                               q31_t * pSrcB,\r
+                              q31_t * pDst,\r
+                              uint32_t numSamples);\r
+\r
+  /**\r
+   * @brief  Floating-point complex-by-complex multiplication\r
+   * @param[in]  *pSrcA points to the first input vector\r
+   * @param[in]  *pSrcB points to the second input vector\r
+   * @param[out]  *pDst  points to the output vector\r
+   * @param[in]  numSamples number of complex samples in each vector\r
+   * @return none.\r
+   */\r
+\r
+  void arm_cmplx_mult_cmplx_f32(\r
+                               float32_t * pSrcA,\r
+                               float32_t * pSrcB,\r
+                              float32_t * pDst,\r
+                              uint32_t numSamples);\r
+\r
+  /**\r
+   * @brief Converts the elements of the floating-point vector to Q31 vector.\r
+   * @param[in]       *pSrc points to the floating-point input vector\r
+   * @param[out]      *pDst points to the Q31 output vector\r
+   * @param[in]       blockSize length of the input vector\r
+   * @return none.\r
+   */\r
+  void arm_float_to_q31(\r
+                              float32_t * pSrc,\r
+                             q31_t * pDst,\r
+                             uint32_t blockSize);\r
+\r
+  /**\r
+   * @brief Converts the elements of the floating-point vector to Q15 vector.\r
+   * @param[in]       *pSrc points to the floating-point input vector\r
+   * @param[out]      *pDst points to the Q15 output vector\r
+   * @param[in]       blockSize length of the input vector\r
+   * @return          none\r
+   */\r
+  void arm_float_to_q15(\r
+                              float32_t * pSrc,\r
+                             q15_t * pDst,\r
+                             uint32_t blockSize);\r
+\r
+  /**\r
+   * @brief Converts the elements of the floating-point vector to Q7 vector.\r
+   * @param[in]       *pSrc points to the floating-point input vector\r
+   * @param[out]      *pDst points to the Q7 output vector\r
+   * @param[in]       blockSize length of the input vector\r
+   * @return          none\r
+   */\r
+  void arm_float_to_q7(\r
+                             float32_t * pSrc,\r
+                            q7_t * pDst,\r
+                            uint32_t blockSize);\r
+\r
+\r
+  /**\r
+   * @brief  Converts the elements of the Q31 vector to Q15 vector.\r
+   * @param[in]  *pSrc is input pointer\r
+   * @param[out]  *pDst is output pointer\r
+   * @param[in]  blockSize is the number of samples to process\r
+   * @return none.\r
+   */\r
+  void arm_q31_to_q15(\r
+                      q31_t * pSrc,\r
+                     q15_t * pDst,\r
+                     uint32_t blockSize);\r
+\r
+  /**\r
+   * @brief  Converts the elements of the Q31 vector to Q7 vector.\r
+   * @param[in]  *pSrc is input pointer\r
+   * @param[out]  *pDst is output pointer\r
+   * @param[in]  blockSize is the number of samples to process\r
+   * @return none.\r
+   */\r
+  void arm_q31_to_q7(\r
+                     q31_t * pSrc,\r
+                    q7_t * pDst,\r
+                    uint32_t blockSize);\r
+\r
+  /**\r
+   * @brief  Converts the elements of the Q15 vector to floating-point vector.\r
+   * @param[in]  *pSrc is input pointer\r
+   * @param[out]  *pDst is output pointer\r
+   * @param[in]  blockSize is the number of samples to process\r
+   * @return none.\r
+   */\r
+  void arm_q15_to_float(\r
+                        q15_t * pSrc,\r
+                       float32_t * pDst,\r
+                       uint32_t blockSize);\r
+\r
+\r
+  /**\r
+   * @brief  Converts the elements of the Q15 vector to Q31 vector.\r
+   * @param[in]  *pSrc is input pointer\r
+   * @param[out]  *pDst is output pointer\r
+   * @param[in]  blockSize is the number of samples to process\r
+   * @return none.\r
+   */\r
+  void arm_q15_to_q31(\r
+                      q15_t * pSrc,\r
+                     q31_t * pDst,\r
+                     uint32_t blockSize);\r
+\r
+\r
+  /**\r
+   * @brief  Converts the elements of the Q15 vector to Q7 vector.\r
+   * @param[in]  *pSrc is input pointer\r
+   * @param[out]  *pDst is output pointer\r
+   * @param[in]  blockSize is the number of samples to process\r
+   * @return none.\r
+   */\r
+  void arm_q15_to_q7(\r
+                     q15_t * pSrc,\r
+                    q7_t * pDst,\r
+                    uint32_t blockSize);\r
+\r
+\r
+  /**\r
+   * @ingroup groupInterpolation\r
+   */\r
+\r
+  /**\r
+   * @defgroup BilinearInterpolate Bilinear Interpolation\r
+   *\r
+   * Bilinear interpolation is an extension of linear interpolation applied to a two dimensional grid.\r
+   * The underlying function <code>f(x, y)</code> is sampled on a regular grid and the interpolation process\r
+   * determines values between the grid points.\r
+   * Bilinear interpolation is equivalent to two step linear interpolation, first in the x-dimension and then in the y-dimension.\r
+   * Bilinear interpolation is often used in image processing to rescale images.\r
+   * The CMSIS DSP library provides bilinear interpolation functions for Q7, Q15, Q31, and floating-point data types.\r
+   *\r
+   * <b>Algorithm</b>\r
+   * \par\r
+   * The instance structure used by the bilinear interpolation functions describes a two dimensional data table.\r
+   * For floating-point, the instance structure is defined as:\r
+   * <pre>\r
+   *   typedef struct\r
+   *   {\r
+   *     uint16_t numRows;\r
+   *     uint16_t numCols;\r
+   *     float32_t *pData;\r
+   * } arm_bilinear_interp_instance_f32;\r
+   * </pre>\r
+   *\r
+   * \par\r
+   * where <code>numRows</code> specifies the number of rows in the table;\r
+   * <code>numCols</code> specifies the number of columns in the table;\r
+   * and <code>pData</code> points to an array of size <code>numRows*numCols</code> values.\r
+   * The data table <code>pTable</code> is organized in row order and the supplied data values fall on integer indexes.\r
+   * That is, table element (x,y) is located at <code>pTable[x + y*numCols]</code> where x and y are integers.\r
+   *\r
+   * \par\r
+   * Let <code>(x, y)</code> specify the desired interpolation point.  Then define:\r
+   * <pre>\r
+   *     XF = floor(x)\r
+   *     YF = floor(y)\r
+   * </pre>\r
+   * \par\r
+   * The interpolated output point is computed as:\r
+   * <pre>\r
+   *  f(x, y) = f(XF, YF) * (1-(x-XF)) * (1-(y-YF))\r
+   *           + f(XF+1, YF) * (x-XF)*(1-(y-YF))\r
+   *           + f(XF, YF+1) * (1-(x-XF))*(y-YF)\r
+   *           + f(XF+1, YF+1) * (x-XF)*(y-YF)\r
+   * </pre>\r
+   * Note that the coordinates (x, y) contain integer and fractional components.\r
+   * The integer components specify which portion of the table to use while the\r
+   * fractional components control the interpolation processor.\r
+   *\r
+   * \par\r
+   * if (x,y) are outside of the table boundary, Bilinear interpolation returns zero output.\r
+   */\r
+\r
+  /**\r
+   * @addtogroup BilinearInterpolate\r
+   * @{\r
+   */\r
+\r
+  /**\r
+  *\r
+  * @brief  Floating-point bilinear interpolation.\r
+  * @param[in,out] *S points to an instance of the interpolation structure.\r
+  * @param[in] X interpolation coordinate.\r
+  * @param[in] Y interpolation coordinate.\r
+  * @return out interpolated value.\r
+  */\r
+\r
+\r
+  __STATIC_INLINE float32_t arm_bilinear_interp_f32(\r
+                                                   const arm_bilinear_interp_instance_f32 * S,\r
+                                                   float32_t X,\r
+                                                   float32_t Y)\r
+  {\r
+    float32_t out;\r
+    float32_t f00, f01, f10, f11;\r
+    float32_t *pData = S->pData;\r
+    int32_t xIndex, yIndex, index;\r
+    float32_t xdiff, ydiff;\r
+    float32_t b1, b2, b3, b4;\r
+\r
+    xIndex = (int32_t) X;\r
+    yIndex = (int32_t) Y;\r
+\r
+       /* Care taken for table outside boundary */\r
+       /* Returns zero output when values are outside table boundary */\r
+       if(xIndex < 0 || xIndex > (S->numRows-1) || yIndex < 0  || yIndex > ( S->numCols-1))\r
+       {\r
+               return(0);\r
+       }\r
+\r
+    /* Calculation of index for two nearest points in X-direction */\r
+    index = (xIndex - 1) + (yIndex-1) *  S->numCols ;\r
+\r
+\r
+    /* Read two nearest points in X-direction */\r
+    f00 = pData[index];\r
+    f01 = pData[index + 1];\r
+\r
+    /* Calculation of index for two nearest points in Y-direction */\r
+    index = (xIndex-1) + (yIndex) * S->numCols;\r
+\r
+\r
+    /* Read two nearest points in Y-direction */\r
+    f10 = pData[index];\r
+    f11 = pData[index + 1];\r
+\r
+    /* Calculation of intermediate values */\r
+    b1 = f00;\r
+    b2 = f01 - f00;\r
+    b3 = f10 - f00;\r
+    b4 = f00 - f01 - f10 + f11;\r
+\r
+    /* Calculation of fractional part in X */\r
+    xdiff = X - xIndex;\r
+\r
+    /* Calculation of fractional part in Y */\r
+    ydiff = Y - yIndex;\r
+\r
+    /* Calculation of bi-linear interpolated output */\r
+     out = b1 + b2 * xdiff + b3 * ydiff + b4 * xdiff * ydiff;\r
+\r
+   /* return to application */\r
+    return (out);\r
+\r
+  }\r
+\r
+  /**\r
+  *\r
+  * @brief  Q31 bilinear interpolation.\r
+  * @param[in,out] *S points to an instance of the interpolation structure.\r
+  * @param[in] X interpolation coordinate in 12.20 format.\r
+  * @param[in] Y interpolation coordinate in 12.20 format.\r
+  * @return out interpolated value.\r
+  */\r
+\r
+  __STATIC_INLINE q31_t arm_bilinear_interp_q31(\r
+                                               arm_bilinear_interp_instance_q31 * S,\r
+                                               q31_t X,\r
+                                               q31_t Y)\r
+  {\r
+    q31_t out;                                   /* Temporary output */\r
+    q31_t acc = 0;                               /* output */\r
+    q31_t xfract, yfract;                        /* X, Y fractional parts */\r
+    q31_t x1, x2, y1, y2;                        /* Nearest output values */\r
+    int32_t rI, cI;                             /* Row and column indices */\r
+    q31_t *pYData = S->pData;                    /* pointer to output table values */\r
+    uint32_t nCols = S->numCols;                 /* num of rows */\r
+\r
+\r
+    /* Input is in 12.20 format */\r
+    /* 12 bits for the table index */\r
+    /* Index value calculation */\r
+    rI = ((X & 0xFFF00000) >> 20u);\r
+\r
+    /* Input is in 12.20 format */\r
+    /* 12 bits for the table index */\r
+    /* Index value calculation */\r
+    cI = ((Y & 0xFFF00000) >> 20u);\r
+\r
+       /* Care taken for table outside boundary */\r
+       /* Returns zero output when values are outside table boundary */\r
+       if(rI < 0 || rI > (S->numRows-1) || cI < 0  || cI > ( S->numCols-1))\r
+       {\r
+               return(0);\r
+       }\r
+\r
+    /* 20 bits for the fractional part */\r
+    /* shift left xfract by 11 to keep 1.31 format */\r
+    xfract = (X & 0x000FFFFF) << 11u;\r
+\r
+    /* Read two nearest output values from the index */\r
+    x1 = pYData[(rI) + nCols * (cI)];\r
+    x2 = pYData[(rI) + nCols * (cI) + 1u];\r
+\r
+    /* 20 bits for the fractional part */\r
+    /* shift left yfract by 11 to keep 1.31 format */\r
+    yfract = (Y & 0x000FFFFF) << 11u;\r
+\r
+    /* Read two nearest output values from the index */\r
+    y1 = pYData[(rI) + nCols * (cI + 1)];\r
+    y2 = pYData[(rI) + nCols * (cI + 1) + 1u];\r
+\r
+    /* Calculation of x1 * (1-xfract ) * (1-yfract) and acc is in 3.29(q29) format */\r
+    out = ((q31_t) (((q63_t) x1 * (0x7FFFFFFF - xfract)) >> 32));\r
+    acc = ((q31_t) (((q63_t) out * (0x7FFFFFFF - yfract)) >> 32));\r
+\r
+    /* x2 * (xfract) * (1-yfract)  in 3.29(q29) and adding to acc */\r
+    out = ((q31_t) ((q63_t) x2 * (0x7FFFFFFF - yfract) >> 32));\r
+    acc += ((q31_t) ((q63_t) out * (xfract) >> 32));\r
+\r
+    /* y1 * (1 - xfract) * (yfract)  in 3.29(q29) and adding to acc */\r
+    out = ((q31_t) ((q63_t) y1 * (0x7FFFFFFF - xfract) >> 32));\r
+    acc += ((q31_t) ((q63_t) out * (yfract) >> 32));\r
+\r
+    /* y2 * (xfract) * (yfract)  in 3.29(q29) and adding to acc */\r
+    out = ((q31_t) ((q63_t) y2 * (xfract) >> 32));\r
+    acc += ((q31_t) ((q63_t) out * (yfract) >> 32));\r
+\r
+    /* Convert acc to 1.31(q31) format */\r
+    return (acc << 2u);\r
+\r
+  }\r
+\r
+  /**\r
+  * @brief  Q15 bilinear interpolation.\r
+  * @param[in,out] *S points to an instance of the interpolation structure.\r
+  * @param[in] X interpolation coordinate in 12.20 format.\r
+  * @param[in] Y interpolation coordinate in 12.20 format.\r
+  * @return out interpolated value.\r
+  */\r
+\r
+  __STATIC_INLINE q15_t arm_bilinear_interp_q15(\r
+                                               arm_bilinear_interp_instance_q15 * S,\r
+                                               q31_t X,\r
+                                               q31_t Y)\r
+  {\r
+    q63_t acc = 0;                               /* output */\r
+    q31_t out;                                   /* Temporary output */\r
+    q15_t x1, x2, y1, y2;                        /* Nearest output values */\r
+    q31_t xfract, yfract;                        /* X, Y fractional parts */\r
+    int32_t rI, cI;                             /* Row and column indices */\r
+    q15_t *pYData = S->pData;                    /* pointer to output table values */\r
+    uint32_t nCols = S->numCols;                 /* num of rows */\r
+\r
+    /* Input is in 12.20 format */\r
+    /* 12 bits for the table index */\r
+    /* Index value calculation */\r
+    rI = ((X & 0xFFF00000) >> 20);\r
+\r
+    /* Input is in 12.20 format */\r
+    /* 12 bits for the table index */\r
+    /* Index value calculation */\r
+    cI = ((Y & 0xFFF00000) >> 20);\r
+\r
+       /* Care taken for table outside boundary */\r
+       /* Returns zero output when values are outside table boundary */\r
+       if(rI < 0 || rI > (S->numRows-1) || cI < 0  || cI > ( S->numCols-1))\r
+       {\r
+               return(0);\r
+       }\r
+\r
+    /* 20 bits for the fractional part */\r
+    /* xfract should be in 12.20 format */\r
+    xfract = (X & 0x000FFFFF);\r
+\r
+    /* Read two nearest output values from the index */\r
+    x1 = pYData[(rI) + nCols * (cI)];\r
+    x2 = pYData[(rI) + nCols * (cI) + 1u];\r
+\r
+\r
+    /* 20 bits for the fractional part */\r
+    /* yfract should be in 12.20 format */\r
+    yfract = (Y & 0x000FFFFF);\r
+\r
+    /* Read two nearest output values from the index */\r
+    y1 = pYData[(rI) + nCols * (cI + 1)];\r
+    y2 = pYData[(rI) + nCols * (cI + 1) + 1u];\r
+\r
+    /* Calculation of x1 * (1-xfract ) * (1-yfract) and acc is in 13.51 format */\r
+\r
+    /* x1 is in 1.15(q15), xfract in 12.20 format and out is in 13.35 format */\r
+    /* convert 13.35 to 13.31 by right shifting  and out is in 1.31 */\r
+    out = (q31_t) (((q63_t) x1 * (0xFFFFF - xfract)) >> 4u);\r
+    acc = ((q63_t) out * (0xFFFFF - yfract));\r
+\r
+    /* x2 * (xfract) * (1-yfract)  in 1.51 and adding to acc */\r
+    out = (q31_t) (((q63_t) x2 * (0xFFFFF - yfract)) >> 4u);\r
+    acc += ((q63_t) out * (xfract));\r
+\r
+    /* y1 * (1 - xfract) * (yfract)  in 1.51 and adding to acc */\r
+    out = (q31_t) (((q63_t) y1 * (0xFFFFF - xfract)) >> 4u);\r
+    acc += ((q63_t) out * (yfract));\r
+\r
+    /* y2 * (xfract) * (yfract)  in 1.51 and adding to acc */\r
+    out = (q31_t) (((q63_t) y2 * (xfract)) >> 4u);\r
+    acc += ((q63_t) out * (yfract));\r
+\r
+    /* acc is in 13.51 format and down shift acc by 36 times */\r
+    /* Convert out to 1.15 format */\r
+    return (acc >> 36);\r
+\r
+  }\r
+\r
+  /**\r
+  * @brief  Q7 bilinear interpolation.\r
+  * @param[in,out] *S points to an instance of the interpolation structure.\r
+  * @param[in] X interpolation coordinate in 12.20 format.\r
+  * @param[in] Y interpolation coordinate in 12.20 format.\r
+  * @return out interpolated value.\r
+  */\r
+\r
+  __STATIC_INLINE q7_t arm_bilinear_interp_q7(\r
+                                             arm_bilinear_interp_instance_q7 * S,\r
+                                             q31_t X,\r
+                                             q31_t Y)\r
+  {\r
+    q63_t acc = 0;                               /* output */\r
+    q31_t out;                                   /* Temporary output */\r
+    q31_t xfract, yfract;                        /* X, Y fractional parts */\r
+    q7_t x1, x2, y1, y2;                         /* Nearest output values */\r
+    int32_t rI, cI;                             /* Row and column indices */\r
+    q7_t *pYData = S->pData;                     /* pointer to output table values */\r
+    uint32_t nCols = S->numCols;                 /* num of rows */\r
+\r
+    /* Input is in 12.20 format */\r
+    /* 12 bits for the table index */\r
+    /* Index value calculation */\r
+    rI = ((X & 0xFFF00000) >> 20);\r
+\r
+    /* Input is in 12.20 format */\r
+    /* 12 bits for the table index */\r
+    /* Index value calculation */\r
+    cI = ((Y & 0xFFF00000) >> 20);\r
+\r
+       /* Care taken for table outside boundary */\r
+       /* Returns zero output when values are outside table boundary */\r
+       if(rI < 0 || rI > (S->numRows-1) || cI < 0  || cI > ( S->numCols-1))\r
+       {\r
+               return(0);\r
+       }\r
+\r
+    /* 20 bits for the fractional part */\r
+    /* xfract should be in 12.20 format */\r
+    xfract = (X & 0x000FFFFF);\r
+\r
+    /* Read two nearest output values from the index */\r
+    x1 = pYData[(rI) + nCols * (cI)];\r
+    x2 = pYData[(rI) + nCols * (cI) + 1u];\r
+\r
+\r
+    /* 20 bits for the fractional part */\r
+    /* yfract should be in 12.20 format */\r
+    yfract = (Y & 0x000FFFFF);\r
+\r
+    /* Read two nearest output values from the index */\r
+    y1 = pYData[(rI) + nCols * (cI + 1)];\r
+    y2 = pYData[(rI) + nCols * (cI + 1) + 1u];\r
+\r
+    /* Calculation of x1 * (1-xfract ) * (1-yfract) and acc is in 16.47 format */\r
+    out = ((x1 * (0xFFFFF - xfract)));\r
+    acc = (((q63_t) out * (0xFFFFF - yfract)));\r
+\r
+    /* x2 * (xfract) * (1-yfract)  in 2.22 and adding to acc */\r
+    out = ((x2 * (0xFFFFF - yfract)));\r
+    acc += (((q63_t) out * (xfract)));\r
+\r
+    /* y1 * (1 - xfract) * (yfract)  in 2.22 and adding to acc */\r
+    out = ((y1 * (0xFFFFF - xfract)));\r
+    acc += (((q63_t) out * (yfract)));\r
+\r
+    /* y2 * (xfract) * (yfract)  in 2.22 and adding to acc */\r
+    out = ((y2 * (yfract)));\r
+    acc += (((q63_t) out * (xfract)));\r
+\r
+    /* acc in 16.47 format and down shift by 40 to convert to 1.7 format */\r
+    return (acc >> 40);\r
+\r
+  }\r
+\r
+  /**\r
+   * @} end of BilinearInterpolate group\r
+   */\r
+\r
+\r
+\r
+\r
+\r
+\r
+#ifdef __cplusplus\r
+}\r
+#endif\r
+\r
+\r
+#endif /* _ARM_MATH_H */\r
+\r
+\r
+/**\r
+ *\r
+ * End of file.\r
+ */\r
diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/asf/thirdparty/CMSIS/Include/core_cm4.h b/FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/asf/thirdparty/CMSIS/Include/core_cm4.h
new file mode 100644 (file)
index 0000000..ef818e4
--- /dev/null
@@ -0,0 +1,1689 @@
+/**************************************************************************//**\r
+ * @file     core_cm4.h\r
+ * @brief    CMSIS Cortex-M4 Core Peripheral Access Layer Header File\r
+ * @version  V3.00\r
+ * @date     03. February 2012\r
+ *\r
+ * @note\r
+ * Copyright (C) 2009-2012 ARM Limited. All rights reserved.\r
+ *\r
+ * @par\r
+ * ARM Limited (ARM) is supplying this software for use with Cortex-M\r
+ * processor based microcontrollers.  This file can be freely distributed\r
+ * within development tools that are supporting such ARM based processors.\r
+ *\r
+ * @par\r
+ * THIS SOFTWARE IS PROVIDED "AS IS".  NO WARRANTIES, WHETHER EXPRESS, IMPLIED\r
+ * OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF\r
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE.\r
+ * ARM SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR\r
+ * CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER.\r
+ *\r
+ ******************************************************************************/\r
+#if defined ( __ICCARM__ )\r
+ #pragma system_include  /* treat file as system include file for MISRA check */\r
+#endif\r
+\r
+#ifdef __cplusplus\r
+ extern "C" {\r
+#endif\r
+\r
+#ifndef __CORE_CM4_H_GENERIC\r
+#define __CORE_CM4_H_GENERIC\r
+\r
+/** \page CMSIS_MISRA_Exceptions  MISRA-C:2004 Compliance Exceptions\r
+  CMSIS violates the following MISRA-C:2004 rules:\r
+  \r
+   \li Required Rule 8.5, object/function definition in header file.<br>\r
+     Function definitions in header files are used to allow 'inlining'. \r
+\r
+   \li Required Rule 18.4, declaration of union type or object of union type: '{...}'.<br>\r
+     Unions are used for effective representation of core registers.\r
+   \r
+   \li Advisory Rule 19.7, Function-like macro defined.<br>\r
+     Function-like macros are used to allow more efficient code. \r
+ */\r
+\r
+\r
+/*******************************************************************************\r
+ *                 CMSIS definitions\r
+ ******************************************************************************/\r
+/** \ingroup Cortex_M4\r
+  @{\r
+ */\r
+\r
+/*  CMSIS CM4 definitions */\r
+#define __CM4_CMSIS_VERSION_MAIN  (0x03)                                   /*!< [31:16] CMSIS HAL main version   */\r
+#define __CM4_CMSIS_VERSION_SUB   (0x00)                                   /*!< [15:0]  CMSIS HAL sub version    */\r
+#define __CM4_CMSIS_VERSION       ((__CM4_CMSIS_VERSION_MAIN << 16) | \\r
+                                    __CM4_CMSIS_VERSION_SUB          )     /*!< CMSIS HAL version number         */\r
+\r
+#define __CORTEX_M                (0x04)                                   /*!< Cortex-M Core                    */\r
+\r
+\r
+#if   defined ( __CC_ARM )\r
+  #define __ASM            __asm                                      /*!< asm keyword for ARM Compiler          */\r
+  #define __INLINE         __inline                                   /*!< inline keyword for ARM Compiler       */\r
+  #define __STATIC_INLINE  static __inline\r
+\r
+#elif defined ( __ICCARM__ )\r
+  #define __ASM            __asm                                      /*!< asm keyword for IAR Compiler          */\r
+  #define __INLINE         inline                                     /*!< inline keyword for IAR Compiler. Only available in High optimization mode! */\r
+  #define __STATIC_INLINE  static inline\r
+\r
+#elif defined ( __TMS470__ )\r
+  #define __ASM            __asm                                      /*!< asm keyword for TI CCS Compiler       */\r
+  #define __STATIC_INLINE  static inline\r
+\r
+#elif defined ( __GNUC__ )\r
+  #define __ASM            __asm                                      /*!< asm keyword for GNU Compiler          */\r
+  #define __INLINE         inline                                     /*!< inline keyword for GNU Compiler       */\r
+  #define __STATIC_INLINE  static inline\r
+\r
+#elif defined ( __TASKING__ )\r
+  #define __ASM            __asm                                      /*!< asm keyword for TASKING Compiler      */\r
+  #define __INLINE         inline                                     /*!< inline keyword for TASKING Compiler   */\r
+  #define __STATIC_INLINE  static inline\r
+\r
+#endif\r
+\r
+/** __FPU_USED indicates whether an FPU is used or not. For this, __FPU_PRESENT has to be checked prior to making use of FPU specific registers and functions.\r
+*/\r
+#if defined ( __CC_ARM )\r
+  #if defined __TARGET_FPU_VFP\r
+    #if (__FPU_PRESENT == 1)\r
+      #define __FPU_USED       1\r
+    #else\r
+      #warning "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)"\r
+      #define __FPU_USED       0\r
+    #endif\r
+  #else\r
+    #define __FPU_USED         0\r
+  #endif\r
+\r
+#elif defined ( __ICCARM__ )\r
+  #if defined __ARMVFP__\r
+    #if (__FPU_PRESENT == 1)\r
+      #define __FPU_USED       1\r
+    #else\r
+      #warning "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)"\r
+      #define __FPU_USED       0\r
+    #endif\r
+  #else\r
+    #define __FPU_USED         0\r
+  #endif\r
+\r
+#elif defined ( __TMS470__ )\r
+  #if defined __TI_VFP_SUPPORT__\r
+    #if (__FPU_PRESENT == 1)\r
+      #define __FPU_USED       1\r
+    #else\r
+      #warning "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)"\r
+      #define __FPU_USED       0\r
+    #endif\r
+  #else\r
+    #define __FPU_USED         0\r
+  #endif\r
+\r
+#elif defined ( __GNUC__ )\r
+  #if defined (__VFP_FP__) && !defined(__SOFTFP__)\r
+    #if (__FPU_PRESENT == 1)\r
+      #define __FPU_USED       1\r
+    #else\r
+      #warning "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)"\r
+      #define __FPU_USED       0\r
+    #endif\r
+  #else\r
+    #define __FPU_USED         0\r
+  #endif\r
+\r
+#elif defined ( __TASKING__ )\r
+    /* add preprocessor checks to define __FPU_USED */\r
+    #define __FPU_USED         0\r
+#endif\r
+\r
+#include <stdint.h>                      /* standard types definitions                      */\r
+#include <core_cmInstr.h>                /* Core Instruction Access                         */\r
+#include <core_cmFunc.h>                 /* Core Function Access                            */\r
+#include <core_cm4_simd.h>               /* Compiler specific SIMD Intrinsics               */\r
+\r
+#endif /* __CORE_CM4_H_GENERIC */\r
+\r
+#ifndef __CMSIS_GENERIC\r
+\r
+#ifndef __CORE_CM4_H_DEPENDANT\r
+#define __CORE_CM4_H_DEPENDANT\r
+\r
+/* check device defines and use defaults */\r
+#if defined __CHECK_DEVICE_DEFINES\r
+  #ifndef __CM4_REV\r
+    #define __CM4_REV               0x0000\r
+    #warning "__CM4_REV not defined in device header file; using default!"\r
+  #endif\r
+\r
+  #ifndef __FPU_PRESENT\r
+    #define __FPU_PRESENT             0\r
+    #warning "__FPU_PRESENT not defined in device header file; using default!"\r
+  #endif\r
+\r
+  #ifndef __MPU_PRESENT\r
+    #define __MPU_PRESENT             0\r
+    #warning "__MPU_PRESENT not defined in device header file; using default!"\r
+  #endif\r
+\r
+  #ifndef __NVIC_PRIO_BITS\r
+    #define __NVIC_PRIO_BITS          4\r
+    #warning "__NVIC_PRIO_BITS not defined in device header file; using default!"\r
+  #endif\r
+\r
+  #ifndef __Vendor_SysTickConfig\r
+    #define __Vendor_SysTickConfig    0\r
+    #warning "__Vendor_SysTickConfig not defined in device header file; using default!"\r
+  #endif\r
+#endif\r
+\r
+/* IO definitions (access restrictions to peripheral registers) */\r
+/**\r
+    \defgroup CMSIS_glob_defs CMSIS Global Defines\r
\r
+    <strong>IO Type Qualifiers</strong> are used\r
+    \li to specify the access to peripheral variables.\r
+    \li for automatic generation of peripheral register debug information.\r
+*/\r
+#ifdef __cplusplus\r
+  #define   __I     volatile             /*!< Defines 'read only' permissions                 */\r
+#else\r
+  #define   __I     volatile const       /*!< Defines 'read only' permissions                 */\r
+#endif\r
+#define     __O     volatile             /*!< Defines 'write only' permissions                */\r
+#define     __IO    volatile             /*!< Defines 'read / write' permissions              */\r
+\r
+/*@} end of group Cortex_M4 */\r
+\r
+\r
+\r
+/*******************************************************************************\r
+ *                 Register Abstraction\r
+  Core Register contain:\r
+  - Core Register\r
+  - Core NVIC Register\r
+  - Core SCB Register\r
+  - Core SysTick Register\r
+  - Core Debug Register\r
+  - Core MPU Register\r
+  - Core FPU Register\r
+ ******************************************************************************/\r
+/** \defgroup CMSIS_core_register Defines and Type Definitions\r
+    \brief Type definitions and defines for Cortex-M processor based devices.\r
+*/\r
+\r
+/** \ingroup    CMSIS_core_register\r
+    \defgroup   CMSIS_CORE  Status and Control Registers\r
+    \brief  Core Register type definitions.\r
+  @{\r
+ */\r
+\r
+/** \brief  Union type to access the Application Program Status Register (APSR).\r
+ */\r
+typedef union\r
+{\r
+  struct\r
+  {\r
+#if (__CORTEX_M != 0x04)\r
+    uint32_t _reserved0:27;              /*!< bit:  0..26  Reserved                           */\r
+#else\r
+    uint32_t _reserved0:16;              /*!< bit:  0..15  Reserved                           */\r
+    uint32_t GE:4;                       /*!< bit: 16..19  Greater than or Equal flags        */\r
+    uint32_t _reserved1:7;               /*!< bit: 20..26  Reserved                           */\r
+#endif\r
+    uint32_t Q:1;                        /*!< bit:     27  Saturation condition flag          */\r
+    uint32_t V:1;                        /*!< bit:     28  Overflow condition code flag       */\r
+    uint32_t C:1;                        /*!< bit:     29  Carry condition code flag          */\r
+    uint32_t Z:1;                        /*!< bit:     30  Zero condition code flag           */\r
+    uint32_t N:1;                        /*!< bit:     31  Negative condition code flag       */\r
+  } b;                                   /*!< Structure used for bit  access                  */\r
+  uint32_t w;                            /*!< Type      used for word access                  */\r
+} APSR_Type;\r
+\r
+\r
+/** \brief  Union type to access the Interrupt Program Status Register (IPSR).\r
+ */\r
+typedef union\r
+{\r
+  struct\r
+  {\r
+    uint32_t ISR:9;                      /*!< bit:  0.. 8  Exception number                   */\r
+    uint32_t _reserved0:23;              /*!< bit:  9..31  Reserved                           */\r
+  } b;                                   /*!< Structure used for bit  access                  */\r
+  uint32_t w;                            /*!< Type      used for word access                  */\r
+} IPSR_Type;\r
+\r
+\r
+/** \brief  Union type to access the Special-Purpose Program Status Registers (xPSR).\r
+ */\r
+typedef union\r
+{\r
+  struct\r
+  {\r
+    uint32_t ISR:9;                      /*!< bit:  0.. 8  Exception number                   */\r
+#if (__CORTEX_M != 0x04)\r
+    uint32_t _reserved0:15;              /*!< bit:  9..23  Reserved                           */\r
+#else\r
+    uint32_t _reserved0:7;               /*!< bit:  9..15  Reserved                           */\r
+    uint32_t GE:4;                       /*!< bit: 16..19  Greater than or Equal flags        */\r
+    uint32_t _reserved1:4;               /*!< bit: 20..23  Reserved                           */\r
+#endif\r
+    uint32_t T:1;                        /*!< bit:     24  Thumb bit        (read 0)          */\r
+    uint32_t IT:2;                       /*!< bit: 25..26  saved IT state   (read 0)          */\r
+    uint32_t Q:1;                        /*!< bit:     27  Saturation condition flag          */\r
+    uint32_t V:1;                        /*!< bit:     28  Overflow condition code flag       */\r
+    uint32_t C:1;                        /*!< bit:     29  Carry condition code flag          */\r
+    uint32_t Z:1;                        /*!< bit:     30  Zero condition code flag           */\r
+    uint32_t N:1;                        /*!< bit:     31  Negative condition code flag       */\r
+  } b;                                   /*!< Structure used for bit  access                  */\r
+  uint32_t w;                            /*!< Type      used for word access                  */\r
+} xPSR_Type;\r
+\r
+\r
+/** \brief  Union type to access the Control Registers (CONTROL).\r
+ */\r
+typedef union\r
+{\r
+  struct\r
+  {\r
+    uint32_t nPRIV:1;                    /*!< bit:      0  Execution privilege in Thread mode */\r
+    uint32_t SPSEL:1;                    /*!< bit:      1  Stack to be used                   */\r
+    uint32_t FPCA:1;                     /*!< bit:      2  FP extension active flag           */\r
+    uint32_t _reserved0:29;              /*!< bit:  3..31  Reserved                           */\r
+  } b;                                   /*!< Structure used for bit  access                  */\r
+  uint32_t w;                            /*!< Type      used for word access                  */\r
+} CONTROL_Type;\r
+\r
+/*@} end of group CMSIS_CORE */\r
+\r
+\r
+/** \ingroup    CMSIS_core_register\r
+    \defgroup   CMSIS_NVIC  Nested Vectored Interrupt Controller (NVIC)\r
+    \brief      Type definitions for the NVIC Registers\r
+  @{\r
+ */\r
+\r
+/** \brief  Structure type to access the Nested Vectored Interrupt Controller (NVIC).\r
+ */\r
+typedef struct\r
+{\r
+  __IO uint32_t ISER[8];                 /*!< Offset: 0x000 (R/W)  Interrupt Set Enable Register           */\r
+       uint32_t RESERVED0[24];\r
+  __IO uint32_t ICER[8];                 /*!< Offset: 0x080 (R/W)  Interrupt Clear Enable Register         */\r
+       uint32_t RSERVED1[24];\r
+  __IO uint32_t ISPR[8];                 /*!< Offset: 0x100 (R/W)  Interrupt Set Pending Register          */\r
+       uint32_t RESERVED2[24];\r
+  __IO uint32_t ICPR[8];                 /*!< Offset: 0x180 (R/W)  Interrupt Clear Pending Register        */\r
+       uint32_t RESERVED3[24];\r
+  __IO uint32_t IABR[8];                 /*!< Offset: 0x200 (R/W)  Interrupt Active bit Register           */\r
+       uint32_t RESERVED4[56];\r
+  __IO uint8_t  IP[240];                 /*!< Offset: 0x300 (R/W)  Interrupt Priority Register (8Bit wide) */\r
+       uint32_t RESERVED5[644];\r
+  __O  uint32_t STIR;                    /*!< Offset: 0xE00 ( /W)  Software Trigger Interrupt Register     */\r
+}  NVIC_Type;\r
+\r
+/* Software Triggered Interrupt Register Definitions */\r
+#define NVIC_STIR_INTID_Pos                 0                                          /*!< STIR: INTLINESNUM Position */\r
+#define NVIC_STIR_INTID_Msk                (0x1FFUL << NVIC_STIR_INTID_Pos)            /*!< STIR: INTLINESNUM Mask */\r
+\r
+/*@} end of group CMSIS_NVIC */\r
+\r
+\r
+/** \ingroup  CMSIS_core_register\r
+    \defgroup CMSIS_SCB     System Control Block (SCB)\r
+    \brief      Type definitions for the System Control Block Registers\r
+  @{\r
+ */\r
+\r
+/** \brief  Structure type to access the System Control Block (SCB).\r
+ */\r
+typedef struct\r
+{\r
+  __I  uint32_t CPUID;                   /*!< Offset: 0x000 (R/ )  CPUID Base Register                                   */\r
+  __IO uint32_t ICSR;                    /*!< Offset: 0x004 (R/W)  Interrupt Control and State Register                  */\r
+  __IO uint32_t VTOR;                    /*!< Offset: 0x008 (R/W)  Vector Table Offset Register                          */\r
+  __IO uint32_t AIRCR;                   /*!< Offset: 0x00C (R/W)  Application Interrupt and Reset Control Register      */\r
+  __IO uint32_t SCR;                     /*!< Offset: 0x010 (R/W)  System Control Register                               */\r
+  __IO uint32_t CCR;                     /*!< Offset: 0x014 (R/W)  Configuration Control Register                        */\r
+  __IO uint8_t  SHP[12];                 /*!< Offset: 0x018 (R/W)  System Handlers Priority Registers (4-7, 8-11, 12-15) */\r
+  __IO uint32_t SHCSR;                   /*!< Offset: 0x024 (R/W)  System Handler Control and State Register             */\r
+  __IO uint32_t CFSR;                    /*!< Offset: 0x028 (R/W)  Configurable Fault Status Register                    */\r
+  __IO uint32_t HFSR;                    /*!< Offset: 0x02C (R/W)  HardFault Status Register                             */\r
+  __IO uint32_t DFSR;                    /*!< Offset: 0x030 (R/W)  Debug Fault Status Register                           */\r
+  __IO uint32_t MMFAR;                   /*!< Offset: 0x034 (R/W)  MemManage Fault Address Register                      */\r
+  __IO uint32_t BFAR;                    /*!< Offset: 0x038 (R/W)  BusFault Address Register                             */\r
+  __IO uint32_t AFSR;                    /*!< Offset: 0x03C (R/W)  Auxiliary Fault Status Register                       */\r
+  __I  uint32_t PFR[2];                  /*!< Offset: 0x040 (R/ )  Processor Feature Register                            */\r
+  __I  uint32_t DFR;                     /*!< Offset: 0x048 (R/ )  Debug Feature Register                                */\r
+  __I  uint32_t ADR;                     /*!< Offset: 0x04C (R/ )  Auxiliary Feature Register                            */\r
+  __I  uint32_t MMFR[4];                 /*!< Offset: 0x050 (R/ )  Memory Model Feature Register                         */\r
+  __I  uint32_t ISAR[5];                 /*!< Offset: 0x060 (R/ )  Instruction Set Attributes Register                   */\r
+       uint32_t RESERVED0[5];\r
+  __IO uint32_t CPACR;                   /*!< Offset: 0x088 (R/W)  Coprocessor Access Control Register                   */\r
+} SCB_Type;\r
+\r
+/* SCB CPUID Register Definitions */\r
+#define SCB_CPUID_IMPLEMENTER_Pos          24                                             /*!< SCB CPUID: IMPLEMENTER Position */\r
+#define SCB_CPUID_IMPLEMENTER_Msk          (0xFFUL << SCB_CPUID_IMPLEMENTER_Pos)          /*!< SCB CPUID: IMPLEMENTER Mask */\r
+\r
+#define SCB_CPUID_VARIANT_Pos              20                                             /*!< SCB CPUID: VARIANT Position */\r
+#define SCB_CPUID_VARIANT_Msk              (0xFUL << SCB_CPUID_VARIANT_Pos)               /*!< SCB CPUID: VARIANT Mask */\r
+\r
+#define SCB_CPUID_ARCHITECTURE_Pos         16                                             /*!< SCB CPUID: ARCHITECTURE Position */\r
+#define SCB_CPUID_ARCHITECTURE_Msk         (0xFUL << SCB_CPUID_ARCHITECTURE_Pos)          /*!< SCB CPUID: ARCHITECTURE Mask */\r
+\r
+#define SCB_CPUID_PARTNO_Pos                4                                             /*!< SCB CPUID: PARTNO Position */\r
+#define SCB_CPUID_PARTNO_Msk               (0xFFFUL << SCB_CPUID_PARTNO_Pos)              /*!< SCB CPUID: PARTNO Mask */\r
+\r
+#define SCB_CPUID_REVISION_Pos              0                                             /*!< SCB CPUID: REVISION Position */\r
+#define SCB_CPUID_REVISION_Msk             (0xFUL << SCB_CPUID_REVISION_Pos)              /*!< SCB CPUID: REVISION Mask */\r
+\r
+/* SCB Interrupt Control State Register Definitions */\r
+#define SCB_ICSR_NMIPENDSET_Pos            31                                             /*!< SCB ICSR: NMIPENDSET Position */\r
+#define SCB_ICSR_NMIPENDSET_Msk            (1UL << SCB_ICSR_NMIPENDSET_Pos)               /*!< SCB ICSR: NMIPENDSET Mask */\r
+\r
+#define SCB_ICSR_PENDSVSET_Pos             28                                             /*!< SCB ICSR: PENDSVSET Position */\r
+#define SCB_ICSR_PENDSVSET_Msk             (1UL << SCB_ICSR_PENDSVSET_Pos)                /*!< SCB ICSR: PENDSVSET Mask */\r
+\r
+#define SCB_ICSR_PENDSVCLR_Pos             27                                             /*!< SCB ICSR: PENDSVCLR Position */\r
+#define SCB_ICSR_PENDSVCLR_Msk             (1UL << SCB_ICSR_PENDSVCLR_Pos)                /*!< SCB ICSR: PENDSVCLR Mask */\r
+\r
+#define SCB_ICSR_PENDSTSET_Pos             26                                             /*!< SCB ICSR: PENDSTSET Position */\r
+#define SCB_ICSR_PENDSTSET_Msk             (1UL << SCB_ICSR_PENDSTSET_Pos)                /*!< SCB ICSR: PENDSTSET Mask */\r
+\r
+#define SCB_ICSR_PENDSTCLR_Pos             25                                             /*!< SCB ICSR: PENDSTCLR Position */\r
+#define SCB_ICSR_PENDSTCLR_Msk             (1UL << SCB_ICSR_PENDSTCLR_Pos)                /*!< SCB ICSR: PENDSTCLR Mask */\r
+\r
+#define SCB_ICSR_ISRPREEMPT_Pos            23                                             /*!< SCB ICSR: ISRPREEMPT Position */\r
+#define SCB_ICSR_ISRPREEMPT_Msk            (1UL << SCB_ICSR_ISRPREEMPT_Pos)               /*!< SCB ICSR: ISRPREEMPT Mask */\r
+\r
+#define SCB_ICSR_ISRPENDING_Pos            22                                             /*!< SCB ICSR: ISRPENDING Position */\r
+#define SCB_ICSR_ISRPENDING_Msk            (1UL << SCB_ICSR_ISRPENDING_Pos)               /*!< SCB ICSR: ISRPENDING Mask */\r
+\r
+#define SCB_ICSR_VECTPENDING_Pos           12                                             /*!< SCB ICSR: VECTPENDING Position */\r
+#define SCB_ICSR_VECTPENDING_Msk           (0x1FFUL << SCB_ICSR_VECTPENDING_Pos)          /*!< SCB ICSR: VECTPENDING Mask */\r
+\r
+#define SCB_ICSR_RETTOBASE_Pos             11                                             /*!< SCB ICSR: RETTOBASE Position */\r
+#define SCB_ICSR_RETTOBASE_Msk             (1UL << SCB_ICSR_RETTOBASE_Pos)                /*!< SCB ICSR: RETTOBASE Mask */\r
+\r
+#define SCB_ICSR_VECTACTIVE_Pos             0                                             /*!< SCB ICSR: VECTACTIVE Position */\r
+#define SCB_ICSR_VECTACTIVE_Msk            (0x1FFUL << SCB_ICSR_VECTACTIVE_Pos)           /*!< SCB ICSR: VECTACTIVE Mask */\r
+\r
+/* SCB Vector Table Offset Register Definitions */\r
+#define SCB_VTOR_TBLOFF_Pos                 7                                             /*!< SCB VTOR: TBLOFF Position */\r
+#define SCB_VTOR_TBLOFF_Msk                (0x1FFFFFFUL << SCB_VTOR_TBLOFF_Pos)           /*!< SCB VTOR: TBLOFF Mask */\r
+\r
+/* SCB Application Interrupt and Reset Control Register Definitions */\r
+#define SCB_AIRCR_VECTKEY_Pos              16                                             /*!< SCB AIRCR: VECTKEY Position */\r
+#define SCB_AIRCR_VECTKEY_Msk              (0xFFFFUL << SCB_AIRCR_VECTKEY_Pos)            /*!< SCB AIRCR: VECTKEY Mask */\r
+\r
+#define SCB_AIRCR_VECTKEYSTAT_Pos          16                                             /*!< SCB AIRCR: VECTKEYSTAT Position */\r
+#define SCB_AIRCR_VECTKEYSTAT_Msk          (0xFFFFUL << SCB_AIRCR_VECTKEYSTAT_Pos)        /*!< SCB AIRCR: VECTKEYSTAT Mask */\r
+\r
+#define SCB_AIRCR_ENDIANESS_Pos            15                                             /*!< SCB AIRCR: ENDIANESS Position */\r
+#define SCB_AIRCR_ENDIANESS_Msk            (1UL << SCB_AIRCR_ENDIANESS_Pos)               /*!< SCB AIRCR: ENDIANESS Mask */\r
+\r
+#define SCB_AIRCR_PRIGROUP_Pos              8                                             /*!< SCB AIRCR: PRIGROUP Position */\r
+#define SCB_AIRCR_PRIGROUP_Msk             (7UL << SCB_AIRCR_PRIGROUP_Pos)                /*!< SCB AIRCR: PRIGROUP Mask */\r
+\r
+#define SCB_AIRCR_SYSRESETREQ_Pos           2                                             /*!< SCB AIRCR: SYSRESETREQ Position */\r
+#define SCB_AIRCR_SYSRESETREQ_Msk          (1UL << SCB_AIRCR_SYSRESETREQ_Pos)             /*!< SCB AIRCR: SYSRESETREQ Mask */\r
+\r
+#define SCB_AIRCR_VECTCLRACTIVE_Pos         1                                             /*!< SCB AIRCR: VECTCLRACTIVE Position */\r
+#define SCB_AIRCR_VECTCLRACTIVE_Msk        (1UL << SCB_AIRCR_VECTCLRACTIVE_Pos)           /*!< SCB AIRCR: VECTCLRACTIVE Mask */\r
+\r
+#define SCB_AIRCR_VECTRESET_Pos             0                                             /*!< SCB AIRCR: VECTRESET Position */\r
+#define SCB_AIRCR_VECTRESET_Msk            (1UL << SCB_AIRCR_VECTRESET_Pos)               /*!< SCB AIRCR: VECTRESET Mask */\r
+\r
+/* SCB System Control Register Definitions */\r
+#define SCB_SCR_SEVONPEND_Pos               4                                             /*!< SCB SCR: SEVONPEND Position */\r
+#define SCB_SCR_SEVONPEND_Msk              (1UL << SCB_SCR_SEVONPEND_Pos)                 /*!< SCB SCR: SEVONPEND Mask */\r
+\r
+#define SCB_SCR_SLEEPDEEP_Pos               2                                             /*!< SCB SCR: SLEEPDEEP Position */\r
+#define SCB_SCR_SLEEPDEEP_Msk              (1UL << SCB_SCR_SLEEPDEEP_Pos)                 /*!< SCB SCR: SLEEPDEEP Mask */\r
+\r
+#define SCB_SCR_SLEEPONEXIT_Pos             1                                             /*!< SCB SCR: SLEEPONEXIT Position */\r
+#define SCB_SCR_SLEEPONEXIT_Msk            (1UL << SCB_SCR_SLEEPONEXIT_Pos)               /*!< SCB SCR: SLEEPONEXIT Mask */\r
+\r
+/* SCB Configuration Control Register Definitions */\r
+#define SCB_CCR_STKALIGN_Pos                9                                             /*!< SCB CCR: STKALIGN Position */\r
+#define SCB_CCR_STKALIGN_Msk               (1UL << SCB_CCR_STKALIGN_Pos)                  /*!< SCB CCR: STKALIGN Mask */\r
+\r
+#define SCB_CCR_BFHFNMIGN_Pos               8                                             /*!< SCB CCR: BFHFNMIGN Position */\r
+#define SCB_CCR_BFHFNMIGN_Msk              (1UL << SCB_CCR_BFHFNMIGN_Pos)                 /*!< SCB CCR: BFHFNMIGN Mask */\r
+\r
+#define SCB_CCR_DIV_0_TRP_Pos               4                                             /*!< SCB CCR: DIV_0_TRP Position */\r
+#define SCB_CCR_DIV_0_TRP_Msk              (1UL << SCB_CCR_DIV_0_TRP_Pos)                 /*!< SCB CCR: DIV_0_TRP Mask */\r
+\r
+#define SCB_CCR_UNALIGN_TRP_Pos             3                                             /*!< SCB CCR: UNALIGN_TRP Position */\r
+#define SCB_CCR_UNALIGN_TRP_Msk            (1UL << SCB_CCR_UNALIGN_TRP_Pos)               /*!< SCB CCR: UNALIGN_TRP Mask */\r
+\r
+#define SCB_CCR_USERSETMPEND_Pos            1                                             /*!< SCB CCR: USERSETMPEND Position */\r
+#define SCB_CCR_USERSETMPEND_Msk           (1UL << SCB_CCR_USERSETMPEND_Pos)              /*!< SCB CCR: USERSETMPEND Mask */\r
+\r
+#define SCB_CCR_NONBASETHRDENA_Pos          0                                             /*!< SCB CCR: NONBASETHRDENA Position */\r
+#define SCB_CCR_NONBASETHRDENA_Msk         (1UL << SCB_CCR_NONBASETHRDENA_Pos)            /*!< SCB CCR: NONBASETHRDENA Mask */\r
+\r
+/* SCB System Handler Control and State Register Definitions */\r
+#define SCB_SHCSR_USGFAULTENA_Pos          18                                             /*!< SCB SHCSR: USGFAULTENA Position */\r
+#define SCB_SHCSR_USGFAULTENA_Msk          (1UL << SCB_SHCSR_USGFAULTENA_Pos)             /*!< SCB SHCSR: USGFAULTENA Mask */\r
+\r
+#define SCB_SHCSR_BUSFAULTENA_Pos          17                                             /*!< SCB SHCSR: BUSFAULTENA Position */\r
+#define SCB_SHCSR_BUSFAULTENA_Msk          (1UL << SCB_SHCSR_BUSFAULTENA_Pos)             /*!< SCB SHCSR: BUSFAULTENA Mask */\r
+\r
+#define SCB_SHCSR_MEMFAULTENA_Pos          16                                             /*!< SCB SHCSR: MEMFAULTENA Position */\r
+#define SCB_SHCSR_MEMFAULTENA_Msk          (1UL << SCB_SHCSR_MEMFAULTENA_Pos)             /*!< SCB SHCSR: MEMFAULTENA Mask */\r
+\r
+#define SCB_SHCSR_SVCALLPENDED_Pos         15                                             /*!< SCB SHCSR: SVCALLPENDED Position */\r
+#define SCB_SHCSR_SVCALLPENDED_Msk         (1UL << SCB_SHCSR_SVCALLPENDED_Pos)            /*!< SCB SHCSR: SVCALLPENDED Mask */\r
+\r
+#define SCB_SHCSR_BUSFAULTPENDED_Pos       14                                             /*!< SCB SHCSR: BUSFAULTPENDED Position */\r
+#define SCB_SHCSR_BUSFAULTPENDED_Msk       (1UL << SCB_SHCSR_BUSFAULTPENDED_Pos)          /*!< SCB SHCSR: BUSFAULTPENDED Mask */\r
+\r
+#define SCB_SHCSR_MEMFAULTPENDED_Pos       13                                             /*!< SCB SHCSR: MEMFAULTPENDED Position */\r
+#define SCB_SHCSR_MEMFAULTPENDED_Msk       (1UL << SCB_SHCSR_MEMFAULTPENDED_Pos)          /*!< SCB SHCSR: MEMFAULTPENDED Mask */\r
+\r
+#define SCB_SHCSR_USGFAULTPENDED_Pos       12                                             /*!< SCB SHCSR: USGFAULTPENDED Position */\r
+#define SCB_SHCSR_USGFAULTPENDED_Msk       (1UL << SCB_SHCSR_USGFAULTPENDED_Pos)          /*!< SCB SHCSR: USGFAULTPENDED Mask */\r
+\r
+#define SCB_SHCSR_SYSTICKACT_Pos           11                                             /*!< SCB SHCSR: SYSTICKACT Position */\r
+#define SCB_SHCSR_SYSTICKACT_Msk           (1UL << SCB_SHCSR_SYSTICKACT_Pos)              /*!< SCB SHCSR: SYSTICKACT Mask */\r
+\r
+#define SCB_SHCSR_PENDSVACT_Pos            10                                             /*!< SCB SHCSR: PENDSVACT Position */\r
+#define SCB_SHCSR_PENDSVACT_Msk            (1UL << SCB_SHCSR_PENDSVACT_Pos)               /*!< SCB SHCSR: PENDSVACT Mask */\r
+\r
+#define SCB_SHCSR_MONITORACT_Pos            8                                             /*!< SCB SHCSR: MONITORACT Position */\r
+#define SCB_SHCSR_MONITORACT_Msk           (1UL << SCB_SHCSR_MONITORACT_Pos)              /*!< SCB SHCSR: MONITORACT Mask */\r
+\r
+#define SCB_SHCSR_SVCALLACT_Pos             7                                             /*!< SCB SHCSR: SVCALLACT Position */\r
+#define SCB_SHCSR_SVCALLACT_Msk            (1UL << SCB_SHCSR_SVCALLACT_Pos)               /*!< SCB SHCSR: SVCALLACT Mask */\r
+\r
+#define SCB_SHCSR_USGFAULTACT_Pos           3                                             /*!< SCB SHCSR: USGFAULTACT Position */\r
+#define SCB_SHCSR_USGFAULTACT_Msk          (1UL << SCB_SHCSR_USGFAULTACT_Pos)             /*!< SCB SHCSR: USGFAULTACT Mask */\r
+\r
+#define SCB_SHCSR_BUSFAULTACT_Pos           1                                             /*!< SCB SHCSR: BUSFAULTACT Position */\r
+#define SCB_SHCSR_BUSFAULTACT_Msk          (1UL << SCB_SHCSR_BUSFAULTACT_Pos)             /*!< SCB SHCSR: BUSFAULTACT Mask */\r
+\r
+#define SCB_SHCSR_MEMFAULTACT_Pos           0                                             /*!< SCB SHCSR: MEMFAULTACT Position */\r
+#define SCB_SHCSR_MEMFAULTACT_Msk          (1UL << SCB_SHCSR_MEMFAULTACT_Pos)             /*!< SCB SHCSR: MEMFAULTACT Mask */\r
+\r
+/* SCB Configurable Fault Status Registers Definitions */\r
+#define SCB_CFSR_USGFAULTSR_Pos            16                                             /*!< SCB CFSR: Usage Fault Status Register Position */\r
+#define SCB_CFSR_USGFAULTSR_Msk            (0xFFFFUL << SCB_CFSR_USGFAULTSR_Pos)          /*!< SCB CFSR: Usage Fault Status Register Mask */\r
+\r
+#define SCB_CFSR_BUSFAULTSR_Pos             8                                             /*!< SCB CFSR: Bus Fault Status Register Position */\r
+#define SCB_CFSR_BUSFAULTSR_Msk            (0xFFUL << SCB_CFSR_BUSFAULTSR_Pos)            /*!< SCB CFSR: Bus Fault Status Register Mask */\r
+\r
+#define SCB_CFSR_MEMFAULTSR_Pos             0                                             /*!< SCB CFSR: Memory Manage Fault Status Register Position */\r
+#define SCB_CFSR_MEMFAULTSR_Msk            (0xFFUL << SCB_CFSR_MEMFAULTSR_Pos)            /*!< SCB CFSR: Memory Manage Fault Status Register Mask */\r
+\r
+/* SCB Hard Fault Status Registers Definitions */\r
+#define SCB_HFSR_DEBUGEVT_Pos              31                                             /*!< SCB HFSR: DEBUGEVT Position */\r
+#define SCB_HFSR_DEBUGEVT_Msk              (1UL << SCB_HFSR_DEBUGEVT_Pos)                 /*!< SCB HFSR: DEBUGEVT Mask */\r
+\r
+#define SCB_HFSR_FORCED_Pos                30                                             /*!< SCB HFSR: FORCED Position */\r
+#define SCB_HFSR_FORCED_Msk                (1UL << SCB_HFSR_FORCED_Pos)                   /*!< SCB HFSR: FORCED Mask */\r
+\r
+#define SCB_HFSR_VECTTBL_Pos                1                                             /*!< SCB HFSR: VECTTBL Position */\r
+#define SCB_HFSR_VECTTBL_Msk               (1UL << SCB_HFSR_VECTTBL_Pos)                  /*!< SCB HFSR: VECTTBL Mask */\r
+\r
+/* SCB Debug Fault Status Register Definitions */\r
+#define SCB_DFSR_EXTERNAL_Pos               4                                             /*!< SCB DFSR: EXTERNAL Position */\r
+#define SCB_DFSR_EXTERNAL_Msk              (1UL << SCB_DFSR_EXTERNAL_Pos)                 /*!< SCB DFSR: EXTERNAL Mask */\r
+\r
+#define SCB_DFSR_VCATCH_Pos                 3                                             /*!< SCB DFSR: VCATCH Position */\r
+#define SCB_DFSR_VCATCH_Msk                (1UL << SCB_DFSR_VCATCH_Pos)                   /*!< SCB DFSR: VCATCH Mask */\r
+\r
+#define SCB_DFSR_DWTTRAP_Pos                2                                             /*!< SCB DFSR: DWTTRAP Position */\r
+#define SCB_DFSR_DWTTRAP_Msk               (1UL << SCB_DFSR_DWTTRAP_Pos)                  /*!< SCB DFSR: DWTTRAP Mask */\r
+\r
+#define SCB_DFSR_BKPT_Pos                   1                                             /*!< SCB DFSR: BKPT Position */\r
+#define SCB_DFSR_BKPT_Msk                  (1UL << SCB_DFSR_BKPT_Pos)                     /*!< SCB DFSR: BKPT Mask */\r
+\r
+#define SCB_DFSR_HALTED_Pos                 0                                             /*!< SCB DFSR: HALTED Position */\r
+#define SCB_DFSR_HALTED_Msk                (1UL << SCB_DFSR_HALTED_Pos)                   /*!< SCB DFSR: HALTED Mask */\r
+\r
+/*@} end of group CMSIS_SCB */\r
+\r
+\r
+/** \ingroup  CMSIS_core_register\r
+    \defgroup CMSIS_SCnSCB System Controls not in SCB (SCnSCB)\r
+    \brief      Type definitions for the System Control and ID Register not in the SCB\r
+  @{\r
+ */\r
+\r
+/** \brief  Structure type to access the System Control and ID Register not in the SCB.\r
+ */\r
+typedef struct\r
+{\r
+       uint32_t RESERVED0[1];\r
+  __I  uint32_t ICTR;                    /*!< Offset: 0x004 (R/ )  Interrupt Controller Type Register      */\r
+  __IO uint32_t ACTLR;                   /*!< Offset: 0x008 (R/W)  Auxiliary Control Register              */\r
+} SCnSCB_Type;\r
+\r
+/* Interrupt Controller Type Register Definitions */\r
+#define SCnSCB_ICTR_INTLINESNUM_Pos         0                                          /*!< ICTR: INTLINESNUM Position */\r
+#define SCnSCB_ICTR_INTLINESNUM_Msk        (0xFUL << SCnSCB_ICTR_INTLINESNUM_Pos)      /*!< ICTR: INTLINESNUM Mask */\r
+\r
+/* Auxiliary Control Register Definitions */\r
+#define SCnSCB_ACTLR_DISOOFP_Pos            9                                          /*!< ACTLR: DISOOFP Position */\r
+#define SCnSCB_ACTLR_DISOOFP_Msk           (1UL << SCnSCB_ACTLR_DISOOFP_Pos)           /*!< ACTLR: DISOOFP Mask */\r
+\r
+#define SCnSCB_ACTLR_DISFPCA_Pos            8                                          /*!< ACTLR: DISFPCA Position */\r
+#define SCnSCB_ACTLR_DISFPCA_Msk           (1UL << SCnSCB_ACTLR_DISFPCA_Pos)           /*!< ACTLR: DISFPCA Mask */\r
+\r
+#define SCnSCB_ACTLR_DISFOLD_Pos            2                                          /*!< ACTLR: DISFOLD Position */\r
+#define SCnSCB_ACTLR_DISFOLD_Msk           (1UL << SCnSCB_ACTLR_DISFOLD_Pos)           /*!< ACTLR: DISFOLD Mask */\r
+\r
+#define SCnSCB_ACTLR_DISDEFWBUF_Pos         1                                          /*!< ACTLR: DISDEFWBUF Position */\r
+#define SCnSCB_ACTLR_DISDEFWBUF_Msk        (1UL << SCnSCB_ACTLR_DISDEFWBUF_Pos)        /*!< ACTLR: DISDEFWBUF Mask */\r
+\r
+#define SCnSCB_ACTLR_DISMCYCINT_Pos         0                                          /*!< ACTLR: DISMCYCINT Position */\r
+#define SCnSCB_ACTLR_DISMCYCINT_Msk        (1UL << SCnSCB_ACTLR_DISMCYCINT_Pos)        /*!< ACTLR: DISMCYCINT Mask */\r
+\r
+/*@} end of group CMSIS_SCnotSCB */\r
+\r
+\r
+/** \ingroup  CMSIS_core_register\r
+    \defgroup CMSIS_SysTick     System Tick Timer (SysTick)\r
+    \brief      Type definitions for the System Timer Registers.\r
+  @{\r
+ */\r
+\r
+/** \brief  Structure type to access the System Timer (SysTick).\r
+ */\r
+typedef struct\r
+{\r
+  __IO uint32_t CTRL;                    /*!< Offset: 0x000 (R/W)  SysTick Control and Status Register */\r
+  __IO uint32_t LOAD;                    /*!< Offset: 0x004 (R/W)  SysTick Reload Value Register       */\r
+  __IO uint32_t VAL;                     /*!< Offset: 0x008 (R/W)  SysTick Current Value Register      */\r
+  __I  uint32_t CALIB;                   /*!< Offset: 0x00C (R/ )  SysTick Calibration Register        */\r
+} SysTick_Type;\r
+\r
+/* SysTick Control / Status Register Definitions */\r
+#define SysTick_CTRL_COUNTFLAG_Pos         16                                             /*!< SysTick CTRL: COUNTFLAG Position */\r
+#define SysTick_CTRL_COUNTFLAG_Msk         (1UL << SysTick_CTRL_COUNTFLAG_Pos)            /*!< SysTick CTRL: COUNTFLAG Mask */\r
+\r
+#define SysTick_CTRL_CLKSOURCE_Pos          2                                             /*!< SysTick CTRL: CLKSOURCE Position */\r
+#define SysTick_CTRL_CLKSOURCE_Msk         (1UL << SysTick_CTRL_CLKSOURCE_Pos)            /*!< SysTick CTRL: CLKSOURCE Mask */\r
+\r
+#define SysTick_CTRL_TICKINT_Pos            1                                             /*!< SysTick CTRL: TICKINT Position */\r
+#define SysTick_CTRL_TICKINT_Msk           (1UL << SysTick_CTRL_TICKINT_Pos)              /*!< SysTick CTRL: TICKINT Mask */\r
+\r
+#define SysTick_CTRL_ENABLE_Pos             0                                             /*!< SysTick CTRL: ENABLE Position */\r
+#define SysTick_CTRL_ENABLE_Msk            (1UL << SysTick_CTRL_ENABLE_Pos)               /*!< SysTick CTRL: ENABLE Mask */\r
+\r
+/* SysTick Reload Register Definitions */\r
+#define SysTick_LOAD_RELOAD_Pos             0                                             /*!< SysTick LOAD: RELOAD Position */\r
+#define SysTick_LOAD_RELOAD_Msk            (0xFFFFFFUL << SysTick_LOAD_RELOAD_Pos)        /*!< SysTick LOAD: RELOAD Mask */\r
+\r
+/* SysTick Current Register Definitions */\r
+#define SysTick_VAL_CURRENT_Pos             0                                             /*!< SysTick VAL: CURRENT Position */\r
+#define SysTick_VAL_CURRENT_Msk            (0xFFFFFFUL << SysTick_VAL_CURRENT_Pos)        /*!< SysTick VAL: CURRENT Mask */\r
+\r
+/* SysTick Calibration Register Definitions */\r
+#define SysTick_CALIB_NOREF_Pos            31                                             /*!< SysTick CALIB: NOREF Position */\r
+#define SysTick_CALIB_NOREF_Msk            (1UL << SysTick_CALIB_NOREF_Pos)               /*!< SysTick CALIB: NOREF Mask */\r
+\r
+#define SysTick_CALIB_SKEW_Pos             30                                             /*!< SysTick CALIB: SKEW Position */\r
+#define SysTick_CALIB_SKEW_Msk             (1UL << SysTick_CALIB_SKEW_Pos)                /*!< SysTick CALIB: SKEW Mask */\r
+\r
+#define SysTick_CALIB_TENMS_Pos             0                                             /*!< SysTick CALIB: TENMS Position */\r
+#define SysTick_CALIB_TENMS_Msk            (0xFFFFFFUL << SysTick_VAL_CURRENT_Pos)        /*!< SysTick CALIB: TENMS Mask */\r
+\r
+/*@} end of group CMSIS_SysTick */\r
+\r
+\r
+/** \ingroup  CMSIS_core_register\r
+    \defgroup CMSIS_ITM     Instrumentation Trace Macrocell (ITM)\r
+    \brief      Type definitions for the Instrumentation Trace Macrocell (ITM)\r
+  @{\r
+ */\r
+\r
+/** \brief  Structure type to access the Instrumentation Trace Macrocell Register (ITM).\r
+ */\r
+typedef struct\r
+{\r
+  __O  union\r
+  {\r
+    __O  uint8_t    u8;                  /*!< Offset: 0x000 ( /W)  ITM Stimulus Port 8-bit                   */\r
+    __O  uint16_t   u16;                 /*!< Offset: 0x000 ( /W)  ITM Stimulus Port 16-bit                  */\r
+    __O  uint32_t   u32;                 /*!< Offset: 0x000 ( /W)  ITM Stimulus Port 32-bit                  */\r
+  }  PORT [32];                          /*!< Offset: 0x000 ( /W)  ITM Stimulus Port Registers               */\r
+       uint32_t RESERVED0[864];\r
+  __IO uint32_t TER;                     /*!< Offset: 0xE00 (R/W)  ITM Trace Enable Register                 */\r
+       uint32_t RESERVED1[15];\r
+  __IO uint32_t TPR;                     /*!< Offset: 0xE40 (R/W)  ITM Trace Privilege Register              */\r
+       uint32_t RESERVED2[15];\r
+  __IO uint32_t TCR;                     /*!< Offset: 0xE80 (R/W)  ITM Trace Control Register                */\r
+} ITM_Type;\r
+\r
+/* ITM Trace Privilege Register Definitions */\r
+#define ITM_TPR_PRIVMASK_Pos                0                                          /*!< ITM TPR: PRIVMASK Position */\r
+#define ITM_TPR_PRIVMASK_Msk               (0xFUL << ITM_TPR_PRIVMASK_Pos)             /*!< ITM TPR: PRIVMASK Mask */\r
+\r
+/* ITM Trace Control Register Definitions */\r
+#define ITM_TCR_BUSY_Pos                   23                                          /*!< ITM TCR: BUSY Position */\r
+#define ITM_TCR_BUSY_Msk                   (1UL << ITM_TCR_BUSY_Pos)                   /*!< ITM TCR: BUSY Mask */\r
+\r
+#define ITM_TCR_TraceBusID_Pos             16                                          /*!< ITM TCR: ATBID Position */\r
+#define ITM_TCR_TraceBusID_Msk             (0x7FUL << ITM_TCR_TraceBusID_Pos)          /*!< ITM TCR: ATBID Mask */\r
+\r
+#define ITM_TCR_GTSFREQ_Pos                10                                          /*!< ITM TCR: Global timestamp frequency Position */\r
+#define ITM_TCR_GTSFREQ_Msk                (3UL << ITM_TCR_GTSFREQ_Pos)                /*!< ITM TCR: Global timestamp frequency Mask */\r
+\r
+#define ITM_TCR_TSPrescale_Pos              8                                          /*!< ITM TCR: TSPrescale Position */\r
+#define ITM_TCR_TSPrescale_Msk             (3UL << ITM_TCR_TSPrescale_Pos)             /*!< ITM TCR: TSPrescale Mask */\r
+\r
+#define ITM_TCR_SWOENA_Pos                  4                                          /*!< ITM TCR: SWOENA Position */\r
+#define ITM_TCR_SWOENA_Msk                 (1UL << ITM_TCR_SWOENA_Pos)                 /*!< ITM TCR: SWOENA Mask */\r
+\r
+#define ITM_TCR_TXENA_Pos                   3                                          /*!< ITM TCR: TXENA Position */\r
+#define ITM_TCR_TXENA_Msk                  (1UL << ITM_TCR_TXENA_Pos)                  /*!< ITM TCR: TXENA Mask */\r
+\r
+#define ITM_TCR_SYNCENA_Pos                 2                                          /*!< ITM TCR: SYNCENA Position */\r
+#define ITM_TCR_SYNCENA_Msk                (1UL << ITM_TCR_SYNCENA_Pos)                /*!< ITM TCR: SYNCENA Mask */\r
+\r
+#define ITM_TCR_TSENA_Pos                   1                                          /*!< ITM TCR: TSENA Position */\r
+#define ITM_TCR_TSENA_Msk                  (1UL << ITM_TCR_TSENA_Pos)                  /*!< ITM TCR: TSENA Mask */\r
+\r
+#define ITM_TCR_ITMENA_Pos                  0                                          /*!< ITM TCR: ITM Enable bit Position */\r
+#define ITM_TCR_ITMENA_Msk                 (1UL << ITM_TCR_ITMENA_Pos)                 /*!< ITM TCR: ITM Enable bit Mask */\r
+\r
+/*@}*/ /* end of group CMSIS_ITM */\r
+\r
+\r
+/** \ingroup  CMSIS_core_register\r
+    \defgroup CMSIS_DWT     Data Watchpoint and Trace (DWT)\r
+    \brief      Type definitions for the Data Watchpoint and Trace (DWT)\r
+  @{\r
+ */\r
+\r
+/** \brief  Structure type to access the Data Watchpoint and Trace Register (DWT).\r
+ */\r
+typedef struct\r
+{\r
+  __IO uint32_t CTRL;                    /*!< Offset: 0x000 (R/W)  Control Register                          */\r
+  __IO uint32_t CYCCNT;                  /*!< Offset: 0x004 (R/W)  Cycle Count Register                      */\r
+  __IO uint32_t CPICNT;                  /*!< Offset: 0x008 (R/W)  CPI Count Register                        */\r
+  __IO uint32_t EXCCNT;                  /*!< Offset: 0x00C (R/W)  Exception Overhead Count Register         */\r
+  __IO uint32_t SLEEPCNT;                /*!< Offset: 0x010 (R/W)  Sleep Count Register                      */\r
+  __IO uint32_t LSUCNT;                  /*!< Offset: 0x014 (R/W)  LSU Count Register                        */\r
+  __IO uint32_t FOLDCNT;                 /*!< Offset: 0x018 (R/W)  Folded-instruction Count Register         */\r
+  __I  uint32_t PCSR;                    /*!< Offset: 0x01C (R/ )  Program Counter Sample Register           */\r
+  __IO uint32_t COMP0;                   /*!< Offset: 0x020 (R/W)  Comparator Register 0                     */\r
+  __IO uint32_t MASK0;                   /*!< Offset: 0x024 (R/W)  Mask Register 0                           */\r
+  __IO uint32_t FUNCTION0;               /*!< Offset: 0x028 (R/W)  Function Register 0                       */\r
+       uint32_t RESERVED0[1];\r
+  __IO uint32_t COMP1;                   /*!< Offset: 0x030 (R/W)  Comparator Register 1                     */\r
+  __IO uint32_t MASK1;                   /*!< Offset: 0x034 (R/W)  Mask Register 1                           */\r
+  __IO uint32_t FUNCTION1;               /*!< Offset: 0x038 (R/W)  Function Register 1                       */\r
+       uint32_t RESERVED1[1];\r
+  __IO uint32_t COMP2;                   /*!< Offset: 0x040 (R/W)  Comparator Register 2                     */\r
+  __IO uint32_t MASK2;                   /*!< Offset: 0x044 (R/W)  Mask Register 2                           */\r
+  __IO uint32_t FUNCTION2;               /*!< Offset: 0x048 (R/W)  Function Register 2                       */\r
+       uint32_t RESERVED2[1];\r
+  __IO uint32_t COMP3;                   /*!< Offset: 0x050 (R/W)  Comparator Register 3                     */\r
+  __IO uint32_t MASK3;                   /*!< Offset: 0x054 (R/W)  Mask Register 3                           */\r
+  __IO uint32_t FUNCTION3;               /*!< Offset: 0x058 (R/W)  Function Register 3                       */\r
+} DWT_Type;\r
+\r
+/* DWT Control Register Definitions */\r
+#define DWT_CTRL_NUMCOMP_Pos               28                                          /*!< DWT CTRL: NUMCOMP Position */\r
+#define DWT_CTRL_NUMCOMP_Msk               (0xFUL << DWT_CTRL_NUMCOMP_Pos)             /*!< DWT CTRL: NUMCOMP Mask */\r
+\r
+#define DWT_CTRL_NOTRCPKT_Pos              27                                          /*!< DWT CTRL: NOTRCPKT Position */\r
+#define DWT_CTRL_NOTRCPKT_Msk              (0x1UL << DWT_CTRL_NOTRCPKT_Pos)            /*!< DWT CTRL: NOTRCPKT Mask */\r
+\r
+#define DWT_CTRL_NOEXTTRIG_Pos             26                                          /*!< DWT CTRL: NOEXTTRIG Position */\r
+#define DWT_CTRL_NOEXTTRIG_Msk             (0x1UL << DWT_CTRL_NOEXTTRIG_Pos)           /*!< DWT CTRL: NOEXTTRIG Mask */\r
+\r
+#define DWT_CTRL_NOCYCCNT_Pos              25                                          /*!< DWT CTRL: NOCYCCNT Position */\r
+#define DWT_CTRL_NOCYCCNT_Msk              (0x1UL << DWT_CTRL_NOCYCCNT_Pos)            /*!< DWT CTRL: NOCYCCNT Mask */\r
+\r
+#define DWT_CTRL_NOPRFCNT_Pos              24                                          /*!< DWT CTRL: NOPRFCNT Position */\r
+#define DWT_CTRL_NOPRFCNT_Msk              (0x1UL << DWT_CTRL_NOPRFCNT_Pos)            /*!< DWT CTRL: NOPRFCNT Mask */\r
+\r
+#define DWT_CTRL_CYCEVTENA_Pos             22                                          /*!< DWT CTRL: CYCEVTENA Position */\r
+#define DWT_CTRL_CYCEVTENA_Msk             (0x1UL << DWT_CTRL_CYCEVTENA_Pos)           /*!< DWT CTRL: CYCEVTENA Mask */\r
+\r
+#define DWT_CTRL_FOLDEVTENA_Pos            21                                          /*!< DWT CTRL: FOLDEVTENA Position */\r
+#define DWT_CTRL_FOLDEVTENA_Msk            (0x1UL << DWT_CTRL_FOLDEVTENA_Pos)          /*!< DWT CTRL: FOLDEVTENA Mask */\r
+\r
+#define DWT_CTRL_LSUEVTENA_Pos             20                                          /*!< DWT CTRL: LSUEVTENA Position */\r
+#define DWT_CTRL_LSUEVTENA_Msk             (0x1UL << DWT_CTRL_LSUEVTENA_Pos)           /*!< DWT CTRL: LSUEVTENA Mask */\r
+\r
+#define DWT_CTRL_SLEEPEVTENA_Pos           19                                          /*!< DWT CTRL: SLEEPEVTENA Position */\r
+#define DWT_CTRL_SLEEPEVTENA_Msk           (0x1UL << DWT_CTRL_SLEEPEVTENA_Pos)         /*!< DWT CTRL: SLEEPEVTENA Mask */\r
+\r
+#define DWT_CTRL_EXCEVTENA_Pos             18                                          /*!< DWT CTRL: EXCEVTENA Position */\r
+#define DWT_CTRL_EXCEVTENA_Msk             (0x1UL << DWT_CTRL_EXCEVTENA_Pos)           /*!< DWT CTRL: EXCEVTENA Mask */\r
+\r
+#define DWT_CTRL_CPIEVTENA_Pos             17                                          /*!< DWT CTRL: CPIEVTENA Position */\r
+#define DWT_CTRL_CPIEVTENA_Msk             (0x1UL << DWT_CTRL_CPIEVTENA_Pos)           /*!< DWT CTRL: CPIEVTENA Mask */\r
+\r
+#define DWT_CTRL_EXCTRCENA_Pos             16                                          /*!< DWT CTRL: EXCTRCENA Position */\r
+#define DWT_CTRL_EXCTRCENA_Msk             (0x1UL << DWT_CTRL_EXCTRCENA_Pos)           /*!< DWT CTRL: EXCTRCENA Mask */\r
+\r
+#define DWT_CTRL_PCSAMPLENA_Pos            12                                          /*!< DWT CTRL: PCSAMPLENA Position */\r
+#define DWT_CTRL_PCSAMPLENA_Msk            (0x1UL << DWT_CTRL_PCSAMPLENA_Pos)          /*!< DWT CTRL: PCSAMPLENA Mask */\r
+\r
+#define DWT_CTRL_SYNCTAP_Pos               10                                          /*!< DWT CTRL: SYNCTAP Position */\r
+#define DWT_CTRL_SYNCTAP_Msk               (0x3UL << DWT_CTRL_SYNCTAP_Pos)             /*!< DWT CTRL: SYNCTAP Mask */\r
+\r
+#define DWT_CTRL_CYCTAP_Pos                 9                                          /*!< DWT CTRL: CYCTAP Position */\r
+#define DWT_CTRL_CYCTAP_Msk                (0x1UL << DWT_CTRL_CYCTAP_Pos)              /*!< DWT CTRL: CYCTAP Mask */\r
+\r
+#define DWT_CTRL_POSTINIT_Pos               5                                          /*!< DWT CTRL: POSTINIT Position */\r
+#define DWT_CTRL_POSTINIT_Msk              (0xFUL << DWT_CTRL_POSTINIT_Pos)            /*!< DWT CTRL: POSTINIT Mask */\r
+\r
+#define DWT_CTRL_POSTPRESET_Pos             1                                          /*!< DWT CTRL: POSTPRESET Position */\r
+#define DWT_CTRL_POSTPRESET_Msk            (0xFUL << DWT_CTRL_POSTPRESET_Pos)          /*!< DWT CTRL: POSTPRESET Mask */\r
+\r
+#define DWT_CTRL_CYCCNTENA_Pos              0                                          /*!< DWT CTRL: CYCCNTENA Position */\r
+#define DWT_CTRL_CYCCNTENA_Msk             (0x1UL << DWT_CTRL_CYCCNTENA_Pos)           /*!< DWT CTRL: CYCCNTENA Mask */\r
+\r
+/* DWT CPI Count Register Definitions */\r
+#define DWT_CPICNT_CPICNT_Pos               0                                          /*!< DWT CPICNT: CPICNT Position */\r
+#define DWT_CPICNT_CPICNT_Msk              (0xFFUL << DWT_CPICNT_CPICNT_Pos)           /*!< DWT CPICNT: CPICNT Mask */\r
+\r
+/* DWT Exception Overhead Count Register Definitions */\r
+#define DWT_EXCCNT_EXCCNT_Pos               0                                          /*!< DWT EXCCNT: EXCCNT Position */\r
+#define DWT_EXCCNT_EXCCNT_Msk              (0xFFUL << DWT_EXCCNT_EXCCNT_Pos)           /*!< DWT EXCCNT: EXCCNT Mask */\r
+\r
+/* DWT Sleep Count Register Definitions */\r
+#define DWT_SLEEPCNT_SLEEPCNT_Pos           0                                          /*!< DWT SLEEPCNT: SLEEPCNT Position */\r
+#define DWT_SLEEPCNT_SLEEPCNT_Msk          (0xFFUL << DWT_SLEEPCNT_SLEEPCNT_Pos)       /*!< DWT SLEEPCNT: SLEEPCNT Mask */\r
+\r
+/* DWT LSU Count Register Definitions */\r
+#define DWT_LSUCNT_LSUCNT_Pos               0                                          /*!< DWT LSUCNT: LSUCNT Position */\r
+#define DWT_LSUCNT_LSUCNT_Msk              (0xFFUL << DWT_LSUCNT_LSUCNT_Pos)           /*!< DWT LSUCNT: LSUCNT Mask */\r
+\r
+/* DWT Folded-instruction Count Register Definitions */\r
+#define DWT_FOLDCNT_FOLDCNT_Pos             0                                          /*!< DWT FOLDCNT: FOLDCNT Position */\r
+#define DWT_FOLDCNT_FOLDCNT_Msk            (0xFFUL << DWT_FOLDCNT_FOLDCNT_Pos)         /*!< DWT FOLDCNT: FOLDCNT Mask */\r
+\r
+/* DWT Comparator Mask Register Definitions */\r
+#define DWT_MASK_MASK_Pos                   0                                          /*!< DWT MASK: MASK Position */\r
+#define DWT_MASK_MASK_Msk                  (0x1FUL << DWT_MASK_MASK_Pos)               /*!< DWT MASK: MASK Mask */\r
+\r
+/* DWT Comparator Function Register Definitions */\r
+#define DWT_FUNCTION_MATCHED_Pos           24                                          /*!< DWT FUNCTION: MATCHED Position */\r
+#define DWT_FUNCTION_MATCHED_Msk           (0x1UL << DWT_FUNCTION_MATCHED_Pos)         /*!< DWT FUNCTION: MATCHED Mask */\r
+\r
+#define DWT_FUNCTION_DATAVADDR1_Pos        16                                          /*!< DWT FUNCTION: DATAVADDR1 Position */\r
+#define DWT_FUNCTION_DATAVADDR1_Msk        (0xFUL << DWT_FUNCTION_DATAVADDR1_Pos)      /*!< DWT FUNCTION: DATAVADDR1 Mask */\r
+\r
+#define DWT_FUNCTION_DATAVADDR0_Pos        12                                          /*!< DWT FUNCTION: DATAVADDR0 Position */\r
+#define DWT_FUNCTION_DATAVADDR0_Msk        (0xFUL << DWT_FUNCTION_DATAVADDR0_Pos)      /*!< DWT FUNCTION: DATAVADDR0 Mask */\r
+\r
+#define DWT_FUNCTION_DATAVSIZE_Pos         10                                          /*!< DWT FUNCTION: DATAVSIZE Position */\r
+#define DWT_FUNCTION_DATAVSIZE_Msk         (0x3UL << DWT_FUNCTION_DATAVSIZE_Pos)       /*!< DWT FUNCTION: DATAVSIZE Mask */\r
+\r
+#define DWT_FUNCTION_LNK1ENA_Pos            9                                          /*!< DWT FUNCTION: LNK1ENA Position */\r
+#define DWT_FUNCTION_LNK1ENA_Msk           (0x1UL << DWT_FUNCTION_LNK1ENA_Pos)         /*!< DWT FUNCTION: LNK1ENA Mask */\r
+\r
+#define DWT_FUNCTION_DATAVMATCH_Pos         8                                          /*!< DWT FUNCTION: DATAVMATCH Position */\r
+#define DWT_FUNCTION_DATAVMATCH_Msk        (0x1UL << DWT_FUNCTION_DATAVMATCH_Pos)      /*!< DWT FUNCTION: DATAVMATCH Mask */\r
+\r
+#define DWT_FUNCTION_CYCMATCH_Pos           7                                          /*!< DWT FUNCTION: CYCMATCH Position */\r
+#define DWT_FUNCTION_CYCMATCH_Msk          (0x1UL << DWT_FUNCTION_CYCMATCH_Pos)        /*!< DWT FUNCTION: CYCMATCH Mask */\r
+\r
+#define DWT_FUNCTION_EMITRANGE_Pos          5                                          /*!< DWT FUNCTION: EMITRANGE Position */\r
+#define DWT_FUNCTION_EMITRANGE_Msk         (0x1UL << DWT_FUNCTION_EMITRANGE_Pos)       /*!< DWT FUNCTION: EMITRANGE Mask */\r
+\r
+#define DWT_FUNCTION_FUNCTION_Pos           0                                          /*!< DWT FUNCTION: FUNCTION Position */\r
+#define DWT_FUNCTION_FUNCTION_Msk          (0xFUL << DWT_FUNCTION_FUNCTION_Pos)        /*!< DWT FUNCTION: FUNCTION Mask */\r
+\r
+/*@}*/ /* end of group CMSIS_DWT */\r
+\r
+\r
+/** \ingroup  CMSIS_core_register\r
+    \defgroup CMSIS_TPI     Trace Port Interface (TPI)\r
+    \brief      Type definitions for the Trace Port Interface (TPI)\r
+  @{\r
+ */\r
+\r
+/** \brief  Structure type to access the Trace Port Interface Register (TPI).\r
+ */\r
+typedef struct\r
+{\r
+  __IO uint32_t SSPSR;                   /*!< Offset: 0x000 (R/ )  Supported Parallel Port Size Register     */\r
+  __IO uint32_t CSPSR;                   /*!< Offset: 0x004 (R/W)  Current Parallel Port Size Register */\r
+       uint32_t RESERVED0[2];\r
+  __IO uint32_t ACPR;                    /*!< Offset: 0x010 (R/W)  Asynchronous Clock Prescaler Register */\r
+       uint32_t RESERVED1[55];\r
+  __IO uint32_t SPPR;                    /*!< Offset: 0x0F0 (R/W)  Selected Pin Protocol Register */\r
+       uint32_t RESERVED2[131];\r
+  __I  uint32_t FFSR;                    /*!< Offset: 0x300 (R/ )  Formatter and Flush Status Register */\r
+  __IO uint32_t FFCR;                    /*!< Offset: 0x304 (R/W)  Formatter and Flush Control Register */\r
+  __I  uint32_t FSCR;                    /*!< Offset: 0x308 (R/ )  Formatter Synchronization Counter Register */\r
+       uint32_t RESERVED3[759];\r
+  __I  uint32_t TRIGGER;                 /*!< Offset: 0xEE8 (R/ )  TRIGGER */\r
+  __I  uint32_t FIFO0;                   /*!< Offset: 0xEEC (R/ )  Integration ETM Data */\r
+  __I  uint32_t ITATBCTR2;               /*!< Offset: 0xEF0 (R/ )  ITATBCTR2 */\r
+       uint32_t RESERVED4[1];\r
+  __I  uint32_t ITATBCTR0;               /*!< Offset: 0xEF8 (R/ )  ITATBCTR0 */\r
+  __I  uint32_t FIFO1;                   /*!< Offset: 0xEFC (R/ )  Integration ITM Data */\r
+  __IO uint32_t ITCTRL;                  /*!< Offset: 0xF00 (R/W)  Integration Mode Control */\r
+       uint32_t RESERVED5[39];\r
+  __IO uint32_t CLAIMSET;                /*!< Offset: 0xFA0 (R/W)  Claim tag set */\r
+  __IO uint32_t CLAIMCLR;                /*!< Offset: 0xFA4 (R/W)  Claim tag clear */\r
+       uint32_t RESERVED7[8];\r
+  __I  uint32_t DEVID;                   /*!< Offset: 0xFC8 (R/ )  TPIU_DEVID */\r
+  __I  uint32_t DEVTYPE;                 /*!< Offset: 0xFCC (R/ )  TPIU_DEVTYPE */\r
+} TPI_Type;\r
+\r
+/* TPI Asynchronous Clock Prescaler Register Definitions */\r
+#define TPI_ACPR_PRESCALER_Pos              0                                          /*!< TPI ACPR: PRESCALER Position */\r
+#define TPI_ACPR_PRESCALER_Msk             (0x1FFFUL << TPI_ACPR_PRESCALER_Pos)        /*!< TPI ACPR: PRESCALER Mask */\r
+\r
+/* TPI Selected Pin Protocol Register Definitions */\r
+#define TPI_SPPR_TXMODE_Pos                 0                                          /*!< TPI SPPR: TXMODE Position */\r
+#define TPI_SPPR_TXMODE_Msk                (0x3UL << TPI_SPPR_TXMODE_Pos)              /*!< TPI SPPR: TXMODE Mask */\r
+\r
+/* TPI Formatter and Flush Status Register Definitions */\r
+#define TPI_FFSR_FtNonStop_Pos              3                                          /*!< TPI FFSR: FtNonStop Position */\r
+#define TPI_FFSR_FtNonStop_Msk             (0x1UL << TPI_FFSR_FtNonStop_Pos)           /*!< TPI FFSR: FtNonStop Mask */\r
+\r
+#define TPI_FFSR_TCPresent_Pos              2                                          /*!< TPI FFSR: TCPresent Position */\r
+#define TPI_FFSR_TCPresent_Msk             (0x1UL << TPI_FFSR_TCPresent_Pos)           /*!< TPI FFSR: TCPresent Mask */\r
+\r
+#define TPI_FFSR_FtStopped_Pos              1                                          /*!< TPI FFSR: FtStopped Position */\r
+#define TPI_FFSR_FtStopped_Msk             (0x1UL << TPI_FFSR_FtStopped_Pos)           /*!< TPI FFSR: FtStopped Mask */\r
+\r
+#define TPI_FFSR_FlInProg_Pos               0                                          /*!< TPI FFSR: FlInProg Position */\r
+#define TPI_FFSR_FlInProg_Msk              (0x1UL << TPI_FFSR_FlInProg_Pos)            /*!< TPI FFSR: FlInProg Mask */\r
+\r
+/* TPI Formatter and Flush Control Register Definitions */\r
+#define TPI_FFCR_TrigIn_Pos                 8                                          /*!< TPI FFCR: TrigIn Position */\r
+#define TPI_FFCR_TrigIn_Msk                (0x1UL << TPI_FFCR_TrigIn_Pos)              /*!< TPI FFCR: TrigIn Mask */\r
+\r
+#define TPI_FFCR_EnFCont_Pos                1                                          /*!< TPI FFCR: EnFCont Position */\r
+#define TPI_FFCR_EnFCont_Msk               (0x1UL << TPI_FFCR_EnFCont_Pos)             /*!< TPI FFCR: EnFCont Mask */\r
+\r
+/* TPI TRIGGER Register Definitions */\r
+#define TPI_TRIGGER_TRIGGER_Pos             0                                          /*!< TPI TRIGGER: TRIGGER Position */\r
+#define TPI_TRIGGER_TRIGGER_Msk            (0x1UL << TPI_TRIGGER_TRIGGER_Pos)          /*!< TPI TRIGGER: TRIGGER Mask */\r
+\r
+/* TPI Integration ETM Data Register Definitions (FIFO0) */\r
+#define TPI_FIFO0_ITM_ATVALID_Pos          29                                          /*!< TPI FIFO0: ITM_ATVALID Position */\r
+#define TPI_FIFO0_ITM_ATVALID_Msk          (0x3UL << TPI_FIFO0_ITM_ATVALID_Pos)        /*!< TPI FIFO0: ITM_ATVALID Mask */\r
+\r
+#define TPI_FIFO0_ITM_bytecount_Pos        27                                          /*!< TPI FIFO0: ITM_bytecount Position */\r
+#define TPI_FIFO0_ITM_bytecount_Msk        (0x3UL << TPI_FIFO0_ITM_bytecount_Pos)      /*!< TPI FIFO0: ITM_bytecount Mask */\r
+\r
+#define TPI_FIFO0_ETM_ATVALID_Pos          26                                          /*!< TPI FIFO0: ETM_ATVALID Position */\r
+#define TPI_FIFO0_ETM_ATVALID_Msk          (0x3UL << TPI_FIFO0_ETM_ATVALID_Pos)        /*!< TPI FIFO0: ETM_ATVALID Mask */\r
+\r
+#define TPI_FIFO0_ETM_bytecount_Pos        24                                          /*!< TPI FIFO0: ETM_bytecount Position */\r
+#define TPI_FIFO0_ETM_bytecount_Msk        (0x3UL << TPI_FIFO0_ETM_bytecount_Pos)      /*!< TPI FIFO0: ETM_bytecount Mask */\r
+\r
+#define TPI_FIFO0_ETM2_Pos                 16                                          /*!< TPI FIFO0: ETM2 Position */\r
+#define TPI_FIFO0_ETM2_Msk                 (0xFFUL << TPI_FIFO0_ETM2_Pos)              /*!< TPI FIFO0: ETM2 Mask */\r
+\r
+#define TPI_FIFO0_ETM1_Pos                  8                                          /*!< TPI FIFO0: ETM1 Position */\r
+#define TPI_FIFO0_ETM1_Msk                 (0xFFUL << TPI_FIFO0_ETM1_Pos)              /*!< TPI FIFO0: ETM1 Mask */\r
+\r
+#define TPI_FIFO0_ETM0_Pos                  0                                          /*!< TPI FIFO0: ETM0 Position */\r
+#define TPI_FIFO0_ETM0_Msk                 (0xFFUL << TPI_FIFO0_ETM0_Pos)              /*!< TPI FIFO0: ETM0 Mask */\r
+\r
+/* TPI ITATBCTR2 Register Definitions */\r
+#define TPI_ITATBCTR2_ATREADY_Pos           0                                          /*!< TPI ITATBCTR2: ATREADY Position */\r
+#define TPI_ITATBCTR2_ATREADY_Msk          (0x1UL << TPI_ITATBCTR2_ATREADY_Pos)        /*!< TPI ITATBCTR2: ATREADY Mask */\r
+\r
+/* TPI Integration ITM Data Register Definitions (FIFO1) */\r
+#define TPI_FIFO1_ITM_ATVALID_Pos          29                                          /*!< TPI FIFO1: ITM_ATVALID Position */\r
+#define TPI_FIFO1_ITM_ATVALID_Msk          (0x3UL << TPI_FIFO1_ITM_ATVALID_Pos)        /*!< TPI FIFO1: ITM_ATVALID Mask */\r
+\r
+#define TPI_FIFO1_ITM_bytecount_Pos        27                                          /*!< TPI FIFO1: ITM_bytecount Position */\r
+#define TPI_FIFO1_ITM_bytecount_Msk        (0x3UL << TPI_FIFO1_ITM_bytecount_Pos)      /*!< TPI FIFO1: ITM_bytecount Mask */\r
+\r
+#define TPI_FIFO1_ETM_ATVALID_Pos          26                                          /*!< TPI FIFO1: ETM_ATVALID Position */\r
+#define TPI_FIFO1_ETM_ATVALID_Msk          (0x3UL << TPI_FIFO1_ETM_ATVALID_Pos)        /*!< TPI FIFO1: ETM_ATVALID Mask */\r
+\r
+#define TPI_FIFO1_ETM_bytecount_Pos        24                                          /*!< TPI FIFO1: ETM_bytecount Position */\r
+#define TPI_FIFO1_ETM_bytecount_Msk        (0x3UL << TPI_FIFO1_ETM_bytecount_Pos)      /*!< TPI FIFO1: ETM_bytecount Mask */\r
+\r
+#define TPI_FIFO1_ITM2_Pos                 16                                          /*!< TPI FIFO1: ITM2 Position */\r
+#define TPI_FIFO1_ITM2_Msk                 (0xFFUL << TPI_FIFO1_ITM2_Pos)              /*!< TPI FIFO1: ITM2 Mask */\r
+\r
+#define TPI_FIFO1_ITM1_Pos                  8                                          /*!< TPI FIFO1: ITM1 Position */\r
+#define TPI_FIFO1_ITM1_Msk                 (0xFFUL << TPI_FIFO1_ITM1_Pos)              /*!< TPI FIFO1: ITM1 Mask */\r
+\r
+#define TPI_FIFO1_ITM0_Pos                  0                                          /*!< TPI FIFO1: ITM0 Position */\r
+#define TPI_FIFO1_ITM0_Msk                 (0xFFUL << TPI_FIFO1_ITM0_Pos)              /*!< TPI FIFO1: ITM0 Mask */\r
+\r
+/* TPI ITATBCTR0 Register Definitions */\r
+#define TPI_ITATBCTR0_ATREADY_Pos           0                                          /*!< TPI ITATBCTR0: ATREADY Position */\r
+#define TPI_ITATBCTR0_ATREADY_Msk          (0x1UL << TPI_ITATBCTR0_ATREADY_Pos)        /*!< TPI ITATBCTR0: ATREADY Mask */\r
+\r
+/* TPI Integration Mode Control Register Definitions */\r
+#define TPI_ITCTRL_Mode_Pos                 0                                          /*!< TPI ITCTRL: Mode Position */\r
+#define TPI_ITCTRL_Mode_Msk                (0x1UL << TPI_ITCTRL_Mode_Pos)              /*!< TPI ITCTRL: Mode Mask */\r
+\r
+/* TPI DEVID Register Definitions */\r
+#define TPI_DEVID_NRZVALID_Pos             11                                          /*!< TPI DEVID: NRZVALID Position */\r
+#define TPI_DEVID_NRZVALID_Msk             (0x1UL << TPI_DEVID_NRZVALID_Pos)           /*!< TPI DEVID: NRZVALID Mask */\r
+\r
+#define TPI_DEVID_MANCVALID_Pos            10                                          /*!< TPI DEVID: MANCVALID Position */\r
+#define TPI_DEVID_MANCVALID_Msk            (0x1UL << TPI_DEVID_MANCVALID_Pos)          /*!< TPI DEVID: MANCVALID Mask */\r
+\r
+#define TPI_DEVID_PTINVALID_Pos             9                                          /*!< TPI DEVID: PTINVALID Position */\r
+#define TPI_DEVID_PTINVALID_Msk            (0x1UL << TPI_DEVID_PTINVALID_Pos)          /*!< TPI DEVID: PTINVALID Mask */\r
+\r
+#define TPI_DEVID_MinBufSz_Pos              6                                          /*!< TPI DEVID: MinBufSz Position */\r
+#define TPI_DEVID_MinBufSz_Msk             (0x7UL << TPI_DEVID_MinBufSz_Pos)           /*!< TPI DEVID: MinBufSz Mask */\r
+\r
+#define TPI_DEVID_AsynClkIn_Pos             5                                          /*!< TPI DEVID: AsynClkIn Position */\r
+#define TPI_DEVID_AsynClkIn_Msk            (0x1UL << TPI_DEVID_AsynClkIn_Pos)          /*!< TPI DEVID: AsynClkIn Mask */\r
+\r
+#define TPI_DEVID_NrTraceInput_Pos          0                                          /*!< TPI DEVID: NrTraceInput Position */\r
+#define TPI_DEVID_NrTraceInput_Msk         (0x1FUL << TPI_DEVID_NrTraceInput_Pos)      /*!< TPI DEVID: NrTraceInput Mask */\r
+\r
+/* TPI DEVTYPE Register Definitions */\r
+#define TPI_DEVTYPE_SubType_Pos             0                                          /*!< TPI DEVTYPE: SubType Position */\r
+#define TPI_DEVTYPE_SubType_Msk            (0xFUL << TPI_DEVTYPE_SubType_Pos)          /*!< TPI DEVTYPE: SubType Mask */\r
+\r
+#define TPI_DEVTYPE_MajorType_Pos           4                                          /*!< TPI DEVTYPE: MajorType Position */\r
+#define TPI_DEVTYPE_MajorType_Msk          (0xFUL << TPI_DEVTYPE_MajorType_Pos)        /*!< TPI DEVTYPE: MajorType Mask */\r
+\r
+/*@}*/ /* end of group CMSIS_TPI */\r
+\r
+\r
+#if (__MPU_PRESENT == 1)\r
+/** \ingroup  CMSIS_core_register\r
+    \defgroup CMSIS_MPU     Memory Protection Unit (MPU)\r
+    \brief      Type definitions for the Memory Protection Unit (MPU)\r
+  @{\r
+ */\r
+\r
+/** \brief  Structure type to access the Memory Protection Unit (MPU).\r
+ */\r
+typedef struct\r
+{\r
+  __I  uint32_t TYPE;                    /*!< Offset: 0x000 (R/ )  MPU Type Register                              */\r
+  __IO uint32_t CTRL;                    /*!< Offset: 0x004 (R/W)  MPU Control Register                           */\r
+  __IO uint32_t RNR;                     /*!< Offset: 0x008 (R/W)  MPU Region RNRber Register                     */\r
+  __IO uint32_t RBAR;                    /*!< Offset: 0x00C (R/W)  MPU Region Base Address Register               */\r
+  __IO uint32_t RASR;                    /*!< Offset: 0x010 (R/W)  MPU Region Attribute and Size Register         */\r
+  __IO uint32_t RBAR_A1;                 /*!< Offset: 0x014 (R/W)  MPU Alias 1 Region Base Address Register       */\r
+  __IO uint32_t RASR_A1;                 /*!< Offset: 0x018 (R/W)  MPU Alias 1 Region Attribute and Size Register */\r
+  __IO uint32_t RBAR_A2;                 /*!< Offset: 0x01C (R/W)  MPU Alias 2 Region Base Address Register       */\r
+  __IO uint32_t RASR_A2;                 /*!< Offset: 0x020 (R/W)  MPU Alias 2 Region Attribute and Size Register */\r
+  __IO uint32_t RBAR_A3;                 /*!< Offset: 0x024 (R/W)  MPU Alias 3 Region Base Address Register       */\r
+  __IO uint32_t RASR_A3;                 /*!< Offset: 0x028 (R/W)  MPU Alias 3 Region Attribute and Size Register */\r
+} MPU_Type;\r
+\r
+/* MPU Type Register */\r
+#define MPU_TYPE_IREGION_Pos               16                                             /*!< MPU TYPE: IREGION Position */\r
+#define MPU_TYPE_IREGION_Msk               (0xFFUL << MPU_TYPE_IREGION_Pos)               /*!< MPU TYPE: IREGION Mask */\r
+\r
+#define MPU_TYPE_DREGION_Pos                8                                             /*!< MPU TYPE: DREGION Position */\r
+#define MPU_TYPE_DREGION_Msk               (0xFFUL << MPU_TYPE_DREGION_Pos)               /*!< MPU TYPE: DREGION Mask */\r
+\r
+#define MPU_TYPE_SEPARATE_Pos               0                                             /*!< MPU TYPE: SEPARATE Position */\r
+#define MPU_TYPE_SEPARATE_Msk              (1UL << MPU_TYPE_SEPARATE_Pos)                 /*!< MPU TYPE: SEPARATE Mask */\r
+\r
+/* MPU Control Register */\r
+#define MPU_CTRL_PRIVDEFENA_Pos             2                                             /*!< MPU CTRL: PRIVDEFENA Position */\r
+#define MPU_CTRL_PRIVDEFENA_Msk            (1UL << MPU_CTRL_PRIVDEFENA_Pos)               /*!< MPU CTRL: PRIVDEFENA Mask */\r
+\r
+#define MPU_CTRL_HFNMIENA_Pos               1                                             /*!< MPU CTRL: HFNMIENA Position */\r
+#define MPU_CTRL_HFNMIENA_Msk              (1UL << MPU_CTRL_HFNMIENA_Pos)                 /*!< MPU CTRL: HFNMIENA Mask */\r
+\r
+#define MPU_CTRL_ENABLE_Pos                 0                                             /*!< MPU CTRL: ENABLE Position */\r
+#define MPU_CTRL_ENABLE_Msk                (1UL << MPU_CTRL_ENABLE_Pos)                   /*!< MPU CTRL: ENABLE Mask */\r
+\r
+/* MPU Region Number Register */\r
+#define MPU_RNR_REGION_Pos                  0                                             /*!< MPU RNR: REGION Position */\r
+#define MPU_RNR_REGION_Msk                 (0xFFUL << MPU_RNR_REGION_Pos)                 /*!< MPU RNR: REGION Mask */\r
+\r
+/* MPU Region Base Address Register */\r
+#define MPU_RBAR_ADDR_Pos                   5                                             /*!< MPU RBAR: ADDR Position */\r
+#define MPU_RBAR_ADDR_Msk                  (0x7FFFFFFUL << MPU_RBAR_ADDR_Pos)             /*!< MPU RBAR: ADDR Mask */\r
+\r
+#define MPU_RBAR_VALID_Pos                  4                                             /*!< MPU RBAR: VALID Position */\r
+#define MPU_RBAR_VALID_Msk                 (1UL << MPU_RBAR_VALID_Pos)                    /*!< MPU RBAR: VALID Mask */\r
+\r
+#define MPU_RBAR_REGION_Pos                 0                                             /*!< MPU RBAR: REGION Position */\r
+#define MPU_RBAR_REGION_Msk                (0xFUL << MPU_RBAR_REGION_Pos)                 /*!< MPU RBAR: REGION Mask */\r
+\r
+/* MPU Region Attribute and Size Register */\r
+#define MPU_RASR_ATTRS_Pos                 16                                             /*!< MPU RASR: MPU Region Attribute field Position */\r
+#define MPU_RASR_ATTRS_Msk                 (0xFFFFUL << MPU_RASR_ATTRS_Pos)               /*!< MPU RASR: MPU Region Attribute field Mask */\r
+\r
+#define MPU_RASR_SRD_Pos                    8                                             /*!< MPU RASR: Sub-Region Disable Position */\r
+#define MPU_RASR_SRD_Msk                   (0xFFUL << MPU_RASR_SRD_Pos)                   /*!< MPU RASR: Sub-Region Disable Mask */\r
+\r
+#define MPU_RASR_SIZE_Pos                   1                                             /*!< MPU RASR: Region Size Field Position */\r
+#define MPU_RASR_SIZE_Msk                  (0x1FUL << MPU_RASR_SIZE_Pos)                  /*!< MPU RASR: Region Size Field Mask */\r
+\r
+#define MPU_RASR_ENABLE_Pos                 0                                             /*!< MPU RASR: Region enable bit Position */\r
+#define MPU_RASR_ENABLE_Msk                (1UL << MPU_RASR_ENABLE_Pos)                   /*!< MPU RASR: Region enable bit Disable Mask */\r
+\r
+/*@} end of group CMSIS_MPU */\r
+#endif\r
+\r
+\r
+#if (__FPU_PRESENT == 1)\r
+/** \ingroup  CMSIS_core_register\r
+    \defgroup CMSIS_FPU     Floating Point Unit (FPU)\r
+    \brief      Type definitions for the Floating Point Unit (FPU)\r
+  @{\r
+ */\r
+\r
+/** \brief  Structure type to access the Floating Point Unit (FPU).\r
+ */\r
+typedef struct\r
+{\r
+       uint32_t RESERVED0[1];\r
+  __IO uint32_t FPCCR;                   /*!< Offset: 0x004 (R/W)  Floating-Point Context Control Register               */\r
+  __IO uint32_t FPCAR;                   /*!< Offset: 0x008 (R/W)  Floating-Point Context Address Register               */\r
+  __IO uint32_t FPDSCR;                  /*!< Offset: 0x00C (R/W)  Floating-Point Default Status Control Register        */\r
+  __I  uint32_t MVFR0;                   /*!< Offset: 0x010 (R/ )  Media and FP Feature Register 0                       */\r
+  __I  uint32_t MVFR1;                   /*!< Offset: 0x014 (R/ )  Media and FP Feature Register 1                       */\r
+} FPU_Type;\r
+\r
+/* Floating-Point Context Control Register */\r
+#define FPU_FPCCR_ASPEN_Pos                31                                             /*!< FPCCR: ASPEN bit Position */\r
+#define FPU_FPCCR_ASPEN_Msk                (1UL << FPU_FPCCR_ASPEN_Pos)                   /*!< FPCCR: ASPEN bit Mask */\r
+\r
+#define FPU_FPCCR_LSPEN_Pos                30                                             /*!< FPCCR: LSPEN Position */\r
+#define FPU_FPCCR_LSPEN_Msk                (1UL << FPU_FPCCR_LSPEN_Pos)                   /*!< FPCCR: LSPEN bit Mask */\r
+\r
+#define FPU_FPCCR_MONRDY_Pos                8                                             /*!< FPCCR: MONRDY Position */\r
+#define FPU_FPCCR_MONRDY_Msk               (1UL << FPU_FPCCR_MONRDY_Pos)                  /*!< FPCCR: MONRDY bit Mask */\r
+\r
+#define FPU_FPCCR_BFRDY_Pos                 6                                             /*!< FPCCR: BFRDY Position */\r
+#define FPU_FPCCR_BFRDY_Msk                (1UL << FPU_FPCCR_BFRDY_Pos)                   /*!< FPCCR: BFRDY bit Mask */\r
+\r
+#define FPU_FPCCR_MMRDY_Pos                 5                                             /*!< FPCCR: MMRDY Position */\r
+#define FPU_FPCCR_MMRDY_Msk                (1UL << FPU_FPCCR_MMRDY_Pos)                   /*!< FPCCR: MMRDY bit Mask */\r
+\r
+#define FPU_FPCCR_HFRDY_Pos                 4                                             /*!< FPCCR: HFRDY Position */\r
+#define FPU_FPCCR_HFRDY_Msk                (1UL << FPU_FPCCR_HFRDY_Pos)                   /*!< FPCCR: HFRDY bit Mask */\r
+\r
+#define FPU_FPCCR_THREAD_Pos                3                                             /*!< FPCCR: processor mode bit Position */\r
+#define FPU_FPCCR_THREAD_Msk               (1UL << FPU_FPCCR_THREAD_Pos)                  /*!< FPCCR: processor mode active bit Mask */\r
+\r
+#define FPU_FPCCR_USER_Pos                  1                                             /*!< FPCCR: privilege level bit Position */\r
+#define FPU_FPCCR_USER_Msk                 (1UL << FPU_FPCCR_USER_Pos)                    /*!< FPCCR: privilege level bit Mask */\r
+\r
+#define FPU_FPCCR_LSPACT_Pos                0                                             /*!< FPCCR: Lazy state preservation active bit Position */\r
+#define FPU_FPCCR_LSPACT_Msk               (1UL << FPU_FPCCR_LSPACT_Pos)                  /*!< FPCCR: Lazy state preservation active bit Mask */\r
+\r
+/* Floating-Point Context Address Register */\r
+#define FPU_FPCAR_ADDRESS_Pos               3                                             /*!< FPCAR: ADDRESS bit Position */\r
+#define FPU_FPCAR_ADDRESS_Msk              (0x1FFFFFFFUL << FPU_FPCAR_ADDRESS_Pos)        /*!< FPCAR: ADDRESS bit Mask */\r
+\r
+/* Floating-Point Default Status Control Register */\r
+#define FPU_FPDSCR_AHP_Pos                 26                                             /*!< FPDSCR: AHP bit Position */\r
+#define FPU_FPDSCR_AHP_Msk                 (1UL << FPU_FPDSCR_AHP_Pos)                    /*!< FPDSCR: AHP bit Mask */\r
+\r
+#define FPU_FPDSCR_DN_Pos                  25                                             /*!< FPDSCR: DN bit Position */\r
+#define FPU_FPDSCR_DN_Msk                  (1UL << FPU_FPDSCR_DN_Pos)                     /*!< FPDSCR: DN bit Mask */\r
+\r
+#define FPU_FPDSCR_FZ_Pos                  24                                             /*!< FPDSCR: FZ bit Position */\r
+#define FPU_FPDSCR_FZ_Msk                  (1UL << FPU_FPDSCR_FZ_Pos)                     /*!< FPDSCR: FZ bit Mask */\r
+\r
+#define FPU_FPDSCR_RMode_Pos               22                                             /*!< FPDSCR: RMode bit Position */\r
+#define FPU_FPDSCR_RMode_Msk               (3UL << FPU_FPDSCR_RMode_Pos)                  /*!< FPDSCR: RMode bit Mask */\r
+\r
+/* Media and FP Feature Register 0 */\r
+#define FPU_MVFR0_FP_rounding_modes_Pos    28                                             /*!< MVFR0: FP rounding modes bits Position */\r
+#define FPU_MVFR0_FP_rounding_modes_Msk    (0xFUL << FPU_MVFR0_FP_rounding_modes_Pos)     /*!< MVFR0: FP rounding modes bits Mask */\r
+\r
+#define FPU_MVFR0_Short_vectors_Pos        24                                             /*!< MVFR0: Short vectors bits Position */\r
+#define FPU_MVFR0_Short_vectors_Msk        (0xFUL << FPU_MVFR0_Short_vectors_Pos)         /*!< MVFR0: Short vectors bits Mask */\r
+\r
+#define FPU_MVFR0_Square_root_Pos          20                                             /*!< MVFR0: Square root bits Position */\r
+#define FPU_MVFR0_Square_root_Msk          (0xFUL << FPU_MVFR0_Square_root_Pos)           /*!< MVFR0: Square root bits Mask */\r
+\r
+#define FPU_MVFR0_Divide_Pos               16                                             /*!< MVFR0: Divide bits Position */\r
+#define FPU_MVFR0_Divide_Msk               (0xFUL << FPU_MVFR0_Divide_Pos)                /*!< MVFR0: Divide bits Mask */\r
+\r
+#define FPU_MVFR0_FP_excep_trapping_Pos    12                                             /*!< MVFR0: FP exception trapping bits Position */\r
+#define FPU_MVFR0_FP_excep_trapping_Msk    (0xFUL << FPU_MVFR0_FP_excep_trapping_Pos)     /*!< MVFR0: FP exception trapping bits Mask */\r
+\r
+#define FPU_MVFR0_Double_precision_Pos      8                                             /*!< MVFR0: Double-precision bits Position */\r
+#define FPU_MVFR0_Double_precision_Msk     (0xFUL << FPU_MVFR0_Double_precision_Pos)      /*!< MVFR0: Double-precision bits Mask */\r
+\r
+#define FPU_MVFR0_Single_precision_Pos      4                                             /*!< MVFR0: Single-precision bits Position */\r
+#define FPU_MVFR0_Single_precision_Msk     (0xFUL << FPU_MVFR0_Single_precision_Pos)      /*!< MVFR0: Single-precision bits Mask */\r
+\r
+#define FPU_MVFR0_A_SIMD_registers_Pos      0                                             /*!< MVFR0: A_SIMD registers bits Position */\r
+#define FPU_MVFR0_A_SIMD_registers_Msk     (0xFUL << FPU_MVFR0_A_SIMD_registers_Pos)      /*!< MVFR0: A_SIMD registers bits Mask */\r
+\r
+/* Media and FP Feature Register 1 */\r
+#define FPU_MVFR1_FP_fused_MAC_Pos         28                                             /*!< MVFR1: FP fused MAC bits Position */\r
+#define FPU_MVFR1_FP_fused_MAC_Msk         (0xFUL << FPU_MVFR1_FP_fused_MAC_Pos)          /*!< MVFR1: FP fused MAC bits Mask */\r
+\r
+#define FPU_MVFR1_FP_HPFP_Pos              24                                             /*!< MVFR1: FP HPFP bits Position */\r
+#define FPU_MVFR1_FP_HPFP_Msk              (0xFUL << FPU_MVFR1_FP_HPFP_Pos)               /*!< MVFR1: FP HPFP bits Mask */\r
+\r
+#define FPU_MVFR1_D_NaN_mode_Pos            4                                             /*!< MVFR1: D_NaN mode bits Position */\r
+#define FPU_MVFR1_D_NaN_mode_Msk           (0xFUL << FPU_MVFR1_D_NaN_mode_Pos)            /*!< MVFR1: D_NaN mode bits Mask */\r
+\r
+#define FPU_MVFR1_FtZ_mode_Pos              0                                             /*!< MVFR1: FtZ mode bits Position */\r
+#define FPU_MVFR1_FtZ_mode_Msk             (0xFUL << FPU_MVFR1_FtZ_mode_Pos)              /*!< MVFR1: FtZ mode bits Mask */\r
+\r
+/*@} end of group CMSIS_FPU */\r
+#endif\r
+\r
+\r
+/** \ingroup  CMSIS_core_register\r
+    \defgroup CMSIS_CoreDebug       Core Debug Registers (CoreDebug)\r
+    \brief      Type definitions for the Core Debug Registers\r
+  @{\r
+ */\r
+\r
+/** \brief  Structure type to access the Core Debug Register (CoreDebug).\r
+ */\r
+typedef struct\r
+{\r
+  __IO uint32_t DHCSR;                   /*!< Offset: 0x000 (R/W)  Debug Halting Control and Status Register    */\r
+  __O  uint32_t DCRSR;                   /*!< Offset: 0x004 ( /W)  Debug Core Register Selector Register        */\r
+  __IO uint32_t DCRDR;                   /*!< Offset: 0x008 (R/W)  Debug Core Register Data Register            */\r
+  __IO uint32_t DEMCR;                   /*!< Offset: 0x00C (R/W)  Debug Exception and Monitor Control Register */\r
+} CoreDebug_Type;\r
+\r
+/* Debug Halting Control and Status Register */\r
+#define CoreDebug_DHCSR_DBGKEY_Pos         16                                             /*!< CoreDebug DHCSR: DBGKEY Position */\r
+#define CoreDebug_DHCSR_DBGKEY_Msk         (0xFFFFUL << CoreDebug_DHCSR_DBGKEY_Pos)       /*!< CoreDebug DHCSR: DBGKEY Mask */\r
+\r
+#define CoreDebug_DHCSR_S_RESET_ST_Pos     25                                             /*!< CoreDebug DHCSR: S_RESET_ST Position */\r
+#define CoreDebug_DHCSR_S_RESET_ST_Msk     (1UL << CoreDebug_DHCSR_S_RESET_ST_Pos)        /*!< CoreDebug DHCSR: S_RESET_ST Mask */\r
+\r
+#define CoreDebug_DHCSR_S_RETIRE_ST_Pos    24                                             /*!< CoreDebug DHCSR: S_RETIRE_ST Position */\r
+#define CoreDebug_DHCSR_S_RETIRE_ST_Msk    (1UL << CoreDebug_DHCSR_S_RETIRE_ST_Pos)       /*!< CoreDebug DHCSR: S_RETIRE_ST Mask */\r
+\r
+#define CoreDebug_DHCSR_S_LOCKUP_Pos       19                                             /*!< CoreDebug DHCSR: S_LOCKUP Position */\r
+#define CoreDebug_DHCSR_S_LOCKUP_Msk       (1UL << CoreDebug_DHCSR_S_LOCKUP_Pos)          /*!< CoreDebug DHCSR: S_LOCKUP Mask */\r
+\r
+#define CoreDebug_DHCSR_S_SLEEP_Pos        18                                             /*!< CoreDebug DHCSR: S_SLEEP Position */\r
+#define CoreDebug_DHCSR_S_SLEEP_Msk        (1UL << CoreDebug_DHCSR_S_SLEEP_Pos)           /*!< CoreDebug DHCSR: S_SLEEP Mask */\r
+\r
+#define CoreDebug_DHCSR_S_HALT_Pos         17                                             /*!< CoreDebug DHCSR: S_HALT Position */\r
+#define CoreDebug_DHCSR_S_HALT_Msk         (1UL << CoreDebug_DHCSR_S_HALT_Pos)            /*!< CoreDebug DHCSR: S_HALT Mask */\r
+\r
+#define CoreDebug_DHCSR_S_REGRDY_Pos       16                                             /*!< CoreDebug DHCSR: S_REGRDY Position */\r
+#define CoreDebug_DHCSR_S_REGRDY_Msk       (1UL << CoreDebug_DHCSR_S_REGRDY_Pos)          /*!< CoreDebug DHCSR: S_REGRDY Mask */\r
+\r
+#define CoreDebug_DHCSR_C_SNAPSTALL_Pos     5                                             /*!< CoreDebug DHCSR: C_SNAPSTALL Position */\r
+#define CoreDebug_DHCSR_C_SNAPSTALL_Msk    (1UL << CoreDebug_DHCSR_C_SNAPSTALL_Pos)       /*!< CoreDebug DHCSR: C_SNAPSTALL Mask */\r
+\r
+#define CoreDebug_DHCSR_C_MASKINTS_Pos      3                                             /*!< CoreDebug DHCSR: C_MASKINTS Position */\r
+#define CoreDebug_DHCSR_C_MASKINTS_Msk     (1UL << CoreDebug_DHCSR_C_MASKINTS_Pos)        /*!< CoreDebug DHCSR: C_MASKINTS Mask */\r
+\r
+#define CoreDebug_DHCSR_C_STEP_Pos          2                                             /*!< CoreDebug DHCSR: C_STEP Position */\r
+#define CoreDebug_DHCSR_C_STEP_Msk         (1UL << CoreDebug_DHCSR_C_STEP_Pos)            /*!< CoreDebug DHCSR: C_STEP Mask */\r
+\r
+#define CoreDebug_DHCSR_C_HALT_Pos          1                                             /*!< CoreDebug DHCSR: C_HALT Position */\r
+#define CoreDebug_DHCSR_C_HALT_Msk         (1UL << CoreDebug_DHCSR_C_HALT_Pos)            /*!< CoreDebug DHCSR: C_HALT Mask */\r
+\r
+#define CoreDebug_DHCSR_C_DEBUGEN_Pos       0                                             /*!< CoreDebug DHCSR: C_DEBUGEN Position */\r
+#define CoreDebug_DHCSR_C_DEBUGEN_Msk      (1UL << CoreDebug_DHCSR_C_DEBUGEN_Pos)         /*!< CoreDebug DHCSR: C_DEBUGEN Mask */\r
+\r
+/* Debug Core Register Selector Register */\r
+#define CoreDebug_DCRSR_REGWnR_Pos         16                                             /*!< CoreDebug DCRSR: REGWnR Position */\r
+#define CoreDebug_DCRSR_REGWnR_Msk         (1UL << CoreDebug_DCRSR_REGWnR_Pos)            /*!< CoreDebug DCRSR: REGWnR Mask */\r
+\r
+#define CoreDebug_DCRSR_REGSEL_Pos          0                                             /*!< CoreDebug DCRSR: REGSEL Position */\r
+#define CoreDebug_DCRSR_REGSEL_Msk         (0x1FUL << CoreDebug_DCRSR_REGSEL_Pos)         /*!< CoreDebug DCRSR: REGSEL Mask */\r
+\r
+/* Debug Exception and Monitor Control Register */\r
+#define CoreDebug_DEMCR_TRCENA_Pos         24                                             /*!< CoreDebug DEMCR: TRCENA Position */\r
+#define CoreDebug_DEMCR_TRCENA_Msk         (1UL << CoreDebug_DEMCR_TRCENA_Pos)            /*!< CoreDebug DEMCR: TRCENA Mask */\r
+\r
+#define CoreDebug_DEMCR_MON_REQ_Pos        19                                             /*!< CoreDebug DEMCR: MON_REQ Position */\r
+#define CoreDebug_DEMCR_MON_REQ_Msk        (1UL << CoreDebug_DEMCR_MON_REQ_Pos)           /*!< CoreDebug DEMCR: MON_REQ Mask */\r
+\r
+#define CoreDebug_DEMCR_MON_STEP_Pos       18                                             /*!< CoreDebug DEMCR: MON_STEP Position */\r
+#define CoreDebug_DEMCR_MON_STEP_Msk       (1UL << CoreDebug_DEMCR_MON_STEP_Pos)          /*!< CoreDebug DEMCR: MON_STEP Mask */\r
+\r
+#define CoreDebug_DEMCR_MON_PEND_Pos       17                                             /*!< CoreDebug DEMCR: MON_PEND Position */\r
+#define CoreDebug_DEMCR_MON_PEND_Msk       (1UL << CoreDebug_DEMCR_MON_PEND_Pos)          /*!< CoreDebug DEMCR: MON_PEND Mask */\r
+\r
+#define CoreDebug_DEMCR_MON_EN_Pos         16                                             /*!< CoreDebug DEMCR: MON_EN Position */\r
+#define CoreDebug_DEMCR_MON_EN_Msk         (1UL << CoreDebug_DEMCR_MON_EN_Pos)            /*!< CoreDebug DEMCR: MON_EN Mask */\r
+\r
+#define CoreDebug_DEMCR_VC_HARDERR_Pos     10                                             /*!< CoreDebug DEMCR: VC_HARDERR Position */\r
+#define CoreDebug_DEMCR_VC_HARDERR_Msk     (1UL << CoreDebug_DEMCR_VC_HARDERR_Pos)        /*!< CoreDebug DEMCR: VC_HARDERR Mask */\r
+\r
+#define CoreDebug_DEMCR_VC_INTERR_Pos       9                                             /*!< CoreDebug DEMCR: VC_INTERR Position */\r
+#define CoreDebug_DEMCR_VC_INTERR_Msk      (1UL << CoreDebug_DEMCR_VC_INTERR_Pos)         /*!< CoreDebug DEMCR: VC_INTERR Mask */\r
+\r
+#define CoreDebug_DEMCR_VC_BUSERR_Pos       8                                             /*!< CoreDebug DEMCR: VC_BUSERR Position */\r
+#define CoreDebug_DEMCR_VC_BUSERR_Msk      (1UL << CoreDebug_DEMCR_VC_BUSERR_Pos)         /*!< CoreDebug DEMCR: VC_BUSERR Mask */\r
+\r
+#define CoreDebug_DEMCR_VC_STATERR_Pos      7                                             /*!< CoreDebug DEMCR: VC_STATERR Position */\r
+#define CoreDebug_DEMCR_VC_STATERR_Msk     (1UL << CoreDebug_DEMCR_VC_STATERR_Pos)        /*!< CoreDebug DEMCR: VC_STATERR Mask */\r
+\r
+#define CoreDebug_DEMCR_VC_CHKERR_Pos       6                                             /*!< CoreDebug DEMCR: VC_CHKERR Position */\r
+#define CoreDebug_DEMCR_VC_CHKERR_Msk      (1UL << CoreDebug_DEMCR_VC_CHKERR_Pos)         /*!< CoreDebug DEMCR: VC_CHKERR Mask */\r
+\r
+#define CoreDebug_DEMCR_VC_NOCPERR_Pos      5                                             /*!< CoreDebug DEMCR: VC_NOCPERR Position */\r
+#define CoreDebug_DEMCR_VC_NOCPERR_Msk     (1UL << CoreDebug_DEMCR_VC_NOCPERR_Pos)        /*!< CoreDebug DEMCR: VC_NOCPERR Mask */\r
+\r
+#define CoreDebug_DEMCR_VC_MMERR_Pos        4                                             /*!< CoreDebug DEMCR: VC_MMERR Position */\r
+#define CoreDebug_DEMCR_VC_MMERR_Msk       (1UL << CoreDebug_DEMCR_VC_MMERR_Pos)          /*!< CoreDebug DEMCR: VC_MMERR Mask */\r
+\r
+#define CoreDebug_DEMCR_VC_CORERESET_Pos    0                                             /*!< CoreDebug DEMCR: VC_CORERESET Position */\r
+#define CoreDebug_DEMCR_VC_CORERESET_Msk   (1UL << CoreDebug_DEMCR_VC_CORERESET_Pos)      /*!< CoreDebug DEMCR: VC_CORERESET Mask */\r
+\r
+/*@} end of group CMSIS_CoreDebug */\r
+\r
+\r
+/** \ingroup    CMSIS_core_register\r
+    \defgroup   CMSIS_core_base     Core Definitions\r
+    \brief      Definitions for base addresses, unions, and structures.\r
+  @{\r
+ */\r
+\r
+/* Memory mapping of Cortex-M4 Hardware */\r
+#define SCS_BASE            (0xE000E000UL)                            /*!< System Control Space Base Address  */\r
+#define ITM_BASE            (0xE0000000UL)                            /*!< ITM Base Address                   */\r
+#define DWT_BASE            (0xE0001000UL)                            /*!< DWT Base Address                   */\r
+#define TPI_BASE            (0xE0040000UL)                            /*!< TPI Base Address                   */\r
+#define CoreDebug_BASE      (0xE000EDF0UL)                            /*!< Core Debug Base Address            */\r
+#define SysTick_BASE        (SCS_BASE +  0x0010UL)                    /*!< SysTick Base Address               */\r
+#define NVIC_BASE           (SCS_BASE +  0x0100UL)                    /*!< NVIC Base Address                  */\r
+#define SCB_BASE            (SCS_BASE +  0x0D00UL)                    /*!< System Control Block Base Address  */\r
+\r
+#define SCnSCB              ((SCnSCB_Type    *)     SCS_BASE      )   /*!< System control Register not in SCB */\r
+#define SCB                 ((SCB_Type       *)     SCB_BASE      )   /*!< SCB configuration struct           */\r
+#define SysTick             ((SysTick_Type   *)     SysTick_BASE  )   /*!< SysTick configuration struct       */\r
+#define NVIC                ((NVIC_Type      *)     NVIC_BASE     )   /*!< NVIC configuration struct          */\r
+#define ITM                 ((ITM_Type       *)     ITM_BASE      )   /*!< ITM configuration struct           */\r
+#define DWT                 ((DWT_Type       *)     DWT_BASE      )   /*!< DWT configuration struct           */\r
+#define TPI                 ((TPI_Type       *)     TPI_BASE      )   /*!< TPI configuration struct           */\r
+#define CoreDebug           ((CoreDebug_Type *)     CoreDebug_BASE)   /*!< Core Debug configuration struct    */\r
+\r
+#if (__MPU_PRESENT == 1)\r
+  #define MPU_BASE          (SCS_BASE +  0x0D90UL)                    /*!< Memory Protection Unit             */\r
+  #define MPU               ((MPU_Type       *)     MPU_BASE      )   /*!< Memory Protection Unit             */\r
+#endif\r
+\r
+#if (__FPU_PRESENT == 1)\r
+  #define FPU_BASE          (SCS_BASE +  0x0F30UL)                    /*!< Floating Point Unit                */\r
+  #define FPU               ((FPU_Type       *)     FPU_BASE      )   /*!< Floating Point Unit                */\r
+#endif\r
+\r
+/*@} */\r
+\r
+\r
+\r
+/*******************************************************************************\r
+ *                Hardware Abstraction Layer\r
+  Core Function Interface contains:\r
+  - Core NVIC Functions\r
+  - Core SysTick Functions\r
+  - Core Debug Functions\r
+  - Core Register Access Functions\r
+ ******************************************************************************/\r
+/** \defgroup CMSIS_Core_FunctionInterface Functions and Instructions Reference\r
+*/\r
+\r
+\r
+\r
+/* ##########################   NVIC functions  #################################### */\r
+/** \ingroup  CMSIS_Core_FunctionInterface\r
+    \defgroup CMSIS_Core_NVICFunctions NVIC Functions\r
+    \brief      Functions that manage interrupts and exceptions via the NVIC.\r
+    @{\r
+ */\r
+\r
+/** \brief  Set Priority Grouping\r
+\r
+  The function sets the priority grouping field using the required unlock sequence.\r
+  The parameter PriorityGroup is assigned to the field SCB->AIRCR [10:8] PRIGROUP field.\r
+  Only values from 0..7 are used.\r
+  In case of a conflict between priority grouping and available\r
+  priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set.\r
+\r
+    \param [in]      PriorityGroup  Priority grouping field.\r
+ */\r
+__STATIC_INLINE void NVIC_SetPriorityGrouping(uint32_t PriorityGroup)\r
+{\r
+  uint32_t reg_value;\r
+  uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07);               /* only values 0..7 are used          */\r
+\r
+  reg_value  =  SCB->AIRCR;                                                   /* read old register configuration    */\r
+  reg_value &= ~(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_PRIGROUP_Msk);             /* clear bits to change               */\r
+  reg_value  =  (reg_value                                 |\r
+                ((uint32_t)0x5FA << SCB_AIRCR_VECTKEY_Pos) |\r
+                (PriorityGroupTmp << 8));                                     /* Insert write key and priorty group */\r
+  SCB->AIRCR =  reg_value;\r
+}\r
+\r
+\r
+/** \brief  Get Priority Grouping\r
+\r
+  The function reads the priority grouping field from the NVIC Interrupt Controller.\r
+\r
+    \return                Priority grouping field (SCB->AIRCR [10:8] PRIGROUP field).\r
+ */\r
+__STATIC_INLINE uint32_t NVIC_GetPriorityGrouping(void)\r
+{\r
+  return ((SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) >> SCB_AIRCR_PRIGROUP_Pos);   /* read priority grouping field */\r
+}\r
+\r
+\r
+/** \brief  Enable External Interrupt\r
+\r
+    The function enables a device-specific interrupt in the NVIC interrupt controller.\r
+\r
+    \param [in]      IRQn  External interrupt number. Value cannot be negative.\r
+ */\r
+__STATIC_INLINE void NVIC_EnableIRQ(IRQn_Type IRQn)\r
+{\r
+/*  NVIC->ISER[((uint32_t)(IRQn) >> 5)] = (1 << ((uint32_t)(IRQn) & 0x1F));  enable interrupt */\r
+  NVIC->ISER[(uint32_t)((int32_t)IRQn) >> 5] = (uint32_t)(1 << ((uint32_t)((int32_t)IRQn) & (uint32_t)0x1F)); /* enable interrupt */\r
+}\r
+\r
+\r
+/** \brief  Disable External Interrupt\r
+\r
+    The function disables a device-specific interrupt in the NVIC interrupt controller.\r
+\r
+    \param [in]      IRQn  External interrupt number. Value cannot be negative.\r
+ */\r
+__STATIC_INLINE void NVIC_DisableIRQ(IRQn_Type IRQn)\r
+{\r
+  NVIC->ICER[((uint32_t)(IRQn) >> 5)] = (1 << ((uint32_t)(IRQn) & 0x1F)); /* disable interrupt */\r
+}\r
+\r
+\r
+/** \brief  Get Pending Interrupt\r
+\r
+    The function reads the pending register in the NVIC and returns the pending bit\r
+    for the specified interrupt.\r
+\r
+    \param [in]      IRQn  Interrupt number.\r
+    \r
+    \return             0  Interrupt status is not pending.\r
+    \return             1  Interrupt status is pending.\r
+ */\r
+__STATIC_INLINE uint32_t NVIC_GetPendingIRQ(IRQn_Type IRQn)\r
+{\r
+  return((uint32_t) ((NVIC->ISPR[(uint32_t)(IRQn) >> 5] & (1 << ((uint32_t)(IRQn) & 0x1F)))?1:0)); /* Return 1 if pending else 0 */\r
+}\r
+\r
+\r
+/** \brief  Set Pending Interrupt\r
+\r
+    The function sets the pending bit of an external interrupt.\r
+\r
+    \param [in]      IRQn  Interrupt number. Value cannot be negative.\r
+ */\r
+__STATIC_INLINE void NVIC_SetPendingIRQ(IRQn_Type IRQn)\r
+{\r
+  NVIC->ISPR[((uint32_t)(IRQn) >> 5)] = (1 << ((uint32_t)(IRQn) & 0x1F)); /* set interrupt pending */\r
+}\r
+\r
+\r
+/** \brief  Clear Pending Interrupt\r
+\r
+    The function clears the pending bit of an external interrupt.\r
+\r
+    \param [in]      IRQn  External interrupt number. Value cannot be negative.\r
+ */\r
+__STATIC_INLINE void NVIC_ClearPendingIRQ(IRQn_Type IRQn)\r
+{\r
+  NVIC->ICPR[((uint32_t)(IRQn) >> 5)] = (1 << ((uint32_t)(IRQn) & 0x1F)); /* Clear pending interrupt */\r
+}\r
+\r
+\r
+/** \brief  Get Active Interrupt\r
+\r
+    The function reads the active register in NVIC and returns the active bit.\r
+    \r
+    \param [in]      IRQn  Interrupt number.\r
+    \r
+    \return             0  Interrupt status is not active.\r
+    \return             1  Interrupt status is active.\r
+ */\r
+__STATIC_INLINE uint32_t NVIC_GetActive(IRQn_Type IRQn)\r
+{\r
+  return((uint32_t)((NVIC->IABR[(uint32_t)(IRQn) >> 5] & (1 << ((uint32_t)(IRQn) & 0x1F)))?1:0)); /* Return 1 if active else 0 */\r
+}\r
+\r
+\r
+/** \brief  Set Interrupt Priority\r
+\r
+    The function sets the priority of an interrupt. \r
+\r
+    \note The priority cannot be set for every core interrupt.\r
+\r
+    \param [in]      IRQn  Interrupt number. \r
+    \param [in]  priority  Priority to set.\r
+ */\r
+__STATIC_INLINE void NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority)\r
+{\r
+  if(IRQn < 0) {\r
+    SCB->SHP[((uint32_t)(IRQn) & 0xF)-4] = ((priority << (8 - __NVIC_PRIO_BITS)) & 0xff); } /* set Priority for Cortex-M  System Interrupts */\r
+  else {\r
+    NVIC->IP[(uint32_t)(IRQn)] = ((priority << (8 - __NVIC_PRIO_BITS)) & 0xff);    }        /* set Priority for device specific Interrupts  */\r
+}\r
+\r
+\r
+/** \brief  Get Interrupt Priority\r
+\r
+    The function reads the priority of an interrupt. The interrupt\r
+    number can be positive to specify an external (device specific)\r
+    interrupt, or negative to specify an internal (core) interrupt.\r
+\r
+\r
+    \param [in]   IRQn  Interrupt number.\r
+    \return             Interrupt Priority. Value is aligned automatically to the implemented\r
+                        priority bits of the microcontroller.\r
+ */\r
+__STATIC_INLINE uint32_t NVIC_GetPriority(IRQn_Type IRQn)\r
+{\r
+\r
+  if(IRQn < 0) {\r
+    return((uint32_t)(SCB->SHP[((uint32_t)(IRQn) & 0xF)-4] >> (8 - __NVIC_PRIO_BITS)));  } /* get priority for Cortex-M  system interrupts */\r
+  else {\r
+    return((uint32_t)(NVIC->IP[(uint32_t)(IRQn)]           >> (8 - __NVIC_PRIO_BITS)));  } /* get priority for device specific interrupts  */\r
+}\r
+\r
+\r
+/** \brief  Encode Priority\r
+\r
+    The function encodes the priority for an interrupt with the given priority group,\r
+    preemptive priority value, and subpriority value.\r
+    In case of a conflict between priority grouping and available\r
+    priority bits (__NVIC_PRIO_BITS), the samllest possible priority group is set.\r
+\r
+    \param [in]     PriorityGroup  Used priority group.\r
+    \param [in]   PreemptPriority  Preemptive priority value (starting from 0).\r
+    \param [in]       SubPriority  Subpriority value (starting from 0).\r
+    \return                        Encoded priority. Value can be used in the function \ref NVIC_SetPriority().\r
+ */\r
+__STATIC_INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority)\r
+{\r
+  uint32_t PriorityGroupTmp = (PriorityGroup & 0x07);          /* only values 0..7 are used          */\r
+  uint32_t PreemptPriorityBits;\r
+  uint32_t SubPriorityBits;\r
+\r
+  PreemptPriorityBits = ((7 - PriorityGroupTmp) > __NVIC_PRIO_BITS) ? __NVIC_PRIO_BITS : 7 - PriorityGroupTmp;\r
+  SubPriorityBits     = ((PriorityGroupTmp + __NVIC_PRIO_BITS) < 7) ? 0 : PriorityGroupTmp - 7 + __NVIC_PRIO_BITS;\r
+\r
+  return (\r
+           ((PreemptPriority & ((1 << (PreemptPriorityBits)) - 1)) << SubPriorityBits) |\r
+           ((SubPriority     & ((1 << (SubPriorityBits    )) - 1)))\r
+         );\r
+}\r
+\r
+\r
+/** \brief  Decode Priority\r
+\r
+    The function decodes an interrupt priority value with a given priority group to\r
+    preemptive priority value and subpriority value.\r
+    In case of a conflict between priority grouping and available\r
+    priority bits (__NVIC_PRIO_BITS) the samllest possible priority group is set.\r
+\r
+    \param [in]         Priority   Priority value, which can be retrieved with the function \ref NVIC_GetPriority().\r
+    \param [in]     PriorityGroup  Used priority group.\r
+    \param [out] pPreemptPriority  Preemptive priority value (starting from 0).\r
+    \param [out]     pSubPriority  Subpriority value (starting from 0).\r
+ */\r
+__STATIC_INLINE void NVIC_DecodePriority (uint32_t Priority, uint32_t PriorityGroup, uint32_t* pPreemptPriority, uint32_t* pSubPriority)\r
+{\r
+  uint32_t PriorityGroupTmp = (PriorityGroup & 0x07);          /* only values 0..7 are used          */\r
+  uint32_t PreemptPriorityBits;\r
+  uint32_t SubPriorityBits;\r
+\r
+  PreemptPriorityBits = ((7 - PriorityGroupTmp) > __NVIC_PRIO_BITS) ? __NVIC_PRIO_BITS : 7 - PriorityGroupTmp;\r
+  SubPriorityBits     = ((PriorityGroupTmp + __NVIC_PRIO_BITS) < 7) ? 0 : PriorityGroupTmp - 7 + __NVIC_PRIO_BITS;\r
+\r
+  *pPreemptPriority = (Priority >> SubPriorityBits) & ((1 << (PreemptPriorityBits)) - 1);\r
+  *pSubPriority     = (Priority                   ) & ((1 << (SubPriorityBits    )) - 1);\r
+}\r
+\r
+\r
+/** \brief  System Reset\r
+\r
+    The function initiates a system reset request to reset the MCU.\r
+ */\r
+__STATIC_INLINE void NVIC_SystemReset(void)\r
+{\r
+  __DSB();                                                     /* Ensure all outstanding memory accesses included\r
+                                                                  buffered write are completed before reset */\r
+  SCB->AIRCR  = ((0x5FA << SCB_AIRCR_VECTKEY_Pos)      |\r
+                 (SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) |\r
+                 SCB_AIRCR_SYSRESETREQ_Msk);                   /* Keep priority group unchanged */\r
+  __DSB();                                                     /* Ensure completion of memory access */\r
+  while(1);                                                    /* wait until reset */\r
+}\r
+\r
+/*@} end of CMSIS_Core_NVICFunctions */\r
+\r
+\r
+\r
+/* ##################################    SysTick function  ############################################ */\r
+/** \ingroup  CMSIS_Core_FunctionInterface\r
+    \defgroup CMSIS_Core_SysTickFunctions SysTick Functions\r
+    \brief      Functions that configure the System.\r
+  @{\r
+ */\r
+\r
+#if (__Vendor_SysTickConfig == 0)\r
+\r
+/** \brief  System Tick Configuration\r
+\r
+    The function initializes the System Timer and its interrupt, and starts the System Tick Timer.\r
+    Counter is in free running mode to generate periodic interrupts.   \r
+\r
+    \param [in]  ticks  Number of ticks between two interrupts.\r
+    \r
+    \return          0  Function succeeded.\r
+    \return          1  Function failed.\r
+    \r
+    \note     When the variable <b>__Vendor_SysTickConfig</b> is set to 1, then the \r
+    function <b>SysTick_Config</b> is not included. In this case, the file <b><i>device</i>.h</b> \r
+    must contain a vendor-specific implementation of this function.\r
+\r
+ */\r
+__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks)\r
+{\r
+  if (ticks > SysTick_LOAD_RELOAD_Msk)  return (1);            /* Reload value impossible */\r
+\r
+  SysTick->LOAD  = (ticks & SysTick_LOAD_RELOAD_Msk) - 1;      /* set reload register */\r
+  NVIC_SetPriority (SysTick_IRQn, (1<<__NVIC_PRIO_BITS) - 1);  /* set Priority for Systick Interrupt */\r
+  SysTick->VAL   = 0;                                          /* Load the SysTick Counter Value */\r
+  SysTick->CTRL  = SysTick_CTRL_CLKSOURCE_Msk |\r
+                   SysTick_CTRL_TICKINT_Msk   |\r
+                   SysTick_CTRL_ENABLE_Msk;                    /* Enable SysTick IRQ and SysTick Timer */\r
+  return (0);                                                  /* Function successful */\r
+}\r
+\r
+#endif\r
+\r
+/*@} end of CMSIS_Core_SysTickFunctions */\r
+\r
+\r
+\r
+/* ##################################### Debug In/Output function ########################################### */\r
+/** \ingroup  CMSIS_Core_FunctionInterface\r
+    \defgroup CMSIS_core_DebugFunctions ITM Functions\r
+    \brief   Functions that access the ITM debug interface.\r
+  @{\r
+ */\r
+\r
+extern volatile int32_t ITM_RxBuffer;                    /*!< External variable to receive characters.                         */\r
+#define                 ITM_RXBUFFER_EMPTY    0x5AA55AA5 /*!< Value identifying \ref ITM_RxBuffer is ready for next character. */\r
+\r
+\r
+/** \brief  ITM Send Character\r
+\r
+    The function transmits a character via the ITM channel 0, and\r
+    \li Just returns when no debugger is connected that has booked the output.\r
+    \li Is blocking when a debugger is connected, but the previous character sent has not been transmitted.\r
+\r
+    \param [in]     ch  Character to transmit.\r
+    \r
+    \returns            Character to transmit.\r
+ */\r
+__STATIC_INLINE uint32_t ITM_SendChar (uint32_t ch)\r
+{\r
+  if ((ITM->TCR & ITM_TCR_ITMENA_Msk)                  &&      /* ITM enabled */\r
+      (ITM->TER & (1UL << 0)        )                    )     /* ITM Port #0 enabled */\r
+  {\r
+    while (ITM->PORT[0].u32 == 0);\r
+    ITM->PORT[0].u8 = (uint8_t) ch;\r
+  }\r
+  return (ch);\r
+}\r
+\r
+\r
+/** \brief  ITM Receive Character\r
+\r
+    The function inputs a character via the external variable \ref ITM_RxBuffer.\r
+\r
+    \return             Received character.\r
+    \return         -1  No character pending.\r
+ */\r
+__STATIC_INLINE int32_t ITM_ReceiveChar (void) {\r
+  int32_t ch = -1;                           /* no character available */\r
+\r
+  if (ITM_RxBuffer != ITM_RXBUFFER_EMPTY) {\r
+    ch = ITM_RxBuffer;\r
+    ITM_RxBuffer = ITM_RXBUFFER_EMPTY;       /* ready for next character */\r
+  }\r
+\r
+  return (ch);\r
+}\r
+\r
+\r
+/** \brief  ITM Check Character\r
+\r
+    The function checks whether a character is pending for reading in the variable \ref ITM_RxBuffer.\r
+\r
+    \return          0  No character available.\r
+    \return          1  Character available.\r
+ */\r
+__STATIC_INLINE int32_t ITM_CheckChar (void) {\r
+\r
+  if (ITM_RxBuffer == ITM_RXBUFFER_EMPTY) {\r
+    return (0);                                 /* no character available */\r
+  } else {\r
+    return (1);                                 /*    character available */\r
+  }\r
+}\r
+\r
+/*@} end of CMSIS_core_DebugFunctions */\r
+\r
+#endif /* __CORE_CM4_H_DEPENDANT */\r
+\r
+#endif /* __CMSIS_GENERIC */\r
+\r
+#ifdef __cplusplus\r
+}\r
+#endif\r
diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/asf/thirdparty/CMSIS/Include/core_cm4_simd.h b/FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/asf/thirdparty/CMSIS/Include/core_cm4_simd.h
new file mode 100644 (file)
index 0000000..34b395a
--- /dev/null
@@ -0,0 +1,649 @@
+/**************************************************************************//**\r
+ * @file     core_cm4_simd.h\r
+ * @brief    CMSIS Cortex-M4 SIMD Header File\r
+ * @version  V3.00\r
+ * @date     19. January 2012\r
+ *\r
+ * @note\r
+ * Copyright (C) 2010-2012 ARM Limited. All rights reserved.\r
+ *\r
+ * @par\r
+ * ARM Limited (ARM) is supplying this software for use with Cortex-M \r
+ * processor based microcontrollers.  This file can be freely distributed \r
+ * within development tools that are supporting such ARM based processors. \r
+ *\r
+ * @par\r
+ * THIS SOFTWARE IS PROVIDED "AS IS".  NO WARRANTIES, WHETHER EXPRESS, IMPLIED\r
+ * OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF\r
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE.\r
+ * ARM SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR\r
+ * CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER.\r
+ *\r
+ ******************************************************************************/\r
+\r
+#ifdef __cplusplus\r
+ extern "C" {\r
+#endif \r
+\r
+#ifndef __CORE_CM4_SIMD_H\r
+#define __CORE_CM4_SIMD_H\r
+\r
+\r
+/*******************************************************************************\r
+ *                Hardware Abstraction Layer\r
+ ******************************************************************************/\r
+\r
+\r
+/* ###################  Compiler specific Intrinsics  ########################### */\r
+/** \defgroup CMSIS_SIMD_intrinsics CMSIS SIMD Intrinsics\r
+  Access to dedicated SIMD instructions\r
+  @{\r
+*/\r
+\r
+#if   defined ( __CC_ARM ) /*------------------RealView Compiler -----------------*/\r
+/* ARM armcc specific functions */\r
+\r
+/*------ CM4 SIMD Intrinsics -----------------------------------------------------*/\r
+#define __SADD8                           __sadd8\r
+#define __QADD8                           __qadd8\r
+#define __SHADD8                          __shadd8\r
+#define __UADD8                           __uadd8\r
+#define __UQADD8                          __uqadd8\r
+#define __UHADD8                          __uhadd8\r
+#define __SSUB8                           __ssub8\r
+#define __QSUB8                           __qsub8\r
+#define __SHSUB8                          __shsub8\r
+#define __USUB8                           __usub8\r
+#define __UQSUB8                          __uqsub8\r
+#define __UHSUB8                          __uhsub8\r
+#define __SADD16                          __sadd16\r
+#define __QADD16                          __qadd16\r
+#define __SHADD16                         __shadd16\r
+#define __UADD16                          __uadd16\r
+#define __UQADD16                         __uqadd16\r
+#define __UHADD16                         __uhadd16\r
+#define __SSUB16                          __ssub16\r
+#define __QSUB16                          __qsub16\r
+#define __SHSUB16                         __shsub16\r
+#define __USUB16                          __usub16\r
+#define __UQSUB16                         __uqsub16\r
+#define __UHSUB16                         __uhsub16\r
+#define __SASX                            __sasx\r
+#define __QASX                            __qasx\r
+#define __SHASX                           __shasx\r
+#define __UASX                            __uasx\r
+#define __UQASX                           __uqasx\r
+#define __UHASX                           __uhasx\r
+#define __SSAX                            __ssax\r
+#define __QSAX                            __qsax\r
+#define __SHSAX                           __shsax\r
+#define __USAX                            __usax\r
+#define __UQSAX                           __uqsax\r
+#define __UHSAX                           __uhsax\r
+#define __USAD8                           __usad8\r
+#define __USADA8                          __usada8\r
+#define __SSAT16                          __ssat16\r
+#define __USAT16                          __usat16\r
+#define __UXTB16                          __uxtb16\r
+#define __UXTAB16                         __uxtab16\r
+#define __SXTB16                          __sxtb16\r
+#define __SXTAB16                         __sxtab16\r
+#define __SMUAD                           __smuad\r
+#define __SMUADX                          __smuadx\r
+#define __SMLAD                           __smlad\r
+#define __SMLADX                          __smladx\r
+#define __SMLALD                          __smlald\r
+#define __SMLALDX                         __smlaldx\r
+#define __SMUSD                           __smusd\r
+#define __SMUSDX                          __smusdx\r
+#define __SMLSD                           __smlsd\r
+#define __SMLSDX                          __smlsdx\r
+#define __SMLSLD                          __smlsld\r
+#define __SMLSLDX                         __smlsldx\r
+#define __SEL                             __sel\r
+#define __QADD                            __qadd\r
+#define __QSUB                            __qsub\r
+\r
+#define __PKHBT(ARG1,ARG2,ARG3)          ( ((((uint32_t)(ARG1))          ) & 0x0000FFFFUL) |  \\r
+                                           ((((uint32_t)(ARG2)) << (ARG3)) & 0xFFFF0000UL)  )\r
+\r
+#define __PKHTB(ARG1,ARG2,ARG3)          ( ((((uint32_t)(ARG1))          ) & 0xFFFF0000UL) |  \\r
+                                           ((((uint32_t)(ARG2)) >> (ARG3)) & 0x0000FFFFUL)  )\r
+\r
+\r
+/*-- End CM4 SIMD Intrinsics -----------------------------------------------------*/\r
+\r
+\r
+\r
+#elif defined ( __ICCARM__ ) /*------------------ ICC Compiler -------------------*/\r
+/* IAR iccarm specific functions */\r
+\r
+/*------ CM4 SIMD Intrinsics -----------------------------------------------------*/\r
+#include <cmsis_iar.h>\r
+\r
+/*-- End CM4 SIMD Intrinsics -----------------------------------------------------*/\r
+\r
+\r
+\r
+#elif defined ( __TMS470__ ) /*---------------- TI CCS Compiler ------------------*/\r
+/* TI CCS specific functions */\r
+\r
+/*------ CM4 SIMD Intrinsics -----------------------------------------------------*/\r
+#include <cmsis_ccs.h>\r
+\r
+/*-- End CM4 SIMD Intrinsics -----------------------------------------------------*/\r
+\r
+\r
+\r
+#elif defined ( __GNUC__ ) /*------------------ GNU Compiler ---------------------*/\r
+/* GNU gcc specific functions */\r
+\r
+/*------ CM4 SIMD Intrinsics -----------------------------------------------------*/\r
+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SADD8(uint32_t op1, uint32_t op2)\r
+{\r
+  uint32_t result;\r
+  \r
+  __ASM volatile ("sadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );\r
+  return(result);\r
+}\r
+\r
+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __QADD8(uint32_t op1, uint32_t op2)\r
+{\r
+  uint32_t result;\r
+  \r
+  __ASM volatile ("qadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );\r
+  return(result);\r
+}\r
+\r
+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SHADD8(uint32_t op1, uint32_t op2)\r
+{\r
+  uint32_t result;\r
+  \r
+  __ASM volatile ("shadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );\r
+  return(result);\r
+}\r
+\r
+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UADD8(uint32_t op1, uint32_t op2)\r
+{\r
+  uint32_t result;\r
+  \r
+  __ASM volatile ("uadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );\r
+  return(result);\r
+}\r
+\r
+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UQADD8(uint32_t op1, uint32_t op2)\r
+{\r
+  uint32_t result;\r
+  \r
+  __ASM volatile ("uqadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );\r
+  return(result);\r
+}\r
+\r
+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UHADD8(uint32_t op1, uint32_t op2)\r
+{\r
+  uint32_t result;\r
+  \r
+  __ASM volatile ("uhadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );\r
+  return(result);\r
+}\r
+\r
+\r
+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SSUB8(uint32_t op1, uint32_t op2)\r
+{\r
+  uint32_t result;\r
+  \r
+  __ASM volatile ("ssub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );\r
+  return(result);\r
+}\r
+\r
+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __QSUB8(uint32_t op1, uint32_t op2)\r
+{\r
+  uint32_t result;\r
+  \r
+  __ASM volatile ("qsub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );\r
+  return(result);\r
+}\r
+\r
+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SHSUB8(uint32_t op1, uint32_t op2)\r
+{\r
+  uint32_t result;\r
+  \r
+  __ASM volatile ("shsub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );\r
+  return(result);\r
+}\r
+\r
+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __USUB8(uint32_t op1, uint32_t op2)\r
+{\r
+  uint32_t result;\r
+  \r
+  __ASM volatile ("usub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );\r
+  return(result);\r
+}\r
+\r
+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UQSUB8(uint32_t op1, uint32_t op2)\r
+{\r
+  uint32_t result;\r
+  \r
+  __ASM volatile ("uqsub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );\r
+  return(result);\r
+}\r
+\r
+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UHSUB8(uint32_t op1, uint32_t op2)\r
+{\r
+  uint32_t result;\r
+  \r
+  __ASM volatile ("uhsub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );\r
+  return(result);\r
+}\r
+\r
+\r
+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SADD16(uint32_t op1, uint32_t op2)\r
+{\r
+  uint32_t result;\r
+  \r
+  __ASM volatile ("sadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );\r
+  return(result);\r
+}\r
+\r
+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __QADD16(uint32_t op1, uint32_t op2)\r
+{\r
+  uint32_t result;\r
+  \r
+  __ASM volatile ("qadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );\r
+  return(result);\r
+}\r
+\r
+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SHADD16(uint32_t op1, uint32_t op2)\r
+{\r
+  uint32_t result;\r
+  \r
+  __ASM volatile ("shadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );\r
+  return(result);\r
+}\r
+\r
+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UADD16(uint32_t op1, uint32_t op2)\r
+{\r
+  uint32_t result;\r
+  \r
+  __ASM volatile ("uadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );\r
+  return(result);\r
+}\r
+\r
+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UQADD16(uint32_t op1, uint32_t op2)\r
+{\r
+  uint32_t result;\r
+  \r
+  __ASM volatile ("uqadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );\r
+  return(result);\r
+}\r
+\r
+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UHADD16(uint32_t op1, uint32_t op2)\r
+{\r
+  uint32_t result;\r
+  \r
+  __ASM volatile ("uhadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );\r
+  return(result);\r
+}\r
+\r
+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SSUB16(uint32_t op1, uint32_t op2)\r
+{\r
+  uint32_t result;\r
+  \r
+  __ASM volatile ("ssub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );\r
+  return(result);\r
+}\r
+\r
+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __QSUB16(uint32_t op1, uint32_t op2)\r
+{\r
+  uint32_t result;\r
+  \r
+  __ASM volatile ("qsub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );\r
+  return(result);\r
+}\r
+\r
+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SHSUB16(uint32_t op1, uint32_t op2)\r
+{\r
+  uint32_t result;\r
+  \r
+  __ASM volatile ("shsub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );\r
+  return(result);\r
+}\r
+\r
+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __USUB16(uint32_t op1, uint32_t op2)\r
+{\r
+  uint32_t result;\r
+  \r
+  __ASM volatile ("usub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );\r
+  return(result);\r
+}\r
+\r
+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UQSUB16(uint32_t op1, uint32_t op2)\r
+{\r
+  uint32_t result;\r
+  \r
+  __ASM volatile ("uqsub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );\r
+  return(result);\r
+}\r
+\r
+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UHSUB16(uint32_t op1, uint32_t op2)\r
+{\r
+  uint32_t result;\r
+  \r
+  __ASM volatile ("uhsub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );\r
+  return(result);\r
+}\r
+\r
+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SASX(uint32_t op1, uint32_t op2)\r
+{\r
+  uint32_t result;\r
+  \r
+  __ASM volatile ("sasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );\r
+  return(result);\r
+}\r
+\r
+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __QASX(uint32_t op1, uint32_t op2)\r
+{\r
+  uint32_t result;\r
+  \r
+  __ASM volatile ("qasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );\r
+  return(result);\r
+}\r
+\r
+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SHASX(uint32_t op1, uint32_t op2)\r
+{\r
+  uint32_t result;\r
+  \r
+  __ASM volatile ("shasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );\r
+  return(result);\r
+}\r
+\r
+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UASX(uint32_t op1, uint32_t op2)\r
+{\r
+  uint32_t result;\r
+  \r
+  __ASM volatile ("uasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );\r
+  return(result);\r
+}\r
+\r
+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UQASX(uint32_t op1, uint32_t op2)\r
+{\r
+  uint32_t result;\r
+  \r
+  __ASM volatile ("uqasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );\r
+  return(result);\r
+}\r
+\r
+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UHASX(uint32_t op1, uint32_t op2)\r
+{\r
+  uint32_t result;\r
+  \r
+  __ASM volatile ("uhasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );\r
+  return(result);\r
+}\r
+\r
+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SSAX(uint32_t op1, uint32_t op2)\r
+{\r
+  uint32_t result;\r
+  \r
+  __ASM volatile ("ssax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );\r
+  return(result);\r
+}\r
+\r
+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __QSAX(uint32_t op1, uint32_t op2)\r
+{\r
+  uint32_t result;\r
+  \r
+  __ASM volatile ("qsax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );\r
+  return(result);\r
+}\r
+\r
+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SHSAX(uint32_t op1, uint32_t op2)\r
+{\r
+  uint32_t result;\r
+  \r
+  __ASM volatile ("shsax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );\r
+  return(result);\r
+}\r
+\r
+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __USAX(uint32_t op1, uint32_t op2)\r
+{\r
+  uint32_t result;\r
+  \r
+  __ASM volatile ("usax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );\r
+  return(result);\r
+}\r
+\r
+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UQSAX(uint32_t op1, uint32_t op2)\r
+{\r
+  uint32_t result;\r
+  \r
+  __ASM volatile ("uqsax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );\r
+  return(result);\r
+}\r
+\r
+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UHSAX(uint32_t op1, uint32_t op2)\r
+{\r
+  uint32_t result;\r
+  \r
+  __ASM volatile ("uhsax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );\r
+  return(result);\r
+}\r
+\r
+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __USAD8(uint32_t op1, uint32_t op2)\r
+{\r
+  uint32_t result;\r
+  \r
+  __ASM volatile ("usad8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );\r
+  return(result);\r
+}\r
+\r
+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __USADA8(uint32_t op1, uint32_t op2, uint32_t op3)\r
+{\r
+  uint32_t result;\r
+  \r
+  __ASM volatile ("usada8 %0, %1, %2, %3" : "=r" (result) : "r" (op1), "r" (op2), "r" (op3) );\r
+  return(result);\r
+}\r
+\r
+#define __SSAT16(ARG1,ARG2) \\r
+({                          \\r
+  uint32_t __RES, __ARG1 = (ARG1); \\r
+  __ASM ("ssat16 %0, %1, %2" : "=r" (__RES) :  "I" (ARG2), "r" (__ARG1) ); \\r
+  __RES; \\r
+ })\r
+  \r
+#define __USAT16(ARG1,ARG2) \\r
+({                          \\r
+  uint32_t __RES, __ARG1 = (ARG1); \\r
+  __ASM ("usat16 %0, %1, %2" : "=r" (__RES) :  "I" (ARG2), "r" (__ARG1) ); \\r
+  __RES; \\r
+ })\r
+\r
+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UXTB16(uint32_t op1)\r
+{\r
+  uint32_t result;\r
+  \r
+  __ASM volatile ("uxtb16 %0, %1" : "=r" (result) : "r" (op1));\r
+  return(result);\r
+}\r
+\r
+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UXTAB16(uint32_t op1, uint32_t op2)\r
+{\r
+  uint32_t result;\r
+  \r
+  __ASM volatile ("uxtab16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );\r
+  return(result);\r
+}\r
+\r
+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SXTB16(uint32_t op1)\r
+{\r
+  uint32_t result;\r
+  \r
+  __ASM volatile ("sxtb16 %0, %1" : "=r" (result) : "r" (op1));\r
+  return(result);\r
+}\r
+\r
+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SXTAB16(uint32_t op1, uint32_t op2)\r
+{\r
+  uint32_t result;\r
+  \r
+  __ASM volatile ("sxtab16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );\r
+  return(result);\r
+}\r
+\r
+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SMUAD  (uint32_t op1, uint32_t op2)\r
+{\r
+  uint32_t result;\r
+  \r
+  __ASM volatile ("smuad %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );\r
+  return(result);\r
+}\r
+\r
+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SMUADX (uint32_t op1, uint32_t op2)\r
+{\r
+  uint32_t result;\r
+  \r
+  __ASM volatile ("smuadx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );\r
+  return(result);\r
+}\r
+\r
+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SMLAD (uint32_t op1, uint32_t op2, uint32_t op3)\r
+{\r
+  uint32_t result;\r
+  \r
+  __ASM volatile ("smlad %0, %1, %2, %3" : "=r" (result) : "r" (op1), "r" (op2), "r" (op3) );\r
+  return(result);\r
+}\r
+\r
+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SMLADX (uint32_t op1, uint32_t op2, uint32_t op3)\r
+{\r
+  uint32_t result;\r
+  \r
+  __ASM volatile ("smladx %0, %1, %2, %3" : "=r" (result) : "r" (op1), "r" (op2), "r" (op3) );\r
+  return(result);\r
+}\r
+\r
+#define __SMLALD(ARG1,ARG2,ARG3) \\r
+({ \\r
+  uint32_t __ARG1 = (ARG1), __ARG2 = (ARG2), __ARG3_H = (uint32_t)((uint64_t)(ARG3) >> 32), __ARG3_L = (uint32_t)((uint64_t)(ARG3) & 0xFFFFFFFFUL); \\r
+  __ASM volatile ("smlald %0, %1, %2, %3" : "=r" (__ARG3_L), "=r" (__ARG3_H) : "r" (__ARG1), "r" (__ARG2), "0" (__ARG3_L), "1" (__ARG3_H) ); \\r
+  (uint64_t)(((uint64_t)__ARG3_H << 32) | __ARG3_L); \\r
+ })\r
+\r
+#define __SMLALDX(ARG1,ARG2,ARG3) \\r
+({ \\r
+  uint32_t __ARG1 = (ARG1), __ARG2 = (ARG2), __ARG3_H = (uint32_t)((uint64_t)(ARG3) >> 32), __ARG3_L = (uint32_t)((uint64_t)(ARG3) & 0xFFFFFFFFUL); \\r
+  __ASM volatile ("smlaldx %0, %1, %2, %3" : "=r" (__ARG3_L), "=r" (__ARG3_H) : "r" (__ARG1), "r" (__ARG2), "0" (__ARG3_L), "1" (__ARG3_H) ); \\r
+  (uint64_t)(((uint64_t)__ARG3_H << 32) | __ARG3_L); \\r
+ })\r
+\r
+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SMUSD  (uint32_t op1, uint32_t op2)\r
+{\r
+  uint32_t result;\r
+  \r
+  __ASM volatile ("smusd %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );\r
+  return(result);\r
+}\r
+\r
+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SMUSDX (uint32_t op1, uint32_t op2)\r
+{\r
+  uint32_t result;\r
+  \r
+  __ASM volatile ("smusdx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );\r
+  return(result);\r
+}\r
+\r
+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SMLSD (uint32_t op1, uint32_t op2, uint32_t op3)\r
+{\r
+  uint32_t result;\r
+  \r
+  __ASM volatile ("smlsd %0, %1, %2, %3" : "=r" (result) : "r" (op1), "r" (op2), "r" (op3) );\r
+  return(result);\r
+}\r
+\r
+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SMLSDX (uint32_t op1, uint32_t op2, uint32_t op3)\r
+{\r
+  uint32_t result;\r
+  \r
+  __ASM volatile ("smlsdx %0, %1, %2, %3" : "=r" (result) : "r" (op1), "r" (op2), "r" (op3) );\r
+  return(result);\r
+}\r
+\r
+#define __SMLSLD(ARG1,ARG2,ARG3) \\r
+({ \\r
+  uint32_t __ARG1 = (ARG1), __ARG2 = (ARG2), __ARG3_H = (uint32_t)((ARG3) >> 32), __ARG3_L = (uint32_t)((ARG3) & 0xFFFFFFFFUL); \\r
+  __ASM volatile ("smlsld %0, %1, %2, %3" : "=r" (__ARG3_L), "=r" (__ARG3_H) : "r" (__ARG1), "r" (__ARG2), "0" (__ARG3_L), "1" (__ARG3_H) ); \\r
+  (uint64_t)(((uint64_t)__ARG3_H << 32) | __ARG3_L); \\r
+ })\r
+\r
+#define __SMLSLDX(ARG1,ARG2,ARG3) \\r
+({ \\r
+  uint32_t __ARG1 = (ARG1), __ARG2 = (ARG2), __ARG3_H = (uint32_t)((ARG3) >> 32), __ARG3_L = (uint32_t)((ARG3) & 0xFFFFFFFFUL); \\r
+  __ASM volatile ("smlsldx %0, %1, %2, %3" : "=r" (__ARG3_L), "=r" (__ARG3_H) : "r" (__ARG1), "r" (__ARG2), "0" (__ARG3_L), "1" (__ARG3_H) ); \\r
+  (uint64_t)(((uint64_t)__ARG3_H << 32) | __ARG3_L); \\r
+ })\r
+\r
+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SEL  (uint32_t op1, uint32_t op2)\r
+{\r
+  uint32_t result;\r
+  \r
+  __ASM volatile ("sel %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );\r
+  return(result);\r
+}\r
+\r
+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __QADD(uint32_t op1, uint32_t op2)\r
+{\r
+  uint32_t result;\r
+\r
+  __ASM volatile ("qadd %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );\r
+  return(result);\r
+}\r
+\r
+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __QSUB(uint32_t op1, uint32_t op2)\r
+{\r
+  uint32_t result;\r
+  \r
+  __ASM volatile ("qsub %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );\r
+  return(result);\r
+}\r
+\r
+#define __PKHBT(ARG1,ARG2,ARG3) \\r
+({                          \\r
+  uint32_t __RES, __ARG1 = (ARG1), __ARG2 = (ARG2); \\r
+  __ASM ("pkhbt %0, %1, %2, lsl %3" : "=r" (__RES) :  "r" (__ARG1), "r" (__ARG2), "I" (ARG3)  ); \\r
+  __RES; \\r
+ })\r
+\r
+#define __PKHTB(ARG1,ARG2,ARG3) \\r
+({                          \\r
+  uint32_t __RES, __ARG1 = (ARG1), __ARG2 = (ARG2); \\r
+  if (ARG3 == 0) \\r
+    __ASM ("pkhtb %0, %1, %2" : "=r" (__RES) :  "r" (__ARG1), "r" (__ARG2)  ); \\r
+  else \\r
+    __ASM ("pkhtb %0, %1, %2, asr %3" : "=r" (__RES) :  "r" (__ARG1), "r" (__ARG2), "I" (ARG3)  ); \\r
+  __RES; \\r
+ })\r
+\r
+/*-- End CM4 SIMD Intrinsics -----------------------------------------------------*/\r
+\r
+\r
+\r
+#elif defined ( __TASKING__ ) /*------------------ TASKING Compiler --------------*/\r
+/* TASKING carm specific functions */\r
+\r
+\r
+/*------ CM4 SIMD Intrinsics -----------------------------------------------------*/\r
+/* not yet supported */\r
+/*-- End CM4 SIMD Intrinsics -----------------------------------------------------*/\r
+\r
+\r
+#endif\r
+\r
+/*@} end of group CMSIS_SIMD_intrinsics */\r
+\r
+\r
+#endif /* __CORE_CM4_SIMD_H */\r
+\r
+#ifdef __cplusplus\r
+}\r
+#endif\r
diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/asf/thirdparty/CMSIS/Include/core_cmFunc.h b/FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/asf/thirdparty/CMSIS/Include/core_cmFunc.h
new file mode 100644 (file)
index 0000000..1991ae3
--- /dev/null
@@ -0,0 +1,616 @@
+/**************************************************************************//**\r
+ * @file     core_cmFunc.h\r
+ * @brief    CMSIS Cortex-M Core Function Access Header File\r
+ * @version  V3.00\r
+ * @date     19. January 2012\r
+ *\r
+ * @note\r
+ * Copyright (C) 2009-2012 ARM Limited. All rights reserved.\r
+ *\r
+ * @par\r
+ * ARM Limited (ARM) is supplying this software for use with Cortex-M \r
+ * processor based microcontrollers.  This file can be freely distributed \r
+ * within development tools that are supporting such ARM based processors. \r
+ *\r
+ * @par\r
+ * THIS SOFTWARE IS PROVIDED "AS IS".  NO WARRANTIES, WHETHER EXPRESS, IMPLIED\r
+ * OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF\r
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE.\r
+ * ARM SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR\r
+ * CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER.\r
+ *\r
+ ******************************************************************************/\r
+\r
+#ifndef __CORE_CMFUNC_H\r
+#define __CORE_CMFUNC_H\r
+\r
+\r
+/* ###########################  Core Function Access  ########################### */\r
+/** \ingroup  CMSIS_Core_FunctionInterface   \r
+    \defgroup CMSIS_Core_RegAccFunctions CMSIS Core Register Access Functions\r
+  @{\r
+ */\r
+\r
+#if   defined ( __CC_ARM ) /*------------------RealView Compiler -----------------*/\r
+/* ARM armcc specific functions */\r
+\r
+#if (__ARMCC_VERSION < 400677)\r
+  #error "Please use ARM Compiler Toolchain V4.0.677 or later!"\r
+#endif\r
+\r
+/* intrinsic void __enable_irq();     */\r
+/* intrinsic void __disable_irq();    */\r
+\r
+/** \brief  Get Control Register\r
+\r
+    This function returns the content of the Control Register.\r
+\r
+    \return               Control Register value\r
+ */\r
+__STATIC_INLINE uint32_t __get_CONTROL(void)\r
+{\r
+  register uint32_t __regControl         __ASM("control");\r
+  return(__regControl);\r
+}\r
+\r
+\r
+/** \brief  Set Control Register\r
+\r
+    This function writes the given value to the Control Register.\r
+\r
+    \param [in]    control  Control Register value to set\r
+ */\r
+__STATIC_INLINE void __set_CONTROL(uint32_t control)\r
+{\r
+  register uint32_t __regControl         __ASM("control");\r
+  __regControl = control;\r
+}\r
+\r
+\r
+/** \brief  Get IPSR Register\r
+\r
+    This function returns the content of the IPSR Register.\r
+\r
+    \return               IPSR Register value\r
+ */\r
+__STATIC_INLINE uint32_t __get_IPSR(void)\r
+{\r
+  register uint32_t __regIPSR          __ASM("ipsr");\r
+  return(__regIPSR);\r
+}\r
+\r
+\r
+/** \brief  Get APSR Register\r
+\r
+    This function returns the content of the APSR Register.\r
+\r
+    \return               APSR Register value\r
+ */\r
+__STATIC_INLINE uint32_t __get_APSR(void)\r
+{\r
+  register uint32_t __regAPSR          __ASM("apsr");\r
+  return(__regAPSR);\r
+}\r
+\r
+\r
+/** \brief  Get xPSR Register\r
+\r
+    This function returns the content of the xPSR Register.\r
+\r
+    \return               xPSR Register value\r
+ */\r
+__STATIC_INLINE uint32_t __get_xPSR(void)\r
+{\r
+  register uint32_t __regXPSR          __ASM("xpsr");\r
+  return(__regXPSR);\r
+}\r
+\r
+\r
+/** \brief  Get Process Stack Pointer\r
+\r
+    This function returns the current value of the Process Stack Pointer (PSP).\r
+\r
+    \return               PSP Register value\r
+ */\r
+__STATIC_INLINE uint32_t __get_PSP(void)\r
+{\r
+  register uint32_t __regProcessStackPointer  __ASM("psp");\r
+  return(__regProcessStackPointer);\r
+}\r
+\r
+\r
+/** \brief  Set Process Stack Pointer\r
+\r
+    This function assigns the given value to the Process Stack Pointer (PSP).\r
+\r
+    \param [in]    topOfProcStack  Process Stack Pointer value to set\r
+ */\r
+__STATIC_INLINE void __set_PSP(uint32_t topOfProcStack)\r
+{\r
+  register uint32_t __regProcessStackPointer  __ASM("psp");\r
+  __regProcessStackPointer = topOfProcStack;\r
+}\r
+\r
+\r
+/** \brief  Get Main Stack Pointer\r
+\r
+    This function returns the current value of the Main Stack Pointer (MSP).\r
+\r
+    \return               MSP Register value\r
+ */\r
+__STATIC_INLINE uint32_t __get_MSP(void)\r
+{\r
+  register uint32_t __regMainStackPointer     __ASM("msp");\r
+  return(__regMainStackPointer);\r
+}\r
+\r
+\r
+/** \brief  Set Main Stack Pointer\r
+\r
+    This function assigns the given value to the Main Stack Pointer (MSP).\r
+\r
+    \param [in]    topOfMainStack  Main Stack Pointer value to set\r
+ */\r
+__STATIC_INLINE void __set_MSP(uint32_t topOfMainStack)\r
+{\r
+  register uint32_t __regMainStackPointer     __ASM("msp");\r
+  __regMainStackPointer = topOfMainStack;\r
+}\r
+\r
+\r
+/** \brief  Get Priority Mask\r
+\r
+    This function returns the current state of the priority mask bit from the Priority Mask Register.\r
+\r
+    \return               Priority Mask value\r
+ */\r
+__STATIC_INLINE uint32_t __get_PRIMASK(void)\r
+{\r
+  register uint32_t __regPriMask         __ASM("primask");\r
+  return(__regPriMask);\r
+}\r
+\r
+\r
+/** \brief  Set Priority Mask\r
+\r
+    This function assigns the given value to the Priority Mask Register.\r
+\r
+    \param [in]    priMask  Priority Mask\r
+ */\r
+__STATIC_INLINE void __set_PRIMASK(uint32_t priMask)\r
+{\r
+  register uint32_t __regPriMask         __ASM("primask");\r
+  __regPriMask = (priMask);\r
+}\r
\r
+\r
+#if       (__CORTEX_M >= 0x03)\r
+\r
+/** \brief  Enable FIQ\r
+\r
+    This function enables FIQ interrupts by clearing the F-bit in the CPSR.\r
+    Can only be executed in Privileged modes.\r
+ */\r
+#define __enable_fault_irq                __enable_fiq\r
+\r
+\r
+/** \brief  Disable FIQ\r
+\r
+    This function disables FIQ interrupts by setting the F-bit in the CPSR.\r
+    Can only be executed in Privileged modes.\r
+ */\r
+#define __disable_fault_irq               __disable_fiq\r
+\r
+\r
+/** \brief  Get Base Priority\r
+\r
+    This function returns the current value of the Base Priority register.\r
+\r
+    \return               Base Priority register value\r
+ */\r
+__STATIC_INLINE uint32_t  __get_BASEPRI(void)\r
+{\r
+  register uint32_t __regBasePri         __ASM("basepri");\r
+  return(__regBasePri);\r
+}\r
+\r
+\r
+/** \brief  Set Base Priority\r
+\r
+    This function assigns the given value to the Base Priority register.\r
+\r
+    \param [in]    basePri  Base Priority value to set\r
+ */\r
+__STATIC_INLINE void __set_BASEPRI(uint32_t basePri)\r
+{\r
+  register uint32_t __regBasePri         __ASM("basepri");\r
+  __regBasePri = (basePri & 0xff);\r
+}\r
\r
+\r
+/** \brief  Get Fault Mask\r
+\r
+    This function returns the current value of the Fault Mask register.\r
+\r
+    \return               Fault Mask register value\r
+ */\r
+__STATIC_INLINE uint32_t __get_FAULTMASK(void)\r
+{\r
+  register uint32_t __regFaultMask       __ASM("faultmask");\r
+  return(__regFaultMask);\r
+}\r
+\r
+\r
+/** \brief  Set Fault Mask\r
+\r
+    This function assigns the given value to the Fault Mask register.\r
+\r
+    \param [in]    faultMask  Fault Mask value to set\r
+ */\r
+__STATIC_INLINE void __set_FAULTMASK(uint32_t faultMask)\r
+{\r
+  register uint32_t __regFaultMask       __ASM("faultmask");\r
+  __regFaultMask = (faultMask & (uint32_t)1);\r
+}\r
+\r
+#endif /* (__CORTEX_M >= 0x03) */\r
+\r
+\r
+#if       (__CORTEX_M == 0x04)\r
+\r
+/** \brief  Get FPSCR\r
+\r
+    This function returns the current value of the Floating Point Status/Control register.\r
+\r
+    \return               Floating Point Status/Control register value\r
+ */\r
+__STATIC_INLINE uint32_t __get_FPSCR(void)\r
+{\r
+#if (__FPU_PRESENT == 1) && (__FPU_USED == 1)\r
+  register uint32_t __regfpscr         __ASM("fpscr");\r
+  return(__regfpscr);\r
+#else\r
+   return(0);\r
+#endif\r
+}\r
+\r
+\r
+/** \brief  Set FPSCR\r
+\r
+    This function assigns the given value to the Floating Point Status/Control register.\r
+\r
+    \param [in]    fpscr  Floating Point Status/Control value to set\r
+ */\r
+__STATIC_INLINE void __set_FPSCR(uint32_t fpscr)\r
+{\r
+#if (__FPU_PRESENT == 1) && (__FPU_USED == 1)\r
+  register uint32_t __regfpscr         __ASM("fpscr");\r
+  __regfpscr = (fpscr);\r
+#endif\r
+}\r
+\r
+#endif /* (__CORTEX_M == 0x04) */\r
+\r
+\r
+#elif defined ( __ICCARM__ ) /*------------------ ICC Compiler -------------------*/\r
+/* IAR iccarm specific functions */\r
+\r
+#include <cmsis_iar.h>\r
+\r
+\r
+#elif defined ( __TMS470__ ) /*---------------- TI CCS Compiler ------------------*/\r
+/* TI CCS specific functions */\r
+\r
+#include <cmsis_ccs.h>\r
+\r
+\r
+#elif defined ( __GNUC__ ) /*------------------ GNU Compiler ---------------------*/\r
+/* GNU gcc specific functions */\r
+\r
+/** \brief  Enable IRQ Interrupts\r
+\r
+  This function enables IRQ interrupts by clearing the I-bit in the CPSR.\r
+  Can only be executed in Privileged modes.\r
+ */\r
+__attribute__( ( always_inline ) ) __STATIC_INLINE void __enable_irq(void)\r
+{\r
+  __ASM volatile ("cpsie i");\r
+}\r
+\r
+\r
+/** \brief  Disable IRQ Interrupts\r
+\r
+  This function disables IRQ interrupts by setting the I-bit in the CPSR.\r
+  Can only be executed in Privileged modes.\r
+ */\r
+__attribute__( ( always_inline ) ) __STATIC_INLINE void __disable_irq(void)\r
+{\r
+  __ASM volatile ("cpsid i");\r
+}\r
+\r
+\r
+/** \brief  Get Control Register\r
+\r
+    This function returns the content of the Control Register.\r
+\r
+    \return               Control Register value\r
+ */\r
+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __get_CONTROL(void)\r
+{\r
+  uint32_t result;\r
+\r
+  __ASM volatile ("MRS %0, control" : "=r" (result) );\r
+  return(result);\r
+}\r
+\r
+\r
+/** \brief  Set Control Register\r
+\r
+    This function writes the given value to the Control Register.\r
+\r
+    \param [in]    control  Control Register value to set\r
+ */\r
+__attribute__( ( always_inline ) ) __STATIC_INLINE void __set_CONTROL(uint32_t control)\r
+{\r
+  __ASM volatile ("MSR control, %0" : : "r" (control) );\r
+}\r
+\r
+\r
+/** \brief  Get IPSR Register\r
+\r
+    This function returns the content of the IPSR Register.\r
+\r
+    \return               IPSR Register value\r
+ */\r
+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __get_IPSR(void)\r
+{\r
+  uint32_t result;\r
+\r
+  __ASM volatile ("MRS %0, ipsr" : "=r" (result) );\r
+  return(result);\r
+}\r
+\r
+\r
+/** \brief  Get APSR Register\r
+\r
+    This function returns the content of the APSR Register.\r
+\r
+    \return               APSR Register value\r
+ */\r
+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __get_APSR(void)\r
+{\r
+  uint32_t result;\r
+\r
+  __ASM volatile ("MRS %0, apsr" : "=r" (result) );\r
+  return(result);\r
+}\r
+\r
+\r
+/** \brief  Get xPSR Register\r
+\r
+    This function returns the content of the xPSR Register.\r
+\r
+    \return               xPSR Register value\r
+ */\r
+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __get_xPSR(void)\r
+{\r
+  uint32_t result;\r
+\r
+  __ASM volatile ("MRS %0, xpsr" : "=r" (result) );\r
+  return(result);\r
+}\r
+\r
+\r
+/** \brief  Get Process Stack Pointer\r
+\r
+    This function returns the current value of the Process Stack Pointer (PSP).\r
+\r
+    \return               PSP Register value\r
+ */\r
+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __get_PSP(void)\r
+{\r
+  register uint32_t result;\r
+\r
+  __ASM volatile ("MRS %0, psp\n"  : "=r" (result) );\r
+  return(result);\r
+}\r
\r
+\r
+/** \brief  Set Process Stack Pointer\r
+\r
+    This function assigns the given value to the Process Stack Pointer (PSP).\r
+\r
+    \param [in]    topOfProcStack  Process Stack Pointer value to set\r
+ */\r
+__attribute__( ( always_inline ) ) __STATIC_INLINE void __set_PSP(uint32_t topOfProcStack)\r
+{\r
+  __ASM volatile ("MSR psp, %0\n" : : "r" (topOfProcStack) );\r
+}\r
+\r
+\r
+/** \brief  Get Main Stack Pointer\r
+\r
+    This function returns the current value of the Main Stack Pointer (MSP).\r
+\r
+    \return               MSP Register value\r
+ */\r
+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __get_MSP(void)\r
+{\r
+  register uint32_t result;\r
+\r
+  __ASM volatile ("MRS %0, msp\n" : "=r" (result) );\r
+  return(result);\r
+}\r
\r
+\r
+/** \brief  Set Main Stack Pointer\r
+\r
+    This function assigns the given value to the Main Stack Pointer (MSP).\r
+\r
+    \param [in]    topOfMainStack  Main Stack Pointer value to set\r
+ */\r
+__attribute__( ( always_inline ) ) __STATIC_INLINE void __set_MSP(uint32_t topOfMainStack)\r
+{\r
+  __ASM volatile ("MSR msp, %0\n" : : "r" (topOfMainStack) );\r
+}\r
+\r
+\r
+/** \brief  Get Priority Mask\r
+\r
+    This function returns the current state of the priority mask bit from the Priority Mask Register.\r
+\r
+    \return               Priority Mask value\r
+ */\r
+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __get_PRIMASK(void)\r
+{\r
+  uint32_t result;\r
+\r
+  __ASM volatile ("MRS %0, primask" : "=r" (result) );\r
+  return(result);\r
+}\r
+\r
+\r
+/** \brief  Set Priority Mask\r
+\r
+    This function assigns the given value to the Priority Mask Register.\r
+\r
+    \param [in]    priMask  Priority Mask\r
+ */\r
+__attribute__( ( always_inline ) ) __STATIC_INLINE void __set_PRIMASK(uint32_t priMask)\r
+{\r
+  __ASM volatile ("MSR primask, %0" : : "r" (priMask) );\r
+}\r
\r
+\r
+#if       (__CORTEX_M >= 0x03)\r
+\r
+/** \brief  Enable FIQ\r
+\r
+    This function enables FIQ interrupts by clearing the F-bit in the CPSR.\r
+    Can only be executed in Privileged modes.\r
+ */\r
+__attribute__( ( always_inline ) ) __STATIC_INLINE void __enable_fault_irq(void)\r
+{\r
+  __ASM volatile ("cpsie f");\r
+}\r
+\r
+\r
+/** \brief  Disable FIQ\r
+\r
+    This function disables FIQ interrupts by setting the F-bit in the CPSR.\r
+    Can only be executed in Privileged modes.\r
+ */\r
+__attribute__( ( always_inline ) ) __STATIC_INLINE void __disable_fault_irq(void)\r
+{\r
+  __ASM volatile ("cpsid f");\r
+}\r
+\r
+\r
+/** \brief  Get Base Priority\r
+\r
+    This function returns the current value of the Base Priority register.\r
+\r
+    \return               Base Priority register value\r
+ */\r
+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __get_BASEPRI(void)\r
+{\r
+  uint32_t result;\r
+  \r
+  __ASM volatile ("MRS %0, basepri_max" : "=r" (result) );\r
+  return(result);\r
+}\r
+\r
+\r
+/** \brief  Set Base Priority\r
+\r
+    This function assigns the given value to the Base Priority register.\r
+\r
+    \param [in]    basePri  Base Priority value to set\r
+ */\r
+__attribute__( ( always_inline ) ) __STATIC_INLINE void __set_BASEPRI(uint32_t value)\r
+{\r
+  __ASM volatile ("MSR basepri, %0" : : "r" (value) );\r
+}\r
+\r
+\r
+/** \brief  Get Fault Mask\r
+\r
+    This function returns the current value of the Fault Mask register.\r
+\r
+    \return               Fault Mask register value\r
+ */\r
+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __get_FAULTMASK(void)\r
+{\r
+  uint32_t result;\r
+  \r
+  __ASM volatile ("MRS %0, faultmask" : "=r" (result) );\r
+  return(result);\r
+}\r
+\r
+\r
+/** \brief  Set Fault Mask\r
+\r
+    This function assigns the given value to the Fault Mask register.\r
+\r
+    \param [in]    faultMask  Fault Mask value to set\r
+ */\r
+__attribute__( ( always_inline ) ) __STATIC_INLINE void __set_FAULTMASK(uint32_t faultMask)\r
+{\r
+  __ASM volatile ("MSR faultmask, %0" : : "r" (faultMask) );\r
+}\r
+\r
+#endif /* (__CORTEX_M >= 0x03) */\r
+\r
+\r
+#if       (__CORTEX_M == 0x04)\r
+\r
+/** \brief  Get FPSCR\r
+\r
+    This function returns the current value of the Floating Point Status/Control register.\r
+\r
+    \return               Floating Point Status/Control register value\r
+ */\r
+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __get_FPSCR(void)\r
+{\r
+#if (__FPU_PRESENT == 1) && (__FPU_USED == 1)\r
+  uint32_t result;\r
+\r
+  __ASM volatile ("VMRS %0, fpscr" : "=r" (result) );\r
+  return(result);\r
+#else\r
+   return(0);\r
+#endif\r
+}\r
+\r
+\r
+/** \brief  Set FPSCR\r
+\r
+    This function assigns the given value to the Floating Point Status/Control register.\r
+\r
+    \param [in]    fpscr  Floating Point Status/Control value to set\r
+ */\r
+__attribute__( ( always_inline ) ) __STATIC_INLINE void __set_FPSCR(uint32_t fpscr)\r
+{\r
+#if (__FPU_PRESENT == 1) && (__FPU_USED == 1)\r
+  __ASM volatile ("VMSR fpscr, %0" : : "r" (fpscr) );\r
+#endif\r
+}\r
+\r
+#endif /* (__CORTEX_M == 0x04) */\r
+\r
+\r
+#elif defined ( __TASKING__ ) /*------------------ TASKING Compiler --------------*/\r
+/* TASKING carm specific functions */\r
+\r
+/*\r
+ * The CMSIS functions have been implemented as intrinsics in the compiler.\r
+ * Please use "carm -?i" to get an up to date list of all instrinsics,\r
+ * Including the CMSIS ones.\r
+ */\r
+\r
+#endif\r
+\r
+/*@} end of CMSIS_Core_RegAccFunctions */\r
+\r
+\r
+#endif /* __CORE_CMFUNC_H */\r
diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/asf/thirdparty/CMSIS/Include/core_cmInstr.h b/FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/asf/thirdparty/CMSIS/Include/core_cmInstr.h
new file mode 100644 (file)
index 0000000..7981634
--- /dev/null
@@ -0,0 +1,618 @@
+/**************************************************************************//**\r
+ * @file     core_cmInstr.h\r
+ * @brief    CMSIS Cortex-M Core Instruction Access Header File\r
+ * @version  V3.00\r
+ * @date     07. February 2012\r
+ *\r
+ * @note\r
+ * Copyright (C) 2009-2012 ARM Limited. All rights reserved.\r
+ *\r
+ * @par\r
+ * ARM Limited (ARM) is supplying this software for use with Cortex-M\r
+ * processor based microcontrollers.  This file can be freely distributed\r
+ * within development tools that are supporting such ARM based processors.\r
+ *\r
+ * @par\r
+ * THIS SOFTWARE IS PROVIDED "AS IS".  NO WARRANTIES, WHETHER EXPRESS, IMPLIED\r
+ * OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF\r
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE.\r
+ * ARM SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR\r
+ * CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER.\r
+ *\r
+ ******************************************************************************/\r
+\r
+#ifndef __CORE_CMINSTR_H\r
+#define __CORE_CMINSTR_H\r
+\r
+\r
+/* ##########################  Core Instruction Access  ######################### */\r
+/** \defgroup CMSIS_Core_InstructionInterface CMSIS Core Instruction Interface\r
+  Access to dedicated instructions\r
+  @{\r
+*/\r
+\r
+#if   defined ( __CC_ARM ) /*------------------RealView Compiler -----------------*/\r
+/* ARM armcc specific functions */\r
+\r
+#if (__ARMCC_VERSION < 400677)\r
+  #error "Please use ARM Compiler Toolchain V4.0.677 or later!"\r
+#endif\r
+\r
+\r
+/** \brief  No Operation\r
+\r
+    No Operation does nothing. This instruction can be used for code alignment purposes.\r
+ */\r
+#define __NOP                             __nop\r
+\r
+\r
+/** \brief  Wait For Interrupt\r
+\r
+    Wait For Interrupt is a hint instruction that suspends execution\r
+    until one of a number of events occurs.\r
+ */\r
+#define __WFI                             __wfi\r
+\r
+\r
+/** \brief  Wait For Event\r
+\r
+    Wait For Event is a hint instruction that permits the processor to enter\r
+    a low-power state until one of a number of events occurs.\r
+ */\r
+#define __WFE                             __wfe\r
+\r
+\r
+/** \brief  Send Event\r
+\r
+    Send Event is a hint instruction. It causes an event to be signaled to the CPU.\r
+ */\r
+#define __SEV                             __sev\r
+\r
+\r
+/** \brief  Instruction Synchronization Barrier\r
+\r
+    Instruction Synchronization Barrier flushes the pipeline in the processor,\r
+    so that all instructions following the ISB are fetched from cache or\r
+    memory, after the instruction has been completed.\r
+ */\r
+#define __ISB()                           __isb(0xF)\r
+\r
+\r
+/** \brief  Data Synchronization Barrier\r
+\r
+    This function acts as a special kind of Data Memory Barrier.\r
+    It completes when all explicit memory accesses before this instruction complete.\r
+ */\r
+#define __DSB()                           __dsb(0xF)\r
+\r
+\r
+/** \brief  Data Memory Barrier\r
+\r
+    This function ensures the apparent order of the explicit memory operations before\r
+    and after the instruction, without ensuring their completion.\r
+ */\r
+#define __DMB()                           __dmb(0xF)\r
+\r
+\r
+/** \brief  Reverse byte order (32 bit)\r
+\r
+    This function reverses the byte order in integer value.\r
+\r
+    \param [in]    value  Value to reverse\r
+    \return               Reversed value\r
+ */\r
+#define __REV                             __rev\r
+\r
+\r
+/** \brief  Reverse byte order (16 bit)\r
+\r
+    This function reverses the byte order in two unsigned short values.\r
+\r
+    \param [in]    value  Value to reverse\r
+    \return               Reversed value\r
+ */\r
+__attribute__((section(".rev16_text"))) __STATIC_INLINE __ASM uint32_t __REV16(uint32_t value)\r
+{\r
+  rev16 r0, r0\r
+  bx lr\r
+}\r
+\r
+\r
+/** \brief  Reverse byte order in signed short value\r
+\r
+    This function reverses the byte order in a signed short value with sign extension to integer.\r
+\r
+    \param [in]    value  Value to reverse\r
+    \return               Reversed value\r
+ */\r
+__attribute__((section(".revsh_text"))) __STATIC_INLINE __ASM int32_t __REVSH(int32_t value)\r
+{\r
+  revsh r0, r0\r
+  bx lr\r
+}\r
+\r
+\r
+/** \brief  Rotate Right in unsigned value (32 bit)\r
+\r
+    This function Rotate Right (immediate) provides the value of the contents of a register rotated by a variable number of bits.\r
+\r
+    \param [in]    value  Value to rotate\r
+    \param [in]    value  Number of Bits to rotate\r
+    \return               Rotated value\r
+ */\r
+#define __ROR                             __ror\r
+\r
+\r
+#if       (__CORTEX_M >= 0x03)\r
+\r
+/** \brief  Reverse bit order of value\r
+\r
+    This function reverses the bit order of the given value.\r
+\r
+    \param [in]    value  Value to reverse\r
+    \return               Reversed value\r
+ */\r
+#define __RBIT                            __rbit\r
+\r
+\r
+/** \brief  LDR Exclusive (8 bit)\r
+\r
+    This function performs a exclusive LDR command for 8 bit value.\r
+\r
+    \param [in]    ptr  Pointer to data\r
+    \return             value of type uint8_t at (*ptr)\r
+ */\r
+#define __LDREXB(ptr)                     ((uint8_t ) __ldrex(ptr))\r
+\r
+\r
+/** \brief  LDR Exclusive (16 bit)\r
+\r
+    This function performs a exclusive LDR command for 16 bit values.\r
+\r
+    \param [in]    ptr  Pointer to data\r
+    \return        value of type uint16_t at (*ptr)\r
+ */\r
+#define __LDREXH(ptr)                     ((uint16_t) __ldrex(ptr))\r
+\r
+\r
+/** \brief  LDR Exclusive (32 bit)\r
+\r
+    This function performs a exclusive LDR command for 32 bit values.\r
+\r
+    \param [in]    ptr  Pointer to data\r
+    \return        value of type uint32_t at (*ptr)\r
+ */\r
+#define __LDREXW(ptr)                     ((uint32_t ) __ldrex(ptr))\r
+\r
+\r
+/** \brief  STR Exclusive (8 bit)\r
+\r
+    This function performs a exclusive STR command for 8 bit values.\r
+\r
+    \param [in]  value  Value to store\r
+    \param [in]    ptr  Pointer to location\r
+    \return          0  Function succeeded\r
+    \return          1  Function failed\r
+ */\r
+#define __STREXB(value, ptr)              __strex(value, ptr)\r
+\r
+\r
+/** \brief  STR Exclusive (16 bit)\r
+\r
+    This function performs a exclusive STR command for 16 bit values.\r
+\r
+    \param [in]  value  Value to store\r
+    \param [in]    ptr  Pointer to location\r
+    \return          0  Function succeeded\r
+    \return          1  Function failed\r
+ */\r
+#define __STREXH(value, ptr)              __strex(value, ptr)\r
+\r
+\r
+/** \brief  STR Exclusive (32 bit)\r
+\r
+    This function performs a exclusive STR command for 32 bit values.\r
+\r
+    \param [in]  value  Value to store\r
+    \param [in]    ptr  Pointer to location\r
+    \return          0  Function succeeded\r
+    \return          1  Function failed\r
+ */\r
+#define __STREXW(value, ptr)              __strex(value, ptr)\r
+\r
+\r
+/** \brief  Remove the exclusive lock\r
+\r
+    This function removes the exclusive lock which is created by LDREX.\r
+\r
+ */\r
+#define __CLREX                           __clrex\r
+\r
+\r
+/** \brief  Signed Saturate\r
+\r
+    This function saturates a signed value.\r
+\r
+    \param [in]  value  Value to be saturated\r
+    \param [in]    sat  Bit position to saturate to (1..32)\r
+    \return             Saturated value\r
+ */\r
+#define __SSAT                            __ssat\r
+\r
+\r
+/** \brief  Unsigned Saturate\r
+\r
+    This function saturates an unsigned value.\r
+\r
+    \param [in]  value  Value to be saturated\r
+    \param [in]    sat  Bit position to saturate to (0..31)\r
+    \return             Saturated value\r
+ */\r
+#define __USAT                            __usat\r
+\r
+\r
+/** \brief  Count leading zeros\r
+\r
+    This function counts the number of leading zeros of a data value.\r
+\r
+    \param [in]  value  Value to count the leading zeros\r
+    \return             number of leading zeros in value\r
+ */\r
+#define __CLZ                             __clz\r
+\r
+#endif /* (__CORTEX_M >= 0x03) */\r
+\r
+\r
+\r
+#elif defined ( __ICCARM__ ) /*------------------ ICC Compiler -------------------*/\r
+/* IAR iccarm specific functions */\r
+\r
+#include <cmsis_iar.h>\r
+\r
+\r
+#elif defined ( __TMS470__ ) /*---------------- TI CCS Compiler ------------------*/\r
+/* TI CCS specific functions */\r
+\r
+#include <cmsis_ccs.h>\r
+\r
+\r
+#elif defined ( __GNUC__ ) /*------------------ GNU Compiler ---------------------*/\r
+/* GNU gcc specific functions */\r
+\r
+/** \brief  No Operation\r
+\r
+    No Operation does nothing. This instruction can be used for code alignment purposes.\r
+ */\r
+__attribute__( ( always_inline ) ) __STATIC_INLINE void __NOP(void)\r
+{\r
+  __ASM volatile ("nop");\r
+}\r
+\r
+\r
+/** \brief  Wait For Interrupt\r
+\r
+    Wait For Interrupt is a hint instruction that suspends execution\r
+    until one of a number of events occurs.\r
+ */\r
+__attribute__( ( always_inline ) ) __STATIC_INLINE void __WFI(void)\r
+{\r
+  __ASM volatile ("wfi");\r
+}\r
+\r
+\r
+/** \brief  Wait For Event\r
+\r
+    Wait For Event is a hint instruction that permits the processor to enter\r
+    a low-power state until one of a number of events occurs.\r
+ */\r
+__attribute__( ( always_inline ) ) __STATIC_INLINE void __WFE(void)\r
+{\r
+  __ASM volatile ("wfe");\r
+}\r
+\r
+\r
+/** \brief  Send Event\r
+\r
+    Send Event is a hint instruction. It causes an event to be signaled to the CPU.\r
+ */\r
+__attribute__( ( always_inline ) ) __STATIC_INLINE void __SEV(void)\r
+{\r
+  __ASM volatile ("sev");\r
+}\r
+\r
+\r
+/** \brief  Instruction Synchronization Barrier\r
+\r
+    Instruction Synchronization Barrier flushes the pipeline in the processor,\r
+    so that all instructions following the ISB are fetched from cache or\r
+    memory, after the instruction has been completed.\r
+ */\r
+__attribute__( ( always_inline ) ) __STATIC_INLINE void __ISB(void)\r
+{\r
+  __ASM volatile ("isb");\r
+}\r
+\r
+\r
+/** \brief  Data Synchronization Barrier\r
+\r
+    This function acts as a special kind of Data Memory Barrier.\r
+    It completes when all explicit memory accesses before this instruction complete.\r
+ */\r
+__attribute__( ( always_inline ) ) __STATIC_INLINE void __DSB(void)\r
+{\r
+  __ASM volatile ("dsb");\r
+}\r
+\r
+\r
+/** \brief  Data Memory Barrier\r
+\r
+    This function ensures the apparent order of the explicit memory operations before\r
+    and after the instruction, without ensuring their completion.\r
+ */\r
+__attribute__( ( always_inline ) ) __STATIC_INLINE void __DMB(void)\r
+{\r
+  __ASM volatile ("dmb");\r
+}\r
+\r
+\r
+/** \brief  Reverse byte order (32 bit)\r
+\r
+    This function reverses the byte order in integer value.\r
+\r
+    \param [in]    value  Value to reverse\r
+    \return               Reversed value\r
+ */\r
+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __REV(uint32_t value)\r
+{\r
+  uint32_t result;\r
+\r
+  __ASM volatile ("rev %0, %1" : "=r" (result) : "r" (value) );\r
+  return(result);\r
+}\r
+\r
+\r
+/** \brief  Reverse byte order (16 bit)\r
+\r
+    This function reverses the byte order in two unsigned short values.\r
+\r
+    \param [in]    value  Value to reverse\r
+    \return               Reversed value\r
+ */\r
+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __REV16(uint32_t value)\r
+{\r
+  uint32_t result;\r
+\r
+  __ASM volatile ("rev16 %0, %1" : "=r" (result) : "r" (value) );\r
+  return(result);\r
+}\r
+\r
+\r
+/** \brief  Reverse byte order in signed short value\r
+\r
+    This function reverses the byte order in a signed short value with sign extension to integer.\r
+\r
+    \param [in]    value  Value to reverse\r
+    \return               Reversed value\r
+ */\r
+__attribute__( ( always_inline ) ) __STATIC_INLINE int32_t __REVSH(int32_t value)\r
+{\r
+  uint32_t result;\r
+\r
+  __ASM volatile ("revsh %0, %1" : "=r" (result) : "r" (value) );\r
+  return(result);\r
+}\r
+\r
+\r
+/** \brief  Rotate Right in unsigned value (32 bit)\r
+\r
+    This function Rotate Right (immediate) provides the value of the contents of a register rotated by a variable number of bits.\r
+\r
+    \param [in]    value  Value to rotate\r
+    \param [in]    value  Number of Bits to rotate\r
+    \return               Rotated value\r
+ */\r
+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __ROR(uint32_t op1, uint32_t op2)\r
+{\r
+\r
+  __ASM volatile ("ror %0, %0, %1" : "+r" (op1) : "r" (op2) );\r
+  return(op1);\r
+}\r
+\r
+\r
+#if       (__CORTEX_M >= 0x03)\r
+\r
+/** \brief  Reverse bit order of value\r
+\r
+    This function reverses the bit order of the given value.\r
+\r
+    \param [in]    value  Value to reverse\r
+    \return               Reversed value\r
+ */\r
+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __RBIT(uint32_t value)\r
+{\r
+  uint32_t result;\r
+\r
+   __ASM volatile ("rbit %0, %1" : "=r" (result) : "r" (value) );\r
+   return(result);\r
+}\r
+\r
+\r
+/** \brief  LDR Exclusive (8 bit)\r
+\r
+    This function performs a exclusive LDR command for 8 bit value.\r
+\r
+    \param [in]    ptr  Pointer to data\r
+    \return             value of type uint8_t at (*ptr)\r
+ */\r
+__attribute__( ( always_inline ) ) __STATIC_INLINE uint8_t __LDREXB(volatile uint8_t *addr)\r
+{\r
+    uint8_t result;\r
+\r
+   __ASM volatile ("ldrexb %0, [%1]" : "=r" (result) : "r" (addr) );\r
+   return(result);\r
+}\r
+\r
+\r
+/** \brief  LDR Exclusive (16 bit)\r
+\r
+    This function performs a exclusive LDR command for 16 bit values.\r
+\r
+    \param [in]    ptr  Pointer to data\r
+    \return        value of type uint16_t at (*ptr)\r
+ */\r
+__attribute__( ( always_inline ) ) __STATIC_INLINE uint16_t __LDREXH(volatile uint16_t *addr)\r
+{\r
+    uint16_t result;\r
+\r
+   __ASM volatile ("ldrexh %0, [%1]" : "=r" (result) : "r" (addr) );\r
+   return(result);\r
+}\r
+\r
+\r
+/** \brief  LDR Exclusive (32 bit)\r
+\r
+    This function performs a exclusive LDR command for 32 bit values.\r
+\r
+    \param [in]    ptr  Pointer to data\r
+    \return        value of type uint32_t at (*ptr)\r
+ */\r
+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __LDREXW(volatile uint32_t *addr)\r
+{\r
+    uint32_t result;\r
+\r
+   __ASM volatile ("ldrex %0, [%1]" : "=r" (result) : "r" (addr) );\r
+   return(result);\r
+}\r
+\r
+\r
+/** \brief  STR Exclusive (8 bit)\r
+\r
+    This function performs a exclusive STR command for 8 bit values.\r
+\r
+    \param [in]  value  Value to store\r
+    \param [in]    ptr  Pointer to location\r
+    \return          0  Function succeeded\r
+    \return          1  Function failed\r
+ */\r
+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __STREXB(uint8_t value, volatile uint8_t *addr)\r
+{\r
+   uint32_t result;\r
+\r
+   __ASM volatile ("strexb %0, %2, [%1]" : "=&r" (result) : "r" (addr), "r" (value) );\r
+   return(result);\r
+}\r
+\r
+\r
+/** \brief  STR Exclusive (16 bit)\r
+\r
+    This function performs a exclusive STR command for 16 bit values.\r
+\r
+    \param [in]  value  Value to store\r
+    \param [in]    ptr  Pointer to location\r
+    \return          0  Function succeeded\r
+    \return          1  Function failed\r
+ */\r
+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __STREXH(uint16_t value, volatile uint16_t *addr)\r
+{\r
+   uint32_t result;\r
+\r
+   __ASM volatile ("strexh %0, %2, [%1]" : "=&r" (result) : "r" (addr), "r" (value) );\r
+   return(result);\r
+}\r
+\r
+\r
+/** \brief  STR Exclusive (32 bit)\r
+\r
+    This function performs a exclusive STR command for 32 bit values.\r
+\r
+    \param [in]  value  Value to store\r
+    \param [in]    ptr  Pointer to location\r
+    \return          0  Function succeeded\r
+    \return          1  Function failed\r
+ */\r
+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __STREXW(uint32_t value, volatile uint32_t *addr)\r
+{\r
+   uint32_t result;\r
+\r
+   __ASM volatile ("strex %0, %2, [%1]" : "=&r" (result) : "r" (addr), "r" (value) );\r
+   return(result);\r
+}\r
+\r
+\r
+/** \brief  Remove the exclusive lock\r
+\r
+    This function removes the exclusive lock which is created by LDREX.\r
+\r
+ */\r
+__attribute__( ( always_inline ) ) __STATIC_INLINE void __CLREX(void)\r
+{\r
+  __ASM volatile ("clrex");\r
+}\r
+\r
+\r
+/** \brief  Signed Saturate\r
+\r
+    This function saturates a signed value.\r
+\r
+    \param [in]  value  Value to be saturated\r
+    \param [in]    sat  Bit position to saturate to (1..32)\r
+    \return             Saturated value\r
+ */\r
+#define __SSAT(ARG1,ARG2) \\r
+({                          \\r
+  uint32_t __RES, __ARG1 = (ARG1); \\r
+  __ASM ("ssat %0, %1, %2" : "=r" (__RES) :  "I" (ARG2), "r" (__ARG1) ); \\r
+  __RES; \\r
+ })\r
+\r
+\r
+/** \brief  Unsigned Saturate\r
+\r
+    This function saturates an unsigned value.\r
+\r
+    \param [in]  value  Value to be saturated\r
+    \param [in]    sat  Bit position to saturate to (0..31)\r
+    \return             Saturated value\r
+ */\r
+#define __USAT(ARG1,ARG2) \\r
+({                          \\r
+  uint32_t __RES, __ARG1 = (ARG1); \\r
+  __ASM ("usat %0, %1, %2" : "=r" (__RES) :  "I" (ARG2), "r" (__ARG1) ); \\r
+  __RES; \\r
+ })\r
+\r
+\r
+/** \brief  Count leading zeros\r
+\r
+    This function counts the number of leading zeros of a data value.\r
+\r
+    \param [in]  value  Value to count the leading zeros\r
+    \return             number of leading zeros in value\r
+ */\r
+__attribute__( ( always_inline ) ) __STATIC_INLINE uint8_t __CLZ(uint32_t value)\r
+{\r
+  uint8_t result;\r
+\r
+  __ASM volatile ("clz %0, %1" : "=r" (result) : "r" (value) );\r
+  return(result);\r
+}\r
+\r
+#endif /* (__CORTEX_M >= 0x03) */\r
+\r
+\r
+\r
+\r
+#elif defined ( __TASKING__ ) /*------------------ TASKING Compiler --------------*/\r
+/* TASKING carm specific functions */\r
+\r
+/*\r
+ * The CMSIS functions have been implemented as intrinsics in the compiler.\r
+ * Please use "carm -?i" to get an up to date list of all intrinsics,\r
+ * Including the CMSIS ones.\r
+ */\r
+\r
+#endif\r
+\r
+/*@}*/ /* end of group CMSIS_Core_InstructionInterface */\r
+\r
+#endif /* __CORE_CMINSTR_H */\r
diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/asf/thirdparty/CMSIS/README.txt b/FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/asf/thirdparty/CMSIS/README.txt
new file mode 100644 (file)
index 0000000..efa2ad1
--- /dev/null
@@ -0,0 +1,37 @@
+* -------------------------------------------------------------------\r
+* Copyright (C) 2011 ARM Limited. All rights reserved.  \r
+* \r
+* Date:        11 October 2011  \r
+* Revision:    V3.00 \r
+*  \r
+* Project:     Cortex Microcontroller Software Interface Standard (CMSIS)\r
+* Title:       Release Note for CMSIS\r
+*\r
+* -------------------------------------------------------------------\r
+\r
+\r
+NOTE - Open the index.html file to access CMSIS documentation\r
+\r
+\r
+The Cortex Microcontroller Software Interface Standard (CMSIS) provides a single standard across all \r
+Cortex-Mx processor series vendors. It enables code re-use and code sharing across software projects \r
+and reduces time-to-market for new embedded applications.\r
+\r
+CMSIS is released under the terms of the end user license agreement ("CMSIS END USER LICENCE AGREEMENT.pdf").\r
+Any user of the software package is bound to the terms and conditions of the end user license agreement.\r
+\r
+\r
+You will find the following sub-directories:\r
+\r
+Documentation           - Contains CMSIS documentation.\r
\r
+DSP_Lib                 - MDK project files, Examples and source files etc.. to build the \r
+                          CMSIS DSP Software Library for Cortex-M0, Cortex-M3, Cortex-M4 processors.\r
+\r
+Include                 - CMSIS Core Support and CMSIS DSP Include Files.\r
+\r
+Lib                     - CMSIS DSP Libraries.\r
+\r
+RTOS                    - CMSIS RTOS API template header file.\r
+\r
+SVD                     - CMSIS SVD Schema files and Conversion Utility.\r
diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/config/FreeRTOSConfig.h b/FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/config/FreeRTOSConfig.h
new file mode 100644 (file)
index 0000000..44976b5
--- /dev/null
@@ -0,0 +1,196 @@
+/*\r
+    FreeRTOS V7.4.0 - Copyright (C) 2013 Real Time Engineers Ltd.\r
+\r
+    FEATURES AND PORTS ARE ADDED TO FREERTOS ALL THE TIME.  PLEASE VISIT\r
+    http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION.\r
+\r
+    ***************************************************************************\r
+     *                                                                       *\r
+     *    FreeRTOS tutorial books are available in pdf and paperback.        *\r
+     *    Complete, revised, and edited pdf reference manuals are also       *\r
+     *    available.                                                         *\r
+     *                                                                       *\r
+     *    Purchasing FreeRTOS documentation will not only help you, by       *\r
+     *    ensuring you get running as quickly as possible and with an        *\r
+     *    in-depth knowledge of how to use FreeRTOS, it will also help       *\r
+     *    the FreeRTOS project to continue with its mission of providing     *\r
+     *    professional grade, cross platform, de facto standard solutions    *\r
+     *    for microcontrollers - completely free of charge!                  *\r
+     *                                                                       *\r
+     *    >>> See http://www.FreeRTOS.org/Documentation for details. <<<     *\r
+     *                                                                       *\r
+     *    Thank you for using FreeRTOS, and thank you for your support!      *\r
+     *                                                                       *\r
+    ***************************************************************************\r
+\r
+\r
+    This file is part of the FreeRTOS distribution.\r
+\r
+    FreeRTOS is free software; you can redistribute it and/or modify it under\r
+    the terms of the GNU General Public License (version 2) as published by the\r
+    Free Software Foundation AND MODIFIED BY the FreeRTOS exception.\r
+\r
+    >>>>>>NOTE<<<<<< The modification to the GPL is included to allow you to\r
+    distribute a combined work that includes FreeRTOS without being obliged to\r
+    provide the source code for proprietary components outside of the FreeRTOS\r
+    kernel.\r
+\r
+    FreeRTOS is distributed in the hope that it will be useful, but WITHOUT ANY\r
+    WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS\r
+    FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more\r
+    details. You should have received a copy of the GNU General Public License\r
+    and the FreeRTOS license exception along with FreeRTOS; if not itcan be\r
+    viewed here: http://www.freertos.org/a00114.html and also obtained by\r
+    writing to Real Time Engineers Ltd., contact details for whom are available\r
+    on the FreeRTOS WEB site.\r
+\r
+    1 tab == 4 spaces!\r
+\r
+    ***************************************************************************\r
+     *                                                                       *\r
+     *    Having a problem?  Start by reading the FAQ "My application does   *\r
+     *    not run, what could be wrong?"                                     *\r
+     *                                                                       *\r
+     *    http://www.FreeRTOS.org/FAQHelp.html                               *\r
+     *                                                                       *\r
+    ***************************************************************************\r
+\r
+\r
+    http://www.FreeRTOS.org - Documentation, books, training, latest versions,\r
+    license and Real Time Engineers Ltd. contact details.\r
+\r
+    http://www.FreeRTOS.org/plus - A selection of FreeRTOS ecosystem products,\r
+    including FreeRTOS+Trace - an indispensable productivity tool, and our new\r
+    fully thread aware and reentrant UDP/IP stack.\r
+\r
+    http://www.OpenRTOS.com - Real Time Engineers ltd license FreeRTOS to High\r
+    Integrity Systems, who sell the code with commercial support,\r
+    indemnification and middleware, under the OpenRTOS brand.\r
+\r
+    http://www.SafeRTOS.com - High Integrity Systems also provide a safety\r
+    engineered and independently SIL3 certified version for use in safety and\r
+    mission critical applications that require provable dependability.\r
+*/\r
+\r
+#ifndef FREERTOS_CONFIG_H\r
+#define FREERTOS_CONFIG_H\r
+\r
+/*-----------------------------------------------------------\r
+ * Application specific definitions.\r
+ *\r
+ * These definitions should be adjusted for your particular hardware and\r
+ * application requirements.\r
+ *\r
+ * THESE PARAMETERS ARE DESCRIBED WITHIN THE 'CONFIGURATION' SECTION OF THE\r
+ * FreeRTOS API DOCUMENTATION AVAILABLE ON THE FreeRTOS.org WEB SITE.\r
+ *\r
+ * See http://www.freertos.org/a00110.html.\r
+ *----------------------------------------------------------*/\r
+\r
+/* Set configCREATE_LOW_POWER_DEMO to one to run the simple blinky demo,\r
+or 0 to run the more comprehensive test and demo application. */\r
+#define configCREATE_LOW_POWER_DEMO    1\r
+\r
+#if configCREATE_LOW_POWER_DEMO == 1\r
+       #define configCPU_CLOCK_HZ                              16384 /*( sysclk_get_cpu_hz() )*/\r
+       #define configSYSTICK_CLOCK_HZ                  16384\r
+       #define configUSE_TICKLESS_IDLE                 1\r
+       #define configTICK_RATE_HZ                              ( ( portTickType ) 128 )\r
+#else\r
+       #define configCPU_CLOCK_HZ                              sysclk_get_cpu_hz()\r
+       #define configUSE_TICKLESS_IDLE                 0\r
+       #define configTICK_RATE_HZ                              ( ( portTickType ) 1000 )\r
+#endif /* configCREATE_LOW_POWER_DEMO */\r
+\r
+#define configUSE_PREEMPTION                   1\r
+#define configUSE_IDLE_HOOK                            0\r
+#define configUSE_TICK_HOOK                            0\r
+#define configMAX_PRIORITIES                   ( ( unsigned portBASE_TYPE ) 5 )\r
+#define configMINIMAL_STACK_SIZE               ( ( unsigned short ) 130 )\r
+#define configTOTAL_HEAP_SIZE                  ( ( size_t ) ( 26000 ) )\r
+#define configMAX_TASK_NAME_LEN                        ( 10 )\r
+#define configUSE_TRACE_FACILITY               1\r
+#define configUSE_16_BIT_TICKS                 0\r
+#define configIDLE_SHOULD_YIELD                        1\r
+#define configUSE_MUTEXES                              1\r
+#define configQUEUE_REGISTRY_SIZE              8\r
+#define configCHECK_FOR_STACK_OVERFLOW 0\r
+#define configUSE_RECURSIVE_MUTEXES            1\r
+#define configUSE_MALLOC_FAILED_HOOK   1\r
+#define configUSE_APPLICATION_TASK_TAG 0\r
+#define configUSE_COUNTING_SEMAPHORES  1\r
+\r
+/* Co-routine definitions. */\r
+#define configUSE_CO_ROUTINES                  0\r
+#define configMAX_CO_ROUTINE_PRIORITIES ( 2 )\r
+\r
+/* Software timer definitions. */\r
+#define configUSE_TIMERS                               1\r
+#define configTIMER_TASK_PRIORITY              ( configMAX_PRIORITIES - 1 )\r
+#define configTIMER_QUEUE_LENGTH               5\r
+#define configTIMER_TASK_STACK_DEPTH   ( configMINIMAL_STACK_SIZE * 2 )\r
+\r
+/* Set the following definitions to 1 to include the API function, or zero\r
+to exclude the API function. */\r
+#define INCLUDE_vTaskPrioritySet               1\r
+#define INCLUDE_uxTaskPriorityGet              1\r
+#define INCLUDE_vTaskDelete                            1\r
+#define INCLUDE_vTaskCleanUpResources  1\r
+#define INCLUDE_vTaskSuspend                   1\r
+#define INCLUDE_vTaskDelayUntil                        1\r
+#define INCLUDE_vTaskDelay                             1\r
+\r
+/* FreeRTOS+CLI definitions. */\r
+\r
+/* Dimensions a buffer into which command outputs can be written.  The buffer\r
+can be declared in the CLI code itself, to allow multiple command consoles to\r
+share the same buffer.  For example, an application may allow access to the\r
+command interpreter by UART and by Ethernet.  Sharing a buffer is done purely\r
+to save RAM.  Note, however, that the command console itself is not re-entrant,\r
+so only one command interpreter interface can be used at any one time.  For\r
+that reason, no attempt at providing mutual exclusion to the buffer is\r
+attempted. */\r
+#define configCOMMAND_INT_MAX_OUTPUT_SIZE 400\r
+\r
+\r
+/* Cortex-M specific definitions. */\r
+\r
+#ifdef __NVIC_PRIO_BITS\r
+       /* __BVIC_PRIO_BITS will be specified when CMSIS is being used. */\r
+       #define configPRIO_BITS                 __NVIC_PRIO_BITS\r
+#else\r
+       #define configPRIO_BITS                 4        /* 15 priority levels */\r
+#endif\r
+\r
+/* The lowest interrupt priority that can be used in a call to a "set priority"\r
+function. */\r
+#define configLIBRARY_LOWEST_INTERRUPT_PRIORITY                        0x0f\r
+\r
+/* The highest interrupt priority that can be used by any interrupt service\r
+routine that makes calls to interrupt safe FreeRTOS API functions.  DO NOT CALL\r
+INTERRUPT SAFE FREERTOS API FUNCTIONS FROM ANY INTERRUPT THAT HAS A HIGHER\r
+PRIORITY THAN THIS! (higher priorities are lower numeric values. */\r
+#define configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY   10\r
+\r
+/* Interrupt priorities used by the kernel port layer itself.  These are generic\r
+to all Cortex-M ports, and do not rely on any particular library functions. */\r
+#define configKERNEL_INTERRUPT_PRIORITY                ( configLIBRARY_LOWEST_INTERRUPT_PRIORITY << (8 - configPRIO_BITS) )\r
+#define configMAX_SYSCALL_INTERRUPT_PRIORITY   ( configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY << (8 - configPRIO_BITS) )\r
+\r
+/* Normal assert() semantics without relying on the provision of an assert.h\r
+header file. */\r
+void vAssertCalled( void );\r
+#define configASSERT( x ) if( ( x ) == 0 ) vAssertCalled();\r
+#define INCLUDE_MODULE_TEST 0\r
+\r
+/* The configPRE_SLEEP_PROCESSING() and configPOST_SLEEP_PROCESSING() macros\r
+allow the application writer to add additional code before and after the MCU is\r
+placed into the low power state respectively.  The empty implementations\r
+provided in this demo can be extended to save even more power. */\r
+void vPreSleepProcessing( unsigned long xExpectedIdleTime );\r
+void vPostSleepProcessing( unsigned long xExpectedIdleTime );\r
+#define configPRE_SLEEP_PROCESSING( xExpectedIdleTime ) vPreSleepProcessing( xExpectedIdleTime );\r
+#define configPOST_SLEEP_PROCESSING( xExpectedIdleTime ) vPostSleepProcessing( xExpectedIdleTime );\r
+\r
+#endif /* FREERTOS_CONFIG_H */\r
+\r
diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/config/conf_ast.h b/FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/config/conf_ast.h
new file mode 100644 (file)
index 0000000..895c4b7
--- /dev/null
@@ -0,0 +1,55 @@
+/**\r
+ * \file\r
+ *\r
+ * \brief AST configuration.\r
+ *\r
+ * Copyright (c) 2012 Atmel Corporation. All rights reserved.\r
+ *\r
+ * \asf_license_start\r
+ *\r
+ * \page License\r
+ *\r
+ * Redistribution and use in source and binary forms, with or without\r
+ * modification, are permitted provided that the following conditions are met:\r
+ *\r
+ * 1. Redistributions of source code must retain the above copyright notice,\r
+ *    this list of conditions and the following disclaimer.\r
+ *\r
+ * 2. Redistributions in binary form must reproduce the above copyright notice,\r
+ *    this list of conditions and the following disclaimer in the documentation\r
+ *    and/or other materials provided with the distribution.\r
+ *\r
+ * 3. The name of Atmel may not be used to endorse or promote products derived\r
+ *    from this software without specific prior written permission.\r
+ *\r
+ * 4. This software may only be redistributed and used in connection with an\r
+ *    Atmel microcontroller product.\r
+ *\r
+ * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED\r
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\r
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE\r
+ * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR\r
+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\r
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS\r
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)\r
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,\r
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\r
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\r
+ * POSSIBILITY OF SUCH DAMAGE.\r
+ *\r
+ * \asf_license_stop\r
+ *\r
+ */\r
+\r
+//! Configuration of the AST driver\r
+\r
+#ifndef CONF_AST_H_INCLUDED\r
+#define CONF_AST_H_INCLUDED\r
+\r
+//#define AST_PER_ENABLE\r
+// #define AST_ALARM_ENABLE\r
+// #define AST_OVF_ENABLE\r
+// #define AST_READY_ENABLE\r
+// #define AST_CLKREADY_ENABLE\r
+\r
+#endif /* CONF_AST_H_INCLUDED */\r
diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/config/conf_board.h b/FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/config/conf_board.h
new file mode 100644 (file)
index 0000000..96e099f
--- /dev/null
@@ -0,0 +1,53 @@
+/**\r
+ * \file\r
+ *\r
+ * \brief  Configuration File for SAM4L-EK Board.\r
+ *\r
+ * Copyright (c) 2012 Atmel Corporation. All rights reserved.\r
+ *\r
+ * \asf_license_start\r
+ *\r
+ * \page License\r
+ *\r
+ * Redistribution and use in source and binary forms, with or without\r
+ * modification, are permitted provided that the following conditions are met:\r
+ *\r
+ * 1. Redistributions of source code must retain the above copyright notice,\r
+ *    this list of conditions and the following disclaimer.\r
+ *\r
+ * 2. Redistributions in binary form must reproduce the above copyright notice,\r
+ *    this list of conditions and the following disclaimer in the documentation\r
+ *    and/or other materials provided with the distribution.\r
+ *\r
+ * 3. The name of Atmel may not be used to endorse or promote products derived\r
+ *    from this software without specific prior written permission.\r
+ *\r
+ * 4. This software may only be redistributed and used in connection with an\r
+ *    Atmel microcontroller product.\r
+ *\r
+ * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED\r
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\r
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE\r
+ * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR\r
+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\r
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS\r
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)\r
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,\r
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\r
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\r
+ * POSSIBILITY OF SUCH DAMAGE.\r
+ *\r
+ * \asf_license_stop\r
+ *\r
+ */\r
+\r
+#ifndef CONF_BOARD_H_INCLUDED\r
+#define CONF_BOARD_H_INCLUDED\r
+\r
+/** Enable Com Port. */\r
+#define CONF_BOARD_COM_PORT\r
+\r
+/** Enable LCD backlight */\r
+#define CONF_BOARD_BL\r
+\r
+#endif  /* CONF_BOARD_H_INCLUDED */\r
diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/config/conf_clock.h b/FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/config/conf_clock.h
new file mode 100644 (file)
index 0000000..9a785bb
--- /dev/null
@@ -0,0 +1,97 @@
+/**\r
+ * \file\r
+ *\r
+ * \brief Chip-specific system clock manager configuration\r
+ *\r
+ * Copyright (c) 2012 Atmel Corporation. All rights reserved.\r
+ *\r
+ * \asf_license_start\r
+ *\r
+ * \page License\r
+ *\r
+ * Redistribution and use in source and binary forms, with or without\r
+ * modification, are permitted provided that the following conditions are met:\r
+ *\r
+ * 1. Redistributions of source code must retain the above copyright notice,\r
+ *    this list of conditions and the following disclaimer.\r
+ *\r
+ * 2. Redistributions in binary form must reproduce the above copyright notice,\r
+ *    this list of conditions and the following disclaimer in the documentation\r
+ *    and/or other materials provided with the distribution.\r
+ *\r
+ * 3. The name of Atmel may not be used to endorse or promote products derived\r
+ *    from this software without specific prior written permission.\r
+ *\r
+ * 4. This software may only be redistributed and used in connection with an\r
+ *    Atmel microcontroller product.\r
+ *\r
+ * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED\r
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\r
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE\r
+ * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR\r
+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\r
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS\r
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)\r
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,\r
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\r
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\r
+ * POSSIBILITY OF SUCH DAMAGE.\r
+ *\r
+ * \asf_license_stop\r
+ *\r
+ */\r
+#ifndef CONF_CLOCK_H_INCLUDED\r
+#define CONF_CLOCK_H_INCLUDED\r
+\r
+//#define CONFIG_SYSCLK_INIT_CPUMASK  0\r
+//#define CONFIG_SYSCLK_INIT_PBAMASK  ((1 << SYSCLK_USART2))\r
+//#define CONFIG_SYSCLK_INIT_PBBMASK  ((1 << SYSCLK_HFLASHC_REGS))\r
+//#define CONFIG_SYSCLK_INIT_PBCMASK  ((1 << SYSCLK_PM) | (1 << SYSCLK_SCIF) | (1 << SYSCLK_GPIO))\r
+//#define CONFIG_SYSCLK_INIT_PBDMASK  ((1 << SYSCLK_BPM) | (1 << SYSCLK_BSCIF) | (1 << SYSCLK_AST))\r
+//#define CONFIG_SYSCLK_INIT_HSBMASK  ((1 << SYSCLK_HFLASHC_DATA) | (SYSCLK_PBA_BRIDGE) | (SYSCLK_PBC_BRIDGE) | (SYSCLK_PBD_BRIDGE))\r
+\r
+//#define CONFIG_SYSCLK_SOURCE        SYSCLK_SRC_RCSYS\r
+//#define CONFIG_SYSCLK_SOURCE        SYSCLK_SRC_OSC0\r
+//#define CONFIG_SYSCLK_SOURCE        SYSCLK_SRC_PLL0\r
+//#define CONFIG_SYSCLK_SOURCE        SYSCLK_SRC_DFLL\r
+//#define CONFIG_SYSCLK_SOURCE        SYSCLK_SRC_RC80M\r
+#define CONFIG_SYSCLK_SOURCE        SYSCLK_SRC_RCFAST\r
+//#define CONFIG_SYSCLK_SOURCE        SYSCLK_SRC_RC1M\r
+\r
+/* RCFAST frequency selection: 0 for 4MHz, 1 for 8MHz and 2 for 12MHz */\r
+//#define CONFIG_RCFAST_FRANGE    0\r
+//#define CONFIG_RCFAST_FRANGE    1\r
+#define CONFIG_RCFAST_FRANGE    2\r
+\r
+/* Fbus = Fsys / (2 ^ BUS_div) */\r
+#define CONFIG_SYSCLK_CPU_DIV         0\r
+#define CONFIG_SYSCLK_PBA_DIV         0\r
+#define CONFIG_SYSCLK_PBB_DIV         0\r
+#define CONFIG_SYSCLK_PBC_DIV         2\r
+#define CONFIG_SYSCLK_PBD_DIV         2\r
+\r
+//#define CONFIG_USBCLK_SOURCE        USBCLK_SRC_OSC0\r
+//#define CONFIG_USBCLK_SOURCE        USBCLK_SRC_PLL0\r
+\r
+/* Fusb = Fsys / USB_div */\r
+//#define CONFIG_USBCLK_DIV           1\r
+\r
+//#define CONFIG_PLL0_SOURCE          PLL_SRC_OSC0\r
+\r
+/* Fpll0 = (Fclk * PLL_mul) / PLL_div */\r
+//#define CONFIG_PLL0_MUL             (48000000UL / BOARD_OSC0_HZ)\r
+//#define CONFIG_PLL0_DIV             1\r
+\r
+//#define CONFIG_DFLL0_SOURCE         GENCLK_SRC_OSC0\r
+//#define CONFIG_DFLL0_SOURCE         GENCLK_SRC_RCSYS\r
+//#define CONFIG_DFLL0_SOURCE         GENCLK_SRC_OSC32K\r
+//#define CONFIG_DFLL0_SOURCE         GENCLK_SRC_RC80M\r
+//#define CONFIG_DFLL0_SOURCE         GENCLK_SRC_RC32K\r
+\r
+/* Fdfll = (Fclk * DFLL_mul) / DFLL_div */\r
+//#define CONFIG_DFLL0_FREQ           96000000UL\r
+//#define CONFIG_DFLL0_MUL            (CONFIG_DFLL0_FREQ / BOARD_OSC0_HZ)\r
+//#define CONFIG_DFLL0_DIV            2\r
+\r
+#endif /* CONF_CLOCK_H_INCLUDED */\r
+\r
diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/config/conf_example.h b/FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/config/conf_example.h
new file mode 100644 (file)
index 0000000..a401ffc
--- /dev/null
@@ -0,0 +1,133 @@
+/**\r
+ * \file\r
+ *\r
+ * \brief  Configuration File for LCDCA example.\r
+ *\r
+ * Copyright (c) 2012 Atmel Corporation. All rights reserved.\r
+ *\r
+ * \asf_license_start\r
+ *\r
+ * \page License\r
+ *\r
+ * Redistribution and use in source and binary forms, with or without\r
+ * modification, are permitted provided that the following conditions are met:\r
+ *\r
+ * 1. Redistributions of source code must retain the above copyright notice,\r
+ *    this list of conditions and the following disclaimer.\r
+ *\r
+ * 2. Redistributions in binary form must reproduce the above copyright notice,\r
+ *    this list of conditions and the following disclaimer in the documentation\r
+ *    and/or other materials provided with the distribution.\r
+ *\r
+ * 3. The name of Atmel may not be used to endorse or promote products derived\r
+ *    from this software without specific prior written permission.\r
+ *\r
+ * 4. This software may only be redistributed and used in connection with an\r
+ *    Atmel microcontroller product.\r
+ *\r
+ * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED\r
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\r
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE\r
+ * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR\r
+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\r
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS\r
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)\r
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,\r
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\r
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\r
+ * POSSIBILITY OF SUCH DAMAGE.\r
+ *\r
+ * \asf_license_stop\r
+ *\r
+ */\r
+\r
+#ifndef CONF_EXAMPLE_H_INCLUDED\r
+#define CONF_EXAMPLE_H_INCLUDED\r
+\r
+/** This is the pin for the onboard PB0 button, corresponding to PC03. */\r
+#define NEXT_BUTTON     GPIO_PUSH_BUTTON_0\r
+\r
+/** LCD contrast level */\r
+#define LCD_CONTRAST_LEVEL 30\r
+\r
+/**\r
+ * Here are definitions of C42364A glass LCD for this example\r
+ * @{\r
+ */\r
+\r
+/** \name LCD Common\r
+ * @{\r
+ */\r
+#define NB_OF_COM 4\r
+#define NB_OF_SEG 40\r
+/** @} */\r
+\r
+/** \name LCD Connection Initialization\r
+ * @{\r
+ */\r
+#define PORT_MASK  NB_OF_SEG\r
+#define LCD_DUTY   (NB_OF_COM % 4)\r
+/** @} */\r
+\r
+/** \name Digit Decoder\r
+ * @{\r
+ */\r
+/** 7-segment with 3 commons terminals */\r
+#define FIRST_7SEG_3C  255 /* 255 = unavailable */\r
+#define WIDTH_7SEG_3C  255 /* 255 = unavailable */\r
+#define DIR_7SEG_3C    0   /* 0 = from left to right */\r
+\r
+/** 7-segment with 4 commons terminals */\r
+#define FIRST_7SEG_4C 10\r
+#define WIDTH_7SEG_4C 4\r
+#define DIR_7SEG_4C   1    /* 1 = from right to left */\r
+\r
+/** 14-segment with 4 commons terminals */\r
+#define FIRST_14SEG_4C 36\r
+#define WIDTH_14SEG_4C 7\r
+#define DIR_14SEG_4C   1  /* 1 = from right to left */\r
+\r
+/** 16-segment with 3 commons terminals */\r
+#define FIRST_16SEG_3C 255 /* 255 = unavailable */\r
+#define WIDTH_16SEG_3C 255 /* 255 = unavailable */\r
+#define DIR_16SEG_3C   0\r
+/** @} */\r
+\r
+/** \name Pixel With Blinking feature\r
+ * @{\r
+ */\r
+#define ICON_USB      1, 0\r
+#define ICON_COLON    0, 0\r
+#define ICON_WLESS    2, 0\r
+#define ICON_AUDIO    3, 0\r
+#define ICON_BAT      0, 1\r
+#define ICON_ERROR    1, 1\r
+#define ICON_CHINESE  2, 1\r
+#define ICON_ARM      3, 1\r
+/** @} */\r
+\r
+/** \name Pixel With No-Blinking feature\r
+ * @{\r
+ */\r
+#define ICON_MINUS          0, 37\r
+#define ICON_MINUS_SEG1     3, 30\r
+#define ICON_MINUS_SEG2     0, 33\r
+#define ICON_DOT_1          0, 29\r
+#define ICON_DOT_2          3, 10\r
+#define ICON_DOT_3          3, 8\r
+#define ICON_DOT_4          3, 6\r
+#define ICON_BAT_LEVEL_1    0, 21\r
+#define ICON_BAT_LEVEL_2    0, 17\r
+#define ICON_BAT_LEVEL_3    0, 25\r
+#define ICON_AUDIO_PAUSE    3, 38\r
+#define ICON_AUDIO_PLAY     3, 34\r
+#define ICON_AM             3, 4\r
+#define ICON_PM             3, 26\r
+#define ICON_DEGREE_C       3, 22\r
+#define ICON_DEGREE_F       3, 18\r
+#define ICON_VOLT           3, 14\r
+#define ICON_MILLI_VOLT     0, 13\r
+/** @} */\r
+/** @} */\r
+\r
+#endif  /* CONF_EXAMPLE_H_INCLUDED */\r
diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/config/conf_sleepmgr.h b/FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/config/conf_sleepmgr.h
new file mode 100644 (file)
index 0000000..bc41f86
--- /dev/null
@@ -0,0 +1,49 @@
+/**\r
+ * \file\r
+ *\r
+ * \brief Chip-specific sleep manager configuration\r
+ *\r
+ * Copyright (c) 2012 Atmel Corporation. All rights reserved.\r
+ *\r
+ * \asf_license_start\r
+ *\r
+ * \page License\r
+ *\r
+ * Redistribution and use in source and binary forms, with or without\r
+ * modification, are permitted provided that the following conditions are met:\r
+ *\r
+ * 1. Redistributions of source code must retain the above copyright notice,\r
+ *    this list of conditions and the following disclaimer.\r
+ *\r
+ * 2. Redistributions in binary form must reproduce the above copyright notice,\r
+ *    this list of conditions and the following disclaimer in the documentation\r
+ *    and/or other materials provided with the distribution.\r
+ *\r
+ * 3. The name of Atmel may not be used to endorse or promote products derived\r
+ *    from this software without specific prior written permission.\r
+ *\r
+ * 4. This software may only be redistributed and used in connection with an\r
+ *    Atmel microcontroller product.\r
+ *\r
+ * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED\r
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\r
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE\r
+ * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR\r
+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\r
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS\r
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)\r
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,\r
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\r
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\r
+ * POSSIBILITY OF SUCH DAMAGE.\r
+ *\r
+ * \asf_license_stop\r
+ *\r
+ */\r
+#ifndef CONF_SLEEPMGR_INCLUDED\r
+#define CONF_SLEEPMGR_INCLUDED\r
+\r
+// Sleep manager options\r
+#define CONFIG_SLEEPMGR_ENABLE\r
+\r
+#endif /* CONF_SLEEPMGR_INCLUDED */\r
diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/main.c b/FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/main.c
new file mode 100644 (file)
index 0000000..607584e
--- /dev/null
@@ -0,0 +1,309 @@
+/*\r
+    FreeRTOS V7.4.0 - Copyright (C) 2013 Real Time Engineers Ltd.\r
+\r
+    FEATURES AND PORTS ARE ADDED TO FREERTOS ALL THE TIME.  PLEASE VISIT\r
+    http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION.\r
+\r
+    ***************************************************************************\r
+     *                                                                       *\r
+     *    FreeRTOS tutorial books are available in pdf and paperback.        *\r
+     *    Complete, revised, and edited pdf reference manuals are also       *\r
+     *    available.                                                         *\r
+     *                                                                       *\r
+     *    Purchasing FreeRTOS documentation will not only help you, by       *\r
+     *    ensuring you get running as quickly as possible and with an        *\r
+     *    in-depth knowledge of how to use FreeRTOS, it will also help       *\r
+     *    the FreeRTOS project to continue with its mission of providing     *\r
+     *    professional grade, cross platform, de facto standard solutions    *\r
+     *    for microcontrollers - completely free of charge!                  *\r
+     *                                                                       *\r
+     *    >>> See http://www.FreeRTOS.org/Documentation for details. <<<     *\r
+     *                                                                       *\r
+     *    Thank you for using FreeRTOS, and thank you for your support!      *\r
+     *                                                                       *\r
+    ***************************************************************************\r
+\r
+\r
+    This file is part of the FreeRTOS distribution.\r
+\r
+    FreeRTOS is free software; you can redistribute it and/or modify it under\r
+    the terms of the GNU General Public License (version 2) as published by the\r
+    Free Software Foundation AND MODIFIED BY the FreeRTOS exception.\r
+\r
+    >>>>>>NOTE<<<<<< The modification to the GPL is included to allow you to\r
+    distribute a combined work that includes FreeRTOS without being obliged to\r
+    provide the source code for proprietary components outside of the FreeRTOS\r
+    kernel.\r
+\r
+    FreeRTOS is distributed in the hope that it will be useful, but WITHOUT ANY\r
+    WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS\r
+    FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more\r
+    details. You should have received a copy of the GNU General Public License\r
+    and the FreeRTOS license exception along with FreeRTOS; if not itcan be\r
+    viewed here: http://www.freertos.org/a00114.html and also obtained by\r
+    writing to Real Time Engineers Ltd., contact details for whom are available\r
+    on the FreeRTOS WEB site.\r
+\r
+    1 tab == 4 spaces!\r
+\r
+    ***************************************************************************\r
+     *                                                                       *\r
+     *    Having a problem?  Start by reading the FAQ "My application does   *\r
+     *    not run, what could be wrong?"                                     *\r
+     *                                                                       *\r
+     *    http://www.FreeRTOS.org/FAQHelp.html                               *\r
+     *                                                                       *\r
+    ***************************************************************************\r
+\r
+\r
+    http://www.FreeRTOS.org - Documentation, books, training, latest versions,\r
+    license and Real Time Engineers Ltd. contact details.\r
+\r
+    http://www.FreeRTOS.org/plus - A selection of FreeRTOS ecosystem products,\r
+    including FreeRTOS+Trace - an indispensable productivity tool, and our new\r
+    fully thread aware and reentrant UDP/IP stack.\r
+\r
+    http://www.OpenRTOS.com - Real Time Engineers ltd license FreeRTOS to High\r
+    Integrity Systems, who sell the code with commercial support,\r
+    indemnification and middleware, under the OpenRTOS brand.\r
+\r
+    http://www.SafeRTOS.com - High Integrity Systems also provide a safety\r
+    engineered and independently SIL3 certified version for use in safety and\r
+    mission critical applications that require provable dependability.\r
+*/\r
+\r
+/*\r
+    FreeRTOS V7.4.0 - Copyright (C) 2013 Real Time Engineers Ltd.\r
+\r
+    FEATURES AND PORTS ARE ADDED TO FREERTOS ALL THE TIME.  PLEASE VISIT\r
+    http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION.\r
+\r
+    ***************************************************************************\r
+     *                                                                       *\r
+     *    FreeRTOS tutorial books are available in pdf and paperback.        *\r
+     *    Complete, revised, and edited pdf reference manuals are also       *\r
+     *    available.                                                         *\r
+     *                                                                       *\r
+     *    Purchasing FreeRTOS documentation will not only help you, by       *\r
+     *    ensuring you get running as quickly as possible and with an        *\r
+     *    in-depth knowledge of how to use FreeRTOS, it will also help       *\r
+     *    the FreeRTOS project to continue with its mission of providing     *\r
+     *    professional grade, cross platform, de facto standard solutions    *\r
+     *    for microcontrollers - completely free of charge!                  *\r
+     *                                                                       *\r
+     *    >>> See http://www.FreeRTOS.org/Documentation for details. <<<     *\r
+     *                                                                       *\r
+     *    Thank you for using FreeRTOS, and thank you for your support!      *\r
+     *                                                                       *\r
+    ***************************************************************************\r
+\r
+\r
+    This file is part of the FreeRTOS distribution.\r
+\r
+    FreeRTOS is free software; you can redistribute it and/or modify it under\r
+    the terms of the GNU General Public License (version 2) as published by the\r
+    Free Software Foundation AND MODIFIED BY the FreeRTOS exception.\r
+\r
+    >>>>>>NOTE<<<<<< The modification to the GPL is included to allow you to\r
+    distribute a combined work that includes FreeRTOS without being obliged to\r
+    provide the source code for proprietary components outside of the FreeRTOS\r
+    kernel.\r
+\r
+    FreeRTOS is distributed in the hope that it will be useful, but WITHOUT ANY\r
+    WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS\r
+    FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more\r
+    details. You should have received a copy of the GNU General Public License\r
+    and the FreeRTOS license exception along with FreeRTOS; if not itcan be\r
+    viewed here: http://www.freertos.org/a00114.html and also obtained by\r
+    writing to Real Time Engineers Ltd., contact details for whom are available\r
+    on the FreeRTOS WEB site.\r
+\r
+    1 tab == 4 spaces!\r
+\r
+    ***************************************************************************\r
+     *                                                                       *\r
+     *    Having a problem?  Start by reading the FAQ "My application does   *\r
+     *    not run, what could be wrong?"                                     *\r
+     *                                                                       *\r
+     *    http://www.FreeRTOS.org/FAQHelp.html                               *\r
+     *                                                                       *\r
+    ***************************************************************************\r
+\r
+\r
+    http://www.FreeRTOS.org - Documentation, books, training, latest versions,\r
+    license and Real Time Engineers Ltd. contact details.\r
+\r
+    http://www.FreeRTOS.org/plus - A selection of FreeRTOS ecosystem products,\r
+    including FreeRTOS+Trace - an indispensable productivity tool, and our new\r
+    fully thread aware and reentrant UDP/IP stack.\r
+\r
+    http://www.OpenRTOS.com - Real Time Engineers ltd license FreeRTOS to High\r
+    Integrity Systems, who sell the code with commercial support,\r
+    indemnification and middleware, under the OpenRTOS brand.\r
+\r
+    http://www.SafeRTOS.com - High Integrity Systems also provide a safety\r
+    engineered and independently SIL3 certified version for use in safety and\r
+    mission critical applications that require provable dependability.\r
+*/\r
+\r
+/******************************************************************************\r
+ * This project provides two demo applications.  A low power project that\r
+ * demonstrates the FreeRTOS tickless mode, and a more comprehensive test and\r
+ * demo application.  The configCREATE_LOW_POWER_DEMO setting (defined at the\r
+ * top of FreeRTOSConfig.h) is used to select between the two.  The low power\r
+ * demo is implemented and described in main_low_power.c.  The more\r
+ * comprehensive test and demo application is implemented and described in\r
+ * main_full.c.\r
+ *\r
+ * This file implements the code that is not demo specific, including the\r
+ * hardware setup and FreeRTOS hook functions.\r
+ */\r
+\r
+/* Standard includes. */\r
+#include <stdio.h>\r
+\r
+/* Kernel includes. */\r
+#include "FreeRTOS.h"\r
+#include "task.h"\r
+\r
+/* Standard demo includes - just needed for the LED (ParTest) initialisation\r
+function. */\r
+#include "partest.h"\r
+\r
+/* Atmel library includes. */\r
+#include <asf.h>\r
+\r
+/*-----------------------------------------------------------*/\r
+\r
+/*\r
+ * Set up the hardware ready to run this demo.\r
+ */\r
+static void prvSetupHardware( void );\r
+\r
+/*\r
+ * main_low_power() is used when configCREATE_LOW_POWER_DEMO is set to 1.\r
+ * main_full() is used when configCREATE_LOW_POWER_DEMO is set to 0.\r
+ * configCREATE_LOW_POWER_DEMO is defined at the top of main.c.\r
+ */\r
+extern void main_low_power( void );\r
+extern void main_full( void );\r
+\r
+/* Prototypes for the standard FreeRTOS callback/hook functions implemented\r
+within this file. */\r
+void vApplicationMallocFailedHook( void );\r
+void vApplicationIdleHook( void );\r
+void vApplicationStackOverflowHook( xTaskHandle pxTask, signed char *pcTaskName );\r
+void vApplicationTickHook( void );\r
+\r
+/*-----------------------------------------------------------*/\r
+\r
+/* See the documentation page for this demo on the FreeRTOS.org web site for\r
+full information - including hardware setup requirements. */\r
+int main( void )\r
+{\r
+       /* Prepare the hardware to run this demo. */\r
+       prvSetupHardware();\r
+\r
+       /* The configCREATE_LOW_POWER_DEMO setting is described at the top of\r
+       this file. */\r
+       #if configCREATE_LOW_POWER_DEMO == 1\r
+       {\r
+               main_low_power();\r
+       }\r
+       #else\r
+       {\r
+               main_full();\r
+       }\r
+       #endif\r
+\r
+       return 0;\r
+}\r
+/*-----------------------------------------------------------*/\r
+\r
+static void prvSetupHardware( void )\r
+{\r
+extern void SystemCoreClockUpdate( void );\r
+\r
+       /* ASF function to setup clocking. */\r
+       sysclk_init();\r
+\r
+       /* Ensure all priority bits are assigned as preemption priority bits. */\r
+       NVIC_SetPriorityGrouping( 0 );\r
+\r
+       /* Atmel library function to setup for the evaluation kit being used. */\r
+       board_init();\r
+\r
+       /* Initialise the sleep manager in case the low power demo is being used. */\r
+       sleepmgr_init();\r
+}\r
+/*-----------------------------------------------------------*/\r
+\r
+void vApplicationMallocFailedHook( void )\r
+{\r
+       /* vApplicationMallocFailedHook() will only be called if\r
+       configUSE_MALLOC_FAILED_HOOK is set to 1 in FreeRTOSConfig.h.  It is a hook\r
+       function that will get called if a call to pvPortMalloc() fails.\r
+       pvPortMalloc() is called internally by the kernel whenever a task, queue,\r
+       timer or semaphore is created.  It is also called by various parts of the\r
+       demo application.  If heap_1.c or heap_2.c are used, then the size of the\r
+       heap available to pvPortMalloc() is defined by configTOTAL_HEAP_SIZE in\r
+       FreeRTOSConfig.h, and the xPortGetFreeHeapSize() API function can be used\r
+       to query the size of free heap space that remains (although it does not\r
+       provide information on how the remaining heap might be fragmented). */\r
+       taskDISABLE_INTERRUPTS();\r
+       for( ;; );\r
+}\r
+/*-----------------------------------------------------------*/\r
+\r
+void vApplicationIdleHook( void )\r
+{\r
+       /* vApplicationIdleHook() will only be called if configUSE_IDLE_HOOK is set\r
+       to 1 in FreeRTOSConfig.h.  It will be called on each iteration of the idle\r
+       task.  It is essential that code added to this hook function never attempts\r
+       to block in any way (for example, call xQueueReceive() with a block time\r
+       specified, or call vTaskDelay()).  If the application makes use of the\r
+       vTaskDelete() API function (as this demo application does) then it is also\r
+       important that vApplicationIdleHook() is permitted to return to its calling\r
+       function, because it is the responsibility of the idle task to clean up\r
+       memory allocated by the kernel to any task that has since been deleted. */\r
+}\r
+/*-----------------------------------------------------------*/\r
+\r
+void vApplicationStackOverflowHook( xTaskHandle pxTask, signed char *pcTaskName )\r
+{\r
+       ( void ) pcTaskName;\r
+       ( void ) pxTask;\r
+\r
+       /* Run time stack overflow checking is performed if\r
+       configCHECK_FOR_STACK_OVERFLOW is defined to 1 or 2.  This hook\r
+       function is called if a stack overflow is detected. */\r
+       taskDISABLE_INTERRUPTS();\r
+       for( ;; );\r
+}\r
+/*-----------------------------------------------------------*/\r
+\r
+void vApplicationTickHook( void )\r
+{\r
+       /* This function will be called by each tick interrupt if\r
+       configUSE_TICK_HOOK is set to 1 in FreeRTOSConfig.h.  User code can be\r
+       added here, but the tick hook is called from an interrupt context, so\r
+       code must not attempt to block, and only the interrupt safe FreeRTOS API\r
+       functions can be used (those that end in FromISR()). */\r
+}\r
+/*-----------------------------------------------------------*/\r
+\r
+void vAssertCalled( void )\r
+{\r
+volatile unsigned long ul = 0;\r
+\r
+       taskENTER_CRITICAL();\r
+       {\r
+               /* Set ul to a non-zero value using the debugger to step out of this\r
+               function. */\r
+               while( ul == 0 )\r
+               {\r
+                       __asm volatile( "NOP" );\r
+               }\r
+       }\r
+       taskEXIT_CRITICAL();\r
+}\r
diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/main_full.c b/FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/main_full.c
new file mode 100644 (file)
index 0000000..7cce6e2
--- /dev/null
@@ -0,0 +1,273 @@
+/*\r
+    FreeRTOS V7.4.0 - Copyright (C) 2013 Real Time Engineers Ltd.\r
+\r
+    FEATURES AND PORTS ARE ADDED TO FREERTOS ALL THE TIME.  PLEASE VISIT\r
+    http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION.\r
+\r
+    ***************************************************************************\r
+     *                                                                       *\r
+     *    FreeRTOS tutorial books are available in pdf and paperback.        *\r
+     *    Complete, revised, and edited pdf reference manuals are also       *\r
+     *    available.                                                         *\r
+     *                                                                       *\r
+     *    Purchasing FreeRTOS documentation will not only help you, by       *\r
+     *    ensuring you get running as quickly as possible and with an        *\r
+     *    in-depth knowledge of how to use FreeRTOS, it will also help       *\r
+     *    the FreeRTOS project to continue with its mission of providing     *\r
+     *    professional grade, cross platform, de facto standard solutions    *\r
+     *    for microcontrollers - completely free of charge!                  *\r
+     *                                                                       *\r
+     *    >>> See http://www.FreeRTOS.org/Documentation for details. <<<     *\r
+     *                                                                       *\r
+     *    Thank you for using FreeRTOS, and thank you for your support!      *\r
+     *                                                                       *\r
+    ***************************************************************************\r
+\r
+\r
+    This file is part of the FreeRTOS distribution.\r
+\r
+    FreeRTOS is free software; you can redistribute it and/or modify it under\r
+    the terms of the GNU General Public License (version 2) as published by the\r
+    Free Software Foundation AND MODIFIED BY the FreeRTOS exception.\r
+\r
+    >>>>>>NOTE<<<<<< The modification to the GPL is included to allow you to\r
+    distribute a combined work that includes FreeRTOS without being obliged to\r
+    provide the source code for proprietary components outside of the FreeRTOS\r
+    kernel.\r
+\r
+    FreeRTOS is distributed in the hope that it will be useful, but WITHOUT ANY\r
+    WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS\r
+    FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more\r
+    details. You should have received a copy of the GNU General Public License\r
+    and the FreeRTOS license exception along with FreeRTOS; if not itcan be\r
+    viewed here: http://www.freertos.org/a00114.html and also obtained by\r
+    writing to Real Time Engineers Ltd., contact details for whom are available\r
+    on the FreeRTOS WEB site.\r
+\r
+    1 tab == 4 spaces!\r
+\r
+    ***************************************************************************\r
+     *                                                                       *\r
+     *    Having a problem?  Start by reading the FAQ "My application does   *\r
+     *    not run, what could be wrong?"                                     *\r
+     *                                                                       *\r
+     *    http://www.FreeRTOS.org/FAQHelp.html                               *\r
+     *                                                                       *\r
+    ***************************************************************************\r
+\r
+\r
+    http://www.FreeRTOS.org - Documentation, books, training, latest versions,\r
+    license and Real Time Engineers Ltd. contact details.\r
+\r
+    http://www.FreeRTOS.org/plus - A selection of FreeRTOS ecosystem products,\r
+    including FreeRTOS+Trace - an indispensable productivity tool, and our new\r
+    fully thread aware and reentrant UDP/IP stack.\r
+\r
+    http://www.OpenRTOS.com - Real Time Engineers ltd license FreeRTOS to High\r
+    Integrity Systems, who sell the code with commercial support,\r
+    indemnification and middleware, under the OpenRTOS brand.\r
+\r
+    http://www.SafeRTOS.com - High Integrity Systems also provide a safety\r
+    engineered and independently SIL3 certified version for use in safety and\r
+    mission critical applications that require provable dependability.\r
+*/\r
+\r
+/******************************************************************************\r
+ * NOTE 1:  This project provides two demo applications.  A low power tickless\r
+ * project, and a more comprehensive test and demo application.  The\r
+ * configCREATE_LOW_POWER_DEMO setting in FreeRTOSConfig.h is used to\r
+ * select between the two.  See the notes on using\r
+ * configCREATE_LOW_POWER_DEMO in FreeRTOSConfig.h.  This file implements\r
+ * the comprehensive test and demo version.\r
+ *\r
+ * NOTE 2:  This file only contains the source code that is specific to the\r
+ * full demo.  Generic functions, such FreeRTOS hook functions, and functions\r
+ * required to configure the hardware, are defined in main.c.\r
+ ******************************************************************************\r
+ *\r
+ * main_full() creates all the demo application tasks and a software timer, then\r
+ * starts the scheduler.  The web documentation provides more details of the\r
+ * standard demo application tasks, which provide no particular functionality,\r
+ * but do provide a good example of how to use the FreeRTOS API.\r
+ *\r
+ * In addition to the standard demo tasks, the following tasks and tests are\r
+ * defined and/or created within this file:\r
+ *\r
+ * "Check" timer - The check software timer period is initially set to three\r
+ * seconds.  The callback function associated with the check software timer\r
+ * checks that all the standard demo tasks are not only still executing, but\r
+ * are executing without reporting any errors.  If the check software timer\r
+ * discovers that a task has either stalled, or reported an error, then it\r
+ * changes its own execution period from the initial three seconds, to just\r
+ * 200ms.  The check software timer callback function also toggles an LED each\r
+ * time it is called.  This provides a visual indication of the system status:\r
+ * If the LED toggles every three seconds, then no issues have been discovered.\r
+ * If the LED toggles every 200ms, then an issue has been discovered with at\r
+ * least one task.\r
+ *\r
+ * See the documentation page for this demo on the FreeRTOS.org web site for\r
+ * full information, including hardware setup requirements.\r
+ */\r
+\r
+/* Standard includes. */\r
+#include <stdio.h>\r
+\r
+/* Kernel includes. */\r
+#include "FreeRTOS.h"\r
+#include "task.h"\r
+#include "timers.h"\r
+#include "semphr.h"\r
+\r
+/* Standard demo application includes. */\r
+#include "PollQ.h"\r
+#include "semtest.h"\r
+#include "dynamic.h"\r
+#include "BlockQ.h"\r
+#include "blocktim.h"\r
+#include "countsem.h"\r
+#include "GenQTest.h"\r
+#include "recmutex.h"\r
+#include "partest.h"\r
+\r
+/* Atmel library includes. */\r
+#include "asf.h"\r
+\r
+/* Priorities for the demo application tasks. */\r
+#define mainQUEUE_POLL_PRIORITY                                ( tskIDLE_PRIORITY + 2UL )\r
+#define mainSEM_TEST_PRIORITY                          ( tskIDLE_PRIORITY + 1UL )\r
+#define mainBLOCK_Q_PRIORITY                           ( tskIDLE_PRIORITY + 2UL )\r
+\r
+/* A block time of zero simply means "don't block". */\r
+#define mainDONT_BLOCK                                         ( 0UL )\r
+\r
+/* The period after which the check timer will expire providing no errors\r
+have been reported by any of the standard demo tasks.  ms are converted to the\r
+equivalent in ticks using the portTICK_RATE_MS constant. */\r
+#define mainCHECK_TIMER_PERIOD_MS                      ( 3000UL / portTICK_RATE_MS )\r
+\r
+/* The period at which the check timer will expire, in ms, if an error has been\r
+reported in one of the standard demo tasks.  ms are converted to the equivalent\r
+in ticks using the portTICK_RATE_MS constant. */\r
+#define mainERROR_CHECK_TIMER_PERIOD_MS        ( 200UL / portTICK_RATE_MS )\r
+\r
+/* The LED toggled by the check timer. */\r
+#define mainCHECK_LED                                          ( 0 )\r
+\r
+/*-----------------------------------------------------------*/\r
+\r
+/*\r
+ * The check timer callback function, as described at the top of this file.\r
+ */\r
+static void prvCheckTimerCallback( xTimerHandle xTimer );\r
+\r
+/*-----------------------------------------------------------*/\r
+\r
+void main_full( void )\r
+{\r
+xTimerHandle xCheckTimer = NULL;\r
+\r
+       /* Start all the other standard demo/test tasks.  They have not particular\r
+       functionality, but do demonstrate how to use the FreeRTOS API and test the\r
+       kernel port. */\r
+       vStartDynamicPriorityTasks();\r
+       vStartBlockingQueueTasks( mainBLOCK_Q_PRIORITY );\r
+       vCreateBlockTimeTasks();\r
+       vStartCountingSemaphoreTasks();\r
+       vStartGenericQueueTasks( tskIDLE_PRIORITY );\r
+       vStartRecursiveMutexTasks();\r
+       vStartPolledQueueTasks( mainQUEUE_POLL_PRIORITY );\r
+       vStartSemaphoreTasks( mainSEM_TEST_PRIORITY );\r
+\r
+       /* Create the software timer that performs the 'check' functionality,\r
+       as described at the top of this file. */\r
+       xCheckTimer = xTimerCreate( ( const signed char * ) "CheckTimer",/* A text name, purely to help debugging. */\r
+                                                               ( mainCHECK_TIMER_PERIOD_MS ),          /* The timer period, in this case 3000ms (3s). */\r
+                                                               pdTRUE,                                                         /* This is an auto-reload timer, so xAutoReload is set to pdTRUE. */\r
+                                                               ( void * ) 0,                                           /* The ID is not used, so can be set to anything. */\r
+                                                               prvCheckTimerCallback                           /* The callback function that inspects the status of all the other tasks. */\r
+                                                         );\r
+\r
+       if( xCheckTimer != NULL )\r
+       {\r
+               xTimerStart( xCheckTimer, mainDONT_BLOCK );\r
+       }\r
+\r
+       /* Start the scheduler. */\r
+       vTaskStartScheduler();\r
+\r
+       /* If all is well, the scheduler will now be running, and the following line\r
+       will never be reached.  If the following line does execute, then there was\r
+       insufficient FreeRTOS heap memory available for the idle and/or timer tasks\r
+       to be created.  See the memory management section on the FreeRTOS web site\r
+       for more details. */\r
+       for( ;; );\r
+}\r
+/*-----------------------------------------------------------*/\r
+\r
+static void prvCheckTimerCallback( xTimerHandle xTimer )\r
+{\r
+static long lChangedTimerPeriodAlready = pdFALSE;\r
+unsigned long ulErrorFound = pdFALSE;\r
+\r
+       /* Check all the demo tasks (other than the flash tasks) to ensure\r
+       they are all still running, and that none have detected an error. */\r
+\r
+       if( xAreDynamicPriorityTasksStillRunning() != pdTRUE )\r
+       {\r
+               ulErrorFound = pdTRUE;\r
+       }\r
+\r
+       if( xAreBlockingQueuesStillRunning() != pdTRUE )\r
+       {\r
+               ulErrorFound = pdTRUE;\r
+       }\r
+\r
+       if ( xAreBlockTimeTestTasksStillRunning() != pdTRUE )\r
+       {\r
+               ulErrorFound = pdTRUE;\r
+       }\r
+\r
+       if ( xAreGenericQueueTasksStillRunning() != pdTRUE )\r
+       {\r
+               ulErrorFound = pdTRUE;\r
+       }\r
+\r
+       if ( xAreRecursiveMutexTasksStillRunning() != pdTRUE )\r
+       {\r
+               ulErrorFound = pdTRUE;\r
+       }\r
+\r
+       if( xArePollingQueuesStillRunning() != pdTRUE )\r
+       {\r
+               ulErrorFound = pdTRUE;\r
+       }\r
+\r
+       if( xAreSemaphoreTasksStillRunning() != pdTRUE )\r
+       {\r
+               ulErrorFound = pdTRUE;\r
+       }\r
+\r
+       /* Toggle the check LED to give an indication of the system status.  If\r
+       the LED toggles every mainCHECK_TIMER_PERIOD_MS milliseconds then\r
+       everything is ok.  A faster toggle indicates an error. */\r
+       vParTestToggleLED( mainCHECK_LED );\r
+\r
+       /* Have any errors been latch in ulErrorFound?  If so, shorten the\r
+       period of the check timer to mainERROR_CHECK_TIMER_PERIOD_MS milliseconds.\r
+       This will result in an increase in the rate at which mainCHECK_LED\r
+       toggles. */\r
+       if( ulErrorFound != pdFALSE )\r
+       {\r
+               if( lChangedTimerPeriodAlready == pdFALSE )\r
+               {\r
+                       lChangedTimerPeriodAlready = pdTRUE;\r
+\r
+                       /* This call to xTimerChangePeriod() uses a zero block time.\r
+                       Functions called from inside of a timer callback function must\r
+                       *never* attempt to block. */\r
+                       xTimerChangePeriod( xTimer, ( mainERROR_CHECK_TIMER_PERIOD_MS ), mainDONT_BLOCK );\r
+               }\r
+       }\r
+}\r
+/*-----------------------------------------------------------*/\r
+\r
diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/main_low_power.c b/FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/main_low_power.c
new file mode 100644 (file)
index 0000000..24166a0
--- /dev/null
@@ -0,0 +1,267 @@
+/*\r
+    FreeRTOS V7.4.0 - Copyright (C) 2013 Real Time Engineers Ltd.\r
+\r
+    FEATURES AND PORTS ARE ADDED TO FREERTOS ALL THE TIME.  PLEASE VISIT\r
+    http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION.\r
+\r
+    ***************************************************************************\r
+     *                                                                       *\r
+     *    FreeRTOS tutorial books are available in pdf and paperback.        *\r
+     *    Complete, revised, and edited pdf reference manuals are also       *\r
+     *    available.                                                         *\r
+     *                                                                       *\r
+     *    Purchasing FreeRTOS documentation will not only help you, by       *\r
+     *    ensuring you get running as quickly as possible and with an        *\r
+     *    in-depth knowledge of how to use FreeRTOS, it will also help       *\r
+     *    the FreeRTOS project to continue with its mission of providing     *\r
+     *    professional grade, cross platform, de facto standard solutions    *\r
+     *    for microcontrollers - completely free of charge!                  *\r
+     *                                                                       *\r
+     *    >>> See http://www.FreeRTOS.org/Documentation for details. <<<     *\r
+     *                                                                       *\r
+     *    Thank you for using FreeRTOS, and thank you for your support!      *\r
+     *                                                                       *\r
+    ***************************************************************************\r
+\r
+\r
+    This file is part of the FreeRTOS distribution.\r
+\r
+    FreeRTOS is free software; you can redistribute it and/or modify it under\r
+    the terms of the GNU General Public License (version 2) as published by the\r
+    Free Software Foundation AND MODIFIED BY the FreeRTOS exception.\r
+\r
+    >>>>>>NOTE<<<<<< The modification to the GPL is included to allow you to\r
+    distribute a combined work that includes FreeRTOS without being obliged to\r
+    provide the source code for proprietary components outside of the FreeRTOS\r
+    kernel.\r
+\r
+    FreeRTOS is distributed in the hope that it will be useful, but WITHOUT ANY\r
+    WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS\r
+    FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more\r
+    details. You should have received a copy of the GNU General Public License\r
+    and the FreeRTOS license exception along with FreeRTOS; if not itcan be\r
+    viewed here: http://www.freertos.org/a00114.html and also obtained by\r
+    writing to Real Time Engineers Ltd., contact details for whom are available\r
+    on the FreeRTOS WEB site.\r
+\r
+    1 tab == 4 spaces!\r
+\r
+    ***************************************************************************\r
+     *                                                                       *\r
+     *    Having a problem?  Start by reading the FAQ "My application does   *\r
+     *    not run, what could be wrong?"                                     *\r
+     *                                                                       *\r
+     *    http://www.FreeRTOS.org/FAQHelp.html                               *\r
+     *                                                                       *\r
+    ***************************************************************************\r
+\r
+\r
+    http://www.FreeRTOS.org - Documentation, books, training, latest versions,\r
+    license and Real Time Engineers Ltd. contact details.\r
+\r
+    http://www.FreeRTOS.org/plus - A selection of FreeRTOS ecosystem products,\r
+    including FreeRTOS+Trace - an indispensable productivity tool, and our new\r
+    fully thread aware and reentrant UDP/IP stack.\r
+\r
+    http://www.OpenRTOS.com - Real Time Engineers ltd license FreeRTOS to High\r
+    Integrity Systems, who sell the code with commercial support,\r
+    indemnification and middleware, under the OpenRTOS brand.\r
+\r
+    http://www.SafeRTOS.com - High Integrity Systems also provide a safety\r
+    engineered and independently SIL3 certified version for use in safety and\r
+    mission critical applications that require provable dependability.\r
+*/\r
+\r
+/* ****************************************************************************\r
+ * When configCREATE_LOW_POWER_DEMO is set to 1 in FreeRTOSConfig.h main() will\r
+ * call main_low_power(), which is defined in this file.  main_low_power()\r
+ * demonstrates FreeRTOS tick suppression being used to allow the MCU to be\r
+ * placed into the Retention low power mode.  When configCREATE_LOW_POWER_DEMO\r
+ * is set to 0 main will instead call main_full(), which is a more comprehensive\r
+ * RTOS demonstration.\r
+ * ****************************************************************************\r
+ *\r
+ * This application demonstrates the FreeRTOS tickless idle mode (tick\r
+ * suppression).  See http://www.freertos.org/low-power-tickless-rtos.html\r
+ * The demo is configured to execute on the SAM4L-EK.\r
+ *\r
+ * Functionality:\r
+ *\r
+ *  + Two tasks are created, an Rx task and a Tx task.\r
+ *\r
+ *  + The Rx task blocks on a queue to wait for data, blipping an LED each time\r
+ *    data is received (turning it on and then off again) before returning to\r
+ *    block on the queue once more.\r
+ *\r
+ *  + The Tx task repeatedly enters the Blocked state for 500ms.  On exiting the\r
+ *    blocked state the Tx task sends a value through the queue to the Rx task\r
+ *    (causing the Rx task to exit the blocked state and blip the LED).\r
+ *\r
+ *    Blocking for a finite period allows the kernel to stop the tick interrupt\r
+ *    and place the SAM4L into Retention mode - the lowest power mode possible\r
+ *    that allows the CPU registers and RAM to retain their state.\r
+ *\r
+ * Observed behaviour:\r
+ *\r
+ * For correct results the SAM4L-EK must be connected (and powered) using only\r
+ * the JTAG USB connector, but the debugger must not be connected (the\r
+ * application must be executed 'stand alone').\r
+ *\r
+ * The MCU spends most of its time in the Retention low power state, during\r
+ * which times the current monitor (built onto the SAM4L-EK) will show a low\r
+ * current reading.\r
+ *\r
+ * Every 500ms the MCU will come out of the low power state to turn the LED on,\r
+ * then return to the low power state for 20ms before leaving the low power\r
+ * state again to turn the LED off.  This will be observed as a fast blipping\r
+ * on the LED, and two very brief dots appearing on the current monitor graph\r
+ * (often observed as a single dot).\r
+ *\r
+ * The RTOS tick is suppressed while the MCU is in its low power state.\r
+ *\r
+ */\r
+\r
+/* ASF includes. */\r
+#include <asf.h>\r
+\r
+/* Kernel includes. */\r
+#include "FreeRTOS.h"\r
+#include "task.h"\r
+#include "queue.h"\r
+\r
+/* Common demo includes. */\r
+#include "partest.h"\r
+\r
+/* Priorities at which the Rx and Tx tasks are created. */\r
+#define configQUEUE_RECEIVE_TASK_PRIORITY      ( tskIDLE_PRIORITY + 1 )\r
+#define        configQUEUE_SEND_TASK_PRIORITY          ( tskIDLE_PRIORITY + 2 )\r
+\r
+/* The number of items the queue can hold.  This is 1 as the Rx task will\r
+remove items as they are added so the Tx task should always find the queue\r
+empty. */\r
+#define mainQUEUE_LENGTH                                       ( 1 )\r
+\r
+/* The LED used to indicate that a value has been received on the queue. */\r
+#define mainQUEUE_LED                                          ( 0 )\r
+\r
+/* The rate at which the Tx task sends to the queue. */\r
+#define mainTX_DELAY                                           ( 500UL / portTICK_RATE_MS )\r
+\r
+/* A block time of zero simply means "don't block". */\r
+#define mainDONT_BLOCK                                         ( 0 )\r
+\r
+/* The value that is sent from the Tx task to the Rx task on the queue. */\r
+#define mainQUEUED_VALUE                                       ( 100UL )\r
+\r
+/* The length of time the LED will remain on for.  It is on just long enough\r
+to be able to see with the human eye so as not to distort the power readings too\r
+much. */\r
+#define mainLED_TOGGLE_DELAY                           ( 20 / portTICK_RATE_MS )\r
+\r
+/*-----------------------------------------------------------*/\r
+\r
+/*\r
+ * The Rx and Tx tasks as described at the top of this file.\r
+ */\r
+static void prvQueueReceiveTask( void *pvParameters );\r
+static void prvQueueSendTask( void *pvParameters );\r
+\r
+/*-----------------------------------------------------------*/\r
+\r
+/* The queue to pass data from the Tx task to the Rx task. */\r
+static xQueueHandle xQueue = NULL;\r
+\r
+/*-----------------------------------------------------------*/\r
+\r
+void main_low_power( void )\r
+{\r
+       /* Create the queue. */\r
+       xQueue = xQueueCreate( mainQUEUE_LENGTH, sizeof( unsigned long ) );\r
+       configASSERT( xQueue );\r
+\r
+       /* Start the two tasks as described at the top of this file. */\r
+       xTaskCreate( prvQueueReceiveTask, ( const signed char * const ) "Rx", configMINIMAL_STACK_SIZE, NULL, configQUEUE_RECEIVE_TASK_PRIORITY, NULL );\r
+       xTaskCreate( prvQueueSendTask, ( const signed char * const ) "TX", configMINIMAL_STACK_SIZE, NULL, configQUEUE_SEND_TASK_PRIORITY, NULL );\r
+\r
+       /* Start the scheduler running running. */\r
+       vTaskStartScheduler();\r
+\r
+       /* If all is well the next line of code will not be reached as the\r
+       scheduler will be running.  If the next line is reached then it is likely\r
+       there was insufficient FreeRTOS heap available for the idle task and/or\r
+       timer task to be created.  See http://www.freertos.org/a00111.html. */\r
+       for( ;; );\r
+}\r
+/*-----------------------------------------------------------*/\r
+\r
+static void prvQueueSendTask( void *pvParameters )\r
+{\r
+const unsigned long ulValueToSend = mainQUEUED_VALUE;\r
+\r
+       /* Remove compiler warning about unused parameter. */\r
+       ( void ) pvParameters;\r
+\r
+       for( ;; )\r
+       {\r
+               /* Place this task into the blocked state until it is time to run again.\r
+               The kernel will place the MCU into the Retention low power sleep state\r
+               when the idle task next runs. */\r
+               vTaskDelay( mainTX_DELAY );\r
+\r
+               /* Send to the queue - causing the queue receive task to flash its LED.\r
+               It should not be necessary to block on the queue send because the Rx\r
+               task will already have removed the last queued item. */\r
+               xQueueSend( xQueue, &ulValueToSend, mainDONT_BLOCK );\r
+       }\r
+}\r
+/*-----------------------------------------------------------*/\r
+\r
+static void prvQueueReceiveTask( void *pvParameters )\r
+{\r
+unsigned long ulReceivedValue;\r
+\r
+       /* Remove compiler warning about unused parameter. */\r
+       ( void ) pvParameters;\r
+\r
+       for( ;; )\r
+       {\r
+               /* Wait until something arrives in the queue. */\r
+               xQueueReceive( xQueue, &ulReceivedValue, portMAX_DELAY );\r
+\r
+               /*  To get here something must have arrived, but is it the expected\r
+               value?  If it is, turn the LED on for a short while. */\r
+               if( ulReceivedValue == mainQUEUED_VALUE )\r
+               {\r
+                       vParTestSetLED( mainQUEUE_LED, pdTRUE );\r
+                       vTaskDelay( mainLED_TOGGLE_DELAY );\r
+                       vParTestSetLED( mainQUEUE_LED, pdFALSE );\r
+               }\r
+       }\r
+}\r
+/*-----------------------------------------------------------*/\r
+\r
+void vPreSleepProcessing( unsigned long ulExpectedIdleTime )\r
+{\r
+       /* Called by the kernel before it places the MCU into a sleep mode because\r
+       configPRE_SLEEP_PROCESSING() is #defined to vPreSleepProcessing().\r
+\r
+       NOTE:  Additional actions can be taken here to get the power consumption\r
+       even lower.  For example, peripherals can be turned     off here, and then back\r
+       on again in the post sleep processing function.  For maximum power saving\r
+       ensure all unused pins are in their lowest power state. */\r
+\r
+       /* Avoid compiler warnings about the unused parameter. */\r
+       ( void ) ulExpectedIdleTime;\r
+}\r
+/*-----------------------------------------------------------*/\r
+\r
+void vPostSleepProcessing( unsigned long ulExpectedIdleTime )\r
+{\r
+       /* Called by the kernel when the MCU exits a sleep mode because\r
+       configPOST_SLEEP_PROCESSING is #defined to vPostSleepProcessing(). */\r
+\r
+       /* Avoid compiler warnings about the unused parameter. */\r
+       ( void ) ulExpectedIdleTime;\r
+}\r
+/*-----------------------------------------------------------*/\r
+\r