From 7f0168cbc71aaf6a38e1c6d83afe80fc963f1a2c Mon Sep 17 00:00:00 2001 From: Jonathan Hui Date: Thu, 16 May 2019 21:37:19 -0700 Subject: [PATCH] [da15000] remove unsupported platform (#3827) --- .travis/script.sh | 22 - README.md | 2 +- configure.ac | 13 +- doc/Makefile.am | 1 - doc/images/ot-contrib-dialog.png | Bin 24056 -> 0 bytes examples/Makefile-da15000 | 283 - examples/platforms/Makefile.am | 6 - examples/platforms/Makefile.platform.am | 4 - examples/platforms/da15000/Makefile.am | 121 - .../platforms/da15000/Makefile.platform.am | 39 - examples/platforms/da15000/README.md | 146 - examples/platforms/da15000/alarm.c | 96 - examples/platforms/da15000/crypto/aes_alt.c | 207 - examples/platforms/da15000/crypto/aes_alt.h | 167 - .../da15000/crypto/da15000-mbedtls-config.h | 34 - .../platforms/da15000/custom_config_qspi.h | 125 - examples/platforms/da15000/flash.c | 144 - examples/platforms/da15000/logging.c | 48 - examples/platforms/da15000/misc.c | 53 - .../da15000/openthread-core-da15000-config.h | 117 - examples/platforms/da15000/platform-da15000.h | 77 - examples/platforms/da15000/radio.c | 625 - examples/platforms/da15000/random.c | 127 - examples/platforms/da15000/system.c | 297 - examples/platforms/da15000/uart.c | 119 - third_party/Makefile.am | 1 - .../dialog/DialogSDK/bsp/arm_license.txt | 26 - .../dialog/DialogSDK/bsp/config/bsp_debug.h | 650 - .../DialogSDK/bsp/config/bsp_defaults.h | 3156 ---- .../DialogSDK/bsp/config/bsp_definitions.h | 162 - .../dialog/DialogSDK/bsp/config/bsp_fem.h | 149 - .../dialog/DialogSDK/bsp/include/ARMCM0.h | 43 - .../dialog/DialogSDK/bsp/include/DA14680BB.h | 12153 ---------------- .../dialog/DialogSDK/bsp/include/cmsis_gcc.h | 1373 -- .../dialog/DialogSDK/bsp/include/core_cm0.h | 798 - .../DialogSDK/bsp/include/core_cmFunc.h | 87 - .../DialogSDK/bsp/include/core_cmInstr.h | 87 - .../dialog/DialogSDK/bsp/include/interrupts.h | 151 - .../dialog/DialogSDK/bsp/include/sdk_defs.h | 812 -- .../dialog/DialogSDK/bsp/include/suota.h | 118 - .../DialogSDK/bsp/include/system_ARMCM0.h | 64 - .../DialogSDK/bsp/include/system_DA14680.h | 91 - .../dialog/DialogSDK/bsp/ldfile/da15000.ld | 237 - .../bsp/memory/include/qspi_automode.h | 305 - .../bsp/memory/include/qspi_common.h | 174 - .../bsp/memory/include/qspi_w25q80ew.h | 115 - .../bsp/memory/include/qspi_winbond.h | 241 - .../DialogSDK/bsp/memory/src/qspi_automode.c | 1179 -- third_party/dialog/DialogSDK/bsp/osal/osal.h | 95 - .../bsp/peripherals/include/hw_aes_hash.h | 767 - .../bsp/peripherals/include/hw_cpm.h | 1463 -- .../bsp/peripherals/include/hw_crypto.h | 108 - .../bsp/peripherals/include/hw_dma.h | 382 - .../bsp/peripherals/include/hw_gpadc.h | 767 - .../bsp/peripherals/include/hw_gpio.h | 495 - .../bsp/peripherals/include/hw_hard_fault.h | 72 - .../bsp/peripherals/include/hw_led.h | 152 - .../bsp/peripherals/include/hw_otpc.h | 576 - .../bsp/peripherals/include/hw_qspi.h | 1203 -- .../DialogSDK/bsp/peripherals/include/hw_rf.h | 331 - .../bsp/peripherals/include/hw_timer0.h | 385 - .../bsp/peripherals/include/hw_timer1.h | 1052 -- .../bsp/peripherals/include/hw_trng.h | 145 - .../bsp/peripherals/include/hw_uart.h | 1250 -- .../bsp/peripherals/include/hw_watchdog.h | 188 - .../bsp/peripherals/include/hw_wkup.h | 600 - .../bsp/peripherals/include/sys_tcs.h | 123 - .../bsp/peripherals/src/hw_aes_hash.c | 414 - .../DialogSDK/bsp/peripherals/src/hw_cpm.c | 856 -- .../DialogSDK/bsp/peripherals/src/hw_crypto.c | 126 - .../DialogSDK/bsp/peripherals/src/hw_dma.c | 425 - .../DialogSDK/bsp/peripherals/src/hw_gpadc.c | 301 - .../DialogSDK/bsp/peripherals/src/hw_gpio.c | 302 - .../bsp/peripherals/src/hw_hard_fault.c | 172 - .../DialogSDK/bsp/peripherals/src/hw_otpc.c | 1008 -- .../DialogSDK/bsp/peripherals/src/hw_qspi.c | 177 - .../DialogSDK/bsp/peripherals/src/hw_rf.c | 1512 -- .../DialogSDK/bsp/peripherals/src/hw_timer0.c | 122 - .../DialogSDK/bsp/peripherals/src/hw_trng.c | 125 - .../DialogSDK/bsp/peripherals/src/hw_uart.c | 1464 -- .../bsp/peripherals/src/hw_watchdog.c | 172 - .../DialogSDK/bsp/peripherals/src/hw_wkup.c | 209 - .../DialogSDK/bsp/peripherals/src/sys_tcs.c | 454 - .../dialog/DialogSDK/bsp/startup/config.c | 143 - .../DialogSDK/bsp/startup/startup_ARMCM0.S | 367 - .../DialogSDK/bsp/startup/system_ARMCM0.c | 571 - .../DialogSDK/bsp/startup/vector_table.S | 178 - .../interfaces/ftdf/include/ad_ftdf_config.h | 118 - .../interfaces/ftdf/include/ad_ftdf_phy_api.h | 143 - .../DialogSDK/interfaces/ftdf/include/ftdf.h | 3413 ----- .../ftdf/include/ftdf_config_phy_api.h | 192 - .../DialogSDK/interfaces/ftdf/src/ad_ftdf.c | 341 - .../DialogSDK/interfaces/ftdf/src/ad_ftdf.h | 94 - .../interfaces/ftdf/src/ad_ftdf_phy_api.c | 164 - .../DialogSDK/interfaces/ftdf/src/common.c | 5217 ------- .../DialogSDK/interfaces/ftdf/src/data.c | 621 - .../DialogSDK/interfaces/ftdf/src/ftdfInfo.h | 15 - .../DialogSDK/interfaces/ftdf/src/internal.h | 723 - .../DialogSDK/interfaces/ftdf/src/main.c | 292 - .../DialogSDK/interfaces/ftdf/src/power.c | 327 - third_party/dialog/DialogTools/cli_programmer | Bin 133800 -> 0 bytes third_party/dialog/DialogTools/imgprep.sh | 4 - third_party/dialog/README.md | 17 - 103 files changed, 3 insertions(+), 55975 deletions(-) delete mode 100644 doc/images/ot-contrib-dialog.png delete mode 100644 examples/Makefile-da15000 delete mode 100755 examples/platforms/da15000/Makefile.am delete mode 100644 examples/platforms/da15000/Makefile.platform.am delete mode 100755 examples/platforms/da15000/README.md delete mode 100644 examples/platforms/da15000/alarm.c delete mode 100644 examples/platforms/da15000/crypto/aes_alt.c delete mode 100644 examples/platforms/da15000/crypto/aes_alt.h delete mode 100644 examples/platforms/da15000/crypto/da15000-mbedtls-config.h delete mode 100755 examples/platforms/da15000/custom_config_qspi.h delete mode 100644 examples/platforms/da15000/flash.c delete mode 100644 examples/platforms/da15000/logging.c delete mode 100644 examples/platforms/da15000/misc.c delete mode 100644 examples/platforms/da15000/openthread-core-da15000-config.h delete mode 100644 examples/platforms/da15000/platform-da15000.h delete mode 100644 examples/platforms/da15000/radio.c delete mode 100644 examples/platforms/da15000/random.c delete mode 100644 examples/platforms/da15000/system.c delete mode 100644 examples/platforms/da15000/uart.c delete mode 100755 third_party/dialog/DialogSDK/bsp/arm_license.txt delete mode 100644 third_party/dialog/DialogSDK/bsp/config/bsp_debug.h delete mode 100644 third_party/dialog/DialogSDK/bsp/config/bsp_defaults.h delete mode 100644 third_party/dialog/DialogSDK/bsp/config/bsp_definitions.h delete mode 100644 third_party/dialog/DialogSDK/bsp/config/bsp_fem.h delete mode 100644 third_party/dialog/DialogSDK/bsp/include/ARMCM0.h delete mode 100755 third_party/dialog/DialogSDK/bsp/include/DA14680BB.h delete mode 100644 third_party/dialog/DialogSDK/bsp/include/cmsis_gcc.h delete mode 100644 third_party/dialog/DialogSDK/bsp/include/core_cm0.h delete mode 100644 third_party/dialog/DialogSDK/bsp/include/core_cmFunc.h delete mode 100644 third_party/dialog/DialogSDK/bsp/include/core_cmInstr.h delete mode 100644 third_party/dialog/DialogSDK/bsp/include/interrupts.h delete mode 100644 third_party/dialog/DialogSDK/bsp/include/sdk_defs.h delete mode 100644 third_party/dialog/DialogSDK/bsp/include/suota.h delete mode 100755 third_party/dialog/DialogSDK/bsp/include/system_ARMCM0.h delete mode 100755 third_party/dialog/DialogSDK/bsp/include/system_DA14680.h delete mode 100755 third_party/dialog/DialogSDK/bsp/ldfile/da15000.ld delete mode 100644 third_party/dialog/DialogSDK/bsp/memory/include/qspi_automode.h delete mode 100644 third_party/dialog/DialogSDK/bsp/memory/include/qspi_common.h delete mode 100644 third_party/dialog/DialogSDK/bsp/memory/include/qspi_w25q80ew.h delete mode 100644 third_party/dialog/DialogSDK/bsp/memory/include/qspi_winbond.h delete mode 100644 third_party/dialog/DialogSDK/bsp/memory/src/qspi_automode.c delete mode 100644 third_party/dialog/DialogSDK/bsp/osal/osal.h delete mode 100644 third_party/dialog/DialogSDK/bsp/peripherals/include/hw_aes_hash.h delete mode 100644 third_party/dialog/DialogSDK/bsp/peripherals/include/hw_cpm.h delete mode 100644 third_party/dialog/DialogSDK/bsp/peripherals/include/hw_crypto.h delete mode 100644 third_party/dialog/DialogSDK/bsp/peripherals/include/hw_dma.h delete mode 100644 third_party/dialog/DialogSDK/bsp/peripherals/include/hw_gpadc.h delete mode 100644 third_party/dialog/DialogSDK/bsp/peripherals/include/hw_gpio.h delete mode 100644 third_party/dialog/DialogSDK/bsp/peripherals/include/hw_hard_fault.h delete mode 100644 third_party/dialog/DialogSDK/bsp/peripherals/include/hw_led.h delete mode 100644 third_party/dialog/DialogSDK/bsp/peripherals/include/hw_otpc.h delete mode 100644 third_party/dialog/DialogSDK/bsp/peripherals/include/hw_qspi.h delete mode 100644 third_party/dialog/DialogSDK/bsp/peripherals/include/hw_rf.h delete mode 100644 third_party/dialog/DialogSDK/bsp/peripherals/include/hw_timer0.h delete mode 100644 third_party/dialog/DialogSDK/bsp/peripherals/include/hw_timer1.h delete mode 100644 third_party/dialog/DialogSDK/bsp/peripherals/include/hw_trng.h delete mode 100644 third_party/dialog/DialogSDK/bsp/peripherals/include/hw_uart.h delete mode 100644 third_party/dialog/DialogSDK/bsp/peripherals/include/hw_watchdog.h delete mode 100644 third_party/dialog/DialogSDK/bsp/peripherals/include/hw_wkup.h delete mode 100644 third_party/dialog/DialogSDK/bsp/peripherals/include/sys_tcs.h delete mode 100644 third_party/dialog/DialogSDK/bsp/peripherals/src/hw_aes_hash.c delete mode 100644 third_party/dialog/DialogSDK/bsp/peripherals/src/hw_cpm.c delete mode 100644 third_party/dialog/DialogSDK/bsp/peripherals/src/hw_crypto.c delete mode 100644 third_party/dialog/DialogSDK/bsp/peripherals/src/hw_dma.c delete mode 100644 third_party/dialog/DialogSDK/bsp/peripherals/src/hw_gpadc.c delete mode 100644 third_party/dialog/DialogSDK/bsp/peripherals/src/hw_gpio.c delete mode 100644 third_party/dialog/DialogSDK/bsp/peripherals/src/hw_hard_fault.c delete mode 100644 third_party/dialog/DialogSDK/bsp/peripherals/src/hw_otpc.c delete mode 100644 third_party/dialog/DialogSDK/bsp/peripherals/src/hw_qspi.c delete mode 100644 third_party/dialog/DialogSDK/bsp/peripherals/src/hw_rf.c delete mode 100644 third_party/dialog/DialogSDK/bsp/peripherals/src/hw_timer0.c delete mode 100644 third_party/dialog/DialogSDK/bsp/peripherals/src/hw_trng.c delete mode 100644 third_party/dialog/DialogSDK/bsp/peripherals/src/hw_uart.c delete mode 100644 third_party/dialog/DialogSDK/bsp/peripherals/src/hw_watchdog.c delete mode 100644 third_party/dialog/DialogSDK/bsp/peripherals/src/hw_wkup.c delete mode 100644 third_party/dialog/DialogSDK/bsp/peripherals/src/sys_tcs.c delete mode 100755 third_party/dialog/DialogSDK/bsp/startup/config.c delete mode 100755 third_party/dialog/DialogSDK/bsp/startup/startup_ARMCM0.S delete mode 100755 third_party/dialog/DialogSDK/bsp/startup/system_ARMCM0.c delete mode 100755 third_party/dialog/DialogSDK/bsp/startup/vector_table.S delete mode 100644 third_party/dialog/DialogSDK/interfaces/ftdf/include/ad_ftdf_config.h delete mode 100644 third_party/dialog/DialogSDK/interfaces/ftdf/include/ad_ftdf_phy_api.h delete mode 100644 third_party/dialog/DialogSDK/interfaces/ftdf/include/ftdf.h delete mode 100644 third_party/dialog/DialogSDK/interfaces/ftdf/include/ftdf_config_phy_api.h delete mode 100644 third_party/dialog/DialogSDK/interfaces/ftdf/src/ad_ftdf.c delete mode 100644 third_party/dialog/DialogSDK/interfaces/ftdf/src/ad_ftdf.h delete mode 100644 third_party/dialog/DialogSDK/interfaces/ftdf/src/ad_ftdf_phy_api.c delete mode 100644 third_party/dialog/DialogSDK/interfaces/ftdf/src/common.c delete mode 100644 third_party/dialog/DialogSDK/interfaces/ftdf/src/data.c delete mode 100755 third_party/dialog/DialogSDK/interfaces/ftdf/src/ftdfInfo.h delete mode 100644 third_party/dialog/DialogSDK/interfaces/ftdf/src/internal.h delete mode 100644 third_party/dialog/DialogSDK/interfaces/ftdf/src/main.c delete mode 100644 third_party/dialog/DialogSDK/interfaces/ftdf/src/power.c delete mode 100755 third_party/dialog/DialogTools/cli_programmer delete mode 100755 third_party/dialog/DialogTools/imgprep.sh delete mode 100644 third_party/dialog/README.md diff --git a/.travis/script.sh b/.travis/script.sh index bb1c7c4fa..453840d5c 100755 --- a/.travis/script.sh +++ b/.travis/script.sh @@ -128,17 +128,6 @@ build_cc2652() { arm-none-eabi-size output/cc2652/bin/ot-ncp-mtd || die } -build_da15000() { - git checkout -- . || die - git clean -xfd || die - ./bootstrap || die - COMMISSIONER=1 JOINER=1 SLAAC=1 DHCP6_CLIENT=1 DHCP6_SERVER=1 DNS_CLIENT=1 make -f examples/Makefile-da15000 || die - arm-none-eabi-size output/da15000/bin/ot-cli-ftd || die - arm-none-eabi-size output/da15000/bin/ot-cli-mtd || die - arm-none-eabi-size output/da15000/bin/ot-ncp-ftd || die - arm-none-eabi-size output/da15000/bin/ot-ncp-mtd || die -} - build_emsk() { export PATH=/tmp/arc_gnu_2017.03-rc2_prebuilt_elf32_le_linux_install/bin:$PATH || die @@ -265,7 +254,6 @@ build_samr21() { build_cc2538 build_cc2650 build_cc2652 - build_da15000 build_kw41z build_nrf52811 build_nrf52840 @@ -280,7 +268,6 @@ build_samr21() { build_cc2538 build_cc2650 build_cc2652 - build_da15000 build_kw41z build_nrf52811 build_nrf52840 @@ -295,7 +282,6 @@ build_samr21() { build_cc2538 build_cc2650 build_cc2652 - build_da15000 build_kw41z build_nrf52811 build_nrf52840 @@ -312,7 +298,6 @@ build_samr21() { build_cc2538 build_cc2650 build_cc2652 - build_da15000 build_kw41z build_nrf52811 build_nrf52840 @@ -332,13 +317,6 @@ build_samr21() { build_nrf52840 build_qpg6095 build_samr21 - - # DA15000 build failure: - # - # third_party/dialog/DialogSDK/bsp/peripherals/src/hw_aes_hash.c:399:99: \ - # error: bitwise comparison always evaluates to false [-Werror=tautological-compare] - # - # build_da15000 } [ $BUILD_TARGET != posix ] || { diff --git a/README.md b/README.md index be663123e..ff24d8c92 100644 --- a/README.md +++ b/README.md @@ -35,7 +35,7 @@ More information about Thread can be found at [threadgroup.org](http://threadgro # Who supports OpenThread? -ARMCascodaDialogMicrosoftNestNordicNXPParticleQorvoQualcommSTMicroelectronicsSynopsysTexas InstrumentsZephyr Project +ARMCascodaMicrosoftNestNordicNXPParticleQorvoQualcommSTMicroelectronicsSynopsysTexas InstrumentsZephyr Project # Getting started diff --git a/configure.ac b/configure.ac index 5ce636e85..3a6c18d7f 100644 --- a/configure.ac +++ b/configure.ac @@ -1691,12 +1691,12 @@ AC_DEFINE_UNQUOTED([OPENTHREAD_ENABLE_ECDSA], [${OPENTHREAD_ENABLE_ECDSA}], [Def AC_ARG_WITH(examples, [AS_HELP_STRING([--with-examples=TARGET], - [Specify the examples from one of: none, posix, cc1352, cc2538, cc2650, cc2652, da15000, efr32, emsk, gp712, kw41z, nrf52811, nrf52840, qpg6095, samr21 @<:@default=none@:>@.])], + [Specify the examples from one of: none, posix, cc1352, cc2538, cc2650, cc2652, efr32, emsk, gp712, kw41z, nrf52811, nrf52840, qpg6095, samr21 @<:@default=none@:>@.])], [ case "${with_examples}" in none) ;; - posix|cc1352|cc2538|cc2650|cc2652|da15000|efr32|emsk|gp712|kw41z|nrf52811|nrf52840|qpg6095|samr21) + posix|cc1352|cc2538|cc2650|cc2652|efr32|emsk|gp712|kw41z|nrf52811|nrf52840|qpg6095|samr21) if test ${enable_posix_app} = "yes"; then AC_MSG_ERROR([--with-examples must be none when POSIX apps are enabled by --enable-posix-app]) fi @@ -1737,11 +1737,6 @@ case ${with_examples} in AC_DEFINE_UNQUOTED([OPENTHREAD_EXAMPLES_CC2652],[${OPENTHREAD_EXAMPLES_CC2652}],[Define to 1 if you want to use cc2652 examples]) ;; - da15000) - OPENTHREAD_EXAMPLES_DA15000=1 - AC_DEFINE_UNQUOTED([OPENTHREAD_EXAMPLES_DA15000],[${OPENTHREAD_EXAMPLES_DA15000}],[Define to 1 if you want to use da15000 examples]) - ;; - efr32) OPENTHREAD_EXAMPLES_EFR32=1 AC_DEFINE_UNQUOTED([OPENTHREAD_EXAMPLES_EFR32],[${OPENTHREAD_EXAMPLES_EFR32}],[Define to 1 if you want to use efr32 examples]) @@ -1806,9 +1801,6 @@ AM_CONDITIONAL([OPENTHREAD_EXAMPLES_CC2650], [test "${with_examples}" = "cc2650" AC_SUBST(OPENTHREAD_EXAMPLES_CC2652) AM_CONDITIONAL([OPENTHREAD_EXAMPLES_CC2652], [test "${with_examples}" = "cc2652"]) -AC_SUBST(OPENTHREAD_EXAMPLES_DA15000) -AM_CONDITIONAL([OPENTHREAD_EXAMPLES_DA15000], [test "${with_examples}" = "da15000"]) - AC_SUBST(OPENTHREAD_EXAMPLES_EFR32) AM_CONDITIONAL([OPENTHREAD_EXAMPLES_EFR32], [test "${with_examples}" = "efr32"]) @@ -1982,7 +1974,6 @@ examples/platforms/cc1352/Makefile examples/platforms/cc2538/Makefile examples/platforms/cc2650/Makefile examples/platforms/cc2652/Makefile -examples/platforms/da15000/Makefile examples/platforms/efr32/Makefile examples/platforms/efr32/sleepy-demo/Makefile examples/platforms/efr32/sleepy-demo/efr32-sleepy-demo-ftd/Makefile diff --git a/doc/Makefile.am b/doc/Makefile.am index c2e34b8c3..2cc0999cf 100644 --- a/doc/Makefile.am +++ b/doc/Makefile.am @@ -34,7 +34,6 @@ EXTRA_DIST = \ $(srcdir)/images/Open-Thread-Logo-200x42.png \ $(srcdir)/images/openthread_logo.png \ $(srcdir)/images/ot-contrib-arm.png \ - $(srcdir)/images/ot-contrib-dialog.png \ $(srcdir)/images/ot-contrib-ms.png \ $(srcdir)/images/ot-contrib-nest.png \ $(srcdir)/images/ot-contrib-nordic.png \ diff --git a/doc/images/ot-contrib-dialog.png b/doc/images/ot-contrib-dialog.png deleted file mode 100644 index 372617e7e2c4d1b41295416fa4ea1b8ef5f70a76..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24056 zcmeI4Wmr^Q*MLVtIusBTq*HRpp<6&4Iz)0D1{kG>?iNuAQ9wWtBoqXsM1}^HW(etS z=?3X<@CkXJczJ((KRMSmGmE`f>~rtE*4cC5@JK^Vi3tB1J^%n9Qc+gWLVwPnUy`^O z=y&0@0Q5Tm&tBO80RRw?oxCmp;uEO=0MSyo&K;*a;M-zQI~yK|x!pY&kDHDCi8??+ z+RYvUeE@T!zX!8~+e$L7lvOd(!_6fb^@YHEV0(F(6D_M3e_81QOsE;-cs00}Ao-iSh#ZxcPu$Kt3^kKKkDeMk#!>B;jaoA*Q8p^Y?J* zpClQroSf{%czIo2U3pvuc zP)E4E6Wq?0{=_fjo}IIkBqQTVpg)h_&&$Rh4E{5eE#h~2XpX#Y5PM!A4O-zn|^@;7HL0X6y8iuF!M#-yQu^ zd~@iZHulbr);~d;LwRA=FdK9n1eyWx9|71~**V!EtnB_J)ve-i$5wMemE6MoB%KbCDekb~K>5IYtVNCp>dqNx&eLGf37Mq zpzu9mAXFH}Eo31q#0>6`fWI#rWjMmg z&e8o;$H@>+ii$SO;Xhmd=&*+Wj~xG`iOzp92=t^}Ng*KUxi}g2skUE3{>|bf&~FO= zGzI_DviO_%zsGR3g4s%;>$eCupCB5u4p2~xk55bh#LXvy7XBFOPpyA> zg7;+dtl|GTcfYm%=al}jKK{N0PI6sL-Vp{tFAW_#JL~`Lg#K#uYh=It!4x1)u>YXV zCk8}w{*(5fPJYw;ix04!Io!hiZ$ADqV<$dNY5vs*`s!{Daf19$UQX+t@?#Dav#@it zfjCLQZ6KB~UVB?h3Ep3gr!;@%v%H`Of!>awkKavCcmLJY;J=%m?*6OkFH2opxRVsR{QVs0Uz$%@ zom|Ake!|d3Z`@!~!a_mLpM_s%^#APmw7c^lr)iui zpW`|c(P@QqT&HQADWBsy6VYjfb6lrsoGG8zh|X`Csa<2n=3X@zrKr)iui zpW`|c(P@QqT&HQADWBsy6VYjfb6lrsoGG8zh|X`Csa<2n=3X@zrKr)iui zpW`|c(P@QqT&HQADWBsy6VYjfb6lrsoGG8zh|X`Csa<2n=3X@zrKr)iui zpW`|c(P@QqT&HQADWBsy6VYjfb6lrsoGG8zh|X`Csa<2n=3X@zrKr)iui zpW`|c(P@QqT&HQADWBsy6VYjfb6lrsoGG8zh|X`CtlS6ukNp2vjQq94L^ zML%tMyE-@w{iG&6R9OoQ0C=zf0Dgf0!0s{na}EG-<^urc%>V$gH~@gs?wRSAn*ab) zsfvQEj@!VZx2uyE|!jQQ4w*;2vXDqJG;N1LZ(8p*HUL-L@{tm9e6{(Nya%K$H zSNeikxCj^`!3>eu1%5}LC%QM8~!)&lF^Mr2c-fU!_EfUtA*J+vC{Wi zC1*zvv!W~RqqE%dm*n_ZwAW*qHotMkJ>zIlYkYoN*5y`)xpH6C`}(KXX1X#BUG{MX zVBIzC&0cMussws4kIc%3V{y4d>{3(Rng&V32tk*fKxhp=AD#}8@bcOVL{;$z!ReBP zsBdgp)Q{j=f;RW}1S2LNY*-$Y_8h(G;-0-&OIUxYD~;XD{pbnfLr^*_4-SuL%r+fm z3x+Bql8>{sgWgM37B)3Hm?mmJzt_;zq^;B@(^Zon+B{Obs4BOuL2q^Weakj@e%;p# zSzMe?MtliL99EeJvcoUvMSAVYKl?*K%ykHpL5_ zZjJiU^O5$Gf|2!CQjD6AxC1Zm*={f9z{o)t8tI{LL@^iYb&7w8tbj7qqlUC2i>J&+ z>2-(*1)65DxDbp~rSTCu*Pndb!Wwt>hgI{fBIiBjyD_6Ul)X*%N)aFf<4i!Ls-93jozxE*UBMUt7QV&F0yh82EN;IthjPP zMHkroDdG6G_3`DK>My3MMn(u?Dl%RyJwI3pw1x^ERZMR23OmgMuSyX3U1 zHW|%Pwv(WEE%4>urzVOv5sezf6|F}VM6bpS`fT{LZ+}b1zd3NPz&s8^e)iEvY$-NX z^;{f^$mbbvzvWpKK==ix$NMg4-ua&Rxjow=t~jv6R^{o!MR`q=ByQ(N*!nb!L^lTB zX%wkzg5@M=#0Mw2KCz4ah$ZT$>lXH%{NC>dx>yFtBLk#fc3Vzz|FT0l&DFGeyO3ZJ zm*rZIQ!6vc;ya&`N=!W}VQ04-THGqP+{xD5$`Iut9lbsW|WD#zd6*TSyS zHhWz4Op-3f@zLyBEE)tTOsvZnW{!$T&OXzx?Cmb8DBP(?(l8Y4VSAwA9LLIz&oz1F z$K}|`q}mpoW`YexL;TU*2RV|wBF@*Bsjb7CHJqtJoR#vbQL7-SXUXoa4$E8%WpSb9 zLqmtzdu@}4fj%n!S%wZYd1eU-GkZUtls~kjxErplWOP)|WJy?u#U56>6B~n4)&zNX zGKjyWPWCze%$aFuHaYIh!kF9fqvd_kY)?y-ExFQQYyQ5cJli4WnD%Z^fl8&vr{zo` za7J2yWljE==$#7}x~%6(j%%e?A9rz^zGdHam`Yu-)kc7u7XFqHt_%KMV$lN)CQ~_Fbf}eb(+n&RL%V!Q-ab-TIy+ zJGwmSj&7Vtg&t~jqH}<{txdKbv8f4qS?Ges^$TbS zgk_0&#vVgZ{hoI0j$x#33)=C}VVVs}KtHX4@nL2Kw?Ap85xp`!ikYuvMYru5W*$JW zD<~@v+%G1dRXMZe4L-W?!{{}89F_wfjR>2#O;T^8!1H@?x|mTRBc!)6k{4die+~aM zF%h>)@xx1CIDEH@UtMVbQnVRm%#3BrcImC*Z9-}#|M}2nUCeQAn+u zJ?{0=p4kl3k?SIM;(IP&0SPsGLP5+9suc%ouBMmM&gKLMeyQCLCs$my6ay}WVp!8y z50%PTZPD#i`qt0Gm77kmleZJdpf(iqINmj%d>0N_ ztR3X`vFFOAZ;eQKYq%lMR)l?&>$r`{vP%(*KfAm_Bw3J`k&(@t@`z$d07qTKYYN%i z$L?Fa^KDS5b+uHcOGEJOUL8fcsey);N6MxCE78YqGUk+YiTH^6+}voiKp%Hs)n%^S zjfIp2(YjYKt#-d+Gov({l<`x3Pd|K^qbRVFn3Nzqv6m6Lxq*zKOSA&i_iPjS%$RY5 zJ6?n1UUP(julEZW5U*o;W~mqNjXQX)-Vte)5MQ~j{pIfZwELH;a_28CP9mw7Q!hVh zo`w19^dgU~#U)~ZX7oJ1&by1oBD|w6Co++OGa*`$N(l;MTctZFzOrz;)sK*??(|sWZnbXlaVoD5yVek-)~`88>2DlvrM^5yI`vRxt$isb=tZ?C>C{qG z&ECuWWG0a})SN$RqDNd8q#~ou*T|V8NrqItEmCR!-Kmy^5zApZS+8YxaJ?2dYIEeO zk9wF^%S`V#xMpFzz;j%U!{eEX4SbdeUY1cbsr*XN%ILGH6QB@N_42$@?gbjgbFSk_@ zVSpRcDak7S))8q3<+&8w!0W7KOI2#ZN67pI{uy4UP-#QS6<=Z9Fp0-;5Mf^O-SY-F1kfBeM|fi-qSX5q1k5b_?)JxL&bf z6WtDn8yLJC`3$M$4^=i4^L!``KB!WJURrI5NR@qc27MR;PE^)xcS5v2G1= zsG%JfL7>E^B`Z~@HfiH4bzZ2=#BxLZk<}R=uofTdcoi?Hf{}_fgRZGz;>^S|W5;*R z#QqQA0Tx>OF#}L7dFJH^4x48ZudRT??RfX)G;t3iqi@~wC}2HaPNJWnL0 zTHxfmUSe-gXm#yfHcGUQ+T%^}?4iu+ZBP&0i`UfE8XUwIuxM!#`h2h^b%|faB5T+i zA|2ElIt5WdN%vLaXIbubU%0?ENE%LpfEWX@31PCrs3mr1@n?zAq>Q)k5^LXJFueXG zaha&*D@!4(Jt5WpNKew1vG>l4Dc_t_CrG@fTuE6K`)u$!+;Cxl&x6B7-$;ctJID_f z#`@e(u8nCPAEs)#LZU8Yw}LCvEz>b}2fd}Z7!nog?{BpIN^HWhwo3@SYTbbqZJi;m z*aspdBPWW-C+u%u0$%;vZY$CIW_fC`&|*t)oDjwE6O~v4kM_UIL5p5Bdqa( zXQj*36S11UMKXe0)j+7mM+Pvpp0wFj)5~7=_f3&%tNq@Yw%*X=?XPMd2#s9$1O=~$ z;m0>QiQf{aAlTr)kqO&X7+)9kQ0{)%gZtt3fI<&$b#tNF_s{n^Ze%R5G5{{>5+U)J zN0MTz^ziR!?b7Jh;L5OmO}LB^64DEQJ5WXYcDSc|XK+jPR&)>9i4`Q;)#T zOsq-EX$j`cOYXs{X&l*(RM$$)22I4@HN6Y6_6GU9yu>6|oxds;@exPw$YJH0nY!?3Qxy;d>i_J-D4#6N$8qC5*m|Hb5cEp!X(xB%r`koFh(ccS z;mz$7nND()L>?KJCzy1c})#xU#|&?h3U%uS4T(3QvJ9Qn1Vzq#RLbrt(=vD zc3-WY2RoGFJ-GUDW06WHhf@kDT_MRT-*LIAUl8$-(XbyQS-BFkx*ZIB#B9UaK`!Jz zWY$EVO=Y3nows?15sOwy-EOt!uvjI$f!u9%(MqCM@L}W+F%H060;Oo*n76h@kb9Vf zWHba_K^fAe_ea)&31KGNk2zh!&q+$U7Sdm5uzv!=pEEXc{r98pzqUl$(kv; zG~nfj?~O)EFZDh(KB8Bk4U*~Z>KsnyX`~wsE$4ctjCf_rgsPaOi)&wXJ;cO&_K>uF zvy*|g{YyTD6r~O)eLX#EMOT09RH9Id6^Iq$=rNqm^EfKi`d!l_bNKhK8${O|ji|ex z0>kWjVVRIS9gfx&(r%!+)x(5W-q7eusIokWHtJym+3=k)XW(QjB55e@_0aQ#Hjv_X zyoRJXT2QA*+*F_Ok$+5*S-`Dcq9*w0b5|)|C#Z>-lcWO{Ukhpho!8qU+{2O2J3QYS zQ%4p9i()Oc$wrs~C>Hl>=g;KqZ<1u)T_E5Xk^+2uGpp}=lilFP+k+JPKKi3lYE$k` zS2ctP#n-Vg1c#X)S8z0%3$i_Zy5MbI3LR-b!C&dX*h16G!(W zH>l}L@#`%buiGG_ju}fND&|8{z3ruW`DALBu=of+v_Lm_zV8}M6pZTL^?OSgh5`1s zl&;G37$T0Q8#bUIsRzn>{6GN=05Dt6drBsyZ};R(wYd8~?%{m(5#OPly`tW%po5|4 zpHc%Pv6lW=H!A%#vPx28W296Kx4hfe4L6^xTBEeSX5%2zyYb^iIq{n!z#XiBQHeV^ zH8Jf?F)LD0CB-~!Hqc!`g^5Q(1ud9^5!aVVB7o+GuE%v{S=ETwa1CJmH7u+;pUkw$x4w$(R7o}YeAoXbJ|d2+$S1&%PQmJsrZ%TcFO}8g2)*_aea`~L zj@`oqGo}CbO~8j@8NoS&p=>@zAgtSE=dmzGl105wv6PAzC{l^|J~v4;7H1SOiLODP z*~8*B%AmZcoYrkwEix*`sqta9!`OSvCf47FR(oW-2IkE}CFm7iy?(TH&{UdQAEm5H zX;bii_{Yo7n^EvDezP0#Dbz`+wyGfWvc^UVIozP zB$pbq_MbL3$q$B0y5>&Sbs^CA*^FtZb&7{2YkK3$B3w2DEE({xn22_4Z@0df`>1M| zOcFaIVq7w2x}#IaBQusWvy+!(>%L`F*2*&#>NUjY0mWy=mLR~$RCQb03#-q%mL=w) zeaBvmBa(XubOn~FYoOb!pL&mIQe1C-t#9$R>v0dlMrCBd^h!*K`PRF@Oh}3B2LmwS z!FXSuhrF3pyH0@a2ZAvW;aA$+L~m8u8It=6WDms^8$;eDFz=REZk5g@-!a;rsJWZw zUaest_9`%6X(!3!+gJY#$O}?3j2Ky+y@7(@WUf|TUmIS+u02712Z~}2k;A8hdLxI+ znk-cQgBLn3)(v$H6lQV*l8WyPDqxpuV}WJ6FFm3(_b?sSF%Y!~AKbYT>n^(8aVUhV zIQAhBIz}!VntDG+FIQ4E(DG7jVdv0_wTWo+q;>e$heVh+(uaMuTM{J&nRdc1dvegT z>XOfnhh;skM_O@Dl(D#zxOA_r5SSRvmtc@VXbm80;y(1 zdh{d;@0$e3Y6~^oATMTO<)ozTc?P*dC#%W8L8%nzi@r=4KW^ruQoJ1ikt>odB1&J- zehs&}=(O=Td)C|4!5~GRSr2tVSDtyq5mGSsI*V}8A##Ou&&G4>$ zQ=t{APylQ()o+pT*+D8w_2QH(g=g6GT5JB0XW5Ooo)_^Yt$7OM6gXa*dBZY7iD6Ep z!rP3VJa`bufZA)`uo!xlyj3?Jg1$o)F#cn=52+$kGgmNbl(?Uco!%@!#*wK=3}mWP z9kfvp!J_7+4ncfYiM5>+@ZuS;!7M`n|~R zM$?g&;@mtJ9U!c>*4j>={boNXI%A8VGla$8j5g%*QJg=l@Cj|gQylFb>$*C9n)=RkzA%x3m5|OLam_| z?K%@uv`N=rmNQaY=!kGN>9W}u6oK&FbK}ibmByU-Ixp+vM%qkTd|G-?=*2?G3RV)5 z2ZG}RWX;~Zi|WU{1l9*fXRv3Fhd;KA7QJuCxK>e-(qmt)t*6`NRB$^=p4~w_7qwl= z_B05Ce!*g!Q@l>Iai08B7Q5vrcXOU5H^JD#hJ}Q2Zx1D5o#@(#0u43p&8)x<>`GO0 z$6%pD>HG0?(kANUTNvePMvjZMm;zt(%qQSt!@^k}q*P*!qoWh>dHLXex@&pN&5b}c zqidUuy~jqc6O6a#c*Jv&-<0l+kGH^E*&WggilOsws)a**d|JJzSe?9UOKEASdpC&; ziI0#eh&X@ztO0+SRnGdh7N4y{yCq3QTouThT#lE7?p17|ae_1-j1!kt#;2m6-S_d7 zow4M!l&;9T2+zf{^cuABf4e#M@r_hoc8d+041#%t`UO45n5Y{KfQLG->`>OA+akRz zC;65j?%Wej?}GaQtAdiKg*1*P<}|~ObtS5dc=$Hw-EgbIxULI|&WIu9`7vuy4^^0$ zs0##HFQ9OFAGW1H|DDW+iR{y!d3PIPJ0)LMm(1!b|7}lLF$0Z&-<(>$nZj#O+C1Tl z_5v&_4MEC!LXlFSpQN#Of$i-bkfl3~W-Ev+JfFM(%TT#1HOu5XIU+>4+IaXd-u8Vf zs_3cP4@6)-txBUaZu+~fdX$ihe~Rn{BwpEvaYw@^#*z&fKMbZ92aXz+3v=Sk6e(Li z+j(7l)0v|2?Y=2~NR3;uBUF2Zm4Reg(%F&z*-dSN0k7! z*C?0DTR&=y(0x8)nn*Cl=A0ufIn3V+%X`}RMQtr7A?D7_RZ8OCC0ha~FRwtM?Hb8$ zS8@w!iNe=BcYiilfi=GGG6O+;q@lv*)#jaeI-rmDu*G14#&mIeaAFHx3du1(}D1w)(m^ETf%lxm`+p4iaNrFfY2P8$d&$O9ZXn5-=l zq9)m{0s5$Jj4}Y&UBa-58JymQsAWOgd^f7=N2E2yO>Bo(;*q(Y-pS1G9=Vx=O!S^_ zXxxaGFlFH;sBUW)w>3Bt&D*f7Z}Zn9d#KoSoh`chGxsi32yl4tzE-{>rL=1BsN*HJ zdQOtvAy9h?g~jB$3{oRR=ppw#A2$Pv>Zh6nU1ju=ZNC3dnO;OEpR^Ryj{1_nk79xk zByB0DZ6tjziR5$LJtS@SW-IpWo7O_faEw^DG&}ov`R}2ebewI*FXl>Z>ept(dj|}J zHD@s6u)-jYT$t6Zz>TgU91nTD+O1F*>lhw0uECw73Dr!9a)>Md_BL&zBKPPEWxVAA zqH7yl?uwQvd~uJm>;oI=K||4dr4Zrj;P(?|5A;nR7^3VF4$-%U^rqAFEk0QyX>60y zIli;PAKfbR49F|l+bQ1igIr!~u%f}(Y1*RT!0GOOyXk#@dWdNEs;Pv=;1r#oRbaI` z;in)Ok($ofo-XoWjUubNGxcHhcyWh&NbJGKh?DeKOW5BTE-*5W`(&GeH+1-=G()8z zWL?3Nx%&%{1eLh`0&3Y7JQ*~W(s@96txPVEg>+t>yo~#_6GtpD=OAn z2iybdlH9mtEl!tCqQI#2@!G{`SJUIxg)8PD#h}zs<@U|B>%PM>MmKL?RAtJQ(c`7M z_b$Us!Kr_=(!qfrdvt+-|G`Q{N|tnam$ccg)-Lhd$i&dT>UxNH58-`}s??l@P0*d0 znu_iRh29ci>L4uMfJJmgQ}PTrq&ymKr}53+>SPtgye$IqVggh(je)Q}qm@UTF?i3p*VU8Z>NC@$dXc-8#{u}M z(#1QrEnu8>niqN$7T&HZyGMiihlk^0%^!~Z2;YhcUe{~N(+(Q6ou0W7b}gE`b%HVH z;=z?WIMD3J1rZ|^%O9sa+KhD@o)H{VKV-A~j=mQtj_5@u+ulJU*%KgE3M^(IPTNH>PVg?}dWhEUszOc7N1?>CnuO7@kDM=vN zAzEIXUwF}dY`aKqU=i2;j_%1TVny|bshK!$Vhp=j8i93K8fKKl-5(`%o{`YMhuZ-A z3uHZ*b%nry2L)atloqXS?z6eeN3;f#KvLWATYw}Z;f3J%j9FCi4(B}j_IieExP+K* zNCK2wuX#P%ma}0fGNE#-PZX#5&W%ED*4~Gc;7fBakv-xgk_UFGO3~4OUJ) z#k2vIa^`wD_2NZG=CvhXptq%JjRN_-cxe)odYn0Zxp5^gH~Yu#Qg*Dt)83pFMZMSa z?O^m~39}&Phd4ts0l#TEYeH$1+l++q=S6AKeU*NYURnIdt$S()BEt= zZ0a*pEk>m6Wj=I;opYj=9=7G&0`)^IGULh?*5L_H-Yvg>UixRK-fN8AlVit6n&-NYEn~C6tJBkbku_M{{mMe|9WRsVP%ZODe~OzM#VL zHJne6E*hiYS~pR&jQMvbYW;cArt-F}emKR|q(-TH?PRDui`xIQ# z>l5WPTnKkqZUN+?d3ST+GQrE&GjE^Um8?NoflrN`Bi;{K?LEs0N=0_?X2&j;baQiH zHBi{-T;A`YZzzd~H+dh=s&2X -# -# Configure OpenThread for the specified architecture. -# -# arch - The architecture to configure. -# -define configure-arch -$(ECHO) " CONFIG $(TargetTuple)..." -(cd $(BuildPath)/$(TargetTuple) && $(AbsTopSourceDir)/configure \ -INSTALL="$(INSTALL) $(INSTALLFLAGS)" \ -CPP="$(CPP)" CC="$(CC)" CXX="$(CXX)" OBJC="$(OBJC)" OBJCXX="$(OBJCXX)" AR="$(AR)" RANLIB="$(RANLIB)" NM="$(NM)" STRIP="$(STRIP)" CPPFLAGS="$(CPPFLAGS)" CFLAGS="$(CFLAGS)" CXXFLAGS="$(CXXFLAGS)" LDFLAGS="$(LDFLAGS)" \ ---host=arm-none-eabi \ ---prefix=/ \ ---exec-prefix=/$(TargetTuple) \ -$(configure_OPTIONS)) -endef # configure-arch - -# -# build-arch -# -# Build the OpenThread intermediate build products for the specified -# architecture. -# -# arch - The architecture to build. -# -define build-arch -$(ECHO) " BUILD $(TargetTuple)" -$(MAKE) $(JOBSFLAG) -C $(BuildPath)/$(TargetTuple) --no-print-directory \ -all -endef # build-arch - -# -# stage-arch -# -# Stage (install) the OpenThread final build products for the specified -# architecture. -# -# arch - The architecture to stage. -# -define stage-arch -$(ECHO) " STAGE $(TargetTuple)" -$(MAKE) $(JOBSFLAG) -C $(BuildPath)/$(TargetTuple) --no-print-directory \ -DESTDIR=$(AbsTopResultDir) \ -install -endef # stage-arch - -# -# ARCH_template -# -# Define macros, targets and rules to configure, build, and stage the -# OpenThread for a single architecture. -# -# arch - The architecture to instantiate the template for. -# -define ARCH_template -CONFIGURE_TARGETS += configure-$(1) -BUILD_TARGETS += do-build-$(1) -STAGE_TARGETS += stage-$(1) -BUILD_DIRS += $(BuildPath)/$(TargetTuple) -DIRECTORIES += $(BuildPath)/$(TargetTuple) - -configure-$(1): target_CPPFLAGS=$($(1)_target_CPPFLAGS) -configure-$(1): target_CFLAGS=$($(1)_target_CFLAGS) -configure-$(1): target_CXXFLAGS=$($(1)_target_CXXFLAGS) -configure-$(1): target_LDFLAGS=$($(1)_target_LDFLAGS) - -configure-$(1): $(BuildPath)/$(TargetTuple)/config.status - -$(BuildPath)/$(TargetTuple)/config.status: | $(BuildPath)/$(TargetTuple) - $$(call configure-arch,$(1)) - -do-build-$(1): configure-$(1) - -do-build-$(1): - +$$(call build-arch,$(1)) - -stage-$(1): do-build-$(1) - -stage-$(1): | $(TopResultDir) - $$(call stage-arch,$(1)) - -$(1): stage-$(1) -endef # ARCH_template - -.DEFAULT_GOAL := all - -all: stage - -# -# cortex-m0 -# - -cortex-m0_target_ABI = cortex-m0 -cortex-m0_target_CPPFLAGS = -mcpu=cortex-m0 -mfloat-abi=soft -mthumb -cortex-m0_target_CFLAGS = -mcpu=cortex-m0 -mfloat-abi=soft -mthumb -cortex-m0_target_CXXFLAGS = -mcpu=cortex-m0 -mfloat-abi=soft -mthumb -cortex-m0_target_LDFLAGS = -mcpu=cortex-m0 -mfloat-abi=soft -mthumb - -# Instantiate an architecture-specific build template for each target -# architecture. - -$(foreach arch,$(ARCHS),$(eval $(call ARCH_template,$(arch)))) - -# -# Common / Finalization -# - -configure: $(CONFIGURE_TARGETS) - -build: $(BUILD_TARGETS) - -stage: $(STAGE_TARGETS) - -DIRECTORIES = $(TopResultDir) $(TopResultDir)/$(TargetTuple)/lib $(BUILD_DIRS) - -CLEAN_DIRS = $(TopResultDir) $(BUILD_DIRS) - -all: stage - -$(DIRECTORIES): - $(ECHO) " MKDIR $@" - @$(MKDIR_P) "$@" - -clean: - $(ECHO) " CLEAN" - @$(RM_F) -r $(CLEAN_DIRS) - -help: - $(ECHO) "Simply type 'make -f $(firstword $(MAKEFILE_LIST))' to build OpenThread for the following " - $(ECHO) "architectures: " - $(ECHO) "" - $(ECHO) " $(ARCHS)" - $(ECHO) "" - $(ECHO) "To build only a particular architecture, specify: " - $(ECHO) "" - $(ECHO) " make -f $(firstword $(MAKEFILE_LIST)) " - $(ECHO) "" diff --git a/examples/platforms/Makefile.am b/examples/platforms/Makefile.am index 8ba21e8d8..7a1e05569 100644 --- a/examples/platforms/Makefile.am +++ b/examples/platforms/Makefile.am @@ -35,7 +35,6 @@ DIST_SUBDIRS = \ cc2538 \ cc2650 \ cc2652 \ - da15000 \ efr32 \ emsk \ gp712 \ @@ -70,10 +69,6 @@ if OPENTHREAD_EXAMPLES_CC2652 SUBDIRS += cc2652 endif -if OPENTHREAD_EXAMPLES_DA15000 -SUBDIRS += da15000 -endif - if OPENTHREAD_EXAMPLES_EFR32 SUBDIRS += efr32 endif @@ -121,7 +116,6 @@ PRETTY_SUBDIRS = \ cc2538 \ cc2650 \ cc2652 \ - da15000 \ efr32 \ emsk \ gp712 \ diff --git a/examples/platforms/Makefile.platform.am b/examples/platforms/Makefile.platform.am index 021fab2c3..279d66211 100644 --- a/examples/platforms/Makefile.platform.am +++ b/examples/platforms/Makefile.platform.am @@ -57,10 +57,6 @@ if OPENTHREAD_EXAMPLES_CC2652 include $(top_srcdir)/examples/platforms/cc2652/Makefile.platform.am endif -if OPENTHREAD_EXAMPLES_DA15000 -include $(top_srcdir)/examples/platforms/da15000/Makefile.platform.am -endif - if OPENTHREAD_EXAMPLES_EFR32 include $(top_srcdir)/examples/platforms/efr32/Makefile.platform.am endif diff --git a/examples/platforms/da15000/Makefile.am b/examples/platforms/da15000/Makefile.am deleted file mode 100755 index 71842399a..000000000 --- a/examples/platforms/da15000/Makefile.am +++ /dev/null @@ -1,121 +0,0 @@ -# -# Copyright (c) 2016, The OpenThread Authors. -# All rights reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions are met: -# 1. Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# 2. Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer in the -# documentation and/or other materials provided with the distribution. -# 3. Neither the name of the copyright holder nor the -# names of its contributors may be used to endorse or promote products -# derived from this software without specific prior written permission. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE -# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -# POSSIBILITY OF SUCH DAMAGE. -# - -include $(abs_top_nlbuild_autotools_dir)/automake/pre.am - -lib_LIBRARIES = libopenthread-da15000.a - -# Do not enable -pedantic-errors -override CFLAGS := $(filter-out -pedantic-errors,$(CFLAGS)) -override CXXFLAGS := $(filter-out -pedantic-errors,$(CXXFLAGS)) - -libopenthread_da15000_a_CPPFLAGS = \ - -I$(top_srcdir)/include \ - -I$(top_srcdir)/examples/platforms \ - -I$(top_srcdir)/examples/platforms/da15000 \ - -I$(top_srcdir)/examples/platforms/da15000/crypto \ - -I$(top_srcdir)/src/core \ - -I$(top_srcdir)/third_party/dialog/DialogSDK/bsp/config \ - -I$(top_srcdir)/third_party/dialog/DialogSDK/bsp/include \ - -I$(top_srcdir)/third_party/dialog/DialogSDK/bsp/memory/include \ - -I$(top_srcdir)/third_party/dialog/DialogSDK/bsp/osal \ - -I$(top_srcdir)/third_party/dialog/DialogSDK/bsp/peripherals/include \ - -I$(top_srcdir)/third_party/dialog/DialogSDK/interfaces/ftdf/include \ - -I$(top_srcdir)/third_party/dialog/DialogSDK/interfaces/ftdf/src \ - -I$(top_srcdir)/third_party/mbedtls/repo/include \ - -include$(top_srcdir)/examples/platforms/da15000/custom_config_qspi.h \ - -Wno-sign-compare \ - -Wno-unused-parameter \ - -Wno-type-limits \ - -Wno-unused-variable \ - -Wno-missing-field-initializers \ - -fno-strict-aliasing \ - $(MBEDTLS_CPPFLAGS) \ - $(NULL) - -PLATFORM_SOURCES = \ - alarm.c \ - flash.c \ - logging.c \ - misc.c \ - radio.c \ - random.c \ - system.c \ - uart.c \ - crypto/aes_alt.c \ - $(NULL) - -DIALOG_SOURCES = \ - @top_builddir@/third_party/dialog/DialogSDK/bsp/memory/src/qspi_automode.c \ - @top_builddir@/third_party/dialog/DialogSDK/bsp/peripherals/src/hw_aes_hash.c \ - @top_builddir@/third_party/dialog/DialogSDK/bsp/peripherals/src/hw_cpm.c \ - @top_builddir@/third_party/dialog/DialogSDK/bsp/peripherals/src/hw_crypto.c \ - @top_builddir@/third_party/dialog/DialogSDK/bsp/peripherals/src/hw_dma.c \ - @top_builddir@/third_party/dialog/DialogSDK/bsp/peripherals/src/hw_gpadc.c \ - @top_builddir@/third_party/dialog/DialogSDK/bsp/peripherals/src/hw_gpio.c \ - @top_builddir@/third_party/dialog/DialogSDK/bsp/peripherals/src/hw_hard_fault.c \ - @top_builddir@/third_party/dialog/DialogSDK/bsp/peripherals/src/hw_otpc.c \ - @top_builddir@/third_party/dialog/DialogSDK/bsp/peripherals/src/hw_qspi.c \ - @top_builddir@/third_party/dialog/DialogSDK/bsp/peripherals/src/hw_rf.c \ - @top_builddir@/third_party/dialog/DialogSDK/bsp/peripherals/src/hw_timer0.c \ - @top_builddir@/third_party/dialog/DialogSDK/bsp/peripherals/src/hw_trng.c \ - @top_builddir@/third_party/dialog/DialogSDK/bsp/peripherals/src/hw_uart.c \ - @top_builddir@/third_party/dialog/DialogSDK/bsp/peripherals/src/hw_watchdog.c \ - @top_builddir@/third_party/dialog/DialogSDK/bsp/peripherals/src/sys_tcs.c \ - @top_builddir@/third_party/dialog/DialogSDK/bsp/startup/config.c \ - @top_builddir@/third_party/dialog/DialogSDK/bsp/startup/startup_ARMCM0.S \ - @top_builddir@/third_party/dialog/DialogSDK/bsp/startup/system_ARMCM0.c \ - @top_builddir@/third_party/dialog/DialogSDK/bsp/startup/vector_table.S \ - @top_builddir@/third_party/dialog/DialogSDK/interfaces/ftdf/src/ad_ftdf.c \ - @top_builddir@/third_party/dialog/DialogSDK/interfaces/ftdf/src/ad_ftdf_phy_api.c \ - @top_builddir@/third_party/dialog/DialogSDK/interfaces/ftdf/src/common.c \ - @top_builddir@/third_party/dialog/DialogSDK/interfaces/ftdf/src/data.c \ - @top_builddir@/third_party/dialog/DialogSDK/interfaces/ftdf/src/main.c \ - @top_builddir@/third_party/dialog/DialogSDK/interfaces/ftdf/src/power.c \ - $(NULL) - -libopenthread_da15000_a_SOURCES = \ - $(PLATFORM_SOURCES) \ - $(DIALOG_SOURCES) \ - $(NULL) - -noinst_HEADERS = \ - custom_config_qspi.h \ - platform-da15000.h \ - $(NULL) - -PRETTY_FILES = \ - $(PLATFORM_SOURCES) \ - $(noinst_HEADERS) \ - $(NULL) - -Dash = - -libopenthread_da15000_a_LIBADD = \ - $(shell find $(top_builddir)/examples/platforms/utils $(Dash)type f $(Dash)name "*.o") - -include $(abs_top_nlbuild_autotools_dir)/automake/post.am diff --git a/examples/platforms/da15000/Makefile.platform.am b/examples/platforms/da15000/Makefile.platform.am deleted file mode 100644 index 0bb1e66d1..000000000 --- a/examples/platforms/da15000/Makefile.platform.am +++ /dev/null @@ -1,39 +0,0 @@ -# -# Copyright (c) 2017, The OpenThread Authors. -# All rights reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions are met: -# 1. Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# 2. Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer in the -# documentation and/or other materials provided with the distribution. -# 3. Neither the name of the copyright holder nor the -# names of its contributors may be used to endorse or promote products -# derived from this software without specific prior written permission. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE -# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -# POSSIBILITY OF SUCH DAMAGE. -# - -# -# da15000 platform-specific Makefile -# - -LDADD_COMMON += \ - $(top_builddir)/examples/platforms/da15000/libopenthread-da15000.a \ - $(NULL) - -LDFLAGS_COMMON += \ - -T $(top_srcdir)/third_party/dialog/DialogSDK/bsp/ldfile/da15000.ld \ - $(NULL) diff --git a/examples/platforms/da15000/README.md b/examples/platforms/da15000/README.md deleted file mode 100755 index b2bf70919..000000000 --- a/examples/platforms/da15000/README.md +++ /dev/null @@ -1,146 +0,0 @@ -# Dialog OpenThread DA15000 Example - -This directory contains example platform drivers for the [Dialog Semiconductor DA15000][da15000] - -[da15000]: https://support.dialog-semiconductor.com/connectivity/product/openthread-sandbox - -**NOTE:** Each Thread node requires a unique EUI-64. -Please make sure all Thread nodes in your network have a unique EUI-64 by setting HARDCODED_NODE_ID in radio.c to a unique value. - -**NOTE:** Current version works only with DA15000 - -## Toolchain - -Download and install the [GNU toolchain for ARM -Cortex-M][gnu-toolchain]. - -[gnu-toolchain]: https://launchpad.net/gcc-arm-embedded - -In a Bash terminal, follow these instructions to install the GNU toolchain and -other dependencies. - -```bash -$ cd -$ ./script/bootstrap -``` - -## Build Examples (How to build and flash): -```bash -$ cd -$ ./bootstrap -$ make -f examples/Makefile-da15000 clean -$ make -f examples/Makefile-da15000 -``` - -Execute script to prepare image for flashing: - -**NOTE:** Script is based on Dialog Tools binaries compiled for x86 Linux. - -```bash -$ cd ./third_party/dialog/DialogTools -$ ./imgprep.sh -``` - -Flash Binaries: - -**NOTE:** Flashing process requires JLinkGDBServer. Please visit https://www.segger.com/jlink-gdb-server.html for details. - -1. Open another terminal window in order to start gdb server. Write the command (Linux): - - ```bash - $ JLinkGDBServer -ir -if swd -speed auto -device Cortex-M0 -logtofile on -localhostonly - ``` -2. Return to previous terminal window and execute a command in order to flash the board: - - ```bash - $ ./cli_programmer gdbserver write_qspi_exec ../../../output/da15000/bin/ot-cli-ftd.bin - ``` - -## Interact: - -Board will indicate state of device according to LED blink speed. - -| Frequency | Role | -| --- | --- | -| 5Hz | Leader | -| 2Hz | Router | -| 0.5Hz | End Device | - - -1. Open terminal to /dev/ttyACM0 (serial port settings: 115200 8-N-1). -2. Type help for list of commands - -## Examples: -1. Create Topology and become Leader on channel 13. - ``` - > channel 13 - Done - > panid 0xface - Done - > ifconfig up - Done - > thread start - Done - ``` - Wait and see that LED started to blink with 5Hz. - - Check node state: - ``` - > state - Leader - ``` -2. Attach Router and ping Leader Mesh Local address. - - Open terminal for second device /dev/ttyACM1 and issue commands: - ``` - > channel 13 - Done - > panid 0xface - Done - > ifconfig up - Done - > thread start - ``` - - Wait until LED start to blink. Should blink slower. - - Check node state: - - ``` - > state - Router - ``` - - List addresses on terminal with Leader: - - ``` - > ipaddr - fdde:ad00:beef:0:0:ff:fe00:4400 - fdde:ad00:beef:0:92f5:9844:67ad:a0c9 - fe80:0:0:0:2c11:aba1:ecc1:96da - ``` - - Ping Leader from Router terminal: - - ``` - > ping fdde:ad00:beef:0:92f5:9844:67ad:a0c9 - 16 bytes from fdde:ad00:beef:0:92f5:9844:67ad:a0c9: icmp_seq=2 hlim=64 time=359ms - ``` - -## Remarks -* Validation - - The DA15000 example has been validated by Dialog Semiconductor with commit 1f6528e included. - -* Build environment - - The DA15000 example code and all required dependencies have been complied with gcc version 5.4.0 (20160609). - -## Troubleshooting -* Why can’t I see the VCOM port? - - The Segger Virtual COM port can be disabled by software configuration. If you can see the Segger - driver properly installed but the VCOM not showing up in the device manager, it’s probably disabled - by software. To re-enable it you have to run JLinkExe and issue the command ` vcom enable`.It is - required to power cycle the device to apply the change. - diff --git a/examples/platforms/da15000/alarm.c b/examples/platforms/da15000/alarm.c deleted file mode 100644 index e7ded312e..000000000 --- a/examples/platforms/da15000/alarm.c +++ /dev/null @@ -1,96 +0,0 @@ -/* - * Copyright (c) 2016, The OpenThread Authors. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the copyright holder nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - */ - -/** - * @file alarm.c - * Platform abstraction for the alarm - */ - -#include - -#include "platform-da15000.h" - -#include "hw_timer0.h" - -static bool sIsRunning = false; -static uint32_t sAlarm = 0; -static uint32_t sCounter; -volatile bool sAlarmFired = false; - -static void timer0_interrupt_cb(void) -{ - sCounter++; -} - -void da15000AlarmProcess(otInstance *aInstance) -{ - if ((sIsRunning) && (sAlarm <= sCounter)) - { - sIsRunning = false; - otPlatAlarmMilliFired(aInstance); - } -} - -void da15000AlarmInit(void) -{ - hw_timer0_init(NULL); - hw_timer0_set_clock_source(HW_TIMER0_CLK_SRC_FAST); - hw_timer0_set_pwm_mode(HW_TIMER0_MODE_PWM); - hw_timer0_set_fast_clock_div(HW_TIMER0_FAST_CLK_DIV_4); - hw_timer0_set_t0_reload(0x07D0, 0x07D0); - hw_timer0_register_int(timer0_interrupt_cb); - hw_timer0_set_on_clock_div(false); -} - -uint32_t otPlatAlarmMilliGetNow(void) -{ - return sCounter; -} - -void otPlatAlarmMilliStartAt(otInstance *aInstance, uint32_t t0, uint32_t dt) -{ - OT_UNUSED_VARIABLE(aInstance); - - sAlarm = t0 + dt; - sIsRunning = true; - - if (sCounter == 0) - { - hw_timer0_enable(); - } - - hw_timer0_unfreeze(); -} - -void otPlatAlarmMilliStop(otInstance *aInstance) -{ - OT_UNUSED_VARIABLE(aInstance); - - sIsRunning = false; - hw_timer0_freeze(); -} diff --git a/examples/platforms/da15000/crypto/aes_alt.c b/examples/platforms/da15000/crypto/aes_alt.c deleted file mode 100644 index 05ca31a8a..000000000 --- a/examples/platforms/da15000/crypto/aes_alt.c +++ /dev/null @@ -1,207 +0,0 @@ -/* - * Copyright (c) 2017, The OpenThread Authors. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the copyright holder nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - */ - -#include "aes_alt.h" - -#ifdef MBEDTLS_AES_ALT - -#include -#include - -#include - -#include "hw_aes_hash.h" -#include -#include "mbedtls/aes.h" - -static void mbedtls_zeroize(void *v, size_t n) -{ - volatile unsigned char *p = (unsigned char *)v; - - while (n--) - { - *p++ = 0; - } -} - -void mbedtls_aes_init(mbedtls_aes_context *ctx) -{ - memset(ctx, 0, sizeof(mbedtls_aes_context)); -} - -void mbedtls_aes_free(mbedtls_aes_context *ctx) -{ - if (ctx == NULL) - { - return; - } - - hw_aes_hash_disable_clock(); - mbedtls_zeroize(ctx, sizeof(mbedtls_aes_context)); -} - -int mbedtls_aes_setkey_enc(mbedtls_aes_context *ctx, const unsigned char *key, unsigned int keybits) -{ - int retval = 0; - - switch (keybits) - { - case 128: - ctx->hwKeyLen = HW_AES_128; - memcpy(ctx->aes_enc_key, key, 16); - break; - - case 192: - ctx->hwKeyLen = HW_AES_192; - memcpy(ctx->aes_enc_key, key, 24); - break; - - case 256: - ctx->hwKeyLen = HW_AES_256; - memcpy(ctx->aes_enc_key, key, 32); - break; - - default: - retval = MBEDTLS_ERR_AES_INVALID_KEY_LENGTH; - break; - } - - return retval; -} - -int mbedtls_aes_setkey_dec(mbedtls_aes_context *ctx, const unsigned char *key, unsigned int keybits) -{ - int retval = 0; - - switch (keybits) - { - case 128: - ctx->hwKeyLen = HW_AES_128; - memcpy(ctx->aes_dec_key, key, 16); - break; - - case 192: - ctx->hwKeyLen = HW_AES_192; - memcpy(ctx->aes_enc_key, key, 24); - break; - - case 256: - ctx->hwKeyLen = HW_AES_256; - memcpy(ctx->aes_enc_key, key, 32); - break; - - default: - retval = MBEDTLS_ERR_AES_INVALID_KEY_LENGTH; - break; - } - - return retval; -} - -/** - * \brief AES-ECB block encryption/decryption - * - * \param ctx AES context - * \param mode MBEDTLS_AES_ENCRYPT or MBEDTLS_AES_DECRYPT - * \param input 16-byte input block - * \param output 16-byte output block - * - * \return 0 if successful - */ -int mbedtls_aes_crypt_ecb(mbedtls_aes_context *ctx, int mode, const unsigned char input[16], unsigned char output[16]) -{ - int retval = 0; - - hw_aes_hash_enable_clock(); - hw_aes_hash_mark_input_block_as_last(); - hw_aes_hash_cfg_aes_ecb(ctx->hwKeyLen); - hw_aes_hash_store_keys(ctx->hwKeyLen, ctx->aes_enc_key, HW_AES_PERFORM_KEY_EXPANSION); - hw_aes_hash_cfg_dma((uint8_t *)input, (uint8_t *)output, 16); - - switch (mode) - { - case MBEDTLS_AES_ENCRYPT: - hw_aes_hash_encrypt(); - retval = 0; - break; - - case MBEDTLS_AES_DECRYPT: - hw_aes_hash_decrypt(); - retval = 0; - break; - - default: - retval = -1; - break; - } - - while (hw_aes_hash_is_active()) - { - ; - } - - return retval; -} - -int mbedtls_aes_self_test(int verbose) -{ - OT_UNUSED_VARIABLE(verbose); - - /* 128-bit Key 2b7e151628aed2a6abf7158809cf4f3c */ - const uint8_t key_128b[16] = {0x2b, 0x7e, 0x15, 0x16, 0x28, 0xae, 0xd2, 0xa6, - 0xab, 0xf7, 0x15, 0x88, 0x09, 0xcf, 0x4f, 0x3c}; - - int retval = 0; - mbedtls_aes_context aes; - uint8_t input[16] = {0}; - uint8_t output[16] = {0}; - uint8_t decrypt[16] = {0}; - - strcpy((char *)input, (const char *)"hw_aes_test"); - - mbedtls_aes_init(&aes); - - retval = mbedtls_aes_setkey_enc(&aes, (const unsigned char *)key_128b, 128); - VerifyOrExit(retval != 0, retval = -1); - - retval = mbedtls_aes_setkey_dec(&aes, (const unsigned char *)key_128b, 128); - VerifyOrExit(retval != 0, retval = -1); - - retval = mbedtls_aes_crypt_ecb(&aes, MBEDTLS_AES_ENCRYPT, input, output); - VerifyOrExit(retval != 0, retval = -1); - - retval = mbedtls_aes_crypt_ecb(&aes, MBEDTLS_AES_DECRYPT, output, decrypt); - VerifyOrExit(retval != 0, retval = -1); - - mbedtls_aes_free(&aes); - -exit: - return retval; -} - -#endif /* MBEDTLS_AES_ALT */ diff --git a/examples/platforms/da15000/crypto/aes_alt.h b/examples/platforms/da15000/crypto/aes_alt.h deleted file mode 100644 index 79a872fb0..000000000 --- a/examples/platforms/da15000/crypto/aes_alt.h +++ /dev/null @@ -1,167 +0,0 @@ -/* - * Copyright (c) 2017, The OpenThread Authors. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the copyright holder nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - */ - -#ifndef MBEDTLS_AES_ALT_H -#define MBEDTLS_AES_ALT_H - -#if !defined(MBEDTLS_CONFIG_FILE) -#include "da15000-mbedtls-config.h" -#else -#include MBEDTLS_CONFIG_FILE -#endif - -#ifdef MBEDTLS_AES_ALT - -#ifdef __cplusplus -extern "C" { -#endif - -typedef struct -{ - uint8_t hwKeyLen; - unsigned char aes_enc_key[32]; /* Encryption key */ - unsigned char aes_dec_key[32]; /* Decryption key */ -} mbedtls_aes_context; - -/** - * @brief Initialize AES context - * - * @param [in,out] ctx AES context to be initialized - */ -void mbedtls_aes_init(mbedtls_aes_context *ctx); - -/** - * @brief Clear AES context - * - * \param ctx AES context to be cleared - */ -void mbedtls_aes_free(mbedtls_aes_context *ctx); - -/** - * \brief AES key schedule (encryption) - * - * \param ctx AES context to be initialized - * \param key encryption key - * \param keybits must be 128, 192 or 256 - * - * \return 0 if successful, or MBEDTLS_ERR_AES_INVALID_KEY_LENGTH - */ -int mbedtls_aes_setkey_enc(mbedtls_aes_context *ctx, const unsigned char *key, - unsigned int keybits); - -/** - * \brief AES key schedule (decryption) - * - * \param ctx AES context to be initialized - * \param key decryption key - * \param keybits must be 128, 192 or 256 - * - * \return 0 if successful, or MBEDTLS_ERR_AES_INVALID_KEY_LENGTH - */ -int mbedtls_aes_setkey_dec(mbedtls_aes_context *ctx, const unsigned char *key, - unsigned int keybits); - -/** - * \brief AES-ECB block encryption/decryption - * - * \param ctx AES context - * \param mode MBEDTLS_AES_ENCRYPT or MBEDTLS_AES_DECRYPT - * \param input 16-byte input block - * \param output 16-byte output block - * - * \return 0 if successful - */ -int mbedtls_aes_crypt_ecb(mbedtls_aes_context *ctx, int mode, const unsigned char input[16], - unsigned char output[16]); - -/** - * \brief AES-CBC buffer encryption/decryption - * Length should be a multiple of the block - * size (16 bytes) - * - * \note Upon exit, the content of the IV is updated so that you can - * call the function same function again on the following - * block(s) of data and get the same result as if it was - * encrypted in one call. This allows a "streaming" usage. - * If on the other hand you need to retain the contents of the - * IV, you should either save it manually or use the cipher - * module instead. - * - * \param ctx AES context - * \param mode MBEDTLS_AES_ENCRYPT or MBEDTLS_AES_DECRYPT - * \param length length of the input data - * \param iv initialization vector (updated after use) - * \param input buffer holding the input data - * \param output buffer holding the output data - * - * \return 0 if successful, or MBEDTLS_ERR_AES_INVALID_INPUT_LENGTH - */ -int mbedtls_aes_crypt_cbc( mbedtls_aes_context *ctx, - int mode, - size_t length, - unsigned char iv[16], - const unsigned char *input, - unsigned char *output ); - -/** - * \brief AES-CTR buffer encryption/decryption - * - * Warning: You have to keep the maximum use of your counter in mind! - * - * Note: Due to the nature of CTR you should use the same key schedule for - * both encryption and decryption. So a context initialized with - * mbedtls_aes_setkey_enc() for both MBEDTLS_AES_ENCRYPT and MBEDTLS_AES_DECRYPT. - * - * \param ctx AES context - * \param length The length of the data - * \param nc_off The offset in the current stream_block (for resuming - * within current cipher stream). The offset pointer to - * should be 0 at the start of a stream. - * \param nonce_counter The 128-bit nonce and counter. - * \param stream_block The saved stream-block for resuming. Is overwritten - * by the function. - * \param input The input data stream - * \param output The output data stream - * - * \return 0 if successful - */ -int mbedtls_aes_crypt_ctr( mbedtls_aes_context *ctx, - size_t length, - size_t *nc_off, - unsigned char nonce_counter[16], - unsigned char stream_block[16], - const unsigned char *input, - unsigned char *output ); - -#ifdef __cplusplus -} -#endif - -#endif /* MBEDTLS_AES_ALT */ - -#endif /* MBEDTLS_AES_ALT_H */ diff --git a/examples/platforms/da15000/crypto/da15000-mbedtls-config.h b/examples/platforms/da15000/crypto/da15000-mbedtls-config.h deleted file mode 100644 index c929beccd..000000000 --- a/examples/platforms/da15000/crypto/da15000-mbedtls-config.h +++ /dev/null @@ -1,34 +0,0 @@ -/* - * Copyright (c) 2018, The OpenThread Authors. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the copyright holder nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - */ - -#ifndef DA15000_MBEDTLS_CONFIG_H -#define DA15000_MBEDTLS_CONFIG_H - -#define MBEDTLS_AES_ALT - -#endif // DA15000_MBEDTLS_CONFIG_H diff --git a/examples/platforms/da15000/custom_config_qspi.h b/examples/platforms/da15000/custom_config_qspi.h deleted file mode 100755 index cd4b93f35..000000000 --- a/examples/platforms/da15000/custom_config_qspi.h +++ /dev/null @@ -1,125 +0,0 @@ -/* - * Copyright (c) 2016, The OpenThread Authors. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the copyright holder nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - */ - -/** - * @file custom_config_qspi.h - * Board Support Package. User Configuration file for cached QSPI mode. - */ - -#ifndef CUSTOM_CONFIG_QSPI_H_ -#define CUSTOM_CONFIG_QSPI_H_ - -#include "bsp_definitions.h" - -// clang-format off - -#define dg_configBLACK_ORCA_IC_REV BLACK_ORCA_IC_REV_B -#define dg_configBLACK_ORCA_IC_STEP BLACK_ORCA_IC_STEP_B - -#undef CONFIG_USE_BLE -#define CONFIG_USE_FTDF - -#define __HEAP_SIZE 0x0600 -#define __STACK_SIZE 0x0100 - -#define dg_configUSE_LP_CLK LP_CLK_32768 -#define dg_configEXEC_MODE MODE_IS_CACHED -#define dg_configCODE_LOCATION NON_VOLATILE_IS_FLASH -#define dg_configEXT_CRYSTAL_FREQ EXT_CRYSTAL_IS_16M - -#define dg_configIMAGE_SETUP DEVELOPMENT_MODE -#define dg_configEMULATE_OTP_COPY (0) - -#define dg_configUSER_CAN_USE_TIMER1 (0) - -#define dg_configUSE_WDOG (0) - -#define dg_configFLASH_CONNECTED_TO (FLASH_CONNECTED_TO_1V8) -#define dg_configFLASH_POWER_DOWN (0) - -#define dg_configPOWER_1V8_ACTIVE (1) -#define dg_configPOWER_1V8_SLEEP (1) - -#define dg_configBATTERY_TYPE (BATTERY_TYPE_LIMN2O4) -#define dg_configBATTERY_CHARGE_CURRENT 2 // 30mA -#define dg_configBATTERY_PRECHARGE_CURRENT 20 // 2.1mA -#define dg_configBATTERY_CHARGE_NTC 1 // disabled - -#define dg_configUSE_USB 0 -#define dg_configUSE_USB_CHARGER 0 -#define dg_configALLOW_CHARGING_NOT_ENUM 1 - -#define dg_configUSE_ProDK (1) - -#define dg_configUSE_SW_CURSOR (1) - -#define dg_configDISABLE_BACKGROUND_FLASH_OPS (1) - -/*************************************************************************************************\ - * Memory layout specific config - */ -#define dg_configQSPI_CODE_SIZE (512 * 1024) - -/*************************************************************************************************\ - * FTDF specific config - */ -#define FTDF_NO_CSL /* Define this to disable CSL mode */ -#define FTDF_NO_TSCH /* Define this to disable TSCH mode */ -#define FTDF_LITE /* Define this to enable LITE mode (only transparent mode enabled) */ -#define FTDF_PHY_API /* Define this to enable PHY API mode (no FTDF adapter; - implies FTDF_LITE) */ -#define FTDF_PASS_ACK_FRAME /* Define this to pass ACK frame */ - -/*************************************************************************************************\ - * OS specific config - */ -#define OS_BAREMETAL - -/*************************************************************************************************\ - * Peripheral specific config - */ -#define dg_configRF_ENABLE_RECALIBRATION (0) - -#define dg_configUSE_HW_AES_HASH (1) -#define dg_configUSE_HW_TIMER0 (1) -#define dg_configUSE_HW_TRNG (1) - -#define dg_configFLASH_ADAPTER (0) -#define dg_configRF_ADAPTER (0) -#define dg_configUART_SOFTWARE_FIFO (1) -#define dg_configUART2_SOFTWARE_FIFO_SIZE (256) - -#define dg_configNVMS_ADAPTER (0) -#define dg_configNVMS_VES (0) - -/* Include bsp default values */ -#include "bsp_defaults.h" - -// clang-format on - -#endif /* CUSTOM_CONFIG_QSPI_H_ */ diff --git a/examples/platforms/da15000/flash.c b/examples/platforms/da15000/flash.c deleted file mode 100644 index a385cf326..000000000 --- a/examples/platforms/da15000/flash.c +++ /dev/null @@ -1,144 +0,0 @@ -/* - * Copyright (c) 2016, The OpenThread Authors. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the copyright holder nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - */ - -#include "platform-da15000.h" - -#include "qspi_automode.h" - -#define FLASH_BUFFER_SIZE 0x2000 -#define FLASH_SECTOR_SIZE 0x1000 -#define FLASH_PAGE_SIZE 0x0100 - -/* - * In case that user tries to write data to flash passing as source QSPI mapped flash address - * data must be first copied to RAM as during write QSPI controller can't read flash. - * To achieve this, small on stack buffer will be used to copy data to RAM first. - * This define specifies how much stack can be used for this purpose. - */ -#define ON_STACK_BUFFER_SIZE 16 - -otError utilsFlashInit(void) -{ - return OT_ERROR_NONE; -} - -uint32_t utilsFlashGetSize(void) -{ - return (uint32_t)FLASH_BUFFER_SIZE; -} - -otError utilsFlashErasePage(uint32_t aAddress) -{ - uint32_t flash_offset = aAddress & ~(FLASH_SECTOR_SIZE - 1); - - qspi_automode_erase_flash_sector(flash_offset); - - CACHE->CACHE_CTRL1_REG = CACHE_CACHE_CTRL1_REG_CACHE_FLUSH_Msk; - - return OT_ERROR_NONE; -} - -otError utilsFlashStatusWait(uint32_t aTimeout) -{ - OT_UNUSED_VARIABLE(aTimeout); - - return OT_ERROR_NONE; -} - -static inline bool FlashQspiAddress(const void *aBuf) -{ - if (((uint32_t)aBuf >= MEMORY_QSPIF_BASE) && ((uint32_t)aBuf < MEMORY_QSPIF_END)) - { - return true; - } - - return ((uint32_t)aBuf >= MEMORY_REMAPPED_BASE) && ((uint32_t)aBuf < MEMORY_REMAPPED_END) && - (REG_GETF(CRG_TOP, SYS_CTRL_REG, REMAP_ADR0) == 2); -} - -static size_t FlashWriteFromQspi(uint32_t aAddress, const uint8_t *aQspiBuf, size_t aSize) -{ - size_t written; - size_t offset = 0; - uint8_t buf[ON_STACK_BUFFER_SIZE]; - - /* - * qspi_automode_write_flash_page can't write data if source address points to QSPI mapped - * memory. To write data from QSPI flash, it will be first copied to small on stack - * buffer. This buffer can be accessed when QSPI controller is working in manual mode. - */ - while (offset < aSize) - { - size_t chunk = sizeof(buf) > aSize - offset ? aSize - offset : sizeof(buf); - memcpy(buf, aQspiBuf + offset, chunk); - - written = qspi_automode_write_flash_page(aAddress + offset, buf, chunk); - offset += written; - } - - return offset; -} - -uint32_t utilsFlashWrite(uint32_t aAddress, uint8_t *aData, uint32_t aSize) -{ - size_t written; - size_t offset = 0; - bool buf_from_flash = FlashQspiAddress(aData); - - while (offset < aSize) - { - /* - * If buf is QSPI Flash memory, use function that will copy source data to RAM - * first. - */ - if (buf_from_flash) - { - written = FlashWriteFromQspi(aAddress + offset, aData + offset, aSize - offset); - } - else - { - /* - * Try write everything, lower driver will reduce this value to accommodate - * page boundary and and maximum write size limitation - */ - written = qspi_automode_write_flash_page(aAddress + offset, aData + offset, aSize - offset); - } - - offset += written; - } - - CACHE->CACHE_CTRL1_REG = CACHE_CACHE_CTRL1_REG_CACHE_FLUSH_Msk; - - return aSize; -} - -uint32_t utilsFlashRead(uint32_t aAddress, uint8_t *aData, uint32_t aSize) -{ - return qspi_automode_read(aAddress, aData, aSize); - ; -} diff --git a/examples/platforms/da15000/logging.c b/examples/platforms/da15000/logging.c deleted file mode 100644 index 4d3023e46..000000000 --- a/examples/platforms/da15000/logging.c +++ /dev/null @@ -1,48 +0,0 @@ -/* - * Copyright (c) 2016, The OpenThread Authors. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the copyright holder nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - */ - -/** - * @file logging.c - * Platform abstraction for the logging - * - */ - -#include -#include -#include -#include - -#if (OPENTHREAD_CONFIG_LOG_OUTPUT == OPENTHREAD_CONFIG_LOG_OUTPUT_PLATFORM_DEFINED) || \ - (OPENTHREAD_CONFIG_LOG_OUTPUT == OPENTHREAD_CONFIG_LOG_OUTPUT_NCP_SPINEL) -OT_TOOL_WEAK void otPlatLog(otLogLevel aLogLevel, otLogRegion aLogRegion, const char *aFormat, ...) -{ - OT_UNUSED_VARIABLE(aLogLevel); - OT_UNUSED_VARIABLE(aLogRegion); - OT_UNUSED_VARIABLE(aFormat); -} -#endif diff --git a/examples/platforms/da15000/misc.c b/examples/platforms/da15000/misc.c deleted file mode 100644 index e324f8efc..000000000 --- a/examples/platforms/da15000/misc.c +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Copyright (c) 2016, The OpenThread Authors. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the copyright holder nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - */ - -#include - -#include "platform-da15000.h" - -#include "hw_cpm.h" -#include "sdk_defs.h" - -void otPlatReset(otInstance *aInstance) -{ - OT_UNUSED_VARIABLE(aInstance); - - hw_cpm_reboot_system(); -} - -otPlatResetReason otPlatGetResetReason(otInstance *aInstance) -{ - OT_UNUSED_VARIABLE(aInstance); - - return OT_PLAT_RESET_REASON_POWER_ON; -} - -void otPlatWakeHost(void) -{ - // TODO: implement an operation to wake the host from sleep state. -} diff --git a/examples/platforms/da15000/openthread-core-da15000-config.h b/examples/platforms/da15000/openthread-core-da15000-config.h deleted file mode 100644 index 0230e5ab4..000000000 --- a/examples/platforms/da15000/openthread-core-da15000-config.h +++ /dev/null @@ -1,117 +0,0 @@ -/* - * Copyright (c) 2016, The OpenThread Authors. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the copyright holder nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - */ - -/** - * @file - * This file includes DA15000 compile-time configuration constants for OpenThread. - */ - -#ifndef OPENTHREAD_CORE_DA15000_CONFIG_H_ -#define OPENTHREAD_CORE_DA15000_CONFIG_H_ - -/** - * @def OPENTHREAD_CONFIG_PLATFORM_INFO - * - * The platform-specific string to insert into the OpenThread version string. - * - */ -#define OPENTHREAD_CONFIG_PLATFORM_INFO "DA15000" - -/** - * @def SETTINGS_CONFIG_BASE_ADDRESS - * - * The base address of the pages to be used for non-volatile-settings storage. - */ -#define SETTINGS_CONFIG_BASE_ADDRESS 0x7B000 - -/** - * @def SETTINGS_CONFIG_PAGE_SIZE - * - * The page size of settings. - * - */ -#define SETTINGS_CONFIG_PAGE_SIZE 0x1000 - -/** - * @def OPENTHREAD_CONFIG_ENABLE_SOFTWARE_ACK_TIMEOUT - * - * Define to 1 if you want to enable software ACK timeout logic. - * - */ -#define OPENTHREAD_CONFIG_ENABLE_SOFTWARE_ACK_TIMEOUT 0 - -/** - * @def OPENTHREAD_CONFIG_ENABLE_SOFTWARE_RETRANSMIT - * - * Define to 1 if you want to enable software retransmission logic. - * - */ -#define OPENTHREAD_CONFIG_ENABLE_SOFTWARE_RETRANSMIT 0 - -/** - * @def OPENTHREAD_CONFIG_ENABLE_SOFTWARE_CSMA_BACKOFF - * - * Define to 1 if you want to enable software CSMA-CA backoff logic. - * - */ -#define OPENTHREAD_CONFIG_ENABLE_SOFTWARE_CSMA_BACKOFF 0 - -/** - * @def OPENTHREAD_CONFIG_ENABLE_SOFTWARE_ENERGY_SCAN - * - * Define to 1 if you want to enable software energy scanning logic. - * - */ -#define OPENTHREAD_CONFIG_ENABLE_SOFTWARE_ENERGY_SCAN 1 - -/** - * @def OPENTHREAD_CONFIG_ADDRESS_CACHE_ENTRIES - * - * The number of EID-to-RLOC cache entries. - * - */ -#define OPENTHREAD_CONFIG_ADDRESS_CACHE_ENTRIES 20 - -/** - * @def OPENTHREAD_CONFIG_LOG_OUTPUT - * - * The DA15000 platform provides an otPlatLog() function. - */ -#ifndef OPENTHREAD_CONFIG_LOG_OUTPUT /* allow command line override */ -#define OPENTHREAD_CONFIG_LOG_OUTPUT OPENTHREAD_CONFIG_LOG_OUTPUT_APP -#endif - -/** - * @def OPENTHREAD_CONFIG_MAX_STATECHANGE_HANDLERS - * - * The maximum number of state-changed callback handlers (set using `otSetStateChangedCallback()`). - * - */ -#define OPENTHREAD_CONFIG_MAX_STATECHANGE_HANDLERS 3 - -#endif // OPENTHREAD_CORE_DA15000_CONFIG_H_ diff --git a/examples/platforms/da15000/platform-da15000.h b/examples/platforms/da15000/platform-da15000.h deleted file mode 100644 index 6a2cfaf6c..000000000 --- a/examples/platforms/da15000/platform-da15000.h +++ /dev/null @@ -1,77 +0,0 @@ -/* - * Copyright (c) 2016, The OpenThread Authors. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the copyright holder nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - */ - -#ifndef PLATFORM_DA15000_H_ -#define PLATFORM_DA15000_H_ - -#include -#include - -#include - -/** - * This function initializes the radio service used by OpenThread. - * - */ -void da15000RadioInit(void); - -/** - * This function performs radio driver processing. - * - * @param[in] aInstance The OpenThread instance structure. - * - */ -void da15000RadioProcess(otInstance *aInstance); - -/** - * This function initializes the alarm service used by OpenThread. - * - */ -void da15000AlarmInit(void); - -/** - * This function performs alarm driver processing. - * - * @param[in] aInstance The OpenThread instance structure. - * - */ -void da15000AlarmProcess(otInstance *aInstance); - -/** - * This function initializes the random number service used by OpenThread. - * - */ -void da15000RandomInit(void); - -/** - * This function performs UART driver processing. - * - */ -void da15000UartProcess(void); - -#endif /* PLATFORM_PLATFORM_DA15000_H_ */ diff --git a/examples/platforms/da15000/radio.c b/examples/platforms/da15000/radio.c deleted file mode 100644 index dfb284c0b..000000000 --- a/examples/platforms/da15000/radio.c +++ /dev/null @@ -1,625 +0,0 @@ -/* - * Copyright (c) 2016, The OpenThread Authors. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the copyright holder nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - */ - -/** - * @file radio.cpp - * Platform abstraction for radio communication. - */ - -#include -#include - -#include - -#include "platform-da15000.h" -#include "common/logging.hpp" -#include "utils/code_utils.h" - -#include "ad_ftdf.h" -#include "ad_ftdf_phy_api.h" -#include "hw_otpc.h" -#include "hw_rf.h" -#include "internal.h" - -// clang-format off -#define FACTORY_TEST_TIMESTAMP (0x7F8EA08) // Register holds a timestamp of facotry test of a chip -#define FACTORY_TESTER_ID (0x7F8EA0C) // Register holds test machine ID used for factory test - -#define RADIO_DEFAULT_CHANNEL (11) -#define RADIO_EUI64_TABLE_SIZE (8) -#define RADIO_FRAMES_BUFFER_SIZE (32) -// clang-format on - -enum -{ - DA15000_RECEIVE_SENSITIVITY = -100, // dBm -}; - -static ftdf_dbm sRssiReal = -100; // Initialize with the worst power -static otInstance * sThreadInstance; -static otRadioState sRadioState = OT_RADIO_STATE_DISABLED; -static otRadioFrame sReceiveFrame[RADIO_FRAMES_BUFFER_SIZE]; -static otRadioFrame *sReceiveFrameAck; -static otRadioFrame sTransmitFrame; -static otError sTransmitStatus; -static bool sAckFrame = false; -static bool sDropFrame = false; -static bool sRadioPromiscuous = false; -static bool sTransmitDoneFrame = false; -static uint8_t sChannel = RADIO_DEFAULT_CHANNEL; -static uint8_t sEnableRX = 0; -static int8_t sTxPower = OPENTHREAD_CONFIG_DEFAULT_TRANSMIT_POWER; -static uint8_t sReadFrame = 0; -static uint8_t sWriteFrame = 0; -static uint32_t sSleepInitDelay = 0; - -static uint8_t sEui64[RADIO_EUI64_TABLE_SIZE]; -static uint8_t sReceivePsdu[RADIO_FRAMES_BUFFER_SIZE][OT_RADIO_FRAME_MAX_SIZE]; -static uint8_t sTransmitPsdu[OT_RADIO_FRAME_MAX_SIZE]; - -static void da15000OtpRead(void) -{ - hw_otpc_init(); // Start clock. - hw_otpc_disable(); // Make sure it is in standby mode. - hw_otpc_init(); // Restart clock. - hw_otpc_manual_read_on(false); - - __DMB(); - uint32_t *factoryTestTimeStamp = (uint32_t *)FACTORY_TEST_TIMESTAMP; - uint32_t *factoryTestId = (uint32_t *)FACTORY_TESTER_ID; - __DMB(); - - sEui64[0] = 0x80; // 80-EA-CA is for Dialog Semiconductor - sEui64[1] = 0xEA; - sEui64[2] = 0xCA; - sEui64[3] = (*factoryTestId >> 8) & 0xff; - sEui64[4] = (*factoryTestTimeStamp >> 24) & 0xff; - sEui64[5] = (*factoryTestTimeStamp >> 16) & 0xff; - sEui64[6] = (*factoryTestTimeStamp >> 8) & 0xff; - sEui64[7] = *factoryTestTimeStamp & 0xff; - - hw_otpc_manual_read_off(); - hw_otpc_disable(); -} - -void da15000RadioInit(void) -{ - uint16_t ptr; - - /* Wake up power domains */ - REG_CLR_BIT(CRG_TOP, PMU_CTRL_REG, FTDF_SLEEP); - - while (REG_GETF(CRG_TOP, SYS_STAT_REG, FTDF_IS_UP) == 0x0) - ; - - REG_CLR_BIT(CRG_TOP, PMU_CTRL_REG, RADIO_SLEEP); - - while (REG_GETF(CRG_TOP, SYS_STAT_REG, RAD_IS_UP) == 0x0) - ; - - REG_SETF(CRG_TOP, CLK_RADIO_REG, FTDF_MAC_ENABLE, 1); - REG_SETF(CRG_TOP, CLK_RADIO_REG, FTDF_MAC_DIV, 0); - - hw_rf_poweron(); - hw_rf_system_init(); - - ad_ftdf_init_phy_api(); - - da15000OtpRead(); - - sChannel = RADIO_DEFAULT_CHANNEL; - sTransmitFrame.mPsdu = sTransmitPsdu; - - for (ptr = 0; ptr != RADIO_FRAMES_BUFFER_SIZE; ptr++) - { - sReceiveFrame[ptr].mPsdu = &sReceivePsdu[ptr][0]; - } - - otLogInfoPlat(sThreadInstance, "Radio initialized", NULL); -} - -void otPlatRadioGetIeeeEui64(otInstance *aInstance, uint8_t *aIeeeEui64) -{ - OT_UNUSED_VARIABLE(aInstance); - - memcpy(aIeeeEui64, sEui64, RADIO_EUI64_TABLE_SIZE); -} - -void otPlatRadioSetPanId(otInstance *aInstance, uint16_t aPanid) -{ - otLogInfoPlat("Set PanId: %X", aPanid); - - ftdf_set_value(FTDF_PIB_PAN_ID, &aPanid); -} - -void otPlatRadioSetExtendedAddress(otInstance *aInstance, const otExtAddress *aAddress) -{ - otLogInfoPlat("Set Extended Address: %X%X%X%X%X%X%X%X", aAddress->m8[7], aAddress->m8[6], aAddress->m8[5], - aAddress->m8[4], aAddress->m8[3], aAddress->m8[2], aAddress->m8[1], aAddress->m8[0]); - - ftdf_set_value(FTDF_PIB_EXTENDED_ADDRESS, aAddress->m8); -} - -void otPlatRadioSetShortAddress(otInstance *aInstance, uint16_t aAddress) -{ - otLogInfoPlat("Set Short Address: %X", aAddress); - - ftdf_set_value(FTDF_PIB_SHORT_ADDRESS, &aAddress); -} - -otError otPlatRadioEnable(otInstance *aInstance) -{ - ftdf_bitmap32_t options; - otError error = OT_ERROR_NONE; - uint8_t modeCCA; - - otEXPECT_ACTION(sRadioState == OT_RADIO_STATE_DISABLED, error = OT_ERROR_INVALID_STATE); - - sThreadInstance = aInstance; - - sEnableRX = 1; - ftdf_set_value(FTDF_PIB_RX_ON_WHEN_IDLE, &sEnableRX); - - ftdf_set_value(FTDF_PIB_CURRENT_CHANNEL, &sChannel); - - modeCCA = FTDF_CCA_MODE_2; - ftdf_set_value(FTDF_PIB_CCA_MODE, &modeCCA); - - options = FTDF_TRANSPARENT_ENABLE_FCS_GENERATION; - options |= FTDF_TRANSPARENT_WAIT_FOR_ACK; - options |= FTDF_TRANSPARENT_AUTO_ACK; - - ftdf_enable_transparent_mode(FTDF_TRUE, options); - otPlatRadioSetPromiscuous(aInstance, false); - - otLogDebgPlat("Radio state: OT_RADIO_STATE_SLEEP", NULL); - sRadioState = OT_RADIO_STATE_SLEEP; - -exit: - return error; -} - -otError otPlatRadioDisable(otInstance *aInstance) -{ - sEnableRX = 0; - ftdf_set_value(FTDF_PIB_RX_ON_WHEN_IDLE, &sEnableRX); - ad_ftdf_sleep_when_possible(FTDF_TRUE); - - ftdf_fppr_reset(); - - otLogDebgPlat("Radio state: OT_RADIO_STATE_DISABLED", NULL); - sRadioState = OT_RADIO_STATE_DISABLED; - - return OT_ERROR_NONE; -} - -bool otPlatRadioIsEnabled(otInstance *aInstance) -{ - OT_UNUSED_VARIABLE(aInstance); - - return (sRadioState != OT_RADIO_STATE_DISABLED); -} - -otError otPlatRadioSleep(otInstance *aInstance) -{ - otError error = OT_ERROR_NONE; - - if (sRadioState == OT_RADIO_STATE_RECEIVE && sSleepInitDelay == 0) - { - sSleepInitDelay = otPlatAlarmMilliGetNow(); - return OT_ERROR_NONE; - } - else if ((otPlatAlarmMilliGetNow() - sSleepInitDelay) < dg_configINITIAL_SLEEP_DELAY_TIME) - { - return OT_ERROR_NONE; - } - - otEXPECT_ACTION(sRadioState == OT_RADIO_STATE_RECEIVE, error = OT_ERROR_INVALID_STATE); - - otLogDebgPlat("Radio state: OT_RADIO_STATE_SLEEP", NULL); - sRadioState = OT_RADIO_STATE_SLEEP; - - sEnableRX = 0; - ftdf_set_value(FTDF_PIB_RX_ON_WHEN_IDLE, &sEnableRX); - ad_ftdf_sleep_when_possible(FTDF_TRUE); - -exit: - return error; -} - -otError otPlatRadioReceive(otInstance *aInstance, uint8_t aChannel) -{ - otError error = OT_ERROR_NONE; - - otEXPECT_ACTION(sRadioState != OT_RADIO_STATE_DISABLED, error = OT_ERROR_INVALID_STATE); - - ad_ftdf_wake_up(); - - sEnableRX = 0; - ftdf_set_value(FTDF_PIB_RX_ON_WHEN_IDLE, &sEnableRX); - - sChannel = aChannel; - ftdf_set_value(FTDF_PIB_CURRENT_CHANNEL, &aChannel); - - sEnableRX = 1; - ftdf_set_value(FTDF_PIB_RX_ON_WHEN_IDLE, &sEnableRX); - - otLogDebgPlat("Radio state: OT_RADIO_STATE_RECEIVE", NULL); - sRadioState = OT_RADIO_STATE_RECEIVE; - -exit: - return error; -} - -void otPlatRadioEnableSrcMatch(otInstance *aInstance, bool aEnable) -{ - OT_UNUSED_VARIABLE(aInstance); - OT_UNUSED_VARIABLE(aEnable); -} - -otError otPlatRadioAddSrcMatchShortEntry(otInstance *aInstance, const uint16_t aShortAddress) -{ - otError error = OT_ERROR_NONE; - uint8_t entry; - uint8_t entryIdx; - - // check if address already stored - otEXPECT(!ftdf_fppr_lookup_short_address(aShortAddress, &entry, &entryIdx)); - - otEXPECT_ACTION(ftdf_fppr_get_free_short_address(&entry, &entryIdx), error = OT_ERROR_NO_BUFS); - - otLogDebgPlat("Add ShortAddress entry: %d", entry); - - ftdf_fppr_set_short_address(entry, entryIdx, aShortAddress); - ftdf_fppr_set_short_address_valid(entry, entryIdx, FTDF_TRUE); - -exit: - return error; -} - -otError otPlatRadioAddSrcMatchExtEntry(otInstance *aInstance, const otExtAddress *aExtAddress) -{ - otError error = OT_ERROR_NONE; - uint8_t entry; - ftdf_ext_address_t addr; - uint32_t addrL; - uint64_t addrH; - - addrL = - (aExtAddress->m8[3] << 24) | (aExtAddress->m8[2] << 16) | (aExtAddress->m8[1] << 8) | (aExtAddress->m8[0] << 0); - addrH = - (aExtAddress->m8[7] << 24) | (aExtAddress->m8[6] << 16) | (aExtAddress->m8[5] << 8) | (aExtAddress->m8[4] << 0); - addr = addrL | (addrH << 32); - - // check if address already stored - otEXPECT(!ftdf_fppr_lookup_ext_address(addr, &entry)); - - otEXPECT_ACTION(ftdf_fppr_get_free_ext_address(&entry), error = OT_ERROR_NO_BUFS); - - otLogDebgPlat("Add ExtAddress entry: %d", entry); - - ftdf_fppr_set_ext_address(entry, addr); - ftdf_fppr_set_ext_address_valid(entry, FTDF_TRUE); - -exit: - return error; -} - -otError otPlatRadioClearSrcMatchShortEntry(otInstance *aInstance, const uint16_t aShortAddress) -{ - otError error = OT_ERROR_NONE; - uint8_t entry; - uint8_t entryIdx; - - otEXPECT_ACTION(ftdf_fppr_lookup_short_address(aShortAddress, &entry, &entryIdx), error = OT_ERROR_NO_ADDRESS); - - otLogDebgPlat("Clear ShortAddress entry: %d", entry); - - ftdf_fppr_set_short_address(entry, entryIdx, 0); - ftdf_fppr_set_short_address_valid(entry, entryIdx, FTDF_FALSE); - -exit: - return error; -} - -otError otPlatRadioClearSrcMatchExtEntry(otInstance *aInstance, const otExtAddress *aExtAddress) -{ - otError error = OT_ERROR_NONE; - uint8_t entry; - ftdf_ext_address_t addr; - uint32_t addrL; - uint64_t addrH; - - addrL = - (aExtAddress->m8[3] << 24) | (aExtAddress->m8[2] << 16) | (aExtAddress->m8[1] << 8) | (aExtAddress->m8[0] << 0); - addrH = - (aExtAddress->m8[7] << 24) | (aExtAddress->m8[6] << 16) | (aExtAddress->m8[5] << 8) | (aExtAddress->m8[4] << 0); - addr = addrL | (addrH << 32); - - otEXPECT_ACTION(ftdf_fppr_lookup_ext_address(addr, &entry), error = OT_ERROR_NO_ADDRESS); - - otLogDebgPlat("Clear ExtAddress entry: %d", entry); - - ftdf_fppr_set_ext_address(entry, 0); - ftdf_fppr_set_ext_address_valid(entry, FTDF_FALSE); - -exit: - return error; -} - -void otPlatRadioClearSrcMatchShortEntries(otInstance *aInstance) -{ - uint8_t i, j; - - otLogDebgPlat("Clear ShortAddress entries", NULL); - - for (i = 0; i < FTDF_FPPR_TABLE_ENTRIES; i++) - { - for (j = 0; j < 4; j++) - { - if (ftdf_fppr_get_short_address_valid(i, j)) - { - ftdf_fppr_set_short_address_valid(i, j, FTDF_FALSE); - } - } - } -} - -void otPlatRadioClearSrcMatchExtEntries(otInstance *aInstance) -{ - uint8_t i; - - otLogDebgPlat("Clear ExtAddress entries", NULL); - - for (i = 0; i < FTDF_FPPR_TABLE_ENTRIES; i++) - { - if (ftdf_fppr_get_ext_address_valid(i)) - { - ftdf_fppr_set_ext_address_valid(i, FTDF_FALSE); - } - } -} - -otRadioFrame *otPlatRadioGetTransmitBuffer(otInstance *aInstance) -{ - OT_UNUSED_VARIABLE(aInstance); - - return &sTransmitFrame; -} - -otError otPlatRadioTransmit(otInstance *aInstance, otRadioFrame *aFrame) -{ - otError error = OT_ERROR_NONE; - - otEXPECT_ACTION(sRadioState != OT_RADIO_STATE_DISABLED, error = OT_ERROR_INVALID_STATE); - - otLogDebgPlat("Radio start transmit: %d bytes on channel: %d", aFrame->mLength, aFrame->mChannel); - - ad_ftdf_send_frame_simple(aFrame->mLength, aFrame->mPsdu, aFrame->mChannel, 0, FTDF_TRUE); - - otLogDebgPlat("Radio state: OT_RADIO_STATE_TRANSMIT", NULL); - sRadioState = OT_RADIO_STATE_TRANSMIT; - - otPlatRadioTxStarted(aInstance, aFrame); - -exit: - return error; -} - -int8_t otPlatRadioGetRssi(otInstance *aInstance) -{ - OT_UNUSED_VARIABLE(aInstance); - - return sRssiReal; -} - -otRadioCaps otPlatRadioGetCaps(otInstance *aInstance) -{ - OT_UNUSED_VARIABLE(aInstance); - - return OT_RADIO_CAPS_ACK_TIMEOUT | OT_RADIO_CAPS_TRANSMIT_RETRIES | OT_RADIO_CAPS_CSMA_BACKOFF; -} - -bool otPlatRadioGetPromiscuous(otInstance *aInstance) -{ - OT_UNUSED_VARIABLE(aInstance); - - return sRadioPromiscuous; -} - -void otPlatRadioSetPromiscuous(otInstance *aInstance, bool aEnable) -{ - otLogInfoPlat("Set Promiscuous: %d", aEnable ? 1 : 0); - - ftdf_set_value(FTDF_PIB_PROMISCUOUS_MODE, &aEnable); - sRadioPromiscuous = aEnable; -} - -otError otPlatRadioEnergyScan(otInstance *aInstance, uint8_t aScanChannel, uint16_t aScanDuration) -{ - OT_UNUSED_VARIABLE(aInstance); - OT_UNUSED_VARIABLE(aScanChannel); - OT_UNUSED_VARIABLE(aScanDuration); - - return OT_ERROR_NOT_IMPLEMENTED; -} - -otError otPlatRadioGetTransmitPower(otInstance *aInstance, int8_t *aPower) -{ - OT_UNUSED_VARIABLE(aInstance); - - otError error = OT_ERROR_NONE; - - otEXPECT_ACTION(aPower != NULL, error = OT_ERROR_INVALID_ARGS); - *aPower = sTxPower; - -exit: - return error; -} - -otError otPlatRadioSetTransmitPower(otInstance *aInstance, int8_t aPower) -{ - otLogInfoPlat("Set DefaultTxPower: %d", aPower); - - sTxPower = aPower; - ftdf_set_value(FTDF_PIB_TX_POWER, &aPower); - - return OT_ERROR_NONE; -} - -void da15000RadioProcess(otInstance *aInstance) -{ - ftdf_frame_header_t frameHeader; - - if (sReadFrame != sWriteFrame) - { - ftdf_get_frame_header(sReceiveFrame[sReadFrame].mPsdu, &frameHeader); - - otLogDebgPlat("Radio received: %d bytes", sReceiveFrame[sReadFrame].mLength); - - if (frameHeader.frame_type == FTDF_ACKNOWLEDGEMENT_FRAME) - { - sReceiveFrameAck = &sReceiveFrame[sReadFrame]; - sAckFrame = true; - } - - // TODO Set this flag only when the packet is really acknowledged with frame pending set. - // See https://github.com/openthread/openthread/pull/3785 - sReceiveFrame[sReadFrame].mInfo.mRxInfo.mAckedWithFramePending = true; - - otPlatRadioReceiveDone(sThreadInstance, &sReceiveFrame[sReadFrame], OT_ERROR_NONE); - - sReadFrame = (sReadFrame + 1) % RADIO_FRAMES_BUFFER_SIZE; - sDropFrame = false; - } - - if (sTransmitDoneFrame) - { - otLogDebgPlat("Radio transmit status: %s", otThreadErrorToString(sTransmitStatus)); - - ftdf_get_frame_header(sTransmitFrame.mPsdu, &frameHeader); - - if ((frameHeader.options & FTDF_OPT_ACK_REQUESTED) == 0 || sTransmitStatus != OT_ERROR_NONE) - { - sRadioState = OT_RADIO_STATE_RECEIVE; - otPlatRadioTxDone(sThreadInstance, &sTransmitFrame, NULL, sTransmitStatus); - } - else - { - otEXPECT(sAckFrame); - sRadioState = OT_RADIO_STATE_RECEIVE; - otPlatRadioTxDone(sThreadInstance, &sTransmitFrame, sReceiveFrameAck, sTransmitStatus); - sAckFrame = false; - } - - sTransmitDoneFrame = false; - - otLogDebgPlat("Radio state: OT_RADIO_STATE_RECEIVE", NULL); - } - -exit: - return; -} - -void ftdf_send_frame_transparent_confirm(void *handle, ftdf_bitmap32_t status) -{ - OT_UNUSED_VARIABLE(handle); - - switch (status) - { - case FTDF_TRANSPARENT_SEND_SUCCESSFUL: - sTransmitStatus = OT_ERROR_NONE; - break; - - case FTDF_TRANSPARENT_CSMACA_FAILURE: - sTransmitStatus = OT_ERROR_CHANNEL_ACCESS_FAILURE; - break; - - case FTDF_TRANSPARENT_NO_ACK: - sTransmitStatus = OT_ERROR_NO_ACK; - break; - - default: - sTransmitStatus = OT_ERROR_ABORT; - break; - } - - sTransmitDoneFrame = true; -} - -static void radioRssiCalc(ftdf_link_quality_t link_quality) -{ - sRssiReal = (ftdf_dbm)((0.5239 * (float)link_quality) - 114.8604); -} - -void ftdf_rcv_frame_transparent(ftdf_data_length_t frame_length, - ftdf_octet_t * frame, - ftdf_bitmap32_t status, - ftdf_link_quality_t link_quality) -{ - otEXPECT(frame_length <= OT_RADIO_FRAME_MAX_SIZE); - - otEXPECT(sRadioState != OT_RADIO_STATE_DISABLED); - - otEXPECT(!sDropFrame); - - if (status == FTDF_TRANSPARENT_RCV_SUCCESSFUL) - { - radioRssiCalc(link_quality); - - if (otPlatRadioGetPromiscuous(sThreadInstance)) - { - // Timestamp - sReceiveFrame[sWriteFrame].mInfo.mRxInfo.mMsec = otPlatAlarmMilliGetNow(); - sReceiveFrame[sWriteFrame].mInfo.mRxInfo.mUsec = 0; // Don't support microsecond timer for now. - } - - sReceiveFrame[sWriteFrame].mChannel = sChannel; - sReceiveFrame[sWriteFrame].mLength = frame_length; - sReceiveFrame[sWriteFrame].mInfo.mRxInfo.mLqi = OT_RADIO_LQI_NONE; - sReceiveFrame[sWriteFrame].mInfo.mRxInfo.mRssi = otPlatRadioGetRssi(sThreadInstance); - memcpy(sReceiveFrame[sWriteFrame].mPsdu, frame, frame_length); - - sWriteFrame = (sWriteFrame + 1) % RADIO_FRAMES_BUFFER_SIZE; - - if (sWriteFrame == sReadFrame) - { - sDropFrame = true; - } - } - -exit: - return; -} - -int8_t otPlatRadioGetReceiveSensitivity(otInstance *aInstance) -{ - OT_UNUSED_VARIABLE(aInstance); - - return DA15000_RECEIVE_SENSITIVITY; -} diff --git a/examples/platforms/da15000/random.c b/examples/platforms/da15000/random.c deleted file mode 100644 index bdf462c91..000000000 --- a/examples/platforms/da15000/random.c +++ /dev/null @@ -1,127 +0,0 @@ -/* - * Copyright (c) 2016, The OpenThread Authors. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the copyright holder nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - */ - -/** - * @file - * This file implements true random number generator. - */ - -#include - -#include - -#include "platform-da15000.h" - -#include "hw_trng.h" -#include "sdk_defs.h" - -#define RANDOM_SIZE_OF_BUFFER 32 - -static uint32_t sRandomNumbers[RANDOM_SIZE_OF_BUFFER]; -static uint8_t sRandomNextNumberIndex = 0; -static bool sRandomGeneratorStarted = false; - -static void RandomCallback(void) -{ - hw_trng_get_numbers(sRandomNumbers, RANDOM_SIZE_OF_BUFFER); - sRandomNextNumberIndex = 0; - hw_trng_stop(); - hw_trng_disable_clk(); - hw_trng_disable_interrupt(); - sRandomGeneratorStarted = false; -} - -static void StartGenerator(void) -{ - hw_trng_enable(RandomCallback); - sRandomGeneratorStarted = true; -} - -void da15000RandomInit(void) -{ - StartGenerator(); -} - -uint32_t otPlatRandomGet(void) -{ - uint32_t randomNumber; - bool randomGet = false; - - do - { - GLOBAL_INT_DISABLE(); - - if (sRandomNextNumberIndex < RANDOM_SIZE_OF_BUFFER) - { - randomNumber = sRandomNumbers[sRandomNextNumberIndex++]; - randomGet = true; - - if (sRandomNextNumberIndex == RANDOM_SIZE_OF_BUFFER) - { - StartGenerator(); - } - } - else if (hw_trng_get_fifo_level() > 0) - { - randomNumber = hw_trng_get_number(); - randomGet = true; - } - else if (!sRandomGeneratorStarted) - { - StartGenerator(); - } - - GLOBAL_INT_RESTORE(); - } while (!randomGet); - - return randomNumber; -} - -otError otPlatRandomGetTrue(uint8_t *aOutput, uint16_t aOutputLength) -{ - uint32_t randomNumber; - - while (aOutputLength) - { - randomNumber = otPlatRandomGet(); - - if (aOutputLength < 4) - { - memcpy(aOutput, &randomNumber, aOutputLength); - aOutputLength = 0; - } - else - { - memcpy(aOutput, &randomNumber, 4); - aOutputLength -= 4; - aOutput += 4; - } - } - - return OT_ERROR_NONE; -} diff --git a/examples/platforms/da15000/system.c b/examples/platforms/da15000/system.c deleted file mode 100644 index 9a26753e6..000000000 --- a/examples/platforms/da15000/system.c +++ /dev/null @@ -1,297 +0,0 @@ -/* - * Copyright (c) 2016, The OpenThread Authors. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the copyright holder nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - */ - -/** - * @file - * This file includes the platform-specific initializers. - */ - -#include -#include -#include -#include - -#include "platform-da15000.h" - -#include "hw_cpm.h" -#include "hw_gpio.h" -#include "hw_qspi.h" -#include "hw_watchdog.h" -#include "sdk_defs.h" - -static bool sBlink = false; -static int sMsCounterInit; -static int sMsCounter; - -// clang-format off -#define ALIVE_LED_PERIOD (50000) -#define ALIVE_LED_DUTY (500) -#define LEADER_BLINK_TIME (200) -#define ROUTER_BLINK_TIME (500) -#define CHILD_BLINK_TIME (2000) -// clang-format on - -static otInstance *sInstance = NULL; - -/* - * Example function. Blink LED according to node state - * Leader - 5Hz - * Router - 2Hz - * Child - 0.5Hz - */ -static void ExampleProcess(otInstance *aInstance) -{ - static int aliveLEDcounter = 0; - otDeviceRole devRole; - static int thrValue; - - devRole = otThreadGetDeviceRole(aInstance); - - if (sBlink == false && otPlatAlarmMilliGetNow() != 0) - { - sMsCounterInit = otPlatAlarmMilliGetNow(); - sBlink = true; - } - - sMsCounter = otPlatAlarmMilliGetNow() - sMsCounterInit; - - switch (devRole) - { - case OT_DEVICE_ROLE_LEADER: - thrValue = LEADER_BLINK_TIME; - break; - - case OT_DEVICE_ROLE_ROUTER: - thrValue = ROUTER_BLINK_TIME; - break; - - case OT_DEVICE_ROLE_CHILD: - thrValue = CHILD_BLINK_TIME; - break; - - default: - thrValue = 0x00; - } - - if ((thrValue != 0x00) && (sMsCounter >= thrValue)) - { - hw_gpio_toggle(HW_GPIO_PORT_1, HW_GPIO_PIN_5); - sMsCounterInit = otPlatAlarmMilliGetNow(); - } - - if (thrValue == 0) - { - // No specific role, let's generate 'alive blink' - // to inform that we are running. - // Loop counter is used to run even if timers - // are not initialized yet. - aliveLEDcounter++; - - if (aliveLEDcounter > ALIVE_LED_PERIOD) - { - aliveLEDcounter = 0; - hw_gpio_set_active(HW_GPIO_PORT_1, HW_GPIO_PIN_5); - } - - if (aliveLEDcounter > ALIVE_LED_DUTY) - { - hw_gpio_set_inactive(HW_GPIO_PORT_1, HW_GPIO_PIN_5); - } - } -} - -void otSysInit(int argc, char *argv[]) -{ - OT_UNUSED_VARIABLE(argc); - OT_UNUSED_VARIABLE(argv); - - // Initialize Random number generator - da15000RandomInit(); - // Initialize Alarm - da15000AlarmInit(); - // Initialize Radio - da15000RadioInit(); -} - -bool otSysPseudoResetWasRequested(void) -{ - return false; -} - -#if (OPENTHREAD_MTD || OPENTHREAD_FTD) && (OPENTHREAD_ENABLE_COMMISSIONER || OPENTHREAD_ENABLE_JOINER) -static sys_clk_t ClkGet(void) -{ - sys_clk_t clk = sysclk_RC16; - uint32_t hw_clk = hw_cpm_get_sysclk(); - - switch (hw_clk) - { - case SYS_CLK_IS_RC16: - clk = sysclk_RC16; - break; - - case SYS_CLK_IS_XTAL16M: - if (dg_configEXT_CRYSTAL_FREQ == EXT_CRYSTAL_IS_16M) - { - clk = sysclk_XTAL16M; - } - else - { - clk = sysclk_XTAL32M; - } - - break; - - case SYS_CLK_IS_PLL: - if (hw_cpm_get_pll_divider_status() == 1) - { - clk = sysclk_PLL48; - } - else - { - clk = sysclk_PLL96; - } - - break; - - case SYS_CLK_IS_LP: - - // fall-through - - default: - ASSERT_WARNING(0); - break; - } - - return clk; -} - -static void ClkSet(sys_clk_t clock) -{ - switch (clock) - { - case sysclk_XTAL16M: - if (!hw_cpm_check_xtal16m_status()) // XTAL16M disabled - { - hw_cpm_enable_xtal16m(); // Enable XTAL16M - } - - hw_cpm_set_sysclk(SYS_CLK_IS_XTAL16M); // Set XTAL16 as sys_clk - hw_watchdog_unfreeze(); // Start watchdog - - while (!hw_cpm_is_xtal16m_started()) - ; // Block until XTAL16M starts - - hw_qspi_set_div(HW_QSPI_DIV_1); - hw_watchdog_freeze(); // Stop watchdog - hw_cpm_set_hclk_div(0); - hw_cpm_set_pclk_div(0); - break; - - case sysclk_PLL48: - if (hw_cpm_is_pll_locked() == 0) - { - hw_cpm_pll_sys_on(); // Turn on PLL - } - - hw_cpm_enable_pll_divider(); // Enable divider (div by 2) - hw_qspi_set_div(HW_QSPI_DIV_1); - hw_cpm_set_sysclk(SYS_CLK_IS_PLL); - hw_cpm_set_hclk_div(0); - hw_cpm_set_pclk_div(0); - break; - - case sysclk_PLL96: - if (hw_cpm_is_pll_locked() == 0) - { - hw_cpm_pll_sys_on(); // Turn on PLL - } - - hw_cpm_disable_pll_divider(); // Disable divider (div by 1) - hw_qspi_set_div(HW_QSPI_DIV_2); - hw_cpm_set_sysclk(SYS_CLK_IS_PLL); - hw_cpm_set_hclk_div(0); - hw_cpm_set_pclk_div(0); - break; - - default: - break; - } -} - -static void ClkChange(sys_clk_t lastClock, sys_clk_t newClock) -{ - if (ClkGet() == lastClock) - { - ClkSet(newClock); - } -} - -static void StateChangedCallback(uint32_t aFlags, void *aContext) -{ - if ((aFlags & OT_CHANGED_COMMISSIONER_STATE) != 0) - { - if (otCommissionerGetState(sInstance) == OT_COMMISSIONER_STATE_ACTIVE) - { - ClkChange(sysclk_XTAL16M, sysclk_PLL96); - } - else - { - ClkChange(sysclk_PLL96, sysclk_XTAL16M); - } - } - - if ((aFlags & OT_CHANGED_JOINER_STATE) != 0) - { - if (otJoinerGetState(sInstance) != OT_JOINER_STATE_IDLE) - { - ClkChange(sysclk_XTAL16M, sysclk_PLL96); - } - else - { - ClkChange(sysclk_PLL96, sysclk_XTAL16M); - } - } -} -#endif // (OPENTHREAD_MTD || OPENTHREAD_FTD) && (OPENTHREAD_ENABLE_COMMISSIONER || OPENTHREAD_ENABLE_JOINER) - -void otSysProcessDrivers(otInstance *aInstance) -{ - if (sInstance == NULL) - { - sInstance = aInstance; -#if (OPENTHREAD_MTD || OPENTHREAD_FTD) && (OPENTHREAD_ENABLE_COMMISSIONER || OPENTHREAD_ENABLE_JOINER) - otSetStateChangedCallback(aInstance, StateChangedCallback, 0); -#endif // (OPENTHREAD_MTD || OPENTHREAD_FTD) && (OPENTHREAD_ENABLE_COMMISSIONER || OPENTHREAD_ENABLE_JOINER) - } - - da15000UartProcess(); - da15000RadioProcess(aInstance); - da15000AlarmProcess(aInstance); - ExampleProcess(aInstance); -} diff --git a/examples/platforms/da15000/uart.c b/examples/platforms/da15000/uart.c deleted file mode 100644 index ae0c4a2f9..000000000 --- a/examples/platforms/da15000/uart.c +++ /dev/null @@ -1,119 +0,0 @@ -/* - * Copyright (c) 2016, The OpenThread Authors. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the copyright holder nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - */ - -#include - -#include "platform-da15000.h" - -#include "hw_gpio.h" -#include "hw_uart.h" - -static bool sUartWriteDone = false; -static bool sUartReadDone = false; -static char * sInitBuf = NULL; -static uint8_t sUartBuf; - -static void UartSignalWrite(void *p, uint16_t transferred) -{ - if (transferred) - { - sUartWriteDone = true; - } -} - -static void UartSignalRead(void *p, uint16_t transferred) -{ - if (transferred) - { - sUartReadDone = true; - } -} - -otError otPlatUartEnable(void) -{ - // clang-format off - uart_config_ex uart_init = - { - .baud_rate = HW_UART_BAUDRATE_115200, - .data = HW_UART_DATABITS_8, - .parity = HW_UART_PARITY_NONE, - .stop = HW_UART_STOPBITS_1, - .auto_flow_control = 0, - .use_fifo = 1, - .use_dma = 1, - .tx_fifo_tr_lvl = 0, - .rx_fifo_tr_lvl = 0, - .tx_dma_channel = HW_DMA_CHANNEL_3, - .rx_dma_channel = HW_DMA_CHANNEL_2, - }; - // clang-format on - - hw_uart_init_ex(HW_UART2, &uart_init); - - hw_gpio_set_pin_function(HW_GPIO_PORT_1, HW_GPIO_PIN_3, HW_GPIO_MODE_OUTPUT, HW_GPIO_FUNC_UART2_TX); - hw_gpio_set_pin_function(HW_GPIO_PORT_2, HW_GPIO_PIN_3, HW_GPIO_MODE_OUTPUT, HW_GPIO_FUNC_UART2_RX); - hw_gpio_set_pin_function(HW_GPIO_PORT_1, HW_GPIO_PIN_5, HW_GPIO_MODE_OUTPUT, HW_GPIO_FUNC_GPIO); - - hw_uart_receive(HW_UART2, &sUartBuf, 1, UartSignalRead, NULL); - - return OT_ERROR_NONE; -} - -otError otPlatUartDisable(void) -{ - return OT_ERROR_NONE; -} - -void da15000UartProcess(void) -{ - if (sUartReadDone) - { - otPlatUartReceived(&sUartBuf, 1); - sUartReadDone = false; - hw_uart_receive(HW_UART2, &sUartBuf, 1, UartSignalRead, NULL); - } - - if (sUartWriteDone) - { - sUartWriteDone = false; - otPlatUartSendDone(); - } - - if (sInitBuf == NULL) - { - sInitBuf = "\n"; - otPlatUartReceived((uint8_t *)sInitBuf, 1); - } -} - -otError otPlatUartSend(const uint8_t *aBuf, uint16_t aBufLength) -{ - hw_uart_send(HW_UART2, aBuf, aBufLength, UartSignalWrite, NULL); - - return OT_ERROR_NONE; -} diff --git a/third_party/Makefile.am b/third_party/Makefile.am index 38e2ea2e4..67e5ca660 100644 --- a/third_party/Makefile.am +++ b/third_party/Makefile.am @@ -29,7 +29,6 @@ include $(abs_top_nlbuild_autotools_dir)/automake/pre.am EXTRA_DIST = \ - dialog \ nxp \ nlbuild-autotools \ openthread-test-driver \ diff --git a/third_party/dialog/DialogSDK/bsp/arm_license.txt b/third_party/dialog/DialogSDK/bsp/arm_license.txt deleted file mode 100755 index e3e89d4cb..000000000 --- a/third_party/dialog/DialogSDK/bsp/arm_license.txt +++ /dev/null @@ -1,26 +0,0 @@ -/* Copyright (c) 2009 - 2013 ARM LIMITED - - All rights reserved. - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of ARM nor the names of its contributors may be used - to endorse or promote products derived from this software without - specific prior written permission. - * - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDERS AND CONTRIBUTORS BE - LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - POSSIBILITY OF SUCH DAMAGE. - ---------------------------------------------------------------------------*/ \ No newline at end of file diff --git a/third_party/dialog/DialogSDK/bsp/config/bsp_debug.h b/third_party/dialog/DialogSDK/bsp/config/bsp_debug.h deleted file mode 100644 index edc26449a..000000000 --- a/third_party/dialog/DialogSDK/bsp/config/bsp_debug.h +++ /dev/null @@ -1,650 +0,0 @@ -/** - * \addtogroup BSP - * \{ - * \addtogroup BSP_CONFIG - * \{ - * \addtogroup BSP_DEBUG - * - * \brief Doxygen documentation is not yet available for this module. - * Please check the source code file(s) - * - * \{ -*/ - -/** - **************************************************************************************** - * - * @file bsp_debug.h - * - * @brief Board Support Package. Debug Configuration. - * - * Copyright (c) 2016, Dialog Semiconductor - * All rights reserved. - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. Neither the name of the copyright holder nor the names of its contributors - * may be used to endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, - * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, - * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED - * OF THE POSSIBILITY OF SUCH DAMAGE. - * - * - **************************************************************************************** - */ - -#ifndef BSP_DEBUG_H_ -#define BSP_DEBUG_H_ - - -/* --------------------------------- DEBUG GPIO handling macros --------------------------------- */ - -#define DBG_CONFIGURE(flag, name, func) \ -{ \ - if (flag == 1) { \ - name##_MODE_REG = 0x300 + func; \ - } \ -} - -#define DBG_CONFIGURE_HIGH(flag, name) \ -{ \ - if (flag == 1) { \ - name##_SET_REG = name##_PIN; \ - name##_MODE_REG = 0x300; \ - } \ -} - -#define DBG_CONFIGURE_LOW(flag, name) \ -{ \ - if (flag == 1) { \ - name##_RESET_REG = name##_PIN; \ - name##_MODE_REG = 0x300; \ - } \ -} - -#define DBG_SET_HIGH(flag, name) \ -{ \ - if (flag == 1) { \ - name##_SET_REG = name##_PIN; \ - } \ -} - -#define DBG_SET_LOW(flag, name) \ -{ \ - if (flag == 1) { \ - name##_RESET_REG = name##_PIN; \ - } \ -} - -/* ---------------------------------------------------------------------------------------------- */ - - -/* ---------------------------------- HardFault or NMI event ------------------------------------ */ - -#ifndef EXCEPTION_DEBUG -#define EXCEPTION_DEBUG (0) -#endif - -/* ---------------------------------------------------------------------------------------------- */ - - -/* --------------------------------- Clock and Power Manager ------------------------------------ */ - -#ifndef CPM_DEBUG -#define CPM_DEBUG (0) -#endif - -#ifndef CPM_USE_FUNCTIONAL_DEBUG -#define CPM_USE_FUNCTIONAL_DEBUG (0) // Requires GPIO config. -#endif - -#ifndef CPM_USE_TIMING_DEBUG -#define CPM_USE_TIMING_DEBUG (0) // Requires GPIO config. -#endif - -#ifndef CPM_USE_RCX_DEBUG -#define CPM_USE_RCX_DEBUG (0) // Requires logging. -#endif - -/* Controls which RAM blocks will be retained when the MEASURE_SLEEP_CURRENT test mode is used - * (optional). */ -#ifndef dg_configTESTMODE_RETAIN_RAM -#define dg_configTESTMODE_RETAIN_RAM (0x1F) -#endif - -/* Controls whether the Cache will be retained when the MEASURE_SLEEP_CURRENT test mode is used - * (optional). */ -#ifndef dg_configTESTMODE_RETAIN_CACHE -#define dg_configTESTMODE_RETAIN_CACHE (0) -#endif - -/* Controls whether the ECC RAM will be retained when the MEASURE_SLEEP_CURRENT test mode is used - * (optional). */ -#ifndef dg_config_TESTMODE_RETAIN_ECCRAM -#define dg_config_TESTMODE_RETAIN_ECCRAM (0) -#endif - -/* ---------------------------------------------------------------------------------------------- */ - - -/* --------------------------------------- USB Charger ------------------------------------------ */ - -#ifndef DEBUG_USB_CHARGER -#define DEBUG_USB_CHARGER (0) -#endif - -#ifndef DEBUG_USB_CHARGER_FSM -#define DEBUG_USB_CHARGER_FSM (0) -#endif - -#ifndef DEBUG_USB_CHARGER_PRINT -#define DEBUG_USB_CHARGER_PRINT (0) -#endif - -#ifndef USB_CHARGER_TIMING_DEBUG -#define USB_CHARGER_TIMING_DEBUG (0) -#endif - -/* ---------------------------------------------------------------------------------------------- */ - - -/* ------------------------------------------- BLE ---------------------------------------------- */ - -#ifndef BLE_USE_TIMING_DEBUG -#define BLE_USE_TIMING_DEBUG (0) // Requires GPIO config. -#endif - -#ifndef BLE_ADAPTER_DEBUG -#define BLE_ADAPTER_DEBUG (0) // Requires GPIO config. -#endif - -#ifndef BLE_RX_EN_DEBUG -#define BLE_RX_EN_DEBUG (0) // Requires GPIO config. -#endif - -#define BLE_RX_EN_FUNC (57) - -#ifndef BLE_WINDOW_STATISTICS -#define BLE_WINDOW_STATISTICS (0) -#endif - -#ifndef BLE_SLEEP_PERIOD_DEBUG -#define BLE_SLEEP_PERIOD_DEBUG (0) // Requires logging and window statistics. -#endif - -#ifndef BLE_WAKEUP_MONITOR_PERIOD -#define BLE_WAKEUP_MONITOR_PERIOD (1024) -#endif - -#ifndef BLE_MAX_MISSES_ALLOWED -#define BLE_MAX_MISSES_ALLOWED (0) -#endif - -#ifndef BLE_MAX_DELAYS_ALLOWED -#define BLE_MAX_DELAYS_ALLOWED (0) -#endif - -/* ---------------------------------------------------------------------------------------------- */ - - -/* ------------------------------------------ Flash --------------------------------------------- */ -#ifndef FLASH_DEBUG -#define FLASH_DEBUG (0) // Requires GPIO config. -#endif - -#ifndef __DBG_QSPI_ENABLED -#define __DBG_QSPI_ENABLED (0) -#endif - -/* ---------------------------------------------------------------------------------------------- */ - - -/* ------------------------------------------ Common -------------------------------------------- */ -#ifndef CMN_TIMING_DEBUG -#define CMN_TIMING_DEBUG (0) // Requires GPIO config. -#endif -/* ---------------------------------------------------------------------------------------------- */ - -/* -------------------------------------------- SPI --------------------------------------------- */ -#ifndef SPI_TIMING_DEBUG -#define SPI_TIMING_DEBUG (0) // Requires GPIO config. -#endif -/* ---------------------------------------------------------------------------------------------- */ - -/* ------------------------------------ GPIO configuration -------------------------------------- */ - -/* Enable/Disable GPIO pin assignment conflict detection - */ -#define DEBUG_GPIO_ALLOC_MONITOR_ENABLED (0) - - -/* Exception handling debug configuration - * - */ -#if (EXCEPTION_DEBUG == 0) -// Exception occurred (initial configuration: low) -#define EXCEPTIONDBG_MODE_REG *(volatile int *)0x20000000 -#define EXCEPTIONDBG_SET_REG *(volatile int *)0x20000000 -#define EXCEPTIONDBG_RESET_REG *(volatile int *)0x20000000 -#define EXCEPTIONDBG_PIN (0) - -#else - -// Tick (P3[0]) -#define EXCEPTIONDBG_MODE_REG GPIO->P30_MODE_REG -#define EXCEPTIONDBG_SET_REG GPIO->P3_SET_DATA_REG -#define EXCEPTIONDBG_RESET_REG GPIO->P3_RESET_DATA_REG -#define EXCEPTIONDBG_PIN (1 << 0) - -#endif - -/* Functional debug configuration - * - * Note that GPIO overlapping is allowed if the tracked events are discrete and the initial GPIO - * configuration is the same! No checking is performed for erroneous configuration though! - * - */ -#if (CPM_USE_FUNCTIONAL_DEBUG == 0) -// Tick (initial configuration: low) -#define CPMDBG_TICK_MODE_REG *(volatile int *)0x20000000 -#define CPMDBG_TICK_SET_REG *(volatile int *)0x20000000 -#define CPMDBG_TICK_RESET_REG *(volatile int *)0x20000000 -#define CPMDBG_TICK_PIN (0) - -// External Wake-up (initial configuration: low) -#define CPMDBG_EXT_WKUP_MODE_REG *(volatile int *)0x20000000 -#define CPMDBG_EXT_WKUP_SET_REG *(volatile int *)0x20000000 -#define CPMDBG_EXT_WKUP_RESET_REG *(volatile int *)0x20000000 -#define CPMDBG_EXT_WKUP_PIN (0) - -// Active / Sleep (initial configuration: high) -#define CPMDBG_POWERUP_MODE_REG *(volatile int *)0x20000000 -#define CPMDBG_POWERUP_SET_REG *(volatile int *)0x20000000 -#define CPMDBG_POWERUP_RESET_REG *(volatile int *)0x20000000 -#define CPMDBG_POWERUP_PIN (0) - -#else - -// Tick (P2[3]) -#define CPMDBG_TICK_MODE_REG GPIO->P23_MODE_REG -#define CPMDBG_TICK_SET_REG GPIO->P2_SET_DATA_REG -#define CPMDBG_TICK_RESET_REG GPIO->P2_RESET_DATA_REG -#define CPMDBG_TICK_PIN (1 << 3) - -// External Wake-up (P3[0]) -#define CPMDBG_EXT_WKUP_MODE_REG GPIO->P30_MODE_REG -#define CPMDBG_EXT_WKUP_SET_REG GPIO->P3_SET_DATA_REG -#define CPMDBG_EXT_WKUP_RESET_REG GPIO->P3_RESET_DATA_REG -#define CPMDBG_EXT_WKUP_PIN (1 << 0) - -// Active / Sleep (P1[4]) -#define CPMDBG_POWERUP_MODE_REG GPIO->P14_MODE_REG -#define CPMDBG_POWERUP_SET_REG GPIO->P1_SET_DATA_REG -#define CPMDBG_POWERUP_RESET_REG GPIO->P1_RESET_DATA_REG -#define CPMDBG_POWERUP_PIN (1 << 4) -#endif - -/* Timing debug configuration - * - * Note that in this mode the pad latches are removed immediately after the execution resumes from - * the __WFI(). Because of this, it is not advised to use this feature in projects that use GPIOS. - * Nevertheless, in case it is used, make sure that the "peripheral initialization" is also done - * at that point, modifying sys_power_mgr.c accordingly. - * - * Note also that GPIO overlapping is allowed if the tracked events are discrete and the initial - * GPIO configuration is the same! No checking is performed for erroneous configuration though! - * - */ -#if (CPM_USE_TIMING_DEBUG == 0) -// CPM: sleep or idle entry (until __WFI() is called) (initial configuration: high) -#define CPMDBG_SLEEP_ENTER_MODE_REG *(volatile int *)0x20000000 -#define CPMDBG_SLEEP_ENTER_SET_REG *(volatile int *)0x20000000 -#define CPMDBG_SLEEP_ENTER_RESET_REG *(volatile int *)0x20000000 -#define CPMDBG_SLEEP_ENTER_PIN (0) - -// CPM: sleep or idle exit (initial configuration: low) -#define CPMDBG_SLEEP_EXIT_MODE_REG *(volatile int *)0x20000000 -#define CPMDBG_SLEEP_EXIT_SET_REG *(volatile int *)0x20000000 -#define CPMDBG_SLEEP_EXIT_RESET_REG *(volatile int *)0x20000000 -#define CPMDBG_SLEEP_EXIT_PIN (0) - -// Low clocks (initial configuration: low) -#define CPMDBG_LOWER_CLOCKS_MODE_REG *(volatile int *)0x20000000 -#define CPMDBG_LOWER_CLOCKS_SET_REG *(volatile int *)0x20000000 -#define CPMDBG_LOWER_CLOCKS_RESET_REG *(volatile int *)0x20000000 -#define CPMDBG_LOWER_CLOCKS_PIN (0) - -// XTAL16M settling (initial configuration: low) -#define CPMDBG_XTAL16M_SETTLED_MODE_REG *(volatile int *)0x20000000 -#define CPMDBG_XTAL16M_SETTLED_SET_REG *(volatile int *)0x20000000 -#define CPMDBG_XTAL16M_SETTLED_RESET_REG *(volatile int *)0x20000000 -#define CPMDBG_XTAL16M_SETTLED_PIN (0) - -#else - -// CPM: sleep or idle entry (until __WFI() is called) (P1[7]) -#define CPMDBG_SLEEP_ENTER_MODE_REG GPIO->P17_MODE_REG -#define CPMDBG_SLEEP_ENTER_SET_REG GPIO->P1_SET_DATA_REG -#define CPMDBG_SLEEP_ENTER_RESET_REG GPIO->P1_RESET_DATA_REG -#define CPMDBG_SLEEP_ENTER_PIN (1 << 7) - -// CPM: sleep or idle exit (P1[6]) -#define CPMDBG_SLEEP_EXIT_MODE_REG GPIO->P16_MODE_REG -#define CPMDBG_SLEEP_EXIT_SET_REG GPIO->P1_SET_DATA_REG -#define CPMDBG_SLEEP_EXIT_RESET_REG GPIO->P1_RESET_DATA_REG -#define CPMDBG_SLEEP_EXIT_PIN (1 << 6) - -// Low clocks (P1[5]) -#define CPMDBG_LOWER_CLOCKS_MODE_REG GPIO->P15_MODE_REG -#define CPMDBG_LOWER_CLOCKS_SET_REG GPIO->P1_SET_DATA_REG -#define CPMDBG_LOWER_CLOCKS_RESET_REG GPIO->P1_RESET_DATA_REG -#define CPMDBG_LOWER_CLOCKS_PIN (1 << 5) - -// XTAL16M settling (P1[4]) -#define CPMDBG_XTAL16M_SETTLED_MODE_REG GPIO->P14_MODE_REG -#define CPMDBG_XTAL16M_SETTLED_SET_REG GPIO->P1_SET_DATA_REG -#define CPMDBG_XTAL16M_SETTLED_RESET_REG GPIO->P1_RESET_DATA_REG -#define CPMDBG_XTAL16M_SETTLED_PIN (1 << 4) -#endif - -#if (BLE_USE_TIMING_DEBUG == 0) -// BLE LP & GEN irqs (initial configuration: low) -#define CPMDBG_BLE_IRQ_MODE_REG *(volatile int *)0x20000000 -#define CPMDBG_BLE_IRQ_SET_REG *(volatile int *)0x20000000 -#define CPMDBG_BLE_IRQ_RESET_REG *(volatile int *)0x20000000 -#define CPMDBG_BLE_IRQ_PIN (0) - -// BLE sleep prepare (final stage) (initial configuration: low) -#define CPMDBG_BLE_SLEEP_ENTRY_MODE_REG *(volatile int *)0x20000000 -#define CPMDBG_BLE_SLEEP_ENTRY_SET_REG *(volatile int *)0x20000000 -#define CPMDBG_BLE_SLEEP_ENTRY_RESET_REG *(volatile int *)0x20000000 -#define CPMDBG_BLE_SLEEP_ENTRY_PIN (0) - -// BLE LP irq signal (diagnostics) (initial configuration: unknown) -#define CPMDBG_BLE_LP_IRQ_MODE_REG *(volatile int *)0x20000000 - -#else - -// BLE LP & GEN ISRs (P1[4]) -#define CPMDBG_BLE_IRQ_MODE_REG GPIO->P14_MODE_REG -#define CPMDBG_BLE_IRQ_SET_REG GPIO->P1_SET_DATA_REG -#define CPMDBG_BLE_IRQ_RESET_REG GPIO->P1_RESET_DATA_REG -#define CPMDBG_BLE_IRQ_PIN (1 << 4) - -// BLE sleep prepare (final stage) (P1[4]) -#define CPMDBG_BLE_SLEEP_ENTRY_MODE_REG GPIO->P14_MODE_REG -#define CPMDBG_BLE_SLEEP_ENTRY_SET_REG GPIO->P1_SET_DATA_REG -#define CPMDBG_BLE_SLEEP_ENTRY_RESET_REG GPIO->P1_RESET_DATA_REG -#define CPMDBG_BLE_SLEEP_ENTRY_PIN (1 << 4) - -// BLE LP irq signal (diagnostics) (P2[3]) -#define CPMDBG_BLE_LP_IRQ_MODE_REG GPIO->P23_MODE_REG -#endif - -#if (BLE_ADAPTER_DEBUG == 0) -#define BLEBDG_ADAPTER_MODE_REG *(volatile int *)0x20000000 -#define BLEBDG_ADAPTER_SET_REG *(volatile int *)0x20000000 -#define BLEBDG_ADAPTER_RESET_REG *(volatile int *)0x20000000 -#define BLEBDG_ADAPTER_PIN (0) - -#else - -#define BLEBDG_ADAPTER_MODE_REG GPIO->P30_MODE_REG -#define BLEBDG_ADAPTER_SET_REG GPIO->P3_SET_DATA_REG -#define BLEBDG_ADAPTER_RESET_REG GPIO->P3_RESET_DATA_REG -#define BLEBDG_ADAPTER_PIN (1 << 0) -#endif - -#if (BLE_RX_EN_DEBUG == 0) -#define BLEBDG_RXEN_MODE_REG *(volatile int *)0x20000000 -#define BLEBDG_RXEN_SET_REG *(volatile int *)0x20000000 -#define BLEBDG_RXEN_RESET_REG *(volatile int *)0x20000000 -#define BLEBDG_RXEN_PIN (0) - -#else - -#define BLEBDG_RXEN_MODE_REG GPIO->P12_MODE_REG -#define BLEBDG_RXEN_SET_REG GPIO->P1_SET_DATA_REG -#define BLEBDG_RXEN_RESET_REG GPIO->P1_RESET_DATA_REG -#define BLEBDG_RXEN_PIN (1 << 2) -#endif - -#if (USB_CHARGER_TIMING_DEBUG == 0) -// CHRG: Inside critical section (initial configuration: low) -#define CHRGDBG_CRITICAL_SECTION_MODE_REG *(volatile int *)0x20000000 -#define CHRGDBG_CRITICAL_SECTION_SET_REG *(volatile int *)0x20000000 -#define CHRGDBG_CRITICAL_SECTION_RESET_REG *(volatile int *)0x20000000 -#define CHRGDBG_CRITICAL_SECTION_PIN (0) - -// CHRG: FSM task (initial configuration: low) -#define CHRGDBG_FSM_TASK_MODE_REG *(volatile int *)0x20000000 -#define CHRGDBG_FSM_TASK_SET_REG *(volatile int *)0x20000000 -#define CHRGDBG_FSM_TASK_RESET_REG *(volatile int *)0x20000000 -#define CHRGDBG_FSM_TASK_PIN (0) - -// CHRG: Control task (initial configuration: low) -#define CPMDBG_CONTROL_TASK_MODE_REG *(volatile int *)0x20000000 -#define CPMDBG_CONTROL_TASK_SET_REG *(volatile int *)0x20000000 -#define CPMDBG_CONTROL_TASK_RESET_REG *(volatile int *)0x20000000 -#define CPMDBG_CONTROL_TASK_PIN (0) - -#else - -// CHRG: Inside critical section (P3[2]) -#define CHRGDBG_CRITICAL_SECTION_MODE_REG GPIO->P32_MODE_REG -#define CHRGDBG_CRITICAL_SECTION_SET_REG GPIO->P3_SET_DATA_REG -#define CHRGDBG_CRITICAL_SECTION_RESET_REG GPIO->P3_RESET_DATA_REG -#define CHRGDBG_CRITICAL_SECTION_PIN (1 << 2) - -// CHRG: FSM task (P3[3]) -#define CHRGDBG_FSM_TASK_MODE_REG GPIO->P33_MODE_REG -#define CHRGDBG_FSM_TASK_SET_REG GPIO->P3_SET_DATA_REG -#define CHRGDBG_FSM_TASK_RESET_REG GPIO->P3_RESET_DATA_REG -#define CHRGDBG_FSM_TASK_PIN (1 << 3) - -// CHRG: Control task (P3[4]) -#define CPMDBG_CONTROL_TASK_MODE_REG GPIO->P34_MODE_REG -#define CPMDBG_CONTROL_TASK_SET_REG GPIO->P3_SET_DATA_REG -#define CPMDBG_CONTROL_TASK_RESET_REG GPIO->P3_RESET_DATA_REG -#define CPMDBG_CONTROL_TASK_PIN (1 << 4) - -#endif - -#if (CMN_TIMING_DEBUG == 0) -// Common: Inside critical section (initial configuration: low) -#define CMNDBG_CRITICAL_SECTION_MODE_REG *(volatile int *)0x20000000 -#define CMNDBG_CRITICAL_SECTION_SET_REG *(volatile int *)0x20000000 -#define CMNDBG_CRITICAL_SECTION_RESET_REG *(volatile int *)0x20000000 -#define CMNDBG_CRITICAL_SECTION_PIN (0) - -#else - -// Common: Inside critical section (P4[6]) -#define CMNDBG_CRITICAL_SECTION_MODE_REG GPIO->P40_MODE_REG -#define CMNDBG_CRITICAL_SECTION_SET_REG GPIO->P4_SET_DATA_REG -#define CMNDBG_CRITICAL_SECTION_RESET_REG GPIO->P4_RESET_DATA_REG -#define CMNDBG_CRITICAL_SECTION_PIN (1 << 0) - -#endif - - -/* Flash debug configuration - * - */ -#if (FLASH_DEBUG == 0) -// Write page (initial configuration: low) -#define FLASHDBG_PAGE_PROG_MODE_REG *(volatile int *)0x20000000 -#define FLASHDBG_PAGE_PROG_SET_REG *(volatile int *)0x20000000 -#define FLASHDBG_PAGE_PROG_RESET_REG *(volatile int *)0x20000000 -#define FLASHDBG_PAGE_PROG_PIN (0) - -// Program page wait loop (initial configuration: low) -#define FLASHDBG_PAGE_PROG_WL_MODE_REG *(volatile int *)0x20000000 -#define FLASHDBG_PAGE_PROG_WL_SET_REG *(volatile int *)0x20000000 -#define FLASHDBG_PAGE_PROG_WL_RESET_REG *(volatile int *)0x20000000 -#define FLASHDBG_PAGE_PROG_WL_PIN (0) - -// Program page wait loop - pending irq check (initial configuration: low) -#define FLASHDBG_PAGE_PROG_WL_IRQ_MODE_REG *(volatile int *)0x20000000 -#define FLASHDBG_PAGE_PROG_WL_IRQ_SET_REG *(volatile int *)0x20000000 -#define FLASHDBG_PAGE_PROG_WL_IRQ_RESET_REG *(volatile int *)0x20000000 -#define FLASHDBG_PAGE_PROG_WL_IRQ_PIN (0) - -// Suspend op (initial configuration: low) -#define FLASHDBG_SUSPEND_MODE_REG *(volatile int *)0x20000000 -#define FLASHDBG_SUSPEND_SET_REG *(volatile int *)0x20000000 -#define FLASHDBG_SUSPEND_RESET_REG *(volatile int *)0x20000000 -#define FLASHDBG_SUSPEND_PIN (0) - -// Erase sector cmd (initial configuration: low) -#define FLASHDBG_SECTOR_ERASE_MODE_REG *(volatile int *)0x20000000 -#define FLASHDBG_SECTOR_ERASE_SET_REG *(volatile int *)0x20000000 -#define FLASHDBG_SECTOR_ERASE_RESET_REG *(volatile int *)0x20000000 -#define FLASHDBG_SECTOR_ERASE_PIN (0) - -// Notify task (initial configuration: low) -#define FLASHDBG_TASK_NOTIFY_MODE_REG *(volatile int *)0x20000000 -#define FLASHDBG_TASK_NOTIFY_SET_REG *(volatile int *)0x20000000 -#define FLASHDBG_TASK_NOTIFY_RESET_REG *(volatile int *)0x20000000 -#define FLASHDBG_TASK_NOTIFY_PIN (0) - -// Suspend action (low level) (initial configuration: low) -#define FLASHDBG_SUSPEND_ACTION_MODE_REG *(volatile int *)0x20000000 -#define FLASHDBG_SUSPEND_ACTION_SET_REG *(volatile int *)0x20000000 -#define FLASHDBG_SUSPEND_ACTION_RESET_REG *(volatile int *)0x20000000 -#define FLASHDBG_SUSPEND_ACTION_PIN (0) - -// Resume op (initial configuration: low) -#define FLASHDBG_RESUME_MODE_REG *(volatile int *)0x20000000 -#define FLASHDBG_RESUME_SET_REG *(volatile int *)0x20000000 -#define FLASHDBG_RESUME_RESET_REG *(volatile int *)0x20000000 -#define FLASHDBG_RESUME_PIN (0) - -#else - -// Write page (initial configuration: low) -#define FLASHDBG_PAGE_PROG_MODE_REG GPIO->P30_MODE_REG -#define FLASHDBG_PAGE_PROG_SET_REG GPIO->P3_SET_DATA_REG -#define FLASHDBG_PAGE_PROG_RESET_REG GPIO->P3_RESET_DATA_REG -#define FLASHDBG_PAGE_PROG_PIN (1 << 0) - -// Program page wait loop (initial configuration: low) -#define FLASHDBG_PAGE_PROG_WL_MODE_REG GPIO->P31_MODE_REG -#define FLASHDBG_PAGE_PROG_WL_SET_REG GPIO->P3_SET_DATA_REG -#define FLASHDBG_PAGE_PROG_WL_RESET_REG GPIO->P3_RESET_DATA_REG -#define FLASHDBG_PAGE_PROG_WL_PIN (1 << 1) - -// Program page wait loop - pending irq check (initial configuration: low) -#define FLASHDBG_PAGE_PROG_WL_IRQ_MODE_REG GPIO->P32_MODE_REG -#define FLASHDBG_PAGE_PROG_WL_IRQ_SET_REG GPIO->P3_SET_DATA_REG -#define FLASHDBG_PAGE_PROG_WL_IRQ_RESET_REG GPIO->P3_RESET_DATA_REG -#define FLASHDBG_PAGE_PROG_WL_IRQ_PIN (1 << 2) - -// Suspend op (initial configuration: low) -#define FLASHDBG_SUSPEND_MODE_REG GPIO->P33_MODE_REG -#define FLASHDBG_SUSPEND_SET_REG GPIO->P3_SET_DATA_REG -#define FLASHDBG_SUSPEND_RESET_REG GPIO->P3_RESET_DATA_REG -#define FLASHDBG_SUSPEND_PIN (1 << 3) - -// Erase sector cmd (initial configuration: low) -#define FLASHDBG_SECTOR_ERASE_MODE_REG GPIO->P34_MODE_REG -#define FLASHDBG_SECTOR_ERASE_SET_REG GPIO->P3_SET_DATA_REG -#define FLASHDBG_SECTOR_ERASE_RESET_REG GPIO->P3_RESET_DATA_REG -#define FLASHDBG_SECTOR_ERASE_PIN (1 << 4) - -// Notify task (initial configuration: low) -#define FLASHDBG_TASK_NOTIFY_MODE_REG GPIO->P35_MODE_REG -#define FLASHDBG_TASK_NOTIFY_SET_REG GPIO->P3_SET_DATA_REG -#define FLASHDBG_TASK_NOTIFY_RESET_REG GPIO->P3_RESET_DATA_REG -#define FLASHDBG_TASK_NOTIFY_PIN (1 << 5) - -// Suspend action (low level) (initial configuration: low) -#define FLASHDBG_SUSPEND_ACTION_MODE_REG GPIO->P36_MODE_REG -#define FLASHDBG_SUSPEND_ACTION_SET_REG GPIO->P3_SET_DATA_REG -#define FLASHDBG_SUSPEND_ACTION_RESET_REG GPIO->P3_RESET_DATA_REG -#define FLASHDBG_SUSPEND_ACTION_PIN (1 << 6) - -// Resume op (initial configuration: low) -#define FLASHDBG_RESUME_MODE_REG GPIO->P37_MODE_REG -#define FLASHDBG_RESUME_SET_REG GPIO->P3_SET_DATA_REG -#define FLASHDBG_RESUME_RESET_REG GPIO->P3_RESET_DATA_REG -#define FLASHDBG_RESUME_PIN (1 << 7) - -#endif - - -/* Enables the logging of stack (RW) heap memories usage. - * - * The feature shall only be enabled in development/debug mode - */ -#ifndef dg_configLOG_BLE_STACK_MEM_USAGE -#define dg_configLOG_BLE_STACK_MEM_USAGE (0) -#endif - -/** - * \brief Enables BLE diagnostic signals. - * - * There are 5 (4 plus the COEX mode, see next table) diagnostic signal configurations that - * user can choose from. To enable a specific configuration, simply define - * dg_configBLE_DIAGN_CONFIG with the perspective configuration ID. Configuration ID 0 disables - * BLE diagnostics. - * - * ------------------------------------------------------------------------------------------------------ - * | Signal | Pin | Config 1 | Config 2 | Config 3 | Config 4 | - * ------------------------------------------------------------------------------------------------------ - * | ble_diag0 | P2_0 | - | - | - | - | - * ------------------------------------------------------------------------------------------------------ - * | ble_diag1 | P2_1 | - | - | - | - | - * ------------------------------------------------------------------------------------------------------ - * | ble_diag2 | P2_2 | - | - | - | - | - * ------------------------------------------------------------------------------------------------------ - * | ble_diag3 | P1_0 | - | - | - | - | - * ------------------------------------------------------------------------------------------------------ - * | ble_diag4 | P1_1 | ble_slp_irq | radcntl_txen | radcntl_txen | radcntl_txen | - * ------------------------------------------------------------------------------------------------------ - * | ble_diag5 | P1_2 | ble_cscnt_irq | radcntl_rxen | rf_tx_en | radcntl_rxen | - * ------------------------------------------------------------------------------------------------------ - * | ble_diag6 | P1_3 | ble_finetgtim_irq | rf_rx_en | rf_tx_data | ble_rx_irq | - * ------------------------------------------------------------------------------------------------------ - * | ble_diag7 | P2_3 | ble_event_irq | rf_rx_data | rf_tx_data_valid | ble_event_irq | - * ------------------------------------------------------------------------------------------------------ - * - * Coex Mode Diagnostics: The COEX interface multiplexes its diagnostic pins on top of BLE - * diagnostics when option dg_configCOEX_ENABLE_DIAGS is set to 1. However, diagnostic signals - * ble_diag0 and ble_diag1 are unused by the COEX diagnostics and can be used for BLE. More - * specifically, Config 5 enables the following configuration, that can be used simultaneously - * with COEX diagnostics (dg_configCOEX_ENABLE_DIAGS == 1): - * - * ---------------------------------------------- - * | Signal | Pin | Config 5 | - * ---------------------------------------------- - * | ble_diag0 | P3_0 | radcntl_txen | - * ---------------------------------------------- - * | ble_diag1 | P3_1 | radcntl_rxen | - * ---------------------------------------------- - * - */ -#ifndef dg_configBLE_DIAGN_CONFIG -#define dg_configBLE_DIAGN_CONFIG (0) -#endif - -#endif /* BSP_DEBUG_H_ */ - -/** -\} -\} -\} -*/ diff --git a/third_party/dialog/DialogSDK/bsp/config/bsp_defaults.h b/third_party/dialog/DialogSDK/bsp/config/bsp_defaults.h deleted file mode 100644 index 0ac9c45f9..000000000 --- a/third_party/dialog/DialogSDK/bsp/config/bsp_defaults.h +++ /dev/null @@ -1,3156 +0,0 @@ -/** - * \addtogroup BSP - * \{ - * \addtogroup BSP_CONFIG - * \{ - * \addtogroup BSP_CONFIG_DEFAULTS - * - * \brief Board support package default configuration values - * - * The following tags are used to describe the type of each configuration option. - * - * - **\bsp_config_option_build** : To be changed only in the build configuration - * of the project ("Defined symbols -D" in the - * preprocessor options). - * - * - **\bsp_config_option_app** : To be changed only in the custom_config*.h - * project files. - * - * - **\bsp_config_option_expert_only** : To be changed only by an expert user. - * \{ - */ - -/** - **************************************************************************************** - * - * @file bsp_defaults.h - * - * @brief Board Support Package. System Configuration file default values. - * - * Copyright (c) 2016, Dialog Semiconductor - * All rights reserved. - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. Neither the name of the copyright holder nor the names of its contributors - * may be used to endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, - * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, - * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED - * OF THE POSSIBILITY OF SUCH DAMAGE. - * - * - *************************************************************************************** -*/ - -#ifndef BSP_DEFAULTS_H_ -#define BSP_DEFAULTS_H_ - - - - -/** - * \addtogroup POWER_SETTINGS - * - * \brief Power configuration settings - * \{ - */ -/* -------------------------------------- Power settings ---------------------------------------- */ - -/* - * This is a deprecated configuration hence not to be defined by an application. - * There's a single power configuration setup. - */ -#ifdef dg_configPOWER_CONFIG -#error "Configuration option dg_configPOWER_CONFIG is no longer supported." -#endif - -/** - * \brief When set to 1, the system will go to sleep and never exit allowing for the sleep current to be - * measured. - * - * \bsp_default_note{\bsp_config_option_app, \bsp_config_option_expert_only} - */ -#ifndef dg_configTESTMODE_MEASURE_SLEEP_CURRENT -#define dg_configTESTMODE_MEASURE_SLEEP_CURRENT (0) -#endif -/* ---------------------------------------------------------------------------------------------- */ - -/** - * \} - */ - -/** - * \addtogroup IMAGE_CONFIGURATION_SETTINGS - * - * \brief Image configuration settings. - * \{ - */ -/* ------------------------------- Image configuration settings --------------------------------- */ - -/** - * \brief The chip revision that we compile for. - * - * \note There is no default value defined for the target chip revision. The application must\n - * neither explicitly set dg_configBLACK_ORCA_IC_REV, nor set\n - * dg_configUSE_AUTO_CHIP_DETECTION to 1. - * - * \bsp_default_note{\bsp_config_option_build,} - */ -#ifndef dg_configBLACK_ORCA_IC_REV -# if dg_configUSE_AUTO_CHIP_DETECTION != 1 -# error "You must either define dg_configBLACK_ORCA_IC_REV in the build configuration or set dg_configUSE_AUTO_CHIP_DETECTION to 1" -# endif -#endif - -/** - * \brief The chip stepping that we compile for. - * - * \note There is no default value defined for the target chip revision. The application must\n - * either explicitly set dg_configBLACK_ORCA_IC_STEP nor set\n - * dg_configUSE_AUTO_CHIP_DETECTION to 1. - * - * \bsp_default_note{\bsp_config_option_build,} - */ -#ifndef dg_configBLACK_ORCA_IC_STEP -# if dg_configUSE_AUTO_CHIP_DETECTION != 1 -# error "You must either define dg_configBLACK_ORCA_IC_STEP in the build configuration or set dg_configUSE_AUTO_CHIP_DETECTION to 1" -# endif -#endif - -/** - * \brief The motherboard revision we compile for. - * - * \bsp_default_note{\bsp_config_option_app,} - */ -#ifndef dg_configBLACK_ORCA_MB_REV -#define dg_configBLACK_ORCA_MB_REV BLACK_ORCA_MB_REV_D -#endif - -/* - * This is a deprecated configuration hence not to be defined by an application. - * The values of the trim registers are not anymore taken from the Flash. - * - */ -#ifdef dg_configCONFIG_HEADER_IN_FLASH -#error "Configuration option dg_configCONFIG_HEADER_IN_FLASH is no longer supported." -#endif - -/** - * \brief Controls how the image is built. - * - DEVELOPMENT_MODE: various debugging options are included. - * - PRODUCTION_MODE: all code used for debugging is removed. - * - * \bsp_default_note{\bsp_config_option_app, \bsp_config_option_expert_only} - */ -#ifndef dg_configIMAGE_SETUP -#define dg_configIMAGE_SETUP DEVELOPMENT_MODE -#endif - -/** - * \brief When set to 1, the delay at the start of execution of the Reset_Handler is skipped. - * - * \details This delay is added in order to facilitate proper programming of the Flash or QSPI\n - * launcher invocation. Without it, there is no guarantee that the execution of the image\n - * will not proceed, altering the default configuration of the system from the one that the\n - * bootloader leaves it. - * - * \bsp_default_note{\bsp_config_option_app, \bsp_config_option_expert_only} - */ -#ifndef dg_configSKIP_MAGIC_CHECK_AT_START -#define dg_configSKIP_MAGIC_CHECK_AT_START (0) -#endif - -/** - * \brief When set to 1, the chip version (DA14680/1-01 or DA14682/3-00, DA15XXX-00 ) will be detected\n - * automatically. - * \note It cannot be used in BLE applications because of the different linker scripts\n - * that are used. - * \warning Not to be used by a generic project, applicable for uartboot only. - * - * \bsp_default_note{\bsp_config_option_app, \bsp_config_option_expert_only} - */ -#ifndef dg_configUSE_AUTO_CHIP_DETECTION -#define dg_configUSE_AUTO_CHIP_DETECTION (0) -#else -# if (dg_configUSE_AUTO_CHIP_DETECTION == 1) - #undef dg_configBLACK_ORCA_IC_REV - #define dg_configBLACK_ORCA_IC_REV BLACK_ORCA_IC_REV_AUTO - #undef dg_configBLACK_ORCA_IC_STEP - #define dg_configBLACK_ORCA_IC_STEP BLACK_ORCA_IC_STEP_AUTO -# endif -#endif - -/** - * \brief When set to 1, the OTP copy will be emulated when in DEVELOPMENT_MODE. - * - * \bsp_default_note{\bsp_config_option_app, \bsp_config_option_expert_only} - */ -#ifndef dg_configEMULATE_OTP_COPY -#define dg_configEMULATE_OTP_COPY (0) -#endif - -/** - * \brief When set to 1, the QSPI copy will be emulated when in DEVELOPMENT_MODE (Not Applicable!). - * - * \bsp_default_note{\bsp_config_option_app, \bsp_config_option_expert_only} - */ -#ifndef dg_configEMULATE_QSPI_COPY -#define dg_configEMULATE_QSPI_COPY (0) -#endif -/* ---------------------------------------------------------------------------------------------- */ - -/** - * \} - */ - -/** - * \addtogroup LOW_POWER_CLOCK_SETTINGS - * - * \brief Doxygen documentation is not yet available for this module. - * Please check the source code file(s) - * - * \bsp_default_note{\bsp_config_option_app, \bsp_config_option_expert_only} - * \{ - */ -/* --------------------------------- Low-Power clock settings ----------------------------------- */ - -/* - * Maximum sleep time the sleep timer supports - * - * dg_configTim1Prescaler can be zero. if dg_configTim1Prescaler is not zero then - * ( dg_configTim1Prescaler + 1 ) MUST be a power of 2! */ -#if dg_configBLACK_ORCA_IC_REV == BLACK_ORCA_IC_REV_A -#if (dg_configUSE_LP_CLK == LP_CLK_32000) -#define dg_configTim1Prescaler (3) -#define dg_configMaxSleepTime (8) // sec -#elif (dg_configUSE_LP_CLK == LP_CLK_32768) -#define dg_configTim1Prescaler (3) -#define dg_configMaxSleepTime (8) // sec -#elif (dg_configUSE_LP_CLK == LP_CLK_RCX) -#define dg_configTim1Prescaler (0) -#define dg_configMaxSleepTime (8) // sec -#elif (dg_configUSE_LP_CLK == LP_CLK_ANY) -/* Assuming that the frequency of the external digital clock is 32000Hz, - * period: 1/32000 = 31.25usec - * Timer1 wrap-around time: 65536 * 31.25 = 2.048sec - * With a prescaler equal to 3, the wrap around time becomes: (1 + 3) * 2.048 = ~8sec. - * If the clock frequency is too slow, i.e. 16000Hz then - * period: 1/16000 = 62.5usec - * Timer1 wrap-around time = 65536 * 62.5 = 4.096sec - * and the prescaler should be 1 so that: (1 + 1) * 4.096 = ~8sec. - * If the clock frequency is too high, i.e. 125000Hz then - * period: 1/125000 = 8usec - * Timer1 wrap-around time = 65536 * 8 = 0.524sec - * and the prescaler should be 3 so that: (1 + 3) * 0.524 = ~2sec. - * The values MUST be defined in the custom_config_<>.h file! - */ -#else -#error "dg_configUSE_LP_CLK has invalid setting" -#endif -#else /* dg_configBLACK_ORCA_IC_REV == BLACK_ORCA_IC_REV_A */ -#if (dg_configUSE_LP_CLK == LP_CLK_32000) || (dg_configUSE_LP_CLK == LP_CLK_32768) || (dg_configUSE_LP_CLK == LP_CLK_RCX) -#ifdef dg_configTim1Prescaler -#warning "Timer1 prescaler is not supported in DA14682/3 chips." -#undef dg_configTim1Prescaler -#endif /* dg_configTim1Prescaler */ -#define dg_configMaxSleepTime (134217) // sec -#else -#error "dg_configUSE_LP_CLK has invalid setting" -#endif -#endif /* dg_configBLACK_ORCA_IC_REV == BLACK_ORCA_IC_REV_A */ - -#if (dg_configTim1Prescaler && (((dg_configTim1Prescaler+1) / 2) * 2) != (dg_configTim1Prescaler+1)) -#error "dg_configTim1Prescaler+1 is not 0 or a power of 2!" -#endif - -#if dg_configBLACK_ORCA_IC_REV == BLACK_ORCA_IC_REV_A -#if (dg_configTim1Prescaler == 0) -#define dg_configTim1PrescalerBitRange (0) -#elif (dg_configTim1Prescaler == 1) -#define dg_configTim1PrescalerBitRange (1) -#elif (dg_configTim1Prescaler == 3) -#define dg_configTim1PrescalerBitRange (2) -#else -#error "dg_configTim1Prescaler is larger than 3!" -#endif -#else -#ifdef dg_configTim1PrescalerBitRange -#warning "Timer1 prescaler is not supported in DA14682/3 chips." -#undef dg_configTim1PrescalerBitRange -#endif -#endif -/* ---------------------------------------------------------------------------------------------- */ - -/** - * \} - */ - -/** - * \addtogroup SYSTEM_CONFIGURATION_SETTINGS - * - * \brief System configuration settings - * - * \{ - */ -/* ------------------------------- System configuration settings -------------------------------- */ - -/** - * \brief Source of Low Power clock used (LP_CLK_IS_ANALOG, LP_CLK_IS_DIGITAL) - * - * \bsp_default_note{\bsp_config_option_app,} - */ -#ifndef dg_configLP_CLK_SOURCE -#define dg_configLP_CLK_SOURCE LP_CLK_IS_ANALOG -#endif - -# if ((dg_configLP_CLK_SOURCE == LP_CLK_IS_ANALOG) && (dg_configUSE_LP_CLK == LP_CLK_ANY)) -# error "When the LP source is analog (XTAL), the option LP_CLK_ANY is invalid!" -# endif - -# if ((dg_configLP_CLK_SOURCE == LP_CLK_IS_DIGITAL) && (dg_configUSE_LP_CLK == LP_CLK_RCX)) -# error "When the LP source is digital (External), the option LP_CLK_RCX is invalid!" -# endif - -/** - * \brief Low Power clock used (LP_CLK_32000, LP_CLK_32768, LP_CLK_RCX, LP_CLK_ANY) - * - * \bsp_default_note{\bsp_config_option_app,} - */ -# ifndef dg_configUSE_LP_CLK -# define dg_configUSE_LP_CLK LP_CLK_RCX -# endif - -/** - * \brief Code execution mode - * - * - MODE_IS_RAM - * - MODE_IS_MIRRORED - * - MODE_IS_CACHED - * - * \bsp_default_note{\bsp_config_option_app, \bsp_config_option_expert_only} - */ -# ifndef dg_configEXEC_MODE -# define dg_configEXEC_MODE MODE_IS_RAM -# endif - -/** - * \brief Code location - * - * - NON_VOLATILE_IS_OTP - * - NON_VOLATILE_IS_FLASH - * - NON_VOLATILE_IS_NONE (RAM) - * - * \bsp_default_note{\bsp_config_option_app,} - */ -# ifndef dg_configCODE_LOCATION -# define dg_configCODE_LOCATION NON_VOLATILE_IS_NONE -# endif - -/** - * \brief Frequency of the crystal connected to the XTAL Oscillator: 16MHz or 32MHz. - * - * \bsp_default_note{\bsp_config_option_app,} - */ -# ifndef dg_configEXT_CRYSTAL_FREQ -# define dg_configEXT_CRYSTAL_FREQ EXT_CRYSTAL_IS_16M -# endif - -/** - * \brief External LP type - * - * - 0: a crystal is connected to XTAL32Kp and XTALK32Km - * - 1: a digital clock is provided. - * - * \note the frequency of the digital clock must be 32KHz or 32.768KHz and be always running. - * - * \bsp_default_note{\bsp_config_option_app, \bsp_config_option_expert_only} - */ -# ifndef dg_configEXT_LP_IS_DIGITAL -# define dg_configEXT_LP_IS_DIGITAL (0) -# endif - -/* - * This is a deprecated configuration hence not to be defined by an application. - * Forcing the system to enter into clockless sleep during deep sleep is no longer supported. - */ -#ifdef dg_configFORCE_DEEP_SLEEP -#error "Configuration option dg_configFORCE_DEEP_SLEEP is no longer supported." -#endif - -/** - * \brief Timer 1 usage - * - * When set to 0, Timer1 is reserved for the OS tick. - * - * \note A setting to 1 is meaningful only for non-RTOS projects. - * - * \bsp_default_note{\bsp_config_option_app, \bsp_config_option_expert_only} - */ -#ifndef dg_configUSER_CAN_USE_TIMER1 -#define dg_configUSER_CAN_USE_TIMER1 (0) -#endif - -/** - * \brief Time needed for the settling of the LP clock, in msec. - * - * \bsp_default_note{\bsp_config_option_app, \bsp_config_option_expert_only} - */ -#ifndef dg_configXTAL32K_SETTLE_TIME -#define dg_configXTAL32K_SETTLE_TIME (8000) -#endif - -/** - * \brief Sleep delay time - * - * At startup, the system will stay active for at least this time period before it is allowed to go - * to sleep, in msec. - * - * \bsp_default_note{\bsp_config_option_app, \bsp_config_option_expert_only} - */ -#if (dg_configXTAL32K_SETTLE_TIME > 8000) -#define dg_configINITIAL_SLEEP_DELAY_TIME (dg_configXTAL32K_SETTLE_TIME) -#else -#define dg_configINITIAL_SLEEP_DELAY_TIME (8000) -#endif - -/** - * \brief XTAL16 settle time - * - * Time needed for the settling of the XTAL16, in LP cycles. To this value, 5 LP cycles, that are - * needed to start the core clock, are added since the SW powers the 1V4 rail after the execution - * is resumed. - * - * \bsp_default_note{\bsp_config_option_app, \bsp_config_option_expert_only} - */ -#ifndef dg_configXTAL16_SETTLE_TIME -#if ((dg_configUSE_LP_CLK == LP_CLK_32000) || (dg_configUSE_LP_CLK == LP_CLK_32768)) - #define dg_configXTAL16_SETTLE_TIME (85 + 5) -#elif (dg_configUSE_LP_CLK == LP_CLK_RCX) - #define dg_configXTAL16_SETTLE_TIME cm_rcx_us_2_lpcycles((uint32_t)((85 + 5) * 30.5)) -#else /* LP_CLK_ANY */ -// Must be defined in the custom_config_<>.h file. -#endif -#endif - -/** - * \brief XTAL16 settle time RC32K - * - * \bsp_default_note{\bsp_config_option_app, \bsp_config_option_expert_only} - */ -#define dg_configXTAL16_SETTLE_TIME_RC32K (110) - -/** - * \brief RC16 wakeup time - * - * This is the maximum time, in LP cycles, needed to wake-up the chip and start executing code - * using RC16. - * - * \bsp_default_note{\bsp_config_option_app, \bsp_config_option_expert_only} - */ -#define dg_configWAKEUP_RC16_TIME (16) - -/** - * \brief XTAL16 wakeup time - * - * Wake up N LP cycles before "time 0" to have XTAL16 ready when needed. - * - * \bsp_default_note{\bsp_config_option_app, \bsp_config_option_expert_only} - */ -#define dg_configWAKEUP_XTAL16_TIME (dg_configXTAL16_SETTLE_TIME + dg_configWAKEUP_RC16_TIME) - -/** - * \brief OS tick restore time - * - * This is the time, in LP cycles, required from the OS to restore the tick timer. - * - * \bsp_default_note{\bsp_config_option_app, \bsp_config_option_expert_only} - */ -#ifndef dg_configOS_TICK_RESTORE_TIME -#ifdef RELEASE_BUILD -#if dg_configBLACK_ORCA_IC_REV == BLACK_ORCA_IC_REV_A -#if ((dg_configUSE_LP_CLK == LP_CLK_32000) || (dg_configUSE_LP_CLK == LP_CLK_32768)) - #if (dg_configCODE_LOCATION != NON_VOLATILE_IS_FLASH) - #define dg_configOS_TICK_RESTORE_TIME (dg_configTim1Prescaler ? 2 + dg_configTim1Prescaler : 3) - #else - #if (dg_configIMAGE_SETUP == PRODUCTION_MODE) - #define dg_configOS_TICK_RESTORE_TIME (dg_configTim1Prescaler ? 3 + dg_configTim1Prescaler : 4) - #else - #define dg_configOS_TICK_RESTORE_TIME (dg_configTim1Prescaler ? 3 + dg_configTim1Prescaler : 4) - #endif - #endif -#elif (dg_configUSE_LP_CLK == LP_CLK_RCX) - #if (dg_configCODE_LOCATION != NON_VOLATILE_IS_FLASH) - #define dg_configOS_TICK_RESTORE_TIME cm_rcx_us_2_lpcycles(120) - #else - #define dg_configOS_TICK_RESTORE_TIME cm_rcx_us_2_lpcycles(120) - #endif -#else /* LP_CLK_ANY */ - /* Must be defined in the custom_config_<>.h file. - * For QSPI cached, the dg_configOS_TICK_RESTORE_TIME must be ~120usec when no prescaling is - * used and ~180usec when prescaling is used. - */ -#endif -#else /* dg_configBLACK_ORCA_IC_REV == BLACK_ORCA_IC_REV_A */ -#if ((dg_configUSE_LP_CLK == LP_CLK_32000) || (dg_configUSE_LP_CLK == LP_CLK_32768)) - #if (dg_configCODE_LOCATION != NON_VOLATILE_IS_FLASH) - #define dg_configOS_TICK_RESTORE_TIME (3) - #else - #if (dg_configIMAGE_SETUP == PRODUCTION_MODE) - #define dg_configOS_TICK_RESTORE_TIME (4) - #else - #define dg_configOS_TICK_RESTORE_TIME (4) - #endif - #endif -#elif (dg_configUSE_LP_CLK == LP_CLK_RCX) - #if (dg_configCODE_LOCATION != NON_VOLATILE_IS_FLASH) - #define dg_configOS_TICK_RESTORE_TIME cm_rcx_us_2_lpcycles(120) - #else - #define dg_configOS_TICK_RESTORE_TIME cm_rcx_us_2_lpcycles(120) - #endif -#else /* LP_CLK_ANY */ - /* Must be defined in the custom_config_<>.h file. - * For QSPI cached, the dg_configOS_TICK_RESTORE_TIME must be ~120usec when no prescaling is - * used and ~180usec when prescaling is used. - */ -#endif -#endif /* dg_configBLACK_ORCA_IC_REV == BLACK_ORCA_IC_REV_A */ -#else // RELEASE_BUILD -#if ((dg_configUSE_LP_CLK == LP_CLK_32000) || (dg_configUSE_LP_CLK == LP_CLK_32768)) - #if (dg_configCODE_LOCATION != NON_VOLATILE_IS_FLASH) - #define dg_configOS_TICK_RESTORE_TIME (40) - #else - #define dg_configOS_TICK_RESTORE_TIME (72) - #endif -#elif (dg_configUSE_LP_CLK == LP_CLK_RCX) - #if (dg_configCODE_LOCATION != NON_VOLATILE_IS_FLASH) - #define dg_configOS_TICK_RESTORE_TIME cm_rcx_us_2_lpcycles(1200) - #else - #define dg_configOS_TICK_RESTORE_TIME cm_rcx_us_2_lpcycles(2400) - #endif -#else /* LP_CLK_ANY */ - /* Must be defined in the custom_config_<>.h file. - * Usually, the dg_configOS_TICK_RESTORE_TIME is set to a large value (i.e. 1.2 - 2.4msec) - * in order to allow for a more "relaxed" waking up of the system. - */ -#endif -#endif // RELEASE_BUILD -#endif // dg_configOS_TICK_RESTORE_TIME - -/** - * \brief Image copy time - * - * The number of LP cycles needed for the application's image data to be copied from the OTP - * (or QSPI) to the RAM in mirrored mode. - * - * \warning MUST BE SMALLER THAN #dg_configMIN_SLEEP_TIME !!! - * - * \bsp_default_note{\bsp_config_option_app, \bsp_config_option_expert_only} - */ -#if (dg_configEXEC_MODE != MODE_IS_MIRRORED) - #undef dg_configIMAGE_COPY_TIME - #define dg_configIMAGE_COPY_TIME (0) -#elif !defined(dg_configIMAGE_COPY_TIME) - #if ((dg_configUSE_LP_CLK == LP_CLK_32000) || (dg_configUSE_LP_CLK == LP_CLK_32768)) - #define dg_configIMAGE_COPY_TIME (64) - #elif (dg_configUSE_LP_CLK == LP_CLK_RCX) - #define dg_configIMAGE_COPY_TIME cm_rcx_us_2_lpcycles(1950) - #else /* LP_CLK_ANY */ - // Must be defined in the custom_config_<>.h file. - #endif -#endif - -/** - * \brief Retention memory configuration. - * - * 5 bits field; each bit controls whether the relevant memory block will be retained (1) or not (0). - * - bit 0 : SYSRAM1 - * - bit 1 : SYSRAM2 - * - bit 2 : SYSRAM3 - * - bit 3 : SYSRAM4 - * - bit 4 : SYSRAM5 - * - * \bsp_default_note{\bsp_config_option_app, \bsp_config_option_expert_only} - * - */ -#ifndef dg_configMEM_RETENTION_MODE -#define dg_configMEM_RETENTION_MODE (0x1F) -#endif - -/* - * This is a deprecated configuration hence not to be defined by an application. - */ -#ifdef dg_configMEM_RETENTION_MODE_PRESERVE_IMAGE -#error "dg_configMEM_RETENTION_MODE_PRESERVE_IMAGE is no longer supported." -#endif - -/** - * \brief Memory Shuffling mode. - * - * See SYS_CTRL_REG:REMAP_RAMS field. - * - * \bsp_default_note{\bsp_config_option_app, \bsp_config_option_expert_only} - */ -#ifndef dg_configSHUFFLING_MODE -#define dg_configSHUFFLING_MODE (0) -#endif - -/** - * \brief ECC microcode RAM retainment - * - * \bsp_default_note{\bsp_config_option_app, \bsp_config_option_expert_only} - */ -#ifndef dg_configECC_UCODE_RAM_RETAINED -#define dg_configECC_UCODE_RAM_RETAINED (0) -#endif - -/** - * \brief Watchdog Service - * - * - 1: enabled - * - 0: disabled - * - * \bsp_default_note{\bsp_config_option_app,} - */ -#ifndef dg_configUSE_WDOG -#define dg_configUSE_WDOG (0) -#endif - -/** - * \brief Brown-out Detection - * - * - 1: used - * - 0: not used - * - * \bsp_default_note{\bsp_config_option_app,} - */ -#ifndef dg_configUSE_BOD -#define dg_configUSE_BOD (1) -#endif - -/** - * \brief Reset value for Watchdog. - * - * See WATCHDOG_REG:WDOG_VAL field. - * - * \bsp_default_note{\bsp_config_option_app, \bsp_config_option_expert_only} - */ -#ifndef dg_configWDOG_RESET_VALUE -#define dg_configWDOG_RESET_VALUE (0xFF) -#endif - -/** - * \brief Maximum watchdog tasks - * - * Maximum number of tasks that the Watchdog Service can monitor. It can be larger (up to 32) than - * needed, at the expense of increased Retention Memory requirement. - * - * \bsp_default_note{\bsp_config_option_app, \bsp_config_option_expert_only} - */ -#ifndef dg_configWDOG_MAX_TASKS_CNT -#define dg_configWDOG_MAX_TASKS_CNT (4) -#endif - -/** - * \brief Watchdog notify interval - * - * Interval (in miliseconds) for common timer which can be used to trigger tasks in order to notify - * watchdog. Can be set to 0 in order to disable timer code entirely. - * - * \bsp_default_note{\bsp_config_option_app, \bsp_config_option_expert_only} - */ -#ifndef dg_configWDOG_NOTIFY_TRIGGER_TMO -#define dg_configWDOG_NOTIFY_TRIGGER_TMO (0) -#endif - -/** - * \brief Abort a clock modification if it will cause an error to the SysTick counter - * - * - 1: on - * - 0: off - * - * \bsp_default_note{\bsp_config_option_app, \bsp_config_option_expert_only} - */ -#ifndef dg_configABORT_IF_SYSTICK_CLK_ERR -#define dg_configABORT_IF_SYSTICK_CLK_ERR (0) -#endif - -/** - * \brief Maximum adapters count - * - * Should be equal to the number of Adapters used by the Application. It can be larger (up to 254) - * than needed, at the expense of increased Retention Memory requirements. It cannot be 0. - * - * \bsp_default_note{\bsp_config_option_app, \bsp_config_option_expert_only} - */ -#ifndef dg_configPM_MAX_ADAPTERS_CNT -#define dg_configPM_MAX_ADAPTERS_CNT (16) -#endif - -/** - * \brief Maximum sleep defer time - * - * The maximum time sleep can be deferred via a call to pm_defer_sleep_for(). It is in clock cycles - * in the case of the XTAL32K and in usec in the case of RCX. - * - * \bsp_default_note{\bsp_config_option_app, \bsp_config_option_expert_only} - */ -#ifndef dg_configPM_MAX_ADAPTER_DEFER_TIME -#if ((dg_configUSE_LP_CLK == LP_CLK_32000) || (dg_configUSE_LP_CLK == LP_CLK_32768)) - #define dg_configPM_MAX_ADAPTER_DEFER_TIME (128) -#elif (dg_configUSE_LP_CLK == LP_CLK_RCX) - #define dg_configPM_MAX_ADAPTER_DEFER_TIME cm_rcx_us_2_lpcycles(4000) -#else /* LP_CLK_ANY */ - // Must be defined in the custom_config_<>.h file. It should be > 3.5msec. -#endif -#endif - -/** - * \brief Minimum sleep time - * - * No power savings if we enter sleep when the sleep time is less than N LP cycles - * - * \bsp_default_note{\bsp_config_option_app, \bsp_config_option_expert_only} - */ -#ifndef dg_configMIN_SLEEP_TIME -#if ((dg_configUSE_LP_CLK == LP_CLK_32000) || (dg_configUSE_LP_CLK == LP_CLK_32768)) - #define dg_configMIN_SLEEP_TIME (33*3) // 3 msec -#elif (dg_configUSE_LP_CLK == LP_CLK_RCX) - #define dg_configMIN_SLEEP_TIME cm_rcx_us_2_lpcycles_low_acc(3000) // 3 msec -#else /* LP_CLK_ANY */ - // Must be defined in the custom_config_<>.h file. It should be ~3msec but this may vary. -#endif -#endif - -/** - * \brief Recharge period - * - * \bsp_default_note{\bsp_config_option_app, \bsp_config_option_expert_only} - */ -#ifndef dg_configSET_RECHARGE_PERIOD -#if ((dg_configUSE_LP_CLK == LP_CLK_32000) || (dg_configUSE_LP_CLK == LP_CLK_32768)) -#define dg_configSET_RECHARGE_PERIOD (3000) /** number of Low Power clock cycles for - sampling and / or refreshing. */ -#elif (dg_configUSE_LP_CLK == LP_CLK_RCX) -#define dg_configSET_RECHARGE_PERIOD (90000) /** number of msec for sampling and / or - refreshing */ -#else /* LP_CLK_ANY */ - // Must be defined in the custom_config_<>.h file. -#endif -#endif /* dg_configSET_RECHARGE_PERIOD */ - -/** - * \brief When set to 1, the DCDC is used. - * - * \bsp_default_note{\bsp_config_option_app, \bsp_config_option_expert_only} - */ -#ifndef dg_configUSE_DCDC -#define dg_configUSE_DCDC (1) -#endif - -/* - * This is a deprecated configuration hence not to be defined by an application. - * The semantics of dg_configUSE_ADC replaced by dg_configUSE_HW_GPADC. - */ -#ifdef dg_configUSE_ADC -#error "Configuration option dg_configUSE_ADC is no longer supported. Use dg_configUSE_HW_GPADC instead." -#endif - -/** - * \brief Apply ADC Gain Error correction. - * - 1: used - * - 0: not used - * - * The default setting is: 1. - * - * \bsp_default_note{\bsp_config_option_app, \bsp_config_option_expert_only} - */ -#ifndef dg_configUSE_ADC_GAIN_ERROR_CORRECTION -#define dg_configUSE_ADC_GAIN_ERROR_CORRECTION (1) -#endif - -/** - * \brief When set to 1, the USB interface is used for data transfers. - * - * \bsp_default_note{\bsp_config_option_app,} - */ -#ifndef dg_configUSE_USB -#define dg_configUSE_USB (0) -#endif - -/** - * \addtogroup CHARGER_SETTINGS - * - * \brief Charger configuration settings - * \{ - */ -/* -------------------------------------- Charger settings -------------------------------------- */ - -/** - * \brief Battery type - * - * \bsp_default_note{\bsp_config_option_app, \bsp_config_option_expert_only} - */ -#ifndef dg_configBATTERY_TYPE -#define dg_configBATTERY_TYPE (BATTERY_TYPE_NO_BATTERY) -/** - * \brief Battery charge voltage - * - * \bsp_default_note{\bsp_config_option_app, \bsp_config_option_expert_only} - */ -#define dg_configBATTERY_CHARGE_VOLTAGE (0) -/** - * \brief Battery charge current - * - * \bsp_default_note{\bsp_config_option_app, \bsp_config_option_expert_only} - */ -#define dg_configBATTERY_CHARGE_CURRENT (0) -/** - * \brief Battery charge NTC - * - * 0: NTC is enabled, 1: NTC is disabled - * - * Note that when NTC is enabled, the P14 and P16 are controlled by the charger and cannot be used - * by the application. P14 is set high (at 3.3V) when the charging starts while P16 is an input. - * - * \bsp_default_note{\bsp_config_option_app, \bsp_config_option_expert_only} - */ -#define dg_configBATTERY_CHARGE_NTC (0) - -#if (dg_configBATTERY_CHARGE_NTC > 1) -#error "dg_configBATTERY_CHARGE_NTC must be either 0 or 1." -#endif -/** - * \brief Battery pre-charge current - * - * Normal charging : - * - 0 - 15 : as the description of the CHARGER_CTRL1_REG[CHARGE_CUR] field. - * - * Ext charging : "end-of-charge" is not functional when this mode is used. - * - 16 : Reserved - * - 17 : Reserved - * - 18 : 1mA - * - 19 : 1.5mA - * - 20 : 2.1mA - * - 21 : 3.2mA - * - 22 : 4.3mA - * - 23 : Reserved - * - 24 : 6.6mA - * - 25 : 7.8mA - * - 26 : Reserved - * - 27 : 11.3mA - * - 28 : 13.3mA - * - 29 : 15.3mA - * - * \bsp_default_note{\bsp_config_option_app, \bsp_config_option_expert_only} - */ -#define dg_configBATTERY_PRECHARGE_CURRENT (0) -#endif - -/** - * \brief When set to 1, the USB Charger is used to charge the battery. - * - * \bsp_default_note{\bsp_config_option_app,} - */ -#ifndef dg_configUSE_USB_CHARGER -#define dg_configUSE_USB_CHARGER (0) -#else -#if (dg_configUSE_USB_CHARGER == 1) - #undef dg_configUSE_HW_GPADC - #define dg_configUSE_HW_GPADC (1) - #undef dg_configUSE_USB - #define dg_configUSE_USB (1) - #undef dg_configGPADC_ADAPTER - #define dg_configGPADC_ADAPTER (1) - #undef dg_configBATTERY_ADAPTER - #define dg_configBATTERY_ADAPTER (1) -#endif -#endif - -/** - * \brief When set to 1, the USB Charger will try to enumerate, if possible. - * - * \bsp_default_note{\bsp_config_option_app, \bsp_config_option_expert_only} - */ -#ifndef dg_configUSE_USB_ENUMERATION -#define dg_configUSE_USB_ENUMERATION (0) -#else -#if (dg_configUSE_USB_ENUMERATION == 1) - #undef dg_configUSE_USB - #define dg_configUSE_USB (1) -#endif -#endif - -/** - * \brief Controls how the system will behave when the USB i/f is suspended. - * - * \details When the USB Node is suspended by the USB Host, the application may have to act in - * order to comply with the USB specification (consume less than 2.5mA). The available - * options are: - * 0: do nothing - * 1: pause system clock => the LP clock is stopped and only VBUS and USB irqs are handled - * 2: pause application => The system is not paused but the application must stop all - * timers and make sure all tasks are blocked. - * - * Both in modes 1 and 2, the application must make sure that all external peripherals are - * either powered off or placed in the lowest power consumption mode. - */ -#ifndef dg_configUSB_SUSPEND_MODE -#define dg_configUSB_SUSPEND_MODE (0) -#endif - -/** - * \brief When set to 1, the USB Charger will start charging with less than 100mA until enumerated. - * - * \bsp_default_note{\bsp_config_option_app, \bsp_config_option_expert_only} - */ -#ifndef dg_configALLOW_CHARGING_NOT_ENUM -#define dg_configALLOW_CHARGING_NOT_ENUM (0) -#endif - -/** - * \brief When set to 1, the USB charger will stop charging from an SDP port (if - * #dg_configALLOW_CHARGING_NOT_ENUM is set to 1) after 45 minutes, if not enumerated. - * - * \bsp_default_note{\bsp_config_option_app, \bsp_config_option_expert_only} - */ -#ifndef dg_configUSE_NOT_ENUM_CHARGING_TIMEOUT -#define dg_configUSE_NOT_ENUM_CHARGING_TIMEOUT (1) -#endif - -/** - * \brief Pre-charging initial measure delay - * - * This is the time to wait (N x 10 ms) before doing the first voltage measurement after starting - * pre-charging. This is to ensure that an initial battery voltage overshoot will not trigger the - * charger to stop pre-charging and move to normal charging. - * - * \bsp_default_note{\bsp_config_option_app, \bsp_config_option_expert_only} - */ -#ifndef dg_configPRECHARGING_INITIAL_MEASURE_DELAY -#define dg_configPRECHARGING_INITIAL_MEASURE_DELAY (3) -#endif - -/** - * \brief Pre-charging threshold - * - * When Vbat is below this threshold (in ADC measurement units), pre-charging starts. - * - * The value must be calculated using this equation: - * - * y[ADC units] = (4095 * Vbat[Volts]) / 5 - * - * \bsp_default_note{\bsp_config_option_app, \bsp_config_option_expert_only} - */ -#ifndef dg_configPRECHARGING_THRESHOLD -#define dg_configPRECHARGING_THRESHOLD (0) -#endif - -/** - * \brief Charging threshold - * - * When Vbat is at or above this threshold (in ADC measurement units), pre-charging stops and - * charging starts. - * - * The value must be calculated using this equation: - * - * y[ADC units] = (4095 * Vbat[Volts]) / 5 - * - * \bsp_default_note{\bsp_config_option_app, \bsp_config_option_expert_only} - */ -#ifndef dg_configCHARGING_THRESHOLD -#define dg_configCHARGING_THRESHOLD (0) -#endif - -/** - * \brief Pre-charging timeout - * - * If after this period, the Vbat is not higher than 3.0V then pre-charging stops (N x 10msec). - * - * \bsp_default_note{\bsp_config_option_app, \bsp_config_option_expert_only} - */ -#ifndef dg_configPRECHARGING_TIMEOUT -#define dg_configPRECHARGING_TIMEOUT (15 * 60 * 100) -#endif - -/** - * \brief Charging timeout - * - * If after this period, the charger is still charging then charging stops (N x 10msec). This - * timeout has priority over the next two timeouts. If it is not zero then it is the only one taken - * into account. - * - * \bsp_default_note{\bsp_config_option_app, \bsp_config_option_expert_only} - */ -#ifndef dg_configCHARGING_TIMEOUT -#define dg_configCHARGING_TIMEOUT (0) -#endif - -/** - * \brief Charging CC timeout - * - * If after this period, the charger is still in CC mode then charging stops (N x 10msec). - * - * \bsp_default_note{\bsp_config_option_app, \bsp_config_option_expert_only} - */ -#ifndef dg_configCHARGING_CC_TIMEOUT -#define dg_configCHARGING_CC_TIMEOUT (180 * 60 * 100) -#endif - -/** - * \brief Charging CV timeout - * - * If after this period, the charger is still in CC mode then charging stops (N x 10msec). - * - * \bsp_default_note{\bsp_config_option_app, \bsp_config_option_expert_only} - */ -#ifndef dg_configCHARGING_CV_TIMEOUT -#define dg_configCHARGING_CV_TIMEOUT (360 * 60 * 100) -#endif - -/** - * \brief Charginf polling interval - * - * While being attached to a USB cable and the battery has been charged, this is the interval - * (N x 10msec) that the Vbat is polled to decide whether a new charge cycle will be started. - * - * \bsp_default_note{\bsp_config_option_app, \bsp_config_option_expert_only} - */ -#ifndef dg_configUSB_CHARGER_POLLING_INTERVAL -#define dg_configUSB_CHARGER_POLLING_INTERVAL (100) -#endif - -/** - * \brief Battery low level - * - * If not zero, this is the low limit of the battery voltage. If Vbat drops below this limit, the - * system enters hibernation mode, waiting either for the battery to the changed or recharged. - * - * The value must be calculated using this equation: - * - * y[ADC units] = (4095 * Vbat[Volts]) / 5 - * - * \bsp_default_note{\bsp_config_option_app, \bsp_config_option_expert_only} - */ -#ifndef dg_configBATTERY_LOW_LEVEL - #if (dg_configBATTERY_TYPE == BATTERY_TYPE_NO_BATTERY) || (dg_configBATTERY_TYPE == BATTERY_TYPE_NO_RECHARGE) - #define dg_configBATTERY_LOW_LEVEL (0) - #else - #define dg_configBATTERY_LOW_LEVEL (2293) // 2.8V - #endif -#endif - -/* - * This is a deprecated configuration hence not to be defined by an application. - * When entering hibernation mode then: - * A DA14680/1-01 system reboots only via an interrupt from the WKUP Ctrl or VBUS. - * A DA14682/3-00, DA15XXX-00 system reboots only via an interrupt from the WKUP Ctrl. - */ -#ifdef dg_configLOW_VBAT_HANDLING -#error "Configuration option dg_configLOW_VBAT_HANDLING is no longer supported." -#endif - -/** - * \brief Custom battery ADC voltage - * - * In case of a custom battery with unknown voltage level, this parameter must be defined to - * provide the charge level of the battery in ADC measurement units. If not provided for some - * reason, it is set to the lowest level (1.9V). - * - * The value must be calculated using this equation: - * - * y[ADC units] = (4095 * Vbat[Volts]) / 5 - * - * \bsp_default_note{\bsp_config_option_app, \bsp_config_option_expert_only} - */ -#if (dg_configBATTERY_TYPE == BATTERY_TYPE_CUSTOM) -#ifndef dg_configBATTERY_TYPE_CUSTOM_ADC_VOLTAGE -#define dg_configBATTERY_TYPE_CUSTOM_ADC_VOLTAGE (1556) -#endif -#endif - -/** - * \brief Battery charge gap - * - * This is the safety limit used in the "Measurement step" of the specification to decide whether - * charging should be started. The default value is 0.1V. - * - * The value must be calculated using this equation: - * - * y[ADC units] = (4095 * Vbat[Volts]) / 5 - * - * \bsp_default_note{\bsp_config_option_app, \bsp_config_option_expert_only} - */ -#ifndef dg_configBATTERY_CHARGE_GAP -#define dg_configBATTERY_CHARGE_GAP (82) -#endif - -/** - * \brief Battery replenish gap - * - * This is the limit below the maximum Vbat level (Vbat - dg_configBATTERY_REPLENISH_GAP), where - * charging will be restarted in order to replenish the battery. The default value is 0.2V. - * - * The value must be calculated using this equation: - * - * y[ADC units] = (4095 * Vbat[Volts]) / 5 - * - * \bsp_default_note{\bsp_config_option_app, \bsp_config_option_expert_only} - */ -#ifndef dg_configBATTERY_REPLENISH_GAP -#define dg_configBATTERY_REPLENISH_GAP (82*2) -#endif -/* ---------------------------------------------------------------------------------------------- */ - -/** - * \} CHARGER_SETTINGS - */ - - -/** - * \brief The Rsense of the SOC in multiples of 0.1Ohm. The default value is (1 x 0.1Ohm). - */ -#ifndef dg_configSOC_RSENSE -#define dg_configSOC_RSENSE (1) // N x 0.1Ohm -#endif - -/** - * \brief When set to 1, the ProDK is used (controls specific settings for this board). - * - * \bsp_default_note{\bsp_config_option_app,} - */ -#ifndef dg_configUSE_ProDK -#define dg_configUSE_ProDK (0) -#endif - -/** - * \brief When set to 1, State of Charge function is enabled. - * - * \bsp_default_note{\bsp_config_option_app, \bsp_config_option_expert_only} - */ -#ifndef dg_configUSE_SOC -#define dg_configUSE_SOC (0) -#else -# if (dg_configUSE_SOC == 1) -# undef dg_configUSE_HW_SOC -# define dg_configUSE_HW_SOC (1) -# endif -#endif - -/** - * \addtogroup FLASH_SETTINGS - * - * \brief Flash configuration settings - * - * \{ - */ -/* -------------------------------------- Flash settings ---------------------------------------- */ - -/** - * \brief The rail from which the Flash is powered, if a Flash is used. - * - * - FLASH_IS_NOT_CONNECTED - * - FLASH_CONNECTED_TO_1V8 - * - FLASH_CONNECTED_TO_1V8P - * - * \bsp_default_note{\bsp_config_option_app,} - */ -#ifndef dg_configFLASH_CONNECTED_TO -#error "dg_configFLASH_CONNECTED_TO is not defined!" -#endif - -/* Backward compatibility checks */ -#if defined(dg_configPOWER_EXT_1V8_PERIPHERALS) || defined(dg_configPOWER_FLASH) \ - || defined(dg_configFLASH_POWER_OFF) -#define PRINT_POWER_RAIL_SETUP -#endif - -#if defined(dg_configPOWER_EXT_1V8_PERIPHERALS) && defined(dg_configPOWER_1V8P) -#error "Both dg_configPOWER_EXT_1V8_PERIPHERALS and dg_configPOWER_1V8P are defined! Please use dg_configPOWER_1V8P only!" -#endif - -#ifdef dg_configPOWER_EXT_1V8_PERIPHERALS - #warning "dg_configPOWER_EXT_1V8_PERIPHERALS will be deprecated! Use dg_configPOWER_1V8P instead!" - - #if (dg_configPOWER_EXT_1V8_PERIPHERALS == 0) \ - && (dg_configFLASH_CONNECTED_TO == FLASH_CONNECTED_TO_1V8P) - #error "Flash is connected to 1V8P but dg_configPOWER_EXT_1V8_PERIPHERALS is 0..." - #endif - - #if (dg_configPOWER_EXT_1V8_PERIPHERALS == 1) - #define dg_configPOWER_1V8P (1) - #else - #define dg_configPOWER_1V8P (0) - #endif - #undef dg_configPOWER_EXT_1V8_PERIPHERALS -#endif - -#if defined(dg_configPOWER_FLASH) && defined(dg_configPOWER_1V8_ACTIVE) -#error "Both dg_configPOWER_FLASH and dg_configPOWER_1V8_ACTIVE are defined! Please use dg_configPOWER_1V8_ACTIVE only!" -#endif - -#if defined(dg_configFLASH_POWER_OFF) && defined(dg_configPOWER_1V8_SLEEP) -#error "Both dg_configFLASH_POWER_OFF and dg_configPOWER_1V8_SLEEP are defined! Please use dg_configPOWER_1V8_SLEEP only!" -#endif - -#ifdef dg_configPOWER_FLASH -#warning "dg_configPOWER_FLASH is deprecated! Use dg_configPOWER_1V8_ACTIVE instead!" -#endif -/* End of backward compatibility checks */ - -/** - * \brief When set to 1, the 1V8 rail is powered, when the system is in active state. - * - * \bsp_default_note{\bsp_config_option_app,} - */ -#ifndef dg_configPOWER_1V8_ACTIVE -#ifndef dg_configPOWER_FLASH - #define dg_configPOWER_1V8_ACTIVE (0) -#else - #if (dg_configPOWER_FLASH == 0) - #if (dg_configFLASH_CONNECTED_TO == FLASH_CONNECTED_TO_1V8) - #error "Flash is connected to the 1V8 rail but the rail is turned off (1)..." - #else - #define dg_configPOWER_1V8_ACTIVE (0) - #endif - #else - #define dg_configPOWER_1V8_ACTIVE (1) - #endif -#endif -#endif - -/** - * \brief When set to 1, the 1V8 is powered during sleep. - * - * \bsp_default_note{\bsp_config_option_app,} - */ -#ifndef dg_configPOWER_1V8_SLEEP -#ifndef dg_configFLASH_POWER_OFF - #define dg_configPOWER_1V8_SLEEP (0) -#else - #if (dg_configFLASH_POWER_OFF == 0) - #define dg_configPOWER_1V8_SLEEP (1) - #else - #define dg_configPOWER_1V8_SLEEP (0) - #endif -#endif -#endif - -/** - * \brief When set to 1, the Flash (connected to the 1V8 rail) is powered off during sleep. - * - * \note This is an internal define and cannot be overridden! - */ -#undef dg_configFLASH_POWER_OFF -#define dg_configFLASH_POWER_OFF ((dg_configFLASH_CONNECTED_TO == FLASH_CONNECTED_TO_1V8) \ - && (dg_configPOWER_1V8_SLEEP == 0)) - -/** - * \brief When set to 1, the 1V8P rail is powered. - * - * \bsp_default_note{\bsp_config_option_app,} - */ -#ifndef dg_configPOWER_1V8P -#define dg_configPOWER_1V8P (0) -#endif - -/** - * \brief When set to 1, the QSPI FLASH is put to power-down state during sleep. - * - * \bsp_default_note{\bsp_config_option_app,} - */ -#ifndef dg_configFLASH_POWER_DOWN -#define dg_configFLASH_POWER_DOWN (0) -#endif - -/** - * \brief Enable the Flash Autodetection mode - * - * \warning THIS WILL GREATLY INCREASE THE CODE SIZE AND RETRAM USAGE!!! MAKE SURE YOUR PROJECT - * CAN SUPPORT THIS. - * - * \bsp_default_note{\bsp_config_option_app, \bsp_config_option_expert_only} - */ -#ifndef dg_configFLASH_AUTODETECT -#define dg_configFLASH_AUTODETECT (0) -#endif - -#if dg_configFLASH_AUTODETECT == 0 - -/** - * \brief The Flash Driver header file to include - * - * The header file must be in the include path of the compiler - * - * \bsp_default_note{\bsp_config_option_app,} - */ -#ifndef dg_configFLASH_HEADER_FILE -#define dg_configFLASH_HEADER_FILE "qspi_w25q80ew.h" -#endif - -/** - * \brief The Flash Manufacturer ID - * - * This must be defined inside the driver header file - * - * \bsp_default_note{\bsp_config_option_app,} - */ -#ifndef dg_configFLASH_MANUFACTURER_ID -#define dg_configFLASH_MANUFACTURER_ID WINBOND_ID -#endif - -/** - * \brief The Flash Device Type ID - * - * This must be defined inside the driver header file - * - * \bsp_default_note{\bsp_config_option_app,} - */ -#ifndef dg_configFLASH_DEVICE_TYPE -#define dg_configFLASH_DEVICE_TYPE W25Q80EW -#endif - -/** - * \brief The Flash Device Density ID - * - * This must be defined inside the driver header file - * - * \bsp_default_note{\bsp_config_option_app,} - */ -#ifndef dg_configFLASH_DENSITY -#define dg_configFLASH_DENSITY W25Q_8Mb_SIZE -#endif - -#endif /* dg_configFLASH_AUTODETECT == 0 */ - -/** - * \brief Offset of the image if not placed at the beginning of QSPI Flash. - * - * \bsp_default_note{\bsp_config_option_app, \bsp_config_option_expert_only} - */ -#ifndef dg_configIMAGE_FLASH_OFFSET -#define dg_configIMAGE_FLASH_OFFSET (0) -#endif - -/** - * \brief Set the flash page size. - * - * \bsp_default_note{\bsp_config_option_app, \bsp_config_option_expert_only} - */ -#ifndef dg_configFLASH_MAX_WRITE_SIZE -#define dg_configFLASH_MAX_WRITE_SIZE (128) -#endif - -/** - * \brief Disable background operations. - * - * When enabled, outstanding QSPI operations will take place during sleep time - * increasing the efficiency. - * - * - 1 : Disabled - * - 0 : Enabled - * - * \bsp_default_note{\bsp_config_option_app, \bsp_config_option_expert_only} - */ -#ifndef dg_configDISABLE_BACKGROUND_FLASH_OPS -#define dg_configDISABLE_BACKGROUND_FLASH_OPS (0) -#endif - -/* ---------------------------------------------------------------------------------------------- */ - -/** - * \} - */ - -/** - * \addtogroup DEBUG_SETTINGS - * - * \brief Debugging settings - * - * \{ - */ -/* -------------------------------------- Debug settings ---------------------------------------- */ - -/** - * \brief Enable debugger - * - * \bsp_default_note{\bsp_config_option_app,} - */ -#ifndef dg_configENABLE_DEBUGGER -#define dg_configENABLE_DEBUGGER (1) -#endif - -/** - * \brief Use SW cursor - * - * \bsp_default_note{\bsp_config_option_app,} - */ -#ifndef dg_configUSE_SW_CURSOR -# define dg_configUSE_SW_CURSOR (0) -# define SW_CURSOR_PORT (0) -# define SW_CURSOR_PIN (0) -#else -# if dg_configBLACK_ORCA_MB_REV == BLACK_ORCA_MB_REV_D -# if !defined SW_CURSOR_PORT && !defined SW_CURSOR_PIN -# define SW_CURSOR_PORT (0) -# define SW_CURSOR_PIN (7) -# endif -# else -# if !defined SW_CURSOR_PORT && !defined SW_CURSOR_PIN -# define SW_CURSOR_PORT (2) -# define SW_CURSOR_PIN (3) -# endif -# endif -#endif -#define SW_CURSOR_GPIO *(SW_CURSOR_PORT == 0 ? \ - (SW_CURSOR_PIN == 0 ? &(GPIO->P00_MODE_REG) : \ - (SW_CURSOR_PIN == 1 ? &(GPIO->P01_MODE_REG) : \ - (SW_CURSOR_PIN == 2 ? &(GPIO->P02_MODE_REG) : \ - (SW_CURSOR_PIN == 3 ? &(GPIO->P03_MODE_REG) : \ - (SW_CURSOR_PIN == 4 ? &(GPIO->P04_MODE_REG) : \ - (SW_CURSOR_PIN == 5 ? &(GPIO->P05_MODE_REG) : \ - (SW_CURSOR_PIN == 6 ? &(GPIO->P06_MODE_REG) : \ - &(GPIO->P07_MODE_REG)))))))) \ - : \ - (SW_CURSOR_PORT == 1 ? \ - (SW_CURSOR_PIN == 0 ? &(GPIO->P10_MODE_REG) : \ - (SW_CURSOR_PIN == 1 ? &(GPIO->P11_MODE_REG) : \ - (SW_CURSOR_PIN == 2 ? &(GPIO->P12_MODE_REG) : \ - (SW_CURSOR_PIN == 3 ? &(GPIO->P13_MODE_REG) : \ - (SW_CURSOR_PIN == 4 ? &(GPIO->P14_MODE_REG) : \ - (SW_CURSOR_PIN == 5 ? &(GPIO->P15_MODE_REG) : \ - (SW_CURSOR_PIN == 6 ? &(GPIO->P16_MODE_REG) : \ - &(GPIO->P17_MODE_REG)))))))) \ - : \ - (SW_CURSOR_PORT == 2 ? \ - (SW_CURSOR_PIN == 0 ? &(GPIO->P20_MODE_REG) : \ - (SW_CURSOR_PIN == 1 ? &(GPIO->P21_MODE_REG) : \ - (SW_CURSOR_PIN == 2 ? &(GPIO->P22_MODE_REG) : \ - (SW_CURSOR_PIN == 3 ? &(GPIO->P23_MODE_REG) : \ - &(GPIO->P24_MODE_REG))))) \ - : \ - (SW_CURSOR_PORT == 3 ? \ - (SW_CURSOR_PIN == 0 ? &(GPIO->P30_MODE_REG) : \ - (SW_CURSOR_PIN == 1 ? &(GPIO->P31_MODE_REG) : \ - (SW_CURSOR_PIN == 2 ? &(GPIO->P32_MODE_REG) : \ - (SW_CURSOR_PIN == 3 ? &(GPIO->P33_MODE_REG) : \ - (SW_CURSOR_PIN == 4 ? &(GPIO->P34_MODE_REG) : \ - (SW_CURSOR_PIN == 5 ? &(GPIO->P35_MODE_REG) : \ - (SW_CURSOR_PIN == 6 ? &(GPIO->P36_MODE_REG) : \ - &(GPIO->P37_MODE_REG)))))))) \ - : \ - (SW_CURSOR_PIN == 0 ? &(GPIO->P40_MODE_REG) : \ - (SW_CURSOR_PIN == 1 ? &(GPIO->P41_MODE_REG) : \ - (SW_CURSOR_PIN == 2 ? &(GPIO->P42_MODE_REG) : \ - (SW_CURSOR_PIN == 3 ? &(GPIO->P43_MODE_REG) : \ - (SW_CURSOR_PIN == 4 ? &(GPIO->P44_MODE_REG) : \ - (SW_CURSOR_PIN == 5 ? &(GPIO->P45_MODE_REG) : \ - (SW_CURSOR_PIN == 6 ? &(GPIO->P46_MODE_REG) : \ - &(GPIO->P47_MODE_REG)))))))))))) - -#define SW_CURSOR_SET *(SW_CURSOR_PORT == 0 ? &(GPIO->P0_SET_DATA_REG) : \ - (SW_CURSOR_PORT == 1 ? &(GPIO->P1_SET_DATA_REG) : \ - (SW_CURSOR_PORT == 2 ? &(GPIO->P2_SET_DATA_REG) : \ - (SW_CURSOR_PORT == 3 ? &(GPIO->P3_SET_DATA_REG) : \ - &(GPIO->P4_SET_DATA_REG))))) - -#define SW_CURSOR_RESET *(SW_CURSOR_PORT == 0 ? &(GPIO->P0_RESET_DATA_REG) : \ - (SW_CURSOR_PORT == 1 ? &(GPIO->P1_RESET_DATA_REG) : \ - (SW_CURSOR_PORT == 2 ? &(GPIO->P2_RESET_DATA_REG) : \ - (SW_CURSOR_PORT == 3 ? &(GPIO->P3_RESET_DATA_REG) : \ - &(GPIO->P4_RESET_DATA_REG))))) -/** - * \brief Enable task monitoring. - * - * \note Task monitoring can only be enabled if RTT or RETARGET is enabled - * \bsp_default_note{\bsp_config_option_app,} - */ -#ifndef dg_configENABLE_TASK_MONITORING -#define dg_configENABLE_TASK_MONITORING (0) -#endif - -/* ---------------------------------------------------------------------------------------------- */ - -/** - * \} - */ - -/** - * \addtogroup CACHE_SETTINGS - * - * \brief Cache configuration settings - * \{ - */ -/* -------------------------------------- Cache settings ---------------------------------------- */ - -/** - * \brief Set the size (in bytes) of the QSPI flash cacheable area. - * - * All reads from offset 0 up to (not including) offset dg_configCACHEABLE_QSPI_AREA_LEN - * will be cached. In addition, any writes to this area will trigger cache flushing, to - * avoid any cache incoherence. - * - * The size must be 64KB-aligned, due to the granularity of CACHE_CTRL2_REG[CACHE_LEN]. - * - * Special values: - * * 0 : Turn off cache. - * * -1 : Don't configure cacheable area size (i.e. leave as set by booter). - * - * \bsp_default_note{\bsp_config_option_app, \bsp_config_option_expert_only} - */ -#ifndef dg_configCACHEABLE_QSPI_AREA_LEN -#define dg_configCACHEABLE_QSPI_AREA_LEN (-1) -#endif - -/** - * \brief Set the associativity of the cache. - * - * Available values: - * - CACHE_ASSOC_AS_IS - * - CACHE_ASSOC_DIRECT_MAP - * - CACHE_ASSOC_2_WAY - * - CACHE_ASSOC_4_WAY - * - * \bsp_default_note{\bsp_config_option_app,} - */ -#ifndef dg_configCACHE_ASSOCIATIVITY -#define dg_configCACHE_ASSOCIATIVITY CACHE_ASSOC_4_WAY -#endif - -/** - * \brief Set the line size of the cache. - * - * \bsp_default_note{\bsp_config_option_app,} - * - * Available values: - * - CACHE_LINESZ_AS_IS - * - CACHE_LINESZ_8_BYTES - * - CACHE_LINESZ_16_BYTES - * - CACHE_LINESZ_32_BYTES - */ -#ifndef dg_configCACHE_LINESZ -#define dg_configCACHE_LINESZ CACHE_LINESZ_8_BYTES -#endif -/* ---------------------------------------------------------------------------------------------- */ - -/** - * \} - */ - -/** - * \addtogroup ARBITER_SETTINGS - * - * \brief Arbiter configuration settings - * \{ - */ -/* ------------------------------- Arbiter configuration settings ------------------------------- */ - -/** - * \brief Custom arbiter configuration support - * When defined, coex is configurable and priorities can be set: - * -either manually, per mac, using coex api - * -or automatically, by the PTIs provided by each mac - * - * When not defined, coex operates with the default/fixed priority scheme: - * BLE traffic has always higher priority than FTDF. - * - * \bsp_default_note{\bsp_config_option_app,} - */ -#ifndef dg_configCOEX_ENABLE_CONFIG -#define dg_configCOEX_ENABLE_CONFIG (0) -#endif - -/** - * \brief Arbiter statistics - * - * \bsp_default_note{\bsp_config_option_app,} - */ -#ifndef dg_configCOEX_ENABLE_STATS -#define dg_configCOEX_ENABLE_STATS (0) -#endif - -/** - * \brief Arbiter diagnostics enable - * - * This automatically enables arbiter diagnostic signals (when RF PD is on) - * - * See hw_coex.h for more information. - * - * \bsp_default_note{\bsp_config_option_app,} - */ -#ifndef dg_configCOEX_ENABLE_DIAGS -#define dg_configCOEX_ENABLE_DIAGS (0) -#endif - -/** - * \brief Arbiter diagnostics mode - * - * This is the default mode for arbiter diagnostics. - * - * See hw_coex.h for more information. - * - * \bsp_default_note{\bsp_config_option_app,} - */ -#ifndef dg_configCOEX_DIAGS_MODE -#define dg_configCOEX_DIAGS_MODE (HW_COEX_DIAG_MODE_3) -#endif -/* ---------------------------------------------------------------------------------------------- */ - -/** - * \} - */ - -/** - * \addtogroup PERIPHERAL_SELECTION - * - * \brief Peripheral selection - * - * When enabled the specific low level driver is included in the compilation of the SDK. - * - 0 : Disabled - * - 1 : Enabled - * - * The default option can be overridden in the application configuration file. - * - * \{ - Driver | Setting | Default option - ------------------------------ | -------------------------------------- | :------------------: - AES HASH | dg_configUSE_HW_AES_HASH | 0 - Radio MAC Arbiter | dg_configUSE_HW_COEX | 0 - Clock and Power Manager | dg_configUSE_HW_CPM | 1 - Direct Memory Access | dg_configUSE_HW_DMA | 1 - Elliptic Curve Controller | dg_configUSE_HW_ECC | 1 - Analog to Digital Converter | dg_configUSE_HW_GPADC | 1 - General Purpose I/O | dg_configUSE_HW_GPIO | 1 - Inter-Integrated Circuit | dg_configUSE_HW_I2C | 0 - Infra Red Generator | dg_configUSE_HW_IRGEN | 0 - Keyboard scanner | dg_configUSE_HW_KEYBOARD_SCANNER | 0 - OTP controller | dg_configUSE_HW_OTPC | 1 - QSPI controller | dg_configUSE_HW_QSPI | 1 - Quadrature decoder | dg_configUSE_HW_QUAD | 0 - Radio module | dg_configUSE_HW_RF | 1 - State of charge module | dg_configUSE_HW_SOC | 0 - Timer 0 | dg_configUSE_HW_TIMER0 | 0 - Timer 1 | dg_configUSE_HW_TIMER1 | 1 - Timer 2 | dg_configUSE_HW_TIMER2 | 0 - True Random Generator | dg_configUSE_HW_TRNG | 1 - UART | dg_configUSE_HW_UART | 1 - USB charger | dg_configUSE_HW_USB_CHARGER | 1 - Wakeup timer | dg_configUSE_HW_WKUP | 1 - PDM interface | dg_configUSE_IF_PDM | 0 - * - * \bsp_default_note{\bsp_config_option_app,} - */ - -/* -------------------------------- Peripherals (hw_*) selection -------------------------------- */ - -#ifndef dg_configUSE_HW_AES_HASH -#define dg_configUSE_HW_AES_HASH (0) -#endif - -#ifndef dg_configUSE_HW_COEX -#define dg_configUSE_HW_COEX (0) -#endif - -#ifndef dg_configUSE_HW_CPM -#define dg_configUSE_HW_CPM (1) -#endif - -#ifndef dg_configUSE_HW_DMA -#define dg_configUSE_HW_DMA (1) -#endif - -#ifndef dg_configUSE_HW_ECC -#define dg_configUSE_HW_ECC (1) -#endif - -#ifndef dg_configUSE_HW_GPADC -#define dg_configUSE_HW_GPADC (1) -#endif - -#ifndef dg_configUSE_HW_GPIO -#define dg_configUSE_HW_GPIO (1) -#endif - -#ifndef dg_configUSE_HW_I2C -#define dg_configUSE_HW_I2C (0) -#endif - -#ifndef dg_configUSE_HW_IRGEN -#define dg_configUSE_HW_IRGEN (0) -#endif - -#ifndef dg_configUSE_HW_KEYBOARD_SCANNER -#define dg_configUSE_HW_KEYBOARD_SCANNER (0) -#endif - -#ifndef dg_configUSE_HW_OTPC -#define dg_configUSE_HW_OTPC (1) -#endif - -#ifndef dg_configUSE_HW_QSPI -#define dg_configUSE_HW_QSPI (1) -#endif - -#ifndef dg_configUSE_HW_QUAD -#define dg_configUSE_HW_QUAD (0) -#endif - -#ifndef dg_configUSE_HW_RF -#define dg_configUSE_HW_RF (1) -#endif - -#ifndef dg_configUSE_HW_SOC -#define dg_configUSE_HW_SOC (0) -#endif - -#ifndef dg_configUSE_HW_SPI -#define dg_configUSE_HW_SPI (0) -#endif - -#ifndef dg_configUSE_HW_TEMPSENS -#define dg_configUSE_HW_TEMPSENS (1) -#endif - -#ifndef dg_configUSE_HW_TIMER0 -#define dg_configUSE_HW_TIMER0 (0) -#endif - -#ifndef dg_configUSE_HW_TIMER1 -#define dg_configUSE_HW_TIMER1 (1) -#endif - -#ifndef dg_configUSE_HW_TIMER2 -#define dg_configUSE_HW_TIMER2 (0) -#endif - -#ifndef dg_configUSE_HW_TRNG -#define dg_configUSE_HW_TRNG (1) -#endif - -#ifndef dg_configUSE_HW_UART -#define dg_configUSE_HW_UART (1) -#endif - -#ifndef dg_configUSE_HW_USB_CHARGER -#define dg_configUSE_HW_USB_CHARGER (1) -#endif - -#ifndef dg_configUSE_HW_WKUP -#define dg_configUSE_HW_WKUP (1) -#endif - -#ifndef dg_configUSE_HW_USB -#define dg_configUSE_HW_USB (0) -#endif - -#ifndef dg_configUSE_IF_PDM -#define dg_configUSE_IF_PDM (0) -#endif - -/* ---------------------------------------------------------------------------------------------- */ - - -/* ---------------------------------------------------------------------------------------------- */ - -/** - * \} - */ - -/* ------------------------------- USB settings ------------------------------------------------ */ - -/** - * \addtogroup USB_SETTINGS - * - * \brief USB DMA enable configuration settings - * - * The macros in this section are used to enable the DMA with USB and to define the two possible end point to use the DMA for data transfers. - * \{ - */ - -/** - * \brief Enable the DMA for reading/writing data to USB EP.\n - * By default the USB DMA is not enabled.\n - * To enable the DMA for the USB, set this the macro to value (1) in the custom_config_xxx.h file.\n - * When the USB DMA is enabled, the default end points with DMA are EP1 and EP2. \n - * It is possible only one TX and one RX end point to use DMA.\n - * User can choose a different pair of end points to use the DMA as needed according to app requirements.\n - * To change the end points using DMA, set in the the custom_config_xxx.h file the desired values for the macros: - * \par \c dg_configUSB_TX_DMA_EP - * valid values: 1,3,5\n - * default value: 1 - * \par \c dg_configUSB_RX_DMA_EP - * valid values: 2,4,6\n - * default value: 2 - * - * \bsp_default_note{\bsp_config_option_app,} - */ -#ifndef dg_configUSB_DMA_SUPPORT -#define dg_configUSB_DMA_SUPPORT (0) -#endif - - -/** - * \brief The USB TX end point (D-->H) to enable the DMA.\n - * User can choose a different pair of end points to use the DMA as needed according to app requirements.\n - * To change the TX end point using DMA, set in the the custom_config_xxx.h file the desired value for this macros. - * \par \c dg_configUSB_TX_DMA_EP - * valid values: 1,3,5\n - * default value: 1 - * - * \bsp_default_note{\bsp_config_option_app,} - */ -#ifndef dg_configUSB_TX_DMA_EP -#define dg_configUSB_TX_DMA_EP (1) -#endif - -/** - * \brief The USB RX end point (D-->H) to enable the DMA.\n - * User can choose a different pair of end points to use the DMA as needed according to app requirements.\n - * To change the RX end point using DMA, set in the the custom_config_xxx.h file the desired value for this macros. - * \par \c dg_configUSB_RX_DMA_EP - * valid values: 2,4,6\n - * default value: 2 - * - * \bsp_default_note{\bsp_config_option_app,} - */ -#ifndef dg_configUSB_RX_DMA_EP -#define dg_configUSB_RX_DMA_EP (2) -#endif - -/* ---------------------------------------------------------------------------------------------- */ - -/** - * \} - */ - - - -/* ------------------------------- WKUP settings ------------------------------------------------ */ - -/** - * \addtogroup WKUP_SETTINGS - * - * \brief WKUP configuration settings - * \{ - */ - -/* ------------------------------- LATCH settings ------------------------------------------------ */ - -/** - * \addtogroup WKUP_LATCH_SETTINGS - * - * \brief WKUP LATCH configuration settings - * \{ - */ - -/** - * \brief WKUP latch wakeup (io) source support - * - * \note In chip revision DA14680/1-01, this feature is implemented in s/w - * \note In chip revision DA14682/3-00, DA15XXX-00, this feature is implemented in h/w - * - * \bsp_default_note{\bsp_config_option_app,} - */ -#if (!defined(dg_configLATCH_WKUP_SOURCE)) || (dg_configUSE_HW_WKUP == 0) - #undef dg_configLATCH_WKUP_SOURCE - #define dg_configLATCH_WKUP_SOURCE (0) -#endif - -/* ---------------------------------------------------------------------------------------------- */ - -/** - * \} - */ - -/* ---------------------------------------------------------------------------------------------- */ - -/** - * \} - */ - -/* ------------------------------- UART settings ------------------------------------------------ */ - -/** - * \addtogroup UART_SETTINGS - * - * \brief UART FIFO configuration settings - * \{ - */ - -/* ------------------------------- FIFO settings ------------------------------------------------ */ - -/** - * \addtogroup UART_FIFO_SETTINGS - * - * \brief UART FIFO configuration settings - * \{ - */ - -/** - * \brief Software FIFO support - * - * \bsp_default_note{\bsp_config_option_app,} - */ -#ifndef dg_configUART_SOFTWARE_FIFO -#define dg_configUART_SOFTWARE_FIFO (0) -#endif - -/** - * \brief UART1's software FIFO size - * - * \bsp_default_note{\bsp_config_option_app,} - */ -#ifndef dg_configUART1_SOFTWARE_FIFO_SIZE -# define dg_configUART1_SOFTWARE_FIFO_SIZE (0) -#endif - -/** - * \brief UART2's software FIFO size - * - * \bsp_default_note{\bsp_config_option_app,} - */ -#ifndef dg_configUART2_SOFTWARE_FIFO_SIZE -# define dg_configUART2_SOFTWARE_FIFO_SIZE (0) -#endif -/* ---------------------------------------------------------------------------------------------- */ - -/** - * \} - */ - -/* ------------------------------- Circular DMA for RX settings --------------------------------- */ - -/** - * \addtogroup UART_CIRCULAR_DMA_FOR_RX_SETTINGS - * - * \brief UART FIFO configuration settings - * \{ - */ - -/** - * \brief Circular DMA support for RX - * - * \bsp_default_note{\bsp_config_option_app,} - */ -#ifndef dg_configUART_RX_CIRCULAR_DMA -#define dg_configUART_RX_CIRCULAR_DMA (0) -#endif - -/** - * \brief UART1's Circular DMA buffer size for RX - * - * \bsp_default_note{\bsp_config_option_app,} - */ -#ifndef dg_configUART1_RX_CIRCULAR_DMA_BUF_SIZE -#define dg_configUART1_RX_CIRCULAR_DMA_BUF_SIZE (0) -#endif - -/** - * \brief UART2's Circular DMA buffer size for RX - * - * \bsp_default_note{\bsp_config_option_app,} - */ -#ifndef dg_configUART2_RX_CIRCULAR_DMA_BUF_SIZE -#define dg_configUART2_RX_CIRCULAR_DMA_BUF_SIZE (0) -#endif - -/* ---------------------------------------------------------------------------------------------- */ - -/** - * \} - */ - -/* ---------------------------------------------------------------------------------------------- */ - -/** - * \} - */ - -/** - * \addtogroup ADAPTER_SELECTION - * - * \brief Adapter selection - * - * When enabled the specific adapter is included in the compilation of the SDK. - * - 0 : Disabled - * - 1 : Enabled - * - * The default option can be overridden in the application configuration file. - * - * \{ - Adapter | Setting | Default option - ------------------------------ | -------------------------------------- | :------------------: - Flash | dg_configFLASH_ADAPTER | 1 - Inter-Integrated Circuit | dg_configI2C_ADAPTER | 0 - Non Volatile Memory Storage | dg_configNVMS_ADAPTER | 1 - Virtual EERPOM Storage | dg_configNVMS_VES | 1 - Radio | dg_configRF_ADAPTER | 1 - Serial Peripheral Interface | dg_configSPI_ADAPTER | 0 - UART | dg_configUART_ADAPTER | 0 - UART for BLE | dg_configUART_BLE_ADAPTER | 0 - Analog to Digital Converter | dg_configGPADC_ADAPTER | 0 - Temperature Sensor | dg_configTEMPSENS_ADAPTER | 0 - Battery | dg_configBATTERY_ADAPTER | 0 - Non Volatile Parameters | dg_configNVPARAM_ADAPTER | 0 - Crypto | dg_configCRYPTO_ADAPTER | 1 - Keyboard scanner | dg_configKEYBOARD_SCANNER_ADAPTER | 0 - * - * - * \bsp_default_note{\bsp_config_option_app,} - */ - - -/* -------------------------------- Adapters (ad_*) selection -------------------------------- */ - -#ifndef dg_configFLASH_ADAPTER -#define dg_configFLASH_ADAPTER (1) -#endif - -#ifndef dg_configI2C_ADAPTER -#define dg_configI2C_ADAPTER (0) -#endif - -#ifndef dg_configNVMS_ADAPTER -#define dg_configNVMS_ADAPTER (1) -#endif - -#ifndef dg_configNVMS_FLASH_CACHE -#define dg_configNVMS_FLASH_CACHE (0) -#endif - -#ifndef dg_configNVMS_VES -#define dg_configNVMS_VES (1) -#endif - -#ifndef dg_configRF_ADAPTER -#define dg_configRF_ADAPTER (1) -#endif - -#ifndef dg_configSPI_ADAPTER -#define dg_configSPI_ADAPTER (0) -#endif - -#ifndef dg_configUART_ADAPTER -#define dg_configUART_ADAPTER (0) -#endif - -#ifndef dg_configUART_BLE_ADAPTER -#define dg_configUART_BLE_ADAPTER (0) -#endif - -#ifndef dg_configGPADC_ADAPTER -#define dg_configGPADC_ADAPTER (0) -#endif - -#ifndef dg_configTEMPSENS_ADAPTER -#define dg_configTEMPSENS_ADAPTER (0) -#endif - -#ifndef dg_configBATTERY_ADAPTER -#define dg_configBATTERY_ADAPTER (0) -#endif - -#ifndef dg_configNVPARAM_ADAPTER -#define dg_configNVPARAM_ADAPTER (0) -#endif - -#ifndef dg_configCRYPTO_ADAPTER -#define dg_configCRYPTO_ADAPTER (1) -#endif - -#ifndef dg_configKEYBOARD_SCANNER_ADAPTER -#define dg_configKEYBOARD_SCANNER_ADAPTER (0) -#endif -/* ---------------------------------------------------------------------------------------------- */ - -/** - * \} - */ - -/** - * \addtogroup CONSOLE_IO_SETTINGS - * - * \brief Console IO configuration settings - * - * \{ - Description | Setting | Default option - ----------------------------------------- | -------------------------- | :---------------: - Enable serial console module | dg_configUSE_CONSOLE | 0 - Enable serial console stubbed API | dg_configUSE_CONSOLE_STUBS | 0 - Enable Command Line Interface module | dg_configUSE_CLI | 0 - Enable Command Line Interface stubbed API | dg_configUSE_CLI_STUBS | 0 - - \see console.h cli.h - - \note CLI module requires dg_configUSE_CONSOLE to be enabled. - * - * \bsp_default_note{\bsp_config_option_app,} - */ - -/* -------------------------------------- Console IO configuration settings --------------------- */ - -#ifndef dg_configUSE_CONSOLE -#define dg_configUSE_CONSOLE (0) -#endif - -#ifndef dg_configUSE_CONSOLE_STUBS -#define dg_configUSE_CONSOLE_STUBS (0) -#endif - -#ifndef dg_configUSE_CLI -#define dg_configUSE_CLI (0) -#endif - -#ifndef dg_configUSE_CLI_STUBS -#define dg_configUSE_CLI_STUBS (0) -#endif -/* ---------------------------------------------------------------------------------------------- */ - -/** - * \} - */ - -/* ----------------------------- DGTL ----------------------------------------------------------- */ - -/** - * \brief Enable D.GTL interface - * - * When this macro is enabled, the DGTL framework is available for use. - * The framework must furthermore be initialized in the application using - * dgtl_init(). Additionally, the UART adapter must be initialized accordingly. - * - * Please see sdk/middleware/dgtl/include/ for further DGTL configuration - * (in dgtl_config.h) and API. - * - * \bsp_default_note{\bsp_config_option_app,} - * - */ -#ifndef dg_configUSE_DGTL -#define dg_configUSE_DGTL (0) -#endif - -/** - * \addtogroup DEBUG_SETTINGS - * \{ - * \addtogroup SYSTEM_VIEW - * - * \brief System View configuration settings - * \{ - */ - -/* ----------------------------- Segger System View configuration ------------------------------- */ - -/** - * \brief Segger's System View - * - * When enabled the application should also call SEGGER_SYSVIEW_Conf() to enable system monitoring. - * configTOTAL_HEAP_SIZE should be increased by dg_configSYSTEMVIEW_STACK_OVERHEAD bytes for each system task. - * For example, if there are 8 system tasks configTOTAL_HEAP_SIZE should be increased by - * (8 * dg_configSYSTEMVIEW_STACK_OVERHEAD) bytes. - * - * - 0 : Disabled - * - 1 : Enabled - * - * \bsp_default_note{\bsp_config_option_app,} - * - */ -#ifndef dg_configSYSTEMVIEW -#define dg_configSYSTEMVIEW (0) -#endif - -/** - * \brief Stack size overhead when System View API is used - * - * All thread stack sizes plus the the stack of IRQ handlers will be increased by that amount - * to avoid stack overflow when System View is monitoring the system. - * - * \bsp_default_note{\bsp_config_option_app, \bsp_config_option_expert_only} - */ -#ifndef dg_configSYSTEMVIEW_STACK_OVERHEAD -#define dg_configSYSTEMVIEW_STACK_OVERHEAD (256) -#endif - -/* - * Enable/Disable System View monitoring time critical interrupt handlers (BLE, CPM, USB). - * Disabling ISR monitoring could help reducing assertions triggered by System View monitoring overhead. - * - */ - -/** - * \brief Let System View monitor BLE related ISRs (BLE_GEN_Handler / BLE_WAKEUP_LP_Handler). - * - * - 0 : Disabled - * - 1 : Enabled - * - * \bsp_default_note{\bsp_config_option_app, \bsp_config_option_expert_only} - */ -#ifndef dg_configSYSTEMVIEW_MONITOR_BLE_ISR -#define dg_configSYSTEMVIEW_MONITOR_BLE_ISR (1) -#endif - -/** - * \brief Let System View monitor CPM related ISRs (SWTIM1_Handler / WKUP_GPIO_Handler). - * - * - 0 : Disabled - * - 1 : Enabled - * - * \bsp_default_note{\bsp_config_option_app, \bsp_config_option_expert_only} - */ -#ifndef dg_configSYSTEMVIEW_MONITOR_CPM_ISR -#define dg_configSYSTEMVIEW_MONITOR_CPM_ISR (1) -#endif - -/** - * \brief Let System View monitor USB related ISRs (USB_Handler / VBUS_Handler). - * - * - 0 : Disabled - * - 1 : Enabled - * - * \bsp_default_note{\bsp_config_option_app, \bsp_config_option_expert_only} - */ -#ifndef dg_configSYSTEMVIEW_MONITOR_USB_ISR -#define dg_configSYSTEMVIEW_MONITOR_USB_ISR (1) -#endif -/* ---------------------------------------------------------------------------------------------- */ - -/** - * \} - * \} - */ - -/** - * \addtogroup RF_DRIVER_SETTINGS - * - * \brief Doxygen documentation is not yet available for this module. - * Please check the source code file(s) - * - * \bsp_default_note{\bsp_config_option_app, \bsp_config_option_expert_only} - * \{ - */ -/* ------------------------------- RF driver configuration settings ----------------------------- */ - -/* Set to 1 to enable the recalibration procedure */ -#ifndef dg_configRF_ENABLE_RECALIBRATION -#define dg_configRF_ENABLE_RECALIBRATION (1) -#endif - -/* If RF recalibration is enabled, we need to enable GPADC as well */ -#if dg_configRF_ENABLE_RECALIBRATION -#undef dg_configUSE_HW_GPADC -#define dg_configUSE_HW_GPADC (1) -#undef dg_configGPADC_ADAPTER -#define dg_configGPADC_ADAPTER (1) -#undef dg_configTEMPSENS_ADAPTER -#define dg_configTEMPSENS_ADAPTER (1) -#endif - -/* If RF is enabled, we need to enable GPADC adapter as well */ -#if dg_configRF_ADAPTER -#undef dg_configGPADC_ADAPTER -#define dg_configGPADC_ADAPTER (1) -#endif - -/* Minimum time before performing an RF recalibration, in FreeRTOS scheduler ticks */ -#ifndef dg_configRF_MIN_RECALIBRATION_TIMEOUT -#if (dg_configUSE_LP_CLK == LP_CLK_32000) -#define dg_configRF_MIN_RECALIBRATION_TIMEOUT (1000) // ~2 secs -#elif (dg_configUSE_LP_CLK == LP_CLK_32768) -#define dg_configRF_MIN_RECALIBRATION_TIMEOUT (1024) // ~2 secs -#elif (dg_configUSE_LP_CLK == LP_CLK_RCX) -#define dg_configRF_MIN_RECALIBRATION_TIMEOUT (1000) -#else /* LP_CLK_ANY */ -// Must be defined in the custom_config_<>.h file. Should result in ~2sec. -#endif -#endif - -/* Maximum time before performing an RF recalibration, in FreeRTOS scheduler ticks - * If this time has elapsed, and RF is about to be powered off, recalibration will - * be done unconditionally. Set to 0 to disable this functionality */ -#ifndef dg_configRF_MAX_RECALIBRATION_TIMEOUT -#define dg_configRF_MAX_RECALIBRATION_TIMEOUT (0) // Disabled -#endif - -/* Timeout value (in FreeRTOS scheduler ticks) for timer to initiate RF recalibration. - * This will happen at ANY TIME RF is ON and CONFIGURED, EVEN IF A MAC IS RX/TXing DURING - * THIS TIME, in contrary to dg_configRF_MAX_RECALIBRATION_TIMEOUT, that will be - * performed ONLY when powering off RF. - * This is intended for applications where RF is always on, so there is no - * opportunity to be recalibrated the normal way (i.e. during poweroff) - * - * Set to 0 to disable this functionality */ -#ifndef dg_configRF_RECALIBRATION_TIMER_TIMEOUT -#define dg_configRF_RECALIBRATION_TIMER_TIMEOUT (0) // Disabled -#endif - - -/* Minimum temp difference before performing an RF recalibration, in oC*/ -#ifndef dg_configRF_MIN_RECALIBRATION_TEMP_DIFF -#ifdef CONFIG_USE_FTDF - #define dg_configRF_MIN_RECALIBRATION_TEMP_DIFF (5) -#else - #define dg_configRF_MIN_RECALIBRATION_TEMP_DIFF (10) -#endif -#endif - -/* Duration of recalibration procedure, in lp clk cycles */ -#ifndef dg_configRF_RECALIBRATION_DURATION -# if defined(CONFIG_USE_FTDF) && defined(CONFIG_USE_BLE) -# if ((dg_configUSE_LP_CLK == LP_CLK_32000) || (dg_configUSE_LP_CLK == LP_CLK_32768)) -# define dg_configRF_RECALIBRATION_DURATION (230) -# elif (dg_configUSE_LP_CLK == LP_CLK_RCX) -# define dg_configRF_RECALIBRATION_DURATION cm_rcx_us_2_lpcycles((uint32_t)(230 * 30.5)) -# else /* LP_CLK_ANY */ - // Must be defined in the custom_config_<>.h file. It should be ~7msec. -# endif -# else -# if ((dg_configUSE_LP_CLK == LP_CLK_32000) || (dg_configUSE_LP_CLK == LP_CLK_32768)) -# define dg_configRF_RECALIBRATION_DURATION (131) -# elif (dg_configUSE_LP_CLK == LP_CLK_RCX) -# define dg_configRF_RECALIBRATION_DURATION cm_rcx_us_2_lpcycles((uint32_t)(131 * 30.5)) -# else /* LP_CLK_ANY */ - // Must be defined in the custom_config_<>.h file. It should be ~4msec. -# endif -# endif -#endif - -#ifndef dg_configRF_IFF_CALIBRATION_TIMEOUT -#if ((dg_configUSE_LP_CLK == LP_CLK_32000) || (dg_configUSE_LP_CLK == LP_CLK_32768)) - #define dg_configRF_IFF_CALIBRATION_TIMEOUT (40) -#elif (dg_configUSE_LP_CLK == LP_CLK_RCX) - #define dg_configRF_IFF_CALIBRATION_TIMEOUT cm_rcx_us_2_lpcycles((uint32_t)(40 * 30.5)) -#else /* LP_CLK_ANY */ -// Must be defined in the custom_config_<>.h file. It should be ~1.2msec. -# endif -#endif -/* ---------------------------------------------------------------------------------------------- */ - -/** - * \} - */ - -/** - * \addtogroup BLE_EVENT_NOTIFICATIONS - * - * \brief Doxygen documentation is not yet available for this module. - * Please check the source code file(s) - * - * \bsp_default_note{\bsp_config_option_app, \bsp_config_option_expert_only} - * - * \{ - */ -/* -----------------------------------BLE event notifications configuration --------------------- */ - -/* - * BLE ISR event Notifications - * - * This facility enables the user app to receive notifications for BLE - * ISR events. These events can be received either directly from inside - * the BLE ISR, or as task notifications to the Application Task - * registered to the BLE manager. - * - * To enable, define dg_configBLE_EVENT_NOTIF_TYPE to either - * BLE_EVENT_NOTIF_USER_ISR or BLE_EVENT_NOTIF_USER_TASK. - * - * - When dg_configBLE_EVENT_NOTIF_TYPE == BLE_EVENT_NOTIF_USER_ISR, the user - * can define the following macros on his app configuration: - * - * dg_configBLE_EVENT_NOTIF_HOOK_END_EVENT : The BLE End Event - * dg_configBLE_EVENT_NOTIF_HOOK_CSCNT_EVENT : The BLE CSCNT Event - * dg_configBLE_EVENT_NOTIF_HOOK_FINE_EVENT : The BLE FINE Event - * - * These macros must be actually set to the names of functions defined inside - * the user application, having a prototype of - * - * void func(void); - * - * (The user app does not need to explicitly define the prototype). - * - * If one of these macros is not defined, the respective notification - * will be suppressed. - * - * Note that these functions will be called in ISR context, directly from the - * BLE ISR. They should therefore be very fast and should NEVER block. - * - * - When dg_configBLE_EVENT_NOTIF_TYPE == BLE_EVENT_NOTIF_USER_TASK, the user - * app will receive task notifications on the task registered to the BLE - * manager. - * - * Notifications will be received using the following bit masks: - * - * - dg_configBLE_EVENT_NOTIF_MASK_END_EVENT: End Event Mask (Def: bit 24) - * - dg_configBLE_EVENT_NOTIF_MASK_CSCNT_EVENT: CSCNT Event Mask (Def: bit 25) - * - dg_configBLE_EVENT_NOTIF_MASK_FINE_EVENT: FINE Event Mask (Def: bit 26) - * - * These macros, defining the task notification bit masks, can be redefined as - * needed. - * - * If one of the macros for callback functions presented in the previous - * section (for direct ISR notifications) is defined, while in this mode, - * the function with the same name will be called directly from the isr - * instead of sending a task notification for this particular event to - * the app task. - * - * Macro dg_configBLE_EVENT_NOTIF_RUNTIME_CONTROL (Default: 1) enables/disables - * runtime control/masking of notifications. - * - * If dg_configBLE_EVENT_NOTIF_RUNTIME_CONTROL == 1, then task notifications - * must be enabled/disabled using the - * ble_event_notif_[enable|disable]_[end|cscnt|fine]_event() functions. - * By default all notifications are disabled. - * - * If dg_configBLE_EVENT_NOTIF_RUNTIME_CONTROL == 0, all notifications will - * be sent unconditionally to the application task. - * - */ -#ifndef dg_configBLE_EVENT_NOTIF_TYPE -# define dg_configBLE_EVENT_NOTIF_TYPE BLE_EVENT_NOTIF_USER_ISR -#endif - -#if dg_configBLE_EVENT_NOTIF_TYPE == BLE_EVENT_NOTIF_USER_TASK - -/* Default implementation of BLE event task notifications. This - * implementation allows a user task to register for notifications, - * and to get task notifications for the available events - */ - -/* Default task notification masks for the various events for which - * the framework provides notifications - */ -# ifndef dg_configBLE_EVENT_NOTIF_MASK_END_EVENT -# define dg_configBLE_EVENT_NOTIF_MASK_END_EVENT (1 << 24) -# endif - -# ifndef dg_configBLE_EVENT_NOTIF_MASK_CSCNT_EVENT -# define dg_configBLE_EVENT_NOTIF_MASK_CSCNT_EVENT (1 << 25) -# endif - -# ifndef dg_configBLE_EVENT_NOTIF_MASK_FINE_EVENT -# define dg_configBLE_EVENT_NOTIF_MASK_FINE_EVENT (1 << 26) -# endif - -/* Implement event hook functions */ -# ifndef dg_configBLE_EVENT_NOTIF_HOOK_END_EVENT -# define dg_configBLE_EVENT_NOTIF_HOOK_END_EVENT ble_event_notif_app_task_end_event -# endif - -# ifndef dg_configBLE_EVENT_NOTIF_HOOK_CSCNT_EVENT -# define dg_configBLE_EVENT_NOTIF_HOOK_CSCNT_EVENT ble_event_notif_app_task_cscnt_event -# endif - -# ifndef dg_configBLE_EVENT_NOTIF_HOOK_FINE_EVENT -# define dg_configBLE_EVENT_NOTIF_HOOK_FINE_EVENT ble_event_notif_app_task_fine_event -# endif - -/* - * Allow runtime control of (un)masking notifications - */ -# ifndef dg_configBLE_EVENT_NOTIF_RUNTIME_CONTROL -# define dg_configBLE_EVENT_NOTIF_RUNTIME_CONTROL 1 -# endif - -#endif -/* ---------------------------------------------------------------------------------------------- */ - -/** - * \} - */ - -/* ----------------------------------- BLE hooks configuration ---------------------------------- */ - -/* Name of the function that is called to block BLE from sleeping under certain conditions - * - * The function must be declared as: - * unsigned char my_block_sleep(void); - * The return value of the function controls whether the BLE will be allowed to go to sleep or not, - * 0: the BLE may go to sleep, if possible - * 1: the BLE is not allowed to go to sleep. The caller (BLE Adapter) may block or not, - * depending on the BLE stack status. - * - * dg_configBLE_HOOK_BLOCK_SLEEP should be set to my_block_sleep in this example. - */ -#ifndef dg_configBLE_HOOK_BLOCK_SLEEP -/* Already undefined - Nothing to do. */ -#endif - -/* Name of the function that is called to modify the PTI value (Payload Type Indication) when - * arbitration is used - * - * Arbitration is needed only when another external radio is present. The function must be declared - * as: - * unsigned char my_pti_modify(void); - * Details for the implementation of such a function will be provided when the external radio - * arbitration functionality is integrated. - * - * dg_configBLE_HOOK_PTI_MODIFY should be set to my_pti_modify in this example. - * - * See also the comment about the in ble_config.h for more info. - */ -#ifndef dg_configBLE_HOOK_PTI_MODIFY -/* Already undefined - Nothing to do. */ -#endif - -/* ---------------------------------------------------------------------------------------------- */ - -/** - * \addtogroup DEBUG_SETTINGS - * - * \{ - */ -/* ---------------------------------- OS related configuration ---------------------------------- */ - -/** - * \brief Monitor OS heap allocations - * - * \bsp_default_note{\bsp_config_option_app,} - */ -#ifndef dg_configTRACK_OS_HEAP -#define dg_configTRACK_OS_HEAP (0) -#endif - -/* ---------------------------------------------------------------------------------------------- */ - -/** - * \} - */ - -/* ---------------------------------- Heap size configuration ----------------------------------- */ - -/** - * \brief Heap size for used libc malloc() - * - * Specifies the amount of RAM that will be used as heap for libc malloc() function. - * It can be configured in bare metal projects to match application's requirements. - * - * \bsp_default_note{\bsp_config_option_app, \bsp_config_option_expert_only} - */ -#ifndef __HEAP_SIZE -# if defined (CONFIG_RETARGET) || defined (CONFIG_RTT) -# define __HEAP_SIZE 0x0600 -# else -# define __HEAP_SIZE 0x0100 -# endif -#endif - -/* flag used by linker scripts */ -#if (dg_configBLACK_ORCA_IC_REV != BLACK_ORCA_IC_REV_A) -#define __HEAP_IS_LESS_THAN_0x200 (__HEAP_SIZE < 0x200) -#endif - -/* ---------------------------------------------------------------------------------------------- */ - -/* --------------------------------- Stack size configuration ----------------------------------- */ - -/** - * \brief Stack size for main() function and interrupt handlers. - * - * Specifies the amount of RAM that will be used as stack for the main() function and the interrupt - * handlers. - * - * \bsp_default_note{\bsp_config_option_app, \bsp_config_option_expert_only} - */ -#ifndef __STACK_SIZE -#define __STACK_SIZE 0x0200 -#endif - -/* ---------------------------------------------------------------------------------------------- */ - -/* ----------------------------------- RF FEM CONFIGURATION ------------------------------------- */ - -#include "bsp_fem.h" - -/* ---------------------------------------------------------------------------------------------- */ - - -/* ----------------------------------- DEBUG CONFIGURATION -------------------------------------- */ - -#include "bsp_debug.h" - -/* ---------------------------------------------------------------------------------------------- */ - -/* ---------------------------------- MEMORY LAYOUT CONFIGURATION ------------------------------- */ - -/** - * \addtogroup MEMORY_LAYOUT_SETTINGS - * - * \brief Memory layout configuration settings. - * \{ - */ - -/** - * \brief Controls the retention RAM optimization. - * - * - 0 : All RAM is retained. - * - 1 : Retention memory size is optimal. - * - * \bsp_default_note{\bsp_config_option_app, \bsp_config_option_expert_only} - */ -#ifndef dg_configOPTIMAL_RETRAM -#define dg_configOPTIMAL_RETRAM (0) -#endif -/** - * \addtogroup OTP_PROJECT_MEMORY_LAYOUT_SETTINGS - * - * \brief Memory layout configuration settings for a OTP project. - * \{ - */ - -/** - * \brief Code size in OTP projects, no product specific. - * - * \note Code size cannot be more than 58K. - * - * \note Defining the corresponding product-specific configuration macro will override - * this one. - * - * \bsp_default_note{\bsp_config_option_app,} - */ -#ifndef dg_configOTP_CODE_SIZE -#define dg_configOTP_CODE_SIZE ( 58 * 1024) -#endif - -/** - * \brief RAM-block size in cached mode, no product specific. - * - * \note Defining the corresponding product-specific configuration macro will override - * this one. - * - * \bsp_default_note{\bsp_config_option_app,} - */ -#ifndef dg_configOTP_CACHED_RAM_SIZE -#define dg_configOTP_CACHED_RAM_SIZE (64 * 1024) -#endif - -/** - * \brief Retained-RAM-0-block size in cached mode, no product specific. - * - * \note Defining the corresponding product-specific configuration macro will override - * this one. - * - * \bsp_default_note{\bsp_config_option_app,} - */ -#ifndef dg_configOTP_CACHED_RETRAM_0_SIZE -#define dg_configOTP_CACHED_RETRAM_0_SIZE ( 64 * 1024) -#endif - -/** - * \brief Retained-RAM-1-block size in cached mode, no product specific. - * - * \note Defining the corresponding product-specific configuration macro will override - * this one. - * - * \bsp_default_note{\bsp_config_option_app,} - */ -#ifndef dg_configOTP_CACHED_RETRAM_1_SIZE -#define dg_configOTP_CACHED_RETRAM_1_SIZE ( 0 * 1024) -#endif - -/** - * \brief Retained-RAM-0-block size in mirror mode, no product specific. - * - * \note Defining the corresponding product-specific configuration macro will override - * this one. - * - * \bsp_default_note{\bsp_config_option_app,} - */ -#ifndef dg_configOTP_MIRROR_RETRAM_0_SIZE -#define dg_configOTP_MIRROR_RETRAM_0_SIZE ( 48 * 1024) -#endif - -/** - * \brief Retained-RAM-1-block size in mirror mode, no product specific. - * - * \note Defining the corresponding product-specific configuration macro will override - * this one. - * - * \bsp_default_note{\bsp_config_option_app,} - */ -#ifndef dg_configOTP_MIRROR_RETRAM_1_SIZE -#define dg_configOTP_MIRROR_RETRAM_1_SIZE ( 0 * 1024) -#endif - - - -/** - * \brief Retained-RAM-0-block size for optimal retention memory in cached mode, no product specific. - * - * \see dg_configOPTIMAL_RETRAM option - * - * \note Defining the corresponding product-specific configuration macro will override - * this one. - * - * \bsp_default_note{\bsp_config_option_app, \bsp_config_option_expert_only} - */ -#ifndef dg_configOTP_CACHED_OPTIMAL_RETRAM_0_SIZE -#define dg_configOTP_CACHED_OPTIMAL_RETRAM_0_SIZE ( 32 * 1024) -#endif - -/** - * \brief Retained-RAM-1-block size for optimal retention memory in cached mode, no product specific. - * - * \see dg_configOPTIMAL_RETRAM option - * - * \note Defining the corresponding product-specific configuration macro will override - * this one. - * - * \bsp_default_note{\bsp_config_option_app, \bsp_config_option_expert_only} - */ -#ifndef dg_configOTP_CACHED_OPTIMAL_RETRAM_1_SIZE -#define dg_configOTP_CACHED_OPTIMAL_RETRAM_1_SIZE ( 32 * 1024) -#endif - -/** - * \brief RAM-block size in mirror mode, no product specific. - * - * \bsp_default_note{\bsp_config_option_app,} - */ -#ifndef dg_configOTP_MIRROR_RAM_SIZE -#define dg_configOTP_MIRROR_RAM_SIZE ( 16 * 1024) -#endif - -/** - * \brief Code size in OTP projects for DA14680/1-01. - * - * \note Code size cannot be more than 58K. - * - * \bsp_default_note{\bsp_config_option_app,} - */ -#ifndef dg_configOTP_CODE_SIZE_AE -#define dg_configOTP_CODE_SIZE_AE dg_configOTP_CODE_SIZE -#endif - -/** - * \brief Code size in OTP projects for DA14682/3-00, DA15XXX-00. - * - * \note Code size cannot be more than 58K. - * - * \bsp_default_note{\bsp_config_option_app,} - */ -#ifndef dg_configOTP_CODE_SIZE_BB -#define dg_configOTP_CODE_SIZE_BB dg_configOTP_CODE_SIZE -#endif - -/** - * \brief RAM-block size in cached mode for DA14680/1-01. - * - * \bsp_default_note{\bsp_config_option_app,} - */ -#ifndef dg_configOTP_CACHED_RAM_SIZE_AE -#define dg_configOTP_CACHED_RAM_SIZE_AE dg_configOTP_CACHED_RAM_SIZE -#endif - -/** - * \brief Retained-RAM-0-block size in cached mode for DA14680/1-01. - * - * \bsp_default_note{\bsp_config_option_app,} - */ -#ifndef dg_configOTP_CACHED_RETRAM_0_SIZE_AE -#define dg_configOTP_CACHED_RETRAM_0_SIZE_AE dg_configOTP_CACHED_RETRAM_0_SIZE -#endif - -/** - * \brief Retained-RAM-1-block size in cached mode for DA14680/1-01. - * - * \bsp_default_note{\bsp_config_option_app,} - */ -#ifndef dg_configOTP_CACHED_RETRAM_1_SIZE_AE -#define dg_configOTP_CACHED_RETRAM_1_SIZE_AE dg_configOTP_CACHED_RETRAM_1_SIZE -#endif - -/** - * \brief Retained-RAM-0-block size for optimal retention memory in cached mode for DA14680/1-01. - * - * \see dg_configOPTIMAL_RETRAM option - * - * \bsp_default_note{\bsp_config_option_app, \bsp_config_option_expert_only} - */ -#ifndef dg_configOTP_CACHED_OPTIMAL_RETRAM_0_SIZE_AE -#define dg_configOTP_CACHED_OPTIMAL_RETRAM_0_SIZE_AE dg_configOTP_CACHED_OPTIMAL_RETRAM_0_SIZE -#endif - -/** - * \brief Retained-RAM-1-block size for optimal retention memory in cached mode for DA14680/1-01. - * - * \see dg_configOPTIMAL_RETRAM option - * - * \bsp_default_note{\bsp_config_option_app, \bsp_config_option_expert_only} - */ -#ifndef dg_configOTP_CACHED_OPTIMAL_RETRAM_1_SIZE_AE -#define dg_configOTP_CACHED_OPTIMAL_RETRAM_1_SIZE_AE dg_configOTP_CACHED_OPTIMAL_RETRAM_1_SIZE -#endif - -/** - * \brief RAM-block size in cached mode for DA14682/3-00, DA15XXX-00. - * - * \bsp_default_note{\bsp_config_option_app,} - */ -#ifndef dg_configOTP_CACHED_RAM_SIZE_BB -#define dg_configOTP_CACHED_RAM_SIZE_BB dg_configOTP_CACHED_RAM_SIZE -#endif - -/** - * \brief Retained-RAM-0-block size in cached mode for DA14682/3-00, DA15XXX-00. - * - * \bsp_default_note{\bsp_config_option_app,} - */ -#ifndef dg_configOTP_CACHED_RETRAM_0_SIZE_BB -#define dg_configOTP_CACHED_RETRAM_0_SIZE_BB dg_configOTP_CACHED_RETRAM_0_SIZE -#endif - -/** - * \brief Retained-RAM-1-block size in cached mode for DA14682/3-00, DA15XXX-00. - * - * \bsp_default_note{\bsp_config_option_app,} - */ -#ifndef dg_configOTP_CACHED_RETRAM_1_SIZE_BB -#define dg_configOTP_CACHED_RETRAM_1_SIZE_BB dg_configOTP_CACHED_RETRAM_1_SIZE -#endif - -/** - * \brief RAM-block size in mirror mode for DA14680/1-01. - * - * \bsp_default_note{\bsp_config_option_app,} - */ -#ifndef dg_configOTP_MIRROR_RAM_SIZE_AE -#define dg_configOTP_MIRROR_RAM_SIZE_AE dg_configOTP_MIRROR_RAM_SIZE -#endif - -/** - * \brief Retained-RAM-1-block size in mirror mode for DA14680/1-01 - * - * \bsp_default_note{\bsp_config_option_app,} - */ -#ifndef dg_configOTP_MIRROR_RETRAM_1_SIZE_AE -#define dg_configOTP_MIRROR_RETRAM_1_SIZE_AE dg_configOTP_MIRROR_RETRAM_1_SIZE -#endif - -/** - * \brief RAM-block size in mirror mode for DA14682/3-00, DA15XXX-00. - * - * \bsp_default_note{\bsp_config_option_app,} - */ -#ifndef dg_configOTP_MIRROR_RAM_SIZE_BB -#define dg_configOTP_MIRROR_RAM_SIZE_BB dg_configOTP_MIRROR_RAM_SIZE -#endif - -/** - * \brief Retained-RAM-0-block size in mirror mode for DA14682/3-00, DA15XXX-00 - * - * \bsp_default_note{\bsp_config_option_app,} - */ -#ifndef dg_configOTP_MIRROR_RETRAM_0_SIZE_BB -#define dg_configOTP_MIRROR_RETRAM_0_SIZE_BB dg_configOTP_MIRROR_RETRAM_0_SIZE -#endif - -/** - * \brief Retained-RAM-0-block size in mirror mode for DA14682/3-00, DA15XXX-00 - * - * \bsp_default_note{\bsp_config_option_app,} - */ -#ifndef dg_configOTP_MIRROR_RETRAM_1_SIZE_BB -#define dg_configOTP_MIRROR_RETRAM_1_SIZE_BB dg_configOTP_MIRROR_RETRAM_1_SIZE -#endif - -/* ---------------------------------------------------------------------------------------------- */ - -/** - * \} - */ - -/** - * \addtogroup QSPI_PROJECT_MEMORY_LAYOUT_SETTINGS - * - * \brief Memory layout configuration settings for a QSPI project - * \{ - */ - -/** - * \brief Code size in QSPI projects, no product specific. - * - * \note Defining the corresponding product-specific configuration macro will override - * this one. - * - * \bsp_default_note{\bsp_config_option_app,} - */ -#ifndef dg_configQSPI_CODE_SIZE -#define dg_configQSPI_CODE_SIZE (128 * 1024) -#endif - -/** - * \brief RAM-block size in cached mode, no product specific. - * - * \note Defining the corresponding product-specific configuration macro will override - * this one. - * - * \bsp_default_note{\bsp_config_option_app,} - */ -#ifndef dg_configQSPI_CACHED_RAM_SIZE -#define dg_configQSPI_CACHED_RAM_SIZE ( 64 * 1024) -#endif - -/** - * \brief Retained-RAM-0-block size in cached mode, no product specific. - * - * \note Defining the corresponding product-specific configuration macro will override - * this one. - * - * \bsp_default_note{\bsp_config_option_app,} - */ -#ifndef dg_configQSPI_CACHED_RETRAM_0_SIZE -#define dg_configQSPI_CACHED_RETRAM_0_SIZE ( 64 * 1024) -#endif - -/** - * \brief Retained-RAM-1-block size in cached mode, no product specific. - * - * \note Defining the corresponding product-specific configuration macro will override - * this one. - * - * \bsp_default_note{\bsp_config_option_app,} - */ -#ifndef dg_configQSPI_CACHED_RETRAM_1_SIZE -#define dg_configQSPI_CACHED_RETRAM_1_SIZE ( 0 * 1024) -#endif - -/** - * \brief Retained-RAM-0-block size for optimal retention memory in cached mode, no product specific. - * - * \see dg_configOPTIMAL_RETRAM option - * - * \note Defining the corresponding product-specific configuration macro will override - * this one. - * - * \bsp_default_note{\bsp_config_option_app, \bsp_config_option_expert_only} - */ -#ifndef dg_configQSPI_CACHED_OPTIMAL_RETRAM_0_SIZE -#define dg_configQSPI_CACHED_OPTIMAL_RETRAM_0_SIZE ( 32 * 1024) -#endif - -/** - * \brief Retained-RAM-1-block size for optimal retention memory in cached mode, no product specific. - * - * \see dg_configOPTIMAL_RETRAM option - * - * \note Defining the corresponding product-specific configuration macro will override - * this one. - * - * \bsp_default_note{\bsp_config_option_app, \bsp_config_option_expert_only} - */ -#ifndef dg_configQSPI_CACHED_OPTIMAL_RETRAM_1_SIZE -#define dg_configQSPI_CACHED_OPTIMAL_RETRAM_1_SIZE ( 32 * 1024) -#endif - -/** - * \brief Code size in QSPI projects for DA14680/1-01. - * - * \bsp_default_note{\bsp_config_option_app,} - */ -#ifndef dg_configQSPI_CODE_SIZE_AE -#define dg_configQSPI_CODE_SIZE_AE dg_configQSPI_CODE_SIZE -#endif - -/** - * \brief Code size in QSPI projects for DA14682/3-00, DA15XXX-00. - * - * \bsp_default_note{\bsp_config_option_app,} - */ -#ifndef dg_configQSPI_CODE_SIZE_BB -#define dg_configQSPI_CODE_SIZE_BB dg_configQSPI_CODE_SIZE -#endif - -/** - * \brief RAM-block size in cached mode for DA14680/1-01. - * - * \bsp_default_note{\bsp_config_option_app,} - */ -#ifndef dg_configQSPI_CACHED_RAM_SIZE_AE -#define dg_configQSPI_CACHED_RAM_SIZE_AE dg_configQSPI_CACHED_RAM_SIZE -#endif - -/** - * \brief Retained-RAM-0-block size in cached mode for DA14680/1-01. - * - * \bsp_default_note{\bsp_config_option_app,} - */ -#ifndef dg_configQSPI_CACHED_RETRAM_0_SIZE_AE -#define dg_configQSPI_CACHED_RETRAM_0_SIZE_AE dg_configQSPI_CACHED_RETRAM_0_SIZE -#endif - -/** - * \brief Retained-RAM-1-block size in cached mode for DA14680/1-01. - * - * \bsp_default_note{\bsp_config_option_app,} - */ -#ifndef dg_configQSPI_CACHED_RETRAM_1_SIZE_AE -#define dg_configQSPI_CACHED_RETRAM_1_SIZE_AE dg_configQSPI_CACHED_RETRAM_1_SIZE -#endif - -/** - * \brief Retained-RAM-0-block size for optimal retention memory in cached mode for DA14680/1-01. - * - * \see dg_configOPTIMAL_RETRAM option - * - * \bsp_default_note{\bsp_config_option_app, \bsp_config_option_expert_only} - */ -#ifndef dg_configQSPI_CACHED_OPTIMAL_RETRAM_0_SIZE_AE -#define dg_configQSPI_CACHED_OPTIMAL_RETRAM_0_SIZE_AE dg_configQSPI_CACHED_OPTIMAL_RETRAM_0_SIZE -#endif - -/** - * \brief Retained-RAM-1-block size for optimal retention memory in cached mode for DA14680/1-01. - * - * \see dg_configOPTIMAL_RETRAM option - * - * \bsp_default_note{\bsp_config_option_app, \bsp_config_option_expert_only} - */ -#ifndef dg_configQSPI_CACHED_OPTIMAL_RETRAM_1_SIZE_AE -#define dg_configQSPI_CACHED_OPTIMAL_RETRAM_1_SIZE_AE dg_configQSPI_CACHED_OPTIMAL_RETRAM_1_SIZE -#endif - -/** - * \brief RAM-block size in cached mode for DA14682/3-00, DA15XXX-00. - * - * \bsp_default_note{\bsp_config_option_app,} - */ -#ifndef dg_configQSPI_CACHED_RAM_SIZE_BB -#define dg_configQSPI_CACHED_RAM_SIZE_BB dg_configQSPI_CACHED_RAM_SIZE -#endif - -/** - * \brief Retained-RAM-0-block size in cached mode for DA14682/3-00, DA15XXX-00. - * - * \bsp_default_note{\bsp_config_option_app,} - */ -#ifndef dg_configQSPI_CACHED_RETRAM_0_SIZE_BB -#define dg_configQSPI_CACHED_RETRAM_0_SIZE_BB dg_configQSPI_CACHED_RETRAM_0_SIZE -#endif - -/** - * \brief Retained-RAM-1-block size in cached mode for DA14682/3-00, DA15XXX-00. - * - * \bsp_default_note{\bsp_config_option_app,} - */ -#ifndef dg_configQSPI_CACHED_RETRAM_1_SIZE_BB -#define dg_configQSPI_CACHED_RETRAM_1_SIZE_BB dg_configQSPI_CACHED_RETRAM_1_SIZE -#endif - -/* ---------------------------------------------------------------------------------------------- */ - -/** - * \} - */ - -/** - * \addtogroup RAM_PROJECT_MEMORY_LAYOUT_SETTINGS - * - * \brief Memory layout configuration settings for a RAM project - * \{ - */ - -/** - * \brief Code size in RAM projects for DA14680/1-01. - * - * \bsp_default_note{\bsp_config_option_app,} - */ -#ifndef dg_configRAM_CODE_SIZE_AE -#define dg_configRAM_CODE_SIZE_AE ( 79 * 1024) -#endif - -/** - * \brief RAM-block size for DA14680/1-01. - * - * \bsp_default_note{\bsp_config_option_app,} - */ -#ifndef dg_configRAM_RAM_SIZE_AE -#define dg_configRAM_RAM_SIZE_AE ( 16 * 1024) -#endif - -/** - * \brief Retained-RAM-0-block size for DA14680/1-01. - * - * \bsp_default_note{\bsp_config_option_app,} - */ -#ifndef dg_configRAM_RETRAM_0_SIZE_AE -#define dg_configRAM_RETRAM_0_SIZE_AE (128 * 1024 - dg_configRAM_CODE_SIZE_AE) -#endif - -/** - * \brief Retained-RAM-1-block size for DA14680/1-01. - * - * \bsp_default_note{\bsp_config_option_app,} - */ -#ifndef dg_configRAM_RETRAM_1_SIZE_AE -#define dg_configRAM_RETRAM_1_SIZE_AE ( 0 * 1024) -#endif - -/** - * \brief Code size in RAM projects for DA14682/3-00, DA15XXX-00. - * - * \bsp_default_note{\bsp_config_option_app,} - */ -#ifndef dg_configRAM_CODE_SIZE_BB -#define dg_configRAM_CODE_SIZE_BB (144 * 1024) -#endif - -/** - * \brief RAM-block size for DA14682/3-00, DA15XXX-00. - * - * \bsp_default_note{\bsp_config_option_app,} - */ -#ifndef dg_configRAM_RAM_SIZE_BB -#define dg_configRAM_RAM_SIZE_BB ( 15 * 1024) -#endif - -/** - * \brief Retained-RAM-0-block size for DA14682/3-00, DA15XXX-00. - * - * \bsp_default_note{\bsp_config_option_app,} - */ -#ifndef dg_configRAM_RETRAM_0_SIZE_BB -#define dg_configRAM_RETRAM_0_SIZE_BB ( 49 * 1024) -#endif - -/** - * \brief Retained-RAM-0-block size for DA14682/3-00, DA15XXX-00. - * - * \bsp_default_note{\bsp_config_option_app,} - */ -#ifndef dg_configRAM_RETRAM_1_SIZE_BB -#define dg_configRAM_RETRAM_1_SIZE_BB ( 0 * 1024) -#endif - -/* ---------------------------------------------------------------------------------------------- */ - -/** - * \} - */ - -/* ---------------------------------------------------------------------------------------------- */ - -/** - * \} - */ - - -/** - * \} - */ - -#endif /* BSP_DEFAULTS_H_ */ - -/** -\} -\} -\} -*/ diff --git a/third_party/dialog/DialogSDK/bsp/config/bsp_definitions.h b/third_party/dialog/DialogSDK/bsp/config/bsp_definitions.h deleted file mode 100644 index 63dd13ce1..000000000 --- a/third_party/dialog/DialogSDK/bsp/config/bsp_definitions.h +++ /dev/null @@ -1,162 +0,0 @@ -/** - * \addtogroup BSP - * \{ - * \addtogroup BSP_CONFIG - * \{ - * \addtogroup BSP_CONFIG_DEFINITIONS - * - * \brief Doxygen documentation is not yet available for this module. - * Please check the source code file(s) - * - *\{ - */ - -/** - **************************************************************************************** - * - * @file bsp_definitions.h - * - * @brief Board Support Package. System Configuration file definitions. - * - * Copyright (c) 2016, Dialog Semiconductor - * All rights reserved. - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. Neither the name of the copyright holder nor the names of its contributors - * may be used to endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, - * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, - * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED - * OF THE POSSIBILITY OF SUCH DAMAGE. - * - * - **************************************************************************************** - */ - -#ifndef BSP_DEFINITIONS_H_ -#define BSP_DEFINITIONS_H_ - - -/* ------------------------------------ Generic definitions ------------------------------------- */ - -#define LP_CLK_32000 0 -#define LP_CLK_32768 1 -#define LP_CLK_RCX 2 -#define LP_CLK_ANY 3 - -#define LP_CLK_IS_ANALOG 0 -#define LP_CLK_IS_DIGITAL 1 - -#define MODE_IS_MIRRORED 0 -#define MODE_IS_CACHED 1 -#define MODE_IS_RAM MODE_IS_MIRRORED - -#define NON_VOLATILE_IS_OTP 0 // Code is in OTP -#define NON_VOLATILE_IS_FLASH 1 // Code is in QSPI Flash -#define NON_VOLATILE_IS_NONE 2 // Debug mode! Code is in RAM! - -#define EXT_CRYSTAL_IS_16M 0 -#define EXT_CRYSTAL_IS_32M 1 - -#define DEVELOPMENT_MODE 0 // Code is built for debugging -#define PRODUCTION_MODE 1 // Code is built for production - -#define FLASH_IS_NOT_CONNECTED 0 -#define FLASH_CONNECTED_TO_1V8 1 -#define FLASH_CONNECTED_TO_1V8P 2 - -#define BATTERY_TYPE_2xNIMH 0 -#define BATTERY_TYPE_3xNIMH 1 -#define BATTERY_TYPE_LICOO2 2 // 2.5V discharge voltage, 4.20V charge voltage -#define BATTERY_TYPE_LIMN2O4 3 // 2.5V discharge voltage, 4.20V charge voltage -#define BATTERY_TYPE_NMC 4 // 2.5V discharge voltage, 4.20V charge voltage -#define BATTERY_TYPE_LIFEPO4 5 // 2.5V discharge voltage, 3.65V charge voltage -#define BATTERY_TYPE_LINICOAIO2 6 // 3.0V discharge voltage, 4.20V charge voltage -#define BATTERY_TYPE_CUSTOM 7 -#define BATTERY_TYPE_NO_RECHARGE 8 -#define BATTERY_TYPE_NO_BATTERY 9 - -#define BATTERY_TYPE_2xNIMH_ADC_VOLTAGE (2785) -#define BATTERY_TYPE_3xNIMH_ADC_VOLTAGE (4013) -#define BATTERY_TYPE_LICOO2_ADC_VOLTAGE (3440) -#define BATTERY_TYPE_LIMN2O4_ADC_VOLTAGE (3440) -#define BATTERY_TYPE_NMC_ADC_VOLTAGE (3440) -#define BATTERY_TYPE_LIFEPO4_ADC_VOLTAGE (2989) -#define BATTERY_TYPE_LINICOAIO2_ADC_VOLTAGE (3440) - -/* - * The supported chip revisions. - */ -#define BLACK_ORCA_IC_REV_AUTO (-1) -#define BLACK_ORCA_IC_REV_A 0 -#define BLACK_ORCA_IC_REV_B 1 - -/* - * The supported chip steppings. - */ -#define BLACK_ORCA_IC_STEP_AUTO (-1) -#define BLACK_ORCA_IC_STEP_A 0 -#define BLACK_ORCA_IC_STEP_B 1 -#define BLACK_ORCA_IC_STEP_C 2 -#define BLACK_ORCA_IC_STEP_D 3 -#define BLACK_ORCA_IC_STEP_E 7 - -/* - * Legacy DK motherboards, which are not supported by the SDK. - * The definitions exist just so that we don't break compilation of old projects. - */ -#define BLACK_ORCA_MB_REV_A 0 -#define BLACK_ORCA_MB_REV_B 1 -/* - * The supported DK motherboards. - */ -#define BLACK_ORCA_MB_REV_D 2 - -/* - * The cache associativity options. - */ -#define CACHE_ASSOC_AS_IS (-1) /// leave as set by the ROM booter -#define CACHE_ASSOC_DIRECT_MAP 0 /// direct-mapped -#define CACHE_ASSOC_2_WAY 1 /// 2-way set associative -#define CACHE_ASSOC_4_WAY 2 /// 4-way set associative - -/* - * The cache line size options. - */ -#define CACHE_LINESZ_AS_IS (-1) /// leave as set by the ROM booter -#define CACHE_LINESZ_8_BYTES 0 /// 8 bytes -#define CACHE_LINESZ_16_BYTES 1 /// 16 bytes -#define CACHE_LINESZ_32_BYTES 2 /// 32 bytes - -/* - * The supported RF Front-End Modules - */ -#define FEM_NOFEM 0 -#define FEM_SKY66112_11 1 - -/* - * The BLE event notification user hook types - */ -#define BLE_EVENT_NOTIF_USER_ISR 0 /// User-defined hooks directly from ISR context -#define BLE_EVENT_NOTIF_USER_TASK 1 /// Notification of the user task, using task notifications. - -#endif /* BSP_DEFINITIONS_H_ */ - -/** -\} -\} -\} -*/ diff --git a/third_party/dialog/DialogSDK/bsp/config/bsp_fem.h b/third_party/dialog/DialogSDK/bsp/config/bsp_fem.h deleted file mode 100644 index 1a9b24033..000000000 --- a/third_party/dialog/DialogSDK/bsp/config/bsp_fem.h +++ /dev/null @@ -1,149 +0,0 @@ -/** - * \addtogroup BSP - * \{ - * \addtogroup BSP_CONFIG - * \{ - * \addtogroup RF_FEM - * - * \brief RF Front-End module confguration - * - *\{ - */ - -/** - *************************************************************************************** - * - * @file bsp_fem.h - * - * @brief Board Support Package. RF Front-End Module definitions. - * - * Copyright (c) 2016, Dialog Semiconductor - * All rights reserved. - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. Neither the name of the copyright holder nor the names of its contributors - * may be used to endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, - * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, - * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED - * OF THE POSSIBILITY OF SUCH DAMAGE. - * - * - *************************************************************************************** - */ - -#ifndef BSP_FEM_H_ -#define BSP_FEM_H_ - -/* ------------------------------- RF FEM driver (SKY66112-11) configuration settings ----------- */ - -#ifdef dg_configFEM_DLG_REF_BOARD - -#define dg_configFEM FEM_SKY66112_11 - -#if dg_configPOWER_1V8P == 0 -#warning Setting dg_configPOWER_1V8P to 1 for FEM to work -#undef dg_configPOWER_1V8P -#define dg_configPOWER_1V8P 1 -#endif - -#define dg_configFEM_SKY66112_11_FEM_BIAS_V18P -#define dg_configFEM_SKY66112_11_FEM_BIAS2_V18 - -#ifndef dg_configFEM_SKY66112_11_CSD_PORT -#define dg_configFEM_SKY66112_11_CSD_PORT HW_GPIO_PORT_4 -#endif - -#ifndef dg_configFEM_SKY66112_11_CSD_PIN -#define dg_configFEM_SKY66112_11_CSD_PIN HW_GPIO_PIN_3 -#endif - -#ifndef dg_configFEM_SKY66112_11_CPS_PORT -#define dg_configFEM_SKY66112_11_CPS_PORT HW_GPIO_PORT_4 -#endif - -#ifndef dg_configFEM_SKY66112_11_CPS_PIN -#define dg_configFEM_SKY66112_11_CPS_PIN HW_GPIO_PIN_6 -#endif - -#ifndef dg_configFEM_SKY66112_11_CRX_PORT -#define dg_configFEM_SKY66112_11_CRX_PORT HW_GPIO_PORT_4 -#endif - -#ifndef dg_configFEM_SKY66112_11_CRX_PIN -#define dg_configFEM_SKY66112_11_CRX_PIN HW_GPIO_PIN_2 -#endif - -#ifndef dg_configFEM_SKY66112_11_CTX_PORT -#define dg_configFEM_SKY66112_11_CTX_PORT HW_GPIO_PORT_4 -#endif - -#ifndef dg_configFEM_SKY66112_11_CTX_PIN -#define dg_configFEM_SKY66112_11_CTX_PIN HW_GPIO_PIN_5 -#endif - -#ifndef dg_configFEM_SKY66112_11_CHL_PORT -#define dg_configFEM_SKY66112_11_CHL_PORT HW_GPIO_PORT_4 -#endif - -#ifndef dg_configFEM_SKY66112_11_CHL_PIN -#define dg_configFEM_SKY66112_11_CHL_PIN HW_GPIO_PIN_4 -#endif - -#ifndef dg_configFEM_SKY66112_11_ANTSEL_PORT -#define dg_configFEM_SKY66112_11_ANTSEL_PORT HW_GPIO_PORT_4 -#endif - -#ifndef dg_configFEM_SKY66112_11_ANTSEL_PIN -#define dg_configFEM_SKY66112_11_ANTSEL_PIN HW_GPIO_PIN_0 -#endif - -#endif /* dg_configFEM_DLG_REF_BOARD */ - -#ifndef dg_configFEM -#define dg_configFEM FEM_NOFEM -#endif - -#if dg_configFEM == FEM_SKY66112_11 -#ifndef dg_configFEM_SKY66112_11_CSD_USE_DCF -#define dg_configFEM_SKY66112_11_CSD_USE_DCF 1 -#endif - -#ifndef dg_configFEM_SKY66112_11_TXSET_DCF -#define dg_configFEM_SKY66112_11_TXSET_DCF 47 -#endif - -#ifndef dg_configFEM_SKY66112_11_TXRESET_DCF -#define dg_configFEM_SKY66112_11_TXRESET_DCF 0 -#endif - -#ifndef dg_configFEM_SKY66112_11_RXSET_DCF -#define dg_configFEM_SKY66112_11_RXSET_DCF 1 -#endif - -#ifndef dg_configFEM_SKY66112_11_RXRESET_DCF -#define dg_configFEM_SKY66112_11_RXRESET_DCF 20 -#endif -#endif /* dg_configFEM == FEM_SKY66112_11 */ - -#endif /* BSP_FEM_H_ */ - -/** -\} -\} -\} -*/ - diff --git a/third_party/dialog/DialogSDK/bsp/include/ARMCM0.h b/third_party/dialog/DialogSDK/bsp/include/ARMCM0.h deleted file mode 100644 index 22e3be182..000000000 --- a/third_party/dialog/DialogSDK/bsp/include/ARMCM0.h +++ /dev/null @@ -1,43 +0,0 @@ -/**************************************************************************//** - * @file ARMCM0.h - * @brief CMSIS Core Peripheral Access Layer Header File for - * ARMCM0 Device Series - * @version V3.00 - * @date 16. October 2015 - ******************************************************************************/ -/* Copyright (c) 2011 - 2015 ARM LIMITED - - All rights reserved. - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of ARM nor the names of its contributors may be used - to endorse or promote products derived from this software without - specific prior written permission. - * - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDERS AND CONTRIBUTORS BE - LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - POSSIBILITY OF SUCH DAMAGE. - ---------------------------------------------------------------------------*/ - - -#ifndef ARMCM0_H -#define ARMCM0_H - - -#include /* Cortex-M0 processor and core peripherals */ -#include "system_ARMCM0.h" /* System Header */ - -#endif /* ARMCM0_H */ diff --git a/third_party/dialog/DialogSDK/bsp/include/DA14680BB.h b/third_party/dialog/DialogSDK/bsp/include/DA14680BB.h deleted file mode 100755 index 801e5161a..000000000 --- a/third_party/dialog/DialogSDK/bsp/include/DA14680BB.h +++ /dev/null @@ -1,12153 +0,0 @@ - /** - **************************************************************************************** - * - * Copyright (c) 2016, Dialog Semiconductor - * All rights reserved. - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. Neither the name of the copyright holder nor the names of its contributors - * may be used to endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, - * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, - * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED - * OF THE POSSIBILITY OF SUCH DAMAGE. - * - * @file DA14680BB.h - * - * @brief CMSIS Cortex-M0 Peripheral Access Layer Header File for - * DA14680BB from Dialog. - * - * @version V1.2 - * @date 14. June 2017 - * - * @note Generated with SVDConv V2.87l - * from CMSIS SVD File 'DA14680BB.xml' Version 1.2, - * - ***************************************************************************************** - */ - - - -/** @addtogroup Dialog - * @{ - */ - -/** @addtogroup DA14680BB - * @{ - */ - -#ifndef DA14680BB_H -#define DA14680BB_H - -#ifdef __cplusplus -extern "C" { -#endif - - -/* ------------------------- Interrupt Number Definition ------------------------ */ - -/** - * @brief Interrupt Number Definition - */ - -typedef enum { -/* ------------------- Cortex-M0 Processor Exceptions Numbers ------------------- */ - Reset_IRQn = -15, /*!< 1 Reset Vector, invoked on Power up and warm reset */ - NonMaskableInt_IRQn = -14, /*!< 2 Non maskable Interrupt, cannot be stopped or preempted */ - HardFault_IRQn = -13, /*!< 3 Hard Fault, all classes of Fault */ - SVCall_IRQn = -5, /*!< 11 System Service Call via SVC instruction */ - PendSV_IRQn = -2, /*!< 14 Pendable request for system service */ - SysTick_IRQn = -1, /*!< 15 System Tick Timer */ -/* -------------------- DA14680BB Specific Interrupt Numbers -------------------- */ - BLE_WAKEUP_LP_IRQn = 0, /*!< 0 BLE_WAKEUP_LP */ - BLE_GEN_IRQn = 1, /*!< 1 BLE_GEN */ - FTDF_WAKEUP_IRQn = 2, /*!< 2 FTDF_WAKEUP */ - FTDF_GEN_IRQn = 3, /*!< 3 FTDF_GEN */ - RFCAL_IRQn = 4, /*!< 4 RFCAL */ - COEX_IRQn = 5, /*!< 5 COEX */ - CRYPTO_IRQn = 6, /*!< 6 CRYPTO */ - MRM_IRQn = 7, /*!< 7 MRM */ - UART_IRQn = 8, /*!< 8 UART */ - UART2_IRQn = 9, /*!< 9 UART2 */ - I2C_IRQn = 10, /*!< 10 I2C */ - I2C2_IRQn = 11, /*!< 11 I2C2 */ - SPI_IRQn = 12, /*!< 12 SPI */ - SPI2_IRQn = 13, /*!< 13 SPI2 */ - ADC_IRQn = 14, /*!< 14 ADC */ - KEYBRD_IRQn = 15, /*!< 15 KEYBRD */ - IRGEN_IRQn = 16, /*!< 16 IRGEN */ - WKUP_GPIO_IRQn = 17, /*!< 17 WKUP_GPIO */ - SWTIM0_IRQn = 18, /*!< 18 SWTIM0 */ - SWTIM1_IRQn = 19, /*!< 19 SWTIM1 */ - QUADEC_IRQn = 20, /*!< 20 QUADEC */ - USB_IRQn = 21, /*!< 21 USB */ - PCM_IRQn = 22, /*!< 22 PCM */ - SRC_IN_IRQn = 23, /*!< 23 SRC_IN */ - SRC_OUT_IRQn = 24, /*!< 24 SRC_OUT */ - VBUS_IRQn = 25, /*!< 25 VBUS */ - DMA_IRQn = 26, /*!< 26 DMA */ - RF_DIAG_IRQn = 27, /*!< 27 RF_DIAG */ - TRNG_IRQn = 28, /*!< 28 TRNG */ - DCDC_IRQn = 29, /*!< 29 DCDC */ - XTAL16RDY_IRQn = 30, /*!< 30 XTAL16RDY */ - PLL_LOCK_IRQn = 31 /*!< 31 PLL_LOCK */ -} IRQn_Type; - - -/** @addtogroup Configuration_of_CMSIS_DA14680BB - * @{ - */ - - -/* ================================================================================ */ -/* ================ Processor and Core Peripheral Section ================ */ -/* ================================================================================ */ - -/* ----------------Configuration of the Cortex-M0 Processor and Core Peripherals---------------- */ -#define __CM0_REV 0x0100 /*!< Cortex-M0 Core Revision */ -#define __MPU_PRESENT 0 /*!< MPU present or not */ -#define __NVIC_PRIO_BITS 2 /*!< Number of Bits used for Priority Levels */ -#define __Vendor_SysTickConfig 0 /*!< Set to 1 if different SysTick Config is used */ -/** @} */ /* End of group Configuration_of_CMSIS */ - -#include "core_cm0.h" /*!< Cortex-M0 processor and core peripherals */ -#include "system_DA14680.h" /*!< DA14680BB System */ - - -/* ================================================================================ */ -/* ================ Device Specific Peripheral Section ================ */ -/* ================================================================================ */ - - -/** @addtogroup Device_Peripheral_Registers_DA14680BB - * @{ - */ - - -/* ------------------- Start of section using anonymous unions ------------------ */ -#if defined(__CC_ARM) - #pragma push - #pragma anon_unions -#elif defined(__ICCARM__) - #pragma language=extended -#elif defined(__GNUC__) - /* anonymous unions are enabled by default */ -#elif defined(__TMS470__) -/* anonymous unions are enabled by default */ -#elif defined(__TASKING__) - #pragma warning 586 -#else - #warning Not supported compiler type -#endif - - - - - - - - - -/* ================================================================================ */ -/* ================ AES_HASH ================ */ -/* ================================================================================ */ - - -/** - * @brief AES_HASH registers (AES_HASH) - */ - -typedef struct { /*!< (@ 0x40020000) AES_HASH Structure */ - __IO uint32_t CRYPTO_CTRL_REG; /*!< (@ 0x40020000) Crypto Control register */ - __IO uint32_t CRYPTO_START_REG; /*!< (@ 0x40020004) Crypto Start calculation */ - __IO uint32_t CRYPTO_FETCH_ADDR_REG; /*!< (@ 0x40020008) Crypto DMA fetch register */ - __IO uint32_t CRYPTO_LEN_REG; /*!< (@ 0x4002000C) Crypto Length of the input block in bytes */ - __IO uint32_t CRYPTO_DEST_ADDR_REG; /*!< (@ 0x40020010) Crypto DMA destination memory */ - __IO uint32_t CRYPTO_STATUS_REG; /*!< (@ 0x40020014) Crypto Status register */ - __IO uint32_t CRYPTO_CLRIRQ_REG; /*!< (@ 0x40020018) Crypto Clear interrupt request */ - __IO uint32_t CRYPTO_MREG0_REG; /*!< (@ 0x4002001C) Crypto Mode depended register 0 */ - __IO uint32_t CRYPTO_MREG1_REG; /*!< (@ 0x40020020) Crypto Mode depended register 1 */ - __IO uint32_t CRYPTO_MREG2_REG; /*!< (@ 0x40020024) Crypto Mode depended register 2 */ - __IO uint32_t CRYPTO_MREG3_REG; /*!< (@ 0x40020028) Crypto Mode depended register 3 */ - __I uint32_t RESERVED[53]; - __IO uint32_t CRYPTO_KEYS_START; /*!< (@ 0x40020100) Crypto First position of the AES keys storage - memory */ -} AES_HASH_Type; - - -/* ================================================================================ */ -/* ================ ANAMISC ================ */ -/* ================================================================================ */ - - -/** - * @brief ANAMISC registers (ANAMISC) - */ - -typedef struct { /*!< (@ 0x50001B00) ANAMISC Structure */ - __I uint16_t RESERVED; - __IO uint16_t ANA_TEST_REG; /*!< (@ 0x50001B02) Analog test registers */ - __I uint32_t RESERVED1; - __IO uint16_t CHARGER_CTRL1_REG; /*!< (@ 0x50001B08) Charger control register 1 */ - __IO uint16_t CHARGER_CTRL2_REG; /*!< (@ 0x50001B0A) Charger control register 2 */ - __IO uint16_t CHARGER_STATUS_REG; /*!< (@ 0x50001B0C) Charger status and trimming register */ - __I uint16_t RESERVED2[25]; - __IO uint16_t SOC_CTRL1_REG; /*!< (@ 0x50001B40) Fuel Gauge Control register 1 */ - __IO uint16_t SOC_CTRL2_REG; /*!< (@ 0x50001B42) Fuel Gauge Control register 2 */ - __IO uint16_t SOC_CTRL3_REG; /*!< (@ 0x50001B44) Fuel Gauge Control register 3 */ - __IO uint16_t SOC_ADD2CH_REG; /*!< (@ 0x50001B46) Fuel Gauge manually add extra charge to SOC_CHARGE_CNTRx_RE - G */ - __IO uint16_t SOC_CHARGE_CNTR1_REG; /*!< (@ 0x50001B48) Fuel Gauge Charge counter bits 15-0 */ - __IO uint16_t SOC_CHARGE_CNTR2_REG; /*!< (@ 0x50001B4A) Fuel Gauge Charge counter bits 31-16 */ - __IO uint16_t SOC_CHARGE_CNTR3_REG; /*!< (@ 0x50001B4C) Fuel Gauge Charge counter bits 39-32 */ - __I uint16_t RESERVED3; - __IO uint16_t SOC_CHARGE_AVG_REG; /*!< (@ 0x50001B50) Fuel Gauge Average charge counter */ - __IO uint16_t SOC_STATUS_REG; /*!< (@ 0x50001B52) Fuel Gauge Status register */ - __IO uint16_t SOC_EXT_IN_REG; /*!< (@ 0x50001B54) Fuel Gauge input test register */ - __IO uint16_t SOC_EXT_OUT_REG; /*!< (@ 0x50001B56) Fuel Gauge output test register */ - __I uint32_t RESERVED4[2]; - __IO uint16_t CLK_REF_SEL_REG; /*!< (@ 0x50001B60) Select clock for oscillator calibration */ - __IO uint16_t CLK_REF_CNT_REG; /*!< (@ 0x50001B62) Count value for oscillator calibration */ - __IO uint16_t CLK_REF_VAL_L_REG; /*!< (@ 0x50001B64) DIVN reference cycles, lower 16 bits */ - __IO uint16_t CLK_REF_VAL_H_REG; /*!< (@ 0x50001B66) DIVN reference cycles, upper 16 bits */ -} ANAMISC_Type; - - -/* ================================================================================ */ -/* ================ APU ================ */ -/* ================================================================================ */ - - -/** - * @brief APU registers (APU) - */ - -typedef struct { /*!< (@ 0x50004000) APU Structure */ - __IO uint32_t SRC1_CTRL_REG; /*!< (@ 0x50004000) SRC1 control register */ - __IO uint32_t SRC1_IN_FS_REG; /*!< (@ 0x50004004) SRC1 Sample input rate */ - __IO uint32_t SRC1_OUT_FS_REG; /*!< (@ 0x50004008) SRC1 Sample output rate */ - __IO uint32_t SRC1_IN1_REG; /*!< (@ 0x5000400C) SRC1 data in 1 */ - __IO uint32_t SRC1_IN2_REG; /*!< (@ 0x50004010) SRC1 data in 2 */ - __IO uint32_t SRC1_OUT1_REG; /*!< (@ 0x50004014) SRC1 data out 1 */ - __IO uint32_t SRC1_OUT2_REG; /*!< (@ 0x50004018) SRC1 data out 2 */ - __IO uint32_t APU_MUX_REG; /*!< (@ 0x5000401C) APU mux register */ - __IO uint32_t COEF10_SET1_REG; /*!< (@ 0x50004020) SRC coefficient 1,0 set 1 */ - __IO uint32_t COEF32_SET1_REG; /*!< (@ 0x50004024) SRC coefficient 3,2 set 1 */ - __IO uint32_t COEF54_SET1_REG; /*!< (@ 0x50004028) SRC coefficient 5,4 set 1 */ - __IO uint32_t COEF76_SET1_REG; /*!< (@ 0x5000402C) SRC coefficient 7,6 set 1 */ - __IO uint32_t COEF98_SET1_REG; /*!< (@ 0x50004030) SRC coefficient 9,8 set 1 */ - __IO uint32_t COEF0A_SET1_REG; /*!< (@ 0x50004034) SRC coefficient 10 set 1 */ - __I uint32_t RESERVED[50]; - __IO uint32_t PCM1_CTRL_REG; /*!< (@ 0x50004100) PCM1 Control register */ - __IO uint32_t PCM1_IN1_REG; /*!< (@ 0x50004104) PCM1 data in 1 */ - __IO uint32_t PCM1_IN2_REG; /*!< (@ 0x50004108) PCM1 data in 2 */ - __IO uint32_t PCM1_OUT1_REG; /*!< (@ 0x5000410C) PCM1 data out 1 */ - __IO uint32_t PCM1_OUT2_REG; /*!< (@ 0x50004110) PCM1 data out 2 */ -} APU_Type; - - -/* ================================================================================ */ -/* ================ BLE ================ */ -/* ================================================================================ */ - - -/** - * @brief BLE registers (BLE) - */ - -typedef struct { /*!< (@ 0x40000000) BLE Structure */ - __IO uint32_t BLE_RWBLECNTL_REG; /*!< (@ 0x40000000) BLE Control register */ - __IO uint32_t BLE_VERSION_REG; /*!< (@ 0x40000004) Version register */ - __IO uint32_t BLE_RWBLECONF_REG; /*!< (@ 0x40000008) Configuration register */ - __IO uint32_t BLE_INTCNTL_REG; /*!< (@ 0x4000000C) Interrupt controller register */ - __IO uint32_t BLE_INTSTAT_REG; /*!< (@ 0x40000010) Interrupt status register */ - __IO uint32_t BLE_INTRAWSTAT_REG; /*!< (@ 0x40000014) Interrupt raw status register */ - __IO uint32_t BLE_INTACK_REG; /*!< (@ 0x40000018) Interrupt acknowledge register */ - __IO uint32_t BLE_BASETIMECNT_REG; /*!< (@ 0x4000001C) Base time reference counter */ - __IO uint32_t BLE_FINETIMECNT_REG; /*!< (@ 0x40000020) Fine time reference counter */ - __IO uint32_t BLE_BDADDRL_REG; /*!< (@ 0x40000024) BLE device address LSB register */ - __IO uint32_t BLE_BDADDRU_REG; /*!< (@ 0x40000028) BLE device address MSB register */ - __IO uint32_t BLE_CURRENTRXDESCPTR_REG; /*!< (@ 0x4000002C) Rx Descriptor Pointer for the Receive Buffer - Chained List */ - __IO uint32_t BLE_DEEPSLCNTL_REG; /*!< (@ 0x40000030) Deep-Sleep control register */ - __IO uint32_t BLE_DEEPSLWKUP_REG; /*!< (@ 0x40000034) Time (measured in Low Power clock cycles) in - Deep Sleep Mode before waking-up the device */ - __IO uint32_t BLE_DEEPSLSTAT_REG; /*!< (@ 0x40000038) Duration of the last deep sleep phase register */ - __IO uint32_t BLE_ENBPRESET_REG; /*!< (@ 0x4000003C) Time in low power oscillator cycles register */ - __IO uint32_t BLE_FINECNTCORR_REG; /*!< (@ 0x40000040) Phase correction value register */ - __IO uint32_t BLE_BASETIMECNTCORR_REG; /*!< (@ 0x40000044) Base Time Counter */ - __I uint32_t RESERVED[2]; - __IO uint32_t BLE_DIAGCNTL_REG; /*!< (@ 0x40000050) Diagnostics Register */ - __IO uint32_t BLE_DIAGSTAT_REG; /*!< (@ 0x40000054) Debug use only */ - __IO uint32_t BLE_DEBUGADDMAX_REG; /*!< (@ 0x40000058) Upper limit for the memory zone */ - __IO uint32_t BLE_DEBUGADDMIN_REG; /*!< (@ 0x4000005C) Lower limit for the memory zone */ - __IO uint32_t BLE_ERRORTYPESTAT_REG; /*!< (@ 0x40000060) Error Type Status registers */ - __IO uint32_t BLE_SWPROFILING_REG; /*!< (@ 0x40000064) Software Profiling register */ - __I uint32_t RESERVED1[2]; - __IO uint32_t BLE_RADIOCNTL0_REG; /*!< (@ 0x40000070) Radio interface control register */ - __IO uint32_t BLE_RADIOCNTL1_REG; /*!< (@ 0x40000074) Radio interface control register */ - __IO uint32_t BLE_RADIOCNTL2_REG; /*!< (@ 0x40000078) Radio interface control register */ - __IO uint32_t BLE_RADIOCNTL3_REG; /*!< (@ 0x4000007C) Radio interface control register */ - __IO uint32_t BLE_RADIOPWRUPDN_REG; /*!< (@ 0x40000080) RX/TX power up/down phase register */ - __I uint32_t RESERVED2[3]; - __IO uint32_t BLE_ADVCHMAP_REG; /*!< (@ 0x40000090) Advertising Channel Map */ - __I uint32_t RESERVED3[3]; - __IO uint32_t BLE_ADVTIM_REG; /*!< (@ 0x400000A0) Advertising Packet Interval */ - __IO uint32_t BLE_ACTSCANSTAT_REG; /*!< (@ 0x400000A4) Active scan register */ - __I uint32_t RESERVED4[2]; - __IO uint32_t BLE_WLPUBADDPTR_REG; /*!< (@ 0x400000B0) Start address of public devices list */ - __IO uint32_t BLE_WLPRIVADDPTR_REG; /*!< (@ 0x400000B4) Start address of private devices list */ - __IO uint32_t BLE_WLNBDEV_REG; /*!< (@ 0x400000B8) Devices in white list */ - __I uint32_t RESERVED5; - __IO uint32_t BLE_AESCNTL_REG; /*!< (@ 0x400000C0) Start AES register */ - __IO uint32_t BLE_AESKEY31_0_REG; /*!< (@ 0x400000C4) AES encryption key */ - __IO uint32_t BLE_AESKEY63_32_REG; /*!< (@ 0x400000C8) AES encryption key */ - __IO uint32_t BLE_AESKEY95_64_REG; /*!< (@ 0x400000CC) AES encryption key */ - __IO uint32_t BLE_AESKEY127_96_REG; /*!< (@ 0x400000D0) AES encryption key */ - __IO uint32_t BLE_AESPTR_REG; /*!< (@ 0x400000D4) Pointer to the block to encrypt/decrypt */ - __IO uint32_t BLE_TXMICVAL_REG; /*!< (@ 0x400000D8) AES / CCM plain MIC value */ - __IO uint32_t BLE_RXMICVAL_REG; /*!< (@ 0x400000DC) AES / CCM plain MIC value */ - __IO uint32_t BLE_RFTESTCNTL_REG; /*!< (@ 0x400000E0) RF Testing Register */ - __IO uint32_t BLE_RFTESTTXSTAT_REG; /*!< (@ 0x400000E4) RF Testing Register */ - __IO uint32_t BLE_RFTESTRXSTAT_REG; /*!< (@ 0x400000E8) RF Testing Register */ - __I uint32_t RESERVED6; - __IO uint32_t BLE_TIMGENCNTL_REG; /*!< (@ 0x400000F0) Timing Generator Register */ - __IO uint32_t BLE_GROSSTIMTGT_REG; /*!< (@ 0x400000F4) Gross Timer Target value */ - __IO uint32_t BLE_FINETIMTGT_REG; /*!< (@ 0x400000F8) Fine Timer Target value */ - __IO uint32_t BLE_SAMPLECLK_REG; /*!< (@ 0x400000FC) Samples the Base Time Counter */ - __IO uint32_t BLE_COEXIFCNTL0_REG; /*!< (@ 0x40000100) Coexistence interface Control 0 Register */ - __IO uint32_t BLE_COEXIFCNTL1_REG; /*!< (@ 0x40000104) Coexistence interface Control 1 Register */ - __IO uint32_t BLE_BLEMPRIO0_REG; /*!< (@ 0x40000108) Coexistence interface Priority 0 Register */ - __IO uint32_t BLE_BLEMPRIO1_REG; /*!< (@ 0x4000010C) Coexistence interface Priority 1 Register */ - __I uint32_t RESERVED7[60]; - __IO uint32_t BLE_CNTL2_REG; /*!< (@ 0x40000200) BLE Control Register 2 */ - __I uint32_t RESERVED8; - __IO uint32_t BLE_EM_BASE_REG; /*!< (@ 0x40000208) Exchange Memory Base Register */ - __IO uint32_t BLE_DIAGCNTL2_REG; /*!< (@ 0x4000020C) Debug use only */ - __IO uint32_t BLE_DIAGCNTL3_REG; /*!< (@ 0x40000210) Debug use only */ -} BLE_Type; - - -/* ================================================================================ */ -/* ================ CACHE ================ */ -/* ================================================================================ */ - - -/** - * @brief CACHE registers (CACHE) - */ - -typedef struct { /*!< (@ 0x400C3000) CACHE Structure */ - __IO uint32_t CACHE_CTRL1_REG; /*!< (@ 0x400C3000) Cache control register 1 */ - __IO uint32_t CACHE_LNSIZECFG_REG; /*!< (@ 0x400C3004) Cache line size configuration register */ - __IO uint32_t CACHE_ASSOCCFG_REG; /*!< (@ 0x400C3008) Cache associativity configuration register */ - __I uint32_t RESERVED[5]; - __IO uint32_t CACHE_CTRL2_REG; /*!< (@ 0x400C3020) Cache control register 2 */ - __IO uint32_t CACHE_CTRL3_REG; /*!< (@ 0x400C3024) Cache control register 3 (for the Cache Controller - configuration reset values) */ - __IO uint32_t CACHE_MRM_HITS_REG; /*!< (@ 0x400C3028) Cache MRM (Miss Rate Monitor) HITS register */ - __IO uint32_t CACHE_MRM_MISSES_REG; /*!< (@ 0x400C302C) Cache MRM (Miss Rate Monitor) MISSES register */ - __IO uint32_t CACHE_MRM_CTRL_REG; /*!< (@ 0x400C3030) Cache MRM (Miss Rate Monitor) CONTROL register */ - __IO uint32_t CACHE_MRM_TINT_REG; /*!< (@ 0x400C3034) Cache MRM (Miss Rate Monitor) TIME INTERVAL register */ - __IO uint32_t CACHE_MRM_THRES_REG; /*!< (@ 0x400C3038) Cache MRM (Miss Rate Monitor) THRESHOLD register */ - __I uint32_t RESERVED1[5]; - __IO uint32_t SWD_RESET_REG; /*!< (@ 0x400C3050) SWD HW reset control register */ -} CACHE_Type; - - -/* ================================================================================ */ -/* ================ CHIP_VERSION ================ */ -/* ================================================================================ */ - - -/** - * @brief CHIP_VERSION registers (CHIP_VERSION) - */ - -typedef struct { /*!< (@ 0x50003200) CHIP_VERSION Structure */ - __IO uint8_t CHIP_ID1_REG; /*!< (@ 0x50003200) Chip identification register 1. */ - __IO uint8_t CHIP_ID2_REG; /*!< (@ 0x50003201) Chip identification register 2. */ - __IO uint8_t CHIP_ID3_REG; /*!< (@ 0x50003202) Chip identification register 3. */ - __IO uint8_t CHIP_SWC_REG; /*!< (@ 0x50003203) Software compatibility register. */ - __IO uint8_t CHIP_REVISION_REG; /*!< (@ 0x50003204) Chip revision register. */ - __IO uint8_t CHIP_CONFIG1_REG; /*!< (@ 0x50003205) Chip configuration register 1. */ - __IO uint8_t CHIP_CONFIG2_REG; /*!< (@ 0x50003206) Chip configuration register 2. */ - __IO uint8_t CHIP_CONFIG3_REG; /*!< (@ 0x50003207) Chip configuration register 3. */ - __I uint16_t RESERVED; - __IO uint8_t CHIP_TEST1_REG; /*!< (@ 0x5000320A) Chip test register 1. */ - __IO uint8_t CHIP_TEST2_REG; /*!< (@ 0x5000320B) Chip test register 2. */ - __IO uint8_t CHIP_TEST3_REG; /*!< (@ 0x5000320C) Chip test register 3. */ -} CHIP_VERSION_Type; - - -/* ================================================================================ */ -/* ================ COEX ================ */ -/* ================================================================================ */ - - -/** - * @brief COEX registers (COEX) - */ - -typedef struct { /*!< (@ 0x50002F00) COEX Structure */ - __IO uint16_t COEX_CTRL_REG; /*!< (@ 0x50002F00) COEX Control Register */ - __IO uint16_t COEX_STAT_REG; /*!< (@ 0x50002F02) COEX Status Register */ - __IO uint16_t COEX_STAT2_REG; /*!< (@ 0x50002F04) COEX Status 2 Register */ - __IO uint16_t COEX_INT_MASK_REG; /*!< (@ 0x50002F06) COEX Interrupt Mask Register */ - __IO uint16_t COEX_INT_STAT_REG; /*!< (@ 0x50002F08) COEX Interrupt Status Register */ - __IO uint16_t COEX_BLE_PTI_REG; /*!< (@ 0x50002F0A) COEX BLE PTI Control Register */ - __IO uint16_t COEX_FTDF_PTI_REG; /*!< (@ 0x50002F0C) COEX FTDF PTI Control Register */ - __I uint16_t RESERVED[2]; - __IO uint16_t COEX_PRI1_REG; /*!< (@ 0x50002F12) COEX Priority Register */ - __IO uint16_t COEX_PRI2_REG; /*!< (@ 0x50002F14) COEX Priority Register */ - __IO uint16_t COEX_PRI3_REG; /*!< (@ 0x50002F16) COEX Priority Register */ - __IO uint16_t COEX_PRI4_REG; /*!< (@ 0x50002F18) COEX Priority Register */ - __IO uint16_t COEX_PRI5_REG; /*!< (@ 0x50002F1A) COEX Priority Register */ - __IO uint16_t COEX_PRI6_REG; /*!< (@ 0x50002F1C) COEX Priority Register */ - __IO uint16_t COEX_PRI7_REG; /*!< (@ 0x50002F1E) COEX Priority Register */ - __IO uint16_t COEX_PRI8_REG; /*!< (@ 0x50002F20) COEX Priority Register */ - __IO uint16_t COEX_PRI9_REG; /*!< (@ 0x50002F22) COEX Priority Register */ - __IO uint16_t COEX_PRI10_REG; /*!< (@ 0x50002F24) COEX Priority Register */ - __IO uint16_t COEX_PRI11_REG; /*!< (@ 0x50002F26) COEX Priority Register */ - __IO uint16_t COEX_PRI12_REG; /*!< (@ 0x50002F28) COEX Priority Register */ - __IO uint16_t COEX_PRI13_REG; /*!< (@ 0x50002F2A) COEX Priority Register */ - __IO uint16_t COEX_PRI14_REG; /*!< (@ 0x50002F2C) COEX Priority Register */ - __IO uint16_t COEX_PRI15_REG; /*!< (@ 0x50002F2E) COEX Priority Register */ -} COEX_Type; - - -/* ================================================================================ */ -/* ================ CRG_PER ================ */ -/* ================================================================================ */ - - -/** - * @brief CRG_PER registers (CRG_PER) - */ - -typedef struct { /*!< (@ 0x50001C00) CRG_PER Structure */ - __I uint32_t RESERVED; - __IO uint16_t CLK_PER_REG; /*!< (@ 0x50001C04) Peripheral divider register */ - __I uint16_t RESERVED1[29]; - __IO uint16_t PCM_DIV_REG; /*!< (@ 0x50001C40) PCM divider and enables */ - __IO uint16_t PCM_FDIV_REG; /*!< (@ 0x50001C42) PCM fractional division register */ - __IO uint16_t PDM_DIV_REG; /*!< (@ 0x50001C44) PDM divider and enables */ - __IO uint16_t SRC_DIV_REG; /*!< (@ 0x50001C46) SRC divider and enables */ - __IO uint16_t EH_REG; /*!< (@ 0x50001C48) EH_REG */ - __IO uint16_t USBPAD_REG; /*!< (@ 0x50001C4A) USB pads control register */ -} CRG_PER_Type; - - -/* ================================================================================ */ -/* ================ CRG_TOP ================ */ -/* ================================================================================ */ - - -/** - * @brief CRG_TOP registers (CRG_TOP) - */ - -typedef struct { /*!< (@ 0x50000000) CRG_TOP Structure */ - __IO uint16_t CLK_AMBA_REG; /*!< (@ 0x50000000) HCLK, PCLK, divider and clock gates */ - __IO uint16_t CLK_FREQ_TRIM_REG; /*!< (@ 0x50000002) Xtal frequency trimming register. */ - __I uint32_t RESERVED; - __IO uint16_t CLK_RADIO_REG; /*!< (@ 0x50000008) Radio PLL control register */ - __IO uint16_t CLK_CTRL_REG; /*!< (@ 0x5000000A) Clock control register */ - __IO uint16_t CLK_TMR_REG; /*!< (@ 0x5000000C) Clock control for the timers */ - __I uint16_t RESERVED1; - __IO uint16_t PMU_CTRL_REG; /*!< (@ 0x50000010) Power Management Unit control register */ - __IO uint16_t SYS_CTRL_REG; /*!< (@ 0x50000012) System Control register */ - __IO uint16_t SYS_STAT_REG; /*!< (@ 0x50000014) System status register */ - __IO uint16_t TRIM_CTRL_REG; /*!< (@ 0x50000016) Control trimming of the XTAL16M */ - __I uint32_t RESERVED2[2]; - __IO uint16_t CLK_32K_REG; /*!< (@ 0x50000020) 32 kHz oscillator register */ - __IO uint16_t CLK_16M_REG; /*!< (@ 0x50000022) 16 MHz RC and xtal oscillator register */ - __IO uint16_t CLK_RCX20K_REG; /*!< (@ 0x50000024) RCX-oscillator control register */ - __I uint16_t RESERVED3; - __IO uint16_t BANDGAP_REG; /*!< (@ 0x50000028) bandgap trimming */ - __IO uint16_t ANA_STATUS_REG; /*!< (@ 0x5000002A) status bit of analog (power management) circuits */ - __IO uint16_t STARTUP_STATUS_REG; /*!< (@ 0x5000002C) Startup timeout bits */ - __I uint16_t RESERVED4; - __IO uint16_t VBUS_IRQ_MASK_REG; /*!< (@ 0x50000030) IRQ masking */ - __IO uint16_t VBUS_IRQ_CLEAR_REG; /*!< (@ 0x50000032) Clear pending IRQ register */ - __IO uint16_t BOD_CTRL_REG; /*!< (@ 0x50000034) Brown Out Detection control register */ - __IO uint16_t BOD_CTRL2_REG; /*!< (@ 0x50000036) Brown Out Detection control register */ - __IO uint16_t BOD_STATUS_REG; /*!< (@ 0x50000038) Brown Out Detection status register */ - __IO uint16_t LDO_CTRL1_REG; /*!< (@ 0x5000003A) LDO control register */ - __IO uint16_t LDO_CTRL2_REG; /*!< (@ 0x5000003C) LDO control register */ - __IO uint16_t SLEEP_TIMER_REG; /*!< (@ 0x5000003E) Timer for regulated sleep */ - __IO uint16_t POWER_CTRL_REG; /*!< (@ 0x50000040) Power control register */ - __IO uint16_t POR_VBAT_CTRL_REG; /*!< (@ 0x50000042) Controls the POR on VBAT */ - __I uint32_t RESERVED5[3]; - __IO uint16_t XTALRDY_CTRL_REG; /*!< (@ 0x50000050) Control register for XTALRDY IRQ */ - __IO uint16_t XTALRDY_STAT_REG; /*!< (@ 0x50000052) Difference between XTAL_OK and XTALRDY_IRQ in - LP clock cycles */ - __IO uint16_t LDO_CTRL3_REG; /*!< (@ 0x50000054) Retention LDO control register */ - __IO uint16_t XTAL16M_CTRL_REG; /*!< (@ 0x50000056) Control register for XTAL16M */ - __IO uint16_t XTAL16M_START_REG; /*!< (@ 0x50000058) Xtal frequency trimming register during startup */ - __IO uint16_t XTAL16M_RAMP_REG; /*!< (@ 0x5000005A) Xtal frequency trimming register during ramping */ - __IO uint16_t XTAL16M_TRSTAT_REG; /*!< (@ 0x5000005C) Read back value of current XTAL trimming */ - __IO uint16_t RESET_STAT_REG; /*!< (@ 0x5000005E) Reset status register */ - __IO uint16_t FORCE_SLEEP_REG; /*!< (@ 0x50000060) Force FTDF/BLE to sleep */ - __IO uint16_t LDOS_DISABLE_REG; /*!< (@ 0x50000062) Force off all LDOs */ - __IO uint16_t AON_SPARE_REG; /*!< (@ 0x50000064) Spare register */ - __IO uint16_t SECURE_BOOT_REG; /*!< (@ 0x50000066) Controls secure booting */ - __IO uint16_t PMU_RESET_RAIL_REG; /*!< (@ 0x50000068) Controls rail resetting when RST is pulsed */ - __IO uint16_t DISCHARGE_RAIL_REG; /*!< (@ 0x5000006A) Immediate rail resetting. There is no LDO/DCDC - gating */ -} CRG_TOP_Type; - - -/* ================================================================================ */ -/* ================ DCDC ================ */ -/* ================================================================================ */ - - -/** - * @brief DCDC registers (DCDC) - */ - -typedef struct { /*!< (@ 0x50000080) DCDC Structure */ - __I uint16_t RESERVED; - __IO uint16_t DCDC_CTRL_0_REG; /*!< (@ 0x50000082) DCDC First Control Register */ - __IO uint16_t DCDC_CTRL_1_REG; /*!< (@ 0x50000084) DCDC Second Control Register */ - __IO uint16_t DCDC_CTRL_2_REG; /*!< (@ 0x50000086) DCDC Third Control Register */ - __IO uint16_t DCDC_V14_0_REG; /*!< (@ 0x50000088) DCDC V14 First Control Register */ - __IO uint16_t DCDC_V14_1_REG; /*!< (@ 0x5000008A) DCDC V14 Second Control Register */ - __IO uint16_t DCDC_V18_0_REG; /*!< (@ 0x5000008C) DCDC V18 First Control Register */ - __IO uint16_t DCDC_V18_1_REG; /*!< (@ 0x5000008E) DCDC V18 Second Control Register */ - __IO uint16_t DCDC_VDD_0_REG; /*!< (@ 0x50000090) DCDC VDD First Control Register */ - __IO uint16_t DCDC_VDD_1_REG; /*!< (@ 0x50000092) DCDC VDD Second Control Register */ - __IO uint16_t DCDC_V18P_0_REG; /*!< (@ 0x50000094) DCDC VPA First Control Register */ - __IO uint16_t DCDC_V18P_1_REG; /*!< (@ 0x50000096) DCDC VPA Second Control Register */ - __IO uint16_t DCDC_RET_0_REG; /*!< (@ 0x50000098) DCDC First Retention Mode Register */ - __IO uint16_t DCDC_RET_1_REG; /*!< (@ 0x5000009A) DCDC Second Retention Mode Register */ - __IO uint16_t DCDC_TRIM_REG; /*!< (@ 0x5000009C) DCDC Comparator Trim Register */ - __IO uint16_t DCDC_TEST_0_REG; /*!< (@ 0x5000009E) DCDC Test Register */ - __IO uint16_t DCDC_TEST_1_REG; /*!< (@ 0x500000A0) DCDC Test Register */ - __IO uint16_t DCDC_STATUS_0_REG; /*!< (@ 0x500000A2) DCDC First Status Register */ - __IO uint16_t DCDC_STATUS_1_REG; /*!< (@ 0x500000A4) DCDC Second Status Register */ - __IO uint16_t DCDC_STATUS_2_REG; /*!< (@ 0x500000A6) DCDC Third Status Register */ - __IO uint16_t DCDC_STATUS_3_REG; /*!< (@ 0x500000A8) DCDC Fourth Status Register */ - __IO uint16_t DCDC_STATUS_4_REG; /*!< (@ 0x500000AA) DCDC Fifth Status Register */ - __IO uint16_t DCDC_TRIM_0_REG; /*!< (@ 0x500000AC) DCDC V14 Comparator Trim Register */ - __IO uint16_t DCDC_TRIM_1_REG; /*!< (@ 0x500000AE) DCDC V18 Comparator Trim Register */ - __IO uint16_t DCDC_TRIM_2_REG; /*!< (@ 0x500000B0) DCDC VDD Comparator Trim Register */ - __IO uint16_t DCDC_TRIM_3_REG; /*!< (@ 0x500000B2) DCDC VPA Comparator Trim Register */ - __IO uint16_t DCDC_IRQ_STATUS_REG; /*!< (@ 0x500000B4) DCDC Interrupt Status Register */ - __IO uint16_t DCDC_IRQ_CLEAR_REG; /*!< (@ 0x500000B6) DCDC Interrupt Clear Register */ - __IO uint16_t DCDC_IRQ_MASK_REG; /*!< (@ 0x500000B8) DCDC Interrupt Clear Register */ -} DCDC_Type; - - -/* ================================================================================ */ -/* ================ DEM ================ */ -/* ================================================================================ */ - - -/** - * @brief DEM registers (DEM) - */ - -typedef struct { /*!< (@ 0x50002E00) DEM Structure */ - __IO uint16_t RF_DEM_CTRL_REG; /*!< (@ 0x50002E00) RF_DEM_CTRL_REG */ - __IO uint16_t RF_AGC_LUT_01_REG; /*!< (@ 0x50002E02) RF_AGC_LUT_01_REG */ - __IO uint16_t RF_AGC_LUT_23_REG; /*!< (@ 0x50002E04) RF_AGC_LUT_23_REG */ - __IO uint16_t RF_AGC_LUT_45_REG; /*!< (@ 0x50002E06) RF_AGC_LUT_45_REG */ - __IO uint16_t RF_AGC_LUT_67_REG; /*!< (@ 0x50002E08) RF_AGC_LUT_67_REG */ - __IO uint16_t RF_AGC_LUT_89_REG; /*!< (@ 0x50002E0A) RF_AGC_LUT_89_REG */ - __IO uint16_t RF_AGC_CTRL1_REG; /*!< (@ 0x50002E0C) RF_AGC_CTRL1_REG */ - __IO uint16_t RF_AGC_CTRL2_REG; /*!< (@ 0x50002E0E) RF_AGC_CTRL2_REG */ - __IO uint16_t RF_AFC_CTRL_REG; /*!< (@ 0x50002E10) RF_AFC_CTRL_REG */ - __IO uint16_t RF_DC_OFFSET_CTRL1_REG; /*!< (@ 0x50002E12) RF_DC_OFFSET_CTRL1_REG */ - __IO uint16_t RF_DC_OFFSET_CTRL2_REG; /*!< (@ 0x50002E14) RF_DC_OFFSET_CTRL2_REG */ - __IO uint16_t RF_DC_OFFSET_CTRL3_REG; /*!< (@ 0x50002E16) RF_DC_OFFSET_CTRL3_REG */ - __IO uint16_t RF_DC_OFFSET_CTRL4_REG; /*!< (@ 0x50002E18) RF_DC_OFFSET_CTRL4_REG */ - __I uint16_t RESERVED; - __IO uint16_t RF_AGC_RESULT_REG; /*!< (@ 0x50002E1C) RF_AGC_RESULT_REG */ - __IO uint16_t RF_RSSI_RESULT_REG; /*!< (@ 0x50002E1E) RF_RSSI_RESULT_REG */ - __IO uint16_t RF_DC_OFFSET_RESULT_REG; /*!< (@ 0x50002E20) Must be Retained */ - __IO uint16_t RF_RSSI_COMP_CTRL_REG; /*!< (@ 0x50002E22) RF_RSSI_COMP_CTRL_REG */ - __I uint32_t RESERVED1[3]; - __IO uint16_t RF_FTDF_CTRL1_REG; /*!< (@ 0x50002E30) RF_FTDF_CTRL1_REG */ - __IO uint16_t RF_FTDF_CTRL2_REG; /*!< (@ 0x50002E32) RF_FTDF_CTRL2_REG */ - __IO uint16_t RF_FTDF_CTRL3_REG; /*!< (@ 0x50002E34) RF_FTDF_CTRL3_REG */ - __IO uint16_t RF_FTDF_CTRL4_REG; /*!< (@ 0x50002E36) RF_FTDF_CTRL4_REG */ - __IO uint16_t RF_FTDF_LOOP_GAIN_PD_REG; /*!< (@ 0x50002E38) RF_FTDF_LOOP_GAIN_PD_REG */ - __IO uint16_t RF_FTDF_LOOP_GAIN_DS_REG; /*!< (@ 0x50002E3A) RF_FTDF_LOOP_GAIN_DS_REG */ - __IO uint16_t RF_FTDF_CTRL5_REG; /*!< (@ 0x50002E3C) RF_FTDF_CTRL5_REG */ - __IO uint16_t RF_FTDF_COBI_LOW_REG; /*!< (@ 0x50002E3E) RF_FTDF_COBI_LOW_REG */ - __IO uint16_t RF_FTDF_COBI_HIGH_REG; /*!< (@ 0x50002E40) RF_FTDF_COBI_HIGH_REG */ - __IO uint16_t RF_DEM_TESTMODE_REG; /*!< (@ 0x50002E42) RF_DEM_TESTMODE_REG */ - __IO uint16_t RF_DEM_IQCORRECT_REG; /*!< (@ 0x50002E44) RF_DEM_IQCORRECT_REG */ - __IO uint16_t RF_PAD_CNT_CTRL_REG; /*!< (@ 0x50002E46) RF_PAD_CNT_CTRL_REG */ - __IO uint16_t RF_PAD_CNT_RESULT_REG; /*!< (@ 0x50002E48) RF_PAD_CNT_RESULT_REG */ - __I uint16_t RESERVED2[3]; - __IO uint16_t RF_FSSS_I_RESULT_REG; /*!< (@ 0x50002E50) RF_FSSS_I_RESULT_REG */ - __IO uint16_t RF_FSSS_Q_RESULT_REG; /*!< (@ 0x50002E52) RF_FSSS_Q_RESULT_REG */ - __IO uint16_t RF_FSSS_MAG_RESULT_REG; /*!< (@ 0x50002E54) RF_FSSS_MAG_RESULT_REG */ - __IO uint16_t RF_CCA_RSSITH_REG; /*!< (@ 0x50002E56) RF_CCA_RSSITH_REG */ - __IO uint16_t RF_FTDF_SIGDET_CTRL_REG; /*!< (@ 0x50002E58) RF_FTDF_SIGDET_CTRL_REG */ -} DEM_Type; - - -/* ================================================================================ */ -/* ================ DMA ================ */ -/* ================================================================================ */ - - -/** - * @brief DMA registers (DMA) - */ - -typedef struct { /*!< (@ 0x50003500) DMA Structure */ - __IO uint16_t DMA0_A_STARTL_REG; /*!< (@ 0x50003500) Start address Low A of DMA channel 0 */ - __IO uint16_t DMA0_A_STARTH_REG; /*!< (@ 0x50003502) Start address High A of DMA channel 0 */ - __IO uint16_t DMA0_B_STARTL_REG; /*!< (@ 0x50003504) Start address Low B of DMA channel 0 */ - __IO uint16_t DMA0_B_STARTH_REG; /*!< (@ 0x50003506) Start address High B of DMA channel 0 */ - __IO uint16_t DMA0_INT_REG; /*!< (@ 0x50003508) DMA receive interrupt register channel 0 */ - __IO uint16_t DMA0_LEN_REG; /*!< (@ 0x5000350A) DMA receive length register channel 0 */ - __IO uint16_t DMA0_CTRL_REG; /*!< (@ 0x5000350C) Control register for the DMA channel 0 */ - __IO uint16_t DMA0_IDX_REG; /*!< (@ 0x5000350E) Index value of DMA channel 0 */ - __IO uint16_t DMA1_A_STARTL_REG; /*!< (@ 0x50003510) Start address Low A of DMA channel 1 */ - __IO uint16_t DMA1_A_STARTH_REG; /*!< (@ 0x50003512) Start address High A of DMA channel 1 */ - __IO uint16_t DMA1_B_STARTL_REG; /*!< (@ 0x50003514) Start address Low B of DMA channel 1 */ - __IO uint16_t DMA1_B_STARTH_REG; /*!< (@ 0x50003516) Start address High B of DMA channel 1 */ - __IO uint16_t DMA1_INT_REG; /*!< (@ 0x50003518) DMA receive interrupt register channel 1 */ - __IO uint16_t DMA1_LEN_REG; /*!< (@ 0x5000351A) DMA receive length register channel 1 */ - __IO uint16_t DMA1_CTRL_REG; /*!< (@ 0x5000351C) Control register for the DMA channel 1 */ - __IO uint16_t DMA1_IDX_REG; /*!< (@ 0x5000351E) Index value of DMA channel 1 */ - __IO uint16_t DMA2_A_STARTL_REG; /*!< (@ 0x50003520) Start address Low A of DMA channel 2 */ - __IO uint16_t DMA2_A_STARTH_REG; /*!< (@ 0x50003522) Start address High A of DMA channel 2 */ - __IO uint16_t DMA2_B_STARTL_REG; /*!< (@ 0x50003524) Start address Low B of DMA channel 2 */ - __IO uint16_t DMA2_B_STARTH_REG; /*!< (@ 0x50003526) Start address High B of DMA channel 2 */ - __IO uint16_t DMA2_INT_REG; /*!< (@ 0x50003528) DMA receive interrupt register channel 2 */ - __IO uint16_t DMA2_LEN_REG; /*!< (@ 0x5000352A) DMA receive length register channel 2 */ - __IO uint16_t DMA2_CTRL_REG; /*!< (@ 0x5000352C) Control register for the DMA channel 2 */ - __IO uint16_t DMA2_IDX_REG; /*!< (@ 0x5000352E) Index value of DMA channel 2 */ - __IO uint16_t DMA3_A_STARTL_REG; /*!< (@ 0x50003530) Start address Low A of DMA channel 3 */ - __IO uint16_t DMA3_A_STARTH_REG; /*!< (@ 0x50003532) Start address High A of DMA channel 3 */ - __IO uint16_t DMA3_B_STARTL_REG; /*!< (@ 0x50003534) Start address Low B of DMA channel 3 */ - __IO uint16_t DMA3_B_STARTH_REG; /*!< (@ 0x50003536) Start address High B of DMA channel 3 */ - __IO uint16_t DMA3_INT_REG; /*!< (@ 0x50003538) DMA receive interrupt register channel 3 */ - __IO uint16_t DMA3_LEN_REG; /*!< (@ 0x5000353A) DMA receive length register channel 3 */ - __IO uint16_t DMA3_CTRL_REG; /*!< (@ 0x5000353C) Control register for the DMA channel 3 */ - __IO uint16_t DMA3_IDX_REG; /*!< (@ 0x5000353E) Index value of DMA channel 3 */ - __IO uint16_t DMA4_A_STARTL_REG; /*!< (@ 0x50003540) Start address Low A of DMA channel 4 */ - __IO uint16_t DMA4_A_STARTH_REG; /*!< (@ 0x50003542) Start address High A of DMA channel 4 */ - __IO uint16_t DMA4_B_STARTL_REG; /*!< (@ 0x50003544) Start address Low B of DMA channel 4 */ - __IO uint16_t DMA4_B_STARTH_REG; /*!< (@ 0x50003546) Start address High B of DMA channel 4 */ - __IO uint16_t DMA4_INT_REG; /*!< (@ 0x50003548) DMA receive interrupt register channel 4 */ - __IO uint16_t DMA4_LEN_REG; /*!< (@ 0x5000354A) DMA receive length register channel 4 */ - __IO uint16_t DMA4_CTRL_REG; /*!< (@ 0x5000354C) Control register for the DMA channel 4 */ - __IO uint16_t DMA4_IDX_REG; /*!< (@ 0x5000354E) Index value of DMA channel 4 */ - __IO uint16_t DMA5_A_STARTL_REG; /*!< (@ 0x50003550) Start address Low A of DMA channel 5 */ - __IO uint16_t DMA5_A_STARTH_REG; /*!< (@ 0x50003552) Start address High A of DMA channel 5 */ - __IO uint16_t DMA5_B_STARTL_REG; /*!< (@ 0x50003554) Start address Low B of DMA channel 5 */ - __IO uint16_t DMA5_B_STARTH_REG; /*!< (@ 0x50003556) Start address High B of DMA channel 5 */ - __IO uint16_t DMA5_INT_REG; /*!< (@ 0x50003558) DMA receive interrupt register channel 5 */ - __IO uint16_t DMA5_LEN_REG; /*!< (@ 0x5000355A) DMA receive length register channel 5 */ - __IO uint16_t DMA5_CTRL_REG; /*!< (@ 0x5000355C) Control register for the DMA channel 5 */ - __IO uint16_t DMA5_IDX_REG; /*!< (@ 0x5000355E) Index value of DMA channel 5 */ - __IO uint16_t DMA6_A_STARTL_REG; /*!< (@ 0x50003560) Start address Low A of DMA channel 6 */ - __IO uint16_t DMA6_A_STARTH_REG; /*!< (@ 0x50003562) Start address High A of DMA channel 6 */ - __IO uint16_t DMA6_B_STARTL_REG; /*!< (@ 0x50003564) Start address Low B of DMA channel 6 */ - __IO uint16_t DMA6_B_STARTH_REG; /*!< (@ 0x50003566) Start address High B of DMA channel 6 */ - __IO uint16_t DMA6_INT_REG; /*!< (@ 0x50003568) DMA receive interrupt register channel 6 */ - __IO uint16_t DMA6_LEN_REG; /*!< (@ 0x5000356A) DMA receive length register channel 6 */ - __IO uint16_t DMA6_CTRL_REG; /*!< (@ 0x5000356C) Control register for the DMA channel 6 */ - __IO uint16_t DMA6_IDX_REG; /*!< (@ 0x5000356E) Index value of DMA channel 6 */ - __IO uint16_t DMA7_A_STARTL_REG; /*!< (@ 0x50003570) Start address Low A of DMA channel 7 */ - __IO uint16_t DMA7_A_STARTH_REG; /*!< (@ 0x50003572) Start address High A of DMA channel 7 */ - __IO uint16_t DMA7_B_STARTL_REG; /*!< (@ 0x50003574) Start address Low B of DMA channel 7 */ - __IO uint16_t DMA7_B_STARTH_REG; /*!< (@ 0x50003576) Start address High B of DMA channel 7 */ - __IO uint16_t DMA7_INT_REG; /*!< (@ 0x50003578) DMA receive interrupt register channel 7 */ - __IO uint16_t DMA7_LEN_REG; /*!< (@ 0x5000357A) DMA receive length register channel 7 */ - __IO uint16_t DMA7_CTRL_REG; /*!< (@ 0x5000357C) Control register for the DMA channel 7 */ - __IO uint16_t DMA7_IDX_REG; /*!< (@ 0x5000357E) Index value of DMA channel 7 */ - __IO uint16_t DMA_REQ_MUX_REG; /*!< (@ 0x50003580) DMA channel assignments */ - __IO uint16_t DMA_INT_STATUS_REG; /*!< (@ 0x50003582) DMA interrupt status register */ - __IO uint16_t DMA_CLEAR_INT_REG; /*!< (@ 0x50003584) DMA clear interrupt register */ -} DMA_Type; - - -/* ================================================================================ */ -/* ================ ECC ================ */ -/* ================================================================================ */ - - -/** - * @brief ECC registers (ECC) - */ - -typedef struct { /*!< (@ 0x50006000) ECC Structure */ - __IO uint32_t ECC_CONFIG_REG; /*!< (@ 0x50006000) Configuration register */ - __IO uint32_t ECC_COMMAND_REG; /*!< (@ 0x50006004) Command register */ - __IO uint32_t ECC_CONTROL_REG; /*!< (@ 0x50006008) Control register */ - __IO uint32_t ECC_STATUS_REG; /*!< (@ 0x5000600C) Status register */ - __IO uint32_t ECC_VERSION_REG; /*!< (@ 0x50006010) Version register */ -} ECC_Type; - - -/* ================================================================================ */ -/* ================ FTDF ================ */ -/* ================================================================================ */ - - -/** - * @brief FTDF registers (FTDF) - */ - -typedef struct { /*!< (@ 0x40080000) FTDF Structure */ - __IO uint32_t FTDF_TX_FIFO_0_0_REG; /*!< (@ 0x40080000) Address transmit fifo 0 */ - __I uint32_t RESERVED[31]; - __IO uint32_t FTDF_TX_FIFO_1_0_REG; /*!< (@ 0x40080080) Address transmit fifo 1 */ - __I uint32_t RESERVED1[31]; - __IO uint32_t FTDF_TX_FIFO_2_0_REG; /*!< (@ 0x40080100) Address transmit fifo 2 */ - __I uint32_t RESERVED2[31]; - __IO uint32_t FTDF_TX_FIFO_3_0_REG; /*!< (@ 0x40080180) Address transmit fifo 3 */ - __I uint32_t RESERVED3[31]; - __IO uint32_t FTDF_TX_META_DATA_0_0_REG; /*!< (@ 0x40080200) Transmit metadata register 0 */ - __IO uint32_t FTDF_TX_META_DATA_1_0_REG; /*!< (@ 0x40080204) Transmit metadata register 0 */ - __I uint32_t RESERVED4[2]; - __IO uint32_t FTDF_TX_META_DATA_0_1_REG; /*!< (@ 0x40080210) Transmit metadata register 1 */ - __IO uint32_t FTDF_TX_META_DATA_1_1_REG; /*!< (@ 0x40080214) Transmit metadata register 1 */ - __I uint32_t RESERVED5[2]; - __IO uint32_t FTDF_TX_META_DATA_0_2_REG; /*!< (@ 0x40080220) Transmit metadata register 2 */ - __IO uint32_t FTDF_TX_META_DATA_1_2_REG; /*!< (@ 0x40080224) Transmit metadata register 2 */ - __I uint32_t RESERVED6[2]; - __IO uint32_t FTDF_TX_META_DATA_0_3_REG; /*!< (@ 0x40080230) Transmit metadata register 3 */ - __IO uint32_t FTDF_TX_META_DATA_1_3_REG; /*!< (@ 0x40080234) Transmit metadata register 3 */ - __I uint32_t RESERVED7[2]; - __IO uint32_t FTDF_TX_RETURN_STATUS_0_0_REG; /*!< (@ 0x40080240) Transmit status register 0 */ - __IO uint32_t FTDF_TX_RETURN_STATUS_1_0_REG; /*!< (@ 0x40080244) Transmit status register 0 */ - __I uint32_t RESERVED8[2]; - __IO uint32_t FTDF_TX_RETURN_STATUS_0_1_REG; /*!< (@ 0x40080250) Transmit status register 1 */ - __IO uint32_t FTDF_TX_RETURN_STATUS_1_1_REG; /*!< (@ 0x40080254) Transmit status register 1 */ - __I uint32_t RESERVED9[2]; - __IO uint32_t FTDF_TX_RETURN_STATUS_0_2_REG; /*!< (@ 0x40080260) Transmit status register 2 */ - __IO uint32_t FTDF_TX_RETURN_STATUS_1_2_REG; /*!< (@ 0x40080264) Transmit status register 2 */ - __I uint32_t RESERVED10[2]; - __IO uint32_t FTDF_TX_RETURN_STATUS_0_3_REG; /*!< (@ 0x40080270) Transmit status register 3 */ - __IO uint32_t FTDF_TX_RETURN_STATUS_1_3_REG; /*!< (@ 0x40080274) Transmit status register 3 */ - __I uint32_t RESERVED11[2]; - __IO uint32_t FTDF_RX_META_0_0_REG; /*!< (@ 0x40080280) Receive metadata register 0 */ - __IO uint32_t FTDF_RX_META_1_0_REG; /*!< (@ 0x40080284) Receive metadata register 0 */ - __I uint32_t RESERVED12[2]; - __IO uint32_t FTDF_RX_META_0_1_REG; /*!< (@ 0x40080290) Receive metadata register 1 */ - __IO uint32_t FTDF_RX_META_1_1_REG; /*!< (@ 0x40080294) Receive metadata register 1 */ - __I uint32_t RESERVED13[2]; - __IO uint32_t FTDF_RX_META_0_2_REG; /*!< (@ 0x400802A0) Receive metadata register 2 */ - __IO uint32_t FTDF_RX_META_1_2_REG; /*!< (@ 0x400802A4) Receive metadata register 2 */ - __I uint32_t RESERVED14[2]; - __IO uint32_t FTDF_RX_META_0_3_REG; /*!< (@ 0x400802B0) Receive metadata register 3 */ - __IO uint32_t FTDF_RX_META_1_3_REG; /*!< (@ 0x400802B4) Receive metadata register 3 */ - __I uint32_t RESERVED15[2]; - __IO uint32_t FTDF_RX_META_0_4_REG; /*!< (@ 0x400802C0) Receive metadata register 4 */ - __IO uint32_t FTDF_RX_META_1_4_REG; /*!< (@ 0x400802C4) Receive metadata register 4 */ - __I uint32_t RESERVED16[2]; - __IO uint32_t FTDF_RX_META_0_5_REG; /*!< (@ 0x400802D0) Receive metadata register 5 */ - __IO uint32_t FTDF_RX_META_1_5_REG; /*!< (@ 0x400802D4) Receive metadata register 5 */ - __I uint32_t RESERVED17[2]; - __IO uint32_t FTDF_RX_META_0_6_REG; /*!< (@ 0x400802E0) Receive metadata register 6 */ - __IO uint32_t FTDF_RX_META_1_6_REG; /*!< (@ 0x400802E4) Receive metadata register 6 */ - __I uint32_t RESERVED18[2]; - __IO uint32_t FTDF_RX_META_0_7_REG; /*!< (@ 0x400802F0) Receive metadata register 7 */ - __IO uint32_t FTDF_RX_META_1_7_REG; /*!< (@ 0x400802F4) Receive metadata register 7 */ - __I uint32_t RESERVED19[8002]; - __IO uint32_t FTDF_RX_FIFO_0_0_REG; /*!< (@ 0x40088000) Address receive fifo 0 */ - __I uint32_t RESERVED20[31]; - __IO uint32_t FTDF_RX_FIFO_1_0_REG; /*!< (@ 0x40088080) Address transmit fifo 1 */ - __I uint32_t RESERVED21[31]; - __IO uint32_t FTDF_RX_FIFO_2_0_REG; /*!< (@ 0x40088100) Address transmit fifo 2 */ - __I uint32_t RESERVED22[31]; - __IO uint32_t FTDF_RX_FIFO_3_0_REG; /*!< (@ 0x40088180) Address transmit fifo 3 */ - __I uint32_t RESERVED23[31]; - __IO uint32_t FTDF_RX_FIFO_4_0_REG; /*!< (@ 0x40088200) Address transmit fifo 4 */ - __I uint32_t RESERVED24[31]; - __IO uint32_t FTDF_RX_FIFO_5_0_REG; /*!< (@ 0x40088280) Address transmit fifo 5 */ - __I uint32_t RESERVED25[31]; - __IO uint32_t FTDF_RX_FIFO_6_0_REG; /*!< (@ 0x40088300) Address transmit fifo 6 */ - __I uint32_t RESERVED26[31]; - __IO uint32_t FTDF_RX_FIFO_7_0_REG; /*!< (@ 0x40088380) Address transmit fifo 7 */ - __I uint32_t RESERVED27[7967]; - __IO uint32_t FTDF_REL_NAME_0_REG; /*!< (@ 0x40090000) Name of the release */ - __IO uint32_t FTDF_REL_NAME_1_REG; /*!< (@ 0x40090004) Name of the release */ - __IO uint32_t FTDF_REL_NAME_2_REG; /*!< (@ 0x40090008) Name of the release */ - __IO uint32_t FTDF_REL_NAME_3_REG; /*!< (@ 0x4009000C) Name of the release */ - __IO uint32_t FTDF_BUILDTIME_0_REG; /*!< (@ 0x40090010) Build time */ - __IO uint32_t FTDF_BUILDTIME_1_REG; /*!< (@ 0x40090014) Build time */ - __IO uint32_t FTDF_BUILDTIME_2_REG; /*!< (@ 0x40090018) Build time */ - __IO uint32_t FTDF_BUILDTIME_3_REG; /*!< (@ 0x4009001C) Build time */ - __IO uint32_t FTDF_GLOB_CONTROL_0_REG; /*!< (@ 0x40090020) Global control register */ - __IO uint32_t FTDF_GLOB_CONTROL_1_REG; /*!< (@ 0x40090024) Global control register */ - __IO uint32_t FTDF_GLOB_CONTROL_2_REG; /*!< (@ 0x40090028) Global control register */ - __IO uint32_t FTDF_GLOB_CONTROL_3_REG; /*!< (@ 0x4009002C) Global control register */ - __IO uint32_t FTDF_LMAC_CONTROL_0_REG; /*!< (@ 0x40090030) Lmac control register */ - __IO uint32_t FTDF_TXPIPEPROPDELAY_REG; /*!< (@ 0x40090034) Prop delay transmit register */ - __IO uint32_t FTDF_MACACKWAITDURATION_REG; /*!< (@ 0x40090038) Maximum time to wait for a ACK */ - __IO uint32_t FTDF_MACENHACKWAITDURATION_REG; /*!< (@ 0x4009003C) Maximum time to wait for an enhanced ACK frame */ - __IO uint32_t FTDF_LMAC_CONTROL_1_REG; /*!< (@ 0x40090040) Lmac control register */ - __IO uint32_t FTDF_LMAC_CONTROL_2_REG; /*!< (@ 0x40090044) Lmac control register */ - __IO uint32_t FTDF_LMAC_CONTROL_3_REG; /*!< (@ 0x40090048) Lmac control register */ - __I uint32_t RESERVED28; - __IO uint32_t FTDF_LMAC_CONTROL_OS_REG; /*!< (@ 0x40090050) Lmac control register */ - __IO uint32_t FTDF_LMAC_CONTROL_STATUS_REG; /*!< (@ 0x40090054) Lmac status register */ - __IO uint32_t FTDF_EVENTCURRVAL_REG; /*!< (@ 0x40090058) Value of event generator */ - __IO uint32_t FTDF_TIMESTAMPCURRVAL_REG; /*!< (@ 0x4009005C) Value of timestamp generator */ - __IO uint32_t FTDF_LMAC_CONTROL_4_REG; /*!< (@ 0x40090060) Lmac control register */ - __IO uint32_t FTDF_LMAC_CONTROL_5_REG; /*!< (@ 0x40090064) Lmac control register */ - __IO uint32_t FTDF_LMAC_CONTROL_6_REG; /*!< (@ 0x40090068) Lmac control register */ - __IO uint32_t FTDF_LMAC_CONTROL_11_REG; /*!< (@ 0x4009006C) Lmac control register */ - __IO uint32_t FTDF_LMAC_CONTROL_DELTA_REG; /*!< (@ 0x40090070) Lmac delta control register */ - __IO uint32_t FTDF_TIMESTAMPCURRPHASEVAL_REG; /*!< (@ 0x40090074) Value of timestamp generator phase within a symbol */ - __IO uint32_t FTDF_MACTSTXACKDELAYVAL_REG; /*!< (@ 0x40090078) Time left until next ACK is sent (us) */ - __I uint32_t RESERVED29; - __IO uint32_t FTDF_LMAC_CONTROL_MASK_REG; /*!< (@ 0x40090080) Lmac mask control register */ - __I uint32_t RESERVED30[3]; - __IO uint32_t FTDF_LMAC_EVENT_REG; /*!< (@ 0x40090090) Lmac event regsiter */ - __IO uint32_t FTDF_LMAC_MASK_REG; /*!< (@ 0x40090094) Lmac mask register */ - __I uint32_t RESERVED31[2]; - __IO uint32_t FTDF_LMAC_MANUAL_1_REG; /*!< (@ 0x400900A0) Lmax manual PHY register */ - __IO uint32_t FTDF_LMAC_MANUAL_OS_REG; /*!< (@ 0x400900A4) One shot register triggers transmission in manual - mode */ - __IO uint32_t FTDF_LMAC_MANUAL_STATUS_REG; /*!< (@ 0x400900A8) Lmac status register in manual mode */ - __I uint32_t RESERVED32[21]; - __IO uint32_t FTDF_LMAC_CONTROL_7_REG; /*!< (@ 0x40090100) Lmac control register */ - __IO uint32_t FTDF_LMAC_CONTROL_8_REG; /*!< (@ 0x40090104) Lmac control register */ - __IO uint32_t FTDF_LMAC_CONTROL_9_REG; /*!< (@ 0x40090108) Lmac control register */ - __IO uint32_t FTDF_LMAC_CONTROL_10_REG; /*!< (@ 0x4009010C) Lmac control register */ - __IO uint32_t FTDF_SECURITY_0_REG; /*!< (@ 0x40090110) Security register */ - __IO uint32_t FTDF_SECURITY_1_REG; /*!< (@ 0x40090114) Security register */ - __IO uint32_t FTDF_SECKEY_0_REG; /*!< (@ 0x40090118) Seckey register */ - __IO uint32_t FTDF_SECKEY_1_REG; /*!< (@ 0x4009011C) Seckey register */ - __IO uint32_t FTDF_SECKEY_2_REG; /*!< (@ 0x40090120) SecKey register */ - __IO uint32_t FTDF_SECKEY_3_REG; /*!< (@ 0x40090124) Seckey register */ - __IO uint32_t FTDF_SECNONCE_0_REG; /*!< (@ 0x40090128) Nonce register used for encryption/decryption */ - __IO uint32_t FTDF_SECNONCE_1_REG; /*!< (@ 0x4009012C) Nonce register used for encryption/decryption */ - __IO uint32_t FTDF_SECNONCE_2_REG; /*!< (@ 0x40090130) Nonce register used for encryption/decryption */ - __IO uint32_t FTDF_SECNONCE_3_REG; /*!< (@ 0x40090134) Nonce register used for encryption/decryption */ - __IO uint32_t FTDF_SECURITY_OS_REG; /*!< (@ 0x40090138) One shot register to start encryption/decryption */ - __I uint32_t RESERVED33; - __IO uint32_t FTDF_SECURITY_STATUS_REG; /*!< (@ 0x40090140) Security status register */ - __I uint32_t RESERVED34[3]; - __IO uint32_t FTDF_SECURITY_EVENT_REG; /*!< (@ 0x40090150) security event register */ - __IO uint32_t FTDF_SECURITY_EVENTMASK_REG; /*!< (@ 0x40090154) security event mask register */ - __I uint32_t RESERVED35[2]; - __IO uint32_t FTDF_TSCH_CONTROL_0_REG; /*!< (@ 0x40090160) Lmac tsch control register */ - __IO uint32_t FTDF_TSCH_CONTROL_1_REG; /*!< (@ 0x40090164) Lmac tsch control register */ - __IO uint32_t FTDF_TSCH_CONTROL_2_REG; /*!< (@ 0x40090168) Lmac tsch control register */ - __I uint32_t RESERVED36[5]; - __IO uint32_t FTDF_PHY_PARAMETERS_0_REG; /*!< (@ 0x40090180) Lmac PHY parameter register */ - __IO uint32_t FTDF_PHY_PARAMETERS_1_REG; /*!< (@ 0x40090184) Lmac PHY parameter register */ - __IO uint32_t FTDF_PHY_PARAMETERS_2_REG; /*!< (@ 0x40090188) Lmac PHY parameter register */ - __IO uint32_t FTDF_PHY_PARAMETERS_3_REG; /*!< (@ 0x4009018C) Lmac PHY parameter register */ - __I uint32_t RESERVED37[28]; - __IO uint32_t FTDF_RX_CONTROL_0_REG; /*!< (@ 0x40090200) Receive control register */ - __IO uint32_t FTDF_RX_EVENT_REG; /*!< (@ 0x40090204) Receive event register */ - __IO uint32_t FTDF_RX_MASK_REG; /*!< (@ 0x40090208) Receive event mask register */ - __IO uint32_t FTDF_RX_STATUS_REG; /*!< (@ 0x4009020C) Receive status register */ - __IO uint32_t FTDF_SYMBOLTIMESNAPSHOTVAL_REG; /*!< (@ 0x40090210) Value timestamp generator */ - __I uint32_t RESERVED38[3]; - __IO uint32_t FTDF_RX_STATUS_DELTA_REG; /*!< (@ 0x40090220) Receive status delta register */ - __IO uint32_t FTDF_RX_STATUS_MASK_REG; /*!< (@ 0x40090224) Receive status delta mask register */ - __I uint32_t RESERVED39[6]; - __IO uint32_t FTDF_TX_CONTROL_0_REG; /*!< (@ 0x40090240) Transmit control register */ - __I uint32_t RESERVED40[3]; - __IO uint32_t FTDF_FTDF_CE_REG; /*!< (@ 0x40090250) Selection register events */ - __IO uint32_t FTDF_FTDF_CM_REG; /*!< (@ 0x40090254) Mask selection register events */ - __I uint32_t RESERVED41[43]; - __IO uint32_t FTDF_SYNCTIMESTAMPTHR_REG; /*!< (@ 0x40090304) Threshold timestamp generator */ - __IO uint32_t FTDF_SYNCTIMESTAMPVAL_REG; /*!< (@ 0x40090308) Value timestamp generator */ - __IO uint32_t FTDF_TIMER_CONTROL_1_REG; /*!< (@ 0x4009030C) Timer control register */ - __IO uint32_t FTDF_MACTXSTDACKFRMCNT_REG; /*!< (@ 0x40090310) Transmitted acknowledgment frames */ - __IO uint32_t FTDF_MACRXSTDACKFRMOKCNT_REG; /*!< (@ 0x40090314) Received acknowledgment frames */ - __IO uint32_t FTDF_MACRXADDRFAILFRMCNT_REG; /*!< (@ 0x40090318) Discarded frames register */ - __IO uint32_t FTDF_MACRXUNSUPFRMCNT_REG; /*!< (@ 0x4009031C) Unsupported frames register */ - __IO uint32_t FTDF_SYNCTIMESTAMPPHASEVAL_REG; /*!< (@ 0x40090320) Timestamp phase value regsiter */ - __I uint32_t RESERVED42[7]; - __IO uint32_t FTDF_MACFCSERRORCOUNT_REG; /*!< (@ 0x40090340) Lmac FCS error register */ - __I uint32_t RESERVED43[7]; - __IO uint32_t FTDF_LMACRESET_REG; /*!< (@ 0x40090360) Lmax reset register */ - __IO uint32_t FTDF_WAKEUP_CONTROL_OS_REG; /*!< (@ 0x40090364) FTDF_WAKEUP_CONTROL_OS_REG */ - __I uint32_t RESERVED44[6]; - __IO uint32_t FTDF_SYMBOLTIMETHR_REG; /*!< (@ 0x40090380) Symboltime threshold register 1 */ - __IO uint32_t FTDF_SYMBOLTIME2THR_REG; /*!< (@ 0x40090384) Symboltime threshold register 2 */ - __I uint32_t RESERVED45[2]; - __IO uint32_t FTDF_DEBUGCONTROL_REG; /*!< (@ 0x40090390) Debug control register */ - __IO uint32_t FTDF_TXBYTE_E_REG; /*!< (@ 0x40090394) Transmit first byte register */ - __IO uint32_t FTDF_TXBYTE_M_REG; /*!< (@ 0x40090398) Transmit first byte mask register */ - __I uint32_t RESERVED46[25]; - __IO uint32_t FTDF_TX_FLAG_S_0_REG; /*!< (@ 0x40090400) Transmit packet ready for transmission register - 0 */ - __IO uint32_t FTDF_TX_FLAG_CLEAR_E_0_REG; /*!< (@ 0x40090404) Clear flag register 0 */ - __IO uint32_t FTDF_TX_FLAG_CLEAR_M_0_REG; /*!< (@ 0x40090408) Mask flag register 0 */ - __I uint32_t RESERVED47; - __IO uint32_t FTDF_TX_PRIORITY_0_REG; /*!< (@ 0x40090410) Transmit priority register 0 */ - __I uint32_t RESERVED48[3]; - __IO uint32_t FTDF_TX_FLAG_S_1_REG; /*!< (@ 0x40090420) Transmit packet ready for transmission register - 1 */ - __IO uint32_t FTDF_TX_FLAG_CLEAR_E_1_REG; /*!< (@ 0x40090424) Clear flag register 1 */ - __IO uint32_t FTDF_TX_FLAG_CLEAR_M_1_REG; /*!< (@ 0x40090428) Mask flag register 1 */ - __I uint32_t RESERVED49; - __IO uint32_t FTDF_TX_PRIORITY_1_REG; /*!< (@ 0x40090430) Transmit priority register 1 */ - __I uint32_t RESERVED50[3]; - __IO uint32_t FTDF_TX_FLAG_S_2_REG; /*!< (@ 0x40090440) Transmit packet ready for transmission register - 2 */ - __IO uint32_t FTDF_TX_FLAG_CLEAR_E_2_REG; /*!< (@ 0x40090444) Clear flag register 2 */ - __IO uint32_t FTDF_TX_FLAG_CLEAR_M_2_REG; /*!< (@ 0x40090448) Clear flag register 2 */ - __I uint32_t RESERVED51; - __IO uint32_t FTDF_TX_PRIORITY_2_REG; /*!< (@ 0x40090450) Transmit priority register 2 */ - __I uint32_t RESERVED52[3]; - __IO uint32_t FTDF_TX_FLAG_S_3_REG; /*!< (@ 0x40090460) Transmit packet ready for transmission register - 3 */ - __IO uint32_t FTDF_TX_FLAG_CLEAR_E_3_REG; /*!< (@ 0x40090464) Clear flag register 3 */ - __IO uint32_t FTDF_TX_FLAG_CLEAR_M_3_REG; /*!< (@ 0x40090468) Clear flag register 3 */ - __I uint32_t RESERVED53; - __IO uint32_t FTDF_TX_PRIORITY_3_REG; /*!< (@ 0x40090470) Transmit priority register 3 */ - __I uint32_t RESERVED54[3]; - __IO uint32_t FTDF_TX_SET_OS_REG; /*!< (@ 0x40090480) One shot register to set flag */ - __IO uint32_t FTDF_TX_CLEAR_OS_REG; /*!< (@ 0x40090484) One shot register to clear flag */ - __I uint32_t RESERVED55[734]; - __IO uint32_t FTDF_WAKEUP_CONTROL_REG; /*!< (@ 0x40091000) Wakeup timer vcontrol register */ - __I uint32_t RESERVED56[1023]; - __IO uint32_t FTDF_LONG_ADDR_0_0_REG; /*!< (@ 0x40092000) FTDF_LONG_ADDR_0_0_REG */ - __IO uint32_t FTDF_LONG_ADDR_1_0_REG; /*!< (@ 0x40092004) FTDF_LONG_ADDR_1_0_REG */ - __IO uint32_t FTDF_SIZE_AND_VAL_0_REG; /*!< (@ 0x40092008) FTDF_SIZE_AND_VAL_0_REG */ -} FTDF_Type; - - -/* ================================================================================ */ -/* ================ GP_TIMERS ================ */ -/* ================================================================================ */ - - -/** - * @brief GP_TIMERS registers (GP_TIMERS) - */ - -typedef struct { /*!< (@ 0x50003400) GP_TIMERS Structure */ - __IO uint16_t TIMER0_CTRL_REG; /*!< (@ 0x50003400) Timer0 control register */ - __IO uint16_t TIMER0_ON_REG; /*!< (@ 0x50003402) Timer0 on control register */ - __IO uint16_t TIMER0_RELOAD_M_REG; /*!< (@ 0x50003404) 16 bits reload value for Timer0 */ - __IO uint16_t TIMER0_RELOAD_N_REG; /*!< (@ 0x50003406) 16 bits reload value for Timer0 */ - __IO uint16_t PWM2_START_CYCLE; /*!< (@ 0x50003408) Defines start Cycle for PWM2 */ - __IO uint16_t PWM3_START_CYCLE; /*!< (@ 0x5000340A) Defines start Cycle for PWM3 */ - __IO uint16_t PWM4_START_CYCLE; /*!< (@ 0x5000340C) Defines start Cycle for PWM4 */ - __IO uint16_t PWM2_END_CYCLE; /*!< (@ 0x5000340E) Defines end Cycle for PWM2 */ - __IO uint16_t PWM3_END_CYCLE; /*!< (@ 0x50003410) Defines end Cycle for PWM3 */ - __IO uint16_t PWM4_END_CYCLE; /*!< (@ 0x50003412) Defines end Cycle for PWM4 */ - __IO uint16_t TRIPLE_PWM_FREQUENCY; /*!< (@ 0x50003414) Defines the PMW2,3,4 frequency */ - __IO uint16_t TRIPLE_PWM_CTRL_REG; /*!< (@ 0x50003416) PWM 2 3 4 Control register */ - __IO uint16_t BREATH_CFG_REG; /*!< (@ 0x50003418) Breath configuration register */ - __IO uint16_t BREATH_DUTY_MAX_REG; /*!< (@ 0x5000341A) Breath max duty cycle register */ - __IO uint16_t BREATH_DUTY_MIN_REG; /*!< (@ 0x5000341C) Breath min duty cycle register */ - __IO uint16_t BREATH_CTRL_REG; /*!< (@ 0x5000341E) Breath control register */ -} GP_TIMERS_Type; - - -/* ================================================================================ */ -/* ================ GPADC ================ */ -/* ================================================================================ */ - - -/** - * @brief GPADC registers (GPADC) - */ - -typedef struct { /*!< (@ 0x50001900) GPADC Structure */ - __IO uint16_t GP_ADC_CTRL_REG; /*!< (@ 0x50001900) General Purpose ADC Control Register */ - __IO uint16_t GP_ADC_CTRL2_REG; /*!< (@ 0x50001902) General Purpose ADC Second Control Register */ - __IO uint16_t GP_ADC_CTRL3_REG; /*!< (@ 0x50001904) General Purpose ADC Third Control Register */ - __IO uint16_t GP_ADC_OFFP_REG; /*!< (@ 0x50001906) General Purpose ADC Positive Offset Register */ - __IO uint16_t GP_ADC_OFFN_REG; /*!< (@ 0x50001908) General Purpose ADC Negative Offset Register */ - __IO uint16_t GP_ADC_CLEAR_INT_REG; /*!< (@ 0x5000190A) General Purpose ADC Clear Interrupt Register */ - __IO uint16_t GP_ADC_RESULT_REG; /*!< (@ 0x5000190C) General Purpose ADC Result Register */ -} GPADC_Type; - - -/* ================================================================================ */ -/* ================ GPIO ================ */ -/* ================================================================================ */ - - -/** - * @brief GPIO registers (GPIO) - */ - -typedef struct { /*!< (@ 0x50003000) GPIO Structure */ - __IO uint16_t P0_DATA_REG; /*!< (@ 0x50003000) P0 Data input / output Register */ - __IO uint16_t P1_DATA_REG; /*!< (@ 0x50003002) P1 Data input / output Register */ - __IO uint16_t P2_DATA_REG; /*!< (@ 0x50003004) P2 Data input / output Register */ - __IO uint16_t P3_DATA_REG; /*!< (@ 0x50003006) P3 Data input / output Register */ - __IO uint16_t P4_DATA_REG; /*!< (@ 0x50003008) P4 Data input / output Register */ - __IO uint16_t P0_SET_DATA_REG; /*!< (@ 0x5000300A) P0 Set port pins Register */ - __IO uint16_t P1_SET_DATA_REG; /*!< (@ 0x5000300C) P1 Set port pins Register */ - __IO uint16_t P2_SET_DATA_REG; /*!< (@ 0x5000300E) P2 Set port pins Register */ - __IO uint16_t P3_SET_DATA_REG; /*!< (@ 0x50003010) P3 Set port pins Register */ - __IO uint16_t P4_SET_DATA_REG; /*!< (@ 0x50003012) P4 Set port pins Register */ - __IO uint16_t P0_RESET_DATA_REG; /*!< (@ 0x50003014) P0 Reset port pins Register */ - __IO uint16_t P1_RESET_DATA_REG; /*!< (@ 0x50003016) P1 Reset port pins Register */ - __IO uint16_t P2_RESET_DATA_REG; /*!< (@ 0x50003018) P2 Reset port pins Register */ - __IO uint16_t P3_RESET_DATA_REG; /*!< (@ 0x5000301A) P3 Reset port pins Register */ - __IO uint16_t P4_RESET_DATA_REG; /*!< (@ 0x5000301C) P4 Reset port pins Register */ - __IO uint16_t P00_MODE_REG; /*!< (@ 0x5000301E) P00 Mode Register */ - __IO uint16_t P01_MODE_REG; /*!< (@ 0x50003020) P01 Mode Register */ - __IO uint16_t P02_MODE_REG; /*!< (@ 0x50003022) P02 Mode Register */ - __IO uint16_t P03_MODE_REG; /*!< (@ 0x50003024) P03 Mode Register */ - __IO uint16_t P04_MODE_REG; /*!< (@ 0x50003026) P04 Mode Register */ - __IO uint16_t P05_MODE_REG; /*!< (@ 0x50003028) P05 Mode Register */ - __IO uint16_t P06_MODE_REG; /*!< (@ 0x5000302A) P06 Mode Register */ - __IO uint16_t P07_MODE_REG; /*!< (@ 0x5000302C) P07 Mode Register */ - __IO uint16_t P10_MODE_REG; /*!< (@ 0x5000302E) P10 Mode Register */ - __IO uint16_t P11_MODE_REG; /*!< (@ 0x50003030) P11 Mode Register */ - __IO uint16_t P12_MODE_REG; /*!< (@ 0x50003032) P12 Mode Register */ - __IO uint16_t P13_MODE_REG; /*!< (@ 0x50003034) P13 Mode Register */ - __IO uint16_t P14_MODE_REG; /*!< (@ 0x50003036) P14 Mode Register */ - __IO uint16_t P15_MODE_REG; /*!< (@ 0x50003038) P15 Mode Register */ - __IO uint16_t P16_MODE_REG; /*!< (@ 0x5000303A) P24 Mode Register */ - __IO uint16_t P17_MODE_REG; /*!< (@ 0x5000303C) P25 Mode Register */ - __IO uint16_t P20_MODE_REG; /*!< (@ 0x5000303E) P20 Mode Register */ - __IO uint16_t P21_MODE_REG; /*!< (@ 0x50003040) P21 Mode Register */ - __IO uint16_t P22_MODE_REG; /*!< (@ 0x50003042) P22 Mode Register */ - __IO uint16_t P23_MODE_REG; /*!< (@ 0x50003044) P23 Mode Register */ - __IO uint16_t P24_MODE_REG; /*!< (@ 0x50003046) P24 Mode Register */ - __I uint16_t RESERVED[3]; - __IO uint16_t P30_MODE_REG; /*!< (@ 0x5000304E) P30 Mode Register */ - __IO uint16_t P31_MODE_REG; /*!< (@ 0x50003050) P31 Mode Register */ - __IO uint16_t P32_MODE_REG; /*!< (@ 0x50003052) P32 Mode Register */ - __IO uint16_t P33_MODE_REG; /*!< (@ 0x50003054) P33 Mode Register */ - __IO uint16_t P34_MODE_REG; /*!< (@ 0x50003056) P34 Mode Register */ - __IO uint16_t P35_MODE_REG; /*!< (@ 0x50003058) P35 Mode Register */ - __IO uint16_t P36_MODE_REG; /*!< (@ 0x5000305A) P36 Mode Register */ - __IO uint16_t P37_MODE_REG; /*!< (@ 0x5000305C) P37 Mode Register */ - __IO uint16_t P40_MODE_REG; /*!< (@ 0x5000305E) P40 Mode Register */ - __IO uint16_t P41_MODE_REG; /*!< (@ 0x50003060) P41 Mode Register */ - __IO uint16_t P42_MODE_REG; /*!< (@ 0x50003062) P42 Mode Register */ - __IO uint16_t P43_MODE_REG; /*!< (@ 0x50003064) P43 Mode Register */ - __IO uint16_t P44_MODE_REG; /*!< (@ 0x50003066) P44 Mode Register */ - __IO uint16_t P45_MODE_REG; /*!< (@ 0x50003068) P45 Mode Register */ - __IO uint16_t P46_MODE_REG; /*!< (@ 0x5000306A) P46 Mode Register */ - __IO uint16_t P47_MODE_REG; /*!< (@ 0x5000306C) P47 Mode Register */ - __I uint16_t RESERVED1[41]; - __IO uint16_t P0_PADPWR_CTRL_REG; /*!< (@ 0x500030C0) P0 Output Power Control Register */ - __IO uint16_t P1_PADPWR_CTRL_REG; /*!< (@ 0x500030C2) P1 Output Power Control Register */ - __IO uint16_t P2_PADPWR_CTRL_REG; /*!< (@ 0x500030C4) P2 Output Power Control Register */ - __IO uint16_t P3_PADPWR_CTRL_REG; /*!< (@ 0x500030C6) P3 Output Power Control Register */ - __IO uint16_t P4_PADPWR_CTRL_REG; /*!< (@ 0x500030C8) P4 Output Power Control Register */ - __I uint16_t RESERVED2[3]; - __IO uint16_t GPIO_CLK_SEL; /*!< (@ 0x500030D0) Select which clock to map on port in PPA */ - __I uint16_t RESERVED3[7]; - __IO uint16_t BIST_CTRL_REG; /*!< (@ 0x500030E0) BIST_CTRL_REG */ - __IO uint16_t RAMBIST_STATUS1_REG; /*!< (@ 0x500030E2) RAMBIST_STATUS1_REG */ - __IO uint16_t RAMBIST_STATUS2_REG; /*!< (@ 0x500030E4) RAMBIST_STATUS2_REG */ - __IO uint16_t RAMBIST_STATUS3_REG; /*!< (@ 0x500030E6) RAMBIST_STATUS3_REG */ - __IO uint16_t ROMBIST_RESULTL_REG; /*!< (@ 0x500030E8) ROMBIST_RESULTL_REG */ - __IO uint16_t ROMBIST_RESULTH_REG; /*!< (@ 0x500030EA) ROMBIST_RESULTH_REG */ - __I uint32_t RESERVED4; - __IO uint16_t TEST_CTRL_REG; /*!< (@ 0x500030F0) TEST_CTRL_REG */ - __IO uint16_t TEST_CTRL2_REG; /*!< (@ 0x500030F2) TEST_CTRL2_REG */ - __IO uint16_t TEST_CTRL3_REG; /*!< (@ 0x500030F4) TEST_CTRL3_REG */ - __IO uint16_t TEST_CTRL4_REG; /*!< (@ 0x500030F6) TEST_CTRL4_REG */ - __IO uint16_t TEST_CTRL5_REG; /*!< (@ 0x500030F8) TEST_CTRL5_REG */ -} GPIO_Type; - - -/* ================================================================================ */ -/* ================ GPREG ================ */ -/* ================================================================================ */ - - -/** - * @brief GPREG registers (GPREG) - */ - -typedef struct { /*!< (@ 0x50003300) GPREG Structure */ - __IO uint16_t SET_FREEZE_REG; /*!< (@ 0x50003300) Controls freezing of various timers/counters - (incl. DMA and USB). */ - __IO uint16_t RESET_FREEZE_REG; /*!< (@ 0x50003302) Controls unfreezing of various timers/counters - (incl. DMA and USB). */ - __IO uint16_t DEBUG_REG; /*!< (@ 0x50003304) Various debug information register. */ - __IO uint16_t GP_STATUS_REG; /*!< (@ 0x50003306) General purpose system status register. */ - __IO uint16_t GP_CONTROL_REG; /*!< (@ 0x50003308) General purpose system control register. */ - __IO uint16_t ECC_BASE_ADDR_REG; /*!< (@ 0x5000330A) Base address of the ECC Crypto memory register. */ - __IO uint16_t LED_CONTROL_REG; /*!< (@ 0x5000330C) Controls muxing and enabling of the LEDs. */ - __IO uint16_t BLE_FINECNT_SAMP_REG; /*!< (@ 0x5000330E) BLE FINECNT sampled value while in deep sleep - state. */ - __IO uint16_t PLL_SYS_CTRL1_REG; /*!< (@ 0x50003310) System PLL control register 1. */ - __IO uint16_t PLL_SYS_CTRL2_REG; /*!< (@ 0x50003312) System PLL control register 2. */ - __IO uint16_t PLL_SYS_CTRL3_REG; /*!< (@ 0x50003314) System PLL control register 3. */ - __IO uint16_t PLL_SYS_STATUS_REG; /*!< (@ 0x50003316) System PLL status register. */ - __IO uint16_t PLL_SYS_TEST_REG; /*!< (@ 0x50003318) System PLL test register. */ -} GPREG_Type; - - -/* ================================================================================ */ -/* ================ I2C ================ */ -/* ================================================================================ */ - - -/** - * @brief I2C registers (I2C) - */ - -typedef struct { /*!< (@ 0x50001400) I2C Structure */ - __IO uint16_t I2C_CON_REG; /*!< (@ 0x50001400) I2C Control Register */ - __I uint16_t RESERVED; - __IO uint16_t I2C_TAR_REG; /*!< (@ 0x50001404) I2C Target Address Register */ - __I uint16_t RESERVED1; - __IO uint16_t I2C_SAR_REG; /*!< (@ 0x50001408) I2C Slave Address Register */ - __I uint16_t RESERVED2[3]; - __IO uint16_t I2C_DATA_CMD_REG; /*!< (@ 0x50001410) I2C Rx/Tx Data Buffer and Command Register */ - __I uint16_t RESERVED3; - __IO uint16_t I2C_SS_SCL_HCNT_REG; /*!< (@ 0x50001414) Standard Speed I2C Clock SCL High Count Register */ - __I uint16_t RESERVED4; - __IO uint16_t I2C_SS_SCL_LCNT_REG; /*!< (@ 0x50001418) Standard Speed I2C Clock SCL Low Count Register */ - __I uint16_t RESERVED5; - __IO uint16_t I2C_FS_SCL_HCNT_REG; /*!< (@ 0x5000141C) Fast Speed I2C Clock SCL High Count Register */ - __I uint16_t RESERVED6; - __IO uint16_t I2C_FS_SCL_LCNT_REG; /*!< (@ 0x50001420) Fast Speed I2C Clock SCL Low Count Register */ - __I uint16_t RESERVED7[5]; - __IO uint16_t I2C_INTR_STAT_REG; /*!< (@ 0x5000142C) I2C Interrupt Status Register */ - __I uint16_t RESERVED8; - __IO uint16_t I2C_INTR_MASK_REG; /*!< (@ 0x50001430) I2C Interrupt Mask Register */ - __I uint16_t RESERVED9; - __IO uint16_t I2C_RAW_INTR_STAT_REG; /*!< (@ 0x50001434) I2C Raw Interrupt Status Register */ - __I uint16_t RESERVED10; - __IO uint16_t I2C_RX_TL_REG; /*!< (@ 0x50001438) I2C Receive FIFO Threshold Register */ - __I uint16_t RESERVED11; - __IO uint16_t I2C_TX_TL_REG; /*!< (@ 0x5000143C) I2C Transmit FIFO Threshold Register */ - __I uint16_t RESERVED12; - __IO uint16_t I2C_CLR_INTR_REG; /*!< (@ 0x50001440) Clear Combined and Individual Interrupt Register */ - __I uint16_t RESERVED13; - __IO uint16_t I2C_CLR_RX_UNDER_REG; /*!< (@ 0x50001444) Clear RX_UNDER Interrupt Register */ - __I uint16_t RESERVED14; - __IO uint16_t I2C_CLR_RX_OVER_REG; /*!< (@ 0x50001448) Clear RX_OVER Interrupt Register */ - __I uint16_t RESERVED15; - __IO uint16_t I2C_CLR_TX_OVER_REG; /*!< (@ 0x5000144C) Clear TX_OVER Interrupt Register */ - __I uint16_t RESERVED16; - __IO uint16_t I2C_CLR_RD_REQ_REG; /*!< (@ 0x50001450) Clear RD_REQ Interrupt Register */ - __I uint16_t RESERVED17; - __IO uint16_t I2C_CLR_TX_ABRT_REG; /*!< (@ 0x50001454) Clear TX_ABRT Interrupt Register */ - __I uint16_t RESERVED18; - __IO uint16_t I2C_CLR_RX_DONE_REG; /*!< (@ 0x50001458) Clear RX_DONE Interrupt Register */ - __I uint16_t RESERVED19; - __IO uint16_t I2C_CLR_ACTIVITY_REG; /*!< (@ 0x5000145C) Clear ACTIVITY Interrupt Register */ - __I uint16_t RESERVED20; - __IO uint16_t I2C_CLR_STOP_DET_REG; /*!< (@ 0x50001460) Clear STOP_DET Interrupt Register */ - __I uint16_t RESERVED21; - __IO uint16_t I2C_CLR_START_DET_REG; /*!< (@ 0x50001464) Clear START_DET Interrupt Register */ - __I uint16_t RESERVED22; - __IO uint16_t I2C_CLR_GEN_CALL_REG; /*!< (@ 0x50001468) Clear GEN_CALL Interrupt Register */ - __I uint16_t RESERVED23; - __IO uint16_t I2C_ENABLE_REG; /*!< (@ 0x5000146C) I2C Enable Register */ - __I uint16_t RESERVED24; - __IO uint16_t I2C_STATUS_REG; /*!< (@ 0x50001470) I2C Status Register */ - __I uint16_t RESERVED25; - __IO uint16_t I2C_TXFLR_REG; /*!< (@ 0x50001474) I2C Transmit FIFO Level Register */ - __I uint16_t RESERVED26; - __IO uint16_t I2C_RXFLR_REG; /*!< (@ 0x50001478) I2C Receive FIFO Level Register */ - __I uint16_t RESERVED27; - __IO uint16_t I2C_SDA_HOLD_REG; /*!< (@ 0x5000147C) I2C SDA Hold Time Length Register */ - __I uint16_t RESERVED28; - __IO uint16_t I2C_TX_ABRT_SOURCE_REG; /*!< (@ 0x50001480) I2C Transmit Abort Source Register */ - __I uint16_t RESERVED29[3]; - __IO uint16_t I2C_DMA_CR_REG; /*!< (@ 0x50001488) DMA Control Register */ - __I uint16_t RESERVED30; - __IO uint16_t I2C_DMA_TDLR_REG; /*!< (@ 0x5000148C) DMA Transmit Data Level Register */ - __I uint16_t RESERVED31; - __IO uint16_t I2C_DMA_RDLR_REG; /*!< (@ 0x50001490) I2C Receive Data Level Register */ - __I uint16_t RESERVED32; - __IO uint16_t I2C_SDA_SETUP_REG; /*!< (@ 0x50001494) I2C SDA Setup Register */ - __I uint16_t RESERVED33; - __IO uint16_t I2C_ACK_GENERAL_CALL_REG; /*!< (@ 0x50001498) I2C ACK General Call Register */ - __I uint16_t RESERVED34; - __IO uint16_t I2C_ENABLE_STATUS_REG; /*!< (@ 0x5000149C) I2C Enable Status Register */ - __I uint16_t RESERVED35; - __IO uint16_t I2C_IC_FS_SPKLEN_REG; /*!< (@ 0x500014A0) I2C SS and FS spike suppression limit Size */ - __I uint16_t RESERVED36[41]; - __IO uint16_t I2C_COMP_PARAM1_REG; /*!< (@ 0x500014F4) Component Parameter Register */ - __IO uint16_t I2C_COMP_PARAM2_REG; /*!< (@ 0x500014F6) Component Parameter Register 2 */ - __IO uint16_t I2C_COMP_VERSION_REG; /*!< (@ 0x500014F8) I2C Component Version Register */ - __IO uint16_t I2C_COMP2_VERSION; /*!< (@ 0x500014FA) I2C Component2 Version Register */ - __IO uint16_t I2C_COMP_TYPE_REG; /*!< (@ 0x500014FC) I2C Component Type Register */ - __IO uint16_t I2C_COMP_TYPE2_REG; /*!< (@ 0x500014FE) I2C Component2 Type Register */ -} I2C_Type; - - -/* ================================================================================ */ -/* ================ I2C2 ================ */ -/* ================================================================================ */ - - -/** - * @brief I2C2 registers (I2C2) - */ - -typedef struct { /*!< (@ 0x50001500) I2C2 Structure */ - __IO uint16_t I2C2_CON_REG; /*!< (@ 0x50001500) I2C Control Register */ - __I uint16_t RESERVED; - __IO uint16_t I2C2_TAR_REG; /*!< (@ 0x50001504) I2C Target Address Register */ - __I uint16_t RESERVED1; - __IO uint16_t I2C2_SAR_REG; /*!< (@ 0x50001508) I2C Slave Address Register */ - __I uint16_t RESERVED2[3]; - __IO uint16_t I2C2_DATA_CMD_REG; /*!< (@ 0x50001510) I2C Rx/Tx Data Buffer and Command Register */ - __I uint16_t RESERVED3; - __IO uint16_t I2C2_SS_SCL_HCNT_REG; /*!< (@ 0x50001514) Standard Speed I2C Clock SCL High Count Register */ - __I uint16_t RESERVED4; - __IO uint16_t I2C2_SS_SCL_LCNT_REG; /*!< (@ 0x50001518) Standard Speed I2C Clock SCL Low Count Register */ - __I uint16_t RESERVED5; - __IO uint16_t I2C2_FS_SCL_HCNT_REG; /*!< (@ 0x5000151C) Fast Speed I2C Clock SCL High Count Register */ - __I uint16_t RESERVED6; - __IO uint16_t I2C2_FS_SCL_LCNT_REG; /*!< (@ 0x50001520) Fast Speed I2C Clock SCL Low Count Register */ - __I uint16_t RESERVED7[5]; - __IO uint16_t I2C2_INTR_STAT_REG; /*!< (@ 0x5000152C) I2C Interrupt Status Register */ - __I uint16_t RESERVED8; - __IO uint16_t I2C2_INTR_MASK_REG; /*!< (@ 0x50001530) I2C Interrupt Mask Register */ - __I uint16_t RESERVED9; - __IO uint16_t I2C2_RAW_INTR_STAT_REG; /*!< (@ 0x50001534) I2C Raw Interrupt Status Register */ - __I uint16_t RESERVED10; - __IO uint16_t I2C2_RX_TL_REG; /*!< (@ 0x50001538) I2C Receive FIFO Threshold Register */ - __I uint16_t RESERVED11; - __IO uint16_t I2C2_TX_TL_REG; /*!< (@ 0x5000153C) I2C Transmit FIFO Threshold Register */ - __I uint16_t RESERVED12; - __IO uint16_t I2C2_CLR_INTR_REG; /*!< (@ 0x50001540) Clear Combined and Individual Interrupt Register */ - __I uint16_t RESERVED13; - __IO uint16_t I2C2_CLR_RX_UNDER_REG; /*!< (@ 0x50001544) Clear RX_UNDER Interrupt Register */ - __I uint16_t RESERVED14; - __IO uint16_t I2C2_CLR_RX_OVER_REG; /*!< (@ 0x50001548) Clear RX_OVER Interrupt Register */ - __I uint16_t RESERVED15; - __IO uint16_t I2C2_CLR_TX_OVER_REG; /*!< (@ 0x5000154C) Clear TX_OVER Interrupt Register */ - __I uint16_t RESERVED16; - __IO uint16_t I2C2_CLR_RD_REQ_REG; /*!< (@ 0x50001550) Clear RD_REQ Interrupt Register */ - __I uint16_t RESERVED17; - __IO uint16_t I2C2_CLR_TX_ABRT_REG; /*!< (@ 0x50001554) Clear TX_ABRT Interrupt Register */ - __I uint16_t RESERVED18; - __IO uint16_t I2C2_CLR_RX_DONE_REG; /*!< (@ 0x50001558) Clear RX_DONE Interrupt Register */ - __I uint16_t RESERVED19; - __IO uint16_t I2C2_CLR_ACTIVITY_REG; /*!< (@ 0x5000155C) Clear ACTIVITY Interrupt Register */ - __I uint16_t RESERVED20; - __IO uint16_t I2C2_CLR_STOP_DET_REG; /*!< (@ 0x50001560) Clear STOP_DET Interrupt Register */ - __I uint16_t RESERVED21; - __IO uint16_t I2C2_CLR_START_DET_REG; /*!< (@ 0x50001564) Clear START_DET Interrupt Register */ - __I uint16_t RESERVED22; - __IO uint16_t I2C2_CLR_GEN_CALL_REG; /*!< (@ 0x50001568) Clear GEN_CALL Interrupt Register */ - __I uint16_t RESERVED23; - __IO uint16_t I2C2_ENABLE_REG; /*!< (@ 0x5000156C) I2C Enable Register */ - __I uint16_t RESERVED24; - __IO uint16_t I2C2_STATUS_REG; /*!< (@ 0x50001570) I2C Status Register */ - __I uint16_t RESERVED25; - __IO uint16_t I2C2_TXFLR_REG; /*!< (@ 0x50001574) I2C Transmit FIFO Level Register */ - __I uint16_t RESERVED26; - __IO uint16_t I2C2_RXFLR_REG; /*!< (@ 0x50001578) I2C Receive FIFO Level Register */ - __I uint16_t RESERVED27; - __IO uint16_t I2C2_SDA_HOLD_REG; /*!< (@ 0x5000157C) I2C SDA Hold Time Length Register */ - __I uint16_t RESERVED28; - __IO uint16_t I2C2_TX_ABRT_SOURCE_REG; /*!< (@ 0x50001580) I2C Transmit Abort Source Register */ - __I uint16_t RESERVED29[3]; - __IO uint16_t I2C2_DMA_CR_REG; /*!< (@ 0x50001588) DMA Control Register */ - __I uint16_t RESERVED30; - __IO uint16_t I2C2_DMA_TDLR_REG; /*!< (@ 0x5000158C) DMA Transmit Data Level Register */ - __I uint16_t RESERVED31; - __IO uint16_t I2C2_DMA_RDLR_REG; /*!< (@ 0x50001590) I2C Receive Data Level Register */ - __I uint16_t RESERVED32; - __IO uint16_t I2C2_SDA_SETUP_REG; /*!< (@ 0x50001594) I2C SDA Setup Register */ - __I uint16_t RESERVED33; - __IO uint16_t I2C2_ACK_GENERAL_CALL_REG; /*!< (@ 0x50001598) I2C ACK General Call Register */ - __I uint16_t RESERVED34; - __IO uint16_t I2C2_ENABLE_STATUS_REG; /*!< (@ 0x5000159C) I2C Enable Status Register */ - __I uint16_t RESERVED35; - __IO uint16_t I2C2_IC_FS_SPKLEN_REG; /*!< (@ 0x500015A0) I2C SS and FS spike suppression limit Size */ - __I uint16_t RESERVED36[41]; - __IO uint16_t I2C2_COMP_PARAM1_REG; /*!< (@ 0x500015F4) Component Parameter Register */ - __IO uint16_t I2C2_COMP_PARAM2_REG; /*!< (@ 0x500015F6) Component Parameter Register 2 */ - __IO uint16_t I2C2_COMP_VERSION_REG; /*!< (@ 0x500015F8) I2C Component Version Register */ - __IO uint16_t I2C2_COMP2_VERSION; /*!< (@ 0x500015FA) I2C Component2 Version Register */ - __IO uint16_t I2C2_COMP_TYPE_REG; /*!< (@ 0x500015FC) I2C Component Type Register */ - __IO uint16_t I2C2_COMP_TYPE2_REG; /*!< (@ 0x500015FE) I2C Component2 Type Register */ -} I2C2_Type; - - -/* ================================================================================ */ -/* ================ IR ================ */ -/* ================================================================================ */ - - -/** - * @brief IR registers (IR) - */ - -typedef struct { /*!< (@ 0x50001700) IR Structure */ - __IO uint16_t IR_FREQ_CARRIER_ON_REG; /*!< (@ 0x50001700) Defines the carrier signal high duration */ - __IO uint16_t IR_FREQ_CARRIER_OFF_REG; /*!< (@ 0x50001702) Defnes the carrier signal low duration */ - __IO uint16_t IR_LOGIC_ONE_TIME_REG; /*!< (@ 0x50001704) Defines the logic one waveform */ - __IO uint16_t IR_LOGIC_ZERO_TIME_REG; /*!< (@ 0x50001706) Defines the logic zero wavefrom */ - __IO uint16_t IR_CTRL_REG; /*!< (@ 0x50001708) IR control register */ - __IO uint16_t IR_STATUS_REG; /*!< (@ 0x5000170A) IR status register */ - __IO uint16_t IR_REPEAT_TIME_REG; /*!< (@ 0x5000170C) Defines the repeat time */ - __IO uint16_t IR_MAIN_FIFO_REG; /*!< (@ 0x5000170E) Main fifo write register */ - __IO uint16_t IR_REPEAT_FIFO_REG; /*!< (@ 0x50001710) Repeat fifo write register */ - __IO uint16_t IR_IRQ_STATUS_REG; /*!< (@ 0x50001712) IR interrupt status register */ -} IR_Type; - - -/* ================================================================================ */ -/* ================ KBSCAN ================ */ -/* ================================================================================ */ - - -/** - * @brief KBSCAN registers (KBSCAN) - */ - -typedef struct { /*!< (@ 0x50001600) KBSCAN Structure */ - __IO uint16_t KBSCN_CTRL_REG; /*!< (@ 0x50001600) Keyboard scanner control register */ - __IO uint16_t KBSCN_CTRL2_REG; /*!< (@ 0x50001602) Keyboard scanner control 2 register */ - __IO uint16_t KBSCN_MATRIX_SIZE_REG; /*!< (@ 0x50001604) Defines the number of rows and columns of the - matrix */ - __IO uint16_t KBSCN_DEBOUNCE_REG; /*!< (@ 0x50001606) Defines the debounce time for key press and release */ - __IO uint16_t KBSCN_STATUS_REG; /*!< (@ 0x50001608) keyboard scanner Interrupt status register */ - __IO uint16_t KBSCN_MESSAGE_KEY_REG; /*!< (@ 0x5000160A) Returns a key message from the message queue */ - __IO uint16_t KBSCN_P00_MODE_REG; /*!< (@ 0x5000160C) Defines the keyboard mode for P00 */ - __IO uint16_t KBSCN_P01_MODE_REG; /*!< (@ 0x5000160E) Defines the keyboard mode for P01 */ - __IO uint16_t KBSCN_P02_MODE_REG; /*!< (@ 0x50001610) Defines the keyboard mode for P02 */ - __IO uint16_t KBSCN_P03_MODE_REG; /*!< (@ 0x50001612) Defines the keyboard mode for P03 */ - __IO uint16_t KBSCN_P04_MODE_REG; /*!< (@ 0x50001614) Defines the keyboard mode for P04 */ - __IO uint16_t KBSCN_P05_MODE_REG; /*!< (@ 0x50001616) Defines the keyboard mode for P05 */ - __IO uint16_t KBSCN_P06_MODE_REG; /*!< (@ 0x50001618) Defines the keyboard mode for P06 */ - __IO uint16_t KBSCN_P07_MODE_REG; /*!< (@ 0x5000161A) Defines the keyboard mode for P07 */ - __IO uint16_t KBSCN_P10_MODE_REG; /*!< (@ 0x5000161C) Defines the keyboard mode for P10 */ - __IO uint16_t KBSCN_P11_MODE_REG; /*!< (@ 0x5000161E) Defines the keyboard mode for P11 */ - __IO uint16_t KBSCN_P12_MODE_REG; /*!< (@ 0x50001620) Defines the keyboard mode for P12 */ - __IO uint16_t KBSCN_P13_MODE_REG; /*!< (@ 0x50001622) Defines the keyboard mode for P13 */ - __IO uint16_t KBSCN_P14_MODE_REG; /*!< (@ 0x50001624) Defines the keyboard mode for P14 */ - __IO uint16_t KBSCN_P15_MODE_REG; /*!< (@ 0x50001626) Defines the keyboard mode for P15 */ - __IO uint16_t KBSCN_P16_MODE_REG; /*!< (@ 0x50001628) Defines the keyboard mode for P16 */ - __IO uint16_t KBSCN_P17_MODE_REG; /*!< (@ 0x5000162A) Defines the keyboard mode for P17 */ - __IO uint16_t KBSCN_P20_MODE_REG; /*!< (@ 0x5000162C) Defines the keyboard mode for P20 */ - __IO uint16_t KBSCN_P21_MODE_REG; /*!< (@ 0x5000162E) Defines the keyboard mode for P21 */ - __IO uint16_t KBSCN_P22_MODE_REG; /*!< (@ 0x50001630) Defines the keyboard mode for P22 */ - __IO uint16_t KBSCN_P23_MODE_REG; /*!< (@ 0x50001632) Defines the keyboard mode for P23 */ - __IO uint16_t KBSCN_P24_MODE_REG; /*!< (@ 0x50001634) Defines the keyboard mode for P24 */ - __I uint16_t RESERVED[3]; - __IO uint16_t KBSCN_P30_MODE_REG; /*!< (@ 0x5000163C) Defines the keyboard mode for P30 */ - __IO uint16_t KBSCN_P31_MODE_REG; /*!< (@ 0x5000163E) Defines the keyboard mode for P31 */ - __IO uint16_t KBSCN_P32_MODE_REG; /*!< (@ 0x50001640) Defines the keyboard mode for P32 */ - __IO uint16_t KBSCN_P33_MODE_REG; /*!< (@ 0x50001642) Defines the keyboard mode for P33 */ - __IO uint16_t KBSCN_P34_MODE_REG; /*!< (@ 0x50001644) Defines the keyboard mode for P34 */ - __IO uint16_t KBSCN_P35_MODE_REG; /*!< (@ 0x50001646) Defines the keyboard mode for P35 */ - __IO uint16_t KBSCN_P36_MODE_REG; /*!< (@ 0x50001648) Defines the keyboard mode for P36 */ - __IO uint16_t KBSCN_P37_MODE_REG; /*!< (@ 0x5000164A) Defines the keyboard mode for P37 */ - __IO uint16_t KBSCN_P40_MODE_REG; /*!< (@ 0x5000164C) Defines the keyboard mode for P40 */ - __IO uint16_t KBSCN_P41_MODE_REG; /*!< (@ 0x5000164E) Defines the keyboard mode for P41 */ - __IO uint16_t KBSCN_P42_MODE_REG; /*!< (@ 0x50001650) Defines the keyboard mode for P42 */ - __IO uint16_t KBSCN_P43_MODE_REG; /*!< (@ 0x50001652) Defines the keyboard mode for P43 */ - __IO uint16_t KBSCN_P44_MODE_REG; /*!< (@ 0x50001654) Defines the keyboard mode for P44 */ - __IO uint16_t KBSCN_P45_MODE_REG; /*!< (@ 0x50001656) Defines the keyboard mode for P45 */ - __IO uint16_t KBSCN_P46_MODE_REG; /*!< (@ 0x50001658) Defines the keyboard mode for P46 */ - __IO uint16_t KBSCN_P47_MODE_REG; /*!< (@ 0x5000165A) Defines the keyboard mode for P47 */ -} KBSCAN_Type; - - -/* ================================================================================ */ -/* ================ OTPC ================ */ -/* ================================================================================ */ - - -/** - * @brief OTPC registers (OTPC) - */ - -typedef struct { /*!< (@ 0x07F40000) OTPC Structure */ - __IO uint32_t OTPC_MODE_REG; /*!< (@ 0x07F40000) Mode register */ - __IO uint32_t OTPC_PCTRL_REG; /*!< (@ 0x07F40004) Bit-programming control register */ - __IO uint32_t OTPC_STAT_REG; /*!< (@ 0x07F40008) Status register */ - __IO uint32_t OTPC_AHBADR_REG; /*!< (@ 0x07F4000C) AHB master start address */ - __IO uint32_t OTPC_CELADR_REG; /*!< (@ 0x07F40010) Macrocell start address */ - __IO uint32_t OTPC_NWORDS_REG; /*!< (@ 0x07F40014) Number of words */ - __IO uint32_t OTPC_FFPRT_REG; /*!< (@ 0x07F40018) Ports access to fifo logic */ - __IO uint32_t OTPC_FFRD_REG; /*!< (@ 0x07F4001C) The data which have taken with the latest read - from the OTPC_FFPRT_REG */ - __IO uint32_t OTPC_PWORDL_REG; /*!< (@ 0x07F40020) The 32 lower bits of the 64-bit word that will - be programmed, when the MPROG mode is used. */ - __IO uint32_t OTPC_PWORDH_REG; /*!< (@ 0x07F40024) The 32 higher bits of the 64-bit word that will - be programmed, when the MPROG mode is used. */ - __IO uint32_t OTPC_TIM1_REG; /*!< (@ 0x07F40028) Various timing parameters of the OTP cell. */ - __IO uint32_t OTPC_TIM2_REG; /*!< (@ 0x07F4002C) Various timing parameters of the OTP cell. */ - __IO uint32_t OTPC_TEST_REG; /*!< (@ 0x07F40030) OTPC_TEST_REG */ -} OTPC_Type; - - -/* ================================================================================ */ -/* ================ PATCH ================ */ -/* ================================================================================ */ - - -/** - * @brief PATCH registers (PATCH) - */ - -typedef struct { /*!< (@ 0x40050000) PATCH Structure */ - __IO uint32_t PATCH_VALID_REG; /*!< (@ 0x40050000) Validity Control Register */ - __IO uint32_t PATCH_VALID_SET_REG; /*!< (@ 0x40050004) Validity Set Control Register */ - __IO uint32_t PATCH_VALID_RESET_REG; /*!< (@ 0x40050008) Validity Reset Control Register */ - __I uint32_t RESERVED[5]; - __IO uint32_t PATCH_ADDR0_REG; /*!< (@ 0x40050020) Patch Address field */ - __I uint32_t RESERVED1; - __IO uint32_t PATCH_ADDR1_REG; /*!< (@ 0x40050028) Patch Address field */ - __I uint32_t RESERVED2; - __IO uint32_t PATCH_ADDR2_REG; /*!< (@ 0x40050030) Patch Address field */ - __I uint32_t RESERVED3; - __IO uint32_t PATCH_ADDR3_REG; /*!< (@ 0x40050038) Patch Address field */ - __I uint32_t RESERVED4; - __IO uint32_t PATCH_ADDR4_REG; /*!< (@ 0x40050040) Patch Address field */ - __I uint32_t RESERVED5; - __IO uint32_t PATCH_ADDR5_REG; /*!< (@ 0x40050048) Patch Address field */ - __I uint32_t RESERVED6; - __IO uint32_t PATCH_ADDR6_REG; /*!< (@ 0x40050050) Patch Address field */ - __I uint32_t RESERVED7; - __IO uint32_t PATCH_ADDR7_REG; /*!< (@ 0x40050058) Patch Address field */ - __I uint32_t RESERVED8; - __IO uint32_t PATCH_ADDR8_REG; /*!< (@ 0x40050060) Patch Address field */ - __I uint32_t RESERVED9; - __IO uint32_t PATCH_ADDR9_REG; /*!< (@ 0x40050068) Patch Address field */ - __I uint32_t RESERVED10; - __IO uint32_t PATCH_ADDR10_REG; /*!< (@ 0x40050070) Patch Address field */ - __I uint32_t RESERVED11; - __IO uint32_t PATCH_ADDR11_REG; /*!< (@ 0x40050078) Patch Address field */ - __I uint32_t RESERVED12; - __IO uint32_t PATCH_ADDR12_REG; /*!< (@ 0x40050080) Patch Address field */ - __I uint32_t RESERVED13; - __IO uint32_t PATCH_ADDR13_REG; /*!< (@ 0x40050088) Patch Address field */ - __I uint32_t RESERVED14; - __IO uint32_t PATCH_ADDR14_REG; /*!< (@ 0x40050090) Patch Address field */ - __I uint32_t RESERVED15; - __IO uint32_t PATCH_ADDR15_REG; /*!< (@ 0x40050098) Patch Address field */ - __I uint32_t RESERVED16; - __IO uint32_t PATCH_ADDR16_REG; /*!< (@ 0x400500A0) Patch Address field */ - __I uint32_t RESERVED17; - __IO uint32_t PATCH_ADDR17_REG; /*!< (@ 0x400500A8) Patch Address field */ - __I uint32_t RESERVED18; - __IO uint32_t PATCH_ADDR18_REG; /*!< (@ 0x400500B0) Patch Address field */ - __I uint32_t RESERVED19; - __IO uint32_t PATCH_ADDR19_REG; /*!< (@ 0x400500B8) Patch Address field */ - __I uint32_t RESERVED20; - __IO uint32_t PATCH_ADDR20_REG; /*!< (@ 0x400500C0) Patch Address field */ - __IO uint32_t PATCH_DATA20_REG; /*!< (@ 0x400500C4) Patch Data field */ - __IO uint32_t PATCH_ADDR21_REG; /*!< (@ 0x400500C8) Patch Address field */ - __IO uint32_t PATCH_DATA21_REG; /*!< (@ 0x400500CC) Patch Data field */ - __IO uint32_t PATCH_ADDR22_REG; /*!< (@ 0x400500D0) Patch Address field */ - __IO uint32_t PATCH_DATA22_REG; /*!< (@ 0x400500D4) Patch Data field */ - __IO uint32_t PATCH_ADDR23_REG; /*!< (@ 0x400500D8) Patch Address field */ - __IO uint32_t PATCH_DATA23_REG; /*!< (@ 0x400500DC) Patch Data field */ - __IO uint32_t PATCH_ADDR24_REG; /*!< (@ 0x400500E0) Patch Address field */ - __IO uint32_t PATCH_DATA24_REG; /*!< (@ 0x400500E4) Patch Data field */ - __IO uint32_t PATCH_ADDR25_REG; /*!< (@ 0x400500E8) Patch Address field */ - __IO uint32_t PATCH_DATA25_REG; /*!< (@ 0x400500EC) Patch Data field */ - __IO uint32_t PATCH_ADDR26_REG; /*!< (@ 0x400500F0) Patch Address field */ - __IO uint32_t PATCH_DATA26_REG; /*!< (@ 0x400500F4) Patch Data field */ - __IO uint32_t PATCH_ADDR27_REG; /*!< (@ 0x400500F8) Patch Address field */ - __IO uint32_t PATCH_DATA27_REG; /*!< (@ 0x400500FC) Patch Data field */ -} PATCH_Type; - - -/* ================================================================================ */ -/* ================ PLLDIG ================ */ -/* ================================================================================ */ - - -/** - * @brief PLLDIG registers (PLLDIG) - */ - -typedef struct { /*!< (@ 0x50002D00) PLLDIG Structure */ - __IO uint16_t RF_SYNTH_CTRL1_BLE_REG; /*!< (@ 0x50002D00) RF_SYNTH_CTRL1_BLE_REG */ - __IO uint16_t RF_SYNTH_CTRL1_FTDF_REG; /*!< (@ 0x50002D02) RF_SYNTH_CTRL1_FTDF_REG */ - __IO uint16_t RF_SYNTH_CTRL2_BLE_REG; /*!< (@ 0x50002D04) RF_SYNTH_CTRL2_BLE_REG */ - __IO uint16_t RF_SYNTH_CTRL2_FTDF_REG; /*!< (@ 0x50002D06) RF_SYNTH_CTRL2_FTDF_REG */ - __IO uint16_t RF_SYNTH_CTRL3_REG; /*!< (@ 0x50002D08) RF_SYNTH_CTRL3_REG */ - __IO uint16_t RF_VCOCAL_CTRL_REG; /*!< (@ 0x50002D0A) RF_VCOCAL_CTRL_REG */ - __IO uint16_t RF_MGAIN_CTRL_BLE_REG; /*!< (@ 0x50002D0C) RF_MGAIN_CTRL_BLE_REG */ - __IO uint16_t RF_MGAIN_CTRL_FTDF_REG; /*!< (@ 0x50002D0E) RF_MGAIN_CTRL_FTDF_REG */ - __IO uint16_t RF_MGAIN_CTRL2_REG; /*!< (@ 0x50002D10) RF_MGAIN_CTRL2_REG */ - __IO uint16_t RF_VCO_CALCAP_BIT14_REG; /*!< (@ 0x50002D12) RF_VCO_CALCAP_BIT14_REG */ - __IO uint16_t RF_VCO_CALCAP_BIT15_REG; /*!< (@ 0x50002D14) RF_VCO_CALCAP_BIT15_REG */ - __IO uint16_t RF_BMCW_REG; /*!< (@ 0x50002D16) RF_BMCW_REG */ - __IO uint16_t RF_KMOD_ALPHA_BLE_REG; /*!< (@ 0x50002D18) RF_KMOD_ALPHA_BLE_REG */ - __IO uint16_t RF_KMOD_ALPHA_FTDF_REG; /*!< (@ 0x50002D1A) RF_KMOD_ALPHA_FTDF_REG */ - __I uint16_t RESERVED; - __IO uint16_t RF_SYNTH_RESULT_BLE_REG; /*!< (@ 0x50002D1E) Must be Retained */ - __IO uint16_t RF_SYNTH_RESULT_FTDF_REG; /*!< (@ 0x50002D20) Must be Retained */ - __IO uint16_t RF_SYNTH_RESULT2_BLE_REG; /*!< (@ 0x50002D22) Must be Retained */ - __IO uint16_t RF_SYNTH_RESULT2_FTDF_REG; /*!< (@ 0x50002D24) Must be Retained */ - __IO uint16_t RF_SYNTH_RESULT3_FTDF_REG; /*!< (@ 0x50002D26) RF_SYNTH_RESULT3_FTDF_REG */ - __IO uint16_t RF_CALCAP1_REG; /*!< (@ 0x50002D28) RF_CALCAP1_REG */ - __IO uint16_t RF_CALCAP2_REG; /*!< (@ 0x50002D2A) RF_CALCAP2_REG */ - __IO uint16_t RF_NMD_OFFSET_REG; /*!< (@ 0x50002D2C) Offset values for phase alignment after VCO calibration. */ - __I uint16_t RESERVED1; - __IO uint16_t RF_FTDF_PHYATTR_REG; /*!< (@ 0x50002D30) RF_FTDF_PHYATTR_REG */ - __IO uint16_t RF_CALTRIM_STEP1_REG; /*!< (@ 0x50002D32) RF_CALTRIM_STEP1_REG */ - __IO uint16_t RF_CALTRIM_STEP2_REG; /*!< (@ 0x50002D34) RF_CALTRIM_STEP2_REG */ - __IO uint16_t RF_CALTRIM_STEP3_REG; /*!< (@ 0x50002D36) RF_CALTRIM_STEP3_REG */ - __IO uint16_t RF_CALTRIM_STEP4_REG; /*!< (@ 0x50002D38) RF_CALTRIM_STEP4_REG */ - __IO uint16_t RF_MGAIN_CTRL3_REG; /*!< (@ 0x50002D3A) RF_MGAIN_CTRL3_REG */ - __IO uint16_t RF_VCO_FREQ_EST_REG; /*!< (@ 0x50002D3C) RF_VCO_FREQ_EST_REG */ - __I uint16_t RESERVED2; - __IO uint16_t RF_SYNTH_SPARE_REG; /*!< (@ 0x50002D40) MSK modulator control register */ - __IO uint16_t RF_MSKMOD_CTRL1_REG; /*!< (@ 0x50002D42) MSK modulator control register */ - __IO uint16_t RF_MSKMOD_CHIPL_REG; /*!< (@ 0x50002D44) MSK modulator CHIP control lower 16 bit */ - __IO uint16_t RF_MSKMOD_CHIPH_REG; /*!< (@ 0x50002D46) MSK modulator CHIP control upper 16 bit */ - __IO uint16_t RF_TXDAC_TEST_REG; /*!< (@ 0x50002D48) Register to provide value to TXDAC */ - __I uint16_t RESERVED3[3]; - __IO uint16_t RF_MGAIN_COMP_VAL0_REG; /*!< (@ 0x50002D50) RF_MGAIN_COMP_VAL0_REG */ - __IO uint16_t RF_MGAIN_COMP_VAL1_REG; /*!< (@ 0x50002D52) RF_MGAIN_COMP_VAL1_REG */ - __IO uint16_t RF_MGAIN_COMP_VAL2_REG; /*!< (@ 0x50002D54) RF_MGAIN_COMP_VAL2_REG */ - __IO uint16_t RF_MGAIN_COMP_VAL3_REG; /*!< (@ 0x50002D56) RF_MGAIN_COMP_VAL3_REG */ - __IO uint16_t RF_MGAIN_COMP_VAL4_REG; /*!< (@ 0x50002D58) RF_MGAIN_COMP_VAL4_REG */ - __IO uint16_t RF_MGAIN_COMP_VAL5_REG; /*!< (@ 0x50002D5A) RF_MGAIN_COMP_VAL5_REG */ - __IO uint16_t RF_MGAIN_COMP_VAL6_REG; /*!< (@ 0x50002D5C) RF_MGAIN_COMP_VAL6_REG */ - __IO uint16_t RF_MGAIN_COMP_VAL7_REG; /*!< (@ 0x50002D5E) RF_MGAIN_COMP_VAL7_REG */ - __IO uint16_t RF_PULSE_TBL_0_REG; /*!< (@ 0x50002D60) RF_PULSE_TBL_0_REG */ - __IO uint16_t RF_PULSE_TBL_1_REG; /*!< (@ 0x50002D62) RF_PULSE_TBL_1_REG */ - __IO uint16_t RF_PULSE_TBL_2_REG; /*!< (@ 0x50002D64) RF_PULSE_TBL_2_REG */ - __IO uint16_t RF_PULSE_TBL_3_REG; /*!< (@ 0x50002D66) RF_PULSE_TBL_3_REG */ - __IO uint16_t RF_PULSE_TBL_4_REG; /*!< (@ 0x50002D68) RF_PULSE_TBL_4_REG */ - __IO uint16_t RF_PULSE_TBL_5_REG; /*!< (@ 0x50002D6A) RF_PULSE_TBL_5_REG */ - __IO uint16_t RF_PULSE_TBL_6_REG; /*!< (@ 0x50002D6C) RF_PULSE_TBL_6_REG */ - __IO uint16_t RF_PULSE_TBL_7_REG; /*!< (@ 0x50002D6E) RF_PULSE_TBL_7_REG */ - __IO uint16_t RF_PULSE_CTRL_REG; /*!< (@ 0x50002D70) RF_PULSE_CTRL_REG */ -} PLLDIG_Type; - - -/* ================================================================================ */ -/* ================ QSPIC ================ */ -/* ================================================================================ */ - - -/** - * @brief QSPIC registers (QSPIC) - */ - -typedef struct { /*!< (@ 0x0C000000) QSPIC Structure */ - __IO uint32_t QSPIC_CTRLBUS_REG; /*!< (@ 0x0C000000) SPI Bus control register for the Manual mode */ - __IO uint32_t QSPIC_CTRLMODE_REG; /*!< (@ 0x0C000004) Mode Control register */ - __IO uint32_t QSPIC_RECVDATA_REG; /*!< (@ 0x0C000008) Received data for the Manual mode */ - __IO uint32_t QSPIC_BURSTCMDA_REG; /*!< (@ 0x0C00000C) The way of reading in Auto mode (command register - A) */ - __IO uint32_t QSPIC_BURSTCMDB_REG; /*!< (@ 0x0C000010) The way of reading in Auto mode (command register - B) */ - __IO uint32_t QSPIC_STATUS_REG; /*!< (@ 0x0C000014) The status register of the QSPI controller */ - __IO uint32_t QSPIC_WRITEDATA_REG; /*!< (@ 0x0C000018) Write data to SPI Bus for the Manual mode */ - __IO uint32_t QSPIC_READDATA_REG; /*!< (@ 0x0C00001C) Read data from SPI Bus for the Manual mode */ - __IO uint32_t QSPIC_DUMMYDATA_REG; /*!< (@ 0x0C000020) Send dummy clocks to SPI Bus for the Manual mode */ - __IO uint32_t QSPIC_ERASECTRL_REG; /*!< (@ 0x0C000024) QSPI Erase control register */ - __IO uint32_t QSPIC_ERASECMDA_REG; /*!< (@ 0x0C000028) The way of erasing in Auto mode (command register - A) */ - __IO uint32_t QSPIC_ERASECMDB_REG; /*!< (@ 0x0C00002C) The way of erasing in Auto mode (command register - B) */ - __IO uint32_t QSPIC_BURSTBRK_REG; /*!< (@ 0x0C000030) Read break sequence in Auto mode */ - __IO uint32_t QSPIC_STATUSCMD_REG; /*!< (@ 0x0C000034) The way of reading the status of external device - in Auto mode */ - __IO uint32_t QSPIC_CHCKERASE_REG; /*!< (@ 0x0C000038) Check erase progress in Auto mode */ - __IO uint32_t QSPIC_GP_REG; /*!< (@ 0x0C00003C) QSPI General Purpose control register */ - __IO uint32_t QSPIC_UCODE_START; /*!< (@ 0x0C000040) QSPIC uCode memory */ -} QSPIC_Type; - - -/* ================================================================================ */ -/* ================ QUAD ================ */ -/* ================================================================================ */ - - -/** - * @brief QUAD registers (QUAD) - */ - -typedef struct { /*!< (@ 0x50001A00) QUAD Structure */ - __IO uint16_t QDEC_CTRL_REG; /*!< (@ 0x50001A00) Quad decoder control register */ - __IO uint16_t QDEC_XCNT_REG; /*!< (@ 0x50001A02) Counter value of the X Axis */ - __IO uint16_t QDEC_YCNT_REG; /*!< (@ 0x50001A04) Counter value of the Y Axis */ - __IO uint16_t QDEC_ZCNT_REG; /*!< (@ 0x50001A06) Counter value of the Z Axis */ - __IO uint16_t QDEC_CLOCKDIV_REG; /*!< (@ 0x50001A08) Quad decoder clock divider register */ -} QUAD_Type; - - -/* ================================================================================ */ -/* ================ RFCU ================ */ -/* ================================================================================ */ - - -/** - * @brief RFCU registers (RFCU) - */ - -typedef struct { /*!< (@ 0x50002000) RFCU Structure */ - __I uint32_t RESERVED[4]; - __IO uint16_t RF_OVERRULE_REG; /*!< (@ 0x50002010) RF_OVERRULE_REG */ - __IO uint16_t RF_DIAGIRQ01_REG; /*!< (@ 0x50002012) BLE/RF Diagnostic IRQ Control Register */ - __IO uint16_t RF_DIAGIRQ23_REG; /*!< (@ 0x50002014) BLE/RF Diagnostic IRQ Control Register */ - __IO uint16_t RF_DIAGIRQ_STAT_REG; /*!< (@ 0x50002016) BLE/RF Diagnostic IRQ Status Register */ - __IO uint16_t RF_AGC_EXT1_LUT_REG; /*!< (@ 0x50002018) RF_AGC_EXT1_LUT_REG */ - __I uint16_t RESERVED1[3]; - __IO uint16_t RF_CALSTATE_REG; /*!< (@ 0x50002020) RF_CALSTATE_REG */ - __I uint16_t RESERVED2[15]; - __IO uint16_t RF_SCAN_FEEDBACK_REG; /*!< (@ 0x50002040) RF_SCAN_FEEDBACK_REG */ - __IO uint16_t RF_REF_OSC_BLE_REG; /*!< (@ 0x50002042) RF_REF_OSC_BLE_REG */ - __IO uint16_t RF_REF_OSC_FTDF_REG; /*!< (@ 0x50002044) RF_REF_OSC_FTDF_REG */ - __I uint16_t RESERVED3[5]; - __IO uint16_t RF_CAL_CTRL_REG; /*!< (@ 0x50002050) RF_CAL_CTRL_REG */ - __I uint16_t RESERVED4; - __IO uint16_t RF_IRQ_CTRL_REG; /*!< (@ 0x50002054) RF_IRQ_CTRL_REG */ - __I uint16_t RESERVED5; - __IO uint16_t RF_ADCI_DC_OFFSET_REG; /*!< (@ 0x50002058) Must be Retained */ - __IO uint16_t RF_ADCQ_DC_OFFSET_REG; /*!< (@ 0x5000205A) Must be Retained */ - __I uint32_t RESERVED6[9]; - __IO uint16_t RF_SPARE1_BLE_REG; /*!< (@ 0x50002080) RF_SPARE1_BLE_REG */ - __IO uint16_t RF_SPARE1_FTDF_REG; /*!< (@ 0x50002082) RF_SPARE1_FTDF_REG */ - __IO uint16_t RF_BIAS_CTRL1_BLE_REG; /*!< (@ 0x50002084) RF_BIAS_CTRL1_BLE_REG */ - __IO uint16_t RF_BIAS_CTRL1_FTDF_REG; /*!< (@ 0x50002086) RF_BIAS_CTRL1_FTDF_REG */ - __IO uint16_t RF_IFF_CTRL1_REG; /*!< (@ 0x50002088) RF_IFF_CTRL1_REG */ - __IO uint16_t RF_ADC_CTRL1_REG; /*!< (@ 0x5000208A) RF_ADC_CTRL1_REG */ - __IO uint16_t RF_ADC_CTRL2_REG; /*!< (@ 0x5000208C) RF_ADC_CTRL2_REG */ - __IO uint16_t RF_ADC_CTRL3_REG; /*!< (@ 0x5000208E) RF_ADC_CTRL3_REG */ - __IO uint16_t RF_PA_CTRL_REG; /*!< (@ 0x50002090) Removed obsolete values of bits 10:7, pa_pw back - to 4 */ - __IO uint16_t RF_MGC_CTRL_REG; /*!< (@ 0x50002092) RF_MGC_CTRL_REG */ - __IO uint16_t RF_VCOVAR_CTRL_REG; /*!< (@ 0x50002094) RF_VCOVAR_CTRL_REG */ - __IO uint16_t RF_PFD_CTRL_REG; /*!< (@ 0x50002096) RF_PFD_CTRL_REG */ - __IO uint16_t RF_CP_CTRL_BLE_REG; /*!< (@ 0x50002098) RF_CP_CTRL_BLE_REG */ - __IO uint16_t RF_CP_CTRL_FTDF_REG; /*!< (@ 0x5000209A) RF_CP_CTRL_FTDF_REG */ - __IO uint16_t RF_LF_RES_CTRL_BLE_REG; /*!< (@ 0x5000209C) LF resistor setting in BLE mode */ - __IO uint16_t RF_LF_RES_CTRL_FTDF_REG; /*!< (@ 0x5000209E) LF resistor setting in FTDF mode */ - __IO uint16_t RF_MIXER_CTRL1_BLE_REG; /*!< (@ 0x500020A0) RF_MIXER_CTRL1_BLE_REG */ - __IO uint16_t RF_MIXER_CTRL1_FTDF_REG; /*!< (@ 0x500020A2) RF_MIXER_CTRL1_FTDF_REG */ - __IO uint16_t RF_MIXER_CTRL2_REG; /*!< (@ 0x500020A4) RF_MIXER_CTRL2_REG */ - __IO uint16_t RF_LF_CTRL_REG; /*!< (@ 0x500020A6) RF_LF_CTRL_REG */ - __IO uint16_t RF_TDC_CTRL_REG; /*!< (@ 0x500020A8) TDC settings */ - __IO uint16_t RF_IO_CTRL1_REG; /*!< (@ 0x500020AA) RF_IO_CTRL1_REG */ - __IO uint16_t RF_LNA_CTRL1_REG; /*!< (@ 0x500020AC) RF_LNA_CTRL1_REG */ - __IO uint16_t RF_LNA_CTRL2_REG; /*!< (@ 0x500020AE) RF_LNA_CTRL2_REG */ - __IO uint16_t RF_LNA_CTRL3_REG; /*!< (@ 0x500020B0) RF_LNA_CTRL3_REG */ - __IO uint16_t RF_VCO_AMP_CTRL1_REG; /*!< (@ 0x500020B2) RF_VCO_AMP_CTRL1_REG */ - __IO uint16_t RF_VCO_AMP_CTRL2_REG; /*!< (@ 0x500020B4) RF_VCO_AMP_CTRL2_REG */ - __I uint16_t RESERVED7[5]; - __IO uint16_t RF_TX_PWR_BLE_REG; /*!< (@ 0x500020C0) TX Power setting */ - __IO uint16_t RF_TX_PWR_LUT_1_REG; /*!< (@ 0x500020C2) TX Power setting 1 */ - __IO uint16_t RF_TX_PWR_LUT_2_REG; /*!< (@ 0x500020C4) TX Power setting 2 */ - __IO uint16_t RF_TX_PWR_LUT_3_REG; /*!< (@ 0x500020C6) TX Power setting 3 */ - __IO uint16_t RF_TX_PWR_LUT_4_REG; /*!< (@ 0x500020C8) TX Power setting 4 */ - __IO uint16_t RF_TX_PWR_LUT_5_REG; /*!< (@ 0x500020CA) TX Power setting 5 */ - __IO uint16_t RF_TX_PWR_LUT_6_REG; /*!< (@ 0x500020CC) TX Power setting 6 */ - __IO uint16_t RF_TX_PWR_LUT_7_REG; /*!< (@ 0x500020CE) TX Power setting 7 */ - __IO uint16_t RF_TX_PWR_FTDF_REG; /*!< (@ 0x500020D0) TX Power setting */ - __IO uint16_t RF_TX_PWR_LUT_RD_REG; /*!< (@ 0x500020D2) TX Power read back */ - __IO uint16_t RF_DIV_IQ_RX_REG; /*!< (@ 0x500020D4) Bias trimming of IQ divider */ - __IO uint16_t RF_DIV_IQ_TX_REG; /*!< (@ 0x500020D6) Bias trimming of IQ divider */ - __IO uint16_t RF_LO_IQ_TRIM_REG; /*!< (@ 0x500020D8) Trim settings for IQ LO path */ - __IO uint16_t RF_TXDAC_CTRL_REG; /*!< (@ 0x500020DA) Control settings for the TXDAC */ - __IO uint16_t RF_TXDAC_CAL_CAP_STAT_REG; /*!< (@ 0x500020DC) Current CAL CAP value for TXDAC */ - __I uint16_t RESERVED8; - __IO uint16_t RF_IFF_RESULT_REG; /*!< (@ 0x500020E0) Not retained */ - __IO uint16_t RF_IFF_CC_BLE_SET1_REG; /*!< (@ 0x500020E2) Must be retained */ - __IO uint16_t RF_IFF_CC_BLE_SET2_REG; /*!< (@ 0x500020E4) Must be retained */ - __IO uint16_t RF_IFF_CC_FTDF_SET1_REG; /*!< (@ 0x500020E6) Must be retained */ - __IO uint16_t RF_IFF_CC_FTDF_SET2_REG; /*!< (@ 0x500020E8) Must be retained */ - __IO uint16_t RF_IFF_CAL_CAP_STAT_REG; /*!< (@ 0x500020EA) Current CAL_CAP value applied to IF */ - __IO uint16_t RF_MIX_CAL_CAP_STAT_REG; /*!< (@ 0x500020EC) Current CAL_CAP value applied to IF */ - __IO uint16_t RF_LF_CAL_CAP_STAT_REG; /*!< (@ 0x500020EE) Current CAL_CAP value applied to IF */ -} RFCU_Type; - - -/* ================================================================================ */ -/* ================ RFCU_POWER ================ */ -/* ================================================================================ */ - - -/** - * @brief RFCU_POWER registers (RFCU_POWER) - */ - -typedef struct { /*!< (@ 0x50002200) RFCU_POWER Structure */ - __IO uint16_t RF_ENABLE_CONFIG0_REG; /*!< (@ 0x50002200) RF_ENABLE_CONFIG0_REG */ - __IO uint16_t RF_ENABLE_CONFIG1_REG; /*!< (@ 0x50002202) RF_ENABLE_CONFIG1_REG */ - __IO uint16_t RF_ENABLE_CONFIG2_REG; /*!< (@ 0x50002204) RF_ENABLE_CONFIG2_REG */ - __IO uint16_t RF_ENABLE_CONFIG3_REG; /*!< (@ 0x50002206) RF_ENABLE_CONFIG3_REG */ - __IO uint16_t RF_ENABLE_CONFIG4_REG; /*!< (@ 0x50002208) RF_ENABLE_CONFIG4_REG */ - __IO uint16_t RF_ENABLE_CONFIG5_REG; /*!< (@ 0x5000220A) RF_ENABLE_CONFIG5_REG */ - __IO uint16_t RF_ENABLE_CONFIG6_REG; /*!< (@ 0x5000220C) RF_ENABLE_CONFIG6_REG */ - __IO uint16_t RF_ENABLE_CONFIG7_REG; /*!< (@ 0x5000220E) RF_ENABLE_CONFIG7_REG */ - __IO uint16_t RF_ENABLE_CONFIG8_REG; /*!< (@ 0x50002210) RF_ENABLE_CONFIG8_REG */ - __IO uint16_t RF_ENABLE_CONFIG9_REG; /*!< (@ 0x50002212) RF_ENABLE_CONFIG9_REG */ - __IO uint16_t RF_ENABLE_CONFIG10_REG; /*!< (@ 0x50002214) RF_ENABLE_CONFIG10_REG */ - __IO uint16_t RF_ENABLE_CONFIG11_REG; /*!< (@ 0x50002216) RF_ENABLE_CONFIG11_REG */ - __IO uint16_t RF_ENABLE_CONFIG12_REG; /*!< (@ 0x50002218) RF_ENABLE_CONFIG12_REG */ - __IO uint16_t RF_ENABLE_CONFIG13_REG; /*!< (@ 0x5000221A) RF_ENABLE_CONFIG13_REG */ - __IO uint16_t RF_ENABLE_CONFIG14_REG; /*!< (@ 0x5000221C) RF_ENABLE_CONFIG14_REG */ - __IO uint16_t RF_ENABLE_CONFIG15_REG; /*!< (@ 0x5000221E) RF_ENABLE_CONFIG15_REG */ - __IO uint16_t RF_ENABLE_CONFIG16_REG; /*!< (@ 0x50002220) RF_ENABLE_CONFIG16_REG */ - __IO uint16_t RF_ENABLE_CONFIG17_REG; /*!< (@ 0x50002222) RF_ENABLE_CONFIG17_REG */ - __IO uint16_t RF_ENABLE_CONFIG18_REG; /*!< (@ 0x50002224) RF_ENABLE_CONFIG18_REG */ - __IO uint16_t RF_ENABLE_CONFIG19_REG; /*!< (@ 0x50002226) RF_ENABLE_CONFIG19_REG */ - __IO uint16_t RF_ENABLE_CONFIG20_REG; /*!< (@ 0x50002228) RF_ENABLE_CONFIG20_REG */ - __IO uint16_t RF_ENABLE_CONFIG21_REG; /*!< (@ 0x5000222A) RF_ENABLE_CONFIG21_REG */ - __IO uint16_t RF_ENABLE_CONFIG22_REG; /*!< (@ 0x5000222C) RF_ENABLE_CONFIG22_REG */ - __IO uint16_t RF_ENABLE_CONFIG23_BLE_REG; /*!< (@ 0x5000222E) RF_ENABLE_CONFIG23_BLE_REG */ - __IO uint16_t RF_ENABLE_CONFIG24_BLE_REG; /*!< (@ 0x50002230) RF_ENABLE_CONFIG24_BLE_REG */ - __IO uint16_t RF_ENABLE_CONFIG25_REG; /*!< (@ 0x50002232) RF_ENABLE_CONFIG25_REG */ - __IO uint16_t RF_ENABLE_CONFIG26_REG; /*!< (@ 0x50002234) RF_ENABLE_CONFIG26_REG */ - __IO uint16_t RF_ENABLE_CONFIG27_REG; /*!< (@ 0x50002236) RF_ENABLE_CONFIG27_REG */ - __IO uint16_t RF_ENABLE_CONFIG28_REG; /*!< (@ 0x50002238) RF_ENABLE_CONFIG28_REG */ - __IO uint16_t RF_ENABLE_CONFIG29_REG; /*!< (@ 0x5000223A) RF_ENABLE_CONFIG29_REG */ - __IO uint16_t RF_ENABLE_CONFIG30_REG; /*!< (@ 0x5000223C) RF_ENABLE_CONFIG30_REG */ - __IO uint16_t RF_ENABLE_CONFIG31_BLE_REG; /*!< (@ 0x5000223E) RF_ENABLE_CONFIG31_BLE_REG */ - __IO uint16_t RF_ENABLE_CONFIG32_REG; /*!< (@ 0x50002240) RF_ENABLE_CONFIG32_REG */ - __IO uint16_t RF_ENABLE_CONFIG33_REG; /*!< (@ 0x50002242) RF_ENABLE_CONFIG33_REG */ - __IO uint16_t RF_ENABLE_CONFIG34_REG; /*!< (@ 0x50002244) RF_ENABLE_CONFIG34_REG */ - __IO uint16_t RF_ENABLE_CONFIG35_BLE_REG; /*!< (@ 0x50002246) RF_ENABLE_CONFIG35_BLE_REG */ - __IO uint16_t RF_ENABLE_CONFIG36_REG; /*!< (@ 0x50002248) RF_ENABLE_CONFIG36_REG */ - __IO uint16_t RF_ENABLE_CONFIG37_BLE_REG; /*!< (@ 0x5000224A) RF_ENABLE_CONFIG37_BLE_REG */ - __IO uint16_t RF_ENABLE_CONFIG38_BLE_REG; /*!< (@ 0x5000224C) RF_ENABLE_CONFIG38_BLE_REG */ - __IO uint16_t RF_ENABLE_CONFIG39_REG; /*!< (@ 0x5000224E) RF_ENABLE_CONFIG39_REG */ - __IO uint16_t RF_ENABLE_CONFIG40_REG; /*!< (@ 0x50002250) RF_ENABLE_CONFIG40_REG */ - __IO uint16_t RF_ENABLE_CONFIG41_REG; /*!< (@ 0x50002252) RF_ENABLE_CONFIG41_REG */ - __IO uint16_t RF_ENABLE_CONFIG42_REG; /*!< (@ 0x50002254) RF_ENABLE_CONFIG42_REG */ - __IO uint16_t RF_ENABLE_CONFIG43_REG; /*!< (@ 0x50002256) RF_ENABLE_CONFIG43_REG */ - __IO uint16_t RF_ENABLE_CONFIG44_BLE_REG; /*!< (@ 0x50002258) RF_ENABLE_CONFIG44_BLE_REG */ - __IO uint16_t RF_ENABLE_CONFIG45_BLE_REG; /*!< (@ 0x5000225A) RF_ENABLE_CONFIG45_BLE_REG */ - __IO uint16_t RF_ENABLE_CONFIG46_BLE_REG; /*!< (@ 0x5000225C) RF_ENABLE_CONFIG46_BLE_REG */ - __IO uint16_t RF_ENABLE_CONFIG47_BLE_REG; /*!< (@ 0x5000225E) RF_ENABLE_CONFIG47_BLE_REG */ - __IO uint16_t RF_ENABLE_CONFIG48_BLE_REG; /*!< (@ 0x50002260) RF_ENABLE_CONFIG48_BLE_REG */ - __IO uint16_t RF_ENABLE_CONFIG49_BLE_REG; /*!< (@ 0x50002262) RF_ENABLE_CONFIG49_BLE_REG */ - __I uint16_t RESERVED[37]; - __IO uint16_t RF_ENABLE_CONFIG23_FTDF_REG; /*!< (@ 0x500022AE) RF_ENABLE_CONFIG23_FTDF_REG */ - __IO uint16_t RF_ENABLE_CONFIG24_FTDF_REG; /*!< (@ 0x500022B0) RF_ENABLE_CONFIG24_FTDF_REG */ - __I uint16_t RESERVED1[6]; - __IO uint16_t RF_ENABLE_CONFIG31_FTDF_REG; /*!< (@ 0x500022BE) RF_ENABLE_CONFIG31_FTDF_REG */ - __I uint16_t RESERVED2[3]; - __IO uint16_t RF_ENABLE_CONFIG35_FTDF_REG; /*!< (@ 0x500022C6) RF_ENABLE_CONFIG35_FTDF_REG */ - __I uint16_t RESERVED3; - __IO uint16_t RF_ENABLE_CONFIG37_FTDF_REG; /*!< (@ 0x500022CA) RF_ENABLE_CONFIG37_FTDF_REG */ - __IO uint16_t RF_ENABLE_CONFIG38_FTDF_REG; /*!< (@ 0x500022CC) RF_ENABLE_CONFIG38_FTDF_REG */ - __I uint16_t RESERVED4[5]; - __IO uint16_t RF_ENABLE_CONFIG44_FTDF_REG; /*!< (@ 0x500022D8) RF_ENABLE_CONFIG44_FTDF_REG */ - __IO uint16_t RF_ENABLE_CONFIG45_FTDF_REG; /*!< (@ 0x500022DA) RF_ENABLE_CONFIG45_FTDF_REG */ - __IO uint16_t RF_ENABLE_CONFIG46_FTDF_REG; /*!< (@ 0x500022DC) RF_ENABLE_CONFIG46_FTDF_REG */ - __IO uint16_t RF_ENABLE_CONFIG47_FTDF_REG; /*!< (@ 0x500022DE) RF_ENABLE_CONFIG47_FTDF_REG */ - __IO uint16_t RF_ENABLE_CONFIG48_FTDF_REG; /*!< (@ 0x500022E0) RF_ENABLE_CONFIG48_FTDF_REG */ - __IO uint16_t RF_ENABLE_CONFIG49_FTDF_REG; /*!< (@ 0x500022E2) RF_ENABLE_CONFIG49_FTDF_REG */ - __I uint16_t RESERVED5[15]; - __IO uint16_t RF_CNTRL_TIMER_1_REG; /*!< (@ 0x50002302) RF_CNTRL_TIMER_1_REG */ - __IO uint16_t RF_CNTRL_TIMER_2_REG; /*!< (@ 0x50002304) RF_CNTRL_TIMER_2_REG */ - __IO uint16_t RF_CNTRL_TIMER_3_REG; /*!< (@ 0x50002306) RF_CNTRL_TIMER_3_REG */ - __IO uint16_t RF_CNTRL_TIMER_4_REG; /*!< (@ 0x50002308) RF_CNTRL_TIMER_4_REG */ - __IO uint16_t RF_CNTRL_TIMER_5_REG; /*!< (@ 0x5000230A) RF_CNTRL_TIMER_5_REG */ - __IO uint16_t RF_CNTRL_TIMER_6_REG; /*!< (@ 0x5000230C) RF_CNTRL_TIMER_6_REG */ - __IO uint16_t RF_CNTRL_TIMER_7_REG; /*!< (@ 0x5000230E) RF_CNTRL_TIMER_7_REG */ - __IO uint16_t RF_CNTRL_TIMER_8_REG; /*!< (@ 0x50002310) RF_CNTRL_TIMER_8_REG */ - __IO uint16_t RF_CNTRL_TIMER_9_REG; /*!< (@ 0x50002312) RF_CNTRL_TIMER_9_REG */ - __IO uint16_t RF_CNTRL_TIMER_10_REG; /*!< (@ 0x50002314) RF_CNTRL_TIMER_10_REG */ - __IO uint16_t RF_CNTRL_TIMER_11_REG; /*!< (@ 0x50002316) RF_CNTRL_TIMER_11_REG */ - __IO uint16_t RF_CNTRL_TIMER_12_REG; /*!< (@ 0x50002318) RF_CNTRL_TIMER_12_REG */ - __IO uint16_t RF_CNTRL_TIMER_13_REG; /*!< (@ 0x5000231A) RF_CNTRL_TIMER_13_REG */ - __IO uint16_t RF_CNTRL_TIMER_14_REG; /*!< (@ 0x5000231C) RF_CNTRL_TIMER_14_REG */ - __IO uint16_t RF_CNTRL_TIMER_15_REG; /*!< (@ 0x5000231E) RF_CNTRL_TIMER_15_REG */ - __IO uint16_t RF_CNTRL_TIMER_16_REG; /*!< (@ 0x50002320) RF_CNTRL_TIMER_16_REG */ - __IO uint16_t RF_CNTRL_TIMER_17_REG; /*!< (@ 0x50002322) RF_CNTRL_TIMER_17_REG */ - __IO uint16_t RF_CNTRL_TIMER_18_REG; /*!< (@ 0x50002324) RF_CNTRL_TIMER_18_REG */ - __IO uint16_t RF_CNTRL_TIMER_19_REG; /*!< (@ 0x50002326) RF_CNTRL_TIMER_19_REG */ - __IO uint16_t RF_CNTRL_TIMER_20_REG; /*!< (@ 0x50002328) RF_CNTRL_TIMER_20_REG */ - __IO uint16_t RF_CNTRL_TIMER_21_REG; /*!< (@ 0x5000232A) RF_CNTRL_TIMER_21_REG */ - __IO uint16_t RF_CNTRL_TIMER_22_REG; /*!< (@ 0x5000232C) RF_CNTRL_TIMER_22_REG */ - __IO uint16_t RF_CNTRL_TIMER_23_REG; /*!< (@ 0x5000232E) RF_CNTRL_TIMER_23_REG */ - __IO uint16_t RF_CNTRL_TIMER_24_REG; /*!< (@ 0x50002330) RF_CNTRL_TIMER_24_REG */ - __IO uint16_t RF_CNTRL_TIMER_25_REG; /*!< (@ 0x50002332) RF_CNTRL_TIMER_25_REG */ - __IO uint16_t RF_CNTRL_TIMER_26_REG; /*!< (@ 0x50002334) RF_CNTRL_TIMER_26_REG */ - __IO uint16_t RF_CNTRL_TIMER_27_REG; /*!< (@ 0x50002336) RF_CNTRL_TIMER_27_REG */ - __IO uint16_t RF_CNTRL_TIMER_28_REG; /*!< (@ 0x50002338) RF_CNTRL_TIMER_28_REG */ - __IO uint16_t RF_CNTRL_TIMER_29_REG; /*!< (@ 0x5000233A) RF_CNTRL_TIMER_29_REG */ - __IO uint16_t RF_CNTRL_TIMER_30_REG; /*!< (@ 0x5000233C) RF_CNTRL_TIMER_30_REG */ - __IO uint16_t RF_CNTRL_TIMER_31_REG; /*!< (@ 0x5000233E) RF_CNTRL_TIMER_31_REG */ - __I uint32_t RESERVED6[16]; - __IO uint16_t RF_ALWAYS_EN1_REG; /*!< (@ 0x50002380) RF_ALWAYS_EN1_REG */ - __IO uint16_t RF_ALWAYS_EN2_REG; /*!< (@ 0x50002382) RF_ALWAYS_EN2_REG */ - __IO uint16_t RF_ALWAYS_EN3_REG; /*!< (@ 0x50002384) RF_ALWAYS_EN3_REG */ - __IO uint16_t RF_ALWAYS_EN4_REG; /*!< (@ 0x50002386) RF_ALWAYS_EN4_REG */ - __IO uint16_t RF_PORT_EN_BLE_REG; /*!< (@ 0x50002388) RF_PORT_EN_BLE_REG */ - __IO uint16_t RF_PORT_EN_FTDF_REG; /*!< (@ 0x5000238A) RF_PORT_EN_FTDF_REG */ - __IO uint16_t RF_PORT_POL_REG; /*!< (@ 0x5000238C) RF_PORT_POL_REG */ -} RFCU_POWER_Type; - - -/* ================================================================================ */ -/* ================ RFPT ================ */ -/* ================================================================================ */ - - -/** - * @brief RFPT registers (RFPT) - */ - -typedef struct { /*!< (@ 0x50003600) RFPT Structure */ - __IO uint16_t RFPT_CTRL_REG; /*!< (@ 0x50003600) Control register */ - __IO uint16_t RFPT_ADDRL_REG; /*!< (@ 0x50003602) AHB master start address (Low part) */ - __IO uint16_t RFPT_ADDRH_REG; /*!< (@ 0x50003604) AHB master start address (High part) */ - __IO uint16_t RFPT_LEN_REG; /*!< (@ 0x50003606) Data length register */ - __IO uint16_t RFPT_STAT_REG; /*!< (@ 0x50003608) Status register */ - __IO uint16_t RFPT_CRV_ADDRL_REG; /*!< (@ 0x5000360A) AHB master current address (Low part) */ - __IO uint16_t RFPT_CRV_ADDRH_REG; /*!< (@ 0x5000360C) AHB master current address (High part) */ - __IO uint16_t RFPT_CRV_LEN_REG; /*!< (@ 0x5000360E) The remaining data to be transferred */ -} RFPT_Type; - - -/* ================================================================================ */ -/* ================ SPI ================ */ -/* ================================================================================ */ - - -/** - * @brief SPI registers (SPI) - */ - -typedef struct { /*!< (@ 0x50001200) SPI Structure */ - __IO uint16_t SPI_CTRL_REG; /*!< (@ 0x50001200) SPI control register 0 */ - __IO uint16_t SPI_RX_TX_REG0; /*!< (@ 0x50001202) SPI RX/TX register0 */ - __IO uint16_t SPI_RX_TX_REG1; /*!< (@ 0x50001204) SPI RX/TX register1 */ - __IO uint16_t SPI_CLEAR_INT_REG; /*!< (@ 0x50001206) SPI clear interrupt register */ - __IO uint16_t SPI_CTRL_REG1; /*!< (@ 0x50001208) SPI control register 1 */ -} SPI_Type; - - -/* ================================================================================ */ -/* ================ SPI2 ================ */ -/* ================================================================================ */ - - -/** - * @brief SPI2 registers (SPI2) - */ - -typedef struct { /*!< (@ 0x50001300) SPI2 Structure */ - __IO uint16_t SPI2_CTRL_REG; /*!< (@ 0x50001300) SPI control register 0 */ - __IO uint16_t SPI2_RX_TX_REG0; /*!< (@ 0x50001302) SPI RX/TX register0 */ - __IO uint16_t SPI2_RX_TX_REG1; /*!< (@ 0x50001304) SPI RX/TX register1 */ - __IO uint16_t SPI2_CLEAR_INT_REG; /*!< (@ 0x50001306) SPI clear interrupt register */ - __IO uint16_t SPI2_CTRL_REG1; /*!< (@ 0x50001308) SPI control register 1 */ -} SPI2_Type; - - -/* ================================================================================ */ -/* ================ TIMER1 ================ */ -/* ================================================================================ */ - - -/** - * @brief TIMER1 registers (TIMER1) - */ - -typedef struct { /*!< (@ 0x50000200) TIMER1 Structure */ - __IO uint16_t CAPTIM_CTRL_REG; /*!< (@ 0x50000200) Capture Timer control register */ - __IO uint16_t CAPTIM_TIMER_VAL_REG; /*!< (@ 0x50000202) Capture Timer counter value */ - __IO uint16_t CAPTIM_STATUS_REG; /*!< (@ 0x50000204) Capture Timer status register */ - __IO uint16_t CAPTIM_GPIO1_CONF_REG; /*!< (@ 0x50000206) Capture Timer gpio1 selection */ - __IO uint16_t CAPTIM_GPIO2_CONF_REG; /*!< (@ 0x50000208) Capture Timer gpio2 selection */ - __IO uint16_t CAPTIM_RELOAD_REG; /*!< (@ 0x5000020A) Capture Timer reload value and Delay in shot - mode */ - __IO uint16_t CAPTIM_SHOTWIDTH_REG; /*!< (@ 0x5000020C) Capture Timer Shot duration in shot mode */ - __IO uint16_t CAPTIM_PRESCALER_REG; /*!< (@ 0x5000020E) Capture Timer prescaler value */ - __IO uint16_t CAPTIM_CAPTURE_GPIO1_REG; /*!< (@ 0x50000210) Capture Timer value for event on GPIO1 */ - __IO uint16_t CAPTIM_CAPTURE_GPIO2_REG; /*!< (@ 0x50000212) Capture Timer value for event on GPIO2 */ - __IO uint16_t CAPTIM_PRESCALER_VAL_REG; /*!< (@ 0x50000214) Capture Timer interrupt status register */ - __IO uint16_t CAPTIM_PWM_FREQ_REG; /*!< (@ 0x50000216) Capture Timer pwm frequency register */ - __IO uint16_t CAPTIM_PWM_DC_REG; /*!< (@ 0x50000218) Capture Timer pwm dc register */ - __IO uint16_t CAPTIM_TIMER_HVAL_REG; /*!< (@ 0x5000021A) Capture Timer counter high value */ - __IO uint16_t CAPTIM_RELOAD_HIGH_REG; /*!< (@ 0x5000021C) Capture Timer reload high value and Delay in - shot mode */ - __IO uint16_t CAPTIM_CAPTURE_HIGH_GPIO1_REG; /*!< (@ 0x5000021E) Capture Timer high value for event on GPIO01 */ - __IO uint16_t CAPTIM_CAPTURE_HIGH_GPIO2_REG; /*!< (@ 0x50000220) Capture Timer high value for event on GPIO02 */ - __IO uint16_t CAPTIM_SHOTWIDTH_HIGH_REG; /*!< (@ 0x50000222) Capture Timer Shot high duration in shot mode */ -} TIMER1_Type; - - -/* ================================================================================ */ -/* ================ TRNG ================ */ -/* ================================================================================ */ - - -/** - * @brief TRNG registers (TRNG) - */ - -typedef struct { /*!< (@ 0x50005000) TRNG Structure */ - __IO uint32_t TRNG_CTRL_REG; /*!< (@ 0x50005000) TRNG control register */ - __IO uint32_t TRNG_FIFOLVL_REG; /*!< (@ 0x50005004) TRNG FIFO level register */ - __IO uint32_t TRNG_VER_REG; /*!< (@ 0x50005008) TRNG Version register */ -} TRNG_Type; - - -/* ================================================================================ */ -/* ================ UART ================ */ -/* ================================================================================ */ - - -/** - * @brief UART registers (UART) - */ - -typedef struct { /*!< (@ 0x50001000) UART Structure */ - __IO uint16_t UART_RBR_THR_DLL_REG; /*!< (@ 0x50001000) Receive Buffer Register/Transmit Holding Register/Divisor - Latch Low */ - __I uint16_t RESERVED; - __IO uint16_t UART_IER_DLH_REG; /*!< (@ 0x50001004) Interrupt Enable Register/Divisor Latch High */ - __I uint16_t RESERVED1; - __IO uint16_t UART_IIR_FCR_REG; /*!< (@ 0x50001008) Interrupt Identification Register/FIFO Control - Register */ - __I uint16_t RESERVED2; - __IO uint16_t UART_LCR_REG; /*!< (@ 0x5000100C) Line Control Register */ - __I uint16_t RESERVED3; - __IO uint16_t UART_MCR_REG; /*!< (@ 0x50001010) Modem Control Register */ - __I uint16_t RESERVED4; - __IO uint16_t UART_LSR_REG; /*!< (@ 0x50001014) Line Status Register */ - __I uint16_t RESERVED5[3]; - __IO uint16_t UART_SCR_REG; /*!< (@ 0x5000101C) Scratchpad Register */ - __I uint16_t RESERVED6[47]; - __IO uint16_t UART_USR_REG; /*!< (@ 0x5000107C) UART Status register. */ - __I uint16_t RESERVED7[5]; - __IO uint16_t UART_SRR_REG; /*!< (@ 0x50001088) Software Reset Register. */ - __I uint16_t RESERVED8[3]; - __IO uint16_t UART_SBCR_REG; /*!< (@ 0x50001090) Shadow Break Control Register */ - __I uint16_t RESERVED9[11]; - __IO uint16_t UART_DMASA_REG; /*!< (@ 0x500010A8) DMA Software Acknowledge */ - __I uint16_t RESERVED10[11]; - __IO uint16_t UART_DLF_REG; /*!< (@ 0x500010C0) Divisor Latch Fraction Register */ - __I uint16_t RESERVED11[25]; - __IO uint16_t UART_CPR_REG; /*!< (@ 0x500010F4) Component Parameter Register */ - __I uint16_t RESERVED12; - __IO uint16_t UART_UCV_REG; /*!< (@ 0x500010F8) Component Version */ - __I uint16_t RESERVED13; - __IO uint16_t UART_CTR_REG; /*!< (@ 0x500010FC) Component Type Register */ -} UART_Type; - - -/* ================================================================================ */ -/* ================ UART2 ================ */ -/* ================================================================================ */ - - -/** - * @brief UART2 registers (UART2) - */ - -typedef struct { /*!< (@ 0x50001100) UART2 Structure */ - __IO uint16_t UART2_RBR_THR_DLL_REG; /*!< (@ 0x50001100) Receive Buffer Register/Transmit Holding Register/Divisor - Latch Low */ - __I uint16_t RESERVED; - __IO uint16_t UART2_IER_DLH_REG; /*!< (@ 0x50001104) Interrupt Enable Register/Divisor Latch High */ - __I uint16_t RESERVED1; - __IO uint16_t UART2_IIR_FCR_REG; /*!< (@ 0x50001108) Interrupt Identification Register/FIFO Control - Register */ - __I uint16_t RESERVED2; - __IO uint16_t UART2_LCR_REG; /*!< (@ 0x5000110C) Line Control Register */ - __I uint16_t RESERVED3; - __IO uint16_t UART2_MCR_REG; /*!< (@ 0x50001110) Modem Control Register */ - __I uint16_t RESERVED4; - __IO uint16_t UART2_LSR_REG; /*!< (@ 0x50001114) Line Status Register */ - __I uint16_t RESERVED5; - __IO uint16_t UART2_MSR_REG; /*!< (@ 0x50001118) Modem Status Register */ - __I uint16_t RESERVED6; - __IO uint16_t UART2_SCR_REG; /*!< (@ 0x5000111C) Scratchpad Register */ - __I uint16_t RESERVED7[9]; - __IO uint16_t UART2_SRBR_STHR0_REG; /*!< (@ 0x50001130) Shadow Receive/Transmit Buffer Register */ - __I uint16_t RESERVED8; - __IO uint16_t UART2_SRBR_STHR1_REG; /*!< (@ 0x50001134) Shadow Receive/Transmit Buffer Register */ - __I uint16_t RESERVED9; - __IO uint16_t UART2_SRBR_STHR2_REG; /*!< (@ 0x50001138) Shadow Receive/Transmit Buffer Register */ - __I uint16_t RESERVED10; - __IO uint16_t UART2_SRBR_STHR3_REG; /*!< (@ 0x5000113C) Shadow Receive/Transmit Buffer Register */ - __I uint16_t RESERVED11; - __IO uint16_t UART2_SRBR_STHR4_REG; /*!< (@ 0x50001140) Shadow Receive/Transmit Buffer Register */ - __I uint16_t RESERVED12; - __IO uint16_t UART2_SRBR_STHR5_REG; /*!< (@ 0x50001144) Shadow Receive/Transmit Buffer Register */ - __I uint16_t RESERVED13; - __IO uint16_t UART2_SRBR_STHR6_REG; /*!< (@ 0x50001148) Shadow Receive/Transmit Buffer Register */ - __I uint16_t RESERVED14; - __IO uint16_t UART2_SRBR_STHR7_REG; /*!< (@ 0x5000114C) Shadow Receive/Transmit Buffer Register */ - __I uint16_t RESERVED15; - __IO uint16_t UART2_SRBR_STHR8_REG; /*!< (@ 0x50001150) Shadow Receive/Transmit Buffer Register */ - __I uint16_t RESERVED16; - __IO uint16_t UART2_SRBR_STHR9_REG; /*!< (@ 0x50001154) Shadow Receive/Transmit Buffer Register */ - __I uint16_t RESERVED17; - __IO uint16_t UART2_SRBR_STHR10_REG; /*!< (@ 0x50001158) Shadow Receive/Transmit Buffer Register */ - __I uint16_t RESERVED18; - __IO uint16_t UART2_SRBR_STHR11_REG; /*!< (@ 0x5000115C) Shadow Receive/Transmit Buffer Register */ - __I uint16_t RESERVED19; - __IO uint16_t UART2_SRBR_STHR12_REG; /*!< (@ 0x50001160) Shadow Receive/Transmit Buffer Register */ - __I uint16_t RESERVED20; - __IO uint16_t UART2_SRBR_STHR13_REG; /*!< (@ 0x50001164) Shadow Receive/Transmit Buffer Register */ - __I uint16_t RESERVED21; - __IO uint16_t UART2_SRBR_STHR14_REG; /*!< (@ 0x50001168) Shadow Receive/Transmit Buffer Register */ - __I uint16_t RESERVED22; - __IO uint16_t UART2_SRBR_STHR15_REG; /*!< (@ 0x5000116C) Shadow Receive/Transmit Buffer Register */ - __I uint16_t RESERVED23; - __IO uint16_t UART2_FAR_REG; /*!< (@ 0x50001170) FIFO Access Register */ - __I uint16_t RESERVED24[5]; - __IO uint16_t UART2_USR_REG; /*!< (@ 0x5000117C) UART Status Register */ - __I uint16_t RESERVED25; - __IO uint16_t UART2_TFL_REG; /*!< (@ 0x50001180) Transmit FIFO Level */ - __I uint16_t RESERVED26; - __IO uint16_t UART2_RFL_REG; /*!< (@ 0x50001184) Receive FIFO Level */ - __I uint16_t RESERVED27; - __IO uint16_t UART2_SRR_REG; /*!< (@ 0x50001188) Software Reset Register. */ - __I uint16_t RESERVED28; - __IO uint16_t UART2_SRTS_REG; /*!< (@ 0x5000118C) Shadow Request to Send */ - __I uint16_t RESERVED29; - __IO uint16_t UART2_SBCR_REG; /*!< (@ 0x50001190) Shadow Break Control Register */ - __I uint16_t RESERVED30; - __IO uint16_t UART2_SDMAM_REG; /*!< (@ 0x50001194) Shadow DMA Mode */ - __I uint16_t RESERVED31; - __IO uint16_t UART2_SFE_REG; /*!< (@ 0x50001198) Shadow FIFO Enable */ - __I uint16_t RESERVED32; - __IO uint16_t UART2_SRT_REG; /*!< (@ 0x5000119C) Shadow RCVR Trigger */ - __I uint16_t RESERVED33; - __IO uint16_t UART2_STET_REG; /*!< (@ 0x500011A0) Shadow TX Empty Trigger */ - __I uint16_t RESERVED34; - __IO uint16_t UART2_HTX_REG; /*!< (@ 0x500011A4) Halt TX */ - __I uint16_t RESERVED35; - __IO uint16_t UART2_DMASA_REG; /*!< (@ 0x500011A8) DMA Software Acknowledge */ - __I uint16_t RESERVED36[11]; - __IO uint16_t UART2_DLF_REG; /*!< (@ 0x500011C0) Divisor Latch Fraction Register */ - __I uint16_t RESERVED37[25]; - __IO uint16_t UART2_CPR_REG; /*!< (@ 0x500011F4) Component Parameter Register */ - __I uint16_t RESERVED38; - __IO uint16_t UART2_UCV_REG; /*!< (@ 0x500011F8) Component Version */ - __I uint16_t RESERVED39; - __IO uint16_t UART2_CTR_REG; /*!< (@ 0x500011FC) Component Type Register */ -} UART2_Type; - - -/* ================================================================================ */ -/* ================ USB ================ */ -/* ================================================================================ */ - - -/** - * @brief USB registers (USB) - */ - -typedef struct { /*!< (@ 0x50001800) USB Structure */ - __IO uint16_t USB_MCTRL_REG; /*!< (@ 0x50001800) Main Control Register) */ - __IO uint16_t USB_XCVDIAG_REG; /*!< (@ 0x50001802) Transceiver diagnostic Register (for test purpose - only) */ - __IO uint16_t USB_TCR_REG; /*!< (@ 0x50001804) Transceiver configuration Register */ - __IO uint16_t USB_UTR_REG; /*!< (@ 0x50001806) USB test Register (for test purpose only) */ - __IO uint16_t USB_FAR_REG; /*!< (@ 0x50001808) Function Address Register */ - __IO uint16_t USB_NFSR_REG; /*!< (@ 0x5000180A) Node Functional State Register */ - __IO uint16_t USB_MAEV_REG; /*!< (@ 0x5000180C) Main Event Register */ - __IO uint16_t USB_MAMSK_REG; /*!< (@ 0x5000180E) Main Mask Register */ - __IO uint16_t USB_ALTEV_REG; /*!< (@ 0x50001810) Alternate Event Register */ - __IO uint16_t USB_ALTMSK_REG; /*!< (@ 0x50001812) Alternate Mask Register */ - __IO uint16_t USB_TXEV_REG; /*!< (@ 0x50001814) Transmit Event Register */ - __IO uint16_t USB_TXMSK_REG; /*!< (@ 0x50001816) Transmit Mask Register */ - __IO uint16_t USB_RXEV_REG; /*!< (@ 0x50001818) Receive Event Register */ - __IO uint16_t USB_RXMSK_REG; /*!< (@ 0x5000181A) Receive Mask Register */ - __IO uint16_t USB_NAKEV_REG; /*!< (@ 0x5000181C) NAK Event Register */ - __IO uint16_t USB_NAKMSK_REG; /*!< (@ 0x5000181E) NAK Mask Register */ - __IO uint16_t USB_FWEV_REG; /*!< (@ 0x50001820) FIFO Warning Event Register */ - __IO uint16_t USB_FWMSK_REG; /*!< (@ 0x50001822) FIFO Warning Mask Register */ - __IO uint16_t USB_FNH_REG; /*!< (@ 0x50001824) Frame Number High Byte Register */ - __IO uint16_t USB_FNL_REG; /*!< (@ 0x50001826) Frame Number Low Byte Register */ - __I uint16_t RESERVED[11]; - __IO uint16_t USB_UX20CDR_REG; /*!< (@ 0x5000183E) Transceiver 2.0 Configuration and Diagnostics - Register(for test purpose only) */ - __IO uint16_t USB_EPC0_REG; /*!< (@ 0x50001840) Endpoint Control 0 Register */ - __IO uint16_t USB_TXD0_REG; /*!< (@ 0x50001842) Transmit Data 0 Register */ - __IO uint16_t USB_TXS0_REG; /*!< (@ 0x50001844) Transmit Status 0 Register */ - __IO uint16_t USB_TXC0_REG; /*!< (@ 0x50001846) Transmit command 0 Register */ - __IO uint16_t USB_EP0_NAK_REG; /*!< (@ 0x50001848) EP0 INNAK and OUTNAK Register */ - __IO uint16_t USB_RXD0_REG; /*!< (@ 0x5000184A) Receive Data 0 Register */ - __IO uint16_t USB_RXS0_REG; /*!< (@ 0x5000184C) Receive Status 0 Register */ - __IO uint16_t USB_RXC0_REG; /*!< (@ 0x5000184E) Receive Command 0 Register */ - __IO uint16_t USB_EPC1_REG; /*!< (@ 0x50001850) Endpoint Control Register 1 */ - __IO uint16_t USB_TXD1_REG; /*!< (@ 0x50001852) Transmit Data Register 1 */ - __IO uint16_t USB_TXS1_REG; /*!< (@ 0x50001854) Transmit Status Register 1 */ - __IO uint16_t USB_TXC1_REG; /*!< (@ 0x50001856) Transmit Command Register 1 */ - __IO uint16_t USB_EPC2_REG; /*!< (@ 0x50001858) Endpoint Control Register 2 */ - __IO uint16_t USB_RXD1_REG; /*!< (@ 0x5000185A) Receive Data Register,1 */ - __IO uint16_t USB_RXS1_REG; /*!< (@ 0x5000185C) Receive Status Register 1 */ - __IO uint16_t USB_RXC1_REG; /*!< (@ 0x5000185E) Receive Command Register 1 */ - __IO uint16_t USB_EPC3_REG; /*!< (@ 0x50001860) Endpoint Control Register 3 */ - __IO uint16_t USB_TXD2_REG; /*!< (@ 0x50001862) Transmit Data Register 2 */ - __IO uint16_t USB_TXS2_REG; /*!< (@ 0x50001864) Transmit Status Register 2 */ - __IO uint16_t USB_TXC2_REG; /*!< (@ 0x50001866) Transmit Command Register 2 */ - __IO uint16_t USB_EPC4_REG; /*!< (@ 0x50001868) Endpoint Control Register 4 */ - __IO uint16_t USB_RXD2_REG; /*!< (@ 0x5000186A) Receive Data Register 2 */ - __IO uint16_t USB_RXS2_REG; /*!< (@ 0x5000186C) Receive Status Register 2 */ - __IO uint16_t USB_RXC2_REG; /*!< (@ 0x5000186E) Receive Command Register 2 */ - __IO uint16_t USB_EPC5_REG; /*!< (@ 0x50001870) Endpoint Control Register 5 */ - __IO uint16_t USB_TXD3_REG; /*!< (@ 0x50001872) Transmit Data Register 3 */ - __IO uint16_t USB_TXS3_REG; /*!< (@ 0x50001874) Transmit Status Register 3 */ - __IO uint16_t USB_TXC3_REG; /*!< (@ 0x50001876) Transmit Command Register 3 */ - __IO uint16_t USB_EPC6_REG; /*!< (@ 0x50001878) Endpoint Control Register 6 */ - __IO uint16_t USB_RXD3_REG; /*!< (@ 0x5000187A) Receive Data Register 3 */ - __IO uint16_t USB_RXS3_REG; /*!< (@ 0x5000187C) Receive Status Register 3 */ - __IO uint16_t USB_RXC3_REG; /*!< (@ 0x5000187E) Receive Command Register 3 */ - __I uint32_t RESERVED1[20]; - __IO uint16_t USB_DMA_CTRL_REG; /*!< (@ 0x500018D0) USB DMA control register */ - __I uint16_t RESERVED2; - __IO uint16_t USB_CHARGER_CTRL_REG; /*!< (@ 0x500018D4) USB Charger Control Register */ - __IO uint16_t USB_CHARGER_STAT_REG; /*!< (@ 0x500018D6) USB Charger Status Register */ -} USB_Type; - - -/* ================================================================================ */ -/* ================ WAKEUP ================ */ -/* ================================================================================ */ - - -/** - * @brief WAKEUP registers (WAKEUP) - */ - -typedef struct { /*!< (@ 0x50000100) WAKEUP Structure */ - __IO uint16_t WKUP_CTRL_REG; /*!< (@ 0x50000100) Control register for the wakeup counter */ - __I uint16_t RESERVED; - __IO uint16_t WKUP_RESET_IRQ_REG; /*!< (@ 0x50000104) Reset wakeup interrupt */ - __I uint16_t RESERVED1[2]; - __IO uint16_t WKUP_SELECT_P0_REG; /*!< (@ 0x5000010A) select which inputs from P0 port can trigger - wkup counter */ - __IO uint16_t WKUP_SELECT_P1_REG; /*!< (@ 0x5000010C) select which inputs from P1 port can trigger - wkup counter */ - __IO uint16_t WKUP_SELECT_P2_REG; /*!< (@ 0x5000010E) select which inputs from P2 port can trigger - wkup counter */ - __IO uint16_t WKUP_SELECT_P3_REG; /*!< (@ 0x50000110) select which inputs from P3 port can trigger - wkup counter */ - __IO uint16_t WKUP_SELECT_P4_REG; /*!< (@ 0x50000112) select which inputs from P3 port can trigger - wkup counter */ - __IO uint16_t WKUP_POL_P0_REG; /*!< (@ 0x50000114) select the sesitivity polarity for each P0 input */ - __IO uint16_t WKUP_POL_P1_REG; /*!< (@ 0x50000116) select the sesitivity polarity for each P1 input */ - __IO uint16_t WKUP_POL_P2_REG; /*!< (@ 0x50000118) select the sesitivity polarity for each P2 input */ - __IO uint16_t WKUP_POL_P3_REG; /*!< (@ 0x5000011A) select the sesitivity polarity for each P3 input */ - __IO uint16_t WKUP_POL_P4_REG; /*!< (@ 0x5000011C) select the sesitivity polarity for each P3 input */ - __IO uint16_t WKUP_STATUS_0_REG; /*!< (@ 0x5000011E) Event status register for P0 and P1 */ - __IO uint16_t WKUP_STATUS_1_REG; /*!< (@ 0x50000120) Event status register for P2 */ - __IO uint16_t WKUP_STATUS_2_REG; /*!< (@ 0x50000122) Event status register for P3 and P4 */ - __IO uint16_t WKUP_CLEAR_0_REG; /*!< (@ 0x50000124) Clear event register for P0 and P1 */ - __IO uint16_t WKUP_CLEAR_1_REG; /*!< (@ 0x50000126) Clear event register for P2 */ - __IO uint16_t WKUP_CLEAR_2_REG; /*!< (@ 0x50000128) Clear event register for P3 and P4 */ - __IO uint16_t WKUP_SEL_GPIO_P0_REG; /*!< (@ 0x5000012A) select which inputs from P0 port can trigger - interrupt */ - __IO uint16_t WKUP_SEL_GPIO_P1_REG; /*!< (@ 0x5000012C) select which inputs from P1 port can trigger - interrupt */ - __IO uint16_t WKUP_SEL_GPIO_P2_REG; /*!< (@ 0x5000012E) select which inputs from P2 port can trigger - interrupt */ - __IO uint16_t WKUP_SEL_GPIO_P3_REG; /*!< (@ 0x50000130) select which inputs from P3 port can trigger - interrupt */ - __IO uint16_t WKUP_SEL_GPIO_P4_REG; /*!< (@ 0x50000132) select which inputs from P3 port can trigger - interrupt */ -} WAKEUP_Type; - - -/* ================================================================================ */ -/* ================ WDOG ================ */ -/* ================================================================================ */ - - -/** - * @brief WDOG registers (WDOG) - */ - -typedef struct { /*!< (@ 0x50003100) WDOG Structure */ - __IO uint16_t WATCHDOG_REG; /*!< (@ 0x50003100) Watchdog timer register. */ - __IO uint16_t WATCHDOG_CTRL_REG; /*!< (@ 0x50003102) Watchdog control register. */ -} WDOG_Type; - - -/* -------------------- End of section using anonymous unions ------------------- */ -#if defined(__CC_ARM) - #pragma pop -#elif defined(__ICCARM__) - /* leave anonymous unions enabled */ -#elif defined(__GNUC__) - /* anonymous unions are enabled by default */ -#elif defined(__TMS470__) - /* anonymous unions are enabled by default */ -#elif defined(__TASKING__) - #pragma warning restore -#else - #warning Not supported compiler type -#endif - - - -/* ================================================================================ */ -/* ================ struct 'NVIC' Position & Mask ================ */ -/* ================================================================================ */ - - -/* ---------------------------------- NVIC_ISER --------------------------------- */ -#define NVIC_ISER_BLE_WAKEUP_LP_IRQn_Pos (0UL) /*!< NVIC ISER: BLE_WAKEUP_LP_IRQn (Bit 0) */ -#define NVIC_ISER_BLE_WAKEUP_LP_IRQn_Msk (0x1UL) /*!< NVIC ISER: BLE_WAKEUP_LP_IRQn (Bitfield-Mask: 0x01) */ -#define NVIC_ISER_BLE_GEN_IRQn_Pos (1UL) /*!< NVIC ISER: BLE_GEN_IRQn (Bit 1) */ -#define NVIC_ISER_BLE_GEN_IRQn_Msk (0x2UL) /*!< NVIC ISER: BLE_GEN_IRQn (Bitfield-Mask: 0x01) */ -#define NVIC_ISER_FTDF_WAKEUP_IRQn_Pos (2UL) /*!< NVIC ISER: FTDF_WAKEUP_IRQn (Bit 2) */ -#define NVIC_ISER_FTDF_WAKEUP_IRQn_Msk (0x4UL) /*!< NVIC ISER: FTDF_WAKEUP_IRQn (Bitfield-Mask: 0x01) */ -#define NVIC_ISER_FTDF_GEN_IRQn_Pos (3UL) /*!< NVIC ISER: FTDF_GEN_IRQn (Bit 3) */ -#define NVIC_ISER_FTDF_GEN_IRQn_Msk (0x8UL) /*!< NVIC ISER: FTDF_GEN_IRQn (Bitfield-Mask: 0x01) */ -#define NVIC_ISER_RFCAL_IRQn_Pos (4UL) /*!< NVIC ISER: RFCAL_IRQn (Bit 4) */ -#define NVIC_ISER_RFCAL_IRQn_Msk (0x10UL) /*!< NVIC ISER: RFCAL_IRQn (Bitfield-Mask: 0x01) */ -#define NVIC_ISER_COEX_IRQn_Pos (5UL) /*!< NVIC ISER: COEX_IRQn (Bit 5) */ -#define NVIC_ISER_COEX_IRQn_Msk (0x20UL) /*!< NVIC ISER: COEX_IRQn (Bitfield-Mask: 0x01) */ -#define NVIC_ISER_CRYPTO_IRQn_Pos (6UL) /*!< NVIC ISER: CRYPTO_IRQn (Bit 6) */ -#define NVIC_ISER_CRYPTO_IRQn_Msk (0x40UL) /*!< NVIC ISER: CRYPTO_IRQn (Bitfield-Mask: 0x01) */ -#define NVIC_ISER_MRM_IRQn_Pos (7UL) /*!< NVIC ISER: MRM_IRQn (Bit 7) */ -#define NVIC_ISER_MRM_IRQn_Msk (0x80UL) /*!< NVIC ISER: MRM_IRQn (Bitfield-Mask: 0x01) */ -#define NVIC_ISER_UART_IRQn_Pos (8UL) /*!< NVIC ISER: UART_IRQn (Bit 8) */ -#define NVIC_ISER_UART_IRQn_Msk (0x100UL) /*!< NVIC ISER: UART_IRQn (Bitfield-Mask: 0x01) */ -#define NVIC_ISER_UART2_IRQn_Pos (9UL) /*!< NVIC ISER: UART2_IRQn (Bit 9) */ -#define NVIC_ISER_UART2_IRQn_Msk (0x200UL) /*!< NVIC ISER: UART2_IRQn (Bitfield-Mask: 0x01) */ -#define NVIC_ISER_I2C_IRQn_Pos (10UL) /*!< NVIC ISER: I2C_IRQn (Bit 10) */ -#define NVIC_ISER_I2C_IRQn_Msk (0x400UL) /*!< NVIC ISER: I2C_IRQn (Bitfield-Mask: 0x01) */ -#define NVIC_ISER_I2C2_IRQn_Pos (11UL) /*!< NVIC ISER: I2C2_IRQn (Bit 11) */ -#define NVIC_ISER_I2C2_IRQn_Msk (0x800UL) /*!< NVIC ISER: I2C2_IRQn (Bitfield-Mask: 0x01) */ -#define NVIC_ISER_SPI_IRQn_Pos (12UL) /*!< NVIC ISER: SPI_IRQn (Bit 12) */ -#define NVIC_ISER_SPI_IRQn_Msk (0x1000UL) /*!< NVIC ISER: SPI_IRQn (Bitfield-Mask: 0x01) */ -#define NVIC_ISER_SPI2_IRQn_Pos (13UL) /*!< NVIC ISER: SPI2_IRQn (Bit 13) */ -#define NVIC_ISER_SPI2_IRQn_Msk (0x2000UL) /*!< NVIC ISER: SPI2_IRQn (Bitfield-Mask: 0x01) */ -#define NVIC_ISER_ADC_IRQn_Pos (14UL) /*!< NVIC ISER: ADC_IRQn (Bit 14) */ -#define NVIC_ISER_ADC_IRQn_Msk (0x4000UL) /*!< NVIC ISER: ADC_IRQn (Bitfield-Mask: 0x01) */ -#define NVIC_ISER_KEYBRD_IRQn_Pos (15UL) /*!< NVIC ISER: KEYBRD_IRQn (Bit 15) */ -#define NVIC_ISER_KEYBRD_IRQn_Msk (0x8000UL) /*!< NVIC ISER: KEYBRD_IRQn (Bitfield-Mask: 0x01) */ -#define NVIC_ISER_IRGEN_IRQn_Pos (16UL) /*!< NVIC ISER: IRGEN_IRQn (Bit 16) */ -#define NVIC_ISER_IRGEN_IRQn_Msk (0x10000UL) /*!< NVIC ISER: IRGEN_IRQn (Bitfield-Mask: 0x01) */ -#define NVIC_ISER_WKUP_GPIO_IRQn_Pos (17UL) /*!< NVIC ISER: WKUP_GPIO_IRQn (Bit 17) */ -#define NVIC_ISER_WKUP_GPIO_IRQn_Msk (0x20000UL) /*!< NVIC ISER: WKUP_GPIO_IRQn (Bitfield-Mask: 0x01) */ -#define NVIC_ISER_SWTIM0_IRQn_Pos (18UL) /*!< NVIC ISER: SWTIM0_IRQn (Bit 18) */ -#define NVIC_ISER_SWTIM0_IRQn_Msk (0x40000UL) /*!< NVIC ISER: SWTIM0_IRQn (Bitfield-Mask: 0x01) */ -#define NVIC_ISER_SWTIM1_IRQn_Pos (19UL) /*!< NVIC ISER: SWTIM1_IRQn (Bit 19) */ -#define NVIC_ISER_SWTIM1_IRQn_Msk (0x80000UL) /*!< NVIC ISER: SWTIM1_IRQn (Bitfield-Mask: 0x01) */ -#define NVIC_ISER_QUADEC_IRQn_Pos (20UL) /*!< NVIC ISER: QUADEC_IRQn (Bit 20) */ -#define NVIC_ISER_QUADEC_IRQn_Msk (0x100000UL) /*!< NVIC ISER: QUADEC_IRQn (Bitfield-Mask: 0x01) */ -#define NVIC_ISER_USB_IRQn_Pos (21UL) /*!< NVIC ISER: USB_IRQn (Bit 21) */ -#define NVIC_ISER_USB_IRQn_Msk (0x200000UL) /*!< NVIC ISER: USB_IRQn (Bitfield-Mask: 0x01) */ -#define NVIC_ISER_PCM_IRQn_Pos (22UL) /*!< NVIC ISER: PCM_IRQn (Bit 22) */ -#define NVIC_ISER_PCM_IRQn_Msk (0x400000UL) /*!< NVIC ISER: PCM_IRQn (Bitfield-Mask: 0x01) */ -#define NVIC_ISER_SRC_IN_IRQn_Pos (23UL) /*!< NVIC ISER: SRC_IN_IRQn (Bit 23) */ -#define NVIC_ISER_SRC_IN_IRQn_Msk (0x800000UL) /*!< NVIC ISER: SRC_IN_IRQn (Bitfield-Mask: 0x01) */ -#define NVIC_ISER_SRC_OUT_IRQn_Pos (24UL) /*!< NVIC ISER: SRC_OUT_IRQn (Bit 24) */ -#define NVIC_ISER_SRC_OUT_IRQn_Msk (0x1000000UL) /*!< NVIC ISER: SRC_OUT_IRQn (Bitfield-Mask: 0x01) */ -#define NVIC_ISER_VBUS_IRQn_Pos (25UL) /*!< NVIC ISER: VBUS_IRQn (Bit 25) */ -#define NVIC_ISER_VBUS_IRQn_Msk (0x2000000UL) /*!< NVIC ISER: VBUS_IRQn (Bitfield-Mask: 0x01) */ -#define NVIC_ISER_DMA_IRQn_Pos (26UL) /*!< NVIC ISER: DMA_IRQn (Bit 26) */ -#define NVIC_ISER_DMA_IRQn_Msk (0x4000000UL) /*!< NVIC ISER: DMA_IRQn (Bitfield-Mask: 0x01) */ -#define NVIC_ISER_RF_DIAG_IRQn_Pos (27UL) /*!< NVIC ISER: RF_DIAG_IRQn (Bit 27) */ -#define NVIC_ISER_RF_DIAG_IRQn_Msk (0x8000000UL) /*!< NVIC ISER: RF_DIAG_IRQn (Bitfield-Mask: 0x01) */ -#define NVIC_ISER_TRNG_IRQn_Pos (28UL) /*!< NVIC ISER: TRNG_IRQn (Bit 28) */ -#define NVIC_ISER_TRNG_IRQn_Msk (0x10000000UL) /*!< NVIC ISER: TRNG_IRQn (Bitfield-Mask: 0x01) */ -#define NVIC_ISER_DCDC_IRQn_Pos (29UL) /*!< NVIC ISER: DCDC_IRQn (Bit 29) */ -#define NVIC_ISER_DCDC_IRQn_Msk (0x20000000UL) /*!< NVIC ISER: DCDC_IRQn (Bitfield-Mask: 0x01) */ -#define NVIC_ISER_XTAL16RDY_IRQn_Pos (30UL) /*!< NVIC ISER: XTAL16RDY_IRQn (Bit 30) */ -#define NVIC_ISER_XTAL16RDY_IRQn_Msk (0x40000000UL) /*!< NVIC ISER: XTAL16RDY_IRQn (Bitfield-Mask: 0x01) */ -#define NVIC_ISER_Rsvd__irq__n_Pos (31UL) /*!< NVIC ISER: Rsvd__irq__n (Bit 31) */ -#define NVIC_ISER_Rsvd__irq__n_Msk (0x80000000UL) /*!< NVIC ISER: Rsvd__irq__n (Bitfield-Mask: 0x01) */ - -/* ---------------------------------- NVIC_ICER --------------------------------- */ -#define NVIC_ICER_BLE_WAKEUP_LP_IRQn_Pos (0UL) /*!< NVIC ICER: BLE_WAKEUP_LP_IRQn (Bit 0) */ -#define NVIC_ICER_BLE_WAKEUP_LP_IRQn_Msk (0x1UL) /*!< NVIC ICER: BLE_WAKEUP_LP_IRQn (Bitfield-Mask: 0x01) */ -#define NVIC_ICER_BLE_GEN_IRQn_Pos (1UL) /*!< NVIC ICER: BLE_GEN_IRQn (Bit 1) */ -#define NVIC_ICER_BLE_GEN_IRQn_Msk (0x2UL) /*!< NVIC ICER: BLE_GEN_IRQn (Bitfield-Mask: 0x01) */ -#define NVIC_ICER_FTDF_WAKEUP_IRQn_Pos (2UL) /*!< NVIC ICER: FTDF_WAKEUP_IRQn (Bit 2) */ -#define NVIC_ICER_FTDF_WAKEUP_IRQn_Msk (0x4UL) /*!< NVIC ICER: FTDF_WAKEUP_IRQn (Bitfield-Mask: 0x01) */ -#define NVIC_ICER_FTDF_GEN_IRQn_Pos (3UL) /*!< NVIC ICER: FTDF_GEN_IRQn (Bit 3) */ -#define NVIC_ICER_FTDF_GEN_IRQn_Msk (0x8UL) /*!< NVIC ICER: FTDF_GEN_IRQn (Bitfield-Mask: 0x01) */ -#define NVIC_ICER_RFCAL_IRQn_Pos (4UL) /*!< NVIC ICER: RFCAL_IRQn (Bit 4) */ -#define NVIC_ICER_RFCAL_IRQn_Msk (0x10UL) /*!< NVIC ICER: RFCAL_IRQn (Bitfield-Mask: 0x01) */ -#define NVIC_ICER_COEX_IRQn_Pos (5UL) /*!< NVIC ICER: COEX_IRQn (Bit 5) */ -#define NVIC_ICER_COEX_IRQn_Msk (0x20UL) /*!< NVIC ICER: COEX_IRQn (Bitfield-Mask: 0x01) */ -#define NVIC_ICER_CRYPTO_IRQn_Pos (6UL) /*!< NVIC ICER: CRYPTO_IRQn (Bit 6) */ -#define NVIC_ICER_CRYPTO_IRQn_Msk (0x40UL) /*!< NVIC ICER: CRYPTO_IRQn (Bitfield-Mask: 0x01) */ -#define NVIC_ICER_MRM_IRQn_Pos (7UL) /*!< NVIC ICER: MRM_IRQn (Bit 7) */ -#define NVIC_ICER_MRM_IRQn_Msk (0x80UL) /*!< NVIC ICER: MRM_IRQn (Bitfield-Mask: 0x01) */ -#define NVIC_ICER_UART_IRQn_Pos (8UL) /*!< NVIC ICER: UART_IRQn (Bit 8) */ -#define NVIC_ICER_UART_IRQn_Msk (0x100UL) /*!< NVIC ICER: UART_IRQn (Bitfield-Mask: 0x01) */ -#define NVIC_ICER_UART2_IRQn_Pos (9UL) /*!< NVIC ICER: UART2_IRQn (Bit 9) */ -#define NVIC_ICER_UART2_IRQn_Msk (0x200UL) /*!< NVIC ICER: UART2_IRQn (Bitfield-Mask: 0x01) */ -#define NVIC_ICER_I2C_IRQn_Pos (10UL) /*!< NVIC ICER: I2C_IRQn (Bit 10) */ -#define NVIC_ICER_I2C_IRQn_Msk (0x400UL) /*!< NVIC ICER: I2C_IRQn (Bitfield-Mask: 0x01) */ -#define NVIC_ICER_I2C2_IRQn_Pos (11UL) /*!< NVIC ICER: I2C2_IRQn (Bit 11) */ -#define NVIC_ICER_I2C2_IRQn_Msk (0x800UL) /*!< NVIC ICER: I2C2_IRQn (Bitfield-Mask: 0x01) */ -#define NVIC_ICER_SPI_IRQn_Pos (12UL) /*!< NVIC ICER: SPI_IRQn (Bit 12) */ -#define NVIC_ICER_SPI_IRQn_Msk (0x1000UL) /*!< NVIC ICER: SPI_IRQn (Bitfield-Mask: 0x01) */ -#define NVIC_ICER_SPI2_IRQn_Pos (13UL) /*!< NVIC ICER: SPI2_IRQn (Bit 13) */ -#define NVIC_ICER_SPI2_IRQn_Msk (0x2000UL) /*!< NVIC ICER: SPI2_IRQn (Bitfield-Mask: 0x01) */ -#define NVIC_ICER_ADC_IRQn_Pos (14UL) /*!< NVIC ICER: ADC_IRQn (Bit 14) */ -#define NVIC_ICER_ADC_IRQn_Msk (0x4000UL) /*!< NVIC ICER: ADC_IRQn (Bitfield-Mask: 0x01) */ -#define NVIC_ICER_KEYBRD_IRQn_Pos (15UL) /*!< NVIC ICER: KEYBRD_IRQn (Bit 15) */ -#define NVIC_ICER_KEYBRD_IRQn_Msk (0x8000UL) /*!< NVIC ICER: KEYBRD_IRQn (Bitfield-Mask: 0x01) */ -#define NVIC_ICER_IRGEN_IRQn_Pos (16UL) /*!< NVIC ICER: IRGEN_IRQn (Bit 16) */ -#define NVIC_ICER_IRGEN_IRQn_Msk (0x10000UL) /*!< NVIC ICER: IRGEN_IRQn (Bitfield-Mask: 0x01) */ -#define NVIC_ICER_WKUP_GPIO_IRQn_Pos (17UL) /*!< NVIC ICER: WKUP_GPIO_IRQn (Bit 17) */ -#define NVIC_ICER_WKUP_GPIO_IRQn_Msk (0x20000UL) /*!< NVIC ICER: WKUP_GPIO_IRQn (Bitfield-Mask: 0x01) */ -#define NVIC_ICER_SWTIM0_IRQn_Pos (18UL) /*!< NVIC ICER: SWTIM0_IRQn (Bit 18) */ -#define NVIC_ICER_SWTIM0_IRQn_Msk (0x40000UL) /*!< NVIC ICER: SWTIM0_IRQn (Bitfield-Mask: 0x01) */ -#define NVIC_ICER_SWTIM1_IRQn_Pos (19UL) /*!< NVIC ICER: SWTIM1_IRQn (Bit 19) */ -#define NVIC_ICER_SWTIM1_IRQn_Msk (0x80000UL) /*!< NVIC ICER: SWTIM1_IRQn (Bitfield-Mask: 0x01) */ -#define NVIC_ICER_QUADEC_IRQn_Pos (20UL) /*!< NVIC ICER: QUADEC_IRQn (Bit 20) */ -#define NVIC_ICER_QUADEC_IRQn_Msk (0x100000UL) /*!< NVIC ICER: QUADEC_IRQn (Bitfield-Mask: 0x01) */ -#define NVIC_ICER_USB_IRQn_Pos (21UL) /*!< NVIC ICER: USB_IRQn (Bit 21) */ -#define NVIC_ICER_USB_IRQn_Msk (0x200000UL) /*!< NVIC ICER: USB_IRQn (Bitfield-Mask: 0x01) */ -#define NVIC_ICER_PCM_IRQn_Pos (22UL) /*!< NVIC ICER: PCM_IRQn (Bit 22) */ -#define NVIC_ICER_PCM_IRQn_Msk (0x400000UL) /*!< NVIC ICER: PCM_IRQn (Bitfield-Mask: 0x01) */ -#define NVIC_ICER_SRC_IN_IRQn_Pos (23UL) /*!< NVIC ICER: SRC_IN_IRQn (Bit 23) */ -#define NVIC_ICER_SRC_IN_IRQn_Msk (0x800000UL) /*!< NVIC ICER: SRC_IN_IRQn (Bitfield-Mask: 0x01) */ -#define NVIC_ICER_SRC_OUT_IRQn_Pos (24UL) /*!< NVIC ICER: SRC_OUT_IRQn (Bit 24) */ -#define NVIC_ICER_SRC_OUT_IRQn_Msk (0x1000000UL) /*!< NVIC ICER: SRC_OUT_IRQn (Bitfield-Mask: 0x01) */ -#define NVIC_ICER_VBUS_IRQn_Pos (25UL) /*!< NVIC ICER: VBUS_IRQn (Bit 25) */ -#define NVIC_ICER_VBUS_IRQn_Msk (0x2000000UL) /*!< NVIC ICER: VBUS_IRQn (Bitfield-Mask: 0x01) */ -#define NVIC_ICER_DMA_IRQn_Pos (26UL) /*!< NVIC ICER: DMA_IRQn (Bit 26) */ -#define NVIC_ICER_DMA_IRQn_Msk (0x4000000UL) /*!< NVIC ICER: DMA_IRQn (Bitfield-Mask: 0x01) */ -#define NVIC_ICER_RF_DIAG_IRQn_Pos (27UL) /*!< NVIC ICER: RF_DIAG_IRQn (Bit 27) */ -#define NVIC_ICER_RF_DIAG_IRQn_Msk (0x8000000UL) /*!< NVIC ICER: RF_DIAG_IRQn (Bitfield-Mask: 0x01) */ -#define NVIC_ICER_TRNG_IRQn_Pos (28UL) /*!< NVIC ICER: TRNG_IRQn (Bit 28) */ -#define NVIC_ICER_TRNG_IRQn_Msk (0x10000000UL) /*!< NVIC ICER: TRNG_IRQn (Bitfield-Mask: 0x01) */ -#define NVIC_ICER_DCDC_IRQn_Pos (29UL) /*!< NVIC ICER: DCDC_IRQn (Bit 29) */ -#define NVIC_ICER_DCDC_IRQn_Msk (0x20000000UL) /*!< NVIC ICER: DCDC_IRQn (Bitfield-Mask: 0x01) */ -#define NVIC_ICER_XTAL16RDY_IRQn_Pos (30UL) /*!< NVIC ICER: XTAL16RDY_IRQn (Bit 30) */ -#define NVIC_ICER_XTAL16RDY_IRQn_Msk (0x40000000UL) /*!< NVIC ICER: XTAL16RDY_IRQn (Bitfield-Mask: 0x01) */ -#define NVIC_ICER_Rsvd__irq__n_Pos (31UL) /*!< NVIC ICER: Rsvd__irq__n (Bit 31) */ -#define NVIC_ICER_Rsvd__irq__n_Msk (0x80000000UL) /*!< NVIC ICER: Rsvd__irq__n (Bitfield-Mask: 0x01) */ - -/* ---------------------------------- NVIC_ISPR --------------------------------- */ -#define NVIC_ISPR_BLE_WAKEUP_LP_IRQn_Pos (0UL) /*!< NVIC ISPR: BLE_WAKEUP_LP_IRQn (Bit 0) */ -#define NVIC_ISPR_BLE_WAKEUP_LP_IRQn_Msk (0x1UL) /*!< NVIC ISPR: BLE_WAKEUP_LP_IRQn (Bitfield-Mask: 0x01) */ -#define NVIC_ISPR_BLE_GEN_IRQn_Pos (1UL) /*!< NVIC ISPR: BLE_GEN_IRQn (Bit 1) */ -#define NVIC_ISPR_BLE_GEN_IRQn_Msk (0x2UL) /*!< NVIC ISPR: BLE_GEN_IRQn (Bitfield-Mask: 0x01) */ -#define NVIC_ISPR_FTDF_WAKEUP_IRQn_Pos (2UL) /*!< NVIC ISPR: FTDF_WAKEUP_IRQn (Bit 2) */ -#define NVIC_ISPR_FTDF_WAKEUP_IRQn_Msk (0x4UL) /*!< NVIC ISPR: FTDF_WAKEUP_IRQn (Bitfield-Mask: 0x01) */ -#define NVIC_ISPR_FTDF_GEN_IRQn_Pos (3UL) /*!< NVIC ISPR: FTDF_GEN_IRQn (Bit 3) */ -#define NVIC_ISPR_FTDF_GEN_IRQn_Msk (0x8UL) /*!< NVIC ISPR: FTDF_GEN_IRQn (Bitfield-Mask: 0x01) */ -#define NVIC_ISPR_RFCAL_IRQn_Pos (4UL) /*!< NVIC ISPR: RFCAL_IRQn (Bit 4) */ -#define NVIC_ISPR_RFCAL_IRQn_Msk (0x10UL) /*!< NVIC ISPR: RFCAL_IRQn (Bitfield-Mask: 0x01) */ -#define NVIC_ISPR_COEX_IRQn_Pos (5UL) /*!< NVIC ISPR: COEX_IRQn (Bit 5) */ -#define NVIC_ISPR_COEX_IRQn_Msk (0x20UL) /*!< NVIC ISPR: COEX_IRQn (Bitfield-Mask: 0x01) */ -#define NVIC_ISPR_CRYPTO_IRQn_Pos (6UL) /*!< NVIC ISPR: CRYPTO_IRQn (Bit 6) */ -#define NVIC_ISPR_CRYPTO_IRQn_Msk (0x40UL) /*!< NVIC ISPR: CRYPTO_IRQn (Bitfield-Mask: 0x01) */ -#define NVIC_ISPR_MRM_IRQn_Pos (7UL) /*!< NVIC ISPR: MRM_IRQn (Bit 7) */ -#define NVIC_ISPR_MRM_IRQn_Msk (0x80UL) /*!< NVIC ISPR: MRM_IRQn (Bitfield-Mask: 0x01) */ -#define NVIC_ISPR_UART_IRQn_Pos (8UL) /*!< NVIC ISPR: UART_IRQn (Bit 8) */ -#define NVIC_ISPR_UART_IRQn_Msk (0x100UL) /*!< NVIC ISPR: UART_IRQn (Bitfield-Mask: 0x01) */ -#define NVIC_ISPR_UART2_IRQn_Pos (9UL) /*!< NVIC ISPR: UART2_IRQn (Bit 9) */ -#define NVIC_ISPR_UART2_IRQn_Msk (0x200UL) /*!< NVIC ISPR: UART2_IRQn (Bitfield-Mask: 0x01) */ -#define NVIC_ISPR_I2C_IRQn_Pos (10UL) /*!< NVIC ISPR: I2C_IRQn (Bit 10) */ -#define NVIC_ISPR_I2C_IRQn_Msk (0x400UL) /*!< NVIC ISPR: I2C_IRQn (Bitfield-Mask: 0x01) */ -#define NVIC_ISPR_I2C2_IRQn_Pos (11UL) /*!< NVIC ISPR: I2C2_IRQn (Bit 11) */ -#define NVIC_ISPR_I2C2_IRQn_Msk (0x800UL) /*!< NVIC ISPR: I2C2_IRQn (Bitfield-Mask: 0x01) */ -#define NVIC_ISPR_SPI_IRQn_Pos (12UL) /*!< NVIC ISPR: SPI_IRQn (Bit 12) */ -#define NVIC_ISPR_SPI_IRQn_Msk (0x1000UL) /*!< NVIC ISPR: SPI_IRQn (Bitfield-Mask: 0x01) */ -#define NVIC_ISPR_SPI2_IRQn_Pos (13UL) /*!< NVIC ISPR: SPI2_IRQn (Bit 13) */ -#define NVIC_ISPR_SPI2_IRQn_Msk (0x2000UL) /*!< NVIC ISPR: SPI2_IRQn (Bitfield-Mask: 0x01) */ -#define NVIC_ISPR_ADC_IRQn_Pos (14UL) /*!< NVIC ISPR: ADC_IRQn (Bit 14) */ -#define NVIC_ISPR_ADC_IRQn_Msk (0x4000UL) /*!< NVIC ISPR: ADC_IRQn (Bitfield-Mask: 0x01) */ -#define NVIC_ISPR_KEYBRD_IRQn_Pos (15UL) /*!< NVIC ISPR: KEYBRD_IRQn (Bit 15) */ -#define NVIC_ISPR_KEYBRD_IRQn_Msk (0x8000UL) /*!< NVIC ISPR: KEYBRD_IRQn (Bitfield-Mask: 0x01) */ -#define NVIC_ISPR_IRGEN_IRQn_Pos (16UL) /*!< NVIC ISPR: IRGEN_IRQn (Bit 16) */ -#define NVIC_ISPR_IRGEN_IRQn_Msk (0x10000UL) /*!< NVIC ISPR: IRGEN_IRQn (Bitfield-Mask: 0x01) */ -#define NVIC_ISPR_WKUP_GPIO_IRQn_Pos (17UL) /*!< NVIC ISPR: WKUP_GPIO_IRQn (Bit 17) */ -#define NVIC_ISPR_WKUP_GPIO_IRQn_Msk (0x20000UL) /*!< NVIC ISPR: WKUP_GPIO_IRQn (Bitfield-Mask: 0x01) */ -#define NVIC_ISPR_SWTIM0_IRQn_Pos (18UL) /*!< NVIC ISPR: SWTIM0_IRQn (Bit 18) */ -#define NVIC_ISPR_SWTIM0_IRQn_Msk (0x40000UL) /*!< NVIC ISPR: SWTIM0_IRQn (Bitfield-Mask: 0x01) */ -#define NVIC_ISPR_SWTIM1_IRQn_Pos (19UL) /*!< NVIC ISPR: SWTIM1_IRQn (Bit 19) */ -#define NVIC_ISPR_SWTIM1_IRQn_Msk (0x80000UL) /*!< NVIC ISPR: SWTIM1_IRQn (Bitfield-Mask: 0x01) */ -#define NVIC_ISPR_QUADEC_IRQn_Pos (20UL) /*!< NVIC ISPR: QUADEC_IRQn (Bit 20) */ -#define NVIC_ISPR_QUADEC_IRQn_Msk (0x100000UL) /*!< NVIC ISPR: QUADEC_IRQn (Bitfield-Mask: 0x01) */ -#define NVIC_ISPR_USB_IRQn_Pos (21UL) /*!< NVIC ISPR: USB_IRQn (Bit 21) */ -#define NVIC_ISPR_USB_IRQn_Msk (0x200000UL) /*!< NVIC ISPR: USB_IRQn (Bitfield-Mask: 0x01) */ -#define NVIC_ISPR_PCM_IRQn_Pos (22UL) /*!< NVIC ISPR: PCM_IRQn (Bit 22) */ -#define NVIC_ISPR_PCM_IRQn_Msk (0x400000UL) /*!< NVIC ISPR: PCM_IRQn (Bitfield-Mask: 0x01) */ -#define NVIC_ISPR_SRC_IN_IRQn_Pos (23UL) /*!< NVIC ISPR: SRC_IN_IRQn (Bit 23) */ -#define NVIC_ISPR_SRC_IN_IRQn_Msk (0x800000UL) /*!< NVIC ISPR: SRC_IN_IRQn (Bitfield-Mask: 0x01) */ -#define NVIC_ISPR_SRC_OUT_IRQn_Pos (24UL) /*!< NVIC ISPR: SRC_OUT_IRQn (Bit 24) */ -#define NVIC_ISPR_SRC_OUT_IRQn_Msk (0x1000000UL) /*!< NVIC ISPR: SRC_OUT_IRQn (Bitfield-Mask: 0x01) */ -#define NVIC_ISPR_VBUS_IRQn_Pos (25UL) /*!< NVIC ISPR: VBUS_IRQn (Bit 25) */ -#define NVIC_ISPR_VBUS_IRQn_Msk (0x2000000UL) /*!< NVIC ISPR: VBUS_IRQn (Bitfield-Mask: 0x01) */ -#define NVIC_ISPR_DMA_IRQn_Pos (26UL) /*!< NVIC ISPR: DMA_IRQn (Bit 26) */ -#define NVIC_ISPR_DMA_IRQn_Msk (0x4000000UL) /*!< NVIC ISPR: DMA_IRQn (Bitfield-Mask: 0x01) */ -#define NVIC_ISPR_RF_DIAG_IRQn_Pos (27UL) /*!< NVIC ISPR: RF_DIAG_IRQn (Bit 27) */ -#define NVIC_ISPR_RF_DIAG_IRQn_Msk (0x8000000UL) /*!< NVIC ISPR: RF_DIAG_IRQn (Bitfield-Mask: 0x01) */ -#define NVIC_ISPR_TRNG_IRQn_Pos (28UL) /*!< NVIC ISPR: TRNG_IRQn (Bit 28) */ -#define NVIC_ISPR_TRNG_IRQn_Msk (0x10000000UL) /*!< NVIC ISPR: TRNG_IRQn (Bitfield-Mask: 0x01) */ -#define NVIC_ISPR_DCDC_IRQn_Pos (29UL) /*!< NVIC ISPR: DCDC_IRQn (Bit 29) */ -#define NVIC_ISPR_DCDC_IRQn_Msk (0x20000000UL) /*!< NVIC ISPR: DCDC_IRQn (Bitfield-Mask: 0x01) */ -#define NVIC_ISPR_XTAL16RDY_IRQn_Pos (30UL) /*!< NVIC ISPR: XTAL16RDY_IRQn (Bit 30) */ -#define NVIC_ISPR_XTAL16RDY_IRQn_Msk (0x40000000UL) /*!< NVIC ISPR: XTAL16RDY_IRQn (Bitfield-Mask: 0x01) */ -#define NVIC_ISPR_Rsvd__irq__n_Pos (31UL) /*!< NVIC ISPR: Rsvd__irq__n (Bit 31) */ -#define NVIC_ISPR_Rsvd__irq__n_Msk (0x80000000UL) /*!< NVIC ISPR: Rsvd__irq__n (Bitfield-Mask: 0x01) */ - -/* ---------------------------------- NVIC_ICPR --------------------------------- */ -#define NVIC_ICPR_BLE_WAKEUP_LP_IRQn_Pos (0UL) /*!< NVIC ICPR: BLE_WAKEUP_LP_IRQn (Bit 0) */ -#define NVIC_ICPR_BLE_WAKEUP_LP_IRQn_Msk (0x1UL) /*!< NVIC ICPR: BLE_WAKEUP_LP_IRQn (Bitfield-Mask: 0x01) */ -#define NVIC_ICPR_BLE_GEN_IRQn_Pos (1UL) /*!< NVIC ICPR: BLE_GEN_IRQn (Bit 1) */ -#define NVIC_ICPR_BLE_GEN_IRQn_Msk (0x2UL) /*!< NVIC ICPR: BLE_GEN_IRQn (Bitfield-Mask: 0x01) */ -#define NVIC_ICPR_FTDF_WAKEUP_IRQn_Pos (2UL) /*!< NVIC ICPR: FTDF_WAKEUP_IRQn (Bit 2) */ -#define NVIC_ICPR_FTDF_WAKEUP_IRQn_Msk (0x4UL) /*!< NVIC ICPR: FTDF_WAKEUP_IRQn (Bitfield-Mask: 0x01) */ -#define NVIC_ICPR_FTDF_GEN_IRQn_Pos (3UL) /*!< NVIC ICPR: FTDF_GEN_IRQn (Bit 3) */ -#define NVIC_ICPR_FTDF_GEN_IRQn_Msk (0x8UL) /*!< NVIC ICPR: FTDF_GEN_IRQn (Bitfield-Mask: 0x01) */ -#define NVIC_ICPR_RFCAL_IRQn_Pos (4UL) /*!< NVIC ICPR: RFCAL_IRQn (Bit 4) */ -#define NVIC_ICPR_RFCAL_IRQn_Msk (0x10UL) /*!< NVIC ICPR: RFCAL_IRQn (Bitfield-Mask: 0x01) */ -#define NVIC_ICPR_COEX_IRQn_Pos (5UL) /*!< NVIC ICPR: COEX_IRQn (Bit 5) */ -#define NVIC_ICPR_COEX_IRQn_Msk (0x20UL) /*!< NVIC ICPR: COEX_IRQn (Bitfield-Mask: 0x01) */ -#define NVIC_ICPR_CRYPTO_IRQn_Pos (6UL) /*!< NVIC ICPR: CRYPTO_IRQn (Bit 6) */ -#define NVIC_ICPR_CRYPTO_IRQn_Msk (0x40UL) /*!< NVIC ICPR: CRYPTO_IRQn (Bitfield-Mask: 0x01) */ -#define NVIC_ICPR_MRM_IRQn_Pos (7UL) /*!< NVIC ICPR: MRM_IRQn (Bit 7) */ -#define NVIC_ICPR_MRM_IRQn_Msk (0x80UL) /*!< NVIC ICPR: MRM_IRQn (Bitfield-Mask: 0x01) */ -#define NVIC_ICPR_UART_IRQn_Pos (8UL) /*!< NVIC ICPR: UART_IRQn (Bit 8) */ -#define NVIC_ICPR_UART_IRQn_Msk (0x100UL) /*!< NVIC ICPR: UART_IRQn (Bitfield-Mask: 0x01) */ -#define NVIC_ICPR_UART2_IRQn_Pos (9UL) /*!< NVIC ICPR: UART2_IRQn (Bit 9) */ -#define NVIC_ICPR_UART2_IRQn_Msk (0x200UL) /*!< NVIC ICPR: UART2_IRQn (Bitfield-Mask: 0x01) */ -#define NVIC_ICPR_I2C_IRQn_Pos (10UL) /*!< NVIC ICPR: I2C_IRQn (Bit 10) */ -#define NVIC_ICPR_I2C_IRQn_Msk (0x400UL) /*!< NVIC ICPR: I2C_IRQn (Bitfield-Mask: 0x01) */ -#define NVIC_ICPR_I2C2_IRQn_Pos (11UL) /*!< NVIC ICPR: I2C2_IRQn (Bit 11) */ -#define NVIC_ICPR_I2C2_IRQn_Msk (0x800UL) /*!< NVIC ICPR: I2C2_IRQn (Bitfield-Mask: 0x01) */ -#define NVIC_ICPR_SPI_IRQn_Pos (12UL) /*!< NVIC ICPR: SPI_IRQn (Bit 12) */ -#define NVIC_ICPR_SPI_IRQn_Msk (0x1000UL) /*!< NVIC ICPR: SPI_IRQn (Bitfield-Mask: 0x01) */ -#define NVIC_ICPR_SPI2_IRQn_Pos (13UL) /*!< NVIC ICPR: SPI2_IRQn (Bit 13) */ -#define NVIC_ICPR_SPI2_IRQn_Msk (0x2000UL) /*!< NVIC ICPR: SPI2_IRQn (Bitfield-Mask: 0x01) */ -#define NVIC_ICPR_ADC_IRQn_Pos (14UL) /*!< NVIC ICPR: ADC_IRQn (Bit 14) */ -#define NVIC_ICPR_ADC_IRQn_Msk (0x4000UL) /*!< NVIC ICPR: ADC_IRQn (Bitfield-Mask: 0x01) */ -#define NVIC_ICPR_KEYBRD_IRQn_Pos (15UL) /*!< NVIC ICPR: KEYBRD_IRQn (Bit 15) */ -#define NVIC_ICPR_KEYBRD_IRQn_Msk (0x8000UL) /*!< NVIC ICPR: KEYBRD_IRQn (Bitfield-Mask: 0x01) */ -#define NVIC_ICPR_IRGEN_IRQn_Pos (16UL) /*!< NVIC ICPR: IRGEN_IRQn (Bit 16) */ -#define NVIC_ICPR_IRGEN_IRQn_Msk (0x10000UL) /*!< NVIC ICPR: IRGEN_IRQn (Bitfield-Mask: 0x01) */ -#define NVIC_ICPR_WKUP_GPIO_IRQn_Pos (17UL) /*!< NVIC ICPR: WKUP_GPIO_IRQn (Bit 17) */ -#define NVIC_ICPR_WKUP_GPIO_IRQn_Msk (0x20000UL) /*!< NVIC ICPR: WKUP_GPIO_IRQn (Bitfield-Mask: 0x01) */ -#define NVIC_ICPR_SWTIM0_IRQn_Pos (18UL) /*!< NVIC ICPR: SWTIM0_IRQn (Bit 18) */ -#define NVIC_ICPR_SWTIM0_IRQn_Msk (0x40000UL) /*!< NVIC ICPR: SWTIM0_IRQn (Bitfield-Mask: 0x01) */ -#define NVIC_ICPR_SWTIM1_IRQn_Pos (19UL) /*!< NVIC ICPR: SWTIM1_IRQn (Bit 19) */ -#define NVIC_ICPR_SWTIM1_IRQn_Msk (0x80000UL) /*!< NVIC ICPR: SWTIM1_IRQn (Bitfield-Mask: 0x01) */ -#define NVIC_ICPR_QUADEC_IRQn_Pos (20UL) /*!< NVIC ICPR: QUADEC_IRQn (Bit 20) */ -#define NVIC_ICPR_QUADEC_IRQn_Msk (0x100000UL) /*!< NVIC ICPR: QUADEC_IRQn (Bitfield-Mask: 0x01) */ -#define NVIC_ICPR_USB_IRQn_Pos (21UL) /*!< NVIC ICPR: USB_IRQn (Bit 21) */ -#define NVIC_ICPR_USB_IRQn_Msk (0x200000UL) /*!< NVIC ICPR: USB_IRQn (Bitfield-Mask: 0x01) */ -#define NVIC_ICPR_PCM_IRQn_Pos (22UL) /*!< NVIC ICPR: PCM_IRQn (Bit 22) */ -#define NVIC_ICPR_PCM_IRQn_Msk (0x400000UL) /*!< NVIC ICPR: PCM_IRQn (Bitfield-Mask: 0x01) */ -#define NVIC_ICPR_SRC_IN_IRQn_Pos (23UL) /*!< NVIC ICPR: SRC_IN_IRQn (Bit 23) */ -#define NVIC_ICPR_SRC_IN_IRQn_Msk (0x800000UL) /*!< NVIC ICPR: SRC_IN_IRQn (Bitfield-Mask: 0x01) */ -#define NVIC_ICPR_SRC_OUT_IRQn_Pos (24UL) /*!< NVIC ICPR: SRC_OUT_IRQn (Bit 24) */ -#define NVIC_ICPR_SRC_OUT_IRQn_Msk (0x1000000UL) /*!< NVIC ICPR: SRC_OUT_IRQn (Bitfield-Mask: 0x01) */ -#define NVIC_ICPR_VBUS_IRQn_Pos (25UL) /*!< NVIC ICPR: VBUS_IRQn (Bit 25) */ -#define NVIC_ICPR_VBUS_IRQn_Msk (0x2000000UL) /*!< NVIC ICPR: VBUS_IRQn (Bitfield-Mask: 0x01) */ -#define NVIC_ICPR_DMA_IRQn_Pos (26UL) /*!< NVIC ICPR: DMA_IRQn (Bit 26) */ -#define NVIC_ICPR_DMA_IRQn_Msk (0x4000000UL) /*!< NVIC ICPR: DMA_IRQn (Bitfield-Mask: 0x01) */ -#define NVIC_ICPR_RF_DIAG_IRQn_Pos (27UL) /*!< NVIC ICPR: RF_DIAG_IRQn (Bit 27) */ -#define NVIC_ICPR_RF_DIAG_IRQn_Msk (0x8000000UL) /*!< NVIC ICPR: RF_DIAG_IRQn (Bitfield-Mask: 0x01) */ -#define NVIC_ICPR_TRNG_IRQn_Pos (28UL) /*!< NVIC ICPR: TRNG_IRQn (Bit 28) */ -#define NVIC_ICPR_TRNG_IRQn_Msk (0x10000000UL) /*!< NVIC ICPR: TRNG_IRQn (Bitfield-Mask: 0x01) */ -#define NVIC_ICPR_DCDC_IRQn_Pos (29UL) /*!< NVIC ICPR: DCDC_IRQn (Bit 29) */ -#define NVIC_ICPR_DCDC_IRQn_Msk (0x20000000UL) /*!< NVIC ICPR: DCDC_IRQn (Bitfield-Mask: 0x01) */ -#define NVIC_ICPR_XTAL16RDY_IRQn_Pos (30UL) /*!< NVIC ICPR: XTAL16RDY_IRQn (Bit 30) */ -#define NVIC_ICPR_XTAL16RDY_IRQn_Msk (0x40000000UL) /*!< NVIC ICPR: XTAL16RDY_IRQn (Bitfield-Mask: 0x01) */ -#define NVIC_ICPR_Rsvd__irq__n_Pos (31UL) /*!< NVIC ICPR: Rsvd__irq__n (Bit 31) */ -#define NVIC_ICPR_Rsvd__irq__n_Msk (0x80000000UL) /*!< NVIC ICPR: Rsvd__irq__n (Bitfield-Mask: 0x01) */ - -/* ---------------------------------- NVIC_IPR0 --------------------------------- */ -#define NVIC_IPR0_BLE_WAKEUP_LP_IRQn_prio_Pos (0UL) /*!< NVIC IPR0: BLE_WAKEUP_LP_IRQn_prio (Bit 0) */ -#define NVIC_IPR0_BLE_WAKEUP_LP_IRQn_prio_Msk (0xffUL) /*!< NVIC IPR0: BLE_WAKEUP_LP_IRQn_prio (Bitfield-Mask: 0xff) */ -#define NVIC_IPR0_BLE_GEN_IRQn_prio_Pos (8UL) /*!< NVIC IPR0: BLE_GEN_IRQn_prio (Bit 8) */ -#define NVIC_IPR0_BLE_GEN_IRQn_prio_Msk (0xff00UL) /*!< NVIC IPR0: BLE_GEN_IRQn_prio (Bitfield-Mask: 0xff) */ -#define NVIC_IPR0_FTDF_WAKEUP_IRQn_prio_Pos (16UL) /*!< NVIC IPR0: FTDF_WAKEUP_IRQn_prio (Bit 16) */ -#define NVIC_IPR0_FTDF_WAKEUP_IRQn_prio_Msk (0xff0000UL) /*!< NVIC IPR0: FTDF_WAKEUP_IRQn_prio (Bitfield-Mask: 0xff) */ -#define NVIC_IPR0_FTDF_GEN_IRQn_prio_Pos (24UL) /*!< NVIC IPR0: FTDF_GEN_IRQn_prio (Bit 24) */ -#define NVIC_IPR0_FTDF_GEN_IRQn_prio_Msk (0xff000000UL) /*!< NVIC IPR0: FTDF_GEN_IRQn_prio (Bitfield-Mask: 0xff) */ - -/* ---------------------------------- NVIC_IPR1 --------------------------------- */ -#define NVIC_IPR1_RFCAL_IRQn_prio_Pos (0UL) /*!< NVIC IPR1: RFCAL_IRQn_prio (Bit 0) */ -#define NVIC_IPR1_RFCAL_IRQn_prio_Msk (0xffUL) /*!< NVIC IPR1: RFCAL_IRQn_prio (Bitfield-Mask: 0xff) */ -#define NVIC_IPR1_COEX_IRQn_prio_Pos (8UL) /*!< NVIC IPR1: COEX_IRQn_prio (Bit 8) */ -#define NVIC_IPR1_COEX_IRQn_prio_Msk (0xff00UL) /*!< NVIC IPR1: COEX_IRQn_prio (Bitfield-Mask: 0xff) */ -#define NVIC_IPR1_CRYPTO_IRQn_prio_Pos (16UL) /*!< NVIC IPR1: CRYPTO_IRQn_prio (Bit 16) */ -#define NVIC_IPR1_CRYPTO_IRQn_prio_Msk (0xff0000UL) /*!< NVIC IPR1: CRYPTO_IRQn_prio (Bitfield-Mask: 0xff) */ -#define NVIC_IPR1_MRM_IRQn_prio_Pos (24UL) /*!< NVIC IPR1: MRM_IRQn_prio (Bit 24) */ -#define NVIC_IPR1_MRM_IRQn_prio_Msk (0xff000000UL) /*!< NVIC IPR1: MRM_IRQn_prio (Bitfield-Mask: 0xff) */ - -/* ---------------------------------- NVIC_IPR2 --------------------------------- */ -#define NVIC_IPR2_UART_IRQn_prio_Pos (0UL) /*!< NVIC IPR2: UART_IRQn_prio (Bit 0) */ -#define NVIC_IPR2_UART_IRQn_prio_Msk (0xffUL) /*!< NVIC IPR2: UART_IRQn_prio (Bitfield-Mask: 0xff) */ -#define NVIC_IPR2_UART2_IRQn_prio_Pos (8UL) /*!< NVIC IPR2: UART2_IRQn_prio (Bit 8) */ -#define NVIC_IPR2_UART2_IRQn_prio_Msk (0xff00UL) /*!< NVIC IPR2: UART2_IRQn_prio (Bitfield-Mask: 0xff) */ -#define NVIC_IPR2_I2C_IRQn_prio_Pos (16UL) /*!< NVIC IPR2: I2C_IRQn_prio (Bit 16) */ -#define NVIC_IPR2_I2C_IRQn_prio_Msk (0xff0000UL) /*!< NVIC IPR2: I2C_IRQn_prio (Bitfield-Mask: 0xff) */ -#define NVIC_IPR2_I2C2_IRQn_prio_Pos (24UL) /*!< NVIC IPR2: I2C2_IRQn_prio (Bit 24) */ -#define NVIC_IPR2_I2C2_IRQn_prio_Msk (0xff000000UL) /*!< NVIC IPR2: I2C2_IRQn_prio (Bitfield-Mask: 0xff) */ - -/* ---------------------------------- NVIC_IPR3 --------------------------------- */ -#define NVIC_IPR3_SPI_IRQn_prio_Pos (0UL) /*!< NVIC IPR3: SPI_IRQn_prio (Bit 0) */ -#define NVIC_IPR3_SPI_IRQn_prio_Msk (0xffUL) /*!< NVIC IPR3: SPI_IRQn_prio (Bitfield-Mask: 0xff) */ -#define NVIC_IPR3_SPI2_IRQn_prio_Pos (8UL) /*!< NVIC IPR3: SPI2_IRQn_prio (Bit 8) */ -#define NVIC_IPR3_SPI2_IRQn_prio_Msk (0xff00UL) /*!< NVIC IPR3: SPI2_IRQn_prio (Bitfield-Mask: 0xff) */ -#define NVIC_IPR3_ADC_IRQn_prio_Pos (16UL) /*!< NVIC IPR3: ADC_IRQn_prio (Bit 16) */ -#define NVIC_IPR3_ADC_IRQn_prio_Msk (0xff0000UL) /*!< NVIC IPR3: ADC_IRQn_prio (Bitfield-Mask: 0xff) */ -#define NVIC_IPR3_KEYBRD_IRQn_prio_Pos (24UL) /*!< NVIC IPR3: KEYBRD_IRQn_prio (Bit 24) */ -#define NVIC_IPR3_KEYBRD_IRQn_prio_Msk (0xff000000UL) /*!< NVIC IPR3: KEYBRD_IRQn_prio (Bitfield-Mask: 0xff) */ - -/* ---------------------------------- NVIC_IPR4 --------------------------------- */ -#define NVIC_IPR4_IRGEN_IRQn_prio_Pos (0UL) /*!< NVIC IPR4: IRGEN_IRQn_prio (Bit 0) */ -#define NVIC_IPR4_IRGEN_IRQn_prio_Msk (0xffUL) /*!< NVIC IPR4: IRGEN_IRQn_prio (Bitfield-Mask: 0xff) */ -#define NVIC_IPR4_WKUP_GPIO_IRQn_prio_Pos (8UL) /*!< NVIC IPR4: WKUP_GPIO_IRQn_prio (Bit 8) */ -#define NVIC_IPR4_WKUP_GPIO_IRQn_prio_Msk (0xff00UL) /*!< NVIC IPR4: WKUP_GPIO_IRQn_prio (Bitfield-Mask: 0xff) */ -#define NVIC_IPR4_SWTIM0_IRQn_prio_Pos (16UL) /*!< NVIC IPR4: SWTIM0_IRQn_prio (Bit 16) */ -#define NVIC_IPR4_SWTIM0_IRQn_prio_Msk (0xff0000UL) /*!< NVIC IPR4: SWTIM0_IRQn_prio (Bitfield-Mask: 0xff) */ -#define NVIC_IPR4_SWTIM1_IRQn_prio_Pos (24UL) /*!< NVIC IPR4: SWTIM1_IRQn_prio (Bit 24) */ -#define NVIC_IPR4_SWTIM1_IRQn_prio_Msk (0xff000000UL) /*!< NVIC IPR4: SWTIM1_IRQn_prio (Bitfield-Mask: 0xff) */ - -/* ---------------------------------- NVIC_IPR5 --------------------------------- */ -#define NVIC_IPR5_QUADEC_IRQn_prio_Pos (0UL) /*!< NVIC IPR5: QUADEC_IRQn_prio (Bit 0) */ -#define NVIC_IPR5_QUADEC_IRQn_prio_Msk (0xffUL) /*!< NVIC IPR5: QUADEC_IRQn_prio (Bitfield-Mask: 0xff) */ -#define NVIC_IPR5_USB_IRQn_prio_Pos (8UL) /*!< NVIC IPR5: USB_IRQn_prio (Bit 8) */ -#define NVIC_IPR5_USB_IRQn_prio_Msk (0xff00UL) /*!< NVIC IPR5: USB_IRQn_prio (Bitfield-Mask: 0xff) */ -#define NVIC_IPR5_PCM_IRQn_prio_Pos (16UL) /*!< NVIC IPR5: PCM_IRQn_prio (Bit 16) */ -#define NVIC_IPR5_PCM_IRQn_prio_Msk (0xff0000UL) /*!< NVIC IPR5: PCM_IRQn_prio (Bitfield-Mask: 0xff) */ -#define NVIC_IPR5_SRC_IN_IRQn_prio_Pos (24UL) /*!< NVIC IPR5: SRC_IN_IRQn_prio (Bit 24) */ -#define NVIC_IPR5_SRC_IN_IRQn_prio_Msk (0xff000000UL) /*!< NVIC IPR5: SRC_IN_IRQn_prio (Bitfield-Mask: 0xff) */ - -/* ---------------------------------- NVIC_IPR6 --------------------------------- */ -#define NVIC_IPR6_SRC_OUT_IRQn_prio_Pos (0UL) /*!< NVIC IPR6: SRC_OUT_IRQn_prio (Bit 0) */ -#define NVIC_IPR6_SRC_OUT_IRQn_prio_Msk (0xffUL) /*!< NVIC IPR6: SRC_OUT_IRQn_prio (Bitfield-Mask: 0xff) */ -#define NVIC_IPR6_VBUS_IRQn_prio_Pos (8UL) /*!< NVIC IPR6: VBUS_IRQn_prio (Bit 8) */ -#define NVIC_IPR6_VBUS_IRQn_prio_Msk (0xff00UL) /*!< NVIC IPR6: VBUS_IRQn_prio (Bitfield-Mask: 0xff) */ -#define NVIC_IPR6_DMA_IRQn_prio_Pos (16UL) /*!< NVIC IPR6: DMA_IRQn_prio (Bit 16) */ -#define NVIC_IPR6_DMA_IRQn_prio_Msk (0xff0000UL) /*!< NVIC IPR6: DMA_IRQn_prio (Bitfield-Mask: 0xff) */ -#define NVIC_IPR6_RF_DIAG_IRQn_prio_Pos (24UL) /*!< NVIC IPR6: RF_DIAG_IRQn_prio (Bit 24) */ -#define NVIC_IPR6_RF_DIAG_IRQn_prio_Msk (0xff000000UL) /*!< NVIC IPR6: RF_DIAG_IRQn_prio (Bitfield-Mask: 0xff) */ - -/* ---------------------------------- NVIC_IPR7 --------------------------------- */ -#define NVIC_IPR7_TRNG_IRQn_prio_Pos (0UL) /*!< NVIC IPR7: TRNG_IRQn_prio (Bit 0) */ -#define NVIC_IPR7_TRNG_IRQn_prio_Msk (0xffUL) /*!< NVIC IPR7: TRNG_IRQn_prio (Bitfield-Mask: 0xff) */ -#define NVIC_IPR7_DCDC_IRQn_prio_Pos (8UL) /*!< NVIC IPR7: DCDC_IRQn_prio (Bit 8) */ -#define NVIC_IPR7_DCDC_IRQn_prio_Msk (0xff00UL) /*!< NVIC IPR7: DCDC_IRQn_prio (Bitfield-Mask: 0xff) */ -#define NVIC_IPR7_XTAL16RDY_IRQn_prio_Pos (16UL) /*!< NVIC IPR7: XTAL16RDY_IRQn_prio (Bit 16) */ -#define NVIC_IPR7_XTAL16RDY_IRQn_prio_Msk (0xff0000UL) /*!< NVIC IPR7: XTAL16RDY_IRQn_prio (Bitfield-Mask: 0xff) */ -#define NVIC_IPR7_RESERVED31_IRQn_DONT_USE_Pos (24UL) /*!< NVIC IPR7: RESERVED31_IRQn_DONT_USE (Bit 24) */ -#define NVIC_IPR7_RESERVED31_IRQn_DONT_USE_Msk (0xff000000UL) /*!< NVIC IPR7: RESERVED31_IRQn_DONT_USE (Bitfield-Mask: 0xff) */ - - - - - - -/* ================================================================================ */ -/* ================ struct 'AES_HASH' Position & Mask ================ */ -/* ================================================================================ */ - - -/* -------------------------- AES_HASH_CRYPTO_CTRL_REG -------------------------- */ -#define AES_HASH_CRYPTO_CTRL_REG_CRYPTO_ALG_Pos (0UL) /*!< AES_HASH CRYPTO_CTRL_REG: CRYPTO_ALG (Bit 0) */ -#define AES_HASH_CRYPTO_CTRL_REG_CRYPTO_ALG_Msk (0x3UL) /*!< AES_HASH CRYPTO_CTRL_REG: CRYPTO_ALG (Bitfield-Mask: 0x03) */ -#define AES_HASH_CRYPTO_CTRL_REG_CRYPTO_ALG_MD_Pos (2UL) /*!< AES_HASH CRYPTO_CTRL_REG: CRYPTO_ALG_MD (Bit 2) */ -#define AES_HASH_CRYPTO_CTRL_REG_CRYPTO_ALG_MD_Msk (0xcUL) /*!< AES_HASH CRYPTO_CTRL_REG: CRYPTO_ALG_MD (Bitfield-Mask: 0x03) */ -#define AES_HASH_CRYPTO_CTRL_REG_CRYPTO_OUT_MD_Pos (4UL) /*!< AES_HASH CRYPTO_CTRL_REG: CRYPTO_OUT_MD (Bit 4) */ -#define AES_HASH_CRYPTO_CTRL_REG_CRYPTO_OUT_MD_Msk (0x10UL) /*!< AES_HASH CRYPTO_CTRL_REG: CRYPTO_OUT_MD (Bitfield-Mask: 0x01) */ -#define AES_HASH_CRYPTO_CTRL_REG_CRYPTO_AES_KEY_SZ_Pos (5UL) /*!< AES_HASH CRYPTO_CTRL_REG: CRYPTO_AES_KEY_SZ (Bit 5) */ -#define AES_HASH_CRYPTO_CTRL_REG_CRYPTO_AES_KEY_SZ_Msk (0x60UL) /*!< AES_HASH CRYPTO_CTRL_REG: CRYPTO_AES_KEY_SZ (Bitfield-Mask: 0x03) */ -#define AES_HASH_CRYPTO_CTRL_REG_CRYPTO_ENCDEC_Pos (7UL) /*!< AES_HASH CRYPTO_CTRL_REG: CRYPTO_ENCDEC (Bit 7) */ -#define AES_HASH_CRYPTO_CTRL_REG_CRYPTO_ENCDEC_Msk (0x80UL) /*!< AES_HASH CRYPTO_CTRL_REG: CRYPTO_ENCDEC (Bitfield-Mask: 0x01) */ -#define AES_HASH_CRYPTO_CTRL_REG_CRYPTO_IRQ_EN_Pos (8UL) /*!< AES_HASH CRYPTO_CTRL_REG: CRYPTO_IRQ_EN (Bit 8) */ -#define AES_HASH_CRYPTO_CTRL_REG_CRYPTO_IRQ_EN_Msk (0x100UL) /*!< AES_HASH CRYPTO_CTRL_REG: CRYPTO_IRQ_EN (Bitfield-Mask: 0x01) */ -#define AES_HASH_CRYPTO_CTRL_REG_CRYPTO_HASH_SEL_Pos (9UL) /*!< AES_HASH CRYPTO_CTRL_REG: CRYPTO_HASH_SEL (Bit 9) */ -#define AES_HASH_CRYPTO_CTRL_REG_CRYPTO_HASH_SEL_Msk (0x200UL) /*!< AES_HASH CRYPTO_CTRL_REG: CRYPTO_HASH_SEL (Bitfield-Mask: 0x01) */ -#define AES_HASH_CRYPTO_CTRL_REG_CRYPTO_HASH_OUT_LEN_Pos (10UL) /*!< AES_HASH CRYPTO_CTRL_REG: CRYPTO_HASH_OUT_LEN (Bit 10) */ -#define AES_HASH_CRYPTO_CTRL_REG_CRYPTO_HASH_OUT_LEN_Msk (0xfc00UL) /*!< AES_HASH CRYPTO_CTRL_REG: CRYPTO_HASH_OUT_LEN (Bitfield-Mask: 0x3f) */ -#define AES_HASH_CRYPTO_CTRL_REG_CRYPTO_MORE_IN_Pos (16UL) /*!< AES_HASH CRYPTO_CTRL_REG: CRYPTO_MORE_IN (Bit 16) */ -#define AES_HASH_CRYPTO_CTRL_REG_CRYPTO_MORE_IN_Msk (0x10000UL) /*!< AES_HASH CRYPTO_CTRL_REG: CRYPTO_MORE_IN (Bitfield-Mask: 0x01) */ -#define AES_HASH_CRYPTO_CTRL_REG_CRYPTO_AES_KEXP_Pos (17UL) /*!< AES_HASH CRYPTO_CTRL_REG: CRYPTO_AES_KEXP (Bit 17) */ -#define AES_HASH_CRYPTO_CTRL_REG_CRYPTO_AES_KEXP_Msk (0x20000UL) /*!< AES_HASH CRYPTO_CTRL_REG: CRYPTO_AES_KEXP (Bitfield-Mask: 0x01) */ - -/* -------------------------- AES_HASH_CRYPTO_START_REG ------------------------- */ -#define AES_HASH_CRYPTO_START_REG_CRYPTO_START_Pos (0UL) /*!< AES_HASH CRYPTO_START_REG: CRYPTO_START (Bit 0) */ -#define AES_HASH_CRYPTO_START_REG_CRYPTO_START_Msk (0x1UL) /*!< AES_HASH CRYPTO_START_REG: CRYPTO_START (Bitfield-Mask: 0x01) */ - -/* ----------------------- AES_HASH_CRYPTO_FETCH_ADDR_REG ----------------------- */ -#define AES_HASH_CRYPTO_FETCH_ADDR_REG_CRYPTO_FETCH_ADDR_Pos (0UL) /*!< AES_HASH CRYPTO_FETCH_ADDR_REG: CRYPTO_FETCH_ADDR (Bit 0) */ -#define AES_HASH_CRYPTO_FETCH_ADDR_REG_CRYPTO_FETCH_ADDR_Msk (0xffffffffUL) /*!< AES_HASH CRYPTO_FETCH_ADDR_REG: CRYPTO_FETCH_ADDR (Bitfield-Mask: 0xffffffff) */ - -/* --------------------------- AES_HASH_CRYPTO_LEN_REG -------------------------- */ -#define AES_HASH_CRYPTO_LEN_REG_CRYPTO_LEN_Pos (0UL) /*!< AES_HASH CRYPTO_LEN_REG: CRYPTO_LEN (Bit 0) */ -#define AES_HASH_CRYPTO_LEN_REG_CRYPTO_LEN_Msk (0xffffffUL) /*!< AES_HASH CRYPTO_LEN_REG: CRYPTO_LEN (Bitfield-Mask: 0xffffff) */ - -/* ------------------------ AES_HASH_CRYPTO_DEST_ADDR_REG ----------------------- */ -#define AES_HASH_CRYPTO_DEST_ADDR_REG_CRYPTO_DEST_ADDR_Pos (0UL) /*!< AES_HASH CRYPTO_DEST_ADDR_REG: CRYPTO_DEST_ADDR (Bit 0) */ -#define AES_HASH_CRYPTO_DEST_ADDR_REG_CRYPTO_DEST_ADDR_Msk (0xffffffffUL) /*!< AES_HASH CRYPTO_DEST_ADDR_REG: CRYPTO_DEST_ADDR (Bitfield-Mask: 0xffffffff) */ - -/* ------------------------- AES_HASH_CRYPTO_STATUS_REG ------------------------- */ -#define AES_HASH_CRYPTO_STATUS_REG_CRYPTO_INACTIVE_Pos (0UL) /*!< AES_HASH CRYPTO_STATUS_REG: CRYPTO_INACTIVE (Bit 0) */ -#define AES_HASH_CRYPTO_STATUS_REG_CRYPTO_INACTIVE_Msk (0x1UL) /*!< AES_HASH CRYPTO_STATUS_REG: CRYPTO_INACTIVE (Bitfield-Mask: 0x01) */ -#define AES_HASH_CRYPTO_STATUS_REG_CRYPTO_WAIT_FOR_IN_Pos (1UL) /*!< AES_HASH CRYPTO_STATUS_REG: CRYPTO_WAIT_FOR_IN (Bit 1) */ -#define AES_HASH_CRYPTO_STATUS_REG_CRYPTO_WAIT_FOR_IN_Msk (0x2UL) /*!< AES_HASH CRYPTO_STATUS_REG: CRYPTO_WAIT_FOR_IN (Bitfield-Mask: 0x01) */ -#define AES_HASH_CRYPTO_STATUS_REG_CRYPTO_IRQ_ST_Pos (2UL) /*!< AES_HASH CRYPTO_STATUS_REG: CRYPTO_IRQ_ST (Bit 2) */ -#define AES_HASH_CRYPTO_STATUS_REG_CRYPTO_IRQ_ST_Msk (0x4UL) /*!< AES_HASH CRYPTO_STATUS_REG: CRYPTO_IRQ_ST (Bitfield-Mask: 0x01) */ - -/* ------------------------- AES_HASH_CRYPTO_CLRIRQ_REG ------------------------- */ -#define AES_HASH_CRYPTO_CLRIRQ_REG_CRYPTO_CLRIRQ_Pos (0UL) /*!< AES_HASH CRYPTO_CLRIRQ_REG: CRYPTO_CLRIRQ (Bit 0) */ -#define AES_HASH_CRYPTO_CLRIRQ_REG_CRYPTO_CLRIRQ_Msk (0x1UL) /*!< AES_HASH CRYPTO_CLRIRQ_REG: CRYPTO_CLRIRQ (Bitfield-Mask: 0x01) */ - -/* -------------------------- AES_HASH_CRYPTO_MREG0_REG ------------------------- */ -#define AES_HASH_CRYPTO_MREG0_REG_CRYPTO_MREG0_Pos (0UL) /*!< AES_HASH CRYPTO_MREG0_REG: CRYPTO_MREG0 (Bit 0) */ -#define AES_HASH_CRYPTO_MREG0_REG_CRYPTO_MREG0_Msk (0xffffffffUL) /*!< AES_HASH CRYPTO_MREG0_REG: CRYPTO_MREG0 (Bitfield-Mask: 0xffffffff) */ - -/* -------------------------- AES_HASH_CRYPTO_MREG1_REG ------------------------- */ -#define AES_HASH_CRYPTO_MREG1_REG_CRYPTO_MREG1_Pos (0UL) /*!< AES_HASH CRYPTO_MREG1_REG: CRYPTO_MREG1 (Bit 0) */ -#define AES_HASH_CRYPTO_MREG1_REG_CRYPTO_MREG1_Msk (0xffffffffUL) /*!< AES_HASH CRYPTO_MREG1_REG: CRYPTO_MREG1 (Bitfield-Mask: 0xffffffff) */ - -/* -------------------------- AES_HASH_CRYPTO_MREG2_REG ------------------------- */ -#define AES_HASH_CRYPTO_MREG2_REG_CRYPTO_MREG2_Pos (0UL) /*!< AES_HASH CRYPTO_MREG2_REG: CRYPTO_MREG2 (Bit 0) */ -#define AES_HASH_CRYPTO_MREG2_REG_CRYPTO_MREG2_Msk (0xffffffffUL) /*!< AES_HASH CRYPTO_MREG2_REG: CRYPTO_MREG2 (Bitfield-Mask: 0xffffffff) */ - -/* -------------------------- AES_HASH_CRYPTO_MREG3_REG ------------------------- */ -#define AES_HASH_CRYPTO_MREG3_REG_CRYPTO_MREG3_Pos (0UL) /*!< AES_HASH CRYPTO_MREG3_REG: CRYPTO_MREG3 (Bit 0) */ -#define AES_HASH_CRYPTO_MREG3_REG_CRYPTO_MREG3_Msk (0xffffffffUL) /*!< AES_HASH CRYPTO_MREG3_REG: CRYPTO_MREG3 (Bitfield-Mask: 0xffffffff) */ - -/* ------------------------- AES_HASH_CRYPTO_KEYS_START ------------------------- */ -#define AES_HASH_CRYPTO_KEYS_START_CRYPTO_KEY_X_Pos (0UL) /*!< AES_HASH CRYPTO_KEYS_START: CRYPTO_KEY_X (Bit 0) */ -#define AES_HASH_CRYPTO_KEYS_START_CRYPTO_KEY_X_Msk (0xffffffffUL) /*!< AES_HASH CRYPTO_KEYS_START: CRYPTO_KEY_X (Bitfield-Mask: 0xffffffff) */ - - -/* ================================================================================ */ -/* ================ struct 'ANAMISC' Position & Mask ================ */ -/* ================================================================================ */ - - -/* ---------------------------- ANAMISC_ANA_TEST_REG ---------------------------- */ -#define ANAMISC_ANA_TEST_REG_TEST_STRUCTURE_Pos (0UL) /*!< ANAMISC ANA_TEST_REG: TEST_STRUCTURE (Bit 0) */ -#define ANAMISC_ANA_TEST_REG_TEST_STRUCTURE_Msk (0xfUL) /*!< ANAMISC ANA_TEST_REG: TEST_STRUCTURE (Bitfield-Mask: 0x0f) */ -#define ANAMISC_ANA_TEST_REG_ACORE_TESTBUS_EN_Pos (4UL) /*!< ANAMISC ANA_TEST_REG: ACORE_TESTBUS_EN (Bit 4) */ -#define ANAMISC_ANA_TEST_REG_ACORE_TESTBUS_EN_Msk (0x10UL) /*!< ANAMISC ANA_TEST_REG: ACORE_TESTBUS_EN (Bitfield-Mask: 0x01) */ - -/* -------------------------- ANAMISC_CHARGER_CTRL1_REG ------------------------- */ -#define ANAMISC_CHARGER_CTRL1_REG_CHARGE_LEVEL_Pos (0UL) /*!< ANAMISC CHARGER_CTRL1_REG: CHARGE_LEVEL (Bit 0) */ -#define ANAMISC_CHARGER_CTRL1_REG_CHARGE_LEVEL_Msk (0x1fUL) /*!< ANAMISC CHARGER_CTRL1_REG: CHARGE_LEVEL (Bitfield-Mask: 0x1f) */ -#define ANAMISC_CHARGER_CTRL1_REG_CHARGE_ON_Pos (5UL) /*!< ANAMISC CHARGER_CTRL1_REG: CHARGE_ON (Bit 5) */ -#define ANAMISC_CHARGER_CTRL1_REG_CHARGE_ON_Msk (0x20UL) /*!< ANAMISC CHARGER_CTRL1_REG: CHARGE_ON (Bitfield-Mask: 0x01) */ -#define ANAMISC_CHARGER_CTRL1_REG_NTC_DISABLE_Pos (6UL) /*!< ANAMISC CHARGER_CTRL1_REG: NTC_DISABLE (Bit 6) */ -#define ANAMISC_CHARGER_CTRL1_REG_NTC_DISABLE_Msk (0x40UL) /*!< ANAMISC CHARGER_CTRL1_REG: NTC_DISABLE (Bitfield-Mask: 0x01) */ -#define ANAMISC_CHARGER_CTRL1_REG_NTC_LOW_DISABLE_Pos (7UL) /*!< ANAMISC CHARGER_CTRL1_REG: NTC_LOW_DISABLE (Bit 7) */ -#define ANAMISC_CHARGER_CTRL1_REG_NTC_LOW_DISABLE_Msk (0x80UL) /*!< ANAMISC CHARGER_CTRL1_REG: NTC_LOW_DISABLE (Bitfield-Mask: 0x01) */ -#define ANAMISC_CHARGER_CTRL1_REG_CHARGE_CUR_Pos (8UL) /*!< ANAMISC CHARGER_CTRL1_REG: CHARGE_CUR (Bit 8) */ -#define ANAMISC_CHARGER_CTRL1_REG_CHARGE_CUR_Msk (0xf00UL) /*!< ANAMISC CHARGER_CTRL1_REG: CHARGE_CUR (Bitfield-Mask: 0x0f) */ -#define ANAMISC_CHARGER_CTRL1_REG_DIE_TEMP_SET_Pos (12UL) /*!< ANAMISC CHARGER_CTRL1_REG: DIE_TEMP_SET (Bit 12) */ -#define ANAMISC_CHARGER_CTRL1_REG_DIE_TEMP_SET_Msk (0x3000UL) /*!< ANAMISC CHARGER_CTRL1_REG: DIE_TEMP_SET (Bitfield-Mask: 0x03) */ -#define ANAMISC_CHARGER_CTRL1_REG_DIE_TEMP_DISABLE_Pos (14UL) /*!< ANAMISC CHARGER_CTRL1_REG: DIE_TEMP_DISABLE (Bit 14) */ -#define ANAMISC_CHARGER_CTRL1_REG_DIE_TEMP_DISABLE_Msk (0x4000UL) /*!< ANAMISC CHARGER_CTRL1_REG: DIE_TEMP_DISABLE (Bitfield-Mask: 0x01) */ - -/* -------------------------- ANAMISC_CHARGER_CTRL2_REG ------------------------- */ -#define ANAMISC_CHARGER_CTRL2_REG_CURRENT_GAIN_TRIM_Pos (0UL) /*!< ANAMISC CHARGER_CTRL2_REG: CURRENT_GAIN_TRIM (Bit 0) */ -#define ANAMISC_CHARGER_CTRL2_REG_CURRENT_GAIN_TRIM_Msk (0xfUL) /*!< ANAMISC CHARGER_CTRL2_REG: CURRENT_GAIN_TRIM (Bitfield-Mask: 0x0f) */ -#define ANAMISC_CHARGER_CTRL2_REG_CHARGER_VFLOAT_ADJ_Pos (4UL) /*!< ANAMISC CHARGER_CTRL2_REG: CHARGER_VFLOAT_ADJ (Bit 4) */ -#define ANAMISC_CHARGER_CTRL2_REG_CHARGER_VFLOAT_ADJ_Msk (0xf0UL) /*!< ANAMISC CHARGER_CTRL2_REG: CHARGER_VFLOAT_ADJ (Bitfield-Mask: 0x0f) */ -#define ANAMISC_CHARGER_CTRL2_REG_CURRENT_OFFSET_TRIM_Pos (8UL) /*!< ANAMISC CHARGER_CTRL2_REG: CURRENT_OFFSET_TRIM (Bit 8) */ -#define ANAMISC_CHARGER_CTRL2_REG_CURRENT_OFFSET_TRIM_Msk (0x1f00UL) /*!< ANAMISC CHARGER_CTRL2_REG: CURRENT_OFFSET_TRIM (Bitfield-Mask: 0x1f) */ -#define ANAMISC_CHARGER_CTRL2_REG_CHARGER_TEST_Pos (13UL) /*!< ANAMISC CHARGER_CTRL2_REG: CHARGER_TEST (Bit 13) */ -#define ANAMISC_CHARGER_CTRL2_REG_CHARGER_TEST_Msk (0xe000UL) /*!< ANAMISC CHARGER_CTRL2_REG: CHARGER_TEST (Bitfield-Mask: 0x07) */ - -/* ------------------------- ANAMISC_CHARGER_STATUS_REG ------------------------- */ -#define ANAMISC_CHARGER_STATUS_REG_CHARGER_CC_MODE_Pos (0UL) /*!< ANAMISC CHARGER_STATUS_REG: CHARGER_CC_MODE (Bit 0) */ -#define ANAMISC_CHARGER_STATUS_REG_CHARGER_CC_MODE_Msk (0x1UL) /*!< ANAMISC CHARGER_STATUS_REG: CHARGER_CC_MODE (Bitfield-Mask: 0x01) */ -#define ANAMISC_CHARGER_STATUS_REG_CHARGER_CV_MODE_Pos (1UL) /*!< ANAMISC CHARGER_STATUS_REG: CHARGER_CV_MODE (Bit 1) */ -#define ANAMISC_CHARGER_STATUS_REG_CHARGER_CV_MODE_Msk (0x2UL) /*!< ANAMISC CHARGER_STATUS_REG: CHARGER_CV_MODE (Bitfield-Mask: 0x01) */ -#define ANAMISC_CHARGER_STATUS_REG_END_OF_CHARGE_Pos (2UL) /*!< ANAMISC CHARGER_STATUS_REG: END_OF_CHARGE (Bit 2) */ -#define ANAMISC_CHARGER_STATUS_REG_END_OF_CHARGE_Msk (0x4UL) /*!< ANAMISC CHARGER_STATUS_REG: END_OF_CHARGE (Bitfield-Mask: 0x01) */ -#define ANAMISC_CHARGER_STATUS_REG_CHARGER_BATTEMP_LOW_Pos (3UL) /*!< ANAMISC CHARGER_STATUS_REG: CHARGER_BATTEMP_LOW (Bit 3) */ -#define ANAMISC_CHARGER_STATUS_REG_CHARGER_BATTEMP_LOW_Msk (0x8UL) /*!< ANAMISC CHARGER_STATUS_REG: CHARGER_BATTEMP_LOW (Bitfield-Mask: 0x01) */ -#define ANAMISC_CHARGER_STATUS_REG_CHARGER_BATTEMP_OK_Pos (4UL) /*!< ANAMISC CHARGER_STATUS_REG: CHARGER_BATTEMP_OK (Bit 4) */ -#define ANAMISC_CHARGER_STATUS_REG_CHARGER_BATTEMP_OK_Msk (0x10UL) /*!< ANAMISC CHARGER_STATUS_REG: CHARGER_BATTEMP_OK (Bitfield-Mask: 0x01) */ -#define ANAMISC_CHARGER_STATUS_REG_CHARGER_BATTEMP_HIGH_Pos (5UL) /*!< ANAMISC CHARGER_STATUS_REG: CHARGER_BATTEMP_HIGH (Bit 5) */ -#define ANAMISC_CHARGER_STATUS_REG_CHARGER_BATTEMP_HIGH_Msk (0x20UL) /*!< ANAMISC CHARGER_STATUS_REG: CHARGER_BATTEMP_HIGH (Bitfield-Mask: 0x01) */ -#define ANAMISC_CHARGER_STATUS_REG_CHARGER_TMODE_PROT_Pos (6UL) /*!< ANAMISC CHARGER_STATUS_REG: CHARGER_TMODE_PROT (Bit 6) */ -#define ANAMISC_CHARGER_STATUS_REG_CHARGER_TMODE_PROT_Msk (0x40UL) /*!< ANAMISC CHARGER_STATUS_REG: CHARGER_TMODE_PROT (Bitfield-Mask: 0x01) */ - -/* ---------------------------- ANAMISC_SOC_CTRL1_REG --------------------------- */ -#define ANAMISC_SOC_CTRL1_REG_SOC_ENABLE_Pos (0UL) /*!< ANAMISC SOC_CTRL1_REG: SOC_ENABLE (Bit 0) */ -#define ANAMISC_SOC_CTRL1_REG_SOC_ENABLE_Msk (0x1UL) /*!< ANAMISC SOC_CTRL1_REG: SOC_ENABLE (Bitfield-Mask: 0x01) */ -#define ANAMISC_SOC_CTRL1_REG_SOC_RESET_CHARGE_Pos (1UL) /*!< ANAMISC SOC_CTRL1_REG: SOC_RESET_CHARGE (Bit 1) */ -#define ANAMISC_SOC_CTRL1_REG_SOC_RESET_CHARGE_Msk (0x2UL) /*!< ANAMISC SOC_CTRL1_REG: SOC_RESET_CHARGE (Bitfield-Mask: 0x01) */ -#define ANAMISC_SOC_CTRL1_REG_SOC_RESET_AVG_Pos (2UL) /*!< ANAMISC SOC_CTRL1_REG: SOC_RESET_AVG (Bit 2) */ -#define ANAMISC_SOC_CTRL1_REG_SOC_RESET_AVG_Msk (0x4UL) /*!< ANAMISC SOC_CTRL1_REG: SOC_RESET_AVG (Bitfield-Mask: 0x01) */ -#define ANAMISC_SOC_CTRL1_REG_SOC_MUTE_Pos (3UL) /*!< ANAMISC SOC_CTRL1_REG: SOC_MUTE (Bit 3) */ -#define ANAMISC_SOC_CTRL1_REG_SOC_MUTE_Msk (0x8UL) /*!< ANAMISC SOC_CTRL1_REG: SOC_MUTE (Bitfield-Mask: 0x01) */ -#define ANAMISC_SOC_CTRL1_REG_SOC_GPIO_Pos (4UL) /*!< ANAMISC SOC_CTRL1_REG: SOC_GPIO (Bit 4) */ -#define ANAMISC_SOC_CTRL1_REG_SOC_GPIO_Msk (0x10UL) /*!< ANAMISC SOC_CTRL1_REG: SOC_GPIO (Bitfield-Mask: 0x01) */ -#define ANAMISC_SOC_CTRL1_REG_SOC_SIGN_Pos (5UL) /*!< ANAMISC SOC_CTRL1_REG: SOC_SIGN (Bit 5) */ -#define ANAMISC_SOC_CTRL1_REG_SOC_SIGN_Msk (0x20UL) /*!< ANAMISC SOC_CTRL1_REG: SOC_SIGN (Bitfield-Mask: 0x01) */ -#define ANAMISC_SOC_CTRL1_REG_SOC_IDAC_Pos (6UL) /*!< ANAMISC SOC_CTRL1_REG: SOC_IDAC (Bit 6) */ -#define ANAMISC_SOC_CTRL1_REG_SOC_IDAC_Msk (0xc0UL) /*!< ANAMISC SOC_CTRL1_REG: SOC_IDAC (Bitfield-Mask: 0x03) */ -#define ANAMISC_SOC_CTRL1_REG_SOC_LPF_Pos (8UL) /*!< ANAMISC SOC_CTRL1_REG: SOC_LPF (Bit 8) */ -#define ANAMISC_SOC_CTRL1_REG_SOC_LPF_Msk (0x100UL) /*!< ANAMISC SOC_CTRL1_REG: SOC_LPF (Bitfield-Mask: 0x01) */ -#define ANAMISC_SOC_CTRL1_REG_SOC_CLK_Pos (9UL) /*!< ANAMISC SOC_CTRL1_REG: SOC_CLK (Bit 9) */ -#define ANAMISC_SOC_CTRL1_REG_SOC_CLK_Msk (0xe00UL) /*!< ANAMISC SOC_CTRL1_REG: SOC_CLK (Bitfield-Mask: 0x07) */ -#define ANAMISC_SOC_CTRL1_REG_SOC_BIAS_Pos (12UL) /*!< ANAMISC SOC_CTRL1_REG: SOC_BIAS (Bit 12) */ -#define ANAMISC_SOC_CTRL1_REG_SOC_BIAS_Msk (0x3000UL) /*!< ANAMISC SOC_CTRL1_REG: SOC_BIAS (Bitfield-Mask: 0x03) */ -#define ANAMISC_SOC_CTRL1_REG_SOC_CINT_Pos (14UL) /*!< ANAMISC SOC_CTRL1_REG: SOC_CINT (Bit 14) */ -#define ANAMISC_SOC_CTRL1_REG_SOC_CINT_Msk (0xc000UL) /*!< ANAMISC SOC_CTRL1_REG: SOC_CINT (Bitfield-Mask: 0x03) */ - -/* ---------------------------- ANAMISC_SOC_CTRL2_REG --------------------------- */ -#define ANAMISC_SOC_CTRL2_REG_SOC_RVI_Pos (0UL) /*!< ANAMISC SOC_CTRL2_REG: SOC_RVI (Bit 0) */ -#define ANAMISC_SOC_CTRL2_REG_SOC_RVI_Msk (0x3UL) /*!< ANAMISC SOC_CTRL2_REG: SOC_RVI (Bitfield-Mask: 0x03) */ -#define ANAMISC_SOC_CTRL2_REG_SOC_SCYCLE_Pos (2UL) /*!< ANAMISC SOC_CTRL2_REG: SOC_SCYCLE (Bit 2) */ -#define ANAMISC_SOC_CTRL2_REG_SOC_SCYCLE_Msk (0x1cUL) /*!< ANAMISC SOC_CTRL2_REG: SOC_SCYCLE (Bitfield-Mask: 0x07) */ -#define ANAMISC_SOC_CTRL2_REG_SOC_DCYCLE_Pos (5UL) /*!< ANAMISC SOC_CTRL2_REG: SOC_DCYCLE (Bit 5) */ -#define ANAMISC_SOC_CTRL2_REG_SOC_DCYCLE_Msk (0x20UL) /*!< ANAMISC SOC_CTRL2_REG: SOC_DCYCLE (Bitfield-Mask: 0x01) */ -#define ANAMISC_SOC_CTRL2_REG_SOC_ICM_Pos (6UL) /*!< ANAMISC SOC_CTRL2_REG: SOC_ICM (Bit 6) */ -#define ANAMISC_SOC_CTRL2_REG_SOC_ICM_Msk (0xc0UL) /*!< ANAMISC SOC_CTRL2_REG: SOC_ICM (Bitfield-Mask: 0x03) */ -#define ANAMISC_SOC_CTRL2_REG_SOC_CHOP_Pos (8UL) /*!< ANAMISC SOC_CTRL2_REG: SOC_CHOP (Bit 8) */ -#define ANAMISC_SOC_CTRL2_REG_SOC_CHOP_Msk (0x700UL) /*!< ANAMISC SOC_CTRL2_REG: SOC_CHOP (Bitfield-Mask: 0x07) */ -#define ANAMISC_SOC_CTRL2_REG_SOC_CMIREG_ENABLE_Pos (11UL) /*!< ANAMISC SOC_CTRL2_REG: SOC_CMIREG_ENABLE (Bit 11) */ -#define ANAMISC_SOC_CTRL2_REG_SOC_CMIREG_ENABLE_Msk (0x800UL) /*!< ANAMISC SOC_CTRL2_REG: SOC_CMIREG_ENABLE (Bitfield-Mask: 0x01) */ -#define ANAMISC_SOC_CTRL2_REG_SOC_MAW_Pos (12UL) /*!< ANAMISC SOC_CTRL2_REG: SOC_MAW (Bit 12) */ -#define ANAMISC_SOC_CTRL2_REG_SOC_MAW_Msk (0x7000UL) /*!< ANAMISC SOC_CTRL2_REG: SOC_MAW (Bitfield-Mask: 0x07) */ -#define ANAMISC_SOC_CTRL2_REG_SOC_DYNAVG_Pos (15UL) /*!< ANAMISC SOC_CTRL2_REG: SOC_DYNAVG (Bit 15) */ -#define ANAMISC_SOC_CTRL2_REG_SOC_DYNAVG_Msk (0x8000UL) /*!< ANAMISC SOC_CTRL2_REG: SOC_DYNAVG (Bitfield-Mask: 0x01) */ - -/* ---------------------------- ANAMISC_SOC_CTRL3_REG --------------------------- */ -#define ANAMISC_SOC_CTRL3_REG_SOC_VSAT_Pos (0UL) /*!< ANAMISC SOC_CTRL3_REG: SOC_VSAT (Bit 0) */ -#define ANAMISC_SOC_CTRL3_REG_SOC_VSAT_Msk (0x3UL) /*!< ANAMISC SOC_CTRL3_REG: SOC_VSAT (Bitfield-Mask: 0x03) */ -#define ANAMISC_SOC_CTRL3_REG_SOC_DYNTARG_Pos (2UL) /*!< ANAMISC SOC_CTRL3_REG: SOC_DYNTARG (Bit 2) */ -#define ANAMISC_SOC_CTRL3_REG_SOC_DYNTARG_Msk (0x4UL) /*!< ANAMISC SOC_CTRL3_REG: SOC_DYNTARG (Bitfield-Mask: 0x01) */ -#define ANAMISC_SOC_CTRL3_REG_SOC_DYNHYS_Pos (3UL) /*!< ANAMISC SOC_CTRL3_REG: SOC_DYNHYS (Bit 3) */ -#define ANAMISC_SOC_CTRL3_REG_SOC_DYNHYS_Msk (0x8UL) /*!< ANAMISC SOC_CTRL3_REG: SOC_DYNHYS (Bitfield-Mask: 0x01) */ -#define ANAMISC_SOC_CTRL3_REG_SOC_VCMI_Pos (4UL) /*!< ANAMISC SOC_CTRL3_REG: SOC_VCMI (Bit 4) */ -#define ANAMISC_SOC_CTRL3_REG_SOC_VCMI_Msk (0x30UL) /*!< ANAMISC SOC_CTRL3_REG: SOC_VCMI (Bitfield-Mask: 0x03) */ - -/* --------------------------- ANAMISC_SOC_ADD2CH_REG --------------------------- */ -#define ANAMISC_SOC_ADD2CH_REG_SOC_ADD2CH_Pos (0UL) /*!< ANAMISC SOC_ADD2CH_REG: SOC_ADD2CH (Bit 0) */ -#define ANAMISC_SOC_ADD2CH_REG_SOC_ADD2CH_Msk (0xffffUL) /*!< ANAMISC SOC_ADD2CH_REG: SOC_ADD2CH (Bitfield-Mask: 0xffff) */ - -/* ------------------------ ANAMISC_SOC_CHARGE_CNTR1_REG ------------------------ */ -#define ANAMISC_SOC_CHARGE_CNTR1_REG_CHARGE_CNT1_Pos (0UL) /*!< ANAMISC SOC_CHARGE_CNTR1_REG: CHARGE_CNT1 (Bit 0) */ -#define ANAMISC_SOC_CHARGE_CNTR1_REG_CHARGE_CNT1_Msk (0xffffUL) /*!< ANAMISC SOC_CHARGE_CNTR1_REG: CHARGE_CNT1 (Bitfield-Mask: 0xffff) */ - -/* ------------------------ ANAMISC_SOC_CHARGE_CNTR2_REG ------------------------ */ -#define ANAMISC_SOC_CHARGE_CNTR2_REG_CHARGE_CNT2_Pos (0UL) /*!< ANAMISC SOC_CHARGE_CNTR2_REG: CHARGE_CNT2 (Bit 0) */ -#define ANAMISC_SOC_CHARGE_CNTR2_REG_CHARGE_CNT2_Msk (0xffffUL) /*!< ANAMISC SOC_CHARGE_CNTR2_REG: CHARGE_CNT2 (Bitfield-Mask: 0xffff) */ - -/* ------------------------ ANAMISC_SOC_CHARGE_CNTR3_REG ------------------------ */ -#define ANAMISC_SOC_CHARGE_CNTR3_REG_CHARGE_CNT3_Pos (0UL) /*!< ANAMISC SOC_CHARGE_CNTR3_REG: CHARGE_CNT3 (Bit 0) */ -#define ANAMISC_SOC_CHARGE_CNTR3_REG_CHARGE_CNT3_Msk (0xffUL) /*!< ANAMISC SOC_CHARGE_CNTR3_REG: CHARGE_CNT3 (Bitfield-Mask: 0xff) */ - -/* ------------------------- ANAMISC_SOC_CHARGE_AVG_REG ------------------------- */ -#define ANAMISC_SOC_CHARGE_AVG_REG_CHARGE_AVG_Pos (0UL) /*!< ANAMISC SOC_CHARGE_AVG_REG: CHARGE_AVG (Bit 0) */ -#define ANAMISC_SOC_CHARGE_AVG_REG_CHARGE_AVG_Msk (0xffffUL) /*!< ANAMISC SOC_CHARGE_AVG_REG: CHARGE_AVG (Bitfield-Mask: 0xffff) */ - -/* --------------------------- ANAMISC_SOC_STATUS_REG --------------------------- */ -#define ANAMISC_SOC_STATUS_REG_SOC_INT_OVERLOAD_Pos (0UL) /*!< ANAMISC SOC_STATUS_REG: SOC_INT_OVERLOAD (Bit 0) */ -#define ANAMISC_SOC_STATUS_REG_SOC_INT_OVERLOAD_Msk (0x1UL) /*!< ANAMISC SOC_STATUS_REG: SOC_INT_OVERLOAD (Bitfield-Mask: 0x01) */ -#define ANAMISC_SOC_STATUS_REG_SOC_INT_LOCKED_Pos (1UL) /*!< ANAMISC SOC_STATUS_REG: SOC_INT_LOCKED (Bit 1) */ -#define ANAMISC_SOC_STATUS_REG_SOC_INT_LOCKED_Msk (0x2UL) /*!< ANAMISC SOC_STATUS_REG: SOC_INT_LOCKED (Bitfield-Mask: 0x01) */ - -/* --------------------------- ANAMISC_SOC_EXT_IN_REG --------------------------- */ -#define ANAMISC_SOC_EXT_IN_REG_SOC_IDAC_VAL_Pos (0UL) /*!< ANAMISC SOC_EXT_IN_REG: SOC_IDAC_VAL (Bit 0) */ -#define ANAMISC_SOC_EXT_IN_REG_SOC_IDAC_VAL_Msk (0x1ffUL) /*!< ANAMISC SOC_EXT_IN_REG: SOC_IDAC_VAL (Bitfield-Mask: 0x1ff) */ -#define ANAMISC_SOC_EXT_IN_REG_SOC_IDAC_SIGN_Pos (9UL) /*!< ANAMISC SOC_EXT_IN_REG: SOC_IDAC_SIGN (Bit 9) */ -#define ANAMISC_SOC_EXT_IN_REG_SOC_IDAC_SIGN_Msk (0x200UL) /*!< ANAMISC SOC_EXT_IN_REG: SOC_IDAC_SIGN (Bitfield-Mask: 0x01) */ -#define ANAMISC_SOC_EXT_IN_REG_SOC_RDAC_DIS_Pos (10UL) /*!< ANAMISC SOC_EXT_IN_REG: SOC_RDAC_DIS (Bit 10) */ -#define ANAMISC_SOC_EXT_IN_REG_SOC_RDAC_DIS_Msk (0x400UL) /*!< ANAMISC SOC_EXT_IN_REG: SOC_RDAC_DIS (Bitfield-Mask: 0x01) */ -#define ANAMISC_SOC_EXT_IN_REG_SOC_NR_SCYCLE_Pos (11UL) /*!< ANAMISC SOC_EXT_IN_REG: SOC_NR_SCYCLE (Bit 11) */ -#define ANAMISC_SOC_EXT_IN_REG_SOC_NR_SCYCLE_Msk (0x3800UL) /*!< ANAMISC SOC_EXT_IN_REG: SOC_NR_SCYCLE (Bitfield-Mask: 0x07) */ -#define ANAMISC_SOC_EXT_IN_REG_SOC_EXT_SCYCLE_EN_Pos (14UL) /*!< ANAMISC SOC_EXT_IN_REG: SOC_EXT_SCYCLE_EN (Bit 14) */ -#define ANAMISC_SOC_EXT_IN_REG_SOC_EXT_SCYCLE_EN_Msk (0x4000UL) /*!< ANAMISC SOC_EXT_IN_REG: SOC_EXT_SCYCLE_EN (Bitfield-Mask: 0x01) */ -#define ANAMISC_SOC_EXT_IN_REG_SOC_EXT_IDAC_EN_Pos (15UL) /*!< ANAMISC SOC_EXT_IN_REG: SOC_EXT_IDAC_EN (Bit 15) */ -#define ANAMISC_SOC_EXT_IN_REG_SOC_EXT_IDAC_EN_Msk (0x8000UL) /*!< ANAMISC SOC_EXT_IN_REG: SOC_EXT_IDAC_EN (Bitfield-Mask: 0x01) */ - -/* --------------------------- ANAMISC_SOC_EXT_OUT_REG -------------------------- */ -#define ANAMISC_SOC_EXT_OUT_REG_SOC_HIGH_LIM_Pos (0UL) /*!< ANAMISC SOC_EXT_OUT_REG: SOC_HIGH_LIM (Bit 0) */ -#define ANAMISC_SOC_EXT_OUT_REG_SOC_HIGH_LIM_Msk (0x1UL) /*!< ANAMISC SOC_EXT_OUT_REG: SOC_HIGH_LIM (Bitfield-Mask: 0x01) */ -#define ANAMISC_SOC_EXT_OUT_REG_SOC_LOWLIM_COMP_Pos (1UL) /*!< ANAMISC SOC_EXT_OUT_REG: SOC_LOWLIM_COMP (Bit 1) */ -#define ANAMISC_SOC_EXT_OUT_REG_SOC_LOWLIM_COMP_Msk (0x2UL) /*!< ANAMISC SOC_EXT_OUT_REG: SOC_LOWLIM_COMP (Bitfield-Mask: 0x01) */ -#define ANAMISC_SOC_EXT_OUT_REG_SOC_POS_COMP_Pos (2UL) /*!< ANAMISC SOC_EXT_OUT_REG: SOC_POS_COMP (Bit 2) */ -#define ANAMISC_SOC_EXT_OUT_REG_SOC_POS_COMP_Msk (0x4UL) /*!< ANAMISC SOC_EXT_OUT_REG: SOC_POS_COMP (Bitfield-Mask: 0x01) */ -#define ANAMISC_SOC_EXT_OUT_REG_SOC_RISING_COMP_Pos (3UL) /*!< ANAMISC SOC_EXT_OUT_REG: SOC_RISING_COMP (Bit 3) */ -#define ANAMISC_SOC_EXT_OUT_REG_SOC_RISING_COMP_Msk (0x8UL) /*!< ANAMISC SOC_EXT_OUT_REG: SOC_RISING_COMP (Bitfield-Mask: 0x01) */ -#define ANAMISC_SOC_EXT_OUT_REG_SOC_STATE_Pos (4UL) /*!< ANAMISC SOC_EXT_OUT_REG: SOC_STATE (Bit 4) */ -#define ANAMISC_SOC_EXT_OUT_REG_SOC_STATE_Msk (0xf0UL) /*!< ANAMISC SOC_EXT_OUT_REG: SOC_STATE (Bitfield-Mask: 0x0f) */ -#define ANAMISC_SOC_EXT_OUT_REG_SOC_CTRL_EVENT_Pos (8UL) /*!< ANAMISC SOC_EXT_OUT_REG: SOC_CTRL_EVENT (Bit 8) */ -#define ANAMISC_SOC_EXT_OUT_REG_SOC_CTRL_EVENT_Msk (0x100UL) /*!< ANAMISC SOC_EXT_OUT_REG: SOC_CTRL_EVENT (Bitfield-Mask: 0x01) */ - -/* --------------------------- ANAMISC_CLK_REF_SEL_REG -------------------------- */ -#define ANAMISC_CLK_REF_SEL_REG_REF_CLK_SEL_Pos (0UL) /*!< ANAMISC CLK_REF_SEL_REG: REF_CLK_SEL (Bit 0) */ -#define ANAMISC_CLK_REF_SEL_REG_REF_CLK_SEL_Msk (0x3UL) /*!< ANAMISC CLK_REF_SEL_REG: REF_CLK_SEL (Bitfield-Mask: 0x03) */ -#define ANAMISC_CLK_REF_SEL_REG_REF_CAL_START_Pos (2UL) /*!< ANAMISC CLK_REF_SEL_REG: REF_CAL_START (Bit 2) */ -#define ANAMISC_CLK_REF_SEL_REG_REF_CAL_START_Msk (0x4UL) /*!< ANAMISC CLK_REF_SEL_REG: REF_CAL_START (Bitfield-Mask: 0x01) */ - -/* --------------------------- ANAMISC_CLK_REF_CNT_REG -------------------------- */ -#define ANAMISC_CLK_REF_CNT_REG_REF_CNT_VAL_Pos (0UL) /*!< ANAMISC CLK_REF_CNT_REG: REF_CNT_VAL (Bit 0) */ -#define ANAMISC_CLK_REF_CNT_REG_REF_CNT_VAL_Msk (0xffffUL) /*!< ANAMISC CLK_REF_CNT_REG: REF_CNT_VAL (Bitfield-Mask: 0xffff) */ - -/* -------------------------- ANAMISC_CLK_REF_VAL_L_REG ------------------------- */ -#define ANAMISC_CLK_REF_VAL_L_REG_XTAL_CNT_VAL_Pos (0UL) /*!< ANAMISC CLK_REF_VAL_L_REG: XTAL_CNT_VAL (Bit 0) */ -#define ANAMISC_CLK_REF_VAL_L_REG_XTAL_CNT_VAL_Msk (0xffffUL) /*!< ANAMISC CLK_REF_VAL_L_REG: XTAL_CNT_VAL (Bitfield-Mask: 0xffff) */ - -/* -------------------------- ANAMISC_CLK_REF_VAL_H_REG ------------------------- */ -#define ANAMISC_CLK_REF_VAL_H_REG_XTAL_CNT_VAL_Pos (0UL) /*!< ANAMISC CLK_REF_VAL_H_REG: XTAL_CNT_VAL (Bit 0) */ -#define ANAMISC_CLK_REF_VAL_H_REG_XTAL_CNT_VAL_Msk (0xffffUL) /*!< ANAMISC CLK_REF_VAL_H_REG: XTAL_CNT_VAL (Bitfield-Mask: 0xffff) */ - - -/* ================================================================================ */ -/* ================ struct 'APU' Position & Mask ================ */ -/* ================================================================================ */ - - -/* ------------------------------ APU_SRC1_CTRL_REG ----------------------------- */ -#define APU_SRC1_CTRL_REG_SRC_EN_Pos (0UL) /*!< APU SRC1_CTRL_REG: SRC_EN (Bit 0) */ -#define APU_SRC1_CTRL_REG_SRC_EN_Msk (0x1UL) /*!< APU SRC1_CTRL_REG: SRC_EN (Bitfield-Mask: 0x01) */ -#define APU_SRC1_CTRL_REG_SRC_IN_AMODE_Pos (1UL) /*!< APU SRC1_CTRL_REG: SRC_IN_AMODE (Bit 1) */ -#define APU_SRC1_CTRL_REG_SRC_IN_AMODE_Msk (0x2UL) /*!< APU SRC1_CTRL_REG: SRC_IN_AMODE (Bitfield-Mask: 0x01) */ -#define APU_SRC1_CTRL_REG_SRC_IN_CAL_BYPASS_Pos (2UL) /*!< APU SRC1_CTRL_REG: SRC_IN_CAL_BYPASS (Bit 2) */ -#define APU_SRC1_CTRL_REG_SRC_IN_CAL_BYPASS_Msk (0x4UL) /*!< APU SRC1_CTRL_REG: SRC_IN_CAL_BYPASS (Bitfield-Mask: 0x01) */ -#define APU_SRC1_CTRL_REG_SRC_IN_DS_Pos (4UL) /*!< APU SRC1_CTRL_REG: SRC_IN_DS (Bit 4) */ -#define APU_SRC1_CTRL_REG_SRC_IN_DS_Msk (0x30UL) /*!< APU SRC1_CTRL_REG: SRC_IN_DS (Bitfield-Mask: 0x03) */ -#define APU_SRC1_CTRL_REG_SRC_IN_OK_Pos (6UL) /*!< APU SRC1_CTRL_REG: SRC_IN_OK (Bit 6) */ -#define APU_SRC1_CTRL_REG_SRC_IN_OK_Msk (0x40UL) /*!< APU SRC1_CTRL_REG: SRC_IN_OK (Bitfield-Mask: 0x01) */ -#define APU_SRC1_CTRL_REG_SRC_DITHER_DISABLE_Pos (7UL) /*!< APU SRC1_CTRL_REG: SRC_DITHER_DISABLE (Bit 7) */ -#define APU_SRC1_CTRL_REG_SRC_DITHER_DISABLE_Msk (0x80UL) /*!< APU SRC1_CTRL_REG: SRC_DITHER_DISABLE (Bitfield-Mask: 0x01) */ -#define APU_SRC1_CTRL_REG_SRC_OUT_AMODE_Pos (13UL) /*!< APU SRC1_CTRL_REG: SRC_OUT_AMODE (Bit 13) */ -#define APU_SRC1_CTRL_REG_SRC_OUT_AMODE_Msk (0x2000UL) /*!< APU SRC1_CTRL_REG: SRC_OUT_AMODE (Bitfield-Mask: 0x01) */ -#define APU_SRC1_CTRL_REG_SRC_OUT_CAL_BYPASS_Pos (14UL) /*!< APU SRC1_CTRL_REG: SRC_OUT_CAL_BYPASS (Bit 14) */ -#define APU_SRC1_CTRL_REG_SRC_OUT_CAL_BYPASS_Msk (0x4000UL) /*!< APU SRC1_CTRL_REG: SRC_OUT_CAL_BYPASS (Bitfield-Mask: 0x01) */ -#define APU_SRC1_CTRL_REG_SRC_OUT_US_Pos (16UL) /*!< APU SRC1_CTRL_REG: SRC_OUT_US (Bit 16) */ -#define APU_SRC1_CTRL_REG_SRC_OUT_US_Msk (0x30000UL) /*!< APU SRC1_CTRL_REG: SRC_OUT_US (Bitfield-Mask: 0x03) */ -#define APU_SRC1_CTRL_REG_SRC_OUT_OK_Pos (18UL) /*!< APU SRC1_CTRL_REG: SRC_OUT_OK (Bit 18) */ -#define APU_SRC1_CTRL_REG_SRC_OUT_OK_Msk (0x40000UL) /*!< APU SRC1_CTRL_REG: SRC_OUT_OK (Bitfield-Mask: 0x01) */ -#define APU_SRC1_CTRL_REG_SRC_RESYNC_Pos (19UL) /*!< APU SRC1_CTRL_REG: SRC_RESYNC (Bit 19) */ -#define APU_SRC1_CTRL_REG_SRC_RESYNC_Msk (0x80000UL) /*!< APU SRC1_CTRL_REG: SRC_RESYNC (Bitfield-Mask: 0x01) */ -#define APU_SRC1_CTRL_REG_SRC_IN_OVFLOW_Pos (20UL) /*!< APU SRC1_CTRL_REG: SRC_IN_OVFLOW (Bit 20) */ -#define APU_SRC1_CTRL_REG_SRC_IN_OVFLOW_Msk (0x100000UL) /*!< APU SRC1_CTRL_REG: SRC_IN_OVFLOW (Bitfield-Mask: 0x01) */ -#define APU_SRC1_CTRL_REG_SRC_IN_UNFLOW_Pos (21UL) /*!< APU SRC1_CTRL_REG: SRC_IN_UNFLOW (Bit 21) */ -#define APU_SRC1_CTRL_REG_SRC_IN_UNFLOW_Msk (0x200000UL) /*!< APU SRC1_CTRL_REG: SRC_IN_UNFLOW (Bitfield-Mask: 0x01) */ -#define APU_SRC1_CTRL_REG_SRC_OUT_OVFLOW_Pos (22UL) /*!< APU SRC1_CTRL_REG: SRC_OUT_OVFLOW (Bit 22) */ -#define APU_SRC1_CTRL_REG_SRC_OUT_OVFLOW_Msk (0x400000UL) /*!< APU SRC1_CTRL_REG: SRC_OUT_OVFLOW (Bitfield-Mask: 0x01) */ -#define APU_SRC1_CTRL_REG_SRC_OUT_UNFLOW_Pos (23UL) /*!< APU SRC1_CTRL_REG: SRC_OUT_UNFLOW (Bit 23) */ -#define APU_SRC1_CTRL_REG_SRC_OUT_UNFLOW_Msk (0x800000UL) /*!< APU SRC1_CTRL_REG: SRC_OUT_UNFLOW (Bitfield-Mask: 0x01) */ -#define APU_SRC1_CTRL_REG_SRC_IN_FLOWCLR_Pos (24UL) /*!< APU SRC1_CTRL_REG: SRC_IN_FLOWCLR (Bit 24) */ -#define APU_SRC1_CTRL_REG_SRC_IN_FLOWCLR_Msk (0x1000000UL) /*!< APU SRC1_CTRL_REG: SRC_IN_FLOWCLR (Bitfield-Mask: 0x01) */ -#define APU_SRC1_CTRL_REG_SRC_OUT_FLOWCLR_Pos (25UL) /*!< APU SRC1_CTRL_REG: SRC_OUT_FLOWCLR (Bit 25) */ -#define APU_SRC1_CTRL_REG_SRC_OUT_FLOWCLR_Msk (0x2000000UL) /*!< APU SRC1_CTRL_REG: SRC_OUT_FLOWCLR (Bitfield-Mask: 0x01) */ -#define APU_SRC1_CTRL_REG_SRC_PDM_DI_DEL_Pos (26UL) /*!< APU SRC1_CTRL_REG: SRC_PDM_DI_DEL (Bit 26) */ -#define APU_SRC1_CTRL_REG_SRC_PDM_DI_DEL_Msk (0xc000000UL) /*!< APU SRC1_CTRL_REG: SRC_PDM_DI_DEL (Bitfield-Mask: 0x03) */ -#define APU_SRC1_CTRL_REG_SRC_PDM_MODE_Pos (28UL) /*!< APU SRC1_CTRL_REG: SRC_PDM_MODE (Bit 28) */ -#define APU_SRC1_CTRL_REG_SRC_PDM_MODE_Msk (0x30000000UL) /*!< APU SRC1_CTRL_REG: SRC_PDM_MODE (Bitfield-Mask: 0x03) */ -#define APU_SRC1_CTRL_REG_SRC_PDM_DO_DEL_Pos (30UL) /*!< APU SRC1_CTRL_REG: SRC_PDM_DO_DEL (Bit 30) */ -#define APU_SRC1_CTRL_REG_SRC_PDM_DO_DEL_Msk (0xc0000000UL) /*!< APU SRC1_CTRL_REG: SRC_PDM_DO_DEL (Bitfield-Mask: 0x03) */ - -/* ----------------------------- APU_SRC1_IN_FS_REG ----------------------------- */ -#define APU_SRC1_IN_FS_REG_SRC_IN_FS_Pos (0UL) /*!< APU SRC1_IN_FS_REG: SRC_IN_FS (Bit 0) */ -#define APU_SRC1_IN_FS_REG_SRC_IN_FS_Msk (0xffffffUL) /*!< APU SRC1_IN_FS_REG: SRC_IN_FS (Bitfield-Mask: 0xffffff) */ - -/* ----------------------------- APU_SRC1_OUT_FS_REG ---------------------------- */ -#define APU_SRC1_OUT_FS_REG_SRC_OUT_FS_Pos (0UL) /*!< APU SRC1_OUT_FS_REG: SRC_OUT_FS (Bit 0) */ -#define APU_SRC1_OUT_FS_REG_SRC_OUT_FS_Msk (0xffffffUL) /*!< APU SRC1_OUT_FS_REG: SRC_OUT_FS (Bitfield-Mask: 0xffffff) */ - -/* ------------------------------ APU_SRC1_IN1_REG ------------------------------ */ -#define APU_SRC1_IN1_REG_SRC_IN_Pos (8UL) /*!< APU SRC1_IN1_REG: SRC_IN (Bit 8) */ -#define APU_SRC1_IN1_REG_SRC_IN_Msk (0xffffff00UL) /*!< APU SRC1_IN1_REG: SRC_IN (Bitfield-Mask: 0xffffff) */ - -/* ------------------------------ APU_SRC1_IN2_REG ------------------------------ */ -#define APU_SRC1_IN2_REG_SRC_IN_Pos (8UL) /*!< APU SRC1_IN2_REG: SRC_IN (Bit 8) */ -#define APU_SRC1_IN2_REG_SRC_IN_Msk (0xffffff00UL) /*!< APU SRC1_IN2_REG: SRC_IN (Bitfield-Mask: 0xffffff) */ - -/* ------------------------------ APU_SRC1_OUT1_REG ----------------------------- */ -#define APU_SRC1_OUT1_REG_SRC_OUT_Pos (8UL) /*!< APU SRC1_OUT1_REG: SRC_OUT (Bit 8) */ -#define APU_SRC1_OUT1_REG_SRC_OUT_Msk (0xffffff00UL) /*!< APU SRC1_OUT1_REG: SRC_OUT (Bitfield-Mask: 0xffffff) */ - -/* ------------------------------ APU_SRC1_OUT2_REG ----------------------------- */ -#define APU_SRC1_OUT2_REG_SRC_OUT_Pos (8UL) /*!< APU SRC1_OUT2_REG: SRC_OUT (Bit 8) */ -#define APU_SRC1_OUT2_REG_SRC_OUT_Msk (0xffffff00UL) /*!< APU SRC1_OUT2_REG: SRC_OUT (Bitfield-Mask: 0xffffff) */ - -/* ------------------------------- APU_APU_MUX_REG ------------------------------ */ -#define APU_APU_MUX_REG_SRC1_MUX_IN_Pos (0UL) /*!< APU APU_MUX_REG: SRC1_MUX_IN (Bit 0) */ -#define APU_APU_MUX_REG_SRC1_MUX_IN_Msk (0x7UL) /*!< APU APU_MUX_REG: SRC1_MUX_IN (Bitfield-Mask: 0x07) */ -#define APU_APU_MUX_REG_PCM1_MUX_IN_Pos (3UL) /*!< APU APU_MUX_REG: PCM1_MUX_IN (Bit 3) */ -#define APU_APU_MUX_REG_PCM1_MUX_IN_Msk (0x38UL) /*!< APU APU_MUX_REG: PCM1_MUX_IN (Bitfield-Mask: 0x07) */ -#define APU_APU_MUX_REG_PDM1_MUX_IN_Pos (6UL) /*!< APU APU_MUX_REG: PDM1_MUX_IN (Bit 6) */ -#define APU_APU_MUX_REG_PDM1_MUX_IN_Msk (0x40UL) /*!< APU APU_MUX_REG: PDM1_MUX_IN (Bitfield-Mask: 0x01) */ - -/* ----------------------------- APU_COEF10_SET1_REG ---------------------------- */ -#define APU_COEF10_SET1_REG_SRC_COEF0_Pos (0UL) /*!< APU COEF10_SET1_REG: SRC_COEF0 (Bit 0) */ -#define APU_COEF10_SET1_REG_SRC_COEF0_Msk (0xffffUL) /*!< APU COEF10_SET1_REG: SRC_COEF0 (Bitfield-Mask: 0xffff) */ -#define APU_COEF10_SET1_REG_SRC_COEF1_Pos (16UL) /*!< APU COEF10_SET1_REG: SRC_COEF1 (Bit 16) */ -#define APU_COEF10_SET1_REG_SRC_COEF1_Msk (0xffff0000UL) /*!< APU COEF10_SET1_REG: SRC_COEF1 (Bitfield-Mask: 0xffff) */ - -/* ----------------------------- APU_COEF32_SET1_REG ---------------------------- */ -#define APU_COEF32_SET1_REG_SRC_COEF2_Pos (0UL) /*!< APU COEF32_SET1_REG: SRC_COEF2 (Bit 0) */ -#define APU_COEF32_SET1_REG_SRC_COEF2_Msk (0xffffUL) /*!< APU COEF32_SET1_REG: SRC_COEF2 (Bitfield-Mask: 0xffff) */ -#define APU_COEF32_SET1_REG_SRC_COEF3_Pos (16UL) /*!< APU COEF32_SET1_REG: SRC_COEF3 (Bit 16) */ -#define APU_COEF32_SET1_REG_SRC_COEF3_Msk (0xffff0000UL) /*!< APU COEF32_SET1_REG: SRC_COEF3 (Bitfield-Mask: 0xffff) */ - -/* ----------------------------- APU_COEF54_SET1_REG ---------------------------- */ -#define APU_COEF54_SET1_REG_SRC_COEF4_Pos (0UL) /*!< APU COEF54_SET1_REG: SRC_COEF4 (Bit 0) */ -#define APU_COEF54_SET1_REG_SRC_COEF4_Msk (0xffffUL) /*!< APU COEF54_SET1_REG: SRC_COEF4 (Bitfield-Mask: 0xffff) */ -#define APU_COEF54_SET1_REG_SRC_COEF5_Pos (16UL) /*!< APU COEF54_SET1_REG: SRC_COEF5 (Bit 16) */ -#define APU_COEF54_SET1_REG_SRC_COEF5_Msk (0xffff0000UL) /*!< APU COEF54_SET1_REG: SRC_COEF5 (Bitfield-Mask: 0xffff) */ - -/* ----------------------------- APU_COEF76_SET1_REG ---------------------------- */ -#define APU_COEF76_SET1_REG_SRC_COEF6_Pos (0UL) /*!< APU COEF76_SET1_REG: SRC_COEF6 (Bit 0) */ -#define APU_COEF76_SET1_REG_SRC_COEF6_Msk (0xffffUL) /*!< APU COEF76_SET1_REG: SRC_COEF6 (Bitfield-Mask: 0xffff) */ -#define APU_COEF76_SET1_REG_SRC_COEF7_Pos (16UL) /*!< APU COEF76_SET1_REG: SRC_COEF7 (Bit 16) */ -#define APU_COEF76_SET1_REG_SRC_COEF7_Msk (0xffff0000UL) /*!< APU COEF76_SET1_REG: SRC_COEF7 (Bitfield-Mask: 0xffff) */ - -/* ----------------------------- APU_COEF98_SET1_REG ---------------------------- */ -#define APU_COEF98_SET1_REG_SRC_COEF8_Pos (0UL) /*!< APU COEF98_SET1_REG: SRC_COEF8 (Bit 0) */ -#define APU_COEF98_SET1_REG_SRC_COEF8_Msk (0xffffUL) /*!< APU COEF98_SET1_REG: SRC_COEF8 (Bitfield-Mask: 0xffff) */ -#define APU_COEF98_SET1_REG_SRC_COEF9_Pos (16UL) /*!< APU COEF98_SET1_REG: SRC_COEF9 (Bit 16) */ -#define APU_COEF98_SET1_REG_SRC_COEF9_Msk (0xffff0000UL) /*!< APU COEF98_SET1_REG: SRC_COEF9 (Bitfield-Mask: 0xffff) */ - -/* ----------------------------- APU_COEF0A_SET1_REG ---------------------------- */ -#define APU_COEF0A_SET1_REG_SRC_COEF10_Pos (0UL) /*!< APU COEF0A_SET1_REG: SRC_COEF10 (Bit 0) */ -#define APU_COEF0A_SET1_REG_SRC_COEF10_Msk (0xffffUL) /*!< APU COEF0A_SET1_REG: SRC_COEF10 (Bitfield-Mask: 0xffff) */ - -/* ------------------------------ APU_PCM1_CTRL_REG ----------------------------- */ -#define APU_PCM1_CTRL_REG_PCM_EN_Pos (0UL) /*!< APU PCM1_CTRL_REG: PCM_EN (Bit 0) */ -#define APU_PCM1_CTRL_REG_PCM_EN_Msk (0x1UL) /*!< APU PCM1_CTRL_REG: PCM_EN (Bitfield-Mask: 0x01) */ -#define APU_PCM1_CTRL_REG_PCM_MASTER_Pos (1UL) /*!< APU PCM1_CTRL_REG: PCM_MASTER (Bit 1) */ -#define APU_PCM1_CTRL_REG_PCM_MASTER_Msk (0x2UL) /*!< APU PCM1_CTRL_REG: PCM_MASTER (Bitfield-Mask: 0x01) */ -#define APU_PCM1_CTRL_REG_PCM_FSCLEN_Pos (2UL) /*!< APU PCM1_CTRL_REG: PCM_FSCLEN (Bit 2) */ -#define APU_PCM1_CTRL_REG_PCM_FSCLEN_Msk (0x3cUL) /*!< APU PCM1_CTRL_REG: PCM_FSCLEN (Bitfield-Mask: 0x0f) */ -#define APU_PCM1_CTRL_REG_PCM_FSCDEL_Pos (6UL) /*!< APU PCM1_CTRL_REG: PCM_FSCDEL (Bit 6) */ -#define APU_PCM1_CTRL_REG_PCM_FSCDEL_Msk (0x40UL) /*!< APU PCM1_CTRL_REG: PCM_FSCDEL (Bitfield-Mask: 0x01) */ -#define APU_PCM1_CTRL_REG_PCM_PPOD_Pos (7UL) /*!< APU PCM1_CTRL_REG: PCM_PPOD (Bit 7) */ -#define APU_PCM1_CTRL_REG_PCM_PPOD_Msk (0x80UL) /*!< APU PCM1_CTRL_REG: PCM_PPOD (Bitfield-Mask: 0x01) */ -#define APU_PCM1_CTRL_REG_PCM_CLKINV_Pos (8UL) /*!< APU PCM1_CTRL_REG: PCM_CLKINV (Bit 8) */ -#define APU_PCM1_CTRL_REG_PCM_CLKINV_Msk (0x100UL) /*!< APU PCM1_CTRL_REG: PCM_CLKINV (Bitfield-Mask: 0x01) */ -#define APU_PCM1_CTRL_REG_PCM_FSCINV_Pos (9UL) /*!< APU PCM1_CTRL_REG: PCM_FSCINV (Bit 9) */ -#define APU_PCM1_CTRL_REG_PCM_FSCINV_Msk (0x200UL) /*!< APU PCM1_CTRL_REG: PCM_FSCINV (Bitfield-Mask: 0x01) */ -#define APU_PCM1_CTRL_REG_PCM_CLK_BIT_Pos (10UL) /*!< APU PCM1_CTRL_REG: PCM_CLK_BIT (Bit 10) */ -#define APU_PCM1_CTRL_REG_PCM_CLK_BIT_Msk (0x400UL) /*!< APU PCM1_CTRL_REG: PCM_CLK_BIT (Bitfield-Mask: 0x01) */ -#define APU_PCM1_CTRL_REG_PCM_CH_DEL_Pos (11UL) /*!< APU PCM1_CTRL_REG: PCM_CH_DEL (Bit 11) */ -#define APU_PCM1_CTRL_REG_PCM_CH_DEL_Msk (0xf800UL) /*!< APU PCM1_CTRL_REG: PCM_CH_DEL (Bitfield-Mask: 0x1f) */ -#define APU_PCM1_CTRL_REG_PCM_FSC_EDGE_Pos (16UL) /*!< APU PCM1_CTRL_REG: PCM_FSC_EDGE (Bit 16) */ -#define APU_PCM1_CTRL_REG_PCM_FSC_EDGE_Msk (0x10000UL) /*!< APU PCM1_CTRL_REG: PCM_FSC_EDGE (Bitfield-Mask: 0x01) */ -#define APU_PCM1_CTRL_REG_PCM_FSC_DIV_Pos (20UL) /*!< APU PCM1_CTRL_REG: PCM_FSC_DIV (Bit 20) */ -#define APU_PCM1_CTRL_REG_PCM_FSC_DIV_Msk (0xfff00000UL) /*!< APU PCM1_CTRL_REG: PCM_FSC_DIV (Bitfield-Mask: 0xfff) */ - -/* ------------------------------ APU_PCM1_IN1_REG ------------------------------ */ -#define APU_PCM1_IN1_REG_PCM_IN_Pos (0UL) /*!< APU PCM1_IN1_REG: PCM_IN (Bit 0) */ -#define APU_PCM1_IN1_REG_PCM_IN_Msk (0xffffffffUL) /*!< APU PCM1_IN1_REG: PCM_IN (Bitfield-Mask: 0xffffffff) */ - -/* ------------------------------ APU_PCM1_IN2_REG ------------------------------ */ -#define APU_PCM1_IN2_REG_PCM_IN_Pos (0UL) /*!< APU PCM1_IN2_REG: PCM_IN (Bit 0) */ -#define APU_PCM1_IN2_REG_PCM_IN_Msk (0xffffffffUL) /*!< APU PCM1_IN2_REG: PCM_IN (Bitfield-Mask: 0xffffffff) */ - -/* ------------------------------ APU_PCM1_OUT1_REG ----------------------------- */ -#define APU_PCM1_OUT1_REG_PCM_OUT_Pos (0UL) /*!< APU PCM1_OUT1_REG: PCM_OUT (Bit 0) */ -#define APU_PCM1_OUT1_REG_PCM_OUT_Msk (0xffffffffUL) /*!< APU PCM1_OUT1_REG: PCM_OUT (Bitfield-Mask: 0xffffffff) */ - -/* ------------------------------ APU_PCM1_OUT2_REG ----------------------------- */ -#define APU_PCM1_OUT2_REG_PCM_OUT_Pos (0UL) /*!< APU PCM1_OUT2_REG: PCM_OUT (Bit 0) */ -#define APU_PCM1_OUT2_REG_PCM_OUT_Msk (0xffffffffUL) /*!< APU PCM1_OUT2_REG: PCM_OUT (Bitfield-Mask: 0xffffffff) */ - - -/* ================================================================================ */ -/* ================ struct 'BLE' Position & Mask ================ */ -/* ================================================================================ */ - - -/* ---------------------------- BLE_BLE_RWBLECNTL_REG --------------------------- */ -#define BLE_BLE_RWBLECNTL_REG_SYNCERR_Pos (0UL) /*!< BLE BLE_RWBLECNTL_REG: SYNCERR (Bit 0) */ -#define BLE_BLE_RWBLECNTL_REG_SYNCERR_Msk (0x7UL) /*!< BLE BLE_RWBLECNTL_REG: SYNCERR (Bitfield-Mask: 0x07) */ -#define BLE_BLE_RWBLECNTL_REG_RXWINSZDEF_Pos (4UL) /*!< BLE BLE_RWBLECNTL_REG: RXWINSZDEF (Bit 4) */ -#define BLE_BLE_RWBLECNTL_REG_RXWINSZDEF_Msk (0xf0UL) /*!< BLE BLE_RWBLECNTL_REG: RXWINSZDEF (Bitfield-Mask: 0x0f) */ -#define BLE_BLE_RWBLECNTL_REG_RWBLE_EN_Pos (8UL) /*!< BLE BLE_RWBLECNTL_REG: RWBLE_EN (Bit 8) */ -#define BLE_BLE_RWBLECNTL_REG_RWBLE_EN_Msk (0x100UL) /*!< BLE BLE_RWBLECNTL_REG: RWBLE_EN (Bitfield-Mask: 0x01) */ -#define BLE_BLE_RWBLECNTL_REG_ADVERTFILT_EN_Pos (9UL) /*!< BLE BLE_RWBLECNTL_REG: ADVERTFILT_EN (Bit 9) */ -#define BLE_BLE_RWBLECNTL_REG_ADVERTFILT_EN_Msk (0x200UL) /*!< BLE BLE_RWBLECNTL_REG: ADVERTFILT_EN (Bitfield-Mask: 0x01) */ -#define BLE_BLE_RWBLECNTL_REG_CORR_MODE_Pos (12UL) /*!< BLE BLE_RWBLECNTL_REG: CORR_MODE (Bit 12) */ -#define BLE_BLE_RWBLECNTL_REG_CORR_MODE_Msk (0x3000UL) /*!< BLE BLE_RWBLECNTL_REG: CORR_MODE (Bitfield-Mask: 0x03) */ -#define BLE_BLE_RWBLECNTL_REG_HOP_REMAP_DSB_Pos (16UL) /*!< BLE BLE_RWBLECNTL_REG: HOP_REMAP_DSB (Bit 16) */ -#define BLE_BLE_RWBLECNTL_REG_HOP_REMAP_DSB_Msk (0x10000UL) /*!< BLE BLE_RWBLECNTL_REG: HOP_REMAP_DSB (Bitfield-Mask: 0x01) */ -#define BLE_BLE_RWBLECNTL_REG_CRC_DSB_Pos (17UL) /*!< BLE BLE_RWBLECNTL_REG: CRC_DSB (Bit 17) */ -#define BLE_BLE_RWBLECNTL_REG_CRC_DSB_Msk (0x20000UL) /*!< BLE BLE_RWBLECNTL_REG: CRC_DSB (Bitfield-Mask: 0x01) */ -#define BLE_BLE_RWBLECNTL_REG_WHIT_DSB_Pos (18UL) /*!< BLE BLE_RWBLECNTL_REG: WHIT_DSB (Bit 18) */ -#define BLE_BLE_RWBLECNTL_REG_WHIT_DSB_Msk (0x40000UL) /*!< BLE BLE_RWBLECNTL_REG: WHIT_DSB (Bitfield-Mask: 0x01) */ -#define BLE_BLE_RWBLECNTL_REG_CRYPT_DSB_Pos (19UL) /*!< BLE BLE_RWBLECNTL_REG: CRYPT_DSB (Bit 19) */ -#define BLE_BLE_RWBLECNTL_REG_CRYPT_DSB_Msk (0x80000UL) /*!< BLE BLE_RWBLECNTL_REG: CRYPT_DSB (Bitfield-Mask: 0x01) */ -#define BLE_BLE_RWBLECNTL_REG_NESN_DSB_Pos (20UL) /*!< BLE BLE_RWBLECNTL_REG: NESN_DSB (Bit 20) */ -#define BLE_BLE_RWBLECNTL_REG_NESN_DSB_Msk (0x100000UL) /*!< BLE BLE_RWBLECNTL_REG: NESN_DSB (Bitfield-Mask: 0x01) */ -#define BLE_BLE_RWBLECNTL_REG_SN_DSB_Pos (21UL) /*!< BLE BLE_RWBLECNTL_REG: SN_DSB (Bit 21) */ -#define BLE_BLE_RWBLECNTL_REG_SN_DSB_Msk (0x200000UL) /*!< BLE BLE_RWBLECNTL_REG: SN_DSB (Bitfield-Mask: 0x01) */ -#define BLE_BLE_RWBLECNTL_REG_MD_DSB_Pos (22UL) /*!< BLE BLE_RWBLECNTL_REG: MD_DSB (Bit 22) */ -#define BLE_BLE_RWBLECNTL_REG_MD_DSB_Msk (0x400000UL) /*!< BLE BLE_RWBLECNTL_REG: MD_DSB (Bitfield-Mask: 0x01) */ -#define BLE_BLE_RWBLECNTL_REG_SCAN_ABORT_Pos (24UL) /*!< BLE BLE_RWBLECNTL_REG: SCAN_ABORT (Bit 24) */ -#define BLE_BLE_RWBLECNTL_REG_SCAN_ABORT_Msk (0x1000000UL) /*!< BLE BLE_RWBLECNTL_REG: SCAN_ABORT (Bitfield-Mask: 0x01) */ -#define BLE_BLE_RWBLECNTL_REG_ADVERT_ABORT_Pos (25UL) /*!< BLE BLE_RWBLECNTL_REG: ADVERT_ABORT (Bit 25) */ -#define BLE_BLE_RWBLECNTL_REG_ADVERT_ABORT_Msk (0x2000000UL) /*!< BLE BLE_RWBLECNTL_REG: ADVERT_ABORT (Bitfield-Mask: 0x01) */ -#define BLE_BLE_RWBLECNTL_REG_RFTEST_ABORT_Pos (26UL) /*!< BLE BLE_RWBLECNTL_REG: RFTEST_ABORT (Bit 26) */ -#define BLE_BLE_RWBLECNTL_REG_RFTEST_ABORT_Msk (0x4000000UL) /*!< BLE BLE_RWBLECNTL_REG: RFTEST_ABORT (Bitfield-Mask: 0x01) */ -#define BLE_BLE_RWBLECNTL_REG_SWINT_REQ_Pos (28UL) /*!< BLE BLE_RWBLECNTL_REG: SWINT_REQ (Bit 28) */ -#define BLE_BLE_RWBLECNTL_REG_SWINT_REQ_Msk (0x10000000UL) /*!< BLE BLE_RWBLECNTL_REG: SWINT_REQ (Bitfield-Mask: 0x01) */ -#define BLE_BLE_RWBLECNTL_REG_REG_SOFT_RST_Pos (29UL) /*!< BLE BLE_RWBLECNTL_REG: REG_SOFT_RST (Bit 29) */ -#define BLE_BLE_RWBLECNTL_REG_REG_SOFT_RST_Msk (0x20000000UL) /*!< BLE BLE_RWBLECNTL_REG: REG_SOFT_RST (Bitfield-Mask: 0x01) */ -#define BLE_BLE_RWBLECNTL_REG_MASTER_TGSOFT_RST_Pos (30UL) /*!< BLE BLE_RWBLECNTL_REG: MASTER_TGSOFT_RST (Bit 30) */ -#define BLE_BLE_RWBLECNTL_REG_MASTER_TGSOFT_RST_Msk (0x40000000UL) /*!< BLE BLE_RWBLECNTL_REG: MASTER_TGSOFT_RST (Bitfield-Mask: 0x01) */ -#define BLE_BLE_RWBLECNTL_REG_MASTER_SOFT_RST_Pos (31UL) /*!< BLE BLE_RWBLECNTL_REG: MASTER_SOFT_RST (Bit 31) */ -#define BLE_BLE_RWBLECNTL_REG_MASTER_SOFT_RST_Msk (0x80000000UL) /*!< BLE BLE_RWBLECNTL_REG: MASTER_SOFT_RST (Bitfield-Mask: 0x01) */ - -/* ----------------------------- BLE_BLE_VERSION_REG ---------------------------- */ -#define BLE_BLE_VERSION_REG_BUILD_Pos (0UL) /*!< BLE BLE_VERSION_REG: BUILD (Bit 0) */ -#define BLE_BLE_VERSION_REG_BUILD_Msk (0xffUL) /*!< BLE BLE_VERSION_REG: BUILD (Bitfield-Mask: 0xff) */ -#define BLE_BLE_VERSION_REG_UPG_Pos (8UL) /*!< BLE BLE_VERSION_REG: UPG (Bit 8) */ -#define BLE_BLE_VERSION_REG_UPG_Msk (0xff00UL) /*!< BLE BLE_VERSION_REG: UPG (Bitfield-Mask: 0xff) */ -#define BLE_BLE_VERSION_REG_REL_Pos (16UL) /*!< BLE BLE_VERSION_REG: REL (Bit 16) */ -#define BLE_BLE_VERSION_REG_REL_Msk (0xff0000UL) /*!< BLE BLE_VERSION_REG: REL (Bitfield-Mask: 0xff) */ -#define BLE_BLE_VERSION_REG_TYP_Pos (24UL) /*!< BLE BLE_VERSION_REG: TYP (Bit 24) */ -#define BLE_BLE_VERSION_REG_TYP_Msk (0xff000000UL) /*!< BLE BLE_VERSION_REG: TYP (Bitfield-Mask: 0xff) */ - -/* ---------------------------- BLE_BLE_RWBLECONF_REG --------------------------- */ -#define BLE_BLE_RWBLECONF_REG_BUSWIDTH_Pos (0UL) /*!< BLE BLE_RWBLECONF_REG: BUSWIDTH (Bit 0) */ -#define BLE_BLE_RWBLECONF_REG_BUSWIDTH_Msk (0x1UL) /*!< BLE BLE_RWBLECONF_REG: BUSWIDTH (Bitfield-Mask: 0x01) */ -#define BLE_BLE_RWBLECONF_REG_USECRYPT_Pos (1UL) /*!< BLE BLE_RWBLECONF_REG: USECRYPT (Bit 1) */ -#define BLE_BLE_RWBLECONF_REG_USECRYPT_Msk (0x2UL) /*!< BLE BLE_RWBLECONF_REG: USECRYPT (Bitfield-Mask: 0x01) */ -#define BLE_BLE_RWBLECONF_REG_USEDBG_Pos (2UL) /*!< BLE BLE_RWBLECONF_REG: USEDBG (Bit 2) */ -#define BLE_BLE_RWBLECONF_REG_USEDBG_Msk (0x4UL) /*!< BLE BLE_RWBLECONF_REG: USEDBG (Bitfield-Mask: 0x01) */ -#define BLE_BLE_RWBLECONF_REG_COEX_Pos (3UL) /*!< BLE BLE_RWBLECONF_REG: COEX (Bit 3) */ -#define BLE_BLE_RWBLECONF_REG_COEX_Msk (0x8UL) /*!< BLE BLE_RWBLECONF_REG: COEX (Bitfield-Mask: 0x01) */ -#define BLE_BLE_RWBLECONF_REG_INTMODE_Pos (4UL) /*!< BLE BLE_RWBLECONF_REG: INTMODE (Bit 4) */ -#define BLE_BLE_RWBLECONF_REG_INTMODE_Msk (0x10UL) /*!< BLE BLE_RWBLECONF_REG: INTMODE (Bitfield-Mask: 0x01) */ -#define BLE_BLE_RWBLECONF_REG_DMMODE_Pos (5UL) /*!< BLE BLE_RWBLECONF_REG: DMMODE (Bit 5) */ -#define BLE_BLE_RWBLECONF_REG_DMMODE_Msk (0x20UL) /*!< BLE BLE_RWBLECONF_REG: DMMODE (Bitfield-Mask: 0x01) */ -#define BLE_BLE_RWBLECONF_REG_DECIPHER_Pos (6UL) /*!< BLE BLE_RWBLECONF_REG: DECIPHER (Bit 6) */ -#define BLE_BLE_RWBLECONF_REG_DECIPHER_Msk (0x40UL) /*!< BLE BLE_RWBLECONF_REG: DECIPHER (Bitfield-Mask: 0x01) */ -#define BLE_BLE_RWBLECONF_REG_CLK_SEL_Pos (8UL) /*!< BLE BLE_RWBLECONF_REG: CLK_SEL (Bit 8) */ -#define BLE_BLE_RWBLECONF_REG_CLK_SEL_Msk (0x3f00UL) /*!< BLE BLE_RWBLECONF_REG: CLK_SEL (Bitfield-Mask: 0x3f) */ -#define BLE_BLE_RWBLECONF_REG_RFIF_Pos (16UL) /*!< BLE BLE_RWBLECONF_REG: RFIF (Bit 16) */ -#define BLE_BLE_RWBLECONF_REG_RFIF_Msk (0x7f0000UL) /*!< BLE BLE_RWBLECONF_REG: RFIF (Bitfield-Mask: 0x7f) */ -#define BLE_BLE_RWBLECONF_REG_ADD_WIDTH_Pos (24UL) /*!< BLE BLE_RWBLECONF_REG: ADD_WIDTH (Bit 24) */ -#define BLE_BLE_RWBLECONF_REG_ADD_WIDTH_Msk (0x3f000000UL) /*!< BLE BLE_RWBLECONF_REG: ADD_WIDTH (Bitfield-Mask: 0x3f) */ - -/* ----------------------------- BLE_BLE_INTCNTL_REG ---------------------------- */ -#define BLE_BLE_INTCNTL_REG_CSCNTINTMSK_Pos (0UL) /*!< BLE BLE_INTCNTL_REG: CSCNTINTMSK (Bit 0) */ -#define BLE_BLE_INTCNTL_REG_CSCNTINTMSK_Msk (0x1UL) /*!< BLE BLE_INTCNTL_REG: CSCNTINTMSK (Bitfield-Mask: 0x01) */ -#define BLE_BLE_INTCNTL_REG_RXINTMSK_Pos (1UL) /*!< BLE BLE_INTCNTL_REG: RXINTMSK (Bit 1) */ -#define BLE_BLE_INTCNTL_REG_RXINTMSK_Msk (0x2UL) /*!< BLE BLE_INTCNTL_REG: RXINTMSK (Bitfield-Mask: 0x01) */ -#define BLE_BLE_INTCNTL_REG_SLPINTMSK_Pos (2UL) /*!< BLE BLE_INTCNTL_REG: SLPINTMSK (Bit 2) */ -#define BLE_BLE_INTCNTL_REG_SLPINTMSK_Msk (0x4UL) /*!< BLE BLE_INTCNTL_REG: SLPINTMSK (Bitfield-Mask: 0x01) */ -#define BLE_BLE_INTCNTL_REG_EVENTINTMSK_Pos (3UL) /*!< BLE BLE_INTCNTL_REG: EVENTINTMSK (Bit 3) */ -#define BLE_BLE_INTCNTL_REG_EVENTINTMSK_Msk (0x8UL) /*!< BLE BLE_INTCNTL_REG: EVENTINTMSK (Bitfield-Mask: 0x01) */ -#define BLE_BLE_INTCNTL_REG_CRYPTINTMSK_Pos (4UL) /*!< BLE BLE_INTCNTL_REG: CRYPTINTMSK (Bit 4) */ -#define BLE_BLE_INTCNTL_REG_CRYPTINTMSK_Msk (0x10UL) /*!< BLE BLE_INTCNTL_REG: CRYPTINTMSK (Bitfield-Mask: 0x01) */ -#define BLE_BLE_INTCNTL_REG_ERRORINTMSK_Pos (5UL) /*!< BLE BLE_INTCNTL_REG: ERRORINTMSK (Bit 5) */ -#define BLE_BLE_INTCNTL_REG_ERRORINTMSK_Msk (0x20UL) /*!< BLE BLE_INTCNTL_REG: ERRORINTMSK (Bitfield-Mask: 0x01) */ -#define BLE_BLE_INTCNTL_REG_GROSSTGTIMINTMSK_Pos (6UL) /*!< BLE BLE_INTCNTL_REG: GROSSTGTIMINTMSK (Bit 6) */ -#define BLE_BLE_INTCNTL_REG_GROSSTGTIMINTMSK_Msk (0x40UL) /*!< BLE BLE_INTCNTL_REG: GROSSTGTIMINTMSK (Bitfield-Mask: 0x01) */ -#define BLE_BLE_INTCNTL_REG_FINETGTIMINTMSK_Pos (7UL) /*!< BLE BLE_INTCNTL_REG: FINETGTIMINTMSK (Bit 7) */ -#define BLE_BLE_INTCNTL_REG_FINETGTIMINTMSK_Msk (0x80UL) /*!< BLE BLE_INTCNTL_REG: FINETGTIMINTMSK (Bitfield-Mask: 0x01) */ -#define BLE_BLE_INTCNTL_REG_EVENTAPFAINTMSK_Pos (8UL) /*!< BLE BLE_INTCNTL_REG: EVENTAPFAINTMSK (Bit 8) */ -#define BLE_BLE_INTCNTL_REG_EVENTAPFAINTMSK_Msk (0x100UL) /*!< BLE BLE_INTCNTL_REG: EVENTAPFAINTMSK (Bitfield-Mask: 0x01) */ -#define BLE_BLE_INTCNTL_REG_SWINTMSK_Pos (9UL) /*!< BLE BLE_INTCNTL_REG: SWINTMSK (Bit 9) */ -#define BLE_BLE_INTCNTL_REG_SWINTMSK_Msk (0x200UL) /*!< BLE BLE_INTCNTL_REG: SWINTMSK (Bitfield-Mask: 0x01) */ -#define BLE_BLE_INTCNTL_REG_CSCNTDEVMSK_Pos (15UL) /*!< BLE BLE_INTCNTL_REG: CSCNTDEVMSK (Bit 15) */ -#define BLE_BLE_INTCNTL_REG_CSCNTDEVMSK_Msk (0x8000UL) /*!< BLE BLE_INTCNTL_REG: CSCNTDEVMSK (Bitfield-Mask: 0x01) */ - -/* ----------------------------- BLE_BLE_INTSTAT_REG ---------------------------- */ -#define BLE_BLE_INTSTAT_REG_CSCNTINTSTAT_Pos (0UL) /*!< BLE BLE_INTSTAT_REG: CSCNTINTSTAT (Bit 0) */ -#define BLE_BLE_INTSTAT_REG_CSCNTINTSTAT_Msk (0x1UL) /*!< BLE BLE_INTSTAT_REG: CSCNTINTSTAT (Bitfield-Mask: 0x01) */ -#define BLE_BLE_INTSTAT_REG_RXINTSTAT_Pos (1UL) /*!< BLE BLE_INTSTAT_REG: RXINTSTAT (Bit 1) */ -#define BLE_BLE_INTSTAT_REG_RXINTSTAT_Msk (0x2UL) /*!< BLE BLE_INTSTAT_REG: RXINTSTAT (Bitfield-Mask: 0x01) */ -#define BLE_BLE_INTSTAT_REG_SLPINTSTAT_Pos (2UL) /*!< BLE BLE_INTSTAT_REG: SLPINTSTAT (Bit 2) */ -#define BLE_BLE_INTSTAT_REG_SLPINTSTAT_Msk (0x4UL) /*!< BLE BLE_INTSTAT_REG: SLPINTSTAT (Bitfield-Mask: 0x01) */ -#define BLE_BLE_INTSTAT_REG_EVENTINTSTAT_Pos (3UL) /*!< BLE BLE_INTSTAT_REG: EVENTINTSTAT (Bit 3) */ -#define BLE_BLE_INTSTAT_REG_EVENTINTSTAT_Msk (0x8UL) /*!< BLE BLE_INTSTAT_REG: EVENTINTSTAT (Bitfield-Mask: 0x01) */ -#define BLE_BLE_INTSTAT_REG_CRYPTINTSTAT_Pos (4UL) /*!< BLE BLE_INTSTAT_REG: CRYPTINTSTAT (Bit 4) */ -#define BLE_BLE_INTSTAT_REG_CRYPTINTSTAT_Msk (0x10UL) /*!< BLE BLE_INTSTAT_REG: CRYPTINTSTAT (Bitfield-Mask: 0x01) */ -#define BLE_BLE_INTSTAT_REG_ERRORINTSTAT_Pos (5UL) /*!< BLE BLE_INTSTAT_REG: ERRORINTSTAT (Bit 5) */ -#define BLE_BLE_INTSTAT_REG_ERRORINTSTAT_Msk (0x20UL) /*!< BLE BLE_INTSTAT_REG: ERRORINTSTAT (Bitfield-Mask: 0x01) */ -#define BLE_BLE_INTSTAT_REG_GROSSTGTIMINTSTAT_Pos (6UL) /*!< BLE BLE_INTSTAT_REG: GROSSTGTIMINTSTAT (Bit 6) */ -#define BLE_BLE_INTSTAT_REG_GROSSTGTIMINTSTAT_Msk (0x40UL) /*!< BLE BLE_INTSTAT_REG: GROSSTGTIMINTSTAT (Bitfield-Mask: 0x01) */ -#define BLE_BLE_INTSTAT_REG_FINETGTIMINTSTAT_Pos (7UL) /*!< BLE BLE_INTSTAT_REG: FINETGTIMINTSTAT (Bit 7) */ -#define BLE_BLE_INTSTAT_REG_FINETGTIMINTSTAT_Msk (0x80UL) /*!< BLE BLE_INTSTAT_REG: FINETGTIMINTSTAT (Bitfield-Mask: 0x01) */ -#define BLE_BLE_INTSTAT_REG_EVENTAPFAINTSTAT_Pos (8UL) /*!< BLE BLE_INTSTAT_REG: EVENTAPFAINTSTAT (Bit 8) */ -#define BLE_BLE_INTSTAT_REG_EVENTAPFAINTSTAT_Msk (0x100UL) /*!< BLE BLE_INTSTAT_REG: EVENTAPFAINTSTAT (Bitfield-Mask: 0x01) */ -#define BLE_BLE_INTSTAT_REG_SWINTSTAT_Pos (9UL) /*!< BLE BLE_INTSTAT_REG: SWINTSTAT (Bit 9) */ -#define BLE_BLE_INTSTAT_REG_SWINTSTAT_Msk (0x200UL) /*!< BLE BLE_INTSTAT_REG: SWINTSTAT (Bitfield-Mask: 0x01) */ - -/* --------------------------- BLE_BLE_INTRAWSTAT_REG --------------------------- */ -#define BLE_BLE_INTRAWSTAT_REG_CSCNTINTRAWSTAT_Pos (0UL) /*!< BLE BLE_INTRAWSTAT_REG: CSCNTINTRAWSTAT (Bit 0) */ -#define BLE_BLE_INTRAWSTAT_REG_CSCNTINTRAWSTAT_Msk (0x1UL) /*!< BLE BLE_INTRAWSTAT_REG: CSCNTINTRAWSTAT (Bitfield-Mask: 0x01) */ -#define BLE_BLE_INTRAWSTAT_REG_RXINTRAWSTAT_Pos (1UL) /*!< BLE BLE_INTRAWSTAT_REG: RXINTRAWSTAT (Bit 1) */ -#define BLE_BLE_INTRAWSTAT_REG_RXINTRAWSTAT_Msk (0x2UL) /*!< BLE BLE_INTRAWSTAT_REG: RXINTRAWSTAT (Bitfield-Mask: 0x01) */ -#define BLE_BLE_INTRAWSTAT_REG_SLPINTRAWSTAT_Pos (2UL) /*!< BLE BLE_INTRAWSTAT_REG: SLPINTRAWSTAT (Bit 2) */ -#define BLE_BLE_INTRAWSTAT_REG_SLPINTRAWSTAT_Msk (0x4UL) /*!< BLE BLE_INTRAWSTAT_REG: SLPINTRAWSTAT (Bitfield-Mask: 0x01) */ -#define BLE_BLE_INTRAWSTAT_REG_EVENTINTRAWSTAT_Pos (3UL) /*!< BLE BLE_INTRAWSTAT_REG: EVENTINTRAWSTAT (Bit 3) */ -#define BLE_BLE_INTRAWSTAT_REG_EVENTINTRAWSTAT_Msk (0x8UL) /*!< BLE BLE_INTRAWSTAT_REG: EVENTINTRAWSTAT (Bitfield-Mask: 0x01) */ -#define BLE_BLE_INTRAWSTAT_REG_CRYPTINTRAWSTAT_Pos (4UL) /*!< BLE BLE_INTRAWSTAT_REG: CRYPTINTRAWSTAT (Bit 4) */ -#define BLE_BLE_INTRAWSTAT_REG_CRYPTINTRAWSTAT_Msk (0x10UL) /*!< BLE BLE_INTRAWSTAT_REG: CRYPTINTRAWSTAT (Bitfield-Mask: 0x01) */ -#define BLE_BLE_INTRAWSTAT_REG_ERRORINTRAWSTAT_Pos (5UL) /*!< BLE BLE_INTRAWSTAT_REG: ERRORINTRAWSTAT (Bit 5) */ -#define BLE_BLE_INTRAWSTAT_REG_ERRORINTRAWSTAT_Msk (0x20UL) /*!< BLE BLE_INTRAWSTAT_REG: ERRORINTRAWSTAT (Bitfield-Mask: 0x01) */ -#define BLE_BLE_INTRAWSTAT_REG_GROSSTGTIMINTRAWSTAT_Pos (6UL) /*!< BLE BLE_INTRAWSTAT_REG: GROSSTGTIMINTRAWSTAT (Bit 6) */ -#define BLE_BLE_INTRAWSTAT_REG_GROSSTGTIMINTRAWSTAT_Msk (0x40UL) /*!< BLE BLE_INTRAWSTAT_REG: GROSSTGTIMINTRAWSTAT (Bitfield-Mask: 0x01) */ -#define BLE_BLE_INTRAWSTAT_REG_FINETGTIMINTRAWSTAT_Pos (7UL) /*!< BLE BLE_INTRAWSTAT_REG: FINETGTIMINTRAWSTAT (Bit 7) */ -#define BLE_BLE_INTRAWSTAT_REG_FINETGTIMINTRAWSTAT_Msk (0x80UL) /*!< BLE BLE_INTRAWSTAT_REG: FINETGTIMINTRAWSTAT (Bitfield-Mask: 0x01) */ -#define BLE_BLE_INTRAWSTAT_REG_EVENTAPFAINTRAWSTAT_Pos (8UL) /*!< BLE BLE_INTRAWSTAT_REG: EVENTAPFAINTRAWSTAT (Bit 8) */ -#define BLE_BLE_INTRAWSTAT_REG_EVENTAPFAINTRAWSTAT_Msk (0x100UL) /*!< BLE BLE_INTRAWSTAT_REG: EVENTAPFAINTRAWSTAT (Bitfield-Mask: 0x01) */ -#define BLE_BLE_INTRAWSTAT_REG_SWINTRAWSTAT_Pos (9UL) /*!< BLE BLE_INTRAWSTAT_REG: SWINTRAWSTAT (Bit 9) */ -#define BLE_BLE_INTRAWSTAT_REG_SWINTRAWSTAT_Msk (0x200UL) /*!< BLE BLE_INTRAWSTAT_REG: SWINTRAWSTAT (Bitfield-Mask: 0x01) */ - -/* ----------------------------- BLE_BLE_INTACK_REG ----------------------------- */ -#define BLE_BLE_INTACK_REG_CSCNTINTACK_Pos (0UL) /*!< BLE BLE_INTACK_REG: CSCNTINTACK (Bit 0) */ -#define BLE_BLE_INTACK_REG_CSCNTINTACK_Msk (0x1UL) /*!< BLE BLE_INTACK_REG: CSCNTINTACK (Bitfield-Mask: 0x01) */ -#define BLE_BLE_INTACK_REG_RXINTACK_Pos (1UL) /*!< BLE BLE_INTACK_REG: RXINTACK (Bit 1) */ -#define BLE_BLE_INTACK_REG_RXINTACK_Msk (0x2UL) /*!< BLE BLE_INTACK_REG: RXINTACK (Bitfield-Mask: 0x01) */ -#define BLE_BLE_INTACK_REG_SLPINTACK_Pos (2UL) /*!< BLE BLE_INTACK_REG: SLPINTACK (Bit 2) */ -#define BLE_BLE_INTACK_REG_SLPINTACK_Msk (0x4UL) /*!< BLE BLE_INTACK_REG: SLPINTACK (Bitfield-Mask: 0x01) */ -#define BLE_BLE_INTACK_REG_EVENTINTACK_Pos (3UL) /*!< BLE BLE_INTACK_REG: EVENTINTACK (Bit 3) */ -#define BLE_BLE_INTACK_REG_EVENTINTACK_Msk (0x8UL) /*!< BLE BLE_INTACK_REG: EVENTINTACK (Bitfield-Mask: 0x01) */ -#define BLE_BLE_INTACK_REG_CRYPTINTACK_Pos (4UL) /*!< BLE BLE_INTACK_REG: CRYPTINTACK (Bit 4) */ -#define BLE_BLE_INTACK_REG_CRYPTINTACK_Msk (0x10UL) /*!< BLE BLE_INTACK_REG: CRYPTINTACK (Bitfield-Mask: 0x01) */ -#define BLE_BLE_INTACK_REG_ERRORINTACK_Pos (5UL) /*!< BLE BLE_INTACK_REG: ERRORINTACK (Bit 5) */ -#define BLE_BLE_INTACK_REG_ERRORINTACK_Msk (0x20UL) /*!< BLE BLE_INTACK_REG: ERRORINTACK (Bitfield-Mask: 0x01) */ -#define BLE_BLE_INTACK_REG_GROSSTGTIMINTACK_Pos (6UL) /*!< BLE BLE_INTACK_REG: GROSSTGTIMINTACK (Bit 6) */ -#define BLE_BLE_INTACK_REG_GROSSTGTIMINTACK_Msk (0x40UL) /*!< BLE BLE_INTACK_REG: GROSSTGTIMINTACK (Bitfield-Mask: 0x01) */ -#define BLE_BLE_INTACK_REG_FINETGTIMINTACK_Pos (7UL) /*!< BLE BLE_INTACK_REG: FINETGTIMINTACK (Bit 7) */ -#define BLE_BLE_INTACK_REG_FINETGTIMINTACK_Msk (0x80UL) /*!< BLE BLE_INTACK_REG: FINETGTIMINTACK (Bitfield-Mask: 0x01) */ -#define BLE_BLE_INTACK_REG_EVENTAPFAINTACK_Pos (8UL) /*!< BLE BLE_INTACK_REG: EVENTAPFAINTACK (Bit 8) */ -#define BLE_BLE_INTACK_REG_EVENTAPFAINTACK_Msk (0x100UL) /*!< BLE BLE_INTACK_REG: EVENTAPFAINTACK (Bitfield-Mask: 0x01) */ -#define BLE_BLE_INTACK_REG_SWINTACK_Pos (9UL) /*!< BLE BLE_INTACK_REG: SWINTACK (Bit 9) */ -#define BLE_BLE_INTACK_REG_SWINTACK_Msk (0x200UL) /*!< BLE BLE_INTACK_REG: SWINTACK (Bitfield-Mask: 0x01) */ - -/* --------------------------- BLE_BLE_BASETIMECNT_REG -------------------------- */ -#define BLE_BLE_BASETIMECNT_REG_BASETIMECNT_Pos (0UL) /*!< BLE BLE_BASETIMECNT_REG: BASETIMECNT (Bit 0) */ -#define BLE_BLE_BASETIMECNT_REG_BASETIMECNT_Msk (0x7ffffffUL) /*!< BLE BLE_BASETIMECNT_REG: BASETIMECNT (Bitfield-Mask: 0x7ffffff) */ - -/* --------------------------- BLE_BLE_FINETIMECNT_REG -------------------------- */ -#define BLE_BLE_FINETIMECNT_REG_FINECNT_Pos (0UL) /*!< BLE BLE_FINETIMECNT_REG: FINECNT (Bit 0) */ -#define BLE_BLE_FINETIMECNT_REG_FINECNT_Msk (0x3ffUL) /*!< BLE BLE_FINETIMECNT_REG: FINECNT (Bitfield-Mask: 0x3ff) */ - -/* ----------------------------- BLE_BLE_BDADDRL_REG ---------------------------- */ -#define BLE_BLE_BDADDRL_REG_BDADDRL_Pos (0UL) /*!< BLE BLE_BDADDRL_REG: BDADDRL (Bit 0) */ -#define BLE_BLE_BDADDRL_REG_BDADDRL_Msk (0xffffffffUL) /*!< BLE BLE_BDADDRL_REG: BDADDRL (Bitfield-Mask: 0xffffffff) */ - -/* ----------------------------- BLE_BLE_BDADDRU_REG ---------------------------- */ -#define BLE_BLE_BDADDRU_REG_BDADDRU_Pos (0UL) /*!< BLE BLE_BDADDRU_REG: BDADDRU (Bit 0) */ -#define BLE_BLE_BDADDRU_REG_BDADDRU_Msk (0xffffUL) /*!< BLE BLE_BDADDRU_REG: BDADDRU (Bitfield-Mask: 0xffff) */ -#define BLE_BLE_BDADDRU_REG_PRIV_NPUB_Pos (16UL) /*!< BLE BLE_BDADDRU_REG: PRIV_NPUB (Bit 16) */ -#define BLE_BLE_BDADDRU_REG_PRIV_NPUB_Msk (0x10000UL) /*!< BLE BLE_BDADDRU_REG: PRIV_NPUB (Bitfield-Mask: 0x01) */ - -/* ------------------------ BLE_BLE_CURRENTRXDESCPTR_REG ------------------------ */ -#define BLE_BLE_CURRENTRXDESCPTR_REG_CURRENTRXDESCPTR_Pos (0UL) /*!< BLE BLE_CURRENTRXDESCPTR_REG: CURRENTRXDESCPTR (Bit 0) */ -#define BLE_BLE_CURRENTRXDESCPTR_REG_CURRENTRXDESCPTR_Msk (0x7fffUL) /*!< BLE BLE_CURRENTRXDESCPTR_REG: CURRENTRXDESCPTR (Bitfield-Mask: 0x7fff) */ -#define BLE_BLE_CURRENTRXDESCPTR_REG_ETPTR_Pos (16UL) /*!< BLE BLE_CURRENTRXDESCPTR_REG: ETPTR (Bit 16) */ -#define BLE_BLE_CURRENTRXDESCPTR_REG_ETPTR_Msk (0xffff0000UL) /*!< BLE BLE_CURRENTRXDESCPTR_REG: ETPTR (Bitfield-Mask: 0xffff) */ - -/* --------------------------- BLE_BLE_DEEPSLCNTL_REG --------------------------- */ -#define BLE_BLE_DEEPSLCNTL_REG_DEEP_SLEEP_IRQ_EN_Pos (0UL) /*!< BLE BLE_DEEPSLCNTL_REG: DEEP_SLEEP_IRQ_EN (Bit 0) */ -#define BLE_BLE_DEEPSLCNTL_REG_DEEP_SLEEP_IRQ_EN_Msk (0x3UL) /*!< BLE BLE_DEEPSLCNTL_REG: DEEP_SLEEP_IRQ_EN (Bitfield-Mask: 0x03) */ -#define BLE_BLE_DEEPSLCNTL_REG_DEEP_SLEEP_ON_Pos (2UL) /*!< BLE BLE_DEEPSLCNTL_REG: DEEP_SLEEP_ON (Bit 2) */ -#define BLE_BLE_DEEPSLCNTL_REG_DEEP_SLEEP_ON_Msk (0x4UL) /*!< BLE BLE_DEEPSLCNTL_REG: DEEP_SLEEP_ON (Bitfield-Mask: 0x01) */ -#define BLE_BLE_DEEPSLCNTL_REG_DEEP_SLEEP_CORR_EN_Pos (3UL) /*!< BLE BLE_DEEPSLCNTL_REG: DEEP_SLEEP_CORR_EN (Bit 3) */ -#define BLE_BLE_DEEPSLCNTL_REG_DEEP_SLEEP_CORR_EN_Msk (0x8UL) /*!< BLE BLE_DEEPSLCNTL_REG: DEEP_SLEEP_CORR_EN (Bitfield-Mask: 0x01) */ -#define BLE_BLE_DEEPSLCNTL_REG_SOFT_WAKEUP_REQ_Pos (4UL) /*!< BLE BLE_DEEPSLCNTL_REG: SOFT_WAKEUP_REQ (Bit 4) */ -#define BLE_BLE_DEEPSLCNTL_REG_SOFT_WAKEUP_REQ_Msk (0x10UL) /*!< BLE BLE_DEEPSLCNTL_REG: SOFT_WAKEUP_REQ (Bitfield-Mask: 0x01) */ -#define BLE_BLE_DEEPSLCNTL_REG_DEEP_SLEEP_STAT_Pos (15UL) /*!< BLE BLE_DEEPSLCNTL_REG: DEEP_SLEEP_STAT (Bit 15) */ -#define BLE_BLE_DEEPSLCNTL_REG_DEEP_SLEEP_STAT_Msk (0x8000UL) /*!< BLE BLE_DEEPSLCNTL_REG: DEEP_SLEEP_STAT (Bitfield-Mask: 0x01) */ -#define BLE_BLE_DEEPSLCNTL_REG_EXTWKUPDSB_Pos (31UL) /*!< BLE BLE_DEEPSLCNTL_REG: EXTWKUPDSB (Bit 31) */ -#define BLE_BLE_DEEPSLCNTL_REG_EXTWKUPDSB_Msk (0x80000000UL) /*!< BLE BLE_DEEPSLCNTL_REG: EXTWKUPDSB (Bitfield-Mask: 0x01) */ - -/* --------------------------- BLE_BLE_DEEPSLWKUP_REG --------------------------- */ -#define BLE_BLE_DEEPSLWKUP_REG_DEEPSLTIME_Pos (0UL) /*!< BLE BLE_DEEPSLWKUP_REG: DEEPSLTIME (Bit 0) */ -#define BLE_BLE_DEEPSLWKUP_REG_DEEPSLTIME_Msk (0xffffffffUL) /*!< BLE BLE_DEEPSLWKUP_REG: DEEPSLTIME (Bitfield-Mask: 0xffffffff) */ - -/* --------------------------- BLE_BLE_DEEPSLSTAT_REG --------------------------- */ -#define BLE_BLE_DEEPSLSTAT_REG_DEEPSLDUR_Pos (0UL) /*!< BLE BLE_DEEPSLSTAT_REG: DEEPSLDUR (Bit 0) */ -#define BLE_BLE_DEEPSLSTAT_REG_DEEPSLDUR_Msk (0xffffffffUL) /*!< BLE BLE_DEEPSLSTAT_REG: DEEPSLDUR (Bitfield-Mask: 0xffffffff) */ - -/* ---------------------------- BLE_BLE_ENBPRESET_REG --------------------------- */ -#define BLE_BLE_ENBPRESET_REG_TWIRQ_RESET_Pos (0UL) /*!< BLE BLE_ENBPRESET_REG: TWIRQ_RESET (Bit 0) */ -#define BLE_BLE_ENBPRESET_REG_TWIRQ_RESET_Msk (0x3ffUL) /*!< BLE BLE_ENBPRESET_REG: TWIRQ_RESET (Bitfield-Mask: 0x3ff) */ -#define BLE_BLE_ENBPRESET_REG_TWIRQ_SET_Pos (10UL) /*!< BLE BLE_ENBPRESET_REG: TWIRQ_SET (Bit 10) */ -#define BLE_BLE_ENBPRESET_REG_TWIRQ_SET_Msk (0x1ffc00UL) /*!< BLE BLE_ENBPRESET_REG: TWIRQ_SET (Bitfield-Mask: 0x7ff) */ -#define BLE_BLE_ENBPRESET_REG_TWEXT_Pos (21UL) /*!< BLE BLE_ENBPRESET_REG: TWEXT (Bit 21) */ -#define BLE_BLE_ENBPRESET_REG_TWEXT_Msk (0xffe00000UL) /*!< BLE BLE_ENBPRESET_REG: TWEXT (Bitfield-Mask: 0x7ff) */ - -/* --------------------------- BLE_BLE_FINECNTCORR_REG -------------------------- */ -#define BLE_BLE_FINECNTCORR_REG_FINECNTCORR_Pos (0UL) /*!< BLE BLE_FINECNTCORR_REG: FINECNTCORR (Bit 0) */ -#define BLE_BLE_FINECNTCORR_REG_FINECNTCORR_Msk (0x3ffUL) /*!< BLE BLE_FINECNTCORR_REG: FINECNTCORR (Bitfield-Mask: 0x3ff) */ - -/* ------------------------- BLE_BLE_BASETIMECNTCORR_REG ------------------------ */ -#define BLE_BLE_BASETIMECNTCORR_REG_BASETIMECNTCORR_Pos (0UL) /*!< BLE BLE_BASETIMECNTCORR_REG: BASETIMECNTCORR (Bit 0) */ -#define BLE_BLE_BASETIMECNTCORR_REG_BASETIMECNTCORR_Msk (0x7ffffffUL) /*!< BLE BLE_BASETIMECNTCORR_REG: BASETIMECNTCORR (Bitfield-Mask: 0x7ffffff) */ - -/* ---------------------------- BLE_BLE_DIAGCNTL_REG ---------------------------- */ -#define BLE_BLE_DIAGCNTL_REG_DIAG0_Pos (0UL) /*!< BLE BLE_DIAGCNTL_REG: DIAG0 (Bit 0) */ -#define BLE_BLE_DIAGCNTL_REG_DIAG0_Msk (0x3fUL) /*!< BLE BLE_DIAGCNTL_REG: DIAG0 (Bitfield-Mask: 0x3f) */ -#define BLE_BLE_DIAGCNTL_REG_DIAG0_EN_Pos (7UL) /*!< BLE BLE_DIAGCNTL_REG: DIAG0_EN (Bit 7) */ -#define BLE_BLE_DIAGCNTL_REG_DIAG0_EN_Msk (0x80UL) /*!< BLE BLE_DIAGCNTL_REG: DIAG0_EN (Bitfield-Mask: 0x01) */ -#define BLE_BLE_DIAGCNTL_REG_DIAG1_Pos (8UL) /*!< BLE BLE_DIAGCNTL_REG: DIAG1 (Bit 8) */ -#define BLE_BLE_DIAGCNTL_REG_DIAG1_Msk (0x3f00UL) /*!< BLE BLE_DIAGCNTL_REG: DIAG1 (Bitfield-Mask: 0x3f) */ -#define BLE_BLE_DIAGCNTL_REG_DIAG1_EN_Pos (15UL) /*!< BLE BLE_DIAGCNTL_REG: DIAG1_EN (Bit 15) */ -#define BLE_BLE_DIAGCNTL_REG_DIAG1_EN_Msk (0x8000UL) /*!< BLE BLE_DIAGCNTL_REG: DIAG1_EN (Bitfield-Mask: 0x01) */ -#define BLE_BLE_DIAGCNTL_REG_DIAG2_Pos (16UL) /*!< BLE BLE_DIAGCNTL_REG: DIAG2 (Bit 16) */ -#define BLE_BLE_DIAGCNTL_REG_DIAG2_Msk (0x3f0000UL) /*!< BLE BLE_DIAGCNTL_REG: DIAG2 (Bitfield-Mask: 0x3f) */ -#define BLE_BLE_DIAGCNTL_REG_DIAG2_EN_Pos (23UL) /*!< BLE BLE_DIAGCNTL_REG: DIAG2_EN (Bit 23) */ -#define BLE_BLE_DIAGCNTL_REG_DIAG2_EN_Msk (0x800000UL) /*!< BLE BLE_DIAGCNTL_REG: DIAG2_EN (Bitfield-Mask: 0x01) */ -#define BLE_BLE_DIAGCNTL_REG_DIAG3_Pos (24UL) /*!< BLE BLE_DIAGCNTL_REG: DIAG3 (Bit 24) */ -#define BLE_BLE_DIAGCNTL_REG_DIAG3_Msk (0x3f000000UL) /*!< BLE BLE_DIAGCNTL_REG: DIAG3 (Bitfield-Mask: 0x3f) */ -#define BLE_BLE_DIAGCNTL_REG_DIAG3_EN_Pos (31UL) /*!< BLE BLE_DIAGCNTL_REG: DIAG3_EN (Bit 31) */ -#define BLE_BLE_DIAGCNTL_REG_DIAG3_EN_Msk (0x80000000UL) /*!< BLE BLE_DIAGCNTL_REG: DIAG3_EN (Bitfield-Mask: 0x01) */ - -/* ---------------------------- BLE_BLE_DIAGSTAT_REG ---------------------------- */ -#define BLE_BLE_DIAGSTAT_REG_DIAG0STAT_Pos (0UL) /*!< BLE BLE_DIAGSTAT_REG: DIAG0STAT (Bit 0) */ -#define BLE_BLE_DIAGSTAT_REG_DIAG0STAT_Msk (0xffUL) /*!< BLE BLE_DIAGSTAT_REG: DIAG0STAT (Bitfield-Mask: 0xff) */ -#define BLE_BLE_DIAGSTAT_REG_DIAG1STAT_Pos (8UL) /*!< BLE BLE_DIAGSTAT_REG: DIAG1STAT (Bit 8) */ -#define BLE_BLE_DIAGSTAT_REG_DIAG1STAT_Msk (0xff00UL) /*!< BLE BLE_DIAGSTAT_REG: DIAG1STAT (Bitfield-Mask: 0xff) */ -#define BLE_BLE_DIAGSTAT_REG_DIAG2STAT_Pos (16UL) /*!< BLE BLE_DIAGSTAT_REG: DIAG2STAT (Bit 16) */ -#define BLE_BLE_DIAGSTAT_REG_DIAG2STAT_Msk (0xff0000UL) /*!< BLE BLE_DIAGSTAT_REG: DIAG2STAT (Bitfield-Mask: 0xff) */ -#define BLE_BLE_DIAGSTAT_REG_DIAG3STAT_Pos (24UL) /*!< BLE BLE_DIAGSTAT_REG: DIAG3STAT (Bit 24) */ -#define BLE_BLE_DIAGSTAT_REG_DIAG3STAT_Msk (0xff000000UL) /*!< BLE BLE_DIAGSTAT_REG: DIAG3STAT (Bitfield-Mask: 0xff) */ - -/* --------------------------- BLE_BLE_DEBUGADDMAX_REG -------------------------- */ -#define BLE_BLE_DEBUGADDMAX_REG_EM_ADDMAX_Pos (0UL) /*!< BLE BLE_DEBUGADDMAX_REG: EM_ADDMAX (Bit 0) */ -#define BLE_BLE_DEBUGADDMAX_REG_EM_ADDMAX_Msk (0xffffUL) /*!< BLE BLE_DEBUGADDMAX_REG: EM_ADDMAX (Bitfield-Mask: 0xffff) */ -#define BLE_BLE_DEBUGADDMAX_REG_REG_ADDMAX_Pos (16UL) /*!< BLE BLE_DEBUGADDMAX_REG: REG_ADDMAX (Bit 16) */ -#define BLE_BLE_DEBUGADDMAX_REG_REG_ADDMAX_Msk (0xffff0000UL) /*!< BLE BLE_DEBUGADDMAX_REG: REG_ADDMAX (Bitfield-Mask: 0xffff) */ - -/* --------------------------- BLE_BLE_DEBUGADDMIN_REG -------------------------- */ -#define BLE_BLE_DEBUGADDMIN_REG_EM_ADDMIN_Pos (0UL) /*!< BLE BLE_DEBUGADDMIN_REG: EM_ADDMIN (Bit 0) */ -#define BLE_BLE_DEBUGADDMIN_REG_EM_ADDMIN_Msk (0xffffUL) /*!< BLE BLE_DEBUGADDMIN_REG: EM_ADDMIN (Bitfield-Mask: 0xffff) */ -#define BLE_BLE_DEBUGADDMIN_REG_REG_ADDMIN_Pos (16UL) /*!< BLE BLE_DEBUGADDMIN_REG: REG_ADDMIN (Bit 16) */ -#define BLE_BLE_DEBUGADDMIN_REG_REG_ADDMIN_Msk (0xffff0000UL) /*!< BLE BLE_DEBUGADDMIN_REG: REG_ADDMIN (Bitfield-Mask: 0xffff) */ - -/* -------------------------- BLE_BLE_ERRORTYPESTAT_REG ------------------------- */ -#define BLE_BLE_ERRORTYPESTAT_REG_TXCRYPT_ERROR_Pos (0UL) /*!< BLE BLE_ERRORTYPESTAT_REG: TXCRYPT_ERROR (Bit 0) */ -#define BLE_BLE_ERRORTYPESTAT_REG_TXCRYPT_ERROR_Msk (0x1UL) /*!< BLE BLE_ERRORTYPESTAT_REG: TXCRYPT_ERROR (Bitfield-Mask: 0x01) */ -#define BLE_BLE_ERRORTYPESTAT_REG_RXCRYPT_ERROR_Pos (1UL) /*!< BLE BLE_ERRORTYPESTAT_REG: RXCRYPT_ERROR (Bit 1) */ -#define BLE_BLE_ERRORTYPESTAT_REG_RXCRYPT_ERROR_Msk (0x2UL) /*!< BLE BLE_ERRORTYPESTAT_REG: RXCRYPT_ERROR (Bitfield-Mask: 0x01) */ -#define BLE_BLE_ERRORTYPESTAT_REG_PKTCNTL_EMACC_ERROR_Pos (2UL) /*!< BLE BLE_ERRORTYPESTAT_REG: PKTCNTL_EMACC_ERROR (Bit 2) */ -#define BLE_BLE_ERRORTYPESTAT_REG_PKTCNTL_EMACC_ERROR_Msk (0x4UL) /*!< BLE BLE_ERRORTYPESTAT_REG: PKTCNTL_EMACC_ERROR (Bitfield-Mask: 0x01) */ -#define BLE_BLE_ERRORTYPESTAT_REG_RADIO_EMACC_ERROR_Pos (3UL) /*!< BLE BLE_ERRORTYPESTAT_REG: RADIO_EMACC_ERROR (Bit 3) */ -#define BLE_BLE_ERRORTYPESTAT_REG_RADIO_EMACC_ERROR_Msk (0x8UL) /*!< BLE BLE_ERRORTYPESTAT_REG: RADIO_EMACC_ERROR (Bitfield-Mask: 0x01) */ -#define BLE_BLE_ERRORTYPESTAT_REG_EVT_SCHDL_EMACC_ERROR_Pos (4UL) /*!< BLE BLE_ERRORTYPESTAT_REG: EVT_SCHDL_EMACC_ERROR (Bit 4) */ -#define BLE_BLE_ERRORTYPESTAT_REG_EVT_SCHDL_EMACC_ERROR_Msk (0x10UL) /*!< BLE BLE_ERRORTYPESTAT_REG: EVT_SCHDL_EMACC_ERROR (Bitfield-Mask: 0x01) */ -#define BLE_BLE_ERRORTYPESTAT_REG_EVT_SCHDL_ENTRY_ERROR_Pos (5UL) /*!< BLE BLE_ERRORTYPESTAT_REG: EVT_SCHDL_ENTRY_ERROR (Bit 5) */ -#define BLE_BLE_ERRORTYPESTAT_REG_EVT_SCHDL_ENTRY_ERROR_Msk (0x20UL) /*!< BLE BLE_ERRORTYPESTAT_REG: EVT_SCHDL_ENTRY_ERROR (Bitfield-Mask: 0x01) */ -#define BLE_BLE_ERRORTYPESTAT_REG_EVT_SCHDL_APFM_ERROR_Pos (6UL) /*!< BLE BLE_ERRORTYPESTAT_REG: EVT_SCHDL_APFM_ERROR (Bit 6) */ -#define BLE_BLE_ERRORTYPESTAT_REG_EVT_SCHDL_APFM_ERROR_Msk (0x40UL) /*!< BLE BLE_ERRORTYPESTAT_REG: EVT_SCHDL_APFM_ERROR (Bitfield-Mask: 0x01) */ -#define BLE_BLE_ERRORTYPESTAT_REG_EVT_CNTL_APFM_ERROR_Pos (7UL) /*!< BLE BLE_ERRORTYPESTAT_REG: EVT_CNTL_APFM_ERROR (Bit 7) */ -#define BLE_BLE_ERRORTYPESTAT_REG_EVT_CNTL_APFM_ERROR_Msk (0x80UL) /*!< BLE BLE_ERRORTYPESTAT_REG: EVT_CNTL_APFM_ERROR (Bitfield-Mask: 0x01) */ -#define BLE_BLE_ERRORTYPESTAT_REG_WHITELIST_ERROR_Pos (8UL) /*!< BLE BLE_ERRORTYPESTAT_REG: WHITELIST_ERROR (Bit 8) */ -#define BLE_BLE_ERRORTYPESTAT_REG_WHITELIST_ERROR_Msk (0x100UL) /*!< BLE BLE_ERRORTYPESTAT_REG: WHITELIST_ERROR (Bitfield-Mask: 0x01) */ -#define BLE_BLE_ERRORTYPESTAT_REG_IFS_UNDERRUN_Pos (9UL) /*!< BLE BLE_ERRORTYPESTAT_REG: IFS_UNDERRUN (Bit 9) */ -#define BLE_BLE_ERRORTYPESTAT_REG_IFS_UNDERRUN_Msk (0x200UL) /*!< BLE BLE_ERRORTYPESTAT_REG: IFS_UNDERRUN (Bitfield-Mask: 0x01) */ -#define BLE_BLE_ERRORTYPESTAT_REG_ADV_UNDERRUN_Pos (10UL) /*!< BLE BLE_ERRORTYPESTAT_REG: ADV_UNDERRUN (Bit 10) */ -#define BLE_BLE_ERRORTYPESTAT_REG_ADV_UNDERRUN_Msk (0x400UL) /*!< BLE BLE_ERRORTYPESTAT_REG: ADV_UNDERRUN (Bitfield-Mask: 0x01) */ -#define BLE_BLE_ERRORTYPESTAT_REG_LLCHMAP_ERROR_Pos (11UL) /*!< BLE BLE_ERRORTYPESTAT_REG: LLCHMAP_ERROR (Bit 11) */ -#define BLE_BLE_ERRORTYPESTAT_REG_LLCHMAP_ERROR_Msk (0x800UL) /*!< BLE BLE_ERRORTYPESTAT_REG: LLCHMAP_ERROR (Bitfield-Mask: 0x01) */ -#define BLE_BLE_ERRORTYPESTAT_REG_CSFORMAT_ERROR_Pos (12UL) /*!< BLE BLE_ERRORTYPESTAT_REG: CSFORMAT_ERROR (Bit 12) */ -#define BLE_BLE_ERRORTYPESTAT_REG_CSFORMAT_ERROR_Msk (0x1000UL) /*!< BLE BLE_ERRORTYPESTAT_REG: CSFORMAT_ERROR (Bitfield-Mask: 0x01) */ -#define BLE_BLE_ERRORTYPESTAT_REG_TXDESC_EMPTY_ERROR_Pos (13UL) /*!< BLE BLE_ERRORTYPESTAT_REG: TXDESC_EMPTY_ERROR (Bit 13) */ -#define BLE_BLE_ERRORTYPESTAT_REG_TXDESC_EMPTY_ERROR_Msk (0x2000UL) /*!< BLE BLE_ERRORTYPESTAT_REG: TXDESC_EMPTY_ERROR (Bitfield-Mask: 0x01) */ -#define BLE_BLE_ERRORTYPESTAT_REG_RXDESC_EMPTY_ERROR_Pos (14UL) /*!< BLE BLE_ERRORTYPESTAT_REG: RXDESC_EMPTY_ERROR (Bit 14) */ -#define BLE_BLE_ERRORTYPESTAT_REG_RXDESC_EMPTY_ERROR_Msk (0x4000UL) /*!< BLE BLE_ERRORTYPESTAT_REG: RXDESC_EMPTY_ERROR (Bitfield-Mask: 0x01) */ -#define BLE_BLE_ERRORTYPESTAT_REG_TXDATA_PTR_ERROR_Pos (15UL) /*!< BLE BLE_ERRORTYPESTAT_REG: TXDATA_PTR_ERROR (Bit 15) */ -#define BLE_BLE_ERRORTYPESTAT_REG_TXDATA_PTR_ERROR_Msk (0x8000UL) /*!< BLE BLE_ERRORTYPESTAT_REG: TXDATA_PTR_ERROR (Bitfield-Mask: 0x01) */ -#define BLE_BLE_ERRORTYPESTAT_REG_RXDATA_PTR_ERROR_Pos (16UL) /*!< BLE BLE_ERRORTYPESTAT_REG: RXDATA_PTR_ERROR (Bit 16) */ -#define BLE_BLE_ERRORTYPESTAT_REG_RXDATA_PTR_ERROR_Msk (0x10000UL) /*!< BLE BLE_ERRORTYPESTAT_REG: RXDATA_PTR_ERROR (Bitfield-Mask: 0x01) */ -#define BLE_BLE_ERRORTYPESTAT_REG_CONCEVTIRQ_ERROR_Pos (17UL) /*!< BLE BLE_ERRORTYPESTAT_REG: CONCEVTIRQ_ERROR (Bit 17) */ -#define BLE_BLE_ERRORTYPESTAT_REG_CONCEVTIRQ_ERROR_Msk (0x20000UL) /*!< BLE BLE_ERRORTYPESTAT_REG: CONCEVTIRQ_ERROR (Bitfield-Mask: 0x01) */ - -/* --------------------------- BLE_BLE_SWPROFILING_REG -------------------------- */ -#define BLE_BLE_SWPROFILING_REG_SWPROFVAL_Pos (0UL) /*!< BLE BLE_SWPROFILING_REG: SWPROFVAL (Bit 0) */ -#define BLE_BLE_SWPROFILING_REG_SWPROFVAL_Msk (0xffffffffUL) /*!< BLE BLE_SWPROFILING_REG: SWPROFVAL (Bitfield-Mask: 0xffffffff) */ - -/* --------------------------- BLE_BLE_RADIOCNTL0_REG --------------------------- */ -#define BLE_BLE_RADIOCNTL0_REG_field246rsv_Pos (2UL) /*!< BLE BLE_RADIOCNTL0_REG: field246rsv (Bit 2) */ -#define BLE_BLE_RADIOCNTL0_REG_field246rsv_Msk (0x1cUL) /*!< BLE BLE_RADIOCNTL0_REG: field246rsv (Bitfield-Mask: 0x07) */ - -/* --------------------------- BLE_BLE_RADIOCNTL1_REG --------------------------- */ -#define BLE_BLE_RADIOCNTL1_REG_XRFSEL_Pos (16UL) /*!< BLE BLE_RADIOCNTL1_REG: XRFSEL (Bit 16) */ -#define BLE_BLE_RADIOCNTL1_REG_XRFSEL_Msk (0x1f0000UL) /*!< BLE BLE_RADIOCNTL1_REG: XRFSEL (Bitfield-Mask: 0x1f) */ - -/* -------------------------- BLE_BLE_RADIOPWRUPDN_REG -------------------------- */ -#define BLE_BLE_RADIOPWRUPDN_REG_TXPWRUP_Pos (0UL) /*!< BLE BLE_RADIOPWRUPDN_REG: TXPWRUP (Bit 0) */ -#define BLE_BLE_RADIOPWRUPDN_REG_TXPWRUP_Msk (0xffUL) /*!< BLE BLE_RADIOPWRUPDN_REG: TXPWRUP (Bitfield-Mask: 0xff) */ -#define BLE_BLE_RADIOPWRUPDN_REG_TXPWRDN_Pos (8UL) /*!< BLE BLE_RADIOPWRUPDN_REG: TXPWRDN (Bit 8) */ -#define BLE_BLE_RADIOPWRUPDN_REG_TXPWRDN_Msk (0xf00UL) /*!< BLE BLE_RADIOPWRUPDN_REG: TXPWRDN (Bitfield-Mask: 0x0f) */ -#define BLE_BLE_RADIOPWRUPDN_REG_RXPWRUP_Pos (16UL) /*!< BLE BLE_RADIOPWRUPDN_REG: RXPWRUP (Bit 16) */ -#define BLE_BLE_RADIOPWRUPDN_REG_RXPWRUP_Msk (0xff0000UL) /*!< BLE BLE_RADIOPWRUPDN_REG: RXPWRUP (Bitfield-Mask: 0xff) */ -#define BLE_BLE_RADIOPWRUPDN_REG_RTRIP_DELAY_Pos (24UL) /*!< BLE BLE_RADIOPWRUPDN_REG: RTRIP_DELAY (Bit 24) */ -#define BLE_BLE_RADIOPWRUPDN_REG_RTRIP_DELAY_Msk (0x7f000000UL) /*!< BLE BLE_RADIOPWRUPDN_REG: RTRIP_DELAY (Bitfield-Mask: 0x7f) */ - -/* ---------------------------- BLE_BLE_ADVCHMAP_REG ---------------------------- */ -#define BLE_BLE_ADVCHMAP_REG_ADVCHMAP_Pos (0UL) /*!< BLE BLE_ADVCHMAP_REG: ADVCHMAP (Bit 0) */ -#define BLE_BLE_ADVCHMAP_REG_ADVCHMAP_Msk (0x7UL) /*!< BLE BLE_ADVCHMAP_REG: ADVCHMAP (Bitfield-Mask: 0x07) */ - -/* ----------------------------- BLE_BLE_ADVTIM_REG ----------------------------- */ -#define BLE_BLE_ADVTIM_REG_ADVINT_Pos (0UL) /*!< BLE BLE_ADVTIM_REG: ADVINT (Bit 0) */ -#define BLE_BLE_ADVTIM_REG_ADVINT_Msk (0x3fffUL) /*!< BLE BLE_ADVTIM_REG: ADVINT (Bitfield-Mask: 0x3fff) */ - -/* --------------------------- BLE_BLE_ACTSCANSTAT_REG -------------------------- */ -#define BLE_BLE_ACTSCANSTAT_REG_UPPERLIMIT_Pos (0UL) /*!< BLE BLE_ACTSCANSTAT_REG: UPPERLIMIT (Bit 0) */ -#define BLE_BLE_ACTSCANSTAT_REG_UPPERLIMIT_Msk (0x1ffUL) /*!< BLE BLE_ACTSCANSTAT_REG: UPPERLIMIT (Bitfield-Mask: 0x1ff) */ -#define BLE_BLE_ACTSCANSTAT_REG_BACKOFF_Pos (16UL) /*!< BLE BLE_ACTSCANSTAT_REG: BACKOFF (Bit 16) */ -#define BLE_BLE_ACTSCANSTAT_REG_BACKOFF_Msk (0x1ff0000UL) /*!< BLE BLE_ACTSCANSTAT_REG: BACKOFF (Bitfield-Mask: 0x1ff) */ - -/* --------------------------- BLE_BLE_WLPUBADDPTR_REG -------------------------- */ -#define BLE_BLE_WLPUBADDPTR_REG_WLPUBADDPTR_Pos (0UL) /*!< BLE BLE_WLPUBADDPTR_REG: WLPUBADDPTR (Bit 0) */ -#define BLE_BLE_WLPUBADDPTR_REG_WLPUBADDPTR_Msk (0xffffUL) /*!< BLE BLE_WLPUBADDPTR_REG: WLPUBADDPTR (Bitfield-Mask: 0xffff) */ - -/* -------------------------- BLE_BLE_WLPRIVADDPTR_REG -------------------------- */ -#define BLE_BLE_WLPRIVADDPTR_REG_WLPRIVADDPTR_Pos (0UL) /*!< BLE BLE_WLPRIVADDPTR_REG: WLPRIVADDPTR (Bit 0) */ -#define BLE_BLE_WLPRIVADDPTR_REG_WLPRIVADDPTR_Msk (0xffffUL) /*!< BLE BLE_WLPRIVADDPTR_REG: WLPRIVADDPTR (Bitfield-Mask: 0xffff) */ - -/* ----------------------------- BLE_BLE_WLNBDEV_REG ---------------------------- */ -#define BLE_BLE_WLNBDEV_REG_NBPUBDEV_Pos (0UL) /*!< BLE BLE_WLNBDEV_REG: NBPUBDEV (Bit 0) */ -#define BLE_BLE_WLNBDEV_REG_NBPUBDEV_Msk (0xffUL) /*!< BLE BLE_WLNBDEV_REG: NBPUBDEV (Bitfield-Mask: 0xff) */ -#define BLE_BLE_WLNBDEV_REG_NBPRIVDEV_Pos (8UL) /*!< BLE BLE_WLNBDEV_REG: NBPRIVDEV (Bit 8) */ -#define BLE_BLE_WLNBDEV_REG_NBPRIVDEV_Msk (0xff00UL) /*!< BLE BLE_WLNBDEV_REG: NBPRIVDEV (Bitfield-Mask: 0xff) */ - -/* ----------------------------- BLE_BLE_AESCNTL_REG ---------------------------- */ -#define BLE_BLE_AESCNTL_REG_AES_START_Pos (0UL) /*!< BLE BLE_AESCNTL_REG: AES_START (Bit 0) */ -#define BLE_BLE_AESCNTL_REG_AES_START_Msk (0x1UL) /*!< BLE BLE_AESCNTL_REG: AES_START (Bitfield-Mask: 0x01) */ -#define BLE_BLE_AESCNTL_REG_AES_MODE_Pos (1UL) /*!< BLE BLE_AESCNTL_REG: AES_MODE (Bit 1) */ -#define BLE_BLE_AESCNTL_REG_AES_MODE_Msk (0x2UL) /*!< BLE BLE_AESCNTL_REG: AES_MODE (Bitfield-Mask: 0x01) */ - -/* --------------------------- BLE_BLE_AESKEY31_0_REG --------------------------- */ -#define BLE_BLE_AESKEY31_0_REG_AESKEY31_0_Pos (0UL) /*!< BLE BLE_AESKEY31_0_REG: AESKEY31_0 (Bit 0) */ -#define BLE_BLE_AESKEY31_0_REG_AESKEY31_0_Msk (0xffffffffUL) /*!< BLE BLE_AESKEY31_0_REG: AESKEY31_0 (Bitfield-Mask: 0xffffffff) */ - -/* --------------------------- BLE_BLE_AESKEY63_32_REG -------------------------- */ -#define BLE_BLE_AESKEY63_32_REG_AESKEY63_32_Pos (0UL) /*!< BLE BLE_AESKEY63_32_REG: AESKEY63_32 (Bit 0) */ -#define BLE_BLE_AESKEY63_32_REG_AESKEY63_32_Msk (0xffffffffUL) /*!< BLE BLE_AESKEY63_32_REG: AESKEY63_32 (Bitfield-Mask: 0xffffffff) */ - -/* --------------------------- BLE_BLE_AESKEY95_64_REG -------------------------- */ -#define BLE_BLE_AESKEY95_64_REG_AESKEY95_64_Pos (0UL) /*!< BLE BLE_AESKEY95_64_REG: AESKEY95_64 (Bit 0) */ -#define BLE_BLE_AESKEY95_64_REG_AESKEY95_64_Msk (0xffffffffUL) /*!< BLE BLE_AESKEY95_64_REG: AESKEY95_64 (Bitfield-Mask: 0xffffffff) */ - -/* -------------------------- BLE_BLE_AESKEY127_96_REG -------------------------- */ -#define BLE_BLE_AESKEY127_96_REG_AESKEY127_96_Pos (0UL) /*!< BLE BLE_AESKEY127_96_REG: AESKEY127_96 (Bit 0) */ -#define BLE_BLE_AESKEY127_96_REG_AESKEY127_96_Msk (0xffffffffUL) /*!< BLE BLE_AESKEY127_96_REG: AESKEY127_96 (Bitfield-Mask: 0xffffffff) */ - -/* ----------------------------- BLE_BLE_AESPTR_REG ----------------------------- */ -#define BLE_BLE_AESPTR_REG_AESPTR_Pos (0UL) /*!< BLE BLE_AESPTR_REG: AESPTR (Bit 0) */ -#define BLE_BLE_AESPTR_REG_AESPTR_Msk (0xffffUL) /*!< BLE BLE_AESPTR_REG: AESPTR (Bitfield-Mask: 0xffff) */ - -/* ---------------------------- BLE_BLE_TXMICVAL_REG ---------------------------- */ -#define BLE_BLE_TXMICVAL_REG_TXMICVAL_Pos (0UL) /*!< BLE BLE_TXMICVAL_REG: TXMICVAL (Bit 0) */ -#define BLE_BLE_TXMICVAL_REG_TXMICVAL_Msk (0xffffffffUL) /*!< BLE BLE_TXMICVAL_REG: TXMICVAL (Bitfield-Mask: 0xffffffff) */ - -/* ---------------------------- BLE_BLE_RXMICVAL_REG ---------------------------- */ -#define BLE_BLE_RXMICVAL_REG_RXMICVAL_Pos (0UL) /*!< BLE BLE_RXMICVAL_REG: RXMICVAL (Bit 0) */ -#define BLE_BLE_RXMICVAL_REG_RXMICVAL_Msk (0xffffffffUL) /*!< BLE BLE_RXMICVAL_REG: RXMICVAL (Bitfield-Mask: 0xffffffff) */ - -/* --------------------------- BLE_BLE_RFTESTCNTL_REG --------------------------- */ -#define BLE_BLE_RFTESTCNTL_REG_TXLENGTH_Pos (0UL) /*!< BLE BLE_RFTESTCNTL_REG: TXLENGTH (Bit 0) */ -#define BLE_BLE_RFTESTCNTL_REG_TXLENGTH_Msk (0x1ffUL) /*!< BLE BLE_RFTESTCNTL_REG: TXLENGTH (Bitfield-Mask: 0x1ff) */ -#define BLE_BLE_RFTESTCNTL_REG_TXPKTCNTEN_Pos (11UL) /*!< BLE BLE_RFTESTCNTL_REG: TXPKTCNTEN (Bit 11) */ -#define BLE_BLE_RFTESTCNTL_REG_TXPKTCNTEN_Msk (0x800UL) /*!< BLE BLE_RFTESTCNTL_REG: TXPKTCNTEN (Bitfield-Mask: 0x01) */ -#define BLE_BLE_RFTESTCNTL_REG_TXPLDSRC_Pos (12UL) /*!< BLE BLE_RFTESTCNTL_REG: TXPLDSRC (Bit 12) */ -#define BLE_BLE_RFTESTCNTL_REG_TXPLDSRC_Msk (0x1000UL) /*!< BLE BLE_RFTESTCNTL_REG: TXPLDSRC (Bitfield-Mask: 0x01) */ -#define BLE_BLE_RFTESTCNTL_REG_PRBSTYPE_Pos (13UL) /*!< BLE BLE_RFTESTCNTL_REG: PRBSTYPE (Bit 13) */ -#define BLE_BLE_RFTESTCNTL_REG_PRBSTYPE_Msk (0x2000UL) /*!< BLE BLE_RFTESTCNTL_REG: PRBSTYPE (Bitfield-Mask: 0x01) */ -#define BLE_BLE_RFTESTCNTL_REG_TXLENGTHSRC_Pos (14UL) /*!< BLE BLE_RFTESTCNTL_REG: TXLENGTHSRC (Bit 14) */ -#define BLE_BLE_RFTESTCNTL_REG_TXLENGTHSRC_Msk (0x4000UL) /*!< BLE BLE_RFTESTCNTL_REG: TXLENGTHSRC (Bitfield-Mask: 0x01) */ -#define BLE_BLE_RFTESTCNTL_REG_INFINITETX_Pos (15UL) /*!< BLE BLE_RFTESTCNTL_REG: INFINITETX (Bit 15) */ -#define BLE_BLE_RFTESTCNTL_REG_INFINITETX_Msk (0x8000UL) /*!< BLE BLE_RFTESTCNTL_REG: INFINITETX (Bitfield-Mask: 0x01) */ -#define BLE_BLE_RFTESTCNTL_REG_RXPKTCNTEN_Pos (27UL) /*!< BLE BLE_RFTESTCNTL_REG: RXPKTCNTEN (Bit 27) */ -#define BLE_BLE_RFTESTCNTL_REG_RXPKTCNTEN_Msk (0x8000000UL) /*!< BLE BLE_RFTESTCNTL_REG: RXPKTCNTEN (Bitfield-Mask: 0x01) */ -#define BLE_BLE_RFTESTCNTL_REG_INFINITERX_Pos (31UL) /*!< BLE BLE_RFTESTCNTL_REG: INFINITERX (Bit 31) */ -#define BLE_BLE_RFTESTCNTL_REG_INFINITERX_Msk (0x80000000UL) /*!< BLE BLE_RFTESTCNTL_REG: INFINITERX (Bitfield-Mask: 0x01) */ - -/* -------------------------- BLE_BLE_RFTESTTXSTAT_REG -------------------------- */ -#define BLE_BLE_RFTESTTXSTAT_REG_TXPKTCNT_Pos (0UL) /*!< BLE BLE_RFTESTTXSTAT_REG: TXPKTCNT (Bit 0) */ -#define BLE_BLE_RFTESTTXSTAT_REG_TXPKTCNT_Msk (0xffffffffUL) /*!< BLE BLE_RFTESTTXSTAT_REG: TXPKTCNT (Bitfield-Mask: 0xffffffff) */ - -/* -------------------------- BLE_BLE_RFTESTRXSTAT_REG -------------------------- */ -#define BLE_BLE_RFTESTRXSTAT_REG_RXPKTCNT_Pos (0UL) /*!< BLE BLE_RFTESTRXSTAT_REG: RXPKTCNT (Bit 0) */ -#define BLE_BLE_RFTESTRXSTAT_REG_RXPKTCNT_Msk (0xffffffffUL) /*!< BLE BLE_RFTESTRXSTAT_REG: RXPKTCNT (Bitfield-Mask: 0xffffffff) */ - -/* --------------------------- BLE_BLE_TIMGENCNTL_REG --------------------------- */ -#define BLE_BLE_TIMGENCNTL_REG_PREFETCH_TIME_Pos (0UL) /*!< BLE BLE_TIMGENCNTL_REG: PREFETCH_TIME (Bit 0) */ -#define BLE_BLE_TIMGENCNTL_REG_PREFETCH_TIME_Msk (0x1ffUL) /*!< BLE BLE_TIMGENCNTL_REG: PREFETCH_TIME (Bitfield-Mask: 0x1ff) */ -#define BLE_BLE_TIMGENCNTL_REG_PREFETCHABORT_TIME_Pos (16UL) /*!< BLE BLE_TIMGENCNTL_REG: PREFETCHABORT_TIME (Bit 16) */ -#define BLE_BLE_TIMGENCNTL_REG_PREFETCHABORT_TIME_Msk (0x3ff0000UL) /*!< BLE BLE_TIMGENCNTL_REG: PREFETCHABORT_TIME (Bitfield-Mask: 0x3ff) */ -#define BLE_BLE_TIMGENCNTL_REG_APFM_EN_Pos (31UL) /*!< BLE BLE_TIMGENCNTL_REG: APFM_EN (Bit 31) */ -#define BLE_BLE_TIMGENCNTL_REG_APFM_EN_Msk (0x80000000UL) /*!< BLE BLE_TIMGENCNTL_REG: APFM_EN (Bitfield-Mask: 0x01) */ - -/* --------------------------- BLE_BLE_GROSSTIMTGT_REG -------------------------- */ -#define BLE_BLE_GROSSTIMTGT_REG_GROSSTARGET_Pos (0UL) /*!< BLE BLE_GROSSTIMTGT_REG: GROSSTARGET (Bit 0) */ -#define BLE_BLE_GROSSTIMTGT_REG_GROSSTARGET_Msk (0x7fffffUL) /*!< BLE BLE_GROSSTIMTGT_REG: GROSSTARGET (Bitfield-Mask: 0x7fffff) */ - -/* --------------------------- BLE_BLE_FINETIMTGT_REG --------------------------- */ -#define BLE_BLE_FINETIMTGT_REG_FINETARGET_Pos (0UL) /*!< BLE BLE_FINETIMTGT_REG: FINETARGET (Bit 0) */ -#define BLE_BLE_FINETIMTGT_REG_FINETARGET_Msk (0x7ffffffUL) /*!< BLE BLE_FINETIMTGT_REG: FINETARGET (Bitfield-Mask: 0x7ffffff) */ - -/* ---------------------------- BLE_BLE_SAMPLECLK_REG --------------------------- */ -#define BLE_BLE_SAMPLECLK_REG_SAMP_Pos (0UL) /*!< BLE BLE_SAMPLECLK_REG: SAMP (Bit 0) */ -#define BLE_BLE_SAMPLECLK_REG_SAMP_Msk (0x1UL) /*!< BLE BLE_SAMPLECLK_REG: SAMP (Bitfield-Mask: 0x01) */ - -/* --------------------------- BLE_BLE_COEXIFCNTL0_REG -------------------------- */ -#define BLE_BLE_COEXIFCNTL0_REG_COEX_EN_Pos (0UL) /*!< BLE BLE_COEXIFCNTL0_REG: COEX_EN (Bit 0) */ -#define BLE_BLE_COEXIFCNTL0_REG_COEX_EN_Msk (0x1UL) /*!< BLE BLE_COEXIFCNTL0_REG: COEX_EN (Bitfield-Mask: 0x01) */ -#define BLE_BLE_COEXIFCNTL0_REG_SYNCGEN_EN_Pos (1UL) /*!< BLE BLE_COEXIFCNTL0_REG: SYNCGEN_EN (Bit 1) */ -#define BLE_BLE_COEXIFCNTL0_REG_SYNCGEN_EN_Msk (0x2UL) /*!< BLE BLE_COEXIFCNTL0_REG: SYNCGEN_EN (Bitfield-Mask: 0x01) */ -#define BLE_BLE_COEXIFCNTL0_REG_WLANRXMSK_Pos (4UL) /*!< BLE BLE_COEXIFCNTL0_REG: WLANRXMSK (Bit 4) */ -#define BLE_BLE_COEXIFCNTL0_REG_WLANRXMSK_Msk (0x30UL) /*!< BLE BLE_COEXIFCNTL0_REG: WLANRXMSK (Bitfield-Mask: 0x03) */ -#define BLE_BLE_COEXIFCNTL0_REG_WLANTXMSK_Pos (6UL) /*!< BLE BLE_COEXIFCNTL0_REG: WLANTXMSK (Bit 6) */ -#define BLE_BLE_COEXIFCNTL0_REG_WLANTXMSK_Msk (0xc0UL) /*!< BLE BLE_COEXIFCNTL0_REG: WLANTXMSK (Bitfield-Mask: 0x03) */ -#define BLE_BLE_COEXIFCNTL0_REG_WLCTXPRIOMODE_Pos (16UL) /*!< BLE BLE_COEXIFCNTL0_REG: WLCTXPRIOMODE (Bit 16) */ -#define BLE_BLE_COEXIFCNTL0_REG_WLCTXPRIOMODE_Msk (0x30000UL) /*!< BLE BLE_COEXIFCNTL0_REG: WLCTXPRIOMODE (Bitfield-Mask: 0x03) */ -#define BLE_BLE_COEXIFCNTL0_REG_WLCRXPRIOMODE_Pos (20UL) /*!< BLE BLE_COEXIFCNTL0_REG: WLCRXPRIOMODE (Bit 20) */ -#define BLE_BLE_COEXIFCNTL0_REG_WLCRXPRIOMODE_Msk (0x300000UL) /*!< BLE BLE_COEXIFCNTL0_REG: WLCRXPRIOMODE (Bitfield-Mask: 0x03) */ - -/* --------------------------- BLE_BLE_COEXIFCNTL1_REG -------------------------- */ -#define BLE_BLE_COEXIFCNTL1_REG_WLCPDELAY_Pos (0UL) /*!< BLE BLE_COEXIFCNTL1_REG: WLCPDELAY (Bit 0) */ -#define BLE_BLE_COEXIFCNTL1_REG_WLCPDELAY_Msk (0x7fUL) /*!< BLE BLE_COEXIFCNTL1_REG: WLCPDELAY (Bitfield-Mask: 0x7f) */ -#define BLE_BLE_COEXIFCNTL1_REG_WLCPDURATION_Pos (8UL) /*!< BLE BLE_COEXIFCNTL1_REG: WLCPDURATION (Bit 8) */ -#define BLE_BLE_COEXIFCNTL1_REG_WLCPDURATION_Msk (0x7f00UL) /*!< BLE BLE_COEXIFCNTL1_REG: WLCPDURATION (Bitfield-Mask: 0x7f) */ -#define BLE_BLE_COEXIFCNTL1_REG_WLCPTXTHR_Pos (16UL) /*!< BLE BLE_COEXIFCNTL1_REG: WLCPTXTHR (Bit 16) */ -#define BLE_BLE_COEXIFCNTL1_REG_WLCPTXTHR_Msk (0x1f0000UL) /*!< BLE BLE_COEXIFCNTL1_REG: WLCPTXTHR (Bitfield-Mask: 0x1f) */ -#define BLE_BLE_COEXIFCNTL1_REG_WLCPRXTHR_Pos (24UL) /*!< BLE BLE_COEXIFCNTL1_REG: WLCPRXTHR (Bit 24) */ -#define BLE_BLE_COEXIFCNTL1_REG_WLCPRXTHR_Msk (0x1f000000UL) /*!< BLE BLE_COEXIFCNTL1_REG: WLCPRXTHR (Bitfield-Mask: 0x1f) */ - -/* ---------------------------- BLE_BLE_BLEMPRIO0_REG --------------------------- */ -#define BLE_BLE_BLEMPRIO0_REG_BLEM0_Pos (0UL) /*!< BLE BLE_BLEMPRIO0_REG: BLEM0 (Bit 0) */ -#define BLE_BLE_BLEMPRIO0_REG_BLEM0_Msk (0xfUL) /*!< BLE BLE_BLEMPRIO0_REG: BLEM0 (Bitfield-Mask: 0x0f) */ -#define BLE_BLE_BLEMPRIO0_REG_BLEM1_Pos (4UL) /*!< BLE BLE_BLEMPRIO0_REG: BLEM1 (Bit 4) */ -#define BLE_BLE_BLEMPRIO0_REG_BLEM1_Msk (0xf0UL) /*!< BLE BLE_BLEMPRIO0_REG: BLEM1 (Bitfield-Mask: 0x0f) */ -#define BLE_BLE_BLEMPRIO0_REG_BLEM2_Pos (8UL) /*!< BLE BLE_BLEMPRIO0_REG: BLEM2 (Bit 8) */ -#define BLE_BLE_BLEMPRIO0_REG_BLEM2_Msk (0xf00UL) /*!< BLE BLE_BLEMPRIO0_REG: BLEM2 (Bitfield-Mask: 0x0f) */ -#define BLE_BLE_BLEMPRIO0_REG_BLEM3_Pos (12UL) /*!< BLE BLE_BLEMPRIO0_REG: BLEM3 (Bit 12) */ -#define BLE_BLE_BLEMPRIO0_REG_BLEM3_Msk (0xf000UL) /*!< BLE BLE_BLEMPRIO0_REG: BLEM3 (Bitfield-Mask: 0x0f) */ -#define BLE_BLE_BLEMPRIO0_REG_BLEM4_Pos (16UL) /*!< BLE BLE_BLEMPRIO0_REG: BLEM4 (Bit 16) */ -#define BLE_BLE_BLEMPRIO0_REG_BLEM4_Msk (0xf0000UL) /*!< BLE BLE_BLEMPRIO0_REG: BLEM4 (Bitfield-Mask: 0x0f) */ -#define BLE_BLE_BLEMPRIO0_REG_BLEM5_Pos (20UL) /*!< BLE BLE_BLEMPRIO0_REG: BLEM5 (Bit 20) */ -#define BLE_BLE_BLEMPRIO0_REG_BLEM5_Msk (0xf00000UL) /*!< BLE BLE_BLEMPRIO0_REG: BLEM5 (Bitfield-Mask: 0x0f) */ -#define BLE_BLE_BLEMPRIO0_REG_BLEM6_Pos (24UL) /*!< BLE BLE_BLEMPRIO0_REG: BLEM6 (Bit 24) */ -#define BLE_BLE_BLEMPRIO0_REG_BLEM6_Msk (0xf000000UL) /*!< BLE BLE_BLEMPRIO0_REG: BLEM6 (Bitfield-Mask: 0x0f) */ -#define BLE_BLE_BLEMPRIO0_REG_BLEM7_Pos (28UL) /*!< BLE BLE_BLEMPRIO0_REG: BLEM7 (Bit 28) */ -#define BLE_BLE_BLEMPRIO0_REG_BLEM7_Msk (0xf0000000UL) /*!< BLE BLE_BLEMPRIO0_REG: BLEM7 (Bitfield-Mask: 0x0f) */ - -/* ---------------------------- BLE_BLE_BLEMPRIO1_REG --------------------------- */ -#define BLE_BLE_BLEMPRIO1_REG_BLEMDEFAULT_Pos (28UL) /*!< BLE BLE_BLEMPRIO1_REG: BLEMDEFAULT (Bit 28) */ -#define BLE_BLE_BLEMPRIO1_REG_BLEMDEFAULT_Msk (0xf0000000UL) /*!< BLE BLE_BLEMPRIO1_REG: BLEMDEFAULT (Bitfield-Mask: 0x0f) */ - -/* ------------------------------ BLE_BLE_CNTL2_REG ----------------------------- */ -#define BLE_BLE_CNTL2_REG_EMACCERRSTAT_Pos (0UL) /*!< BLE BLE_CNTL2_REG: EMACCERRSTAT (Bit 0) */ -#define BLE_BLE_CNTL2_REG_EMACCERRSTAT_Msk (0x1UL) /*!< BLE BLE_CNTL2_REG: EMACCERRSTAT (Bitfield-Mask: 0x01) */ -#define BLE_BLE_CNTL2_REG_EMACCERRACK_Pos (1UL) /*!< BLE BLE_CNTL2_REG: EMACCERRACK (Bit 1) */ -#define BLE_BLE_CNTL2_REG_EMACCERRACK_Msk (0x2UL) /*!< BLE BLE_CNTL2_REG: EMACCERRACK (Bitfield-Mask: 0x01) */ -#define BLE_BLE_CNTL2_REG_EMACCERRMSK_Pos (2UL) /*!< BLE BLE_CNTL2_REG: EMACCERRMSK (Bit 2) */ -#define BLE_BLE_CNTL2_REG_EMACCERRMSK_Msk (0x4UL) /*!< BLE BLE_CNTL2_REG: EMACCERRMSK (Bitfield-Mask: 0x01) */ -#define BLE_BLE_CNTL2_REG_BLE_DIAG_OVR_Pos (3UL) /*!< BLE BLE_CNTL2_REG: BLE_DIAG_OVR (Bit 3) */ -#define BLE_BLE_CNTL2_REG_BLE_DIAG_OVR_Msk (0x8UL) /*!< BLE BLE_CNTL2_REG: BLE_DIAG_OVR (Bitfield-Mask: 0x01) */ -#define BLE_BLE_CNTL2_REG_BLE_DIAG_OVR_SEL_Pos (4UL) /*!< BLE BLE_CNTL2_REG: BLE_DIAG_OVR_SEL (Bit 4) */ -#define BLE_BLE_CNTL2_REG_BLE_DIAG_OVR_SEL_Msk (0x30UL) /*!< BLE BLE_CNTL2_REG: BLE_DIAG_OVR_SEL (Bitfield-Mask: 0x03) */ -#define BLE_BLE_CNTL2_REG_BLE_CLK_STAT_Pos (6UL) /*!< BLE BLE_CNTL2_REG: BLE_CLK_STAT (Bit 6) */ -#define BLE_BLE_CNTL2_REG_BLE_CLK_STAT_Msk (0x40UL) /*!< BLE BLE_CNTL2_REG: BLE_CLK_STAT (Bitfield-Mask: 0x01) */ -#define BLE_BLE_CNTL2_REG_MON_LP_CLK_Pos (7UL) /*!< BLE BLE_CNTL2_REG: MON_LP_CLK (Bit 7) */ -#define BLE_BLE_CNTL2_REG_MON_LP_CLK_Msk (0x80UL) /*!< BLE BLE_CNTL2_REG: MON_LP_CLK (Bitfield-Mask: 0x01) */ -#define BLE_BLE_CNTL2_REG_RADIO_PWRDN_ALLOW_Pos (8UL) /*!< BLE BLE_CNTL2_REG: RADIO_PWRDN_ALLOW (Bit 8) */ -#define BLE_BLE_CNTL2_REG_RADIO_PWRDN_ALLOW_Msk (0x100UL) /*!< BLE BLE_CNTL2_REG: RADIO_PWRDN_ALLOW (Bitfield-Mask: 0x01) */ -#define BLE_BLE_CNTL2_REG_BLE_CLK_SEL_Pos (9UL) /*!< BLE BLE_CNTL2_REG: BLE_CLK_SEL (Bit 9) */ -#define BLE_BLE_CNTL2_REG_BLE_CLK_SEL_Msk (0x7e00UL) /*!< BLE BLE_CNTL2_REG: BLE_CLK_SEL (Bitfield-Mask: 0x3f) */ -#define BLE_BLE_CNTL2_REG_BLE_TRANSACTION_SRC_Pos (15UL) /*!< BLE BLE_CNTL2_REG: BLE_TRANSACTION_SRC (Bit 15) */ -#define BLE_BLE_CNTL2_REG_BLE_TRANSACTION_SRC_Msk (0x8000UL) /*!< BLE BLE_CNTL2_REG: BLE_TRANSACTION_SRC (Bitfield-Mask: 0x01) */ -#define BLE_BLE_CNTL2_REG_BLE_TRANSACTION_MODE_Pos (16UL) /*!< BLE BLE_CNTL2_REG: BLE_TRANSACTION_MODE (Bit 16) */ -#define BLE_BLE_CNTL2_REG_BLE_TRANSACTION_MODE_Msk (0x10000UL) /*!< BLE BLE_CNTL2_REG: BLE_TRANSACTION_MODE (Bitfield-Mask: 0x01) */ -#define BLE_BLE_CNTL2_REG_BLE_PTI_SOURCE_SEL_Pos (17UL) /*!< BLE BLE_CNTL2_REG: BLE_PTI_SOURCE_SEL (Bit 17) */ -#define BLE_BLE_CNTL2_REG_BLE_PTI_SOURCE_SEL_Msk (0x20000UL) /*!< BLE BLE_CNTL2_REG: BLE_PTI_SOURCE_SEL (Bitfield-Mask: 0x01) */ -#define BLE_BLE_CNTL2_REG_BB_ONLY_Pos (18UL) /*!< BLE BLE_CNTL2_REG: BB_ONLY (Bit 18) */ -#define BLE_BLE_CNTL2_REG_BB_ONLY_Msk (0x40000UL) /*!< BLE BLE_CNTL2_REG: BB_ONLY (Bitfield-Mask: 0x01) */ -#define BLE_BLE_CNTL2_REG_SW_RPL_SPI_Pos (19UL) /*!< BLE BLE_CNTL2_REG: SW_RPL_SPI (Bit 19) */ -#define BLE_BLE_CNTL2_REG_SW_RPL_SPI_Msk (0x80000UL) /*!< BLE BLE_CNTL2_REG: SW_RPL_SPI (Bitfield-Mask: 0x01) */ -#define BLE_BLE_CNTL2_REG_WAKEUPLPSTAT_Pos (20UL) /*!< BLE BLE_CNTL2_REG: WAKEUPLPSTAT (Bit 20) */ -#define BLE_BLE_CNTL2_REG_WAKEUPLPSTAT_Msk (0x100000UL) /*!< BLE BLE_CNTL2_REG: WAKEUPLPSTAT (Bitfield-Mask: 0x01) */ -#define BLE_BLE_CNTL2_REG_BLE_RSSI_SEL_Pos (21UL) /*!< BLE BLE_CNTL2_REG: BLE_RSSI_SEL (Bit 21) */ -#define BLE_BLE_CNTL2_REG_BLE_RSSI_SEL_Msk (0x200000UL) /*!< BLE BLE_CNTL2_REG: BLE_RSSI_SEL (Bitfield-Mask: 0x01) */ -#define BLE_BLE_CNTL2_REG_BLE_TRANSACTION_START_Pos (22UL) /*!< BLE BLE_CNTL2_REG: BLE_TRANSACTION_START (Bit 22) */ -#define BLE_BLE_CNTL2_REG_BLE_TRANSACTION_START_Msk (0xffc00000UL) /*!< BLE BLE_CNTL2_REG: BLE_TRANSACTION_START (Bitfield-Mask: 0x3ff) */ - -/* ----------------------------- BLE_BLE_EM_BASE_REG ---------------------------- */ -#define BLE_BLE_EM_BASE_REG_BLE_EM_BASE_16_10_Pos (10UL) /*!< BLE BLE_EM_BASE_REG: BLE_EM_BASE_16_10 (Bit 10) */ -#define BLE_BLE_EM_BASE_REG_BLE_EM_BASE_16_10_Msk (0x1fc00UL) /*!< BLE BLE_EM_BASE_REG: BLE_EM_BASE_16_10 (Bitfield-Mask: 0x7f) */ - -/* ---------------------------- BLE_BLE_DIAGCNTL2_REG --------------------------- */ -#define BLE_BLE_DIAGCNTL2_REG_DIAG4_Pos (0UL) /*!< BLE BLE_DIAGCNTL2_REG: DIAG4 (Bit 0) */ -#define BLE_BLE_DIAGCNTL2_REG_DIAG4_Msk (0x3fUL) /*!< BLE BLE_DIAGCNTL2_REG: DIAG4 (Bitfield-Mask: 0x3f) */ -#define BLE_BLE_DIAGCNTL2_REG_DIAG4_EN_Pos (7UL) /*!< BLE BLE_DIAGCNTL2_REG: DIAG4_EN (Bit 7) */ -#define BLE_BLE_DIAGCNTL2_REG_DIAG4_EN_Msk (0x80UL) /*!< BLE BLE_DIAGCNTL2_REG: DIAG4_EN (Bitfield-Mask: 0x01) */ -#define BLE_BLE_DIAGCNTL2_REG_DIAG5_Pos (8UL) /*!< BLE BLE_DIAGCNTL2_REG: DIAG5 (Bit 8) */ -#define BLE_BLE_DIAGCNTL2_REG_DIAG5_Msk (0x3f00UL) /*!< BLE BLE_DIAGCNTL2_REG: DIAG5 (Bitfield-Mask: 0x3f) */ -#define BLE_BLE_DIAGCNTL2_REG_DIAG5_EN_Pos (15UL) /*!< BLE BLE_DIAGCNTL2_REG: DIAG5_EN (Bit 15) */ -#define BLE_BLE_DIAGCNTL2_REG_DIAG5_EN_Msk (0x8000UL) /*!< BLE BLE_DIAGCNTL2_REG: DIAG5_EN (Bitfield-Mask: 0x01) */ -#define BLE_BLE_DIAGCNTL2_REG_DIAG6_Pos (16UL) /*!< BLE BLE_DIAGCNTL2_REG: DIAG6 (Bit 16) */ -#define BLE_BLE_DIAGCNTL2_REG_DIAG6_Msk (0x3f0000UL) /*!< BLE BLE_DIAGCNTL2_REG: DIAG6 (Bitfield-Mask: 0x3f) */ -#define BLE_BLE_DIAGCNTL2_REG_DIAG6_EN_Pos (23UL) /*!< BLE BLE_DIAGCNTL2_REG: DIAG6_EN (Bit 23) */ -#define BLE_BLE_DIAGCNTL2_REG_DIAG6_EN_Msk (0x800000UL) /*!< BLE BLE_DIAGCNTL2_REG: DIAG6_EN (Bitfield-Mask: 0x01) */ -#define BLE_BLE_DIAGCNTL2_REG_DIAG7_Pos (24UL) /*!< BLE BLE_DIAGCNTL2_REG: DIAG7 (Bit 24) */ -#define BLE_BLE_DIAGCNTL2_REG_DIAG7_Msk (0x3f000000UL) /*!< BLE BLE_DIAGCNTL2_REG: DIAG7 (Bitfield-Mask: 0x3f) */ -#define BLE_BLE_DIAGCNTL2_REG_DIAG7_EN_Pos (31UL) /*!< BLE BLE_DIAGCNTL2_REG: DIAG7_EN (Bit 31) */ -#define BLE_BLE_DIAGCNTL2_REG_DIAG7_EN_Msk (0x80000000UL) /*!< BLE BLE_DIAGCNTL2_REG: DIAG7_EN (Bitfield-Mask: 0x01) */ - -/* ---------------------------- BLE_BLE_DIAGCNTL3_REG --------------------------- */ -#define BLE_BLE_DIAGCNTL3_REG_DIAG0_BIT_Pos (0UL) /*!< BLE BLE_DIAGCNTL3_REG: DIAG0_BIT (Bit 0) */ -#define BLE_BLE_DIAGCNTL3_REG_DIAG0_BIT_Msk (0x7UL) /*!< BLE BLE_DIAGCNTL3_REG: DIAG0_BIT (Bitfield-Mask: 0x07) */ -#define BLE_BLE_DIAGCNTL3_REG_DIAG0_INV_Pos (3UL) /*!< BLE BLE_DIAGCNTL3_REG: DIAG0_INV (Bit 3) */ -#define BLE_BLE_DIAGCNTL3_REG_DIAG0_INV_Msk (0x8UL) /*!< BLE BLE_DIAGCNTL3_REG: DIAG0_INV (Bitfield-Mask: 0x01) */ -#define BLE_BLE_DIAGCNTL3_REG_DIAG1_BIT_Pos (4UL) /*!< BLE BLE_DIAGCNTL3_REG: DIAG1_BIT (Bit 4) */ -#define BLE_BLE_DIAGCNTL3_REG_DIAG1_BIT_Msk (0x70UL) /*!< BLE BLE_DIAGCNTL3_REG: DIAG1_BIT (Bitfield-Mask: 0x07) */ -#define BLE_BLE_DIAGCNTL3_REG_DIAG1_INV_Pos (7UL) /*!< BLE BLE_DIAGCNTL3_REG: DIAG1_INV (Bit 7) */ -#define BLE_BLE_DIAGCNTL3_REG_DIAG1_INV_Msk (0x80UL) /*!< BLE BLE_DIAGCNTL3_REG: DIAG1_INV (Bitfield-Mask: 0x01) */ -#define BLE_BLE_DIAGCNTL3_REG_DIAG2_BIT_Pos (8UL) /*!< BLE BLE_DIAGCNTL3_REG: DIAG2_BIT (Bit 8) */ -#define BLE_BLE_DIAGCNTL3_REG_DIAG2_BIT_Msk (0x700UL) /*!< BLE BLE_DIAGCNTL3_REG: DIAG2_BIT (Bitfield-Mask: 0x07) */ -#define BLE_BLE_DIAGCNTL3_REG_DIAG2_INV_Pos (11UL) /*!< BLE BLE_DIAGCNTL3_REG: DIAG2_INV (Bit 11) */ -#define BLE_BLE_DIAGCNTL3_REG_DIAG2_INV_Msk (0x800UL) /*!< BLE BLE_DIAGCNTL3_REG: DIAG2_INV (Bitfield-Mask: 0x01) */ -#define BLE_BLE_DIAGCNTL3_REG_DIAG3_BIT_Pos (12UL) /*!< BLE BLE_DIAGCNTL3_REG: DIAG3_BIT (Bit 12) */ -#define BLE_BLE_DIAGCNTL3_REG_DIAG3_BIT_Msk (0x7000UL) /*!< BLE BLE_DIAGCNTL3_REG: DIAG3_BIT (Bitfield-Mask: 0x07) */ -#define BLE_BLE_DIAGCNTL3_REG_DIAG3_INV_Pos (15UL) /*!< BLE BLE_DIAGCNTL3_REG: DIAG3_INV (Bit 15) */ -#define BLE_BLE_DIAGCNTL3_REG_DIAG3_INV_Msk (0x8000UL) /*!< BLE BLE_DIAGCNTL3_REG: DIAG3_INV (Bitfield-Mask: 0x01) */ -#define BLE_BLE_DIAGCNTL3_REG_DIAG4_BIT_Pos (16UL) /*!< BLE BLE_DIAGCNTL3_REG: DIAG4_BIT (Bit 16) */ -#define BLE_BLE_DIAGCNTL3_REG_DIAG4_BIT_Msk (0x70000UL) /*!< BLE BLE_DIAGCNTL3_REG: DIAG4_BIT (Bitfield-Mask: 0x07) */ -#define BLE_BLE_DIAGCNTL3_REG_DIAG4_INV_Pos (19UL) /*!< BLE BLE_DIAGCNTL3_REG: DIAG4_INV (Bit 19) */ -#define BLE_BLE_DIAGCNTL3_REG_DIAG4_INV_Msk (0x80000UL) /*!< BLE BLE_DIAGCNTL3_REG: DIAG4_INV (Bitfield-Mask: 0x01) */ -#define BLE_BLE_DIAGCNTL3_REG_DIAG5_BIT_Pos (20UL) /*!< BLE BLE_DIAGCNTL3_REG: DIAG5_BIT (Bit 20) */ -#define BLE_BLE_DIAGCNTL3_REG_DIAG5_BIT_Msk (0x700000UL) /*!< BLE BLE_DIAGCNTL3_REG: DIAG5_BIT (Bitfield-Mask: 0x07) */ -#define BLE_BLE_DIAGCNTL3_REG_DIAG5_INV_Pos (23UL) /*!< BLE BLE_DIAGCNTL3_REG: DIAG5_INV (Bit 23) */ -#define BLE_BLE_DIAGCNTL3_REG_DIAG5_INV_Msk (0x800000UL) /*!< BLE BLE_DIAGCNTL3_REG: DIAG5_INV (Bitfield-Mask: 0x01) */ -#define BLE_BLE_DIAGCNTL3_REG_DIAG6_BIT_Pos (24UL) /*!< BLE BLE_DIAGCNTL3_REG: DIAG6_BIT (Bit 24) */ -#define BLE_BLE_DIAGCNTL3_REG_DIAG6_BIT_Msk (0x7000000UL) /*!< BLE BLE_DIAGCNTL3_REG: DIAG6_BIT (Bitfield-Mask: 0x07) */ -#define BLE_BLE_DIAGCNTL3_REG_DIAG6_INV_Pos (27UL) /*!< BLE BLE_DIAGCNTL3_REG: DIAG6_INV (Bit 27) */ -#define BLE_BLE_DIAGCNTL3_REG_DIAG6_INV_Msk (0x8000000UL) /*!< BLE BLE_DIAGCNTL3_REG: DIAG6_INV (Bitfield-Mask: 0x01) */ -#define BLE_BLE_DIAGCNTL3_REG_DIAG7_BIT_Pos (28UL) /*!< BLE BLE_DIAGCNTL3_REG: DIAG7_BIT (Bit 28) */ -#define BLE_BLE_DIAGCNTL3_REG_DIAG7_BIT_Msk (0x70000000UL) /*!< BLE BLE_DIAGCNTL3_REG: DIAG7_BIT (Bitfield-Mask: 0x07) */ -#define BLE_BLE_DIAGCNTL3_REG_DIAG7_INV_Pos (31UL) /*!< BLE BLE_DIAGCNTL3_REG: DIAG7_INV (Bit 31) */ -#define BLE_BLE_DIAGCNTL3_REG_DIAG7_INV_Msk (0x80000000UL) /*!< BLE BLE_DIAGCNTL3_REG: DIAG7_INV (Bitfield-Mask: 0x01) */ - - -/* ================================================================================ */ -/* ================ struct 'CACHE' Position & Mask ================ */ -/* ================================================================================ */ - - -/* ---------------------------- CACHE_CACHE_CTRL1_REG --------------------------- */ -#define CACHE_CACHE_CTRL1_REG_CACHE_FLUSH_Pos (0UL) /*!< CACHE CACHE_CTRL1_REG: CACHE_FLUSH (Bit 0) */ -#define CACHE_CACHE_CTRL1_REG_CACHE_FLUSH_Msk (0x1UL) /*!< CACHE CACHE_CTRL1_REG: CACHE_FLUSH (Bitfield-Mask: 0x01) */ -#define CACHE_CACHE_CTRL1_REG_CACHE_RES1_Pos (1UL) /*!< CACHE CACHE_CTRL1_REG: CACHE_RES1 (Bit 1) */ -#define CACHE_CACHE_CTRL1_REG_CACHE_RES1_Msk (0x2UL) /*!< CACHE CACHE_CTRL1_REG: CACHE_RES1 (Bitfield-Mask: 0x01) */ - -/* -------------------------- CACHE_CACHE_LNSIZECFG_REG ------------------------- */ -#define CACHE_CACHE_LNSIZECFG_REG_CACHE_LINE_Pos (0UL) /*!< CACHE CACHE_LNSIZECFG_REG: CACHE_LINE (Bit 0) */ -#define CACHE_CACHE_LNSIZECFG_REG_CACHE_LINE_Msk (0x3UL) /*!< CACHE CACHE_LNSIZECFG_REG: CACHE_LINE (Bitfield-Mask: 0x03) */ - -/* -------------------------- CACHE_CACHE_ASSOCCFG_REG -------------------------- */ -#define CACHE_CACHE_ASSOCCFG_REG_CACHE_ASSOC_Pos (0UL) /*!< CACHE CACHE_ASSOCCFG_REG: CACHE_ASSOC (Bit 0) */ -#define CACHE_CACHE_ASSOCCFG_REG_CACHE_ASSOC_Msk (0x3UL) /*!< CACHE CACHE_ASSOCCFG_REG: CACHE_ASSOC (Bitfield-Mask: 0x03) */ - -/* ---------------------------- CACHE_CACHE_CTRL2_REG --------------------------- */ -#define CACHE_CACHE_CTRL2_REG_CACHE_LEN_Pos (0UL) /*!< CACHE CACHE_CTRL2_REG: CACHE_LEN (Bit 0) */ -#define CACHE_CACHE_CTRL2_REG_CACHE_LEN_Msk (0x1ffUL) /*!< CACHE CACHE_CTRL2_REG: CACHE_LEN (Bitfield-Mask: 0x1ff) */ -#define CACHE_CACHE_CTRL2_REG_CACHE_WEN_Pos (9UL) /*!< CACHE CACHE_CTRL2_REG: CACHE_WEN (Bit 9) */ -#define CACHE_CACHE_CTRL2_REG_CACHE_WEN_Msk (0x200UL) /*!< CACHE CACHE_CTRL2_REG: CACHE_WEN (Bitfield-Mask: 0x01) */ -#define CACHE_CACHE_CTRL2_REG_CACHE_CGEN_Pos (10UL) /*!< CACHE CACHE_CTRL2_REG: CACHE_CGEN (Bit 10) */ -#define CACHE_CACHE_CTRL2_REG_CACHE_CGEN_Msk (0x400UL) /*!< CACHE CACHE_CTRL2_REG: CACHE_CGEN (Bitfield-Mask: 0x01) */ -#define CACHE_CACHE_CTRL2_REG_ENABLE_ALSO_OTP_CACHED_Pos (11UL) /*!< CACHE CACHE_CTRL2_REG: ENABLE_ALSO_OTP_CACHED (Bit 11) */ -#define CACHE_CACHE_CTRL2_REG_ENABLE_ALSO_OTP_CACHED_Msk (0x800UL) /*!< CACHE CACHE_CTRL2_REG: ENABLE_ALSO_OTP_CACHED (Bitfield-Mask: 0x01) */ -#define CACHE_CACHE_CTRL2_REG_ENABLE_ALSO_QSPIFLASH_CACHED_Pos (12UL) /*!< CACHE CACHE_CTRL2_REG: ENABLE_ALSO_QSPIFLASH_CACHED (Bit 12) */ -#define CACHE_CACHE_CTRL2_REG_ENABLE_ALSO_QSPIFLASH_CACHED_Msk (0x1000UL) /*!< CACHE CACHE_CTRL2_REG: ENABLE_ALSO_QSPIFLASH_CACHED (Bitfield-Mask: 0x01) */ - -/* ---------------------------- CACHE_CACHE_CTRL3_REG --------------------------- */ -#define CACHE_CACHE_CTRL3_REG_CACHE_ASSOCIATIVITY_RESET_VALUE_Pos (0UL) /*!< CACHE CACHE_CTRL3_REG: CACHE_ASSOCIATIVITY_RESET_VALUE (Bit 0) */ -#define CACHE_CACHE_CTRL3_REG_CACHE_ASSOCIATIVITY_RESET_VALUE_Msk (0x3UL) /*!< CACHE CACHE_CTRL3_REG: CACHE_ASSOCIATIVITY_RESET_VALUE (Bitfield-Mask: 0x03) */ -#define CACHE_CACHE_CTRL3_REG_CACHE_LINE_SIZE_RESET_VALUE_Pos (2UL) /*!< CACHE CACHE_CTRL3_REG: CACHE_LINE_SIZE_RESET_VALUE (Bit 2) */ -#define CACHE_CACHE_CTRL3_REG_CACHE_LINE_SIZE_RESET_VALUE_Msk (0xcUL) /*!< CACHE CACHE_CTRL3_REG: CACHE_LINE_SIZE_RESET_VALUE (Bitfield-Mask: 0x03) */ -#define CACHE_CACHE_CTRL3_REG_CACHE_RAM_SIZE_RESET_VALUE_Pos (4UL) /*!< CACHE CACHE_CTRL3_REG: CACHE_RAM_SIZE_RESET_VALUE (Bit 4) */ -#define CACHE_CACHE_CTRL3_REG_CACHE_RAM_SIZE_RESET_VALUE_Msk (0x70UL) /*!< CACHE CACHE_CTRL3_REG: CACHE_RAM_SIZE_RESET_VALUE (Bitfield-Mask: 0x07) */ -#define CACHE_CACHE_CTRL3_REG_CACHE_CONTROLLER_RESET_Pos (7UL) /*!< CACHE CACHE_CTRL3_REG: CACHE_CONTROLLER_RESET (Bit 7) */ -#define CACHE_CACHE_CTRL3_REG_CACHE_CONTROLLER_RESET_Msk (0x80UL) /*!< CACHE CACHE_CTRL3_REG: CACHE_CONTROLLER_RESET (Bitfield-Mask: 0x01) */ - -/* -------------------------- CACHE_CACHE_MRM_HITS_REG -------------------------- */ -#define CACHE_CACHE_MRM_HITS_REG_MRM_HITS_Pos (0UL) /*!< CACHE CACHE_MRM_HITS_REG: MRM_HITS (Bit 0) */ -#define CACHE_CACHE_MRM_HITS_REG_MRM_HITS_Msk (0x7ffffUL) /*!< CACHE CACHE_MRM_HITS_REG: MRM_HITS (Bitfield-Mask: 0x7ffff) */ - -/* ------------------------- CACHE_CACHE_MRM_MISSES_REG ------------------------- */ -#define CACHE_CACHE_MRM_MISSES_REG_MRM_MISSES_Pos (0UL) /*!< CACHE CACHE_MRM_MISSES_REG: MRM_MISSES (Bit 0) */ -#define CACHE_CACHE_MRM_MISSES_REG_MRM_MISSES_Msk (0x3ffffUL) /*!< CACHE CACHE_MRM_MISSES_REG: MRM_MISSES (Bitfield-Mask: 0x3ffff) */ - -/* -------------------------- CACHE_CACHE_MRM_CTRL_REG -------------------------- */ -#define CACHE_CACHE_MRM_CTRL_REG_MRM_START_Pos (0UL) /*!< CACHE CACHE_MRM_CTRL_REG: MRM_START (Bit 0) */ -#define CACHE_CACHE_MRM_CTRL_REG_MRM_START_Msk (0x1UL) /*!< CACHE CACHE_MRM_CTRL_REG: MRM_START (Bitfield-Mask: 0x01) */ -#define CACHE_CACHE_MRM_CTRL_REG_MRM_IRQ_MASK_Pos (1UL) /*!< CACHE CACHE_MRM_CTRL_REG: MRM_IRQ_MASK (Bit 1) */ -#define CACHE_CACHE_MRM_CTRL_REG_MRM_IRQ_MASK_Msk (0x2UL) /*!< CACHE CACHE_MRM_CTRL_REG: MRM_IRQ_MASK (Bitfield-Mask: 0x01) */ -#define CACHE_CACHE_MRM_CTRL_REG_MRM_IRQ_TINT_STATUS_Pos (2UL) /*!< CACHE CACHE_MRM_CTRL_REG: MRM_IRQ_TINT_STATUS (Bit 2) */ -#define CACHE_CACHE_MRM_CTRL_REG_MRM_IRQ_TINT_STATUS_Msk (0x4UL) /*!< CACHE CACHE_MRM_CTRL_REG: MRM_IRQ_TINT_STATUS (Bitfield-Mask: 0x01) */ -#define CACHE_CACHE_MRM_CTRL_REG_MRM_IRQ_THRES_STATUS_Pos (3UL) /*!< CACHE CACHE_MRM_CTRL_REG: MRM_IRQ_THRES_STATUS (Bit 3) */ -#define CACHE_CACHE_MRM_CTRL_REG_MRM_IRQ_THRES_STATUS_Msk (0x8UL) /*!< CACHE CACHE_MRM_CTRL_REG: MRM_IRQ_THRES_STATUS (Bitfield-Mask: 0x01) */ - -/* -------------------------- CACHE_CACHE_MRM_TINT_REG -------------------------- */ -#define CACHE_CACHE_MRM_TINT_REG_MRM_TINT_Pos (0UL) /*!< CACHE CACHE_MRM_TINT_REG: MRM_TINT (Bit 0) */ -#define CACHE_CACHE_MRM_TINT_REG_MRM_TINT_Msk (0x3ffffUL) /*!< CACHE CACHE_MRM_TINT_REG: MRM_TINT (Bitfield-Mask: 0x3ffff) */ - -/* -------------------------- CACHE_CACHE_MRM_THRES_REG ------------------------- */ -#define CACHE_CACHE_MRM_THRES_REG_MRM_THRES_Pos (0UL) /*!< CACHE CACHE_MRM_THRES_REG: MRM_THRES (Bit 0) */ -#define CACHE_CACHE_MRM_THRES_REG_MRM_THRES_Msk (0x3ffffUL) /*!< CACHE CACHE_MRM_THRES_REG: MRM_THRES (Bitfield-Mask: 0x3ffff) */ - -/* ----------------------------- CACHE_SWD_RESET_REG ---------------------------- */ -#define CACHE_SWD_RESET_REG_SWD_HW_RESET_REQ_Pos (0UL) /*!< CACHE SWD_RESET_REG: SWD_HW_RESET_REQ (Bit 0) */ -#define CACHE_SWD_RESET_REG_SWD_HW_RESET_REQ_Msk (0x1UL) /*!< CACHE SWD_RESET_REG: SWD_HW_RESET_REQ (Bitfield-Mask: 0x01) */ - - -/* ================================================================================ */ -/* ================ struct 'CHIP_VERSION' Position & Mask ================ */ -/* ================================================================================ */ - - -/* -------------------------- CHIP_VERSION_CHIP_ID1_REG ------------------------- */ -#define CHIP_VERSION_CHIP_ID1_REG_CHIP_ID1_Pos (0UL) /*!< CHIP_VERSION CHIP_ID1_REG: CHIP_ID1 (Bit 0) */ -#define CHIP_VERSION_CHIP_ID1_REG_CHIP_ID1_Msk (0xffUL) /*!< CHIP_VERSION CHIP_ID1_REG: CHIP_ID1 (Bitfield-Mask: 0xff) */ - -/* -------------------------- CHIP_VERSION_CHIP_ID2_REG ------------------------- */ -#define CHIP_VERSION_CHIP_ID2_REG_CHIP_ID2_Pos (0UL) /*!< CHIP_VERSION CHIP_ID2_REG: CHIP_ID2 (Bit 0) */ -#define CHIP_VERSION_CHIP_ID2_REG_CHIP_ID2_Msk (0xffUL) /*!< CHIP_VERSION CHIP_ID2_REG: CHIP_ID2 (Bitfield-Mask: 0xff) */ - -/* -------------------------- CHIP_VERSION_CHIP_ID3_REG ------------------------- */ -#define CHIP_VERSION_CHIP_ID3_REG_CHIP_ID3_Pos (0UL) /*!< CHIP_VERSION CHIP_ID3_REG: CHIP_ID3 (Bit 0) */ -#define CHIP_VERSION_CHIP_ID3_REG_CHIP_ID3_Msk (0xffUL) /*!< CHIP_VERSION CHIP_ID3_REG: CHIP_ID3 (Bitfield-Mask: 0xff) */ - -/* -------------------------- CHIP_VERSION_CHIP_SWC_REG ------------------------- */ -#define CHIP_VERSION_CHIP_SWC_REG_CHIP_SWC_Pos (0UL) /*!< CHIP_VERSION CHIP_SWC_REG: CHIP_SWC (Bit 0) */ -#define CHIP_VERSION_CHIP_SWC_REG_CHIP_SWC_Msk (0xfUL) /*!< CHIP_VERSION CHIP_SWC_REG: CHIP_SWC (Bitfield-Mask: 0x0f) */ - -/* ----------------------- CHIP_VERSION_CHIP_REVISION_REG ----------------------- */ -#define CHIP_VERSION_CHIP_REVISION_REG_REVISION_ID_Pos (0UL) /*!< CHIP_VERSION CHIP_REVISION_REG: REVISION_ID (Bit 0) */ -#define CHIP_VERSION_CHIP_REVISION_REG_REVISION_ID_Msk (0xffUL) /*!< CHIP_VERSION CHIP_REVISION_REG: REVISION_ID (Bitfield-Mask: 0xff) */ - -/* ------------------------ CHIP_VERSION_CHIP_CONFIG1_REG ----------------------- */ -#define CHIP_VERSION_CHIP_CONFIG1_REG_CHIP_CONFIG1_Pos (0UL) /*!< CHIP_VERSION CHIP_CONFIG1_REG: CHIP_CONFIG1 (Bit 0) */ -#define CHIP_VERSION_CHIP_CONFIG1_REG_CHIP_CONFIG1_Msk (0xffUL) /*!< CHIP_VERSION CHIP_CONFIG1_REG: CHIP_CONFIG1 (Bitfield-Mask: 0xff) */ - -/* ------------------------ CHIP_VERSION_CHIP_CONFIG2_REG ----------------------- */ -#define CHIP_VERSION_CHIP_CONFIG2_REG_CHIP_CONFIG2_Pos (0UL) /*!< CHIP_VERSION CHIP_CONFIG2_REG: CHIP_CONFIG2 (Bit 0) */ -#define CHIP_VERSION_CHIP_CONFIG2_REG_CHIP_CONFIG2_Msk (0xffUL) /*!< CHIP_VERSION CHIP_CONFIG2_REG: CHIP_CONFIG2 (Bitfield-Mask: 0xff) */ - -/* ------------------------ CHIP_VERSION_CHIP_CONFIG3_REG ----------------------- */ -#define CHIP_VERSION_CHIP_CONFIG3_REG_CHIP_CONFIG3_Pos (0UL) /*!< CHIP_VERSION CHIP_CONFIG3_REG: CHIP_CONFIG3 (Bit 0) */ -#define CHIP_VERSION_CHIP_CONFIG3_REG_CHIP_CONFIG3_Msk (0xffUL) /*!< CHIP_VERSION CHIP_CONFIG3_REG: CHIP_CONFIG3 (Bitfield-Mask: 0xff) */ - - -/* ================================================================================ */ -/* ================ struct 'COEX' Position & Mask ================ */ -/* ================================================================================ */ - - -/* ----------------------------- COEX_COEX_CTRL_REG ----------------------------- */ -#define COEX_COEX_CTRL_REG_PRGING_ARBITER_Pos (0UL) /*!< COEX COEX_CTRL_REG: PRGING_ARBITER (Bit 0) */ -#define COEX_COEX_CTRL_REG_PRGING_ARBITER_Msk (0x1UL) /*!< COEX COEX_CTRL_REG: PRGING_ARBITER (Bitfield-Mask: 0x01) */ -#define COEX_COEX_CTRL_REG_DECISION_SW_ALL_Pos (1UL) /*!< COEX COEX_CTRL_REG: DECISION_SW_ALL (Bit 1) */ -#define COEX_COEX_CTRL_REG_DECISION_SW_ALL_Msk (0x2UL) /*!< COEX COEX_CTRL_REG: DECISION_SW_ALL (Bitfield-Mask: 0x01) */ -#define COEX_COEX_CTRL_REG_TXRX_MON_FTDF_ALL_Pos (2UL) /*!< COEX COEX_CTRL_REG: TXRX_MON_FTDF_ALL (Bit 2) */ -#define COEX_COEX_CTRL_REG_TXRX_MON_FTDF_ALL_Msk (0x4UL) /*!< COEX COEX_CTRL_REG: TXRX_MON_FTDF_ALL (Bitfield-Mask: 0x01) */ -#define COEX_COEX_CTRL_REG_TXRX_MON_BLE_ALL_Pos (3UL) /*!< COEX COEX_CTRL_REG: TXRX_MON_BLE_ALL (Bit 3) */ -#define COEX_COEX_CTRL_REG_TXRX_MON_BLE_ALL_Msk (0x8UL) /*!< COEX COEX_CTRL_REG: TXRX_MON_BLE_ALL (Bitfield-Mask: 0x01) */ -#define COEX_COEX_CTRL_REG_SMART_ACT_IMPL_Pos (4UL) /*!< COEX COEX_CTRL_REG: SMART_ACT_IMPL (Bit 4) */ -#define COEX_COEX_CTRL_REG_SMART_ACT_IMPL_Msk (0x10UL) /*!< COEX COEX_CTRL_REG: SMART_ACT_IMPL (Bitfield-Mask: 0x01) */ -#define COEX_COEX_CTRL_REG_SEL_COEX_DIAG_Pos (5UL) /*!< COEX COEX_CTRL_REG: SEL_COEX_DIAG (Bit 5) */ -#define COEX_COEX_CTRL_REG_SEL_COEX_DIAG_Msk (0x60UL) /*!< COEX COEX_CTRL_REG: SEL_COEX_DIAG (Bitfield-Mask: 0x03) */ -#define COEX_COEX_CTRL_REG_SEL_FTDF_CCA_Pos (7UL) /*!< COEX COEX_CTRL_REG: SEL_FTDF_CCA (Bit 7) */ -#define COEX_COEX_CTRL_REG_SEL_FTDF_CCA_Msk (0x80UL) /*!< COEX COEX_CTRL_REG: SEL_FTDF_CCA (Bitfield-Mask: 0x01) */ -#define COEX_COEX_CTRL_REG_SEL_FTDF_PTI_Pos (8UL) /*!< COEX COEX_CTRL_REG: SEL_FTDF_PTI (Bit 8) */ -#define COEX_COEX_CTRL_REG_SEL_FTDF_PTI_Msk (0x100UL) /*!< COEX COEX_CTRL_REG: SEL_FTDF_PTI (Bitfield-Mask: 0x01) */ -#define COEX_COEX_CTRL_REG_SEL_BLE_PTI_Pos (9UL) /*!< COEX COEX_CTRL_REG: SEL_BLE_PTI (Bit 9) */ -#define COEX_COEX_CTRL_REG_SEL_BLE_PTI_Msk (0x200UL) /*!< COEX COEX_CTRL_REG: SEL_BLE_PTI (Bitfield-Mask: 0x01) */ -#define COEX_COEX_CTRL_REG_SEL_BLE_WLAN_TX_RX_Pos (10UL) /*!< COEX COEX_CTRL_REG: SEL_BLE_WLAN_TX_RX (Bit 10) */ -#define COEX_COEX_CTRL_REG_SEL_BLE_WLAN_TX_RX_Msk (0x400UL) /*!< COEX COEX_CTRL_REG: SEL_BLE_WLAN_TX_RX (Bitfield-Mask: 0x01) */ -#define COEX_COEX_CTRL_REG_SEL_BLE_RADIO_BUSY_Pos (11UL) /*!< COEX COEX_CTRL_REG: SEL_BLE_RADIO_BUSY (Bit 11) */ -#define COEX_COEX_CTRL_REG_SEL_BLE_RADIO_BUSY_Msk (0x1800UL) /*!< COEX COEX_CTRL_REG: SEL_BLE_RADIO_BUSY (Bitfield-Mask: 0x03) */ -#define COEX_COEX_CTRL_REG_IGNORE_EXT_Pos (13UL) /*!< COEX COEX_CTRL_REG: IGNORE_EXT (Bit 13) */ -#define COEX_COEX_CTRL_REG_IGNORE_EXT_Msk (0x2000UL) /*!< COEX COEX_CTRL_REG: IGNORE_EXT (Bitfield-Mask: 0x01) */ -#define COEX_COEX_CTRL_REG_IGNORE_FTDF_Pos (14UL) /*!< COEX COEX_CTRL_REG: IGNORE_FTDF (Bit 14) */ -#define COEX_COEX_CTRL_REG_IGNORE_FTDF_Msk (0x4000UL) /*!< COEX COEX_CTRL_REG: IGNORE_FTDF (Bitfield-Mask: 0x01) */ -#define COEX_COEX_CTRL_REG_IGNORE_BLE_Pos (15UL) /*!< COEX COEX_CTRL_REG: IGNORE_BLE (Bit 15) */ -#define COEX_COEX_CTRL_REG_IGNORE_BLE_Msk (0x8000UL) /*!< COEX COEX_CTRL_REG: IGNORE_BLE (Bitfield-Mask: 0x01) */ - -/* ----------------------------- COEX_COEX_STAT_REG ----------------------------- */ -#define COEX_COEX_STAT_REG_COEX_DECISION_PTR_Pos (0UL) /*!< COEX COEX_STAT_REG: COEX_DECISION_PTR (Bit 0) */ -#define COEX_COEX_STAT_REG_COEX_DECISION_PTR_Msk (0xfUL) /*!< COEX COEX_STAT_REG: COEX_DECISION_PTR (Bitfield-Mask: 0x0f) */ -#define COEX_COEX_STAT_REG_COEX_DECISION_Pos (5UL) /*!< COEX COEX_STAT_REG: COEX_DECISION (Bit 5) */ -#define COEX_COEX_STAT_REG_COEX_DECISION_Msk (0x60UL) /*!< COEX COEX_STAT_REG: COEX_DECISION (Bitfield-Mask: 0x03) */ -#define COEX_COEX_STAT_REG_COEX_CLOSING_Pos (7UL) /*!< COEX COEX_STAT_REG: COEX_CLOSING (Bit 7) */ -#define COEX_COEX_STAT_REG_COEX_CLOSING_Msk (0x80UL) /*!< COEX COEX_STAT_REG: COEX_CLOSING (Bitfield-Mask: 0x01) */ -#define COEX_COEX_STAT_REG_SMART_ACT_Pos (8UL) /*!< COEX COEX_STAT_REG: SMART_ACT (Bit 8) */ -#define COEX_COEX_STAT_REG_SMART_ACT_Msk (0x100UL) /*!< COEX COEX_STAT_REG: SMART_ACT (Bitfield-Mask: 0x01) */ -#define COEX_COEX_STAT_REG_SMART_PRI_Pos (9UL) /*!< COEX COEX_STAT_REG: SMART_PRI (Bit 9) */ -#define COEX_COEX_STAT_REG_SMART_PRI_Msk (0x200UL) /*!< COEX COEX_STAT_REG: SMART_PRI (Bitfield-Mask: 0x01) */ -#define COEX_COEX_STAT_REG_EXT_ACT0_Pos (10UL) /*!< COEX COEX_STAT_REG: EXT_ACT0 (Bit 10) */ -#define COEX_COEX_STAT_REG_EXT_ACT0_Msk (0x400UL) /*!< COEX COEX_STAT_REG: EXT_ACT0 (Bitfield-Mask: 0x01) */ -#define COEX_COEX_STAT_REG_EXT_ACT1_Pos (11UL) /*!< COEX COEX_STAT_REG: EXT_ACT1 (Bit 11) */ -#define COEX_COEX_STAT_REG_EXT_ACT1_Msk (0x800UL) /*!< COEX COEX_STAT_REG: EXT_ACT1 (Bitfield-Mask: 0x01) */ -#define COEX_COEX_STAT_REG_COEX_RADIO_BUSY_Pos (12UL) /*!< COEX COEX_STAT_REG: COEX_RADIO_BUSY (Bit 12) */ -#define COEX_COEX_STAT_REG_COEX_RADIO_BUSY_Msk (0x1000UL) /*!< COEX COEX_STAT_REG: COEX_RADIO_BUSY (Bitfield-Mask: 0x01) */ -#define COEX_COEX_STAT_REG_IGNORE_EXT_STAT_Pos (13UL) /*!< COEX COEX_STAT_REG: IGNORE_EXT_STAT (Bit 13) */ -#define COEX_COEX_STAT_REG_IGNORE_EXT_STAT_Msk (0x2000UL) /*!< COEX COEX_STAT_REG: IGNORE_EXT_STAT (Bitfield-Mask: 0x01) */ -#define COEX_COEX_STAT_REG_IGNORE_FTDF_STAT_Pos (14UL) /*!< COEX COEX_STAT_REG: IGNORE_FTDF_STAT (Bit 14) */ -#define COEX_COEX_STAT_REG_IGNORE_FTDF_STAT_Msk (0x4000UL) /*!< COEX COEX_STAT_REG: IGNORE_FTDF_STAT (Bitfield-Mask: 0x01) */ -#define COEX_COEX_STAT_REG_IGNORE_BLE_STAT_Pos (15UL) /*!< COEX COEX_STAT_REG: IGNORE_BLE_STAT (Bit 15) */ -#define COEX_COEX_STAT_REG_IGNORE_BLE_STAT_Msk (0x8000UL) /*!< COEX COEX_STAT_REG: IGNORE_BLE_STAT (Bitfield-Mask: 0x01) */ - -/* ----------------------------- COEX_COEX_STAT2_REG ---------------------------- */ -#define COEX_COEX_STAT2_REG_COEX_DECISION_WITH_CLOSING_Pos (0UL) /*!< COEX COEX_STAT2_REG: COEX_DECISION_WITH_CLOSING (Bit 0) */ -#define COEX_COEX_STAT2_REG_COEX_DECISION_WITH_CLOSING_Msk (0x7UL) /*!< COEX COEX_STAT2_REG: COEX_DECISION_WITH_CLOSING (Bitfield-Mask: 0x07) */ -#define COEX_COEX_STAT2_REG_COEX_FTDF_ACTIVE_Pos (3UL) /*!< COEX COEX_STAT2_REG: COEX_FTDF_ACTIVE (Bit 3) */ -#define COEX_COEX_STAT2_REG_COEX_FTDF_ACTIVE_Msk (0x8UL) /*!< COEX COEX_STAT2_REG: COEX_FTDF_ACTIVE (Bitfield-Mask: 0x01) */ -#define COEX_COEX_STAT2_REG_COEX_FTDF_RX_EN_Pos (4UL) /*!< COEX COEX_STAT2_REG: COEX_FTDF_RX_EN (Bit 4) */ -#define COEX_COEX_STAT2_REG_COEX_FTDF_RX_EN_Msk (0x10UL) /*!< COEX COEX_STAT2_REG: COEX_FTDF_RX_EN (Bitfield-Mask: 0x01) */ -#define COEX_COEX_STAT2_REG_COEX_FTDF_TX_EN_Pos (5UL) /*!< COEX COEX_STAT2_REG: COEX_FTDF_TX_EN (Bit 5) */ -#define COEX_COEX_STAT2_REG_COEX_FTDF_TX_EN_Msk (0x20UL) /*!< COEX COEX_STAT2_REG: COEX_FTDF_TX_EN (Bitfield-Mask: 0x01) */ -#define COEX_COEX_STAT2_REG_COEX_FTDF_PTI_INT_Pos (6UL) /*!< COEX COEX_STAT2_REG: COEX_FTDF_PTI_INT (Bit 6) */ -#define COEX_COEX_STAT2_REG_COEX_FTDF_PTI_INT_Msk (0x1c0UL) /*!< COEX COEX_STAT2_REG: COEX_FTDF_PTI_INT (Bitfield-Mask: 0x07) */ -#define COEX_COEX_STAT2_REG_COEX_BLE_ACTIVE_Pos (9UL) /*!< COEX COEX_STAT2_REG: COEX_BLE_ACTIVE (Bit 9) */ -#define COEX_COEX_STAT2_REG_COEX_BLE_ACTIVE_Msk (0x200UL) /*!< COEX COEX_STAT2_REG: COEX_BLE_ACTIVE (Bitfield-Mask: 0x01) */ -#define COEX_COEX_STAT2_REG_COEX_BLE_RX_EN_Pos (10UL) /*!< COEX COEX_STAT2_REG: COEX_BLE_RX_EN (Bit 10) */ -#define COEX_COEX_STAT2_REG_COEX_BLE_RX_EN_Msk (0x400UL) /*!< COEX COEX_STAT2_REG: COEX_BLE_RX_EN (Bitfield-Mask: 0x01) */ -#define COEX_COEX_STAT2_REG_COEX_BLE_TX_EN_Pos (11UL) /*!< COEX COEX_STAT2_REG: COEX_BLE_TX_EN (Bit 11) */ -#define COEX_COEX_STAT2_REG_COEX_BLE_TX_EN_Msk (0x800UL) /*!< COEX COEX_STAT2_REG: COEX_BLE_TX_EN (Bitfield-Mask: 0x01) */ -#define COEX_COEX_STAT2_REG_COEX_BLE_PTI_INT_Pos (12UL) /*!< COEX COEX_STAT2_REG: COEX_BLE_PTI_INT (Bit 12) */ -#define COEX_COEX_STAT2_REG_COEX_BLE_PTI_INT_Msk (0x7000UL) /*!< COEX COEX_STAT2_REG: COEX_BLE_PTI_INT (Bitfield-Mask: 0x07) */ -#define COEX_COEX_STAT2_REG_COEX_EXT_ACT_Pos (15UL) /*!< COEX COEX_STAT2_REG: COEX_EXT_ACT (Bit 15) */ -#define COEX_COEX_STAT2_REG_COEX_EXT_ACT_Msk (0x8000UL) /*!< COEX COEX_STAT2_REG: COEX_EXT_ACT (Bitfield-Mask: 0x01) */ - -/* --------------------------- COEX_COEX_INT_MASK_REG --------------------------- */ -#define COEX_COEX_INT_MASK_REG_IRQ_TXRX_MON_Pos (8UL) /*!< COEX COEX_INT_MASK_REG: IRQ_TXRX_MON (Bit 8) */ -#define COEX_COEX_INT_MASK_REG_IRQ_TXRX_MON_Msk (0x100UL) /*!< COEX COEX_INT_MASK_REG: IRQ_TXRX_MON (Bitfield-Mask: 0x01) */ -#define COEX_COEX_INT_MASK_REG_IRQ_DECISION_SW_Pos (9UL) /*!< COEX COEX_INT_MASK_REG: IRQ_DECISION_SW (Bit 9) */ -#define COEX_COEX_INT_MASK_REG_IRQ_DECISION_SW_Msk (0x200UL) /*!< COEX COEX_INT_MASK_REG: IRQ_DECISION_SW (Bitfield-Mask: 0x01) */ - -/* --------------------------- COEX_COEX_INT_STAT_REG --------------------------- */ -#define COEX_COEX_INT_STAT_REG_TXRX_MON_PTR_Pos (0UL) /*!< COEX COEX_INT_STAT_REG: TXRX_MON_PTR (Bit 0) */ -#define COEX_COEX_INT_STAT_REG_TXRX_MON_PTR_Msk (0xfUL) /*!< COEX COEX_INT_STAT_REG: TXRX_MON_PTR (Bitfield-Mask: 0x0f) */ -#define COEX_COEX_INT_STAT_REG_TXRX_MON_TX_Pos (5UL) /*!< COEX COEX_INT_STAT_REG: TXRX_MON_TX (Bit 5) */ -#define COEX_COEX_INT_STAT_REG_TXRX_MON_TX_Msk (0x20UL) /*!< COEX COEX_INT_STAT_REG: TXRX_MON_TX (Bitfield-Mask: 0x01) */ -#define COEX_COEX_INT_STAT_REG_TXRX_MON_PASSED_Pos (6UL) /*!< COEX COEX_INT_STAT_REG: TXRX_MON_PASSED (Bit 6) */ -#define COEX_COEX_INT_STAT_REG_TXRX_MON_PASSED_Msk (0x40UL) /*!< COEX COEX_INT_STAT_REG: TXRX_MON_PASSED (Bitfield-Mask: 0x01) */ -#define COEX_COEX_INT_STAT_REG_TXRX_MON_OVWR_Pos (7UL) /*!< COEX COEX_INT_STAT_REG: TXRX_MON_OVWR (Bit 7) */ -#define COEX_COEX_INT_STAT_REG_TXRX_MON_OVWR_Msk (0x80UL) /*!< COEX COEX_INT_STAT_REG: TXRX_MON_OVWR (Bitfield-Mask: 0x01) */ -#define COEX_COEX_INT_STAT_REG_IRQ_TXRX_MON_Pos (8UL) /*!< COEX COEX_INT_STAT_REG: IRQ_TXRX_MON (Bit 8) */ -#define COEX_COEX_INT_STAT_REG_IRQ_TXRX_MON_Msk (0x100UL) /*!< COEX COEX_INT_STAT_REG: IRQ_TXRX_MON (Bitfield-Mask: 0x01) */ -#define COEX_COEX_INT_STAT_REG_IRQ_DECISION_SW_Pos (9UL) /*!< COEX COEX_INT_STAT_REG: IRQ_DECISION_SW (Bit 9) */ -#define COEX_COEX_INT_STAT_REG_IRQ_DECISION_SW_Msk (0x200UL) /*!< COEX COEX_INT_STAT_REG: IRQ_DECISION_SW (Bitfield-Mask: 0x01) */ - -/* ---------------------------- COEX_COEX_BLE_PTI_REG --------------------------- */ -#define COEX_COEX_BLE_PTI_REG_COEX_BLE_PTI_Pos (0UL) /*!< COEX COEX_BLE_PTI_REG: COEX_BLE_PTI (Bit 0) */ -#define COEX_COEX_BLE_PTI_REG_COEX_BLE_PTI_Msk (0x7UL) /*!< COEX COEX_BLE_PTI_REG: COEX_BLE_PTI (Bitfield-Mask: 0x07) */ - -/* --------------------------- COEX_COEX_FTDF_PTI_REG --------------------------- */ -#define COEX_COEX_FTDF_PTI_REG_COEX_FTDF_PTI_Pos (0UL) /*!< COEX COEX_FTDF_PTI_REG: COEX_FTDF_PTI (Bit 0) */ -#define COEX_COEX_FTDF_PTI_REG_COEX_FTDF_PTI_Msk (0x7UL) /*!< COEX COEX_FTDF_PTI_REG: COEX_FTDF_PTI (Bitfield-Mask: 0x07) */ - -/* ----------------------------- COEX_COEX_PRI1_REG ----------------------------- */ -#define COEX_COEX_PRI1_REG_COEX_PRI_PTI_Pos (0UL) /*!< COEX COEX_PRI1_REG: COEX_PRI_PTI (Bit 0) */ -#define COEX_COEX_PRI1_REG_COEX_PRI_PTI_Msk (0x7UL) /*!< COEX COEX_PRI1_REG: COEX_PRI_PTI (Bitfield-Mask: 0x07) */ -#define COEX_COEX_PRI1_REG_COEX_PRI_MAC_Pos (3UL) /*!< COEX COEX_PRI1_REG: COEX_PRI_MAC (Bit 3) */ -#define COEX_COEX_PRI1_REG_COEX_PRI_MAC_Msk (0x18UL) /*!< COEX COEX_PRI1_REG: COEX_PRI_MAC (Bitfield-Mask: 0x03) */ - -/* ----------------------------- COEX_COEX_PRI2_REG ----------------------------- */ -#define COEX_COEX_PRI2_REG_COEX_PRI_PTI_Pos (0UL) /*!< COEX COEX_PRI2_REG: COEX_PRI_PTI (Bit 0) */ -#define COEX_COEX_PRI2_REG_COEX_PRI_PTI_Msk (0x7UL) /*!< COEX COEX_PRI2_REG: COEX_PRI_PTI (Bitfield-Mask: 0x07) */ -#define COEX_COEX_PRI2_REG_COEX_PRI_MAC_Pos (3UL) /*!< COEX COEX_PRI2_REG: COEX_PRI_MAC (Bit 3) */ -#define COEX_COEX_PRI2_REG_COEX_PRI_MAC_Msk (0x18UL) /*!< COEX COEX_PRI2_REG: COEX_PRI_MAC (Bitfield-Mask: 0x03) */ - -/* ----------------------------- COEX_COEX_PRI3_REG ----------------------------- */ -#define COEX_COEX_PRI3_REG_COEX_PRI_PTI_Pos (0UL) /*!< COEX COEX_PRI3_REG: COEX_PRI_PTI (Bit 0) */ -#define COEX_COEX_PRI3_REG_COEX_PRI_PTI_Msk (0x7UL) /*!< COEX COEX_PRI3_REG: COEX_PRI_PTI (Bitfield-Mask: 0x07) */ -#define COEX_COEX_PRI3_REG_COEX_PRI_MAC_Pos (3UL) /*!< COEX COEX_PRI3_REG: COEX_PRI_MAC (Bit 3) */ -#define COEX_COEX_PRI3_REG_COEX_PRI_MAC_Msk (0x18UL) /*!< COEX COEX_PRI3_REG: COEX_PRI_MAC (Bitfield-Mask: 0x03) */ - -/* ----------------------------- COEX_COEX_PRI4_REG ----------------------------- */ -#define COEX_COEX_PRI4_REG_COEX_PRI_PTI_Pos (0UL) /*!< COEX COEX_PRI4_REG: COEX_PRI_PTI (Bit 0) */ -#define COEX_COEX_PRI4_REG_COEX_PRI_PTI_Msk (0x7UL) /*!< COEX COEX_PRI4_REG: COEX_PRI_PTI (Bitfield-Mask: 0x07) */ -#define COEX_COEX_PRI4_REG_COEX_PRI_MAC_Pos (3UL) /*!< COEX COEX_PRI4_REG: COEX_PRI_MAC (Bit 3) */ -#define COEX_COEX_PRI4_REG_COEX_PRI_MAC_Msk (0x18UL) /*!< COEX COEX_PRI4_REG: COEX_PRI_MAC (Bitfield-Mask: 0x03) */ - -/* ----------------------------- COEX_COEX_PRI5_REG ----------------------------- */ -#define COEX_COEX_PRI5_REG_COEX_PRI_PTI_Pos (0UL) /*!< COEX COEX_PRI5_REG: COEX_PRI_PTI (Bit 0) */ -#define COEX_COEX_PRI5_REG_COEX_PRI_PTI_Msk (0x7UL) /*!< COEX COEX_PRI5_REG: COEX_PRI_PTI (Bitfield-Mask: 0x07) */ -#define COEX_COEX_PRI5_REG_COEX_PRI_MAC_Pos (3UL) /*!< COEX COEX_PRI5_REG: COEX_PRI_MAC (Bit 3) */ -#define COEX_COEX_PRI5_REG_COEX_PRI_MAC_Msk (0x18UL) /*!< COEX COEX_PRI5_REG: COEX_PRI_MAC (Bitfield-Mask: 0x03) */ - -/* ----------------------------- COEX_COEX_PRI6_REG ----------------------------- */ -#define COEX_COEX_PRI6_REG_COEX_PRI_PTI_Pos (0UL) /*!< COEX COEX_PRI6_REG: COEX_PRI_PTI (Bit 0) */ -#define COEX_COEX_PRI6_REG_COEX_PRI_PTI_Msk (0x7UL) /*!< COEX COEX_PRI6_REG: COEX_PRI_PTI (Bitfield-Mask: 0x07) */ -#define COEX_COEX_PRI6_REG_COEX_PRI_MAC_Pos (3UL) /*!< COEX COEX_PRI6_REG: COEX_PRI_MAC (Bit 3) */ -#define COEX_COEX_PRI6_REG_COEX_PRI_MAC_Msk (0x18UL) /*!< COEX COEX_PRI6_REG: COEX_PRI_MAC (Bitfield-Mask: 0x03) */ - -/* ----------------------------- COEX_COEX_PRI7_REG ----------------------------- */ -#define COEX_COEX_PRI7_REG_COEX_PRI_PTI_Pos (0UL) /*!< COEX COEX_PRI7_REG: COEX_PRI_PTI (Bit 0) */ -#define COEX_COEX_PRI7_REG_COEX_PRI_PTI_Msk (0x7UL) /*!< COEX COEX_PRI7_REG: COEX_PRI_PTI (Bitfield-Mask: 0x07) */ -#define COEX_COEX_PRI7_REG_COEX_PRI_MAC_Pos (3UL) /*!< COEX COEX_PRI7_REG: COEX_PRI_MAC (Bit 3) */ -#define COEX_COEX_PRI7_REG_COEX_PRI_MAC_Msk (0x18UL) /*!< COEX COEX_PRI7_REG: COEX_PRI_MAC (Bitfield-Mask: 0x03) */ - -/* ----------------------------- COEX_COEX_PRI8_REG ----------------------------- */ -#define COEX_COEX_PRI8_REG_COEX_PRI_PTI_Pos (0UL) /*!< COEX COEX_PRI8_REG: COEX_PRI_PTI (Bit 0) */ -#define COEX_COEX_PRI8_REG_COEX_PRI_PTI_Msk (0x7UL) /*!< COEX COEX_PRI8_REG: COEX_PRI_PTI (Bitfield-Mask: 0x07) */ -#define COEX_COEX_PRI8_REG_COEX_PRI_MAC_Pos (3UL) /*!< COEX COEX_PRI8_REG: COEX_PRI_MAC (Bit 3) */ -#define COEX_COEX_PRI8_REG_COEX_PRI_MAC_Msk (0x18UL) /*!< COEX COEX_PRI8_REG: COEX_PRI_MAC (Bitfield-Mask: 0x03) */ - -/* ----------------------------- COEX_COEX_PRI9_REG ----------------------------- */ -#define COEX_COEX_PRI9_REG_COEX_PRI_PTI_Pos (0UL) /*!< COEX COEX_PRI9_REG: COEX_PRI_PTI (Bit 0) */ -#define COEX_COEX_PRI9_REG_COEX_PRI_PTI_Msk (0x7UL) /*!< COEX COEX_PRI9_REG: COEX_PRI_PTI (Bitfield-Mask: 0x07) */ -#define COEX_COEX_PRI9_REG_COEX_PRI_MAC_Pos (3UL) /*!< COEX COEX_PRI9_REG: COEX_PRI_MAC (Bit 3) */ -#define COEX_COEX_PRI9_REG_COEX_PRI_MAC_Msk (0x18UL) /*!< COEX COEX_PRI9_REG: COEX_PRI_MAC (Bitfield-Mask: 0x03) */ - -/* ----------------------------- COEX_COEX_PRI10_REG ---------------------------- */ -#define COEX_COEX_PRI10_REG_COEX_PRI_PTI_Pos (0UL) /*!< COEX COEX_PRI10_REG: COEX_PRI_PTI (Bit 0) */ -#define COEX_COEX_PRI10_REG_COEX_PRI_PTI_Msk (0x7UL) /*!< COEX COEX_PRI10_REG: COEX_PRI_PTI (Bitfield-Mask: 0x07) */ -#define COEX_COEX_PRI10_REG_COEX_PRI_MAC_Pos (3UL) /*!< COEX COEX_PRI10_REG: COEX_PRI_MAC (Bit 3) */ -#define COEX_COEX_PRI10_REG_COEX_PRI_MAC_Msk (0x18UL) /*!< COEX COEX_PRI10_REG: COEX_PRI_MAC (Bitfield-Mask: 0x03) */ - -/* ----------------------------- COEX_COEX_PRI11_REG ---------------------------- */ -#define COEX_COEX_PRI11_REG_COEX_PRI_PTI_Pos (0UL) /*!< COEX COEX_PRI11_REG: COEX_PRI_PTI (Bit 0) */ -#define COEX_COEX_PRI11_REG_COEX_PRI_PTI_Msk (0x7UL) /*!< COEX COEX_PRI11_REG: COEX_PRI_PTI (Bitfield-Mask: 0x07) */ -#define COEX_COEX_PRI11_REG_COEX_PRI_MAC_Pos (3UL) /*!< COEX COEX_PRI11_REG: COEX_PRI_MAC (Bit 3) */ -#define COEX_COEX_PRI11_REG_COEX_PRI_MAC_Msk (0x18UL) /*!< COEX COEX_PRI11_REG: COEX_PRI_MAC (Bitfield-Mask: 0x03) */ - -/* ----------------------------- COEX_COEX_PRI12_REG ---------------------------- */ -#define COEX_COEX_PRI12_REG_COEX_PRI_PTI_Pos (0UL) /*!< COEX COEX_PRI12_REG: COEX_PRI_PTI (Bit 0) */ -#define COEX_COEX_PRI12_REG_COEX_PRI_PTI_Msk (0x7UL) /*!< COEX COEX_PRI12_REG: COEX_PRI_PTI (Bitfield-Mask: 0x07) */ -#define COEX_COEX_PRI12_REG_COEX_PRI_MAC_Pos (3UL) /*!< COEX COEX_PRI12_REG: COEX_PRI_MAC (Bit 3) */ -#define COEX_COEX_PRI12_REG_COEX_PRI_MAC_Msk (0x18UL) /*!< COEX COEX_PRI12_REG: COEX_PRI_MAC (Bitfield-Mask: 0x03) */ - -/* ----------------------------- COEX_COEX_PRI13_REG ---------------------------- */ -#define COEX_COEX_PRI13_REG_COEX_PRI_PTI_Pos (0UL) /*!< COEX COEX_PRI13_REG: COEX_PRI_PTI (Bit 0) */ -#define COEX_COEX_PRI13_REG_COEX_PRI_PTI_Msk (0x7UL) /*!< COEX COEX_PRI13_REG: COEX_PRI_PTI (Bitfield-Mask: 0x07) */ -#define COEX_COEX_PRI13_REG_COEX_PRI_MAC_Pos (3UL) /*!< COEX COEX_PRI13_REG: COEX_PRI_MAC (Bit 3) */ -#define COEX_COEX_PRI13_REG_COEX_PRI_MAC_Msk (0x18UL) /*!< COEX COEX_PRI13_REG: COEX_PRI_MAC (Bitfield-Mask: 0x03) */ - -/* ----------------------------- COEX_COEX_PRI14_REG ---------------------------- */ -#define COEX_COEX_PRI14_REG_COEX_PRI_PTI_Pos (0UL) /*!< COEX COEX_PRI14_REG: COEX_PRI_PTI (Bit 0) */ -#define COEX_COEX_PRI14_REG_COEX_PRI_PTI_Msk (0x7UL) /*!< COEX COEX_PRI14_REG: COEX_PRI_PTI (Bitfield-Mask: 0x07) */ -#define COEX_COEX_PRI14_REG_COEX_PRI_MAC_Pos (3UL) /*!< COEX COEX_PRI14_REG: COEX_PRI_MAC (Bit 3) */ -#define COEX_COEX_PRI14_REG_COEX_PRI_MAC_Msk (0x18UL) /*!< COEX COEX_PRI14_REG: COEX_PRI_MAC (Bitfield-Mask: 0x03) */ - -/* ----------------------------- COEX_COEX_PRI15_REG ---------------------------- */ -#define COEX_COEX_PRI15_REG_COEX_PRI_PTI_Pos (0UL) /*!< COEX COEX_PRI15_REG: COEX_PRI_PTI (Bit 0) */ -#define COEX_COEX_PRI15_REG_COEX_PRI_PTI_Msk (0x7UL) /*!< COEX COEX_PRI15_REG: COEX_PRI_PTI (Bitfield-Mask: 0x07) */ -#define COEX_COEX_PRI15_REG_COEX_PRI_MAC_Pos (3UL) /*!< COEX COEX_PRI15_REG: COEX_PRI_MAC (Bit 3) */ -#define COEX_COEX_PRI15_REG_COEX_PRI_MAC_Msk (0x18UL) /*!< COEX COEX_PRI15_REG: COEX_PRI_MAC (Bitfield-Mask: 0x03) */ - - -/* ================================================================================ */ -/* ================ struct 'CRG_PER' Position & Mask ================ */ -/* ================================================================================ */ - - -/* ----------------------------- CRG_PER_CLK_PER_REG ---------------------------- */ -#define CRG_PER_CLK_PER_REG_UART_ENABLE_Pos (0UL) /*!< CRG_PER CLK_PER_REG: UART_ENABLE (Bit 0) */ -#define CRG_PER_CLK_PER_REG_UART_ENABLE_Msk (0x1UL) /*!< CRG_PER CLK_PER_REG: UART_ENABLE (Bitfield-Mask: 0x01) */ -#define CRG_PER_CLK_PER_REG_SPI_ENABLE_Pos (1UL) /*!< CRG_PER CLK_PER_REG: SPI_ENABLE (Bit 1) */ -#define CRG_PER_CLK_PER_REG_SPI_ENABLE_Msk (0x2UL) /*!< CRG_PER CLK_PER_REG: SPI_ENABLE (Bitfield-Mask: 0x01) */ -#define CRG_PER_CLK_PER_REG_I2C_ENABLE_Pos (2UL) /*!< CRG_PER CLK_PER_REG: I2C_ENABLE (Bit 2) */ -#define CRG_PER_CLK_PER_REG_I2C_ENABLE_Msk (0x4UL) /*!< CRG_PER CLK_PER_REG: I2C_ENABLE (Bitfield-Mask: 0x01) */ -#define CRG_PER_CLK_PER_REG_QUAD_ENABLE_Pos (3UL) /*!< CRG_PER CLK_PER_REG: QUAD_ENABLE (Bit 3) */ -#define CRG_PER_CLK_PER_REG_QUAD_ENABLE_Msk (0x8UL) /*!< CRG_PER CLK_PER_REG: QUAD_ENABLE (Bitfield-Mask: 0x01) */ -#define CRG_PER_CLK_PER_REG_IR_CLK_ENABLE_Pos (4UL) /*!< CRG_PER CLK_PER_REG: IR_CLK_ENABLE (Bit 4) */ -#define CRG_PER_CLK_PER_REG_IR_CLK_ENABLE_Msk (0x10UL) /*!< CRG_PER CLK_PER_REG: IR_CLK_ENABLE (Bitfield-Mask: 0x01) */ -#define CRG_PER_CLK_PER_REG_KBSCAN_ENABLE_Pos (5UL) /*!< CRG_PER CLK_PER_REG: KBSCAN_ENABLE (Bit 5) */ -#define CRG_PER_CLK_PER_REG_KBSCAN_ENABLE_Msk (0x20UL) /*!< CRG_PER CLK_PER_REG: KBSCAN_ENABLE (Bitfield-Mask: 0x01) */ -#define CRG_PER_CLK_PER_REG_SPI_CLK_SEL_Pos (8UL) /*!< CRG_PER CLK_PER_REG: SPI_CLK_SEL (Bit 8) */ -#define CRG_PER_CLK_PER_REG_SPI_CLK_SEL_Msk (0x100UL) /*!< CRG_PER CLK_PER_REG: SPI_CLK_SEL (Bitfield-Mask: 0x01) */ -#define CRG_PER_CLK_PER_REG_I2C_CLK_SEL_Pos (9UL) /*!< CRG_PER CLK_PER_REG: I2C_CLK_SEL (Bit 9) */ -#define CRG_PER_CLK_PER_REG_I2C_CLK_SEL_Msk (0x200UL) /*!< CRG_PER CLK_PER_REG: I2C_CLK_SEL (Bitfield-Mask: 0x01) */ -#define CRG_PER_CLK_PER_REG_KBSCAN_CLK_SEL_Pos (10UL) /*!< CRG_PER CLK_PER_REG: KBSCAN_CLK_SEL (Bit 10) */ -#define CRG_PER_CLK_PER_REG_KBSCAN_CLK_SEL_Msk (0x400UL) /*!< CRG_PER CLK_PER_REG: KBSCAN_CLK_SEL (Bitfield-Mask: 0x01) */ -#define CRG_PER_CLK_PER_REG_ADC_CLK_SEL_Pos (11UL) /*!< CRG_PER CLK_PER_REG: ADC_CLK_SEL (Bit 11) */ -#define CRG_PER_CLK_PER_REG_ADC_CLK_SEL_Msk (0x800UL) /*!< CRG_PER CLK_PER_REG: ADC_CLK_SEL (Bitfield-Mask: 0x01) */ - -/* ----------------------------- CRG_PER_PCM_DIV_REG ---------------------------- */ -#define CRG_PER_PCM_DIV_REG_PCM_DIV_Pos (0UL) /*!< CRG_PER PCM_DIV_REG: PCM_DIV (Bit 0) */ -#define CRG_PER_PCM_DIV_REG_PCM_DIV_Msk (0xfffUL) /*!< CRG_PER PCM_DIV_REG: PCM_DIV (Bitfield-Mask: 0xfff) */ -#define CRG_PER_PCM_DIV_REG_CLK_PCM_EN_Pos (12UL) /*!< CRG_PER PCM_DIV_REG: CLK_PCM_EN (Bit 12) */ -#define CRG_PER_PCM_DIV_REG_CLK_PCM_EN_Msk (0x1000UL) /*!< CRG_PER PCM_DIV_REG: CLK_PCM_EN (Bitfield-Mask: 0x01) */ -#define CRG_PER_PCM_DIV_REG_PCM_SRC_SEL_Pos (13UL) /*!< CRG_PER PCM_DIV_REG: PCM_SRC_SEL (Bit 13) */ -#define CRG_PER_PCM_DIV_REG_PCM_SRC_SEL_Msk (0x2000UL) /*!< CRG_PER PCM_DIV_REG: PCM_SRC_SEL (Bitfield-Mask: 0x01) */ - -/* ---------------------------- CRG_PER_PCM_FDIV_REG ---------------------------- */ -#define CRG_PER_PCM_FDIV_REG_PCM_FDIV_Pos (0UL) /*!< CRG_PER PCM_FDIV_REG: PCM_FDIV (Bit 0) */ -#define CRG_PER_PCM_FDIV_REG_PCM_FDIV_Msk (0xffffUL) /*!< CRG_PER PCM_FDIV_REG: PCM_FDIV (Bitfield-Mask: 0xffff) */ - -/* ----------------------------- CRG_PER_PDM_DIV_REG ---------------------------- */ -#define CRG_PER_PDM_DIV_REG_PDM_DIV_Pos (0UL) /*!< CRG_PER PDM_DIV_REG: PDM_DIV (Bit 0) */ -#define CRG_PER_PDM_DIV_REG_PDM_DIV_Msk (0xffUL) /*!< CRG_PER PDM_DIV_REG: PDM_DIV (Bitfield-Mask: 0xff) */ -#define CRG_PER_PDM_DIV_REG_CLK_PDM_EN_Pos (8UL) /*!< CRG_PER PDM_DIV_REG: CLK_PDM_EN (Bit 8) */ -#define CRG_PER_PDM_DIV_REG_CLK_PDM_EN_Msk (0x100UL) /*!< CRG_PER PDM_DIV_REG: CLK_PDM_EN (Bitfield-Mask: 0x01) */ -#define CRG_PER_PDM_DIV_REG_PDM_MASTER_MODE_Pos (9UL) /*!< CRG_PER PDM_DIV_REG: PDM_MASTER_MODE (Bit 9) */ -#define CRG_PER_PDM_DIV_REG_PDM_MASTER_MODE_Msk (0x200UL) /*!< CRG_PER PDM_DIV_REG: PDM_MASTER_MODE (Bitfield-Mask: 0x01) */ - -/* ----------------------------- CRG_PER_SRC_DIV_REG ---------------------------- */ -#define CRG_PER_SRC_DIV_REG_SRC_DIV_Pos (0UL) /*!< CRG_PER SRC_DIV_REG: SRC_DIV (Bit 0) */ -#define CRG_PER_SRC_DIV_REG_SRC_DIV_Msk (0xffUL) /*!< CRG_PER SRC_DIV_REG: SRC_DIV (Bitfield-Mask: 0xff) */ -#define CRG_PER_SRC_DIV_REG_CLK_SRC_EN_Pos (8UL) /*!< CRG_PER SRC_DIV_REG: CLK_SRC_EN (Bit 8) */ -#define CRG_PER_SRC_DIV_REG_CLK_SRC_EN_Msk (0x100UL) /*!< CRG_PER SRC_DIV_REG: CLK_SRC_EN (Bitfield-Mask: 0x01) */ - -/* ------------------------------- CRG_PER_EH_REG ------------------------------- */ -#define CRG_PER_EH_REG_EH_EN_Pos (0UL) /*!< CRG_PER EH_REG: EH_EN (Bit 0) */ -#define CRG_PER_EH_REG_EH_EN_Msk (0x1UL) /*!< CRG_PER EH_REG: EH_EN (Bitfield-Mask: 0x01) */ - -/* ----------------------------- CRG_PER_USBPAD_REG ----------------------------- */ -#define CRG_PER_USBPAD_REG_USBPAD_EN_Pos (0UL) /*!< CRG_PER USBPAD_REG: USBPAD_EN (Bit 0) */ -#define CRG_PER_USBPAD_REG_USBPAD_EN_Msk (0x1UL) /*!< CRG_PER USBPAD_REG: USBPAD_EN (Bitfield-Mask: 0x01) */ -#define CRG_PER_USBPAD_REG_USBPHY_FORCE_SW1_OFF_Pos (1UL) /*!< CRG_PER USBPAD_REG: USBPHY_FORCE_SW1_OFF (Bit 1) */ -#define CRG_PER_USBPAD_REG_USBPHY_FORCE_SW1_OFF_Msk (0x2UL) /*!< CRG_PER USBPAD_REG: USBPHY_FORCE_SW1_OFF (Bitfield-Mask: 0x01) */ -#define CRG_PER_USBPAD_REG_USBPHY_FORCE_SW2_ON_Pos (2UL) /*!< CRG_PER USBPAD_REG: USBPHY_FORCE_SW2_ON (Bit 2) */ -#define CRG_PER_USBPAD_REG_USBPHY_FORCE_SW2_ON_Msk (0x4UL) /*!< CRG_PER USBPAD_REG: USBPHY_FORCE_SW2_ON (Bitfield-Mask: 0x01) */ - - -/* ================================================================================ */ -/* ================ struct 'CRG_TOP' Position & Mask ================ */ -/* ================================================================================ */ - - -/* ---------------------------- CRG_TOP_CLK_AMBA_REG ---------------------------- */ -#define CRG_TOP_CLK_AMBA_REG_HCLK_DIV_Pos (0UL) /*!< CRG_TOP CLK_AMBA_REG: HCLK_DIV (Bit 0) */ -#define CRG_TOP_CLK_AMBA_REG_HCLK_DIV_Msk (0x7UL) /*!< CRG_TOP CLK_AMBA_REG: HCLK_DIV (Bitfield-Mask: 0x07) */ -#define CRG_TOP_CLK_AMBA_REG_PCLK_DIV_Pos (4UL) /*!< CRG_TOP CLK_AMBA_REG: PCLK_DIV (Bit 4) */ -#define CRG_TOP_CLK_AMBA_REG_PCLK_DIV_Msk (0x30UL) /*!< CRG_TOP CLK_AMBA_REG: PCLK_DIV (Bitfield-Mask: 0x03) */ -#define CRG_TOP_CLK_AMBA_REG_AES_CLK_ENABLE_Pos (6UL) /*!< CRG_TOP CLK_AMBA_REG: AES_CLK_ENABLE (Bit 6) */ -#define CRG_TOP_CLK_AMBA_REG_AES_CLK_ENABLE_Msk (0x40UL) /*!< CRG_TOP CLK_AMBA_REG: AES_CLK_ENABLE (Bitfield-Mask: 0x01) */ -#define CRG_TOP_CLK_AMBA_REG_ECC_CLK_ENABLE_Pos (7UL) /*!< CRG_TOP CLK_AMBA_REG: ECC_CLK_ENABLE (Bit 7) */ -#define CRG_TOP_CLK_AMBA_REG_ECC_CLK_ENABLE_Msk (0x80UL) /*!< CRG_TOP CLK_AMBA_REG: ECC_CLK_ENABLE (Bitfield-Mask: 0x01) */ -#define CRG_TOP_CLK_AMBA_REG_TRNG_CLK_ENABLE_Pos (8UL) /*!< CRG_TOP CLK_AMBA_REG: TRNG_CLK_ENABLE (Bit 8) */ -#define CRG_TOP_CLK_AMBA_REG_TRNG_CLK_ENABLE_Msk (0x100UL) /*!< CRG_TOP CLK_AMBA_REG: TRNG_CLK_ENABLE (Bitfield-Mask: 0x01) */ -#define CRG_TOP_CLK_AMBA_REG_OTP_ENABLE_Pos (9UL) /*!< CRG_TOP CLK_AMBA_REG: OTP_ENABLE (Bit 9) */ -#define CRG_TOP_CLK_AMBA_REG_OTP_ENABLE_Msk (0x200UL) /*!< CRG_TOP CLK_AMBA_REG: OTP_ENABLE (Bitfield-Mask: 0x01) */ -#define CRG_TOP_CLK_AMBA_REG_QSPI_DIV_Pos (10UL) /*!< CRG_TOP CLK_AMBA_REG: QSPI_DIV (Bit 10) */ -#define CRG_TOP_CLK_AMBA_REG_QSPI_DIV_Msk (0xc00UL) /*!< CRG_TOP CLK_AMBA_REG: QSPI_DIV (Bitfield-Mask: 0x03) */ -#define CRG_TOP_CLK_AMBA_REG_QSPI_ENABLE_Pos (12UL) /*!< CRG_TOP CLK_AMBA_REG: QSPI_ENABLE (Bit 12) */ -#define CRG_TOP_CLK_AMBA_REG_QSPI_ENABLE_Msk (0x1000UL) /*!< CRG_TOP CLK_AMBA_REG: QSPI_ENABLE (Bitfield-Mask: 0x01) */ - -/* -------------------------- CRG_TOP_CLK_FREQ_TRIM_REG ------------------------- */ -#define CRG_TOP_CLK_FREQ_TRIM_REG_FINE_ADJ_Pos (0UL) /*!< CRG_TOP CLK_FREQ_TRIM_REG: FINE_ADJ (Bit 0) */ -#define CRG_TOP_CLK_FREQ_TRIM_REG_FINE_ADJ_Msk (0xffUL) /*!< CRG_TOP CLK_FREQ_TRIM_REG: FINE_ADJ (Bitfield-Mask: 0xff) */ -#define CRG_TOP_CLK_FREQ_TRIM_REG_COARSE_ADJ_Pos (8UL) /*!< CRG_TOP CLK_FREQ_TRIM_REG: COARSE_ADJ (Bit 8) */ -#define CRG_TOP_CLK_FREQ_TRIM_REG_COARSE_ADJ_Msk (0x700UL) /*!< CRG_TOP CLK_FREQ_TRIM_REG: COARSE_ADJ (Bitfield-Mask: 0x07) */ - -/* ---------------------------- CRG_TOP_CLK_RADIO_REG --------------------------- */ -#define CRG_TOP_CLK_RADIO_REG_RFCU_DIV_Pos (0UL) /*!< CRG_TOP CLK_RADIO_REG: RFCU_DIV (Bit 0) */ -#define CRG_TOP_CLK_RADIO_REG_RFCU_DIV_Msk (0x3UL) /*!< CRG_TOP CLK_RADIO_REG: RFCU_DIV (Bitfield-Mask: 0x03) */ -#define CRG_TOP_CLK_RADIO_REG_RFCU_ENABLE_Pos (3UL) /*!< CRG_TOP CLK_RADIO_REG: RFCU_ENABLE (Bit 3) */ -#define CRG_TOP_CLK_RADIO_REG_RFCU_ENABLE_Msk (0x8UL) /*!< CRG_TOP CLK_RADIO_REG: RFCU_ENABLE (Bitfield-Mask: 0x01) */ -#define CRG_TOP_CLK_RADIO_REG_BLE_DIV_Pos (4UL) /*!< CRG_TOP CLK_RADIO_REG: BLE_DIV (Bit 4) */ -#define CRG_TOP_CLK_RADIO_REG_BLE_DIV_Msk (0x30UL) /*!< CRG_TOP CLK_RADIO_REG: BLE_DIV (Bitfield-Mask: 0x03) */ -#define CRG_TOP_CLK_RADIO_REG_BLE_LP_RESET_Pos (6UL) /*!< CRG_TOP CLK_RADIO_REG: BLE_LP_RESET (Bit 6) */ -#define CRG_TOP_CLK_RADIO_REG_BLE_LP_RESET_Msk (0x40UL) /*!< CRG_TOP CLK_RADIO_REG: BLE_LP_RESET (Bitfield-Mask: 0x01) */ -#define CRG_TOP_CLK_RADIO_REG_BLE_ENABLE_Pos (7UL) /*!< CRG_TOP CLK_RADIO_REG: BLE_ENABLE (Bit 7) */ -#define CRG_TOP_CLK_RADIO_REG_BLE_ENABLE_Msk (0x80UL) /*!< CRG_TOP CLK_RADIO_REG: BLE_ENABLE (Bitfield-Mask: 0x01) */ -#define CRG_TOP_CLK_RADIO_REG_FTDF_MAC_DIV_Pos (8UL) /*!< CRG_TOP CLK_RADIO_REG: FTDF_MAC_DIV (Bit 8) */ -#define CRG_TOP_CLK_RADIO_REG_FTDF_MAC_DIV_Msk (0x300UL) /*!< CRG_TOP CLK_RADIO_REG: FTDF_MAC_DIV (Bitfield-Mask: 0x03) */ -#define CRG_TOP_CLK_RADIO_REG_FTDF_MAC_ENABLE_Pos (11UL) /*!< CRG_TOP CLK_RADIO_REG: FTDF_MAC_ENABLE (Bit 11) */ -#define CRG_TOP_CLK_RADIO_REG_FTDF_MAC_ENABLE_Msk (0x800UL) /*!< CRG_TOP CLK_RADIO_REG: FTDF_MAC_ENABLE (Bitfield-Mask: 0x01) */ - -/* ---------------------------- CRG_TOP_CLK_CTRL_REG ---------------------------- */ -#define CRG_TOP_CLK_CTRL_REG_SYS_CLK_SEL_Pos (0UL) /*!< CRG_TOP CLK_CTRL_REG: SYS_CLK_SEL (Bit 0) */ -#define CRG_TOP_CLK_CTRL_REG_SYS_CLK_SEL_Msk (0x3UL) /*!< CRG_TOP CLK_CTRL_REG: SYS_CLK_SEL (Bitfield-Mask: 0x03) */ -#define CRG_TOP_CLK_CTRL_REG_XTAL16M_DISABLE_Pos (2UL) /*!< CRG_TOP CLK_CTRL_REG: XTAL16M_DISABLE (Bit 2) */ -#define CRG_TOP_CLK_CTRL_REG_XTAL16M_DISABLE_Msk (0x4UL) /*!< CRG_TOP CLK_CTRL_REG: XTAL16M_DISABLE (Bitfield-Mask: 0x01) */ -#define CRG_TOP_CLK_CTRL_REG_XTAL32M_MODE_Pos (3UL) /*!< CRG_TOP CLK_CTRL_REG: XTAL32M_MODE (Bit 3) */ -#define CRG_TOP_CLK_CTRL_REG_XTAL32M_MODE_Msk (0x8UL) /*!< CRG_TOP CLK_CTRL_REG: XTAL32M_MODE (Bitfield-Mask: 0x01) */ -#define CRG_TOP_CLK_CTRL_REG_USB_CLK_SRC_Pos (4UL) /*!< CRG_TOP CLK_CTRL_REG: USB_CLK_SRC (Bit 4) */ -#define CRG_TOP_CLK_CTRL_REG_USB_CLK_SRC_Msk (0x10UL) /*!< CRG_TOP CLK_CTRL_REG: USB_CLK_SRC (Bitfield-Mask: 0x01) */ -#define CRG_TOP_CLK_CTRL_REG_PLL_DIV2_Pos (5UL) /*!< CRG_TOP CLK_CTRL_REG: PLL_DIV2 (Bit 5) */ -#define CRG_TOP_CLK_CTRL_REG_PLL_DIV2_Msk (0x20UL) /*!< CRG_TOP CLK_CTRL_REG: PLL_DIV2 (Bitfield-Mask: 0x01) */ -#define CRG_TOP_CLK_CTRL_REG_DIVN_XTAL32M_MODE_Pos (6UL) /*!< CRG_TOP CLK_CTRL_REG: DIVN_XTAL32M_MODE (Bit 6) */ -#define CRG_TOP_CLK_CTRL_REG_DIVN_XTAL32M_MODE_Msk (0x40UL) /*!< CRG_TOP CLK_CTRL_REG: DIVN_XTAL32M_MODE (Bitfield-Mask: 0x01) */ -#define CRG_TOP_CLK_CTRL_REG_DIVN_SYNC_LEVEL_Pos (7UL) /*!< CRG_TOP CLK_CTRL_REG: DIVN_SYNC_LEVEL (Bit 7) */ -#define CRG_TOP_CLK_CTRL_REG_DIVN_SYNC_LEVEL_Msk (0x80UL) /*!< CRG_TOP CLK_CTRL_REG: DIVN_SYNC_LEVEL (Bitfield-Mask: 0x01) */ -#define CRG_TOP_CLK_CTRL_REG_CLK32K_SOURCE_Pos (8UL) /*!< CRG_TOP CLK_CTRL_REG: CLK32K_SOURCE (Bit 8) */ -#define CRG_TOP_CLK_CTRL_REG_CLK32K_SOURCE_Msk (0x300UL) /*!< CRG_TOP CLK_CTRL_REG: CLK32K_SOURCE (Bitfield-Mask: 0x03) */ -#define CRG_TOP_CLK_CTRL_REG_DIVN_SHIFT_SEL_Pos (10UL) /*!< CRG_TOP CLK_CTRL_REG: DIVN_SHIFT_SEL (Bit 10) */ -#define CRG_TOP_CLK_CTRL_REG_DIVN_SHIFT_SEL_Msk (0x400UL) /*!< CRG_TOP CLK_CTRL_REG: DIVN_SHIFT_SEL (Bitfield-Mask: 0x01) */ -#define CRG_TOP_CLK_CTRL_REG_RUNNING_AT_32K_Pos (12UL) /*!< CRG_TOP CLK_CTRL_REG: RUNNING_AT_32K (Bit 12) */ -#define CRG_TOP_CLK_CTRL_REG_RUNNING_AT_32K_Msk (0x1000UL) /*!< CRG_TOP CLK_CTRL_REG: RUNNING_AT_32K (Bitfield-Mask: 0x01) */ -#define CRG_TOP_CLK_CTRL_REG_RUNNING_AT_RC16M_Pos (13UL) /*!< CRG_TOP CLK_CTRL_REG: RUNNING_AT_RC16M (Bit 13) */ -#define CRG_TOP_CLK_CTRL_REG_RUNNING_AT_RC16M_Msk (0x2000UL) /*!< CRG_TOP CLK_CTRL_REG: RUNNING_AT_RC16M (Bitfield-Mask: 0x01) */ -#define CRG_TOP_CLK_CTRL_REG_RUNNING_AT_XTAL16M_Pos (14UL) /*!< CRG_TOP CLK_CTRL_REG: RUNNING_AT_XTAL16M (Bit 14) */ -#define CRG_TOP_CLK_CTRL_REG_RUNNING_AT_XTAL16M_Msk (0x4000UL) /*!< CRG_TOP CLK_CTRL_REG: RUNNING_AT_XTAL16M (Bitfield-Mask: 0x01) */ -#define CRG_TOP_CLK_CTRL_REG_RUNNING_AT_PLL96M_Pos (15UL) /*!< CRG_TOP CLK_CTRL_REG: RUNNING_AT_PLL96M (Bit 15) */ -#define CRG_TOP_CLK_CTRL_REG_RUNNING_AT_PLL96M_Msk (0x8000UL) /*!< CRG_TOP CLK_CTRL_REG: RUNNING_AT_PLL96M (Bitfield-Mask: 0x01) */ - -/* ----------------------------- CRG_TOP_CLK_TMR_REG ---------------------------- */ -#define CRG_TOP_CLK_TMR_REG_TMR0_DIV_Pos (0UL) /*!< CRG_TOP CLK_TMR_REG: TMR0_DIV (Bit 0) */ -#define CRG_TOP_CLK_TMR_REG_TMR0_DIV_Msk (0x3UL) /*!< CRG_TOP CLK_TMR_REG: TMR0_DIV (Bitfield-Mask: 0x03) */ -#define CRG_TOP_CLK_TMR_REG_TMR0_ENABLE_Pos (2UL) /*!< CRG_TOP CLK_TMR_REG: TMR0_ENABLE (Bit 2) */ -#define CRG_TOP_CLK_TMR_REG_TMR0_ENABLE_Msk (0x4UL) /*!< CRG_TOP CLK_TMR_REG: TMR0_ENABLE (Bitfield-Mask: 0x01) */ -#define CRG_TOP_CLK_TMR_REG_TMR0_CLK_SEL_Pos (3UL) /*!< CRG_TOP CLK_TMR_REG: TMR0_CLK_SEL (Bit 3) */ -#define CRG_TOP_CLK_TMR_REG_TMR0_CLK_SEL_Msk (0x8UL) /*!< CRG_TOP CLK_TMR_REG: TMR0_CLK_SEL (Bitfield-Mask: 0x01) */ -#define CRG_TOP_CLK_TMR_REG_TMR1_DIV_Pos (4UL) /*!< CRG_TOP CLK_TMR_REG: TMR1_DIV (Bit 4) */ -#define CRG_TOP_CLK_TMR_REG_TMR1_DIV_Msk (0x30UL) /*!< CRG_TOP CLK_TMR_REG: TMR1_DIV (Bitfield-Mask: 0x03) */ -#define CRG_TOP_CLK_TMR_REG_TMR1_ENABLE_Pos (6UL) /*!< CRG_TOP CLK_TMR_REG: TMR1_ENABLE (Bit 6) */ -#define CRG_TOP_CLK_TMR_REG_TMR1_ENABLE_Msk (0x40UL) /*!< CRG_TOP CLK_TMR_REG: TMR1_ENABLE (Bitfield-Mask: 0x01) */ -#define CRG_TOP_CLK_TMR_REG_TMR1_CLK_SEL_Pos (7UL) /*!< CRG_TOP CLK_TMR_REG: TMR1_CLK_SEL (Bit 7) */ -#define CRG_TOP_CLK_TMR_REG_TMR1_CLK_SEL_Msk (0x80UL) /*!< CRG_TOP CLK_TMR_REG: TMR1_CLK_SEL (Bitfield-Mask: 0x01) */ -#define CRG_TOP_CLK_TMR_REG_TMR2_DIV_Pos (8UL) /*!< CRG_TOP CLK_TMR_REG: TMR2_DIV (Bit 8) */ -#define CRG_TOP_CLK_TMR_REG_TMR2_DIV_Msk (0x300UL) /*!< CRG_TOP CLK_TMR_REG: TMR2_DIV (Bitfield-Mask: 0x03) */ -#define CRG_TOP_CLK_TMR_REG_TMR2_ENABLE_Pos (10UL) /*!< CRG_TOP CLK_TMR_REG: TMR2_ENABLE (Bit 10) */ -#define CRG_TOP_CLK_TMR_REG_TMR2_ENABLE_Msk (0x400UL) /*!< CRG_TOP CLK_TMR_REG: TMR2_ENABLE (Bitfield-Mask: 0x01) */ -#define CRG_TOP_CLK_TMR_REG_TMR2_CLK_SEL_Pos (11UL) /*!< CRG_TOP CLK_TMR_REG: TMR2_CLK_SEL (Bit 11) */ -#define CRG_TOP_CLK_TMR_REG_TMR2_CLK_SEL_Msk (0x800UL) /*!< CRG_TOP CLK_TMR_REG: TMR2_CLK_SEL (Bitfield-Mask: 0x01) */ -#define CRG_TOP_CLK_TMR_REG_BREATH_ENABLE_Pos (12UL) /*!< CRG_TOP CLK_TMR_REG: BREATH_ENABLE (Bit 12) */ -#define CRG_TOP_CLK_TMR_REG_BREATH_ENABLE_Msk (0x1000UL) /*!< CRG_TOP CLK_TMR_REG: BREATH_ENABLE (Bitfield-Mask: 0x01) */ -#define CRG_TOP_CLK_TMR_REG_WAKEUPCT_ENABLE_Pos (13UL) /*!< CRG_TOP CLK_TMR_REG: WAKEUPCT_ENABLE (Bit 13) */ -#define CRG_TOP_CLK_TMR_REG_WAKEUPCT_ENABLE_Msk (0x2000UL) /*!< CRG_TOP CLK_TMR_REG: WAKEUPCT_ENABLE (Bitfield-Mask: 0x01) */ -#define CRG_TOP_CLK_TMR_REG_P06_TMR1_PWM_MODE_Pos (14UL) /*!< CRG_TOP CLK_TMR_REG: P06_TMR1_PWM_MODE (Bit 14) */ -#define CRG_TOP_CLK_TMR_REG_P06_TMR1_PWM_MODE_Msk (0x4000UL) /*!< CRG_TOP CLK_TMR_REG: P06_TMR1_PWM_MODE (Bitfield-Mask: 0x01) */ - -/* ---------------------------- CRG_TOP_PMU_CTRL_REG ---------------------------- */ -#define CRG_TOP_PMU_CTRL_REG_PERIPH_SLEEP_Pos (0UL) /*!< CRG_TOP PMU_CTRL_REG: PERIPH_SLEEP (Bit 0) */ -#define CRG_TOP_PMU_CTRL_REG_PERIPH_SLEEP_Msk (0x1UL) /*!< CRG_TOP PMU_CTRL_REG: PERIPH_SLEEP (Bitfield-Mask: 0x01) */ -#define CRG_TOP_PMU_CTRL_REG_RADIO_SLEEP_Pos (1UL) /*!< CRG_TOP PMU_CTRL_REG: RADIO_SLEEP (Bit 1) */ -#define CRG_TOP_PMU_CTRL_REG_RADIO_SLEEP_Msk (0x2UL) /*!< CRG_TOP PMU_CTRL_REG: RADIO_SLEEP (Bitfield-Mask: 0x01) */ -#define CRG_TOP_PMU_CTRL_REG_BLE_SLEEP_Pos (2UL) /*!< CRG_TOP PMU_CTRL_REG: BLE_SLEEP (Bit 2) */ -#define CRG_TOP_PMU_CTRL_REG_BLE_SLEEP_Msk (0x4UL) /*!< CRG_TOP PMU_CTRL_REG: BLE_SLEEP (Bitfield-Mask: 0x01) */ -#define CRG_TOP_PMU_CTRL_REG_FTDF_SLEEP_Pos (3UL) /*!< CRG_TOP PMU_CTRL_REG: FTDF_SLEEP (Bit 3) */ -#define CRG_TOP_PMU_CTRL_REG_FTDF_SLEEP_Msk (0x8UL) /*!< CRG_TOP PMU_CTRL_REG: FTDF_SLEEP (Bitfield-Mask: 0x01) */ -#define CRG_TOP_PMU_CTRL_REG_MAP_BANDGAP_EN_Pos (4UL) /*!< CRG_TOP PMU_CTRL_REG: MAP_BANDGAP_EN (Bit 4) */ -#define CRG_TOP_PMU_CTRL_REG_MAP_BANDGAP_EN_Msk (0x10UL) /*!< CRG_TOP PMU_CTRL_REG: MAP_BANDGAP_EN (Bitfield-Mask: 0x01) */ -#define CRG_TOP_PMU_CTRL_REG_RESET_ON_WAKEUP_Pos (5UL) /*!< CRG_TOP PMU_CTRL_REG: RESET_ON_WAKEUP (Bit 5) */ -#define CRG_TOP_PMU_CTRL_REG_RESET_ON_WAKEUP_Msk (0x20UL) /*!< CRG_TOP PMU_CTRL_REG: RESET_ON_WAKEUP (Bitfield-Mask: 0x01) */ -#define CRG_TOP_PMU_CTRL_REG_OTP_COPY_DIV_Pos (6UL) /*!< CRG_TOP PMU_CTRL_REG: OTP_COPY_DIV (Bit 6) */ -#define CRG_TOP_PMU_CTRL_REG_OTP_COPY_DIV_Msk (0xc0UL) /*!< CRG_TOP PMU_CTRL_REG: OTP_COPY_DIV (Bitfield-Mask: 0x03) */ -#define CRG_TOP_PMU_CTRL_REG_RETAIN_RAM_Pos (8UL) /*!< CRG_TOP PMU_CTRL_REG: RETAIN_RAM (Bit 8) */ -#define CRG_TOP_PMU_CTRL_REG_RETAIN_RAM_Msk (0x1f00UL) /*!< CRG_TOP PMU_CTRL_REG: RETAIN_RAM (Bitfield-Mask: 0x1f) */ -#define CRG_TOP_PMU_CTRL_REG_ENABLE_CLKLESS_Pos (13UL) /*!< CRG_TOP PMU_CTRL_REG: ENABLE_CLKLESS (Bit 13) */ -#define CRG_TOP_PMU_CTRL_REG_ENABLE_CLKLESS_Msk (0x2000UL) /*!< CRG_TOP PMU_CTRL_REG: ENABLE_CLKLESS (Bitfield-Mask: 0x01) */ -#define CRG_TOP_PMU_CTRL_REG_RETAIN_CACHE_Pos (14UL) /*!< CRG_TOP PMU_CTRL_REG: RETAIN_CACHE (Bit 14) */ -#define CRG_TOP_PMU_CTRL_REG_RETAIN_CACHE_Msk (0x4000UL) /*!< CRG_TOP PMU_CTRL_REG: RETAIN_CACHE (Bitfield-Mask: 0x01) */ -#define CRG_TOP_PMU_CTRL_REG_RETAIN_ECCRAM_Pos (15UL) /*!< CRG_TOP PMU_CTRL_REG: RETAIN_ECCRAM (Bit 15) */ -#define CRG_TOP_PMU_CTRL_REG_RETAIN_ECCRAM_Msk (0x8000UL) /*!< CRG_TOP PMU_CTRL_REG: RETAIN_ECCRAM (Bitfield-Mask: 0x01) */ - -/* ---------------------------- CRG_TOP_SYS_CTRL_REG ---------------------------- */ -#define CRG_TOP_SYS_CTRL_REG_REMAP_ADR0_Pos (0UL) /*!< CRG_TOP SYS_CTRL_REG: REMAP_ADR0 (Bit 0) */ -#define CRG_TOP_SYS_CTRL_REG_REMAP_ADR0_Msk (0x7UL) /*!< CRG_TOP SYS_CTRL_REG: REMAP_ADR0 (Bitfield-Mask: 0x07) */ -#define CRG_TOP_SYS_CTRL_REG_REMAP_RAMS_Pos (3UL) /*!< CRG_TOP SYS_CTRL_REG: REMAP_RAMS (Bit 3) */ -#define CRG_TOP_SYS_CTRL_REG_REMAP_RAMS_Msk (0x18UL) /*!< CRG_TOP SYS_CTRL_REG: REMAP_RAMS (Bitfield-Mask: 0x03) */ -#define CRG_TOP_SYS_CTRL_REG_PAD_LATCH_EN_Pos (5UL) /*!< CRG_TOP SYS_CTRL_REG: PAD_LATCH_EN (Bit 5) */ -#define CRG_TOP_SYS_CTRL_REG_PAD_LATCH_EN_Msk (0x20UL) /*!< CRG_TOP SYS_CTRL_REG: PAD_LATCH_EN (Bitfield-Mask: 0x01) */ -#define CRG_TOP_SYS_CTRL_REG_OTPC_RESET_REQ_Pos (6UL) /*!< CRG_TOP SYS_CTRL_REG: OTPC_RESET_REQ (Bit 6) */ -#define CRG_TOP_SYS_CTRL_REG_OTPC_RESET_REQ_Msk (0x40UL) /*!< CRG_TOP SYS_CTRL_REG: OTPC_RESET_REQ (Bitfield-Mask: 0x01) */ -#define CRG_TOP_SYS_CTRL_REG_DEBUGGER_ENABLE_Pos (7UL) /*!< CRG_TOP SYS_CTRL_REG: DEBUGGER_ENABLE (Bit 7) */ -#define CRG_TOP_SYS_CTRL_REG_DEBUGGER_ENABLE_Msk (0x80UL) /*!< CRG_TOP SYS_CTRL_REG: DEBUGGER_ENABLE (Bitfield-Mask: 0x01) */ -#define CRG_TOP_SYS_CTRL_REG_DRA_OFF_Pos (8UL) /*!< CRG_TOP SYS_CTRL_REG: DRA_OFF (Bit 8) */ -#define CRG_TOP_SYS_CTRL_REG_DRA_OFF_Msk (0x100UL) /*!< CRG_TOP SYS_CTRL_REG: DRA_OFF (Bitfield-Mask: 0x01) */ -#define CRG_TOP_SYS_CTRL_REG_TIMEOUT_DISABLE_Pos (9UL) /*!< CRG_TOP SYS_CTRL_REG: TIMEOUT_DISABLE (Bit 9) */ -#define CRG_TOP_SYS_CTRL_REG_TIMEOUT_DISABLE_Msk (0x200UL) /*!< CRG_TOP SYS_CTRL_REG: TIMEOUT_DISABLE (Bitfield-Mask: 0x01) */ -#define CRG_TOP_SYS_CTRL_REG_CACHERAM_MUX_Pos (10UL) /*!< CRG_TOP SYS_CTRL_REG: CACHERAM_MUX (Bit 10) */ -#define CRG_TOP_SYS_CTRL_REG_CACHERAM_MUX_Msk (0x400UL) /*!< CRG_TOP SYS_CTRL_REG: CACHERAM_MUX (Bitfield-Mask: 0x01) */ -#define CRG_TOP_SYS_CTRL_REG_DEV_PHASE_Pos (11UL) /*!< CRG_TOP SYS_CTRL_REG: DEV_PHASE (Bit 11) */ -#define CRG_TOP_SYS_CTRL_REG_DEV_PHASE_Msk (0x800UL) /*!< CRG_TOP SYS_CTRL_REG: DEV_PHASE (Bitfield-Mask: 0x01) */ -#define CRG_TOP_SYS_CTRL_REG_QSPI_INIT_Pos (12UL) /*!< CRG_TOP SYS_CTRL_REG: QSPI_INIT (Bit 12) */ -#define CRG_TOP_SYS_CTRL_REG_QSPI_INIT_Msk (0x1000UL) /*!< CRG_TOP SYS_CTRL_REG: QSPI_INIT (Bitfield-Mask: 0x01) */ -#define CRG_TOP_SYS_CTRL_REG_OTP_COPY_Pos (13UL) /*!< CRG_TOP SYS_CTRL_REG: OTP_COPY (Bit 13) */ -#define CRG_TOP_SYS_CTRL_REG_OTP_COPY_Msk (0x2000UL) /*!< CRG_TOP SYS_CTRL_REG: OTP_COPY (Bitfield-Mask: 0x01) */ -#define CRG_TOP_SYS_CTRL_REG_REMAP_INTVECT_Pos (14UL) /*!< CRG_TOP SYS_CTRL_REG: REMAP_INTVECT (Bit 14) */ -#define CRG_TOP_SYS_CTRL_REG_REMAP_INTVECT_Msk (0x4000UL) /*!< CRG_TOP SYS_CTRL_REG: REMAP_INTVECT (Bitfield-Mask: 0x01) */ -#define CRG_TOP_SYS_CTRL_REG_SW_RESET_Pos (15UL) /*!< CRG_TOP SYS_CTRL_REG: SW_RESET (Bit 15) */ -#define CRG_TOP_SYS_CTRL_REG_SW_RESET_Msk (0x8000UL) /*!< CRG_TOP SYS_CTRL_REG: SW_RESET (Bitfield-Mask: 0x01) */ - -/* ---------------------------- CRG_TOP_SYS_STAT_REG ---------------------------- */ -#define CRG_TOP_SYS_STAT_REG_RAD_IS_DOWN_Pos (0UL) /*!< CRG_TOP SYS_STAT_REG: RAD_IS_DOWN (Bit 0) */ -#define CRG_TOP_SYS_STAT_REG_RAD_IS_DOWN_Msk (0x1UL) /*!< CRG_TOP SYS_STAT_REG: RAD_IS_DOWN (Bitfield-Mask: 0x01) */ -#define CRG_TOP_SYS_STAT_REG_RAD_IS_UP_Pos (1UL) /*!< CRG_TOP SYS_STAT_REG: RAD_IS_UP (Bit 1) */ -#define CRG_TOP_SYS_STAT_REG_RAD_IS_UP_Msk (0x2UL) /*!< CRG_TOP SYS_STAT_REG: RAD_IS_UP (Bitfield-Mask: 0x01) */ -#define CRG_TOP_SYS_STAT_REG_PER_IS_DOWN_Pos (2UL) /*!< CRG_TOP SYS_STAT_REG: PER_IS_DOWN (Bit 2) */ -#define CRG_TOP_SYS_STAT_REG_PER_IS_DOWN_Msk (0x4UL) /*!< CRG_TOP SYS_STAT_REG: PER_IS_DOWN (Bitfield-Mask: 0x01) */ -#define CRG_TOP_SYS_STAT_REG_PER_IS_UP_Pos (3UL) /*!< CRG_TOP SYS_STAT_REG: PER_IS_UP (Bit 3) */ -#define CRG_TOP_SYS_STAT_REG_PER_IS_UP_Msk (0x8UL) /*!< CRG_TOP SYS_STAT_REG: PER_IS_UP (Bitfield-Mask: 0x01) */ -#define CRG_TOP_SYS_STAT_REG_XTAL16_SW2_Pos (4UL) /*!< CRG_TOP SYS_STAT_REG: XTAL16_SW2 (Bit 4) */ -#define CRG_TOP_SYS_STAT_REG_XTAL16_SW2_Msk (0x10UL) /*!< CRG_TOP SYS_STAT_REG: XTAL16_SW2 (Bitfield-Mask: 0x01) */ -#define CRG_TOP_SYS_STAT_REG_DBG_IS_ACTIVE_Pos (5UL) /*!< CRG_TOP SYS_STAT_REG: DBG_IS_ACTIVE (Bit 5) */ -#define CRG_TOP_SYS_STAT_REG_DBG_IS_ACTIVE_Msk (0x20UL) /*!< CRG_TOP SYS_STAT_REG: DBG_IS_ACTIVE (Bitfield-Mask: 0x01) */ -#define CRG_TOP_SYS_STAT_REG_XTAL16_TRIM_READY_Pos (6UL) /*!< CRG_TOP SYS_STAT_REG: XTAL16_TRIM_READY (Bit 6) */ -#define CRG_TOP_SYS_STAT_REG_XTAL16_TRIM_READY_Msk (0x40UL) /*!< CRG_TOP SYS_STAT_REG: XTAL16_TRIM_READY (Bitfield-Mask: 0x01) */ -#define CRG_TOP_SYS_STAT_REG_XTAL16_SETTLE_READY_Pos (7UL) /*!< CRG_TOP SYS_STAT_REG: XTAL16_SETTLE_READY (Bit 7) */ -#define CRG_TOP_SYS_STAT_REG_XTAL16_SETTLE_READY_Msk (0x80UL) /*!< CRG_TOP SYS_STAT_REG: XTAL16_SETTLE_READY (Bitfield-Mask: 0x01) */ -#define CRG_TOP_SYS_STAT_REG_BLE_IS_DOWN_Pos (8UL) /*!< CRG_TOP SYS_STAT_REG: BLE_IS_DOWN (Bit 8) */ -#define CRG_TOP_SYS_STAT_REG_BLE_IS_DOWN_Msk (0x100UL) /*!< CRG_TOP SYS_STAT_REG: BLE_IS_DOWN (Bitfield-Mask: 0x01) */ -#define CRG_TOP_SYS_STAT_REG_BLE_IS_UP_Pos (9UL) /*!< CRG_TOP SYS_STAT_REG: BLE_IS_UP (Bit 9) */ -#define CRG_TOP_SYS_STAT_REG_BLE_IS_UP_Msk (0x200UL) /*!< CRG_TOP SYS_STAT_REG: BLE_IS_UP (Bitfield-Mask: 0x01) */ -#define CRG_TOP_SYS_STAT_REG_FTDF_IS_DOWN_Pos (10UL) /*!< CRG_TOP SYS_STAT_REG: FTDF_IS_DOWN (Bit 10) */ -#define CRG_TOP_SYS_STAT_REG_FTDF_IS_DOWN_Msk (0x400UL) /*!< CRG_TOP SYS_STAT_REG: FTDF_IS_DOWN (Bitfield-Mask: 0x01) */ -#define CRG_TOP_SYS_STAT_REG_FTDF_IS_UP_Pos (11UL) /*!< CRG_TOP SYS_STAT_REG: FTDF_IS_UP (Bit 11) */ -#define CRG_TOP_SYS_STAT_REG_FTDF_IS_UP_Msk (0x800UL) /*!< CRG_TOP SYS_STAT_REG: FTDF_IS_UP (Bitfield-Mask: 0x01) */ - -/* ---------------------------- CRG_TOP_TRIM_CTRL_REG --------------------------- */ -#define CRG_TOP_TRIM_CTRL_REG_XTAL_COUNT_N_Pos (0UL) /*!< CRG_TOP TRIM_CTRL_REG: XTAL_COUNT_N (Bit 0) */ -#define CRG_TOP_TRIM_CTRL_REG_XTAL_COUNT_N_Msk (0x3fUL) /*!< CRG_TOP TRIM_CTRL_REG: XTAL_COUNT_N (Bitfield-Mask: 0x3f) */ -#define CRG_TOP_TRIM_CTRL_REG_XTAL_TRIM_SELECT_Pos (6UL) /*!< CRG_TOP TRIM_CTRL_REG: XTAL_TRIM_SELECT (Bit 6) */ -#define CRG_TOP_TRIM_CTRL_REG_XTAL_TRIM_SELECT_Msk (0xc0UL) /*!< CRG_TOP TRIM_CTRL_REG: XTAL_TRIM_SELECT (Bitfield-Mask: 0x03) */ -#define CRG_TOP_TRIM_CTRL_REG_XTAL_SETTLE_N_Pos (8UL) /*!< CRG_TOP TRIM_CTRL_REG: XTAL_SETTLE_N (Bit 8) */ -#define CRG_TOP_TRIM_CTRL_REG_XTAL_SETTLE_N_Msk (0x3f00UL) /*!< CRG_TOP TRIM_CTRL_REG: XTAL_SETTLE_N (Bitfield-Mask: 0x3f) */ - -/* ----------------------------- CRG_TOP_CLK_32K_REG ---------------------------- */ -#define CRG_TOP_CLK_32K_REG_XTAL32K_ENABLE_Pos (0UL) /*!< CRG_TOP CLK_32K_REG: XTAL32K_ENABLE (Bit 0) */ -#define CRG_TOP_CLK_32K_REG_XTAL32K_ENABLE_Msk (0x1UL) /*!< CRG_TOP CLK_32K_REG: XTAL32K_ENABLE (Bitfield-Mask: 0x01) */ -#define CRG_TOP_CLK_32K_REG_XTAL32K_RBIAS_Pos (1UL) /*!< CRG_TOP CLK_32K_REG: XTAL32K_RBIAS (Bit 1) */ -#define CRG_TOP_CLK_32K_REG_XTAL32K_RBIAS_Msk (0x6UL) /*!< CRG_TOP CLK_32K_REG: XTAL32K_RBIAS (Bitfield-Mask: 0x03) */ -#define CRG_TOP_CLK_32K_REG_XTAL32K_CUR_Pos (3UL) /*!< CRG_TOP CLK_32K_REG: XTAL32K_CUR (Bit 3) */ -#define CRG_TOP_CLK_32K_REG_XTAL32K_CUR_Msk (0x78UL) /*!< CRG_TOP CLK_32K_REG: XTAL32K_CUR (Bitfield-Mask: 0x0f) */ -#define CRG_TOP_CLK_32K_REG_RC32K_ENABLE_Pos (7UL) /*!< CRG_TOP CLK_32K_REG: RC32K_ENABLE (Bit 7) */ -#define CRG_TOP_CLK_32K_REG_RC32K_ENABLE_Msk (0x80UL) /*!< CRG_TOP CLK_32K_REG: RC32K_ENABLE (Bitfield-Mask: 0x01) */ -#define CRG_TOP_CLK_32K_REG_RC32K_TRIM_Pos (8UL) /*!< CRG_TOP CLK_32K_REG: RC32K_TRIM (Bit 8) */ -#define CRG_TOP_CLK_32K_REG_RC32K_TRIM_Msk (0xf00UL) /*!< CRG_TOP CLK_32K_REG: RC32K_TRIM (Bitfield-Mask: 0x0f) */ -#define CRG_TOP_CLK_32K_REG_XTAL32K_DISABLE_AMPREG_Pos (12UL) /*!< CRG_TOP CLK_32K_REG: XTAL32K_DISABLE_AMPREG (Bit 12) */ -#define CRG_TOP_CLK_32K_REG_XTAL32K_DISABLE_AMPREG_Msk (0x1000UL) /*!< CRG_TOP CLK_32K_REG: XTAL32K_DISABLE_AMPREG (Bitfield-Mask: 0x01) */ -#define CRG_TOP_CLK_32K_REG_XTAL32K_XTAL1_BIAS_DISABLE_Pos (13UL) /*!< CRG_TOP CLK_32K_REG: XTAL32K_XTAL1_BIAS_DISABLE (Bit 13) */ -#define CRG_TOP_CLK_32K_REG_XTAL32K_XTAL1_BIAS_DISABLE_Msk (0x2000UL) /*!< CRG_TOP CLK_32K_REG: XTAL32K_XTAL1_BIAS_DISABLE (Bitfield-Mask: 0x01) */ - -/* ----------------------------- CRG_TOP_CLK_16M_REG ---------------------------- */ -#define CRG_TOP_CLK_16M_REG_RC16M_ENABLE_Pos (0UL) /*!< CRG_TOP CLK_16M_REG: RC16M_ENABLE (Bit 0) */ -#define CRG_TOP_CLK_16M_REG_RC16M_ENABLE_Msk (0x1UL) /*!< CRG_TOP CLK_16M_REG: RC16M_ENABLE (Bitfield-Mask: 0x01) */ -#define CRG_TOP_CLK_16M_REG_RC16M_TRIM_Pos (1UL) /*!< CRG_TOP CLK_16M_REG: RC16M_TRIM (Bit 1) */ -#define CRG_TOP_CLK_16M_REG_RC16M_TRIM_Msk (0x1eUL) /*!< CRG_TOP CLK_16M_REG: RC16M_TRIM (Bitfield-Mask: 0x0f) */ -#define CRG_TOP_CLK_16M_REG_XTAL16_CUR_SET_Pos (5UL) /*!< CRG_TOP CLK_16M_REG: XTAL16_CUR_SET (Bit 5) */ -#define CRG_TOP_CLK_16M_REG_XTAL16_CUR_SET_Msk (0xe0UL) /*!< CRG_TOP CLK_16M_REG: XTAL16_CUR_SET (Bitfield-Mask: 0x07) */ -#define CRG_TOP_CLK_16M_REG_XTAL16_MAX_CURRENT_Pos (8UL) /*!< CRG_TOP CLK_16M_REG: XTAL16_MAX_CURRENT (Bit 8) */ -#define CRG_TOP_CLK_16M_REG_XTAL16_MAX_CURRENT_Msk (0x100UL) /*!< CRG_TOP CLK_16M_REG: XTAL16_MAX_CURRENT (Bitfield-Mask: 0x01) */ -#define CRG_TOP_CLK_16M_REG_XTAL16_EXT_CLK_ENABLE_Pos (9UL) /*!< CRG_TOP CLK_16M_REG: XTAL16_EXT_CLK_ENABLE (Bit 9) */ -#define CRG_TOP_CLK_16M_REG_XTAL16_EXT_CLK_ENABLE_Msk (0x200UL) /*!< CRG_TOP CLK_16M_REG: XTAL16_EXT_CLK_ENABLE (Bitfield-Mask: 0x01) */ -#define CRG_TOP_CLK_16M_REG_XTAL16_AMP_TRIM_Pos (10UL) /*!< CRG_TOP CLK_16M_REG: XTAL16_AMP_TRIM (Bit 10) */ -#define CRG_TOP_CLK_16M_REG_XTAL16_AMP_TRIM_Msk (0x1c00UL) /*!< CRG_TOP CLK_16M_REG: XTAL16_AMP_TRIM (Bitfield-Mask: 0x07) */ -#define CRG_TOP_CLK_16M_REG_XTAL16_SPIKE_FLT_BYPASS_Pos (13UL) /*!< CRG_TOP CLK_16M_REG: XTAL16_SPIKE_FLT_BYPASS (Bit 13) */ -#define CRG_TOP_CLK_16M_REG_XTAL16_SPIKE_FLT_BYPASS_Msk (0x2000UL) /*!< CRG_TOP CLK_16M_REG: XTAL16_SPIKE_FLT_BYPASS (Bitfield-Mask: 0x01) */ -#define CRG_TOP_CLK_16M_REG_XTAL16_HPASS_FLT_EN_Pos (14UL) /*!< CRG_TOP CLK_16M_REG: XTAL16_HPASS_FLT_EN (Bit 14) */ -#define CRG_TOP_CLK_16M_REG_XTAL16_HPASS_FLT_EN_Msk (0x4000UL) /*!< CRG_TOP CLK_16M_REG: XTAL16_HPASS_FLT_EN (Bitfield-Mask: 0x01) */ -#define CRG_TOP_CLK_16M_REG_RC16M_STARTUP_DISABLE_Pos (15UL) /*!< CRG_TOP CLK_16M_REG: RC16M_STARTUP_DISABLE (Bit 15) */ -#define CRG_TOP_CLK_16M_REG_RC16M_STARTUP_DISABLE_Msk (0x8000UL) /*!< CRG_TOP CLK_16M_REG: RC16M_STARTUP_DISABLE (Bitfield-Mask: 0x01) */ - -/* --------------------------- CRG_TOP_CLK_RCX20K_REG --------------------------- */ -#define CRG_TOP_CLK_RCX20K_REG_RCX20K_TRIM_Pos (0UL) /*!< CRG_TOP CLK_RCX20K_REG: RCX20K_TRIM (Bit 0) */ -#define CRG_TOP_CLK_RCX20K_REG_RCX20K_TRIM_Msk (0xfUL) /*!< CRG_TOP CLK_RCX20K_REG: RCX20K_TRIM (Bitfield-Mask: 0x0f) */ -#define CRG_TOP_CLK_RCX20K_REG_RCX20K_NTC_Pos (4UL) /*!< CRG_TOP CLK_RCX20K_REG: RCX20K_NTC (Bit 4) */ -#define CRG_TOP_CLK_RCX20K_REG_RCX20K_NTC_Msk (0xf0UL) /*!< CRG_TOP CLK_RCX20K_REG: RCX20K_NTC (Bitfield-Mask: 0x0f) */ -#define CRG_TOP_CLK_RCX20K_REG_RCX20K_BIAS_Pos (8UL) /*!< CRG_TOP CLK_RCX20K_REG: RCX20K_BIAS (Bit 8) */ -#define CRG_TOP_CLK_RCX20K_REG_RCX20K_BIAS_Msk (0x300UL) /*!< CRG_TOP CLK_RCX20K_REG: RCX20K_BIAS (Bitfield-Mask: 0x03) */ -#define CRG_TOP_CLK_RCX20K_REG_RCX20K_LOWF_Pos (10UL) /*!< CRG_TOP CLK_RCX20K_REG: RCX20K_LOWF (Bit 10) */ -#define CRG_TOP_CLK_RCX20K_REG_RCX20K_LOWF_Msk (0x400UL) /*!< CRG_TOP CLK_RCX20K_REG: RCX20K_LOWF (Bitfield-Mask: 0x01) */ -#define CRG_TOP_CLK_RCX20K_REG_RCX20K_ENABLE_Pos (11UL) /*!< CRG_TOP CLK_RCX20K_REG: RCX20K_ENABLE (Bit 11) */ -#define CRG_TOP_CLK_RCX20K_REG_RCX20K_ENABLE_Msk (0x800UL) /*!< CRG_TOP CLK_RCX20K_REG: RCX20K_ENABLE (Bitfield-Mask: 0x01) */ - -/* ----------------------------- CRG_TOP_BANDGAP_REG ---------------------------- */ -#define CRG_TOP_BANDGAP_REG_BGR_TRIM_Pos (0UL) /*!< CRG_TOP BANDGAP_REG: BGR_TRIM (Bit 0) */ -#define CRG_TOP_BANDGAP_REG_BGR_TRIM_Msk (0x1fUL) /*!< CRG_TOP BANDGAP_REG: BGR_TRIM (Bitfield-Mask: 0x1f) */ -#define CRG_TOP_BANDGAP_REG_BGR_ITRIM_Pos (5UL) /*!< CRG_TOP BANDGAP_REG: BGR_ITRIM (Bit 5) */ -#define CRG_TOP_BANDGAP_REG_BGR_ITRIM_Msk (0x3e0UL) /*!< CRG_TOP BANDGAP_REG: BGR_ITRIM (Bitfield-Mask: 0x1f) */ -#define CRG_TOP_BANDGAP_REG_LDO_SLEEP_TRIM_Pos (10UL) /*!< CRG_TOP BANDGAP_REG: LDO_SLEEP_TRIM (Bit 10) */ -#define CRG_TOP_BANDGAP_REG_LDO_SLEEP_TRIM_Msk (0x3c00UL) /*!< CRG_TOP BANDGAP_REG: LDO_SLEEP_TRIM (Bitfield-Mask: 0x0f) */ -#define CRG_TOP_BANDGAP_REG_LDO_SUPPLY_USE_BGREF_Pos (14UL) /*!< CRG_TOP BANDGAP_REG: LDO_SUPPLY_USE_BGREF (Bit 14) */ -#define CRG_TOP_BANDGAP_REG_LDO_SUPPLY_USE_BGREF_Msk (0x4000UL) /*!< CRG_TOP BANDGAP_REG: LDO_SUPPLY_USE_BGREF (Bitfield-Mask: 0x01) */ - -/* --------------------------- CRG_TOP_ANA_STATUS_REG --------------------------- */ -#define CRG_TOP_ANA_STATUS_REG_LDO_RADIO_OK_Pos (0UL) /*!< CRG_TOP ANA_STATUS_REG: LDO_RADIO_OK (Bit 0) */ -#define CRG_TOP_ANA_STATUS_REG_LDO_RADIO_OK_Msk (0x1UL) /*!< CRG_TOP ANA_STATUS_REG: LDO_RADIO_OK (Bitfield-Mask: 0x01) */ -#define CRG_TOP_ANA_STATUS_REG_COMP_VBAT_OK_Pos (1UL) /*!< CRG_TOP ANA_STATUS_REG: COMP_VBAT_OK (Bit 1) */ -#define CRG_TOP_ANA_STATUS_REG_COMP_VBAT_OK_Msk (0x2UL) /*!< CRG_TOP ANA_STATUS_REG: COMP_VBAT_OK (Bitfield-Mask: 0x01) */ -#define CRG_TOP_ANA_STATUS_REG_VBUS_AVAILABLE_Pos (2UL) /*!< CRG_TOP ANA_STATUS_REG: VBUS_AVAILABLE (Bit 2) */ -#define CRG_TOP_ANA_STATUS_REG_VBUS_AVAILABLE_Msk (0x4UL) /*!< CRG_TOP ANA_STATUS_REG: VBUS_AVAILABLE (Bitfield-Mask: 0x01) */ -#define CRG_TOP_ANA_STATUS_REG_NEWBAT_Pos (3UL) /*!< CRG_TOP ANA_STATUS_REG: NEWBAT (Bit 3) */ -#define CRG_TOP_ANA_STATUS_REG_NEWBAT_Msk (0x8UL) /*!< CRG_TOP ANA_STATUS_REG: NEWBAT (Bitfield-Mask: 0x01) */ -#define CRG_TOP_ANA_STATUS_REG_LDO_SUPPLY_VBAT_OK_Pos (4UL) /*!< CRG_TOP ANA_STATUS_REG: LDO_SUPPLY_VBAT_OK (Bit 4) */ -#define CRG_TOP_ANA_STATUS_REG_LDO_SUPPLY_VBAT_OK_Msk (0x10UL) /*!< CRG_TOP ANA_STATUS_REG: LDO_SUPPLY_VBAT_OK (Bitfield-Mask: 0x01) */ -#define CRG_TOP_ANA_STATUS_REG_LDO_SUPPLY_USB_OK_Pos (5UL) /*!< CRG_TOP ANA_STATUS_REG: LDO_SUPPLY_USB_OK (Bit 5) */ -#define CRG_TOP_ANA_STATUS_REG_LDO_SUPPLY_USB_OK_Msk (0x20UL) /*!< CRG_TOP ANA_STATUS_REG: LDO_SUPPLY_USB_OK (Bitfield-Mask: 0x01) */ -#define CRG_TOP_ANA_STATUS_REG_BANDGAP_OK_Pos (6UL) /*!< CRG_TOP ANA_STATUS_REG: BANDGAP_OK (Bit 6) */ -#define CRG_TOP_ANA_STATUS_REG_BANDGAP_OK_Msk (0x40UL) /*!< CRG_TOP ANA_STATUS_REG: BANDGAP_OK (Bitfield-Mask: 0x01) */ -#define CRG_TOP_ANA_STATUS_REG_COMP_VDD_HIGH_Pos (7UL) /*!< CRG_TOP ANA_STATUS_REG: COMP_VDD_HIGH (Bit 7) */ -#define CRG_TOP_ANA_STATUS_REG_COMP_VDD_HIGH_Msk (0x80UL) /*!< CRG_TOP ANA_STATUS_REG: COMP_VDD_HIGH (Bitfield-Mask: 0x01) */ -#define CRG_TOP_ANA_STATUS_REG_LDO_CORE_OK_Pos (8UL) /*!< CRG_TOP ANA_STATUS_REG: LDO_CORE_OK (Bit 8) */ -#define CRG_TOP_ANA_STATUS_REG_LDO_CORE_OK_Msk (0x100UL) /*!< CRG_TOP ANA_STATUS_REG: LDO_CORE_OK (Bitfield-Mask: 0x01) */ -#define CRG_TOP_ANA_STATUS_REG_LDO_1V8_PA_OK_Pos (9UL) /*!< CRG_TOP ANA_STATUS_REG: LDO_1V8_PA_OK (Bit 9) */ -#define CRG_TOP_ANA_STATUS_REG_LDO_1V8_PA_OK_Msk (0x200UL) /*!< CRG_TOP ANA_STATUS_REG: LDO_1V8_PA_OK (Bitfield-Mask: 0x01) */ -#define CRG_TOP_ANA_STATUS_REG_LDO_1V8_FLASH_OK_Pos (10UL) /*!< CRG_TOP ANA_STATUS_REG: LDO_1V8_FLASH_OK (Bit 10) */ -#define CRG_TOP_ANA_STATUS_REG_LDO_1V8_FLASH_OK_Msk (0x400UL) /*!< CRG_TOP ANA_STATUS_REG: LDO_1V8_FLASH_OK (Bitfield-Mask: 0x01) */ -#define CRG_TOP_ANA_STATUS_REG_COMP_VBUS_HIGH_Pos (11UL) /*!< CRG_TOP ANA_STATUS_REG: COMP_VBUS_HIGH (Bit 11) */ -#define CRG_TOP_ANA_STATUS_REG_COMP_VBUS_HIGH_Msk (0x800UL) /*!< CRG_TOP ANA_STATUS_REG: COMP_VBUS_HIGH (Bitfield-Mask: 0x01) */ -#define CRG_TOP_ANA_STATUS_REG_COMP_VBUS_LOW_Pos (12UL) /*!< CRG_TOP ANA_STATUS_REG: COMP_VBUS_LOW (Bit 12) */ -#define CRG_TOP_ANA_STATUS_REG_COMP_VBUS_LOW_Msk (0x1000UL) /*!< CRG_TOP ANA_STATUS_REG: COMP_VBUS_LOW (Bitfield-Mask: 0x01) */ -#define CRG_TOP_ANA_STATUS_REG_COMP_V33_HIGH_Pos (13UL) /*!< CRG_TOP ANA_STATUS_REG: COMP_V33_HIGH (Bit 13) */ -#define CRG_TOP_ANA_STATUS_REG_COMP_V33_HIGH_Msk (0x2000UL) /*!< CRG_TOP ANA_STATUS_REG: COMP_V33_HIGH (Bitfield-Mask: 0x01) */ -#define CRG_TOP_ANA_STATUS_REG_COMP_1V8_FLASH_HIGH_Pos (14UL) /*!< CRG_TOP ANA_STATUS_REG: COMP_1V8_FLASH_HIGH (Bit 14) */ -#define CRG_TOP_ANA_STATUS_REG_COMP_1V8_FLASH_HIGH_Msk (0x4000UL) /*!< CRG_TOP ANA_STATUS_REG: COMP_1V8_FLASH_HIGH (Bitfield-Mask: 0x01) */ -#define CRG_TOP_ANA_STATUS_REG_COMP_1V8_PA_HIGH_Pos (15UL) /*!< CRG_TOP ANA_STATUS_REG: COMP_1V8_PA_HIGH (Bit 15) */ -#define CRG_TOP_ANA_STATUS_REG_COMP_1V8_PA_HIGH_Msk (0x8000UL) /*!< CRG_TOP ANA_STATUS_REG: COMP_1V8_PA_HIGH (Bitfield-Mask: 0x01) */ - -/* ------------------------- CRG_TOP_STARTUP_STATUS_REG ------------------------- */ -#define CRG_TOP_STARTUP_STATUS_REG_SU_BANDGAP_OK_Pos (0UL) /*!< CRG_TOP STARTUP_STATUS_REG: SU_BANDGAP_OK (Bit 0) */ -#define CRG_TOP_STARTUP_STATUS_REG_SU_BANDGAP_OK_Msk (0x1UL) /*!< CRG_TOP STARTUP_STATUS_REG: SU_BANDGAP_OK (Bitfield-Mask: 0x01) */ -#define CRG_TOP_STARTUP_STATUS_REG_SU_NEWBAT_Pos (1UL) /*!< CRG_TOP STARTUP_STATUS_REG: SU_NEWBAT (Bit 1) */ -#define CRG_TOP_STARTUP_STATUS_REG_SU_NEWBAT_Msk (0x2UL) /*!< CRG_TOP STARTUP_STATUS_REG: SU_NEWBAT (Bitfield-Mask: 0x01) */ -#define CRG_TOP_STARTUP_STATUS_REG_SU_LDO_SUPPLY_VBAT_OK_Pos (2UL) /*!< CRG_TOP STARTUP_STATUS_REG: SU_LDO_SUPPLY_VBAT_OK (Bit 2) */ -#define CRG_TOP_STARTUP_STATUS_REG_SU_LDO_SUPPLY_VBAT_OK_Msk (0x4UL) /*!< CRG_TOP STARTUP_STATUS_REG: SU_LDO_SUPPLY_VBAT_OK (Bitfield-Mask: 0x01) */ -#define CRG_TOP_STARTUP_STATUS_REG_SU_LOD_SUPPLY_USB_OK_Pos (3UL) /*!< CRG_TOP STARTUP_STATUS_REG: SU_LOD_SUPPLY_USB_OK (Bit 3) */ -#define CRG_TOP_STARTUP_STATUS_REG_SU_LOD_SUPPLY_USB_OK_Msk (0x8UL) /*!< CRG_TOP STARTUP_STATUS_REG: SU_LOD_SUPPLY_USB_OK (Bitfield-Mask: 0x01) */ -#define CRG_TOP_STARTUP_STATUS_REG_SU_LDO_CORE_OK_Pos (4UL) /*!< CRG_TOP STARTUP_STATUS_REG: SU_LDO_CORE_OK (Bit 4) */ -#define CRG_TOP_STARTUP_STATUS_REG_SU_LDO_CORE_OK_Msk (0x10UL) /*!< CRG_TOP STARTUP_STATUS_REG: SU_LDO_CORE_OK (Bitfield-Mask: 0x01) */ -#define CRG_TOP_STARTUP_STATUS_REG_SU_LDO_1V8_PA_OK_Pos (5UL) /*!< CRG_TOP STARTUP_STATUS_REG: SU_LDO_1V8_PA_OK (Bit 5) */ -#define CRG_TOP_STARTUP_STATUS_REG_SU_LDO_1V8_PA_OK_Msk (0x20UL) /*!< CRG_TOP STARTUP_STATUS_REG: SU_LDO_1V8_PA_OK (Bitfield-Mask: 0x01) */ -#define CRG_TOP_STARTUP_STATUS_REG_SU_COMP_VDD_HIGH_Pos (6UL) /*!< CRG_TOP STARTUP_STATUS_REG: SU_COMP_VDD_HIGH (Bit 6) */ -#define CRG_TOP_STARTUP_STATUS_REG_SU_COMP_VDD_HIGH_Msk (0x40UL) /*!< CRG_TOP STARTUP_STATUS_REG: SU_COMP_VDD_HIGH (Bitfield-Mask: 0x01) */ -#define CRG_TOP_STARTUP_STATUS_REG_SU_COMP_V33_HIGH_Pos (7UL) /*!< CRG_TOP STARTUP_STATUS_REG: SU_COMP_V33_HIGH (Bit 7) */ -#define CRG_TOP_STARTUP_STATUS_REG_SU_COMP_V33_HIGH_Msk (0x80UL) /*!< CRG_TOP STARTUP_STATUS_REG: SU_COMP_V33_HIGH (Bitfield-Mask: 0x01) */ -#define CRG_TOP_STARTUP_STATUS_REG_SU_COMP_VBUS_HIGH_Pos (8UL) /*!< CRG_TOP STARTUP_STATUS_REG: SU_COMP_VBUS_HIGH (Bit 8) */ -#define CRG_TOP_STARTUP_STATUS_REG_SU_COMP_VBUS_HIGH_Msk (0x100UL) /*!< CRG_TOP STARTUP_STATUS_REG: SU_COMP_VBUS_HIGH (Bitfield-Mask: 0x01) */ -#define CRG_TOP_STARTUP_STATUS_REG_SU_COMP_VBUS_LOW_Pos (9UL) /*!< CRG_TOP STARTUP_STATUS_REG: SU_COMP_VBUS_LOW (Bit 9) */ -#define CRG_TOP_STARTUP_STATUS_REG_SU_COMP_VBUS_LOW_Msk (0x200UL) /*!< CRG_TOP STARTUP_STATUS_REG: SU_COMP_VBUS_LOW (Bitfield-Mask: 0x01) */ -#define CRG_TOP_STARTUP_STATUS_REG_SU_COMP_1V8_PA_HIGH_Pos (10UL) /*!< CRG_TOP STARTUP_STATUS_REG: SU_COMP_1V8_PA_HIGH (Bit 10) */ -#define CRG_TOP_STARTUP_STATUS_REG_SU_COMP_1V8_PA_HIGH_Msk (0x400UL) /*!< CRG_TOP STARTUP_STATUS_REG: SU_COMP_1V8_PA_HIGH (Bitfield-Mask: 0x01) */ -#define CRG_TOP_STARTUP_STATUS_REG_SU_COMP_1V8_FLASH_HIGH_Pos (11UL) /*!< CRG_TOP STARTUP_STATUS_REG: SU_COMP_1V8_FLASH_HIGH (Bit 11) */ -#define CRG_TOP_STARTUP_STATUS_REG_SU_COMP_1V8_FLASH_HIGH_Msk (0x800UL) /*!< CRG_TOP STARTUP_STATUS_REG: SU_COMP_1V8_FLASH_HIGH (Bitfield-Mask: 0x01) */ -#define CRG_TOP_STARTUP_STATUS_REG_SU_LDO_1V8_FLASH_OK_Pos (12UL) /*!< CRG_TOP STARTUP_STATUS_REG: SU_LDO_1V8_FLASH_OK (Bit 12) */ -#define CRG_TOP_STARTUP_STATUS_REG_SU_LDO_1V8_FLASH_OK_Msk (0x1000UL) /*!< CRG_TOP STARTUP_STATUS_REG: SU_LDO_1V8_FLASH_OK (Bitfield-Mask: 0x01) */ -#define CRG_TOP_STARTUP_STATUS_REG_SU_BOD_STATUS_Pos (13UL) /*!< CRG_TOP STARTUP_STATUS_REG: SU_BOD_STATUS (Bit 13) */ -#define CRG_TOP_STARTUP_STATUS_REG_SU_BOD_STATUS_Msk (0xe000UL) /*!< CRG_TOP STARTUP_STATUS_REG: SU_BOD_STATUS (Bitfield-Mask: 0x07) */ - -/* -------------------------- CRG_TOP_VBUS_IRQ_MASK_REG ------------------------- */ -#define CRG_TOP_VBUS_IRQ_MASK_REG_VBUS_IRQ_EN_FALL_Pos (0UL) /*!< CRG_TOP VBUS_IRQ_MASK_REG: VBUS_IRQ_EN_FALL (Bit 0) */ -#define CRG_TOP_VBUS_IRQ_MASK_REG_VBUS_IRQ_EN_FALL_Msk (0x1UL) /*!< CRG_TOP VBUS_IRQ_MASK_REG: VBUS_IRQ_EN_FALL (Bitfield-Mask: 0x01) */ -#define CRG_TOP_VBUS_IRQ_MASK_REG_VBUS_IRQ_EN_RISE_Pos (1UL) /*!< CRG_TOP VBUS_IRQ_MASK_REG: VBUS_IRQ_EN_RISE (Bit 1) */ -#define CRG_TOP_VBUS_IRQ_MASK_REG_VBUS_IRQ_EN_RISE_Msk (0x2UL) /*!< CRG_TOP VBUS_IRQ_MASK_REG: VBUS_IRQ_EN_RISE (Bitfield-Mask: 0x01) */ - -/* ------------------------- CRG_TOP_VBUS_IRQ_CLEAR_REG ------------------------- */ -#define CRG_TOP_VBUS_IRQ_CLEAR_REG_VBUS_IRQ_CLEAR_Pos (0UL) /*!< CRG_TOP VBUS_IRQ_CLEAR_REG: VBUS_IRQ_CLEAR (Bit 0) */ -#define CRG_TOP_VBUS_IRQ_CLEAR_REG_VBUS_IRQ_CLEAR_Msk (0xffffUL) /*!< CRG_TOP VBUS_IRQ_CLEAR_REG: VBUS_IRQ_CLEAR (Bitfield-Mask: 0xffff) */ - -/* ---------------------------- CRG_TOP_BOD_CTRL_REG ---------------------------- */ -#define CRG_TOP_BOD_CTRL_REG_BOD_VDD_TRIM_Pos (0UL) /*!< CRG_TOP BOD_CTRL_REG: BOD_VDD_TRIM (Bit 0) */ -#define CRG_TOP_BOD_CTRL_REG_BOD_VDD_TRIM_Msk (0x3UL) /*!< CRG_TOP BOD_CTRL_REG: BOD_VDD_TRIM (Bitfield-Mask: 0x03) */ -#define CRG_TOP_BOD_CTRL_REG_BOD_1V8_TRIM_Pos (2UL) /*!< CRG_TOP BOD_CTRL_REG: BOD_1V8_TRIM (Bit 2) */ -#define CRG_TOP_BOD_CTRL_REG_BOD_1V8_TRIM_Msk (0xcUL) /*!< CRG_TOP BOD_CTRL_REG: BOD_1V8_TRIM (Bitfield-Mask: 0x03) */ -#define CRG_TOP_BOD_CTRL_REG_BOD_1V4_TRIM_Pos (4UL) /*!< CRG_TOP BOD_CTRL_REG: BOD_1V4_TRIM (Bit 4) */ -#define CRG_TOP_BOD_CTRL_REG_BOD_1V4_TRIM_Msk (0x30UL) /*!< CRG_TOP BOD_CTRL_REG: BOD_1V4_TRIM (Bitfield-Mask: 0x03) */ -#define CRG_TOP_BOD_CTRL_REG_BOD_V33_TRIM_Pos (6UL) /*!< CRG_TOP BOD_CTRL_REG: BOD_V33_TRIM (Bit 6) */ -#define CRG_TOP_BOD_CTRL_REG_BOD_V33_TRIM_Msk (0xc0UL) /*!< CRG_TOP BOD_CTRL_REG: BOD_V33_TRIM (Bitfield-Mask: 0x03) */ -#define CRG_TOP_BOD_CTRL_REG_BOD_VDD_LVL_Pos (8UL) /*!< CRG_TOP BOD_CTRL_REG: BOD_VDD_LVL (Bit 8) */ -#define CRG_TOP_BOD_CTRL_REG_BOD_VDD_LVL_Msk (0x700UL) /*!< CRG_TOP BOD_CTRL_REG: BOD_VDD_LVL (Bitfield-Mask: 0x07) */ - -/* ---------------------------- CRG_TOP_BOD_CTRL2_REG --------------------------- */ -#define CRG_TOP_BOD_CTRL2_REG_BOD_RESET_EN_Pos (0UL) /*!< CRG_TOP BOD_CTRL2_REG: BOD_RESET_EN (Bit 0) */ -#define CRG_TOP_BOD_CTRL2_REG_BOD_RESET_EN_Msk (0x1UL) /*!< CRG_TOP BOD_CTRL2_REG: BOD_RESET_EN (Bitfield-Mask: 0x01) */ -#define CRG_TOP_BOD_CTRL2_REG_BOD_VDD_EN_Pos (1UL) /*!< CRG_TOP BOD_CTRL2_REG: BOD_VDD_EN (Bit 1) */ -#define CRG_TOP_BOD_CTRL2_REG_BOD_VDD_EN_Msk (0x2UL) /*!< CRG_TOP BOD_CTRL2_REG: BOD_VDD_EN (Bitfield-Mask: 0x01) */ -#define CRG_TOP_BOD_CTRL2_REG_BOD_V33_EN_Pos (2UL) /*!< CRG_TOP BOD_CTRL2_REG: BOD_V33_EN (Bit 2) */ -#define CRG_TOP_BOD_CTRL2_REG_BOD_V33_EN_Msk (0x4UL) /*!< CRG_TOP BOD_CTRL2_REG: BOD_V33_EN (Bitfield-Mask: 0x01) */ -#define CRG_TOP_BOD_CTRL2_REG_BOD_1V8_PA_EN_Pos (3UL) /*!< CRG_TOP BOD_CTRL2_REG: BOD_1V8_PA_EN (Bit 3) */ -#define CRG_TOP_BOD_CTRL2_REG_BOD_1V8_PA_EN_Msk (0x8UL) /*!< CRG_TOP BOD_CTRL2_REG: BOD_1V8_PA_EN (Bitfield-Mask: 0x01) */ -#define CRG_TOP_BOD_CTRL2_REG_BOD_1V8_FLASH_EN_Pos (4UL) /*!< CRG_TOP BOD_CTRL2_REG: BOD_1V8_FLASH_EN (Bit 4) */ -#define CRG_TOP_BOD_CTRL2_REG_BOD_1V8_FLASH_EN_Msk (0x10UL) /*!< CRG_TOP BOD_CTRL2_REG: BOD_1V8_FLASH_EN (Bitfield-Mask: 0x01) */ -#define CRG_TOP_BOD_CTRL2_REG_BOD_VBAT_EN_Pos (5UL) /*!< CRG_TOP BOD_CTRL2_REG: BOD_VBAT_EN (Bit 5) */ -#define CRG_TOP_BOD_CTRL2_REG_BOD_VBAT_EN_Msk (0x20UL) /*!< CRG_TOP BOD_CTRL2_REG: BOD_VBAT_EN (Bitfield-Mask: 0x01) */ -#define CRG_TOP_BOD_CTRL2_REG_BOD_V14_EN_Pos (6UL) /*!< CRG_TOP BOD_CTRL2_REG: BOD_V14_EN (Bit 6) */ -#define CRG_TOP_BOD_CTRL2_REG_BOD_V14_EN_Msk (0x40UL) /*!< CRG_TOP BOD_CTRL2_REG: BOD_V14_EN (Bitfield-Mask: 0x01) */ - -/* --------------------------- CRG_TOP_BOD_STATUS_REG --------------------------- */ -#define CRG_TOP_BOD_STATUS_REG_BOD_VDD_LOW_Pos (0UL) /*!< CRG_TOP BOD_STATUS_REG: BOD_VDD_LOW (Bit 0) */ -#define CRG_TOP_BOD_STATUS_REG_BOD_VDD_LOW_Msk (0x1UL) /*!< CRG_TOP BOD_STATUS_REG: BOD_VDD_LOW (Bitfield-Mask: 0x01) */ -#define CRG_TOP_BOD_STATUS_REG_BOD_1V8_PA_LOW_Pos (1UL) /*!< CRG_TOP BOD_STATUS_REG: BOD_1V8_PA_LOW (Bit 1) */ -#define CRG_TOP_BOD_STATUS_REG_BOD_1V8_PA_LOW_Msk (0x2UL) /*!< CRG_TOP BOD_STATUS_REG: BOD_1V8_PA_LOW (Bitfield-Mask: 0x01) */ -#define CRG_TOP_BOD_STATUS_REG_BOD_1V8_FLASH_LOW_Pos (2UL) /*!< CRG_TOP BOD_STATUS_REG: BOD_1V8_FLASH_LOW (Bit 2) */ -#define CRG_TOP_BOD_STATUS_REG_BOD_1V8_FLASH_LOW_Msk (0x4UL) /*!< CRG_TOP BOD_STATUS_REG: BOD_1V8_FLASH_LOW (Bitfield-Mask: 0x01) */ -#define CRG_TOP_BOD_STATUS_REG_BOD_V33_LOW_Pos (3UL) /*!< CRG_TOP BOD_STATUS_REG: BOD_V33_LOW (Bit 3) */ -#define CRG_TOP_BOD_STATUS_REG_BOD_V33_LOW_Msk (0x8UL) /*!< CRG_TOP BOD_STATUS_REG: BOD_V33_LOW (Bitfield-Mask: 0x01) */ -#define CRG_TOP_BOD_STATUS_REG_BOD_VBAT_LOW_Pos (4UL) /*!< CRG_TOP BOD_STATUS_REG: BOD_VBAT_LOW (Bit 4) */ -#define CRG_TOP_BOD_STATUS_REG_BOD_VBAT_LOW_Msk (0x10UL) /*!< CRG_TOP BOD_STATUS_REG: BOD_VBAT_LOW (Bitfield-Mask: 0x01) */ -#define CRG_TOP_BOD_STATUS_REG_BOD_V14_LOW_Pos (5UL) /*!< CRG_TOP BOD_STATUS_REG: BOD_V14_LOW (Bit 5) */ -#define CRG_TOP_BOD_STATUS_REG_BOD_V14_LOW_Msk (0x20UL) /*!< CRG_TOP BOD_STATUS_REG: BOD_V14_LOW (Bitfield-Mask: 0x01) */ - -/* ---------------------------- CRG_TOP_LDO_CTRL1_REG --------------------------- */ -#define CRG_TOP_LDO_CTRL1_REG_LDO_CORE_CURLIM_Pos (0UL) /*!< CRG_TOP LDO_CTRL1_REG: LDO_CORE_CURLIM (Bit 0) */ -#define CRG_TOP_LDO_CTRL1_REG_LDO_CORE_CURLIM_Msk (0x3UL) /*!< CRG_TOP LDO_CTRL1_REG: LDO_CORE_CURLIM (Bitfield-Mask: 0x03) */ -#define CRG_TOP_LDO_CTRL1_REG_LDO_VBAT_RET_LEVEL_Pos (2UL) /*!< CRG_TOP LDO_CTRL1_REG: LDO_VBAT_RET_LEVEL (Bit 2) */ -#define CRG_TOP_LDO_CTRL1_REG_LDO_VBAT_RET_LEVEL_Msk (0xcUL) /*!< CRG_TOP LDO_CTRL1_REG: LDO_VBAT_RET_LEVEL (Bitfield-Mask: 0x03) */ -#define CRG_TOP_LDO_CTRL1_REG_LDO_SUPPLY_VBAT_LEVEL_Pos (4UL) /*!< CRG_TOP LDO_CTRL1_REG: LDO_SUPPLY_VBAT_LEVEL (Bit 4) */ -#define CRG_TOP_LDO_CTRL1_REG_LDO_SUPPLY_VBAT_LEVEL_Msk (0x30UL) /*!< CRG_TOP LDO_CTRL1_REG: LDO_SUPPLY_VBAT_LEVEL (Bitfield-Mask: 0x03) */ -#define CRG_TOP_LDO_CTRL1_REG_LDO_SUPPLY_USB_LEVEL_Pos (6UL) /*!< CRG_TOP LDO_CTRL1_REG: LDO_SUPPLY_USB_LEVEL (Bit 6) */ -#define CRG_TOP_LDO_CTRL1_REG_LDO_SUPPLY_USB_LEVEL_Msk (0xc0UL) /*!< CRG_TOP LDO_CTRL1_REG: LDO_SUPPLY_USB_LEVEL (Bitfield-Mask: 0x03) */ -#define CRG_TOP_LDO_CTRL1_REG_LDO_CORE_SETVDD_Pos (8UL) /*!< CRG_TOP LDO_CTRL1_REG: LDO_CORE_SETVDD (Bit 8) */ -#define CRG_TOP_LDO_CTRL1_REG_LDO_CORE_SETVDD_Msk (0x700UL) /*!< CRG_TOP LDO_CTRL1_REG: LDO_CORE_SETVDD (Bitfield-Mask: 0x07) */ -#define CRG_TOP_LDO_CTRL1_REG_LDO_RADIO_SETVDD_Pos (11UL) /*!< CRG_TOP LDO_CTRL1_REG: LDO_RADIO_SETVDD (Bit 11) */ -#define CRG_TOP_LDO_CTRL1_REG_LDO_RADIO_SETVDD_Msk (0x3800UL) /*!< CRG_TOP LDO_CTRL1_REG: LDO_RADIO_SETVDD (Bitfield-Mask: 0x07) */ -#define CRG_TOP_LDO_CTRL1_REG_LDO_RADIO_ENABLE_Pos (14UL) /*!< CRG_TOP LDO_CTRL1_REG: LDO_RADIO_ENABLE (Bit 14) */ -#define CRG_TOP_LDO_CTRL1_REG_LDO_RADIO_ENABLE_Msk (0x4000UL) /*!< CRG_TOP LDO_CTRL1_REG: LDO_RADIO_ENABLE (Bitfield-Mask: 0x01) */ - -/* ---------------------------- CRG_TOP_LDO_CTRL2_REG --------------------------- */ -#define CRG_TOP_LDO_CTRL2_REG_LDO_1V2_ON_Pos (0UL) /*!< CRG_TOP LDO_CTRL2_REG: LDO_1V2_ON (Bit 0) */ -#define CRG_TOP_LDO_CTRL2_REG_LDO_1V2_ON_Msk (0x1UL) /*!< CRG_TOP LDO_CTRL2_REG: LDO_1V2_ON (Bitfield-Mask: 0x01) */ -#define CRG_TOP_LDO_CTRL2_REG_LDO_3V3_ON_Pos (1UL) /*!< CRG_TOP LDO_CTRL2_REG: LDO_3V3_ON (Bit 1) */ -#define CRG_TOP_LDO_CTRL2_REG_LDO_3V3_ON_Msk (0x2UL) /*!< CRG_TOP LDO_CTRL2_REG: LDO_3V3_ON (Bitfield-Mask: 0x01) */ -#define CRG_TOP_LDO_CTRL2_REG_LDO_1V8_FLASH_ON_Pos (2UL) /*!< CRG_TOP LDO_CTRL2_REG: LDO_1V8_FLASH_ON (Bit 2) */ -#define CRG_TOP_LDO_CTRL2_REG_LDO_1V8_FLASH_ON_Msk (0x4UL) /*!< CRG_TOP LDO_CTRL2_REG: LDO_1V8_FLASH_ON (Bitfield-Mask: 0x01) */ -#define CRG_TOP_LDO_CTRL2_REG_LDO_1V8_PA_ON_Pos (3UL) /*!< CRG_TOP LDO_CTRL2_REG: LDO_1V8_PA_ON (Bit 3) */ -#define CRG_TOP_LDO_CTRL2_REG_LDO_1V8_PA_ON_Msk (0x8UL) /*!< CRG_TOP LDO_CTRL2_REG: LDO_1V8_PA_ON (Bitfield-Mask: 0x01) */ -#define CRG_TOP_LDO_CTRL2_REG_LDO_VBAT_RET_DISABLE_Pos (4UL) /*!< CRG_TOP LDO_CTRL2_REG: LDO_VBAT_RET_DISABLE (Bit 4) */ -#define CRG_TOP_LDO_CTRL2_REG_LDO_VBAT_RET_DISABLE_Msk (0x10UL) /*!< CRG_TOP LDO_CTRL2_REG: LDO_VBAT_RET_DISABLE (Bitfield-Mask: 0x01) */ -#define CRG_TOP_LDO_CTRL2_REG_LDO_1V8_FLASH_RET_DISABLE_Pos (5UL) /*!< CRG_TOP LDO_CTRL2_REG: LDO_1V8_FLASH_RET_DISABLE (Bit 5) */ -#define CRG_TOP_LDO_CTRL2_REG_LDO_1V8_FLASH_RET_DISABLE_Msk (0x20UL) /*!< CRG_TOP LDO_CTRL2_REG: LDO_1V8_FLASH_RET_DISABLE (Bitfield-Mask: 0x01) */ -#define CRG_TOP_LDO_CTRL2_REG_LDO_1V8_PA_RET_DISABLE_Pos (6UL) /*!< CRG_TOP LDO_CTRL2_REG: LDO_1V8_PA_RET_DISABLE (Bit 6) */ -#define CRG_TOP_LDO_CTRL2_REG_LDO_1V8_PA_RET_DISABLE_Msk (0x40UL) /*!< CRG_TOP LDO_CTRL2_REG: LDO_1V8_PA_RET_DISABLE (Bitfield-Mask: 0x01) */ - -/* --------------------------- CRG_TOP_SLEEP_TIMER_REG -------------------------- */ -#define CRG_TOP_SLEEP_TIMER_REG_SLEEP_TIMER_Pos (0UL) /*!< CRG_TOP SLEEP_TIMER_REG: SLEEP_TIMER (Bit 0) */ -#define CRG_TOP_SLEEP_TIMER_REG_SLEEP_TIMER_Msk (0xffffUL) /*!< CRG_TOP SLEEP_TIMER_REG: SLEEP_TIMER (Bitfield-Mask: 0xffff) */ - -/* --------------------------- CRG_TOP_POWER_CTRL_REG --------------------------- */ -#define CRG_TOP_POWER_CTRL_REG_TRIM_NEWBAT_Pos (0UL) /*!< CRG_TOP POWER_CTRL_REG: TRIM_NEWBAT (Bit 0) */ -#define CRG_TOP_POWER_CTRL_REG_TRIM_NEWBAT_Msk (0x7UL) /*!< CRG_TOP POWER_CTRL_REG: TRIM_NEWBAT (Bitfield-Mask: 0x07) */ - -/* -------------------------- CRG_TOP_POR_VBAT_CTRL_REG ------------------------- */ -#define CRG_TOP_POR_VBAT_CTRL_REG_POR_VBAT_THRES_LOW_Pos (0UL) /*!< CRG_TOP POR_VBAT_CTRL_REG: POR_VBAT_THRES_LOW (Bit 0) */ -#define CRG_TOP_POR_VBAT_CTRL_REG_POR_VBAT_THRES_LOW_Msk (0xfUL) /*!< CRG_TOP POR_VBAT_CTRL_REG: POR_VBAT_THRES_LOW (Bitfield-Mask: 0x0f) */ -#define CRG_TOP_POR_VBAT_CTRL_REG_POR_VBAT_THRES_HIGH_Pos (4UL) /*!< CRG_TOP POR_VBAT_CTRL_REG: POR_VBAT_THRES_HIGH (Bit 4) */ -#define CRG_TOP_POR_VBAT_CTRL_REG_POR_VBAT_THRES_HIGH_Msk (0xf0UL) /*!< CRG_TOP POR_VBAT_CTRL_REG: POR_VBAT_THRES_HIGH (Bitfield-Mask: 0x0f) */ -#define CRG_TOP_POR_VBAT_CTRL_REG_POR_VBAT_HYST_LOW_Pos (8UL) /*!< CRG_TOP POR_VBAT_CTRL_REG: POR_VBAT_HYST_LOW (Bit 8) */ -#define CRG_TOP_POR_VBAT_CTRL_REG_POR_VBAT_HYST_LOW_Msk (0xf00UL) /*!< CRG_TOP POR_VBAT_CTRL_REG: POR_VBAT_HYST_LOW (Bitfield-Mask: 0x0f) */ -#define CRG_TOP_POR_VBAT_CTRL_REG_POR_VBAT_ENABLE_Pos (12UL) /*!< CRG_TOP POR_VBAT_CTRL_REG: POR_VBAT_ENABLE (Bit 12) */ -#define CRG_TOP_POR_VBAT_CTRL_REG_POR_VBAT_ENABLE_Msk (0x1000UL) /*!< CRG_TOP POR_VBAT_CTRL_REG: POR_VBAT_ENABLE (Bitfield-Mask: 0x01) */ -#define CRG_TOP_POR_VBAT_CTRL_REG_POR_VBAT_MASK_N_Pos (13UL) /*!< CRG_TOP POR_VBAT_CTRL_REG: POR_VBAT_MASK_N (Bit 13) */ -#define CRG_TOP_POR_VBAT_CTRL_REG_POR_VBAT_MASK_N_Msk (0x2000UL) /*!< CRG_TOP POR_VBAT_CTRL_REG: POR_VBAT_MASK_N (Bitfield-Mask: 0x01) */ - -/* -------------------------- CRG_TOP_XTALRDY_CTRL_REG -------------------------- */ -#define CRG_TOP_XTALRDY_CTRL_REG_XTALRDY_CNT_Pos (0UL) /*!< CRG_TOP XTALRDY_CTRL_REG: XTALRDY_CNT (Bit 0) */ -#define CRG_TOP_XTALRDY_CTRL_REG_XTALRDY_CNT_Msk (0xffUL) /*!< CRG_TOP XTALRDY_CTRL_REG: XTALRDY_CNT (Bitfield-Mask: 0xff) */ - -/* -------------------------- CRG_TOP_XTALRDY_STAT_REG -------------------------- */ -#define CRG_TOP_XTALRDY_STAT_REG_XTALRDY_STAT_Pos (0UL) /*!< CRG_TOP XTALRDY_STAT_REG: XTALRDY_STAT (Bit 0) */ -#define CRG_TOP_XTALRDY_STAT_REG_XTALRDY_STAT_Msk (0xffUL) /*!< CRG_TOP XTALRDY_STAT_REG: XTALRDY_STAT (Bitfield-Mask: 0xff) */ - -/* ---------------------------- CRG_TOP_LDO_CTRL3_REG --------------------------- */ -#define CRG_TOP_LDO_CTRL3_REG_LDO_VBAT_RET_ENABLE_Pos (0UL) /*!< CRG_TOP LDO_CTRL3_REG: LDO_VBAT_RET_ENABLE (Bit 0) */ -#define CRG_TOP_LDO_CTRL3_REG_LDO_VBAT_RET_ENABLE_Msk (0x1UL) /*!< CRG_TOP LDO_CTRL3_REG: LDO_VBAT_RET_ENABLE (Bitfield-Mask: 0x01) */ -#define CRG_TOP_LDO_CTRL3_REG_LDO_VBAT_RET_VREF_HOLD_Pos (1UL) /*!< CRG_TOP LDO_CTRL3_REG: LDO_VBAT_RET_VREF_HOLD (Bit 1) */ -#define CRG_TOP_LDO_CTRL3_REG_LDO_VBAT_RET_VREF_HOLD_Msk (0x2UL) /*!< CRG_TOP LDO_CTRL3_REG: LDO_VBAT_RET_VREF_HOLD (Bitfield-Mask: 0x01) */ -#define CRG_TOP_LDO_CTRL3_REG_LDO_1V8_FLASH_RET_ENABLE_Pos (2UL) /*!< CRG_TOP LDO_CTRL3_REG: LDO_1V8_FLASH_RET_ENABLE (Bit 2) */ -#define CRG_TOP_LDO_CTRL3_REG_LDO_1V8_FLASH_RET_ENABLE_Msk (0x4UL) /*!< CRG_TOP LDO_CTRL3_REG: LDO_1V8_FLASH_RET_ENABLE (Bitfield-Mask: 0x01) */ -#define CRG_TOP_LDO_CTRL3_REG_LDO_1V8_FLASH_RET_VREF_HOLD_Pos (3UL) /*!< CRG_TOP LDO_CTRL3_REG: LDO_1V8_FLASH_RET_VREF_HOLD (Bit 3) */ -#define CRG_TOP_LDO_CTRL3_REG_LDO_1V8_FLASH_RET_VREF_HOLD_Msk (0x8UL) /*!< CRG_TOP LDO_CTRL3_REG: LDO_1V8_FLASH_RET_VREF_HOLD (Bitfield-Mask: 0x01) */ -#define CRG_TOP_LDO_CTRL3_REG_LDO_1V8_PA_RET_ENABLE_Pos (4UL) /*!< CRG_TOP LDO_CTRL3_REG: LDO_1V8_PA_RET_ENABLE (Bit 4) */ -#define CRG_TOP_LDO_CTRL3_REG_LDO_1V8_PA_RET_ENABLE_Msk (0x10UL) /*!< CRG_TOP LDO_CTRL3_REG: LDO_1V8_PA_RET_ENABLE (Bitfield-Mask: 0x01) */ -#define CRG_TOP_LDO_CTRL3_REG_LDO_1V8_PA_RET_VREF_HOLD_Pos (5UL) /*!< CRG_TOP LDO_CTRL3_REG: LDO_1V8_PA_RET_VREF_HOLD (Bit 5) */ -#define CRG_TOP_LDO_CTRL3_REG_LDO_1V8_PA_RET_VREF_HOLD_Msk (0x20UL) /*!< CRG_TOP LDO_CTRL3_REG: LDO_1V8_PA_RET_VREF_HOLD (Bitfield-Mask: 0x01) */ - -/* -------------------------- CRG_TOP_XTAL16M_CTRL_REG -------------------------- */ -#define CRG_TOP_XTAL16M_CTRL_REG_XTAL16M_FREQ_TRIM_SW2_AMP_Pos (0UL) /*!< CRG_TOP XTAL16M_CTRL_REG: XTAL16M_FREQ_TRIM_SW2_AMP (Bit 0) */ -#define CRG_TOP_XTAL16M_CTRL_REG_XTAL16M_FREQ_TRIM_SW2_AMP_Msk (0x7UL) /*!< CRG_TOP XTAL16M_CTRL_REG: XTAL16M_FREQ_TRIM_SW2_AMP (Bitfield-Mask: 0x07) */ -#define CRG_TOP_XTAL16M_CTRL_REG_XTAL16M_AMP_REG_SIG_SEL_Pos (3UL) /*!< CRG_TOP XTAL16M_CTRL_REG: XTAL16M_AMP_REG_SIG_SEL (Bit 3) */ -#define CRG_TOP_XTAL16M_CTRL_REG_XTAL16M_AMP_REG_SIG_SEL_Msk (0x8UL) /*!< CRG_TOP XTAL16M_CTRL_REG: XTAL16M_AMP_REG_SIG_SEL (Bitfield-Mask: 0x01) */ -#define CRG_TOP_XTAL16M_CTRL_REG_XTAL16M_TST_AON_Pos (4UL) /*!< CRG_TOP XTAL16M_CTRL_REG: XTAL16M_TST_AON (Bit 4) */ -#define CRG_TOP_XTAL16M_CTRL_REG_XTAL16M_TST_AON_Msk (0x30UL) /*!< CRG_TOP XTAL16M_CTRL_REG: XTAL16M_TST_AON (Bitfield-Mask: 0x03) */ -#define CRG_TOP_XTAL16M_CTRL_REG_XTAL16M_SH_OVERRULE_Pos (6UL) /*!< CRG_TOP XTAL16M_CTRL_REG: XTAL16M_SH_OVERRULE (Bit 6) */ -#define CRG_TOP_XTAL16M_CTRL_REG_XTAL16M_SH_OVERRULE_Msk (0xc0UL) /*!< CRG_TOP XTAL16M_CTRL_REG: XTAL16M_SH_OVERRULE (Bitfield-Mask: 0x03) */ -#define CRG_TOP_XTAL16M_CTRL_REG_XTAL16M_ENABLE_ZERO_Pos (8UL) /*!< CRG_TOP XTAL16M_CTRL_REG: XTAL16M_ENABLE_ZERO (Bit 8) */ -#define CRG_TOP_XTAL16M_CTRL_REG_XTAL16M_ENABLE_ZERO_Msk (0x100UL) /*!< CRG_TOP XTAL16M_CTRL_REG: XTAL16M_ENABLE_ZERO (Bitfield-Mask: 0x01) */ - -/* -------------------------- CRG_TOP_XTAL16M_START_REG ------------------------- */ -#define CRG_TOP_XTAL16M_START_REG_FINE_ADJ_Pos (0UL) /*!< CRG_TOP XTAL16M_START_REG: FINE_ADJ (Bit 0) */ -#define CRG_TOP_XTAL16M_START_REG_FINE_ADJ_Msk (0xffUL) /*!< CRG_TOP XTAL16M_START_REG: FINE_ADJ (Bitfield-Mask: 0xff) */ -#define CRG_TOP_XTAL16M_START_REG_COARSE_ADJ_Pos (8UL) /*!< CRG_TOP XTAL16M_START_REG: COARSE_ADJ (Bit 8) */ -#define CRG_TOP_XTAL16M_START_REG_COARSE_ADJ_Msk (0x700UL) /*!< CRG_TOP XTAL16M_START_REG: COARSE_ADJ (Bitfield-Mask: 0x07) */ - -/* -------------------------- CRG_TOP_XTAL16M_RAMP_REG -------------------------- */ -#define CRG_TOP_XTAL16M_RAMP_REG_FINE_ADJ_Pos (0UL) /*!< CRG_TOP XTAL16M_RAMP_REG: FINE_ADJ (Bit 0) */ -#define CRG_TOP_XTAL16M_RAMP_REG_FINE_ADJ_Msk (0xffUL) /*!< CRG_TOP XTAL16M_RAMP_REG: FINE_ADJ (Bitfield-Mask: 0xff) */ -#define CRG_TOP_XTAL16M_RAMP_REG_COARSE_ADJ_Pos (8UL) /*!< CRG_TOP XTAL16M_RAMP_REG: COARSE_ADJ (Bit 8) */ -#define CRG_TOP_XTAL16M_RAMP_REG_COARSE_ADJ_Msk (0x700UL) /*!< CRG_TOP XTAL16M_RAMP_REG: COARSE_ADJ (Bitfield-Mask: 0x07) */ - -/* ------------------------- CRG_TOP_XTAL16M_TRSTAT_REG ------------------------- */ -#define CRG_TOP_XTAL16M_TRSTAT_REG_XTAL16M_TRSTAT_Pos (0UL) /*!< CRG_TOP XTAL16M_TRSTAT_REG: XTAL16M_TRSTAT (Bit 0) */ -#define CRG_TOP_XTAL16M_TRSTAT_REG_XTAL16M_TRSTAT_Msk (0x7fffUL) /*!< CRG_TOP XTAL16M_TRSTAT_REG: XTAL16M_TRSTAT (Bitfield-Mask: 0x7fff) */ - -/* --------------------------- CRG_TOP_RESET_STAT_REG --------------------------- */ -#define CRG_TOP_RESET_STAT_REG_PORESET_STAT_Pos (0UL) /*!< CRG_TOP RESET_STAT_REG: PORESET_STAT (Bit 0) */ -#define CRG_TOP_RESET_STAT_REG_PORESET_STAT_Msk (0x1UL) /*!< CRG_TOP RESET_STAT_REG: PORESET_STAT (Bitfield-Mask: 0x01) */ -#define CRG_TOP_RESET_STAT_REG_HWRESET_STAT_Pos (1UL) /*!< CRG_TOP RESET_STAT_REG: HWRESET_STAT (Bit 1) */ -#define CRG_TOP_RESET_STAT_REG_HWRESET_STAT_Msk (0x2UL) /*!< CRG_TOP RESET_STAT_REG: HWRESET_STAT (Bitfield-Mask: 0x01) */ -#define CRG_TOP_RESET_STAT_REG_SWRESET_STAT_Pos (2UL) /*!< CRG_TOP RESET_STAT_REG: SWRESET_STAT (Bit 2) */ -#define CRG_TOP_RESET_STAT_REG_SWRESET_STAT_Msk (0x4UL) /*!< CRG_TOP RESET_STAT_REG: SWRESET_STAT (Bitfield-Mask: 0x01) */ -#define CRG_TOP_RESET_STAT_REG_WDOGRESET_STAT_Pos (3UL) /*!< CRG_TOP RESET_STAT_REG: WDOGRESET_STAT (Bit 3) */ -#define CRG_TOP_RESET_STAT_REG_WDOGRESET_STAT_Msk (0x8UL) /*!< CRG_TOP RESET_STAT_REG: WDOGRESET_STAT (Bitfield-Mask: 0x01) */ -#define CRG_TOP_RESET_STAT_REG_SWD_HWRESET_STAT_Pos (4UL) /*!< CRG_TOP RESET_STAT_REG: SWD_HWRESET_STAT (Bit 4) */ -#define CRG_TOP_RESET_STAT_REG_SWD_HWRESET_STAT_Msk (0x10UL) /*!< CRG_TOP RESET_STAT_REG: SWD_HWRESET_STAT (Bitfield-Mask: 0x01) */ - -/* --------------------------- CRG_TOP_FORCE_SLEEP_REG -------------------------- */ -#define CRG_TOP_FORCE_SLEEP_REG_FORCE_FTDF_SLEEP_Pos (0UL) /*!< CRG_TOP FORCE_SLEEP_REG: FORCE_FTDF_SLEEP (Bit 0) */ -#define CRG_TOP_FORCE_SLEEP_REG_FORCE_FTDF_SLEEP_Msk (0x1UL) /*!< CRG_TOP FORCE_SLEEP_REG: FORCE_FTDF_SLEEP (Bitfield-Mask: 0x01) */ -#define CRG_TOP_FORCE_SLEEP_REG_FORCE_BLE_SLEEP_Pos (1UL) /*!< CRG_TOP FORCE_SLEEP_REG: FORCE_BLE_SLEEP (Bit 1) */ -#define CRG_TOP_FORCE_SLEEP_REG_FORCE_BLE_SLEEP_Msk (0x2UL) /*!< CRG_TOP FORCE_SLEEP_REG: FORCE_BLE_SLEEP (Bitfield-Mask: 0x01) */ - -/* -------------------------- CRG_TOP_LDOS_DISABLE_REG -------------------------- */ -#define CRG_TOP_LDOS_DISABLE_REG_LDOS_DISABLE_Pos (0UL) /*!< CRG_TOP LDOS_DISABLE_REG: LDOS_DISABLE (Bit 0) */ -#define CRG_TOP_LDOS_DISABLE_REG_LDOS_DISABLE_Msk (0x1UL) /*!< CRG_TOP LDOS_DISABLE_REG: LDOS_DISABLE (Bitfield-Mask: 0x01) */ - -/* ---------------------------- CRG_TOP_AON_SPARE_REG --------------------------- */ -#define CRG_TOP_AON_SPARE_REG_OSC16_HOLD_AMP_REG_Pos (0UL) /*!< CRG_TOP AON_SPARE_REG: OSC16_HOLD_AMP_REG (Bit 0) */ -#define CRG_TOP_AON_SPARE_REG_OSC16_HOLD_AMP_REG_Msk (0x1UL) /*!< CRG_TOP AON_SPARE_REG: OSC16_HOLD_AMP_REG (Bitfield-Mask: 0x01) */ -#define CRG_TOP_AON_SPARE_REG_OSC16_SH_DISABLE_Pos (1UL) /*!< CRG_TOP AON_SPARE_REG: OSC16_SH_DISABLE (Bit 1) */ -#define CRG_TOP_AON_SPARE_REG_OSC16_SH_DISABLE_Msk (0x2UL) /*!< CRG_TOP AON_SPARE_REG: OSC16_SH_DISABLE (Bitfield-Mask: 0x01) */ -#define CRG_TOP_AON_SPARE_REG_EN_BATSYS_RET_Pos (2UL) /*!< CRG_TOP AON_SPARE_REG: EN_BATSYS_RET (Bit 2) */ -#define CRG_TOP_AON_SPARE_REG_EN_BATSYS_RET_Msk (0x4UL) /*!< CRG_TOP AON_SPARE_REG: EN_BATSYS_RET (Bitfield-Mask: 0x01) */ -#define CRG_TOP_AON_SPARE_REG_EN_BUSSYS_RET_Pos (3UL) /*!< CRG_TOP AON_SPARE_REG: EN_BUSSYS_RET (Bit 3) */ -#define CRG_TOP_AON_SPARE_REG_EN_BUSSYS_RET_Msk (0x8UL) /*!< CRG_TOP AON_SPARE_REG: EN_BUSSYS_RET (Bitfield-Mask: 0x01) */ - -/* --------------------------- CRG_TOP_SECURE_BOOT_REG -------------------------- */ -#define CRG_TOP_SECURE_BOOT_REG_SECURE_BOOT_Pos (0UL) /*!< CRG_TOP SECURE_BOOT_REG: SECURE_BOOT (Bit 0) */ -#define CRG_TOP_SECURE_BOOT_REG_SECURE_BOOT_Msk (0x1UL) /*!< CRG_TOP SECURE_BOOT_REG: SECURE_BOOT (Bitfield-Mask: 0x01) */ -#define CRG_TOP_SECURE_BOOT_REG_FORCE_DEBUGGER_OFF_Pos (1UL) /*!< CRG_TOP SECURE_BOOT_REG: FORCE_DEBUGGER_OFF (Bit 1) */ -#define CRG_TOP_SECURE_BOOT_REG_FORCE_DEBUGGER_OFF_Msk (0x2UL) /*!< CRG_TOP SECURE_BOOT_REG: FORCE_DEBUGGER_OFF (Bitfield-Mask: 0x01) */ - -/* ------------------------- CRG_TOP_PMU_RESET_RAIL_REG ------------------------- */ -#define CRG_TOP_PMU_RESET_RAIL_REG_RESET_V14_Pos (0UL) /*!< CRG_TOP PMU_RESET_RAIL_REG: RESET_V14 (Bit 0) */ -#define CRG_TOP_PMU_RESET_RAIL_REG_RESET_V14_Msk (0x1UL) /*!< CRG_TOP PMU_RESET_RAIL_REG: RESET_V14 (Bitfield-Mask: 0x01) */ -#define CRG_TOP_PMU_RESET_RAIL_REG_RESET_V18_Pos (1UL) /*!< CRG_TOP PMU_RESET_RAIL_REG: RESET_V18 (Bit 1) */ -#define CRG_TOP_PMU_RESET_RAIL_REG_RESET_V18_Msk (0x2UL) /*!< CRG_TOP PMU_RESET_RAIL_REG: RESET_V18 (Bitfield-Mask: 0x01) */ -#define CRG_TOP_PMU_RESET_RAIL_REG_RESET_V18P_Pos (2UL) /*!< CRG_TOP PMU_RESET_RAIL_REG: RESET_V18P (Bit 2) */ -#define CRG_TOP_PMU_RESET_RAIL_REG_RESET_V18P_Msk (0x4UL) /*!< CRG_TOP PMU_RESET_RAIL_REG: RESET_V18P (Bitfield-Mask: 0x01) */ - -/* ------------------------- CRG_TOP_DISCHARGE_RAIL_REG ------------------------- */ -#define CRG_TOP_DISCHARGE_RAIL_REG_RESET_V14_Pos (0UL) /*!< CRG_TOP DISCHARGE_RAIL_REG: RESET_V14 (Bit 0) */ -#define CRG_TOP_DISCHARGE_RAIL_REG_RESET_V14_Msk (0x1UL) /*!< CRG_TOP DISCHARGE_RAIL_REG: RESET_V14 (Bitfield-Mask: 0x01) */ -#define CRG_TOP_DISCHARGE_RAIL_REG_RESET_V18_Pos (1UL) /*!< CRG_TOP DISCHARGE_RAIL_REG: RESET_V18 (Bit 1) */ -#define CRG_TOP_DISCHARGE_RAIL_REG_RESET_V18_Msk (0x2UL) /*!< CRG_TOP DISCHARGE_RAIL_REG: RESET_V18 (Bitfield-Mask: 0x01) */ -#define CRG_TOP_DISCHARGE_RAIL_REG_RESET_V18P_Pos (2UL) /*!< CRG_TOP DISCHARGE_RAIL_REG: RESET_V18P (Bit 2) */ -#define CRG_TOP_DISCHARGE_RAIL_REG_RESET_V18P_Msk (0x4UL) /*!< CRG_TOP DISCHARGE_RAIL_REG: RESET_V18P (Bitfield-Mask: 0x01) */ - - -/* ================================================================================ */ -/* ================ struct 'DCDC' Position & Mask ================ */ -/* ================================================================================ */ - - -/* ---------------------------- DCDC_DCDC_CTRL_0_REG ---------------------------- */ -#define DCDC_DCDC_CTRL_0_REG_DCDC_MODE_Pos (0UL) /*!< DCDC DCDC_CTRL_0_REG: DCDC_MODE (Bit 0) */ -#define DCDC_DCDC_CTRL_0_REG_DCDC_MODE_Msk (0x3UL) /*!< DCDC DCDC_CTRL_0_REG: DCDC_MODE (Bitfield-Mask: 0x03) */ -#define DCDC_DCDC_CTRL_0_REG_DCDC_FW_ENABLE_Pos (2UL) /*!< DCDC DCDC_CTRL_0_REG: DCDC_FW_ENABLE (Bit 2) */ -#define DCDC_DCDC_CTRL_0_REG_DCDC_FW_ENABLE_Msk (0x4UL) /*!< DCDC DCDC_CTRL_0_REG: DCDC_FW_ENABLE (Bitfield-Mask: 0x01) */ -#define DCDC_DCDC_CTRL_0_REG_DCDC_PRIORITY_Pos (3UL) /*!< DCDC DCDC_CTRL_0_REG: DCDC_PRIORITY (Bit 3) */ -#define DCDC_DCDC_CTRL_0_REG_DCDC_PRIORITY_Msk (0x7f8UL) /*!< DCDC DCDC_CTRL_0_REG: DCDC_PRIORITY (Bitfield-Mask: 0xff) */ -#define DCDC_DCDC_CTRL_0_REG_DCDC_IDLE_CLK_DIV_Pos (11UL) /*!< DCDC DCDC_CTRL_0_REG: DCDC_IDLE_CLK_DIV (Bit 11) */ -#define DCDC_DCDC_CTRL_0_REG_DCDC_IDLE_CLK_DIV_Msk (0x1800UL) /*!< DCDC DCDC_CTRL_0_REG: DCDC_IDLE_CLK_DIV (Bitfield-Mask: 0x03) */ -#define DCDC_DCDC_CTRL_0_REG_DCDC_BROWNOUT_LV_MODE_Pos (13UL) /*!< DCDC DCDC_CTRL_0_REG: DCDC_BROWNOUT_LV_MODE (Bit 13) */ -#define DCDC_DCDC_CTRL_0_REG_DCDC_BROWNOUT_LV_MODE_Msk (0x2000UL) /*!< DCDC DCDC_CTRL_0_REG: DCDC_BROWNOUT_LV_MODE (Bitfield-Mask: 0x01) */ -#define DCDC_DCDC_CTRL_0_REG_DCDC_FAST_STARTUP_Pos (14UL) /*!< DCDC DCDC_CTRL_0_REG: DCDC_FAST_STARTUP (Bit 14) */ -#define DCDC_DCDC_CTRL_0_REG_DCDC_FAST_STARTUP_Msk (0x4000UL) /*!< DCDC DCDC_CTRL_0_REG: DCDC_FAST_STARTUP (Bitfield-Mask: 0x01) */ - -/* ---------------------------- DCDC_DCDC_CTRL_1_REG ---------------------------- */ -#define DCDC_DCDC_CTRL_1_REG_DCDC_TIMEOUT_Pos (0UL) /*!< DCDC DCDC_CTRL_1_REG: DCDC_TIMEOUT (Bit 0) */ -#define DCDC_DCDC_CTRL_1_REG_DCDC_TIMEOUT_Msk (0x1fUL) /*!< DCDC DCDC_CTRL_1_REG: DCDC_TIMEOUT (Bitfield-Mask: 0x1f) */ -#define DCDC_DCDC_CTRL_1_REG_DCDC_GLOBAL_MAX_IDLE_TIME_Pos (5UL) /*!< DCDC DCDC_CTRL_1_REG: DCDC_GLOBAL_MAX_IDLE_TIME (Bit 5) */ -#define DCDC_DCDC_CTRL_1_REG_DCDC_GLOBAL_MAX_IDLE_TIME_Msk (0x7e0UL) /*!< DCDC DCDC_CTRL_1_REG: DCDC_GLOBAL_MAX_IDLE_TIME (Bitfield-Mask: 0x3f) */ -#define DCDC_DCDC_CTRL_1_REG_DCDC_STARTUP_DELAY_Pos (11UL) /*!< DCDC DCDC_CTRL_1_REG: DCDC_STARTUP_DELAY (Bit 11) */ -#define DCDC_DCDC_CTRL_1_REG_DCDC_STARTUP_DELAY_Msk (0xf800UL) /*!< DCDC DCDC_CTRL_1_REG: DCDC_STARTUP_DELAY (Bitfield-Mask: 0x1f) */ - -/* ---------------------------- DCDC_DCDC_CTRL_2_REG ---------------------------- */ -#define DCDC_DCDC_CTRL_2_REG_DCDC_HSGND_TRIM_Pos (0UL) /*!< DCDC DCDC_CTRL_2_REG: DCDC_HSGND_TRIM (Bit 0) */ -#define DCDC_DCDC_CTRL_2_REG_DCDC_HSGND_TRIM_Msk (0x7UL) /*!< DCDC DCDC_CTRL_2_REG: DCDC_HSGND_TRIM (Bitfield-Mask: 0x07) */ -#define DCDC_DCDC_CTRL_2_REG_DCDC_LSSUP_TRIM_Pos (3UL) /*!< DCDC DCDC_CTRL_2_REG: DCDC_LSSUP_TRIM (Bit 3) */ -#define DCDC_DCDC_CTRL_2_REG_DCDC_LSSUP_TRIM_Msk (0x38UL) /*!< DCDC DCDC_CTRL_2_REG: DCDC_LSSUP_TRIM (Bitfield-Mask: 0x07) */ -#define DCDC_DCDC_CTRL_2_REG_DCDC_TUNE_Pos (6UL) /*!< DCDC DCDC_CTRL_2_REG: DCDC_TUNE (Bit 6) */ -#define DCDC_DCDC_CTRL_2_REG_DCDC_TUNE_Msk (0xc0UL) /*!< DCDC DCDC_CTRL_2_REG: DCDC_TUNE (Bitfield-Mask: 0x03) */ -#define DCDC_DCDC_CTRL_2_REG_DCDC_TIMEOUT_IRQ_RES_Pos (8UL) /*!< DCDC DCDC_CTRL_2_REG: DCDC_TIMEOUT_IRQ_RES (Bit 8) */ -#define DCDC_DCDC_CTRL_2_REG_DCDC_TIMEOUT_IRQ_RES_Msk (0xf00UL) /*!< DCDC DCDC_CTRL_2_REG: DCDC_TIMEOUT_IRQ_RES (Bitfield-Mask: 0x0f) */ -#define DCDC_DCDC_CTRL_2_REG_DCDC_TIMEOUT_IRQ_TRIG_Pos (12UL) /*!< DCDC DCDC_CTRL_2_REG: DCDC_TIMEOUT_IRQ_TRIG (Bit 12) */ -#define DCDC_DCDC_CTRL_2_REG_DCDC_TIMEOUT_IRQ_TRIG_Msk (0xf000UL) /*!< DCDC DCDC_CTRL_2_REG: DCDC_TIMEOUT_IRQ_TRIG (Bitfield-Mask: 0x0f) */ - -/* ----------------------------- DCDC_DCDC_V14_0_REG ---------------------------- */ -#define DCDC_DCDC_V14_0_REG_DCDC_V14_CUR_LIM_MIN_Pos (0UL) /*!< DCDC DCDC_V14_0_REG: DCDC_V14_CUR_LIM_MIN (Bit 0) */ -#define DCDC_DCDC_V14_0_REG_DCDC_V14_CUR_LIM_MIN_Msk (0x1fUL) /*!< DCDC DCDC_V14_0_REG: DCDC_V14_CUR_LIM_MIN (Bitfield-Mask: 0x1f) */ -#define DCDC_DCDC_V14_0_REG_DCDC_V14_CUR_LIM_MAX_HV_Pos (5UL) /*!< DCDC DCDC_V14_0_REG: DCDC_V14_CUR_LIM_MAX_HV (Bit 5) */ -#define DCDC_DCDC_V14_0_REG_DCDC_V14_CUR_LIM_MAX_HV_Msk (0x3e0UL) /*!< DCDC DCDC_V14_0_REG: DCDC_V14_CUR_LIM_MAX_HV (Bitfield-Mask: 0x1f) */ -#define DCDC_DCDC_V14_0_REG_DCDC_V14_VOLTAGE_Pos (10UL) /*!< DCDC DCDC_V14_0_REG: DCDC_V14_VOLTAGE (Bit 10) */ -#define DCDC_DCDC_V14_0_REG_DCDC_V14_VOLTAGE_Msk (0x7c00UL) /*!< DCDC DCDC_V14_0_REG: DCDC_V14_VOLTAGE (Bitfield-Mask: 0x1f) */ -#define DCDC_DCDC_V14_0_REG_DCDC_V14_FAST_RAMPING_Pos (15UL) /*!< DCDC DCDC_V14_0_REG: DCDC_V14_FAST_RAMPING (Bit 15) */ -#define DCDC_DCDC_V14_0_REG_DCDC_V14_FAST_RAMPING_Msk (0x8000UL) /*!< DCDC DCDC_V14_0_REG: DCDC_V14_FAST_RAMPING (Bitfield-Mask: 0x01) */ - -/* ----------------------------- DCDC_DCDC_V14_1_REG ---------------------------- */ -#define DCDC_DCDC_V14_1_REG_DCDC_V14_IDLE_MIN_Pos (0UL) /*!< DCDC DCDC_V14_1_REG: DCDC_V14_IDLE_MIN (Bit 0) */ -#define DCDC_DCDC_V14_1_REG_DCDC_V14_IDLE_MIN_Msk (0x1fUL) /*!< DCDC DCDC_V14_1_REG: DCDC_V14_IDLE_MIN (Bitfield-Mask: 0x1f) */ -#define DCDC_DCDC_V14_1_REG_DCDC_V14_IDLE_HYST_Pos (5UL) /*!< DCDC DCDC_V14_1_REG: DCDC_V14_IDLE_HYST (Bit 5) */ -#define DCDC_DCDC_V14_1_REG_DCDC_V14_IDLE_HYST_Msk (0x3e0UL) /*!< DCDC DCDC_V14_1_REG: DCDC_V14_IDLE_HYST (Bitfield-Mask: 0x1f) */ -#define DCDC_DCDC_V14_1_REG_DCDC_V14_CUR_LIM_MAX_LV_Pos (10UL) /*!< DCDC DCDC_V14_1_REG: DCDC_V14_CUR_LIM_MAX_LV (Bit 10) */ -#define DCDC_DCDC_V14_1_REG_DCDC_V14_CUR_LIM_MAX_LV_Msk (0x3c00UL) /*!< DCDC DCDC_V14_1_REG: DCDC_V14_CUR_LIM_MAX_LV (Bitfield-Mask: 0x0f) */ -#define DCDC_DCDC_V14_1_REG_DCDC_V14_ENABLE_LV_Pos (14UL) /*!< DCDC DCDC_V14_1_REG: DCDC_V14_ENABLE_LV (Bit 14) */ -#define DCDC_DCDC_V14_1_REG_DCDC_V14_ENABLE_LV_Msk (0x4000UL) /*!< DCDC DCDC_V14_1_REG: DCDC_V14_ENABLE_LV (Bitfield-Mask: 0x01) */ -#define DCDC_DCDC_V14_1_REG_DCDC_V14_ENABLE_HV_Pos (15UL) /*!< DCDC DCDC_V14_1_REG: DCDC_V14_ENABLE_HV (Bit 15) */ -#define DCDC_DCDC_V14_1_REG_DCDC_V14_ENABLE_HV_Msk (0x8000UL) /*!< DCDC DCDC_V14_1_REG: DCDC_V14_ENABLE_HV (Bitfield-Mask: 0x01) */ - -/* ----------------------------- DCDC_DCDC_V18_0_REG ---------------------------- */ -#define DCDC_DCDC_V18_0_REG_DCDC_V18_CUR_LIM_MIN_Pos (0UL) /*!< DCDC DCDC_V18_0_REG: DCDC_V18_CUR_LIM_MIN (Bit 0) */ -#define DCDC_DCDC_V18_0_REG_DCDC_V18_CUR_LIM_MIN_Msk (0x1fUL) /*!< DCDC DCDC_V18_0_REG: DCDC_V18_CUR_LIM_MIN (Bitfield-Mask: 0x1f) */ -#define DCDC_DCDC_V18_0_REG_DCDC_V18_CUR_LIM_MAX_HV_Pos (5UL) /*!< DCDC DCDC_V18_0_REG: DCDC_V18_CUR_LIM_MAX_HV (Bit 5) */ -#define DCDC_DCDC_V18_0_REG_DCDC_V18_CUR_LIM_MAX_HV_Msk (0x3e0UL) /*!< DCDC DCDC_V18_0_REG: DCDC_V18_CUR_LIM_MAX_HV (Bitfield-Mask: 0x1f) */ -#define DCDC_DCDC_V18_0_REG_DCDC_V18_VOLTAGE_Pos (10UL) /*!< DCDC DCDC_V18_0_REG: DCDC_V18_VOLTAGE (Bit 10) */ -#define DCDC_DCDC_V18_0_REG_DCDC_V18_VOLTAGE_Msk (0x7c00UL) /*!< DCDC DCDC_V18_0_REG: DCDC_V18_VOLTAGE (Bitfield-Mask: 0x1f) */ -#define DCDC_DCDC_V18_0_REG_DCDC_V18_FAST_RAMPING_Pos (15UL) /*!< DCDC DCDC_V18_0_REG: DCDC_V18_FAST_RAMPING (Bit 15) */ -#define DCDC_DCDC_V18_0_REG_DCDC_V18_FAST_RAMPING_Msk (0x8000UL) /*!< DCDC DCDC_V18_0_REG: DCDC_V18_FAST_RAMPING (Bitfield-Mask: 0x01) */ - -/* ----------------------------- DCDC_DCDC_V18_1_REG ---------------------------- */ -#define DCDC_DCDC_V18_1_REG_DCDC_V18_IDLE_MIN_Pos (0UL) /*!< DCDC DCDC_V18_1_REG: DCDC_V18_IDLE_MIN (Bit 0) */ -#define DCDC_DCDC_V18_1_REG_DCDC_V18_IDLE_MIN_Msk (0x1fUL) /*!< DCDC DCDC_V18_1_REG: DCDC_V18_IDLE_MIN (Bitfield-Mask: 0x1f) */ -#define DCDC_DCDC_V18_1_REG_DCDC_V18_IDLE_HYST_Pos (5UL) /*!< DCDC DCDC_V18_1_REG: DCDC_V18_IDLE_HYST (Bit 5) */ -#define DCDC_DCDC_V18_1_REG_DCDC_V18_IDLE_HYST_Msk (0x3e0UL) /*!< DCDC DCDC_V18_1_REG: DCDC_V18_IDLE_HYST (Bitfield-Mask: 0x1f) */ -#define DCDC_DCDC_V18_1_REG_DCDC_V18_CUR_LIM_MAX_LV_Pos (10UL) /*!< DCDC DCDC_V18_1_REG: DCDC_V18_CUR_LIM_MAX_LV (Bit 10) */ -#define DCDC_DCDC_V18_1_REG_DCDC_V18_CUR_LIM_MAX_LV_Msk (0x3c00UL) /*!< DCDC DCDC_V18_1_REG: DCDC_V18_CUR_LIM_MAX_LV (Bitfield-Mask: 0x0f) */ -#define DCDC_DCDC_V18_1_REG_DCDC_V18_ENABLE_LV_Pos (14UL) /*!< DCDC DCDC_V18_1_REG: DCDC_V18_ENABLE_LV (Bit 14) */ -#define DCDC_DCDC_V18_1_REG_DCDC_V18_ENABLE_LV_Msk (0x4000UL) /*!< DCDC DCDC_V18_1_REG: DCDC_V18_ENABLE_LV (Bitfield-Mask: 0x01) */ -#define DCDC_DCDC_V18_1_REG_DCDC_V18_ENABLE_HV_Pos (15UL) /*!< DCDC DCDC_V18_1_REG: DCDC_V18_ENABLE_HV (Bit 15) */ -#define DCDC_DCDC_V18_1_REG_DCDC_V18_ENABLE_HV_Msk (0x8000UL) /*!< DCDC DCDC_V18_1_REG: DCDC_V18_ENABLE_HV (Bitfield-Mask: 0x01) */ - -/* ----------------------------- DCDC_DCDC_VDD_0_REG ---------------------------- */ -#define DCDC_DCDC_VDD_0_REG_DCDC_VDD_CUR_LIM_MIN_Pos (0UL) /*!< DCDC DCDC_VDD_0_REG: DCDC_VDD_CUR_LIM_MIN (Bit 0) */ -#define DCDC_DCDC_VDD_0_REG_DCDC_VDD_CUR_LIM_MIN_Msk (0x1fUL) /*!< DCDC DCDC_VDD_0_REG: DCDC_VDD_CUR_LIM_MIN (Bitfield-Mask: 0x1f) */ -#define DCDC_DCDC_VDD_0_REG_DCDC_VDD_CUR_LIM_MAX_HV_Pos (5UL) /*!< DCDC DCDC_VDD_0_REG: DCDC_VDD_CUR_LIM_MAX_HV (Bit 5) */ -#define DCDC_DCDC_VDD_0_REG_DCDC_VDD_CUR_LIM_MAX_HV_Msk (0x3e0UL) /*!< DCDC DCDC_VDD_0_REG: DCDC_VDD_CUR_LIM_MAX_HV (Bitfield-Mask: 0x1f) */ -#define DCDC_DCDC_VDD_0_REG_DCDC_VDD_VOLTAGE_Pos (10UL) /*!< DCDC DCDC_VDD_0_REG: DCDC_VDD_VOLTAGE (Bit 10) */ -#define DCDC_DCDC_VDD_0_REG_DCDC_VDD_VOLTAGE_Msk (0x7c00UL) /*!< DCDC DCDC_VDD_0_REG: DCDC_VDD_VOLTAGE (Bitfield-Mask: 0x1f) */ -#define DCDC_DCDC_VDD_0_REG_DCDC_VDD_FAST_RAMPING_Pos (15UL) /*!< DCDC DCDC_VDD_0_REG: DCDC_VDD_FAST_RAMPING (Bit 15) */ -#define DCDC_DCDC_VDD_0_REG_DCDC_VDD_FAST_RAMPING_Msk (0x8000UL) /*!< DCDC DCDC_VDD_0_REG: DCDC_VDD_FAST_RAMPING (Bitfield-Mask: 0x01) */ - -/* ----------------------------- DCDC_DCDC_VDD_1_REG ---------------------------- */ -#define DCDC_DCDC_VDD_1_REG_DCDC_VDD_IDLE_MIN_Pos (0UL) /*!< DCDC DCDC_VDD_1_REG: DCDC_VDD_IDLE_MIN (Bit 0) */ -#define DCDC_DCDC_VDD_1_REG_DCDC_VDD_IDLE_MIN_Msk (0x1fUL) /*!< DCDC DCDC_VDD_1_REG: DCDC_VDD_IDLE_MIN (Bitfield-Mask: 0x1f) */ -#define DCDC_DCDC_VDD_1_REG_DCDC_VDD_IDLE_HYST_Pos (5UL) /*!< DCDC DCDC_VDD_1_REG: DCDC_VDD_IDLE_HYST (Bit 5) */ -#define DCDC_DCDC_VDD_1_REG_DCDC_VDD_IDLE_HYST_Msk (0x3e0UL) /*!< DCDC DCDC_VDD_1_REG: DCDC_VDD_IDLE_HYST (Bitfield-Mask: 0x1f) */ -#define DCDC_DCDC_VDD_1_REG_DCDC_VDD_CUR_LIM_MAX_LV_Pos (10UL) /*!< DCDC DCDC_VDD_1_REG: DCDC_VDD_CUR_LIM_MAX_LV (Bit 10) */ -#define DCDC_DCDC_VDD_1_REG_DCDC_VDD_CUR_LIM_MAX_LV_Msk (0x3c00UL) /*!< DCDC DCDC_VDD_1_REG: DCDC_VDD_CUR_LIM_MAX_LV (Bitfield-Mask: 0x0f) */ -#define DCDC_DCDC_VDD_1_REG_DCDC_VDD_ENABLE_LV_Pos (14UL) /*!< DCDC DCDC_VDD_1_REG: DCDC_VDD_ENABLE_LV (Bit 14) */ -#define DCDC_DCDC_VDD_1_REG_DCDC_VDD_ENABLE_LV_Msk (0x4000UL) /*!< DCDC DCDC_VDD_1_REG: DCDC_VDD_ENABLE_LV (Bitfield-Mask: 0x01) */ -#define DCDC_DCDC_VDD_1_REG_DCDC_VDD_ENABLE_HV_Pos (15UL) /*!< DCDC DCDC_VDD_1_REG: DCDC_VDD_ENABLE_HV (Bit 15) */ -#define DCDC_DCDC_VDD_1_REG_DCDC_VDD_ENABLE_HV_Msk (0x8000UL) /*!< DCDC DCDC_VDD_1_REG: DCDC_VDD_ENABLE_HV (Bitfield-Mask: 0x01) */ - -/* ---------------------------- DCDC_DCDC_V18P_0_REG ---------------------------- */ -#define DCDC_DCDC_V18P_0_REG_DCDC_V18P_CUR_LIM_MIN_Pos (0UL) /*!< DCDC DCDC_V18P_0_REG: DCDC_V18P_CUR_LIM_MIN (Bit 0) */ -#define DCDC_DCDC_V18P_0_REG_DCDC_V18P_CUR_LIM_MIN_Msk (0x1fUL) /*!< DCDC DCDC_V18P_0_REG: DCDC_V18P_CUR_LIM_MIN (Bitfield-Mask: 0x1f) */ -#define DCDC_DCDC_V18P_0_REG_DCDC_V18P_CUR_LIM_MAX_HV_Pos (5UL) /*!< DCDC DCDC_V18P_0_REG: DCDC_V18P_CUR_LIM_MAX_HV (Bit 5) */ -#define DCDC_DCDC_V18P_0_REG_DCDC_V18P_CUR_LIM_MAX_HV_Msk (0x3e0UL) /*!< DCDC DCDC_V18P_0_REG: DCDC_V18P_CUR_LIM_MAX_HV (Bitfield-Mask: 0x1f) */ -#define DCDC_DCDC_V18P_0_REG_DCDC_V18P_VOLTAGE_Pos (10UL) /*!< DCDC DCDC_V18P_0_REG: DCDC_V18P_VOLTAGE (Bit 10) */ -#define DCDC_DCDC_V18P_0_REG_DCDC_V18P_VOLTAGE_Msk (0x7c00UL) /*!< DCDC DCDC_V18P_0_REG: DCDC_V18P_VOLTAGE (Bitfield-Mask: 0x1f) */ -#define DCDC_DCDC_V18P_0_REG_DCDC_V18P_FAST_RAMPING_Pos (15UL) /*!< DCDC DCDC_V18P_0_REG: DCDC_V18P_FAST_RAMPING (Bit 15) */ -#define DCDC_DCDC_V18P_0_REG_DCDC_V18P_FAST_RAMPING_Msk (0x8000UL) /*!< DCDC DCDC_V18P_0_REG: DCDC_V18P_FAST_RAMPING (Bitfield-Mask: 0x01) */ - -/* ---------------------------- DCDC_DCDC_V18P_1_REG ---------------------------- */ -#define DCDC_DCDC_V18P_1_REG_DCDC_V18P_IDLE_MIN_Pos (0UL) /*!< DCDC DCDC_V18P_1_REG: DCDC_V18P_IDLE_MIN (Bit 0) */ -#define DCDC_DCDC_V18P_1_REG_DCDC_V18P_IDLE_MIN_Msk (0x1fUL) /*!< DCDC DCDC_V18P_1_REG: DCDC_V18P_IDLE_MIN (Bitfield-Mask: 0x1f) */ -#define DCDC_DCDC_V18P_1_REG_DCDC_V18P_IDLE_HYST_Pos (5UL) /*!< DCDC DCDC_V18P_1_REG: DCDC_V18P_IDLE_HYST (Bit 5) */ -#define DCDC_DCDC_V18P_1_REG_DCDC_V18P_IDLE_HYST_Msk (0x3e0UL) /*!< DCDC DCDC_V18P_1_REG: DCDC_V18P_IDLE_HYST (Bitfield-Mask: 0x1f) */ -#define DCDC_DCDC_V18P_1_REG_DCDC_V18P_CUR_LIM_MAX_LV_Pos (10UL) /*!< DCDC DCDC_V18P_1_REG: DCDC_V18P_CUR_LIM_MAX_LV (Bit 10) */ -#define DCDC_DCDC_V18P_1_REG_DCDC_V18P_CUR_LIM_MAX_LV_Msk (0x3c00UL) /*!< DCDC DCDC_V18P_1_REG: DCDC_V18P_CUR_LIM_MAX_LV (Bitfield-Mask: 0x0f) */ -#define DCDC_DCDC_V18P_1_REG_DCDC_V18P_ENABLE_LV_Pos (14UL) /*!< DCDC DCDC_V18P_1_REG: DCDC_V18P_ENABLE_LV (Bit 14) */ -#define DCDC_DCDC_V18P_1_REG_DCDC_V18P_ENABLE_LV_Msk (0x4000UL) /*!< DCDC DCDC_V18P_1_REG: DCDC_V18P_ENABLE_LV (Bitfield-Mask: 0x01) */ -#define DCDC_DCDC_V18P_1_REG_DCDC_V18P_ENABLE_HV_Pos (15UL) /*!< DCDC DCDC_V18P_1_REG: DCDC_V18P_ENABLE_HV (Bit 15) */ -#define DCDC_DCDC_V18P_1_REG_DCDC_V18P_ENABLE_HV_Msk (0x8000UL) /*!< DCDC DCDC_V18P_1_REG: DCDC_V18P_ENABLE_HV (Bitfield-Mask: 0x01) */ - -/* ----------------------------- DCDC_DCDC_RET_0_REG ---------------------------- */ -#define DCDC_DCDC_RET_0_REG_DCDC_VDD_CUR_LIM_RET_Pos (0UL) /*!< DCDC DCDC_RET_0_REG: DCDC_VDD_CUR_LIM_RET (Bit 0) */ -#define DCDC_DCDC_RET_0_REG_DCDC_VDD_CUR_LIM_RET_Msk (0x1fUL) /*!< DCDC DCDC_RET_0_REG: DCDC_VDD_CUR_LIM_RET (Bitfield-Mask: 0x1f) */ -#define DCDC_DCDC_RET_0_REG_DCDC_VDD_RET_CYCLES_Pos (5UL) /*!< DCDC DCDC_RET_0_REG: DCDC_VDD_RET_CYCLES (Bit 5) */ -#define DCDC_DCDC_RET_0_REG_DCDC_VDD_RET_CYCLES_Msk (0xe0UL) /*!< DCDC DCDC_RET_0_REG: DCDC_VDD_RET_CYCLES (Bitfield-Mask: 0x07) */ -#define DCDC_DCDC_RET_0_REG_DCDC_V18P_CUR_LIM_RET_Pos (8UL) /*!< DCDC DCDC_RET_0_REG: DCDC_V18P_CUR_LIM_RET (Bit 8) */ -#define DCDC_DCDC_RET_0_REG_DCDC_V18P_CUR_LIM_RET_Msk (0x1f00UL) /*!< DCDC DCDC_RET_0_REG: DCDC_V18P_CUR_LIM_RET (Bitfield-Mask: 0x1f) */ -#define DCDC_DCDC_RET_0_REG_DCDC_V18P_RET_CYCLES_Pos (13UL) /*!< DCDC DCDC_RET_0_REG: DCDC_V18P_RET_CYCLES (Bit 13) */ -#define DCDC_DCDC_RET_0_REG_DCDC_V18P_RET_CYCLES_Msk (0xe000UL) /*!< DCDC DCDC_RET_0_REG: DCDC_V18P_RET_CYCLES (Bitfield-Mask: 0x07) */ - -/* ----------------------------- DCDC_DCDC_RET_1_REG ---------------------------- */ -#define DCDC_DCDC_RET_1_REG_DCDC_V14_CUR_LIM_RET_Pos (0UL) /*!< DCDC DCDC_RET_1_REG: DCDC_V14_CUR_LIM_RET (Bit 0) */ -#define DCDC_DCDC_RET_1_REG_DCDC_V14_CUR_LIM_RET_Msk (0x1fUL) /*!< DCDC DCDC_RET_1_REG: DCDC_V14_CUR_LIM_RET (Bitfield-Mask: 0x1f) */ -#define DCDC_DCDC_RET_1_REG_DCDC_V14_RET_CYCLES_Pos (5UL) /*!< DCDC DCDC_RET_1_REG: DCDC_V14_RET_CYCLES (Bit 5) */ -#define DCDC_DCDC_RET_1_REG_DCDC_V14_RET_CYCLES_Msk (0xe0UL) /*!< DCDC DCDC_RET_1_REG: DCDC_V14_RET_CYCLES (Bitfield-Mask: 0x07) */ -#define DCDC_DCDC_RET_1_REG_DCDC_V18_CUR_LIM_RET_Pos (8UL) /*!< DCDC DCDC_RET_1_REG: DCDC_V18_CUR_LIM_RET (Bit 8) */ -#define DCDC_DCDC_RET_1_REG_DCDC_V18_CUR_LIM_RET_Msk (0x1f00UL) /*!< DCDC DCDC_RET_1_REG: DCDC_V18_CUR_LIM_RET (Bitfield-Mask: 0x1f) */ -#define DCDC_DCDC_RET_1_REG_DCDC_V18_RET_CYCLES_Pos (13UL) /*!< DCDC DCDC_RET_1_REG: DCDC_V18_RET_CYCLES (Bit 13) */ -#define DCDC_DCDC_RET_1_REG_DCDC_V18_RET_CYCLES_Msk (0xe000UL) /*!< DCDC DCDC_RET_1_REG: DCDC_V18_RET_CYCLES (Bitfield-Mask: 0x07) */ - -/* ----------------------------- DCDC_DCDC_TRIM_REG ----------------------------- */ -#define DCDC_DCDC_TRIM_REG_DCDC_N_COMP_TRIM_Pos (0UL) /*!< DCDC DCDC_TRIM_REG: DCDC_N_COMP_TRIM (Bit 0) */ -#define DCDC_DCDC_TRIM_REG_DCDC_N_COMP_TRIM_Msk (0x3fUL) /*!< DCDC DCDC_TRIM_REG: DCDC_N_COMP_TRIM (Bitfield-Mask: 0x3f) */ -#define DCDC_DCDC_TRIM_REG_DCDC_N_COMP_MAN_TRIM_Pos (6UL) /*!< DCDC DCDC_TRIM_REG: DCDC_N_COMP_MAN_TRIM (Bit 6) */ -#define DCDC_DCDC_TRIM_REG_DCDC_N_COMP_MAN_TRIM_Msk (0x40UL) /*!< DCDC DCDC_TRIM_REG: DCDC_N_COMP_MAN_TRIM (Bitfield-Mask: 0x01) */ -#define DCDC_DCDC_TRIM_REG_DCDC_P_COMP_TRIM_Pos (7UL) /*!< DCDC DCDC_TRIM_REG: DCDC_P_COMP_TRIM (Bit 7) */ -#define DCDC_DCDC_TRIM_REG_DCDC_P_COMP_TRIM_Msk (0x1f80UL) /*!< DCDC DCDC_TRIM_REG: DCDC_P_COMP_TRIM (Bitfield-Mask: 0x3f) */ -#define DCDC_DCDC_TRIM_REG_DCDC_P_COMP_MAN_TRIM_Pos (13UL) /*!< DCDC DCDC_TRIM_REG: DCDC_P_COMP_MAN_TRIM (Bit 13) */ -#define DCDC_DCDC_TRIM_REG_DCDC_P_COMP_MAN_TRIM_Msk (0x2000UL) /*!< DCDC DCDC_TRIM_REG: DCDC_P_COMP_MAN_TRIM (Bitfield-Mask: 0x01) */ - -/* ---------------------------- DCDC_DCDC_TEST_0_REG ---------------------------- */ -#define DCDC_DCDC_TEST_0_REG_DCDC_FORCE_PSW_Pos (0UL) /*!< DCDC DCDC_TEST_0_REG: DCDC_FORCE_PSW (Bit 0) */ -#define DCDC_DCDC_TEST_0_REG_DCDC_FORCE_PSW_Msk (0x1UL) /*!< DCDC DCDC_TEST_0_REG: DCDC_FORCE_PSW (Bitfield-Mask: 0x01) */ -#define DCDC_DCDC_TEST_0_REG_DCDC_FORCE_NSW_Pos (1UL) /*!< DCDC DCDC_TEST_0_REG: DCDC_FORCE_NSW (Bit 1) */ -#define DCDC_DCDC_TEST_0_REG_DCDC_FORCE_NSW_Msk (0x2UL) /*!< DCDC DCDC_TEST_0_REG: DCDC_FORCE_NSW (Bitfield-Mask: 0x01) */ -#define DCDC_DCDC_TEST_0_REG_DCDC_FORCE_FW_Pos (2UL) /*!< DCDC DCDC_TEST_0_REG: DCDC_FORCE_FW (Bit 2) */ -#define DCDC_DCDC_TEST_0_REG_DCDC_FORCE_FW_Msk (0x4UL) /*!< DCDC DCDC_TEST_0_REG: DCDC_FORCE_FW (Bitfield-Mask: 0x01) */ -#define DCDC_DCDC_TEST_0_REG_DCDC_FORCE_V14_Pos (3UL) /*!< DCDC DCDC_TEST_0_REG: DCDC_FORCE_V14 (Bit 3) */ -#define DCDC_DCDC_TEST_0_REG_DCDC_FORCE_V14_Msk (0x8UL) /*!< DCDC DCDC_TEST_0_REG: DCDC_FORCE_V14 (Bitfield-Mask: 0x01) */ -#define DCDC_DCDC_TEST_0_REG_DCDC_FORCE_V18_Pos (4UL) /*!< DCDC DCDC_TEST_0_REG: DCDC_FORCE_V18 (Bit 4) */ -#define DCDC_DCDC_TEST_0_REG_DCDC_FORCE_V18_Msk (0x10UL) /*!< DCDC DCDC_TEST_0_REG: DCDC_FORCE_V18 (Bitfield-Mask: 0x01) */ -#define DCDC_DCDC_TEST_0_REG_DCDC_FORCE_VDD_Pos (5UL) /*!< DCDC DCDC_TEST_0_REG: DCDC_FORCE_VDD (Bit 5) */ -#define DCDC_DCDC_TEST_0_REG_DCDC_FORCE_VDD_Msk (0x20UL) /*!< DCDC DCDC_TEST_0_REG: DCDC_FORCE_VDD (Bitfield-Mask: 0x01) */ -#define DCDC_DCDC_TEST_0_REG_DCDC_FORCE_V18P_Pos (6UL) /*!< DCDC DCDC_TEST_0_REG: DCDC_FORCE_V18P (Bit 6) */ -#define DCDC_DCDC_TEST_0_REG_DCDC_FORCE_V18P_Msk (0x40UL) /*!< DCDC DCDC_TEST_0_REG: DCDC_FORCE_V18P (Bitfield-Mask: 0x01) */ -#define DCDC_DCDC_TEST_0_REG_DCDC_FORCE_IDLE_Pos (7UL) /*!< DCDC DCDC_TEST_0_REG: DCDC_FORCE_IDLE (Bit 7) */ -#define DCDC_DCDC_TEST_0_REG_DCDC_FORCE_IDLE_Msk (0x80UL) /*!< DCDC DCDC_TEST_0_REG: DCDC_FORCE_IDLE (Bitfield-Mask: 0x01) */ -#define DCDC_DCDC_TEST_0_REG_DCDC_ANA_TEST_Pos (8UL) /*!< DCDC DCDC_TEST_0_REG: DCDC_ANA_TEST (Bit 8) */ -#define DCDC_DCDC_TEST_0_REG_DCDC_ANA_TEST_Msk (0x700UL) /*!< DCDC DCDC_TEST_0_REG: DCDC_ANA_TEST (Bitfield-Mask: 0x07) */ -#define DCDC_DCDC_TEST_0_REG_DCDC_OUTPUT_MONITOR_Pos (11UL) /*!< DCDC DCDC_TEST_0_REG: DCDC_OUTPUT_MONITOR (Bit 11) */ -#define DCDC_DCDC_TEST_0_REG_DCDC_OUTPUT_MONITOR_Msk (0x3800UL) /*!< DCDC DCDC_TEST_0_REG: DCDC_OUTPUT_MONITOR (Bitfield-Mask: 0x07) */ -#define DCDC_DCDC_TEST_0_REG_DCDC_FORCE_CURRENT_Pos (14UL) /*!< DCDC DCDC_TEST_0_REG: DCDC_FORCE_CURRENT (Bit 14) */ -#define DCDC_DCDC_TEST_0_REG_DCDC_FORCE_CURRENT_Msk (0x4000UL) /*!< DCDC DCDC_TEST_0_REG: DCDC_FORCE_CURRENT (Bitfield-Mask: 0x01) */ -#define DCDC_DCDC_TEST_0_REG_DCDC_FORCE_COMP_CLK_Pos (15UL) /*!< DCDC DCDC_TEST_0_REG: DCDC_FORCE_COMP_CLK (Bit 15) */ -#define DCDC_DCDC_TEST_0_REG_DCDC_FORCE_COMP_CLK_Msk (0x8000UL) /*!< DCDC DCDC_TEST_0_REG: DCDC_FORCE_COMP_CLK (Bitfield-Mask: 0x01) */ - -/* ---------------------------- DCDC_DCDC_TEST_1_REG ---------------------------- */ -#define DCDC_DCDC_TEST_1_REG_DCDC_TEST_REG_Pos (0UL) /*!< DCDC DCDC_TEST_1_REG: DCDC_TEST_REG (Bit 0) */ -#define DCDC_DCDC_TEST_1_REG_DCDC_TEST_REG_Msk (0xfUL) /*!< DCDC DCDC_TEST_1_REG: DCDC_TEST_REG (Bitfield-Mask: 0x0f) */ -#define DCDC_DCDC_TEST_1_REG_DCDC_TEST_CURRENT_Pos (4UL) /*!< DCDC DCDC_TEST_1_REG: DCDC_TEST_CURRENT (Bit 4) */ -#define DCDC_DCDC_TEST_1_REG_DCDC_TEST_CURRENT_Msk (0x1f0UL) /*!< DCDC DCDC_TEST_1_REG: DCDC_TEST_CURRENT (Bitfield-Mask: 0x1f) */ -#define DCDC_DCDC_TEST_1_REG_DCDC_COMP_CLK_Pos (9UL) /*!< DCDC DCDC_TEST_1_REG: DCDC_COMP_CLK (Bit 9) */ -#define DCDC_DCDC_TEST_1_REG_DCDC_COMP_CLK_Msk (0x1e00UL) /*!< DCDC DCDC_TEST_1_REG: DCDC_COMP_CLK (Bitfield-Mask: 0x0f) */ - -/* --------------------------- DCDC_DCDC_STATUS_0_REG --------------------------- */ -#define DCDC_DCDC_STATUS_0_REG_DCDC_CHARGE_REG_0_Pos (0UL) /*!< DCDC DCDC_STATUS_0_REG: DCDC_CHARGE_REG_0 (Bit 0) */ -#define DCDC_DCDC_STATUS_0_REG_DCDC_CHARGE_REG_0_Msk (0x7UL) /*!< DCDC DCDC_STATUS_0_REG: DCDC_CHARGE_REG_0 (Bitfield-Mask: 0x07) */ -#define DCDC_DCDC_STATUS_0_REG_DCDC_CHARGE_REG_1_Pos (3UL) /*!< DCDC DCDC_STATUS_0_REG: DCDC_CHARGE_REG_1 (Bit 3) */ -#define DCDC_DCDC_STATUS_0_REG_DCDC_CHARGE_REG_1_Msk (0x38UL) /*!< DCDC DCDC_STATUS_0_REG: DCDC_CHARGE_REG_1 (Bitfield-Mask: 0x07) */ -#define DCDC_DCDC_STATUS_0_REG_DCDC_CHARGE_REG_2_Pos (6UL) /*!< DCDC DCDC_STATUS_0_REG: DCDC_CHARGE_REG_2 (Bit 6) */ -#define DCDC_DCDC_STATUS_0_REG_DCDC_CHARGE_REG_2_Msk (0x1c0UL) /*!< DCDC DCDC_STATUS_0_REG: DCDC_CHARGE_REG_2 (Bitfield-Mask: 0x07) */ -#define DCDC_DCDC_STATUS_0_REG_DCDC_CHARGE_REG_3_Pos (9UL) /*!< DCDC DCDC_STATUS_0_REG: DCDC_CHARGE_REG_3 (Bit 9) */ -#define DCDC_DCDC_STATUS_0_REG_DCDC_CHARGE_REG_3_Msk (0xe00UL) /*!< DCDC DCDC_STATUS_0_REG: DCDC_CHARGE_REG_3 (Bitfield-Mask: 0x07) */ - -/* --------------------------- DCDC_DCDC_STATUS_1_REG --------------------------- */ -#define DCDC_DCDC_STATUS_1_REG_DCDC_V14_NOK_Pos (0UL) /*!< DCDC DCDC_STATUS_1_REG: DCDC_V14_NOK (Bit 0) */ -#define DCDC_DCDC_STATUS_1_REG_DCDC_V14_NOK_Msk (0x1UL) /*!< DCDC DCDC_STATUS_1_REG: DCDC_V14_NOK (Bitfield-Mask: 0x01) */ -#define DCDC_DCDC_STATUS_1_REG_DCDC_V18_NOK_Pos (1UL) /*!< DCDC DCDC_STATUS_1_REG: DCDC_V18_NOK (Bit 1) */ -#define DCDC_DCDC_STATUS_1_REG_DCDC_V18_NOK_Msk (0x2UL) /*!< DCDC DCDC_STATUS_1_REG: DCDC_V18_NOK (Bitfield-Mask: 0x01) */ -#define DCDC_DCDC_STATUS_1_REG_DCDC_VDD_NOK_Pos (2UL) /*!< DCDC DCDC_STATUS_1_REG: DCDC_VDD_NOK (Bit 2) */ -#define DCDC_DCDC_STATUS_1_REG_DCDC_VDD_NOK_Msk (0x4UL) /*!< DCDC DCDC_STATUS_1_REG: DCDC_VDD_NOK (Bitfield-Mask: 0x01) */ -#define DCDC_DCDC_STATUS_1_REG_DCDC_V18P_NOK_Pos (3UL) /*!< DCDC DCDC_STATUS_1_REG: DCDC_V18P_NOK (Bit 3) */ -#define DCDC_DCDC_STATUS_1_REG_DCDC_V18P_NOK_Msk (0x8UL) /*!< DCDC DCDC_STATUS_1_REG: DCDC_V18P_NOK (Bitfield-Mask: 0x01) */ -#define DCDC_DCDC_STATUS_1_REG_DCDC_V14_OK_Pos (4UL) /*!< DCDC DCDC_STATUS_1_REG: DCDC_V14_OK (Bit 4) */ -#define DCDC_DCDC_STATUS_1_REG_DCDC_V14_OK_Msk (0x10UL) /*!< DCDC DCDC_STATUS_1_REG: DCDC_V14_OK (Bitfield-Mask: 0x01) */ -#define DCDC_DCDC_STATUS_1_REG_DCDC_V18_OK_Pos (5UL) /*!< DCDC DCDC_STATUS_1_REG: DCDC_V18_OK (Bit 5) */ -#define DCDC_DCDC_STATUS_1_REG_DCDC_V18_OK_Msk (0x20UL) /*!< DCDC DCDC_STATUS_1_REG: DCDC_V18_OK (Bitfield-Mask: 0x01) */ -#define DCDC_DCDC_STATUS_1_REG_DCDC_VDD_OK_Pos (6UL) /*!< DCDC DCDC_STATUS_1_REG: DCDC_VDD_OK (Bit 6) */ -#define DCDC_DCDC_STATUS_1_REG_DCDC_VDD_OK_Msk (0x40UL) /*!< DCDC DCDC_STATUS_1_REG: DCDC_VDD_OK (Bitfield-Mask: 0x01) */ -#define DCDC_DCDC_STATUS_1_REG_DCDC_V18P_OK_Pos (7UL) /*!< DCDC DCDC_STATUS_1_REG: DCDC_V18P_OK (Bit 7) */ -#define DCDC_DCDC_STATUS_1_REG_DCDC_V18P_OK_Msk (0x80UL) /*!< DCDC DCDC_STATUS_1_REG: DCDC_V18P_OK (Bitfield-Mask: 0x01) */ -#define DCDC_DCDC_STATUS_1_REG_DCDC_V14_AVAILABLE_Pos (8UL) /*!< DCDC DCDC_STATUS_1_REG: DCDC_V14_AVAILABLE (Bit 8) */ -#define DCDC_DCDC_STATUS_1_REG_DCDC_V14_AVAILABLE_Msk (0x100UL) /*!< DCDC DCDC_STATUS_1_REG: DCDC_V14_AVAILABLE (Bitfield-Mask: 0x01) */ -#define DCDC_DCDC_STATUS_1_REG_DCDC_V18_AVAILABLE_Pos (9UL) /*!< DCDC DCDC_STATUS_1_REG: DCDC_V18_AVAILABLE (Bit 9) */ -#define DCDC_DCDC_STATUS_1_REG_DCDC_V18_AVAILABLE_Msk (0x200UL) /*!< DCDC DCDC_STATUS_1_REG: DCDC_V18_AVAILABLE (Bitfield-Mask: 0x01) */ -#define DCDC_DCDC_STATUS_1_REG_DCDC_VDD_AVAILABLE_Pos (10UL) /*!< DCDC DCDC_STATUS_1_REG: DCDC_VDD_AVAILABLE (Bit 10) */ -#define DCDC_DCDC_STATUS_1_REG_DCDC_VDD_AVAILABLE_Msk (0x400UL) /*!< DCDC DCDC_STATUS_1_REG: DCDC_VDD_AVAILABLE (Bitfield-Mask: 0x01) */ -#define DCDC_DCDC_STATUS_1_REG_DCDC_V18P_AVAILABLE_Pos (11UL) /*!< DCDC DCDC_STATUS_1_REG: DCDC_V18P_AVAILABLE (Bit 11) */ -#define DCDC_DCDC_STATUS_1_REG_DCDC_V18P_AVAILABLE_Msk (0x800UL) /*!< DCDC DCDC_STATUS_1_REG: DCDC_V18P_AVAILABLE (Bitfield-Mask: 0x01) */ - -/* --------------------------- DCDC_DCDC_STATUS_2_REG --------------------------- */ -#define DCDC_DCDC_STATUS_2_REG_DCDC_N_COMP_Pos (0UL) /*!< DCDC DCDC_STATUS_2_REG: DCDC_N_COMP (Bit 0) */ -#define DCDC_DCDC_STATUS_2_REG_DCDC_N_COMP_Msk (0x1UL) /*!< DCDC DCDC_STATUS_2_REG: DCDC_N_COMP (Bitfield-Mask: 0x01) */ -#define DCDC_DCDC_STATUS_2_REG_DCDC_P_COMP_Pos (1UL) /*!< DCDC DCDC_STATUS_2_REG: DCDC_P_COMP (Bit 1) */ -#define DCDC_DCDC_STATUS_2_REG_DCDC_P_COMP_Msk (0x2UL) /*!< DCDC DCDC_STATUS_2_REG: DCDC_P_COMP (Bitfield-Mask: 0x01) */ -#define DCDC_DCDC_STATUS_2_REG_DCDC_N_COMP_N_Pos (2UL) /*!< DCDC DCDC_STATUS_2_REG: DCDC_N_COMP_N (Bit 2) */ -#define DCDC_DCDC_STATUS_2_REG_DCDC_N_COMP_N_Msk (0x4UL) /*!< DCDC DCDC_STATUS_2_REG: DCDC_N_COMP_N (Bitfield-Mask: 0x01) */ -#define DCDC_DCDC_STATUS_2_REG_DCDC_N_COMP_P_Pos (3UL) /*!< DCDC DCDC_STATUS_2_REG: DCDC_N_COMP_P (Bit 3) */ -#define DCDC_DCDC_STATUS_2_REG_DCDC_N_COMP_P_Msk (0x8UL) /*!< DCDC DCDC_STATUS_2_REG: DCDC_N_COMP_P (Bitfield-Mask: 0x01) */ -#define DCDC_DCDC_STATUS_2_REG_DCDC_P_COMP_N_Pos (4UL) /*!< DCDC DCDC_STATUS_2_REG: DCDC_P_COMP_N (Bit 4) */ -#define DCDC_DCDC_STATUS_2_REG_DCDC_P_COMP_N_Msk (0x10UL) /*!< DCDC DCDC_STATUS_2_REG: DCDC_P_COMP_N (Bitfield-Mask: 0x01) */ -#define DCDC_DCDC_STATUS_2_REG_DCDC_P_COMP_P_Pos (5UL) /*!< DCDC DCDC_STATUS_2_REG: DCDC_P_COMP_P (Bit 5) */ -#define DCDC_DCDC_STATUS_2_REG_DCDC_P_COMP_P_Msk (0x20UL) /*!< DCDC DCDC_STATUS_2_REG: DCDC_P_COMP_P (Bitfield-Mask: 0x01) */ -#define DCDC_DCDC_STATUS_2_REG_DCDC_PSW_STATE_Pos (6UL) /*!< DCDC DCDC_STATUS_2_REG: DCDC_PSW_STATE (Bit 6) */ -#define DCDC_DCDC_STATUS_2_REG_DCDC_PSW_STATE_Msk (0x40UL) /*!< DCDC DCDC_STATUS_2_REG: DCDC_PSW_STATE (Bitfield-Mask: 0x01) */ -#define DCDC_DCDC_STATUS_2_REG_DCDC_NSW_STATE_Pos (7UL) /*!< DCDC DCDC_STATUS_2_REG: DCDC_NSW_STATE (Bit 7) */ -#define DCDC_DCDC_STATUS_2_REG_DCDC_NSW_STATE_Msk (0x80UL) /*!< DCDC DCDC_STATUS_2_REG: DCDC_NSW_STATE (Bitfield-Mask: 0x01) */ -#define DCDC_DCDC_STATUS_2_REG_DCDC_V14_SW_STATE_Pos (8UL) /*!< DCDC DCDC_STATUS_2_REG: DCDC_V14_SW_STATE (Bit 8) */ -#define DCDC_DCDC_STATUS_2_REG_DCDC_V14_SW_STATE_Msk (0x100UL) /*!< DCDC DCDC_STATUS_2_REG: DCDC_V14_SW_STATE (Bitfield-Mask: 0x01) */ -#define DCDC_DCDC_STATUS_2_REG_DCDC_V18_SW_STATE_Pos (9UL) /*!< DCDC DCDC_STATUS_2_REG: DCDC_V18_SW_STATE (Bit 9) */ -#define DCDC_DCDC_STATUS_2_REG_DCDC_V18_SW_STATE_Msk (0x200UL) /*!< DCDC DCDC_STATUS_2_REG: DCDC_V18_SW_STATE (Bitfield-Mask: 0x01) */ -#define DCDC_DCDC_STATUS_2_REG_DCDC_VDD_SW_STATE_Pos (10UL) /*!< DCDC DCDC_STATUS_2_REG: DCDC_VDD_SW_STATE (Bit 10) */ -#define DCDC_DCDC_STATUS_2_REG_DCDC_VDD_SW_STATE_Msk (0x400UL) /*!< DCDC DCDC_STATUS_2_REG: DCDC_VDD_SW_STATE (Bitfield-Mask: 0x01) */ -#define DCDC_DCDC_STATUS_2_REG_DCDC_V18P_SW_STATE_Pos (11UL) /*!< DCDC DCDC_STATUS_2_REG: DCDC_V18P_SW_STATE (Bit 11) */ -#define DCDC_DCDC_STATUS_2_REG_DCDC_V18P_SW_STATE_Msk (0x800UL) /*!< DCDC DCDC_STATUS_2_REG: DCDC_V18P_SW_STATE (Bitfield-Mask: 0x01) */ - -/* --------------------------- DCDC_DCDC_STATUS_3_REG --------------------------- */ -#define DCDC_DCDC_STATUS_3_REG_DCDC_I_LIM_VDD_Pos (0UL) /*!< DCDC DCDC_STATUS_3_REG: DCDC_I_LIM_VDD (Bit 0) */ -#define DCDC_DCDC_STATUS_3_REG_DCDC_I_LIM_VDD_Msk (0x1fUL) /*!< DCDC DCDC_STATUS_3_REG: DCDC_I_LIM_VDD (Bitfield-Mask: 0x1f) */ -#define DCDC_DCDC_STATUS_3_REG_DCDC_I_LIM_V18P_Pos (5UL) /*!< DCDC DCDC_STATUS_3_REG: DCDC_I_LIM_V18P (Bit 5) */ -#define DCDC_DCDC_STATUS_3_REG_DCDC_I_LIM_V18P_Msk (0x3e0UL) /*!< DCDC DCDC_STATUS_3_REG: DCDC_I_LIM_V18P (Bitfield-Mask: 0x1f) */ -#define DCDC_DCDC_STATUS_3_REG_DCDC_LV_MODE_Pos (10UL) /*!< DCDC DCDC_STATUS_3_REG: DCDC_LV_MODE (Bit 10) */ -#define DCDC_DCDC_STATUS_3_REG_DCDC_LV_MODE_Msk (0x400UL) /*!< DCDC DCDC_STATUS_3_REG: DCDC_LV_MODE (Bitfield-Mask: 0x01) */ -#define DCDC_DCDC_STATUS_3_REG_DCDC_STARTUP_COMPLETE_Pos (11UL) /*!< DCDC DCDC_STATUS_3_REG: DCDC_STARTUP_COMPLETE (Bit 11) */ -#define DCDC_DCDC_STATUS_3_REG_DCDC_STARTUP_COMPLETE_Msk (0x800UL) /*!< DCDC DCDC_STATUS_3_REG: DCDC_STARTUP_COMPLETE (Bitfield-Mask: 0x01) */ - -/* --------------------------- DCDC_DCDC_STATUS_4_REG --------------------------- */ -#define DCDC_DCDC_STATUS_4_REG_DCDC_I_LIM_V14_Pos (0UL) /*!< DCDC DCDC_STATUS_4_REG: DCDC_I_LIM_V14 (Bit 0) */ -#define DCDC_DCDC_STATUS_4_REG_DCDC_I_LIM_V14_Msk (0x1fUL) /*!< DCDC DCDC_STATUS_4_REG: DCDC_I_LIM_V14 (Bitfield-Mask: 0x1f) */ -#define DCDC_DCDC_STATUS_4_REG_DCDC_I_LIM_V18_Pos (5UL) /*!< DCDC DCDC_STATUS_4_REG: DCDC_I_LIM_V18 (Bit 5) */ -#define DCDC_DCDC_STATUS_4_REG_DCDC_I_LIM_V18_Msk (0x3e0UL) /*!< DCDC DCDC_STATUS_4_REG: DCDC_I_LIM_V18 (Bitfield-Mask: 0x1f) */ - -/* ---------------------------- DCDC_DCDC_TRIM_0_REG ---------------------------- */ -#define DCDC_DCDC_TRIM_0_REG_DCDC_V14_TRIM_N_Pos (0UL) /*!< DCDC DCDC_TRIM_0_REG: DCDC_V14_TRIM_N (Bit 0) */ -#define DCDC_DCDC_TRIM_0_REG_DCDC_V14_TRIM_N_Msk (0x3fUL) /*!< DCDC DCDC_TRIM_0_REG: DCDC_V14_TRIM_N (Bitfield-Mask: 0x3f) */ -#define DCDC_DCDC_TRIM_0_REG_DCDC_V14_TRIM_P_Pos (6UL) /*!< DCDC DCDC_TRIM_0_REG: DCDC_V14_TRIM_P (Bit 6) */ -#define DCDC_DCDC_TRIM_0_REG_DCDC_V14_TRIM_P_Msk (0xfc0UL) /*!< DCDC DCDC_TRIM_0_REG: DCDC_V14_TRIM_P (Bitfield-Mask: 0x3f) */ - -/* ---------------------------- DCDC_DCDC_TRIM_1_REG ---------------------------- */ -#define DCDC_DCDC_TRIM_1_REG_DCDC_V18_TRIM_N_Pos (0UL) /*!< DCDC DCDC_TRIM_1_REG: DCDC_V18_TRIM_N (Bit 0) */ -#define DCDC_DCDC_TRIM_1_REG_DCDC_V18_TRIM_N_Msk (0x3fUL) /*!< DCDC DCDC_TRIM_1_REG: DCDC_V18_TRIM_N (Bitfield-Mask: 0x3f) */ -#define DCDC_DCDC_TRIM_1_REG_DCDC_V18_TRIM_P_Pos (6UL) /*!< DCDC DCDC_TRIM_1_REG: DCDC_V18_TRIM_P (Bit 6) */ -#define DCDC_DCDC_TRIM_1_REG_DCDC_V18_TRIM_P_Msk (0xfc0UL) /*!< DCDC DCDC_TRIM_1_REG: DCDC_V18_TRIM_P (Bitfield-Mask: 0x3f) */ - -/* ---------------------------- DCDC_DCDC_TRIM_2_REG ---------------------------- */ -#define DCDC_DCDC_TRIM_2_REG_DCDC_VDD_TRIM_N_Pos (0UL) /*!< DCDC DCDC_TRIM_2_REG: DCDC_VDD_TRIM_N (Bit 0) */ -#define DCDC_DCDC_TRIM_2_REG_DCDC_VDD_TRIM_N_Msk (0x3fUL) /*!< DCDC DCDC_TRIM_2_REG: DCDC_VDD_TRIM_N (Bitfield-Mask: 0x3f) */ -#define DCDC_DCDC_TRIM_2_REG_DCDC_VDD_TRIM_P_Pos (6UL) /*!< DCDC DCDC_TRIM_2_REG: DCDC_VDD_TRIM_P (Bit 6) */ -#define DCDC_DCDC_TRIM_2_REG_DCDC_VDD_TRIM_P_Msk (0xfc0UL) /*!< DCDC DCDC_TRIM_2_REG: DCDC_VDD_TRIM_P (Bitfield-Mask: 0x3f) */ - -/* ---------------------------- DCDC_DCDC_TRIM_3_REG ---------------------------- */ -#define DCDC_DCDC_TRIM_3_REG_DCDC_V18P_TRIM_N_Pos (0UL) /*!< DCDC DCDC_TRIM_3_REG: DCDC_V18P_TRIM_N (Bit 0) */ -#define DCDC_DCDC_TRIM_3_REG_DCDC_V18P_TRIM_N_Msk (0x3fUL) /*!< DCDC DCDC_TRIM_3_REG: DCDC_V18P_TRIM_N (Bitfield-Mask: 0x3f) */ -#define DCDC_DCDC_TRIM_3_REG_DCDC_V18P_TRIM_P_Pos (6UL) /*!< DCDC DCDC_TRIM_3_REG: DCDC_V18P_TRIM_P (Bit 6) */ -#define DCDC_DCDC_TRIM_3_REG_DCDC_V18P_TRIM_P_Msk (0xfc0UL) /*!< DCDC DCDC_TRIM_3_REG: DCDC_V18P_TRIM_P (Bitfield-Mask: 0x3f) */ - -/* -------------------------- DCDC_DCDC_IRQ_STATUS_REG -------------------------- */ -#define DCDC_DCDC_IRQ_STATUS_REG_DCDC_V14_TIMEOUT_IRQ_STATUS_Pos (0UL) /*!< DCDC DCDC_IRQ_STATUS_REG: DCDC_V14_TIMEOUT_IRQ_STATUS (Bit 0) */ -#define DCDC_DCDC_IRQ_STATUS_REG_DCDC_V14_TIMEOUT_IRQ_STATUS_Msk (0x1UL) /*!< DCDC DCDC_IRQ_STATUS_REG: DCDC_V14_TIMEOUT_IRQ_STATUS (Bitfield-Mask: 0x01) */ -#define DCDC_DCDC_IRQ_STATUS_REG_DCDC_V18_TIMEOUT_IRQ_STATUS_Pos (1UL) /*!< DCDC DCDC_IRQ_STATUS_REG: DCDC_V18_TIMEOUT_IRQ_STATUS (Bit 1) */ -#define DCDC_DCDC_IRQ_STATUS_REG_DCDC_V18_TIMEOUT_IRQ_STATUS_Msk (0x2UL) /*!< DCDC DCDC_IRQ_STATUS_REG: DCDC_V18_TIMEOUT_IRQ_STATUS (Bitfield-Mask: 0x01) */ -#define DCDC_DCDC_IRQ_STATUS_REG_DCDC_VDD_TIMEOUT_IRQ_STATUS_Pos (2UL) /*!< DCDC DCDC_IRQ_STATUS_REG: DCDC_VDD_TIMEOUT_IRQ_STATUS (Bit 2) */ -#define DCDC_DCDC_IRQ_STATUS_REG_DCDC_VDD_TIMEOUT_IRQ_STATUS_Msk (0x4UL) /*!< DCDC DCDC_IRQ_STATUS_REG: DCDC_VDD_TIMEOUT_IRQ_STATUS (Bitfield-Mask: 0x01) */ -#define DCDC_DCDC_IRQ_STATUS_REG_DCDC_V18P_TIMEOUT_IRQ_STATUS_Pos (3UL) /*!< DCDC DCDC_IRQ_STATUS_REG: DCDC_V18P_TIMEOUT_IRQ_STATUS (Bit 3) */ -#define DCDC_DCDC_IRQ_STATUS_REG_DCDC_V18P_TIMEOUT_IRQ_STATUS_Msk (0x8UL) /*!< DCDC DCDC_IRQ_STATUS_REG: DCDC_V18P_TIMEOUT_IRQ_STATUS (Bitfield-Mask: 0x01) */ -#define DCDC_DCDC_IRQ_STATUS_REG_DCDC_BROWN_OUT_IRQ_STATUS_Pos (4UL) /*!< DCDC DCDC_IRQ_STATUS_REG: DCDC_BROWN_OUT_IRQ_STATUS (Bit 4) */ -#define DCDC_DCDC_IRQ_STATUS_REG_DCDC_BROWN_OUT_IRQ_STATUS_Msk (0x10UL) /*!< DCDC DCDC_IRQ_STATUS_REG: DCDC_BROWN_OUT_IRQ_STATUS (Bitfield-Mask: 0x01) */ - -/* --------------------------- DCDC_DCDC_IRQ_CLEAR_REG -------------------------- */ -#define DCDC_DCDC_IRQ_CLEAR_REG_DCDC_V14_TIMEOUT_IRQ_CLEAR_Pos (0UL) /*!< DCDC DCDC_IRQ_CLEAR_REG: DCDC_V14_TIMEOUT_IRQ_CLEAR (Bit 0) */ -#define DCDC_DCDC_IRQ_CLEAR_REG_DCDC_V14_TIMEOUT_IRQ_CLEAR_Msk (0x1UL) /*!< DCDC DCDC_IRQ_CLEAR_REG: DCDC_V14_TIMEOUT_IRQ_CLEAR (Bitfield-Mask: 0x01) */ -#define DCDC_DCDC_IRQ_CLEAR_REG_DCDC_V18_TIMEOUT_IRQ_CLEAR_Pos (1UL) /*!< DCDC DCDC_IRQ_CLEAR_REG: DCDC_V18_TIMEOUT_IRQ_CLEAR (Bit 1) */ -#define DCDC_DCDC_IRQ_CLEAR_REG_DCDC_V18_TIMEOUT_IRQ_CLEAR_Msk (0x2UL) /*!< DCDC DCDC_IRQ_CLEAR_REG: DCDC_V18_TIMEOUT_IRQ_CLEAR (Bitfield-Mask: 0x01) */ -#define DCDC_DCDC_IRQ_CLEAR_REG_DCDC_VDD_TIMEOUT_IRQ_CLEAR_Pos (2UL) /*!< DCDC DCDC_IRQ_CLEAR_REG: DCDC_VDD_TIMEOUT_IRQ_CLEAR (Bit 2) */ -#define DCDC_DCDC_IRQ_CLEAR_REG_DCDC_VDD_TIMEOUT_IRQ_CLEAR_Msk (0x4UL) /*!< DCDC DCDC_IRQ_CLEAR_REG: DCDC_VDD_TIMEOUT_IRQ_CLEAR (Bitfield-Mask: 0x01) */ -#define DCDC_DCDC_IRQ_CLEAR_REG_DCDC_V18P_TIMEOUT_IRQ_CLEAR_Pos (3UL) /*!< DCDC DCDC_IRQ_CLEAR_REG: DCDC_V18P_TIMEOUT_IRQ_CLEAR (Bit 3) */ -#define DCDC_DCDC_IRQ_CLEAR_REG_DCDC_V18P_TIMEOUT_IRQ_CLEAR_Msk (0x8UL) /*!< DCDC DCDC_IRQ_CLEAR_REG: DCDC_V18P_TIMEOUT_IRQ_CLEAR (Bitfield-Mask: 0x01) */ -#define DCDC_DCDC_IRQ_CLEAR_REG_DCDC_BROWN_OUT_IRQ_CLEAR_Pos (4UL) /*!< DCDC DCDC_IRQ_CLEAR_REG: DCDC_BROWN_OUT_IRQ_CLEAR (Bit 4) */ -#define DCDC_DCDC_IRQ_CLEAR_REG_DCDC_BROWN_OUT_IRQ_CLEAR_Msk (0x10UL) /*!< DCDC DCDC_IRQ_CLEAR_REG: DCDC_BROWN_OUT_IRQ_CLEAR (Bitfield-Mask: 0x01) */ - -/* --------------------------- DCDC_DCDC_IRQ_MASK_REG --------------------------- */ -#define DCDC_DCDC_IRQ_MASK_REG_DCDC_V14_TIMEOUT_IRQ_MASK_Pos (0UL) /*!< DCDC DCDC_IRQ_MASK_REG: DCDC_V14_TIMEOUT_IRQ_MASK (Bit 0) */ -#define DCDC_DCDC_IRQ_MASK_REG_DCDC_V14_TIMEOUT_IRQ_MASK_Msk (0x1UL) /*!< DCDC DCDC_IRQ_MASK_REG: DCDC_V14_TIMEOUT_IRQ_MASK (Bitfield-Mask: 0x01) */ -#define DCDC_DCDC_IRQ_MASK_REG_DCDC_V18_TIMEOUT_IRQ_MASK_Pos (1UL) /*!< DCDC DCDC_IRQ_MASK_REG: DCDC_V18_TIMEOUT_IRQ_MASK (Bit 1) */ -#define DCDC_DCDC_IRQ_MASK_REG_DCDC_V18_TIMEOUT_IRQ_MASK_Msk (0x2UL) /*!< DCDC DCDC_IRQ_MASK_REG: DCDC_V18_TIMEOUT_IRQ_MASK (Bitfield-Mask: 0x01) */ -#define DCDC_DCDC_IRQ_MASK_REG_DCDC_VDD_TIMEOUT_IRQ_MASK_Pos (2UL) /*!< DCDC DCDC_IRQ_MASK_REG: DCDC_VDD_TIMEOUT_IRQ_MASK (Bit 2) */ -#define DCDC_DCDC_IRQ_MASK_REG_DCDC_VDD_TIMEOUT_IRQ_MASK_Msk (0x4UL) /*!< DCDC DCDC_IRQ_MASK_REG: DCDC_VDD_TIMEOUT_IRQ_MASK (Bitfield-Mask: 0x01) */ -#define DCDC_DCDC_IRQ_MASK_REG_DCDC_V18P_TIMEOUT_IRQ_MASK_Pos (3UL) /*!< DCDC DCDC_IRQ_MASK_REG: DCDC_V18P_TIMEOUT_IRQ_MASK (Bit 3) */ -#define DCDC_DCDC_IRQ_MASK_REG_DCDC_V18P_TIMEOUT_IRQ_MASK_Msk (0x8UL) /*!< DCDC DCDC_IRQ_MASK_REG: DCDC_V18P_TIMEOUT_IRQ_MASK (Bitfield-Mask: 0x01) */ -#define DCDC_DCDC_IRQ_MASK_REG_DCDC_BROWN_OUT_IRQ_MASK_Pos (4UL) /*!< DCDC DCDC_IRQ_MASK_REG: DCDC_BROWN_OUT_IRQ_MASK (Bit 4) */ -#define DCDC_DCDC_IRQ_MASK_REG_DCDC_BROWN_OUT_IRQ_MASK_Msk (0x10UL) /*!< DCDC DCDC_IRQ_MASK_REG: DCDC_BROWN_OUT_IRQ_MASK (Bitfield-Mask: 0x01) */ - - -/* ================================================================================ */ -/* ================ struct 'DEM' Position & Mask ================ */ -/* ================================================================================ */ - - -/* ----------------------------- DEM_RF_DEM_CTRL_REG ---------------------------- */ -#define DEM_RF_DEM_CTRL_REG_RXDATA_INV_Pos (0UL) /*!< DEM RF_DEM_CTRL_REG: RXDATA_INV (Bit 0) */ -#define DEM_RF_DEM_CTRL_REG_RXDATA_INV_Msk (0x1UL) /*!< DEM RF_DEM_CTRL_REG: RXDATA_INV (Bitfield-Mask: 0x01) */ -#define DEM_RF_DEM_CTRL_REG_DEM_HSI_POL_Pos (1UL) /*!< DEM RF_DEM_CTRL_REG: DEM_HSI_POL (Bit 1) */ -#define DEM_RF_DEM_CTRL_REG_DEM_HSI_POL_Msk (0x2UL) /*!< DEM RF_DEM_CTRL_REG: DEM_HSI_POL (Bitfield-Mask: 0x01) */ -#define DEM_RF_DEM_CTRL_REG_MATCH0101_TH_Pos (2UL) /*!< DEM RF_DEM_CTRL_REG: MATCH0101_TH (Bit 2) */ -#define DEM_RF_DEM_CTRL_REG_MATCH0101_TH_Msk (0x3cUL) /*!< DEM RF_DEM_CTRL_REG: MATCH0101_TH (Bitfield-Mask: 0x0f) */ -#define DEM_RF_DEM_CTRL_REG_EQUAL_EN_Pos (6UL) /*!< DEM RF_DEM_CTRL_REG: EQUAL_EN (Bit 6) */ -#define DEM_RF_DEM_CTRL_REG_EQUAL_EN_Msk (0x40UL) /*!< DEM RF_DEM_CTRL_REG: EQUAL_EN (Bitfield-Mask: 0x01) */ -#define DEM_RF_DEM_CTRL_REG_BLE_DDC_EN_Pos (7UL) /*!< DEM RF_DEM_CTRL_REG: BLE_DDC_EN (Bit 7) */ -#define DEM_RF_DEM_CTRL_REG_BLE_DDC_EN_Msk (0x80UL) /*!< DEM RF_DEM_CTRL_REG: BLE_DDC_EN (Bitfield-Mask: 0x01) */ -#define DEM_RF_DEM_CTRL_REG_IQCORR_EN_Pos (8UL) /*!< DEM RF_DEM_CTRL_REG: IQCORR_EN (Bit 8) */ -#define DEM_RF_DEM_CTRL_REG_IQCORR_EN_Msk (0x100UL) /*!< DEM RF_DEM_CTRL_REG: IQCORR_EN (Bitfield-Mask: 0x01) */ -#define DEM_RF_DEM_CTRL_REG_CFE_DOUBLE_EN_Pos (9UL) /*!< DEM RF_DEM_CTRL_REG: CFE_DOUBLE_EN (Bit 9) */ -#define DEM_RF_DEM_CTRL_REG_CFE_DOUBLE_EN_Msk (0x200UL) /*!< DEM RF_DEM_CTRL_REG: CFE_DOUBLE_EN (Bitfield-Mask: 0x01) */ -#define DEM_RF_DEM_CTRL_REG_CFE_MEDIAN_EN_Pos (10UL) /*!< DEM RF_DEM_CTRL_REG: CFE_MEDIAN_EN (Bit 10) */ -#define DEM_RF_DEM_CTRL_REG_CFE_MEDIAN_EN_Msk (0x400UL) /*!< DEM RF_DEM_CTRL_REG: CFE_MEDIAN_EN (Bitfield-Mask: 0x01) */ -#define DEM_RF_DEM_CTRL_REG_CFE_PPOLE_Pos (11UL) /*!< DEM RF_DEM_CTRL_REG: CFE_PPOLE (Bit 11) */ -#define DEM_RF_DEM_CTRL_REG_CFE_PPOLE_Msk (0x3800UL) /*!< DEM RF_DEM_CTRL_REG: CFE_PPOLE (Bitfield-Mask: 0x07) */ - -/* ---------------------------- DEM_RF_AGC_LUT_01_REG --------------------------- */ -#define DEM_RF_AGC_LUT_01_REG_VGA2_GAIN0_Pos (0UL) /*!< DEM RF_AGC_LUT_01_REG: VGA2_GAIN0 (Bit 0) */ -#define DEM_RF_AGC_LUT_01_REG_VGA2_GAIN0_Msk (0x7UL) /*!< DEM RF_AGC_LUT_01_REG: VGA2_GAIN0 (Bitfield-Mask: 0x07) */ -#define DEM_RF_AGC_LUT_01_REG_VGA1_GAIN0_Pos (3UL) /*!< DEM RF_AGC_LUT_01_REG: VGA1_GAIN0 (Bit 3) */ -#define DEM_RF_AGC_LUT_01_REG_VGA1_GAIN0_Msk (0x38UL) /*!< DEM RF_AGC_LUT_01_REG: VGA1_GAIN0 (Bitfield-Mask: 0x07) */ -#define DEM_RF_AGC_LUT_01_REG_LNA_GAIN0_Pos (6UL) /*!< DEM RF_AGC_LUT_01_REG: LNA_GAIN0 (Bit 6) */ -#define DEM_RF_AGC_LUT_01_REG_LNA_GAIN0_Msk (0xc0UL) /*!< DEM RF_AGC_LUT_01_REG: LNA_GAIN0 (Bitfield-Mask: 0x03) */ -#define DEM_RF_AGC_LUT_01_REG_VGA2_GAIN1_Pos (8UL) /*!< DEM RF_AGC_LUT_01_REG: VGA2_GAIN1 (Bit 8) */ -#define DEM_RF_AGC_LUT_01_REG_VGA2_GAIN1_Msk (0x700UL) /*!< DEM RF_AGC_LUT_01_REG: VGA2_GAIN1 (Bitfield-Mask: 0x07) */ -#define DEM_RF_AGC_LUT_01_REG_VGA1_GAIN1_Pos (11UL) /*!< DEM RF_AGC_LUT_01_REG: VGA1_GAIN1 (Bit 11) */ -#define DEM_RF_AGC_LUT_01_REG_VGA1_GAIN1_Msk (0x3800UL) /*!< DEM RF_AGC_LUT_01_REG: VGA1_GAIN1 (Bitfield-Mask: 0x07) */ -#define DEM_RF_AGC_LUT_01_REG_LNA_GAIN1_Pos (14UL) /*!< DEM RF_AGC_LUT_01_REG: LNA_GAIN1 (Bit 14) */ -#define DEM_RF_AGC_LUT_01_REG_LNA_GAIN1_Msk (0xc000UL) /*!< DEM RF_AGC_LUT_01_REG: LNA_GAIN1 (Bitfield-Mask: 0x03) */ - -/* ---------------------------- DEM_RF_AGC_LUT_23_REG --------------------------- */ -#define DEM_RF_AGC_LUT_23_REG_VGA2_GAIN2_Pos (0UL) /*!< DEM RF_AGC_LUT_23_REG: VGA2_GAIN2 (Bit 0) */ -#define DEM_RF_AGC_LUT_23_REG_VGA2_GAIN2_Msk (0x7UL) /*!< DEM RF_AGC_LUT_23_REG: VGA2_GAIN2 (Bitfield-Mask: 0x07) */ -#define DEM_RF_AGC_LUT_23_REG_VGA1_GAIN2_Pos (3UL) /*!< DEM RF_AGC_LUT_23_REG: VGA1_GAIN2 (Bit 3) */ -#define DEM_RF_AGC_LUT_23_REG_VGA1_GAIN2_Msk (0x38UL) /*!< DEM RF_AGC_LUT_23_REG: VGA1_GAIN2 (Bitfield-Mask: 0x07) */ -#define DEM_RF_AGC_LUT_23_REG_LNA_GAIN2_Pos (6UL) /*!< DEM RF_AGC_LUT_23_REG: LNA_GAIN2 (Bit 6) */ -#define DEM_RF_AGC_LUT_23_REG_LNA_GAIN2_Msk (0xc0UL) /*!< DEM RF_AGC_LUT_23_REG: LNA_GAIN2 (Bitfield-Mask: 0x03) */ -#define DEM_RF_AGC_LUT_23_REG_VGA2_GAIN3_Pos (8UL) /*!< DEM RF_AGC_LUT_23_REG: VGA2_GAIN3 (Bit 8) */ -#define DEM_RF_AGC_LUT_23_REG_VGA2_GAIN3_Msk (0x700UL) /*!< DEM RF_AGC_LUT_23_REG: VGA2_GAIN3 (Bitfield-Mask: 0x07) */ -#define DEM_RF_AGC_LUT_23_REG_VGA1_GAIN3_Pos (11UL) /*!< DEM RF_AGC_LUT_23_REG: VGA1_GAIN3 (Bit 11) */ -#define DEM_RF_AGC_LUT_23_REG_VGA1_GAIN3_Msk (0x3800UL) /*!< DEM RF_AGC_LUT_23_REG: VGA1_GAIN3 (Bitfield-Mask: 0x07) */ -#define DEM_RF_AGC_LUT_23_REG_LNA_GAIN3_Pos (14UL) /*!< DEM RF_AGC_LUT_23_REG: LNA_GAIN3 (Bit 14) */ -#define DEM_RF_AGC_LUT_23_REG_LNA_GAIN3_Msk (0xc000UL) /*!< DEM RF_AGC_LUT_23_REG: LNA_GAIN3 (Bitfield-Mask: 0x03) */ - -/* ---------------------------- DEM_RF_AGC_LUT_45_REG --------------------------- */ -#define DEM_RF_AGC_LUT_45_REG_VGA2_GAIN4_Pos (0UL) /*!< DEM RF_AGC_LUT_45_REG: VGA2_GAIN4 (Bit 0) */ -#define DEM_RF_AGC_LUT_45_REG_VGA2_GAIN4_Msk (0x7UL) /*!< DEM RF_AGC_LUT_45_REG: VGA2_GAIN4 (Bitfield-Mask: 0x07) */ -#define DEM_RF_AGC_LUT_45_REG_VGA1_GAIN4_Pos (3UL) /*!< DEM RF_AGC_LUT_45_REG: VGA1_GAIN4 (Bit 3) */ -#define DEM_RF_AGC_LUT_45_REG_VGA1_GAIN4_Msk (0x38UL) /*!< DEM RF_AGC_LUT_45_REG: VGA1_GAIN4 (Bitfield-Mask: 0x07) */ -#define DEM_RF_AGC_LUT_45_REG_LNA_GAIN4_Pos (6UL) /*!< DEM RF_AGC_LUT_45_REG: LNA_GAIN4 (Bit 6) */ -#define DEM_RF_AGC_LUT_45_REG_LNA_GAIN4_Msk (0xc0UL) /*!< DEM RF_AGC_LUT_45_REG: LNA_GAIN4 (Bitfield-Mask: 0x03) */ -#define DEM_RF_AGC_LUT_45_REG_VGA2_GAIN5_Pos (8UL) /*!< DEM RF_AGC_LUT_45_REG: VGA2_GAIN5 (Bit 8) */ -#define DEM_RF_AGC_LUT_45_REG_VGA2_GAIN5_Msk (0x700UL) /*!< DEM RF_AGC_LUT_45_REG: VGA2_GAIN5 (Bitfield-Mask: 0x07) */ -#define DEM_RF_AGC_LUT_45_REG_VGA1_GAIN5_Pos (11UL) /*!< DEM RF_AGC_LUT_45_REG: VGA1_GAIN5 (Bit 11) */ -#define DEM_RF_AGC_LUT_45_REG_VGA1_GAIN5_Msk (0x3800UL) /*!< DEM RF_AGC_LUT_45_REG: VGA1_GAIN5 (Bitfield-Mask: 0x07) */ -#define DEM_RF_AGC_LUT_45_REG_LNA_GAIN5_Pos (14UL) /*!< DEM RF_AGC_LUT_45_REG: LNA_GAIN5 (Bit 14) */ -#define DEM_RF_AGC_LUT_45_REG_LNA_GAIN5_Msk (0xc000UL) /*!< DEM RF_AGC_LUT_45_REG: LNA_GAIN5 (Bitfield-Mask: 0x03) */ - -/* ---------------------------- DEM_RF_AGC_LUT_67_REG --------------------------- */ -#define DEM_RF_AGC_LUT_67_REG_VGA2_GAIN6_Pos (0UL) /*!< DEM RF_AGC_LUT_67_REG: VGA2_GAIN6 (Bit 0) */ -#define DEM_RF_AGC_LUT_67_REG_VGA2_GAIN6_Msk (0x7UL) /*!< DEM RF_AGC_LUT_67_REG: VGA2_GAIN6 (Bitfield-Mask: 0x07) */ -#define DEM_RF_AGC_LUT_67_REG_VGA1_GAIN6_Pos (3UL) /*!< DEM RF_AGC_LUT_67_REG: VGA1_GAIN6 (Bit 3) */ -#define DEM_RF_AGC_LUT_67_REG_VGA1_GAIN6_Msk (0x38UL) /*!< DEM RF_AGC_LUT_67_REG: VGA1_GAIN6 (Bitfield-Mask: 0x07) */ -#define DEM_RF_AGC_LUT_67_REG_LNA_GAIN6_Pos (6UL) /*!< DEM RF_AGC_LUT_67_REG: LNA_GAIN6 (Bit 6) */ -#define DEM_RF_AGC_LUT_67_REG_LNA_GAIN6_Msk (0xc0UL) /*!< DEM RF_AGC_LUT_67_REG: LNA_GAIN6 (Bitfield-Mask: 0x03) */ -#define DEM_RF_AGC_LUT_67_REG_VGA2_GAIN7_Pos (8UL) /*!< DEM RF_AGC_LUT_67_REG: VGA2_GAIN7 (Bit 8) */ -#define DEM_RF_AGC_LUT_67_REG_VGA2_GAIN7_Msk (0x700UL) /*!< DEM RF_AGC_LUT_67_REG: VGA2_GAIN7 (Bitfield-Mask: 0x07) */ -#define DEM_RF_AGC_LUT_67_REG_VGA1_GAIN7_Pos (11UL) /*!< DEM RF_AGC_LUT_67_REG: VGA1_GAIN7 (Bit 11) */ -#define DEM_RF_AGC_LUT_67_REG_VGA1_GAIN7_Msk (0x3800UL) /*!< DEM RF_AGC_LUT_67_REG: VGA1_GAIN7 (Bitfield-Mask: 0x07) */ -#define DEM_RF_AGC_LUT_67_REG_LNA_GAIN7_Pos (14UL) /*!< DEM RF_AGC_LUT_67_REG: LNA_GAIN7 (Bit 14) */ -#define DEM_RF_AGC_LUT_67_REG_LNA_GAIN7_Msk (0xc000UL) /*!< DEM RF_AGC_LUT_67_REG: LNA_GAIN7 (Bitfield-Mask: 0x03) */ - -/* ---------------------------- DEM_RF_AGC_LUT_89_REG --------------------------- */ -#define DEM_RF_AGC_LUT_89_REG_VGA2_GAIN8_Pos (0UL) /*!< DEM RF_AGC_LUT_89_REG: VGA2_GAIN8 (Bit 0) */ -#define DEM_RF_AGC_LUT_89_REG_VGA2_GAIN8_Msk (0x7UL) /*!< DEM RF_AGC_LUT_89_REG: VGA2_GAIN8 (Bitfield-Mask: 0x07) */ -#define DEM_RF_AGC_LUT_89_REG_VGA1_GAIN8_Pos (3UL) /*!< DEM RF_AGC_LUT_89_REG: VGA1_GAIN8 (Bit 3) */ -#define DEM_RF_AGC_LUT_89_REG_VGA1_GAIN8_Msk (0x38UL) /*!< DEM RF_AGC_LUT_89_REG: VGA1_GAIN8 (Bitfield-Mask: 0x07) */ -#define DEM_RF_AGC_LUT_89_REG_LNA_GAIN8_Pos (6UL) /*!< DEM RF_AGC_LUT_89_REG: LNA_GAIN8 (Bit 6) */ -#define DEM_RF_AGC_LUT_89_REG_LNA_GAIN8_Msk (0xc0UL) /*!< DEM RF_AGC_LUT_89_REG: LNA_GAIN8 (Bitfield-Mask: 0x03) */ -#define DEM_RF_AGC_LUT_89_REG_VGA2_GAIN9_Pos (8UL) /*!< DEM RF_AGC_LUT_89_REG: VGA2_GAIN9 (Bit 8) */ -#define DEM_RF_AGC_LUT_89_REG_VGA2_GAIN9_Msk (0x700UL) /*!< DEM RF_AGC_LUT_89_REG: VGA2_GAIN9 (Bitfield-Mask: 0x07) */ -#define DEM_RF_AGC_LUT_89_REG_VGA1_GAIN9_Pos (11UL) /*!< DEM RF_AGC_LUT_89_REG: VGA1_GAIN9 (Bit 11) */ -#define DEM_RF_AGC_LUT_89_REG_VGA1_GAIN9_Msk (0x3800UL) /*!< DEM RF_AGC_LUT_89_REG: VGA1_GAIN9 (Bitfield-Mask: 0x07) */ -#define DEM_RF_AGC_LUT_89_REG_LNA_GAIN9_Pos (14UL) /*!< DEM RF_AGC_LUT_89_REG: LNA_GAIN9 (Bit 14) */ -#define DEM_RF_AGC_LUT_89_REG_LNA_GAIN9_Msk (0xc000UL) /*!< DEM RF_AGC_LUT_89_REG: LNA_GAIN9 (Bitfield-Mask: 0x03) */ - -/* ---------------------------- DEM_RF_AGC_CTRL1_REG ---------------------------- */ -#define DEM_RF_AGC_CTRL1_REG_AGC_TH_LOW_Pos (0UL) /*!< DEM RF_AGC_CTRL1_REG: AGC_TH_LOW (Bit 0) */ -#define DEM_RF_AGC_CTRL1_REG_AGC_TH_LOW_Msk (0x7fUL) /*!< DEM RF_AGC_CTRL1_REG: AGC_TH_LOW (Bitfield-Mask: 0x7f) */ -#define DEM_RF_AGC_CTRL1_REG_AGC_TH_HIGH_Pos (7UL) /*!< DEM RF_AGC_CTRL1_REG: AGC_TH_HIGH (Bit 7) */ -#define DEM_RF_AGC_CTRL1_REG_AGC_TH_HIGH_Msk (0x3f80UL) /*!< DEM RF_AGC_CTRL1_REG: AGC_TH_HIGH (Bitfield-Mask: 0x7f) */ -#define DEM_RF_AGC_CTRL1_REG_AGC_MODE_Pos (14UL) /*!< DEM RF_AGC_CTRL1_REG: AGC_MODE (Bit 14) */ -#define DEM_RF_AGC_CTRL1_REG_AGC_MODE_Msk (0xc000UL) /*!< DEM RF_AGC_CTRL1_REG: AGC_MODE (Bitfield-Mask: 0x03) */ - -/* ---------------------------- DEM_RF_AGC_CTRL2_REG ---------------------------- */ -#define DEM_RF_AGC_CTRL2_REG_RSSI_TH_Pos (0UL) /*!< DEM RF_AGC_CTRL2_REG: RSSI_TH (Bit 0) */ -#define DEM_RF_AGC_CTRL2_REG_RSSI_TH_Msk (0x3fUL) /*!< DEM RF_AGC_CTRL2_REG: RSSI_TH (Bitfield-Mask: 0x3f) */ -#define DEM_RF_AGC_CTRL2_REG_EN_FRZ_GAIN_Pos (6UL) /*!< DEM RF_AGC_CTRL2_REG: EN_FRZ_GAIN (Bit 6) */ -#define DEM_RF_AGC_CTRL2_REG_EN_FRZ_GAIN_Msk (0x40UL) /*!< DEM RF_AGC_CTRL2_REG: EN_FRZ_GAIN (Bitfield-Mask: 0x01) */ -#define DEM_RF_AGC_CTRL2_REG_AGCSETTING_SEL_Pos (7UL) /*!< DEM RF_AGC_CTRL2_REG: AGCSETTING_SEL (Bit 7) */ -#define DEM_RF_AGC_CTRL2_REG_AGCSETTING_SEL_Msk (0x80UL) /*!< DEM RF_AGC_CTRL2_REG: AGCSETTING_SEL (Bitfield-Mask: 0x01) */ -#define DEM_RF_AGC_CTRL2_REG_AGCSETTING_WR_Pos (8UL) /*!< DEM RF_AGC_CTRL2_REG: AGCSETTING_WR (Bit 8) */ -#define DEM_RF_AGC_CTRL2_REG_AGCSETTING_WR_Msk (0xf00UL) /*!< DEM RF_AGC_CTRL2_REG: AGCSETTING_WR (Bitfield-Mask: 0x0f) */ -#define DEM_RF_AGC_CTRL2_REG_SLOW_AGC_Pos (12UL) /*!< DEM RF_AGC_CTRL2_REG: SLOW_AGC (Bit 12) */ -#define DEM_RF_AGC_CTRL2_REG_SLOW_AGC_Msk (0x1000UL) /*!< DEM RF_AGC_CTRL2_REG: SLOW_AGC (Bitfield-Mask: 0x01) */ - -/* ----------------------------- DEM_RF_AFC_CTRL_REG ---------------------------- */ -#define DEM_RF_AFC_CTRL_REG_AFC_MODE_Pos (0UL) /*!< DEM RF_AFC_CTRL_REG: AFC_MODE (Bit 0) */ -#define DEM_RF_AFC_CTRL_REG_AFC_MODE_Msk (0xfUL) /*!< DEM RF_AFC_CTRL_REG: AFC_MODE (Bitfield-Mask: 0x0f) */ -#define DEM_RF_AFC_CTRL_REG_POLE1_Pos (4UL) /*!< DEM RF_AFC_CTRL_REG: POLE1 (Bit 4) */ -#define DEM_RF_AFC_CTRL_REG_POLE1_Msk (0x30UL) /*!< DEM RF_AFC_CTRL_REG: POLE1 (Bitfield-Mask: 0x03) */ -#define DEM_RF_AFC_CTRL_REG_POLE2_Pos (6UL) /*!< DEM RF_AFC_CTRL_REG: POLE2 (Bit 6) */ -#define DEM_RF_AFC_CTRL_REG_POLE2_Msk (0xc0UL) /*!< DEM RF_AFC_CTRL_REG: POLE2 (Bitfield-Mask: 0x03) */ -#define DEM_RF_AFC_CTRL_REG_PAD_MODE_Pos (8UL) /*!< DEM RF_AFC_CTRL_REG: PAD_MODE (Bit 8) */ -#define DEM_RF_AFC_CTRL_REG_PAD_MODE_Msk (0x300UL) /*!< DEM RF_AFC_CTRL_REG: PAD_MODE (Bitfield-Mask: 0x03) */ -#define DEM_RF_AFC_CTRL_REG_APD_MODE_Pos (10UL) /*!< DEM RF_AFC_CTRL_REG: APD_MODE (Bit 10) */ -#define DEM_RF_AFC_CTRL_REG_APD_MODE_Msk (0x1c00UL) /*!< DEM RF_AFC_CTRL_REG: APD_MODE (Bitfield-Mask: 0x07) */ - -/* ------------------------- DEM_RF_DC_OFFSET_CTRL1_REG ------------------------- */ -#define DEM_RF_DC_OFFSET_CTRL1_REG_DCOFFSET_I_WR_Pos (0UL) /*!< DEM RF_DC_OFFSET_CTRL1_REG: DCOFFSET_I_WR (Bit 0) */ -#define DEM_RF_DC_OFFSET_CTRL1_REG_DCOFFSET_I_WR_Msk (0xffUL) /*!< DEM RF_DC_OFFSET_CTRL1_REG: DCOFFSET_I_WR (Bitfield-Mask: 0xff) */ -#define DEM_RF_DC_OFFSET_CTRL1_REG_DCOFFSET_Q_WR_Pos (8UL) /*!< DEM RF_DC_OFFSET_CTRL1_REG: DCOFFSET_Q_WR (Bit 8) */ -#define DEM_RF_DC_OFFSET_CTRL1_REG_DCOFFSET_Q_WR_Msk (0xff00UL) /*!< DEM RF_DC_OFFSET_CTRL1_REG: DCOFFSET_Q_WR (Bitfield-Mask: 0xff) */ - -/* ------------------------- DEM_RF_DC_OFFSET_CTRL2_REG ------------------------- */ -#define DEM_RF_DC_OFFSET_CTRL2_REG_DCOFFSET_SEL_Pos (0UL) /*!< DEM RF_DC_OFFSET_CTRL2_REG: DCOFFSET_SEL (Bit 0) */ -#define DEM_RF_DC_OFFSET_CTRL2_REG_DCOFFSET_SEL_Msk (0x1UL) /*!< DEM RF_DC_OFFSET_CTRL2_REG: DCOFFSET_SEL (Bitfield-Mask: 0x01) */ -#define DEM_RF_DC_OFFSET_CTRL2_REG_DCPARCAL_EN_Pos (1UL) /*!< DEM RF_DC_OFFSET_CTRL2_REG: DCPARCAL_EN (Bit 1) */ -#define DEM_RF_DC_OFFSET_CTRL2_REG_DCPARCAL_EN_Msk (0x2UL) /*!< DEM RF_DC_OFFSET_CTRL2_REG: DCPARCAL_EN (Bitfield-Mask: 0x01) */ -#define DEM_RF_DC_OFFSET_CTRL2_REG_DCPOLE_Pos (2UL) /*!< DEM RF_DC_OFFSET_CTRL2_REG: DCPOLE (Bit 2) */ -#define DEM_RF_DC_OFFSET_CTRL2_REG_DCPOLE_Msk (0xcUL) /*!< DEM RF_DC_OFFSET_CTRL2_REG: DCPOLE (Bitfield-Mask: 0x03) */ -#define DEM_RF_DC_OFFSET_CTRL2_REG_DCNSTEP_Pos (4UL) /*!< DEM RF_DC_OFFSET_CTRL2_REG: DCNSTEP (Bit 4) */ -#define DEM_RF_DC_OFFSET_CTRL2_REG_DCNSTEP_Msk (0x70UL) /*!< DEM RF_DC_OFFSET_CTRL2_REG: DCNSTEP (Bitfield-Mask: 0x07) */ -#define DEM_RF_DC_OFFSET_CTRL2_REG_DCNGAIN_Pos (7UL) /*!< DEM RF_DC_OFFSET_CTRL2_REG: DCNGAIN (Bit 7) */ -#define DEM_RF_DC_OFFSET_CTRL2_REG_DCNGAIN_Msk (0x180UL) /*!< DEM RF_DC_OFFSET_CTRL2_REG: DCNGAIN (Bitfield-Mask: 0x03) */ -#define DEM_RF_DC_OFFSET_CTRL2_REG_DCPARCAL_INIT_Pos (9UL) /*!< DEM RF_DC_OFFSET_CTRL2_REG: DCPARCAL_INIT (Bit 9) */ -#define DEM_RF_DC_OFFSET_CTRL2_REG_DCPARCAL_INIT_Msk (0x200UL) /*!< DEM RF_DC_OFFSET_CTRL2_REG: DCPARCAL_INIT (Bitfield-Mask: 0x01) */ -#define DEM_RF_DC_OFFSET_CTRL2_REG_DCVGA1SCALE_EN_Pos (10UL) /*!< DEM RF_DC_OFFSET_CTRL2_REG: DCVGA1SCALE_EN (Bit 10) */ -#define DEM_RF_DC_OFFSET_CTRL2_REG_DCVGA1SCALE_EN_Msk (0x400UL) /*!< DEM RF_DC_OFFSET_CTRL2_REG: DCVGA1SCALE_EN (Bitfield-Mask: 0x01) */ - -/* ------------------------- DEM_RF_DC_OFFSET_CTRL3_REG ------------------------- */ -#define DEM_RF_DC_OFFSET_CTRL3_REG_DCBETA_I_Pos (0UL) /*!< DEM RF_DC_OFFSET_CTRL3_REG: DCBETA_I (Bit 0) */ -#define DEM_RF_DC_OFFSET_CTRL3_REG_DCBETA_I_Msk (0xffUL) /*!< DEM RF_DC_OFFSET_CTRL3_REG: DCBETA_I (Bitfield-Mask: 0xff) */ -#define DEM_RF_DC_OFFSET_CTRL3_REG_DCBETA_Q_Pos (8UL) /*!< DEM RF_DC_OFFSET_CTRL3_REG: DCBETA_Q (Bit 8) */ -#define DEM_RF_DC_OFFSET_CTRL3_REG_DCBETA_Q_Msk (0xff00UL) /*!< DEM RF_DC_OFFSET_CTRL3_REG: DCBETA_Q (Bitfield-Mask: 0xff) */ - -/* ------------------------- DEM_RF_DC_OFFSET_CTRL4_REG ------------------------- */ -#define DEM_RF_DC_OFFSET_CTRL4_REG_DCAGCSETTING_FULL0_Pos (0UL) /*!< DEM RF_DC_OFFSET_CTRL4_REG: DCAGCSETTING_FULL0 (Bit 0) */ -#define DEM_RF_DC_OFFSET_CTRL4_REG_DCAGCSETTING_FULL0_Msk (0xfUL) /*!< DEM RF_DC_OFFSET_CTRL4_REG: DCAGCSETTING_FULL0 (Bitfield-Mask: 0x0f) */ -#define DEM_RF_DC_OFFSET_CTRL4_REG_DCAGCSETTING_FULL1_Pos (4UL) /*!< DEM RF_DC_OFFSET_CTRL4_REG: DCAGCSETTING_FULL1 (Bit 4) */ -#define DEM_RF_DC_OFFSET_CTRL4_REG_DCAGCSETTING_FULL1_Msk (0xf0UL) /*!< DEM RF_DC_OFFSET_CTRL4_REG: DCAGCSETTING_FULL1 (Bitfield-Mask: 0x0f) */ -#define DEM_RF_DC_OFFSET_CTRL4_REG_DCAGCSETTING_FULL2_Pos (8UL) /*!< DEM RF_DC_OFFSET_CTRL4_REG: DCAGCSETTING_FULL2 (Bit 8) */ -#define DEM_RF_DC_OFFSET_CTRL4_REG_DCAGCSETTING_FULL2_Msk (0xf00UL) /*!< DEM RF_DC_OFFSET_CTRL4_REG: DCAGCSETTING_FULL2 (Bitfield-Mask: 0x0f) */ -#define DEM_RF_DC_OFFSET_CTRL4_REG_DCAGCSETTING_FULL3_Pos (12UL) /*!< DEM RF_DC_OFFSET_CTRL4_REG: DCAGCSETTING_FULL3 (Bit 12) */ -#define DEM_RF_DC_OFFSET_CTRL4_REG_DCAGCSETTING_FULL3_Msk (0xf000UL) /*!< DEM RF_DC_OFFSET_CTRL4_REG: DCAGCSETTING_FULL3 (Bitfield-Mask: 0x0f) */ - -/* ---------------------------- DEM_RF_AGC_RESULT_REG --------------------------- */ -#define DEM_RF_AGC_RESULT_REG_AFC_RD_Pos (0UL) /*!< DEM RF_AGC_RESULT_REG: AFC_RD (Bit 0) */ -#define DEM_RF_AGC_RESULT_REG_AFC_RD_Msk (0xffUL) /*!< DEM RF_AGC_RESULT_REG: AFC_RD (Bitfield-Mask: 0xff) */ -#define DEM_RF_AGC_RESULT_REG_AGCSETTING_RD_Pos (8UL) /*!< DEM RF_AGC_RESULT_REG: AGCSETTING_RD (Bit 8) */ -#define DEM_RF_AGC_RESULT_REG_AGCSETTING_RD_Msk (0xf00UL) /*!< DEM RF_AGC_RESULT_REG: AGCSETTING_RD (Bitfield-Mask: 0x0f) */ - -/* --------------------------- DEM_RF_RSSI_RESULT_REG --------------------------- */ -#define DEM_RF_RSSI_RESULT_REG_RSSI_PH_RD_Pos (0UL) /*!< DEM RF_RSSI_RESULT_REG: RSSI_PH_RD (Bit 0) */ -#define DEM_RF_RSSI_RESULT_REG_RSSI_PH_RD_Msk (0x3fUL) /*!< DEM RF_RSSI_RESULT_REG: RSSI_PH_RD (Bitfield-Mask: 0x3f) */ -#define DEM_RF_RSSI_RESULT_REG_RSSI_AVG_RD_Pos (6UL) /*!< DEM RF_RSSI_RESULT_REG: RSSI_AVG_RD (Bit 6) */ -#define DEM_RF_RSSI_RESULT_REG_RSSI_AVG_RD_Msk (0xffc0UL) /*!< DEM RF_RSSI_RESULT_REG: RSSI_AVG_RD (Bitfield-Mask: 0x3ff) */ - -/* ------------------------- DEM_RF_DC_OFFSET_RESULT_REG ------------------------ */ -#define DEM_RF_DC_OFFSET_RESULT_REG_DCOFFSET_I_RD_Pos (0UL) /*!< DEM RF_DC_OFFSET_RESULT_REG: DCOFFSET_I_RD (Bit 0) */ -#define DEM_RF_DC_OFFSET_RESULT_REG_DCOFFSET_I_RD_Msk (0xffUL) /*!< DEM RF_DC_OFFSET_RESULT_REG: DCOFFSET_I_RD (Bitfield-Mask: 0xff) */ -#define DEM_RF_DC_OFFSET_RESULT_REG_DCOFFSET_Q_RD_Pos (8UL) /*!< DEM RF_DC_OFFSET_RESULT_REG: DCOFFSET_Q_RD (Bit 8) */ -#define DEM_RF_DC_OFFSET_RESULT_REG_DCOFFSET_Q_RD_Msk (0xff00UL) /*!< DEM RF_DC_OFFSET_RESULT_REG: DCOFFSET_Q_RD (Bitfield-Mask: 0xff) */ - -/* -------------------------- DEM_RF_RSSI_COMP_CTRL_REG ------------------------- */ -#define DEM_RF_RSSI_COMP_CTRL_REG_RSSI_COMP01_Pos (0UL) /*!< DEM RF_RSSI_COMP_CTRL_REG: RSSI_COMP01 (Bit 0) */ -#define DEM_RF_RSSI_COMP_CTRL_REG_RSSI_COMP01_Msk (0xfUL) /*!< DEM RF_RSSI_COMP_CTRL_REG: RSSI_COMP01 (Bitfield-Mask: 0x0f) */ -#define DEM_RF_RSSI_COMP_CTRL_REG_RSSI_COMP10_Pos (4UL) /*!< DEM RF_RSSI_COMP_CTRL_REG: RSSI_COMP10 (Bit 4) */ -#define DEM_RF_RSSI_COMP_CTRL_REG_RSSI_COMP10_Msk (0xf0UL) /*!< DEM RF_RSSI_COMP_CTRL_REG: RSSI_COMP10 (Bitfield-Mask: 0x0f) */ -#define DEM_RF_RSSI_COMP_CTRL_REG_RSSI_COMP11_Pos (8UL) /*!< DEM RF_RSSI_COMP_CTRL_REG: RSSI_COMP11 (Bit 8) */ -#define DEM_RF_RSSI_COMP_CTRL_REG_RSSI_COMP11_Msk (0xf00UL) /*!< DEM RF_RSSI_COMP_CTRL_REG: RSSI_COMP11 (Bitfield-Mask: 0x0f) */ -#define DEM_RF_RSSI_COMP_CTRL_REG_RSSI_COMP00_Pos (12UL) /*!< DEM RF_RSSI_COMP_CTRL_REG: RSSI_COMP00 (Bit 12) */ -#define DEM_RF_RSSI_COMP_CTRL_REG_RSSI_COMP00_Msk (0xf000UL) /*!< DEM RF_RSSI_COMP_CTRL_REG: RSSI_COMP00 (Bitfield-Mask: 0x0f) */ - -/* ---------------------------- DEM_RF_FTDF_CTRL1_REG --------------------------- */ -#define DEM_RF_FTDF_CTRL1_REG_CFE_BIAS_Pos (0UL) /*!< DEM RF_FTDF_CTRL1_REG: CFE_BIAS (Bit 0) */ -#define DEM_RF_FTDF_CTRL1_REG_CFE_BIAS_Msk (0x3ffUL) /*!< DEM RF_FTDF_CTRL1_REG: CFE_BIAS (Bitfield-Mask: 0x3ff) */ -#define DEM_RF_FTDF_CTRL1_REG_CFE_MODE_Pos (10UL) /*!< DEM RF_FTDF_CTRL1_REG: CFE_MODE (Bit 10) */ -#define DEM_RF_FTDF_CTRL1_REG_CFE_MODE_Msk (0xc00UL) /*!< DEM RF_FTDF_CTRL1_REG: CFE_MODE (Bitfield-Mask: 0x03) */ -#define DEM_RF_FTDF_CTRL1_REG_CFE_NSTEP_Pos (12UL) /*!< DEM RF_FTDF_CTRL1_REG: CFE_NSTEP (Bit 12) */ -#define DEM_RF_FTDF_CTRL1_REG_CFE_NSTEP_Msk (0x3000UL) /*!< DEM RF_FTDF_CTRL1_REG: CFE_NSTEP (Bitfield-Mask: 0x03) */ -#define DEM_RF_FTDF_CTRL1_REG_CHSEL_FILT_MODE2_Pos (14UL) /*!< DEM RF_FTDF_CTRL1_REG: CHSEL_FILT_MODE2 (Bit 14) */ -#define DEM_RF_FTDF_CTRL1_REG_CHSEL_FILT_MODE2_Msk (0xc000UL) /*!< DEM RF_FTDF_CTRL1_REG: CHSEL_FILT_MODE2 (Bitfield-Mask: 0x03) */ - -/* ---------------------------- DEM_RF_FTDF_CTRL2_REG --------------------------- */ -#define DEM_RF_FTDF_CTRL2_REG_CORRTH_Pos (0UL) /*!< DEM RF_FTDF_CTRL2_REG: CORRTH (Bit 0) */ -#define DEM_RF_FTDF_CTRL2_REG_CORRTH_Msk (0x3fUL) /*!< DEM RF_FTDF_CTRL2_REG: CORRTH (Bitfield-Mask: 0x3f) */ -#define DEM_RF_FTDF_CTRL2_REG_NORM_EN_Pos (6UL) /*!< DEM RF_FTDF_CTRL2_REG: NORM_EN (Bit 6) */ -#define DEM_RF_FTDF_CTRL2_REG_NORM_EN_Msk (0x40UL) /*!< DEM RF_FTDF_CTRL2_REG: NORM_EN (Bitfield-Mask: 0x01) */ -#define DEM_RF_FTDF_CTRL2_REG_PD_MODE_Pos (7UL) /*!< DEM RF_FTDF_CTRL2_REG: PD_MODE (Bit 7) */ -#define DEM_RF_FTDF_CTRL2_REG_PD_MODE_Msk (0x80UL) /*!< DEM RF_FTDF_CTRL2_REG: PD_MODE (Bitfield-Mask: 0x01) */ -#define DEM_RF_FTDF_CTRL2_REG_PD_NPEAK_Pos (8UL) /*!< DEM RF_FTDF_CTRL2_REG: PD_NPEAK (Bit 8) */ -#define DEM_RF_FTDF_CTRL2_REG_PD_NPEAK_Msk (0x700UL) /*!< DEM RF_FTDF_CTRL2_REG: PD_NPEAK (Bitfield-Mask: 0x07) */ -#define DEM_RF_FTDF_CTRL2_REG_PD_NWIN_Pos (11UL) /*!< DEM RF_FTDF_CTRL2_REG: PD_NWIN (Bit 11) */ -#define DEM_RF_FTDF_CTRL2_REG_PD_NWIN_Msk (0x3800UL) /*!< DEM RF_FTDF_CTRL2_REG: PD_NWIN (Bitfield-Mask: 0x07) */ -#define DEM_RF_FTDF_CTRL2_REG_PD_OFFSET_Pos (14UL) /*!< DEM RF_FTDF_CTRL2_REG: PD_OFFSET (Bit 14) */ -#define DEM_RF_FTDF_CTRL2_REG_PD_OFFSET_Msk (0xc000UL) /*!< DEM RF_FTDF_CTRL2_REG: PD_OFFSET (Bitfield-Mask: 0x03) */ - -/* ---------------------------- DEM_RF_FTDF_CTRL3_REG --------------------------- */ -#define DEM_RF_FTDF_CTRL3_REG_FIF_Pos (0UL) /*!< DEM RF_FTDF_CTRL3_REG: FIF (Bit 0) */ -#define DEM_RF_FTDF_CTRL3_REG_FIF_Msk (0x1ffUL) /*!< DEM RF_FTDF_CTRL3_REG: FIF (Bitfield-Mask: 0x1ff) */ -#define DEM_RF_FTDF_CTRL3_REG_FTDF_DDC_EN_Pos (9UL) /*!< DEM RF_FTDF_CTRL3_REG: FTDF_DDC_EN (Bit 9) */ -#define DEM_RF_FTDF_CTRL3_REG_FTDF_DDC_EN_Msk (0x200UL) /*!< DEM RF_FTDF_CTRL3_REG: FTDF_DDC_EN (Bitfield-Mask: 0x01) */ -#define DEM_RF_FTDF_CTRL3_REG_MATCH_FILT_EN_Pos (10UL) /*!< DEM RF_FTDF_CTRL3_REG: MATCH_FILT_EN (Bit 10) */ -#define DEM_RF_FTDF_CTRL3_REG_MATCH_FILT_EN_Msk (0x400UL) /*!< DEM RF_FTDF_CTRL3_REG: MATCH_FILT_EN (Bitfield-Mask: 0x01) */ -#define DEM_RF_FTDF_CTRL3_REG_TIMING_CORR_EN_Pos (11UL) /*!< DEM RF_FTDF_CTRL3_REG: TIMING_CORR_EN (Bit 11) */ -#define DEM_RF_FTDF_CTRL3_REG_TIMING_CORR_EN_Msk (0x800UL) /*!< DEM RF_FTDF_CTRL3_REG: TIMING_CORR_EN (Bitfield-Mask: 0x01) */ -#define DEM_RF_FTDF_CTRL3_REG_CHSEL_FILT_MODE1_Pos (12UL) /*!< DEM RF_FTDF_CTRL3_REG: CHSEL_FILT_MODE1 (Bit 12) */ -#define DEM_RF_FTDF_CTRL3_REG_CHSEL_FILT_MODE1_Msk (0x3000UL) /*!< DEM RF_FTDF_CTRL3_REG: CHSEL_FILT_MODE1 (Bitfield-Mask: 0x03) */ -#define DEM_RF_FTDF_CTRL3_REG_DS_OFFSET_Pos (14UL) /*!< DEM RF_FTDF_CTRL3_REG: DS_OFFSET (Bit 14) */ -#define DEM_RF_FTDF_CTRL3_REG_DS_OFFSET_Msk (0xc000UL) /*!< DEM RF_FTDF_CTRL3_REG: DS_OFFSET (Bitfield-Mask: 0x03) */ - -/* ---------------------------- DEM_RF_FTDF_CTRL4_REG --------------------------- */ -#define DEM_RF_FTDF_CTRL4_REG_SFD0_Pos (0UL) /*!< DEM RF_FTDF_CTRL4_REG: SFD0 (Bit 0) */ -#define DEM_RF_FTDF_CTRL4_REG_SFD0_Msk (0xfUL) /*!< DEM RF_FTDF_CTRL4_REG: SFD0 (Bitfield-Mask: 0x0f) */ -#define DEM_RF_FTDF_CTRL4_REG_SFD1_Pos (4UL) /*!< DEM RF_FTDF_CTRL4_REG: SFD1 (Bit 4) */ -#define DEM_RF_FTDF_CTRL4_REG_SFD1_Msk (0xf0UL) /*!< DEM RF_FTDF_CTRL4_REG: SFD1 (Bitfield-Mask: 0x0f) */ -#define DEM_RF_FTDF_CTRL4_REG_LQI_PREAMBLE_EN_Pos (8UL) /*!< DEM RF_FTDF_CTRL4_REG: LQI_PREAMBLE_EN (Bit 8) */ -#define DEM_RF_FTDF_CTRL4_REG_LQI_PREAMBLE_EN_Msk (0x100UL) /*!< DEM RF_FTDF_CTRL4_REG: LQI_PREAMBLE_EN (Bitfield-Mask: 0x01) */ -#define DEM_RF_FTDF_CTRL4_REG_LQI_SYMBOL_EN_Pos (9UL) /*!< DEM RF_FTDF_CTRL4_REG: LQI_SYMBOL_EN (Bit 9) */ -#define DEM_RF_FTDF_CTRL4_REG_LQI_SYMBOL_EN_Msk (0x200UL) /*!< DEM RF_FTDF_CTRL4_REG: LQI_SYMBOL_EN (Bitfield-Mask: 0x01) */ -#define DEM_RF_FTDF_CTRL4_REG_LQI_CORRTH_EN_Pos (10UL) /*!< DEM RF_FTDF_CTRL4_REG: LQI_CORRTH_EN (Bit 10) */ -#define DEM_RF_FTDF_CTRL4_REG_LQI_CORRTH_EN_Msk (0x400UL) /*!< DEM RF_FTDF_CTRL4_REG: LQI_CORRTH_EN (Bitfield-Mask: 0x01) */ -#define DEM_RF_FTDF_CTRL4_REG_LQI_SCALE_Pos (11UL) /*!< DEM RF_FTDF_CTRL4_REG: LQI_SCALE (Bit 11) */ -#define DEM_RF_FTDF_CTRL4_REG_LQI_SCALE_Msk (0x1800UL) /*!< DEM RF_FTDF_CTRL4_REG: LQI_SCALE (Bitfield-Mask: 0x03) */ -#define DEM_RF_FTDF_CTRL4_REG_FTDF_HSI_POL_Pos (13UL) /*!< DEM RF_FTDF_CTRL4_REG: FTDF_HSI_POL (Bit 13) */ -#define DEM_RF_FTDF_CTRL4_REG_FTDF_HSI_POL_Msk (0x2000UL) /*!< DEM RF_FTDF_CTRL4_REG: FTDF_HSI_POL (Bitfield-Mask: 0x01) */ -#define DEM_RF_FTDF_CTRL4_REG_CCA_MODE_Pos (14UL) /*!< DEM RF_FTDF_CTRL4_REG: CCA_MODE (Bit 14) */ -#define DEM_RF_FTDF_CTRL4_REG_CCA_MODE_Msk (0x4000UL) /*!< DEM RF_FTDF_CTRL4_REG: CCA_MODE (Bitfield-Mask: 0x01) */ -#define DEM_RF_FTDF_CTRL4_REG_SO_FTDF_SEL_Pos (15UL) /*!< DEM RF_FTDF_CTRL4_REG: SO_FTDF_SEL (Bit 15) */ -#define DEM_RF_FTDF_CTRL4_REG_SO_FTDF_SEL_Msk (0x8000UL) /*!< DEM RF_FTDF_CTRL4_REG: SO_FTDF_SEL (Bitfield-Mask: 0x01) */ - -/* ------------------------ DEM_RF_FTDF_LOOP_GAIN_PD_REG ------------------------ */ -#define DEM_RF_FTDF_LOOP_GAIN_PD_REG_KP_LF_PD_Pos (0UL) /*!< DEM RF_FTDF_LOOP_GAIN_PD_REG: KP_LF_PD (Bit 0) */ -#define DEM_RF_FTDF_LOOP_GAIN_PD_REG_KP_LF_PD_Msk (0xffUL) /*!< DEM RF_FTDF_LOOP_GAIN_PD_REG: KP_LF_PD (Bitfield-Mask: 0xff) */ -#define DEM_RF_FTDF_LOOP_GAIN_PD_REG_KI_LF_PD_Pos (8UL) /*!< DEM RF_FTDF_LOOP_GAIN_PD_REG: KI_LF_PD (Bit 8) */ -#define DEM_RF_FTDF_LOOP_GAIN_PD_REG_KI_LF_PD_Msk (0xff00UL) /*!< DEM RF_FTDF_LOOP_GAIN_PD_REG: KI_LF_PD (Bitfield-Mask: 0xff) */ - -/* ------------------------ DEM_RF_FTDF_LOOP_GAIN_DS_REG ------------------------ */ -#define DEM_RF_FTDF_LOOP_GAIN_DS_REG_KP_LF_DS_Pos (0UL) /*!< DEM RF_FTDF_LOOP_GAIN_DS_REG: KP_LF_DS (Bit 0) */ -#define DEM_RF_FTDF_LOOP_GAIN_DS_REG_KP_LF_DS_Msk (0xffUL) /*!< DEM RF_FTDF_LOOP_GAIN_DS_REG: KP_LF_DS (Bitfield-Mask: 0xff) */ -#define DEM_RF_FTDF_LOOP_GAIN_DS_REG_KI_LF_DS_Pos (8UL) /*!< DEM RF_FTDF_LOOP_GAIN_DS_REG: KI_LF_DS (Bit 8) */ -#define DEM_RF_FTDF_LOOP_GAIN_DS_REG_KI_LF_DS_Msk (0xff00UL) /*!< DEM RF_FTDF_LOOP_GAIN_DS_REG: KI_LF_DS (Bitfield-Mask: 0xff) */ - -/* ---------------------------- DEM_RF_FTDF_CTRL5_REG --------------------------- */ -#define DEM_RF_FTDF_CTRL5_REG_RSSITH_Pos (0UL) /*!< DEM RF_FTDF_CTRL5_REG: RSSITH (Bit 0) */ -#define DEM_RF_FTDF_CTRL5_REG_RSSITH_Msk (0x1fffUL) /*!< DEM RF_FTDF_CTRL5_REG: RSSITH (Bitfield-Mask: 0x1fff) */ -#define DEM_RF_FTDF_CTRL5_REG_FTDF_DDC_INV_Pos (13UL) /*!< DEM RF_FTDF_CTRL5_REG: FTDF_DDC_INV (Bit 13) */ -#define DEM_RF_FTDF_CTRL5_REG_FTDF_DDC_INV_Msk (0x2000UL) /*!< DEM RF_FTDF_CTRL5_REG: FTDF_DDC_INV (Bitfield-Mask: 0x01) */ -#define DEM_RF_FTDF_CTRL5_REG_FSSS_CLEAR_Pos (14UL) /*!< DEM RF_FTDF_CTRL5_REG: FSSS_CLEAR (Bit 14) */ -#define DEM_RF_FTDF_CTRL5_REG_FSSS_CLEAR_Msk (0x4000UL) /*!< DEM RF_FTDF_CTRL5_REG: FSSS_CLEAR (Bitfield-Mask: 0x01) */ -#define DEM_RF_FTDF_CTRL5_REG_DS_OFFSET_SEL_Pos (15UL) /*!< DEM RF_FTDF_CTRL5_REG: DS_OFFSET_SEL (Bit 15) */ -#define DEM_RF_FTDF_CTRL5_REG_DS_OFFSET_SEL_Msk (0x8000UL) /*!< DEM RF_FTDF_CTRL5_REG: DS_OFFSET_SEL (Bitfield-Mask: 0x01) */ - -/* -------------------------- DEM_RF_FTDF_COBI_LOW_REG -------------------------- */ -#define DEM_RF_FTDF_COBI_LOW_REG_COBI_Pos (0UL) /*!< DEM RF_FTDF_COBI_LOW_REG: COBI (Bit 0) */ -#define DEM_RF_FTDF_COBI_LOW_REG_COBI_Msk (0xffffUL) /*!< DEM RF_FTDF_COBI_LOW_REG: COBI (Bitfield-Mask: 0xffff) */ - -/* -------------------------- DEM_RF_FTDF_COBI_HIGH_REG ------------------------- */ -#define DEM_RF_FTDF_COBI_HIGH_REG_COBI_Pos (0UL) /*!< DEM RF_FTDF_COBI_HIGH_REG: COBI (Bit 0) */ -#define DEM_RF_FTDF_COBI_HIGH_REG_COBI_Msk (0xffffUL) /*!< DEM RF_FTDF_COBI_HIGH_REG: COBI (Bitfield-Mask: 0xffff) */ - -/* --------------------------- DEM_RF_DEM_TESTMODE_REG -------------------------- */ -#define DEM_RF_DEM_TESTMODE_REG_DEM_TESTMODE_Pos (0UL) /*!< DEM RF_DEM_TESTMODE_REG: DEM_TESTMODE (Bit 0) */ -#define DEM_RF_DEM_TESTMODE_REG_DEM_TESTMODE_Msk (0x3ffUL) /*!< DEM RF_DEM_TESTMODE_REG: DEM_TESTMODE (Bitfield-Mask: 0x3ff) */ - -/* -------------------------- DEM_RF_DEM_IQCORRECT_REG -------------------------- */ -#define DEM_RF_DEM_IQCORRECT_REG_IQCORR_BETA_Pos (0UL) /*!< DEM RF_DEM_IQCORRECT_REG: IQCORR_BETA (Bit 0) */ -#define DEM_RF_DEM_IQCORRECT_REG_IQCORR_BETA_Msk (0xffUL) /*!< DEM RF_DEM_IQCORRECT_REG: IQCORR_BETA (Bitfield-Mask: 0xff) */ -#define DEM_RF_DEM_IQCORRECT_REG_IQCORR_ALPHA_Pos (8UL) /*!< DEM RF_DEM_IQCORRECT_REG: IQCORR_ALPHA (Bit 8) */ -#define DEM_RF_DEM_IQCORRECT_REG_IQCORR_ALPHA_Msk (0xff00UL) /*!< DEM RF_DEM_IQCORRECT_REG: IQCORR_ALPHA (Bitfield-Mask: 0xff) */ - -/* --------------------------- DEM_RF_PAD_CNT_CTRL_REG -------------------------- */ -#define DEM_RF_PAD_CNT_CTRL_REG_PAD_POS_LIMIT_Pos (0UL) /*!< DEM RF_PAD_CNT_CTRL_REG: PAD_POS_LIMIT (Bit 0) */ -#define DEM_RF_PAD_CNT_CTRL_REG_PAD_POS_LIMIT_Msk (0x7fUL) /*!< DEM RF_PAD_CNT_CTRL_REG: PAD_POS_LIMIT (Bitfield-Mask: 0x7f) */ -#define DEM_RF_PAD_CNT_CTRL_REG_PAD_NEG_LIMIT_Pos (7UL) /*!< DEM RF_PAD_CNT_CTRL_REG: PAD_NEG_LIMIT (Bit 7) */ -#define DEM_RF_PAD_CNT_CTRL_REG_PAD_NEG_LIMIT_Msk (0x3f80UL) /*!< DEM RF_PAD_CNT_CTRL_REG: PAD_NEG_LIMIT (Bitfield-Mask: 0x7f) */ -#define DEM_RF_PAD_CNT_CTRL_REG_PAD_CLEAR_COUNT_Pos (14UL) /*!< DEM RF_PAD_CNT_CTRL_REG: PAD_CLEAR_COUNT (Bit 14) */ -#define DEM_RF_PAD_CNT_CTRL_REG_PAD_CLEAR_COUNT_Msk (0x4000UL) /*!< DEM RF_PAD_CNT_CTRL_REG: PAD_CLEAR_COUNT (Bitfield-Mask: 0x01) */ - -/* -------------------------- DEM_RF_PAD_CNT_RESULT_REG ------------------------- */ -#define DEM_RF_PAD_CNT_RESULT_REG_PAD_POS_CNT_RD_Pos (0UL) /*!< DEM RF_PAD_CNT_RESULT_REG: PAD_POS_CNT_RD (Bit 0) */ -#define DEM_RF_PAD_CNT_RESULT_REG_PAD_POS_CNT_RD_Msk (0xffUL) /*!< DEM RF_PAD_CNT_RESULT_REG: PAD_POS_CNT_RD (Bitfield-Mask: 0xff) */ -#define DEM_RF_PAD_CNT_RESULT_REG_PAD_NEG_CNT_RD_Pos (8UL) /*!< DEM RF_PAD_CNT_RESULT_REG: PAD_NEG_CNT_RD (Bit 8) */ -#define DEM_RF_PAD_CNT_RESULT_REG_PAD_NEG_CNT_RD_Msk (0xff00UL) /*!< DEM RF_PAD_CNT_RESULT_REG: PAD_NEG_CNT_RD (Bitfield-Mask: 0xff) */ - -/* -------------------------- DEM_RF_FSSS_I_RESULT_REG -------------------------- */ -#define DEM_RF_FSSS_I_RESULT_REG_FSSS_I_RD_Pos (0UL) /*!< DEM RF_FSSS_I_RESULT_REG: FSSS_I_RD (Bit 0) */ -#define DEM_RF_FSSS_I_RESULT_REG_FSSS_I_RD_Msk (0xffffUL) /*!< DEM RF_FSSS_I_RESULT_REG: FSSS_I_RD (Bitfield-Mask: 0xffff) */ - -/* -------------------------- DEM_RF_FSSS_Q_RESULT_REG -------------------------- */ -#define DEM_RF_FSSS_Q_RESULT_REG_FSSS_Q_RD_Pos (0UL) /*!< DEM RF_FSSS_Q_RESULT_REG: FSSS_Q_RD (Bit 0) */ -#define DEM_RF_FSSS_Q_RESULT_REG_FSSS_Q_RD_Msk (0xffffUL) /*!< DEM RF_FSSS_Q_RESULT_REG: FSSS_Q_RD (Bitfield-Mask: 0xffff) */ - -/* ------------------------- DEM_RF_FSSS_MAG_RESULT_REG ------------------------- */ -#define DEM_RF_FSSS_MAG_RESULT_REG_FSSS_MAG_RD_Pos (0UL) /*!< DEM RF_FSSS_MAG_RESULT_REG: FSSS_MAG_RD (Bit 0) */ -#define DEM_RF_FSSS_MAG_RESULT_REG_FSSS_MAG_RD_Msk (0xffffUL) /*!< DEM RF_FSSS_MAG_RESULT_REG: FSSS_MAG_RD (Bitfield-Mask: 0xffff) */ - -/* ---------------------------- DEM_RF_CCA_RSSITH_REG --------------------------- */ -#define DEM_RF_CCA_RSSITH_REG_CCA_RSSITH_Pos (0UL) /*!< DEM RF_CCA_RSSITH_REG: CCA_RSSITH (Bit 0) */ -#define DEM_RF_CCA_RSSITH_REG_CCA_RSSITH_Msk (0x1fffUL) /*!< DEM RF_CCA_RSSITH_REG: CCA_RSSITH (Bitfield-Mask: 0x1fff) */ -#define DEM_RF_CCA_RSSITH_REG_SIGDET_TIMEOUT_LEN_Pos (13UL) /*!< DEM RF_CCA_RSSITH_REG: SIGDET_TIMEOUT_LEN (Bit 13) */ -#define DEM_RF_CCA_RSSITH_REG_SIGDET_TIMEOUT_LEN_Msk (0xe000UL) /*!< DEM RF_CCA_RSSITH_REG: SIGDET_TIMEOUT_LEN (Bitfield-Mask: 0x07) */ - -/* ------------------------- DEM_RF_FTDF_SIGDET_CTRL_REG ------------------------ */ -#define DEM_RF_FTDF_SIGDET_CTRL_REG_SIGDET_MODE_Pos (0UL) /*!< DEM RF_FTDF_SIGDET_CTRL_REG: SIGDET_MODE (Bit 0) */ -#define DEM_RF_FTDF_SIGDET_CTRL_REG_SIGDET_MODE_Msk (0x3UL) /*!< DEM RF_FTDF_SIGDET_CTRL_REG: SIGDET_MODE (Bitfield-Mask: 0x03) */ -#define DEM_RF_FTDF_SIGDET_CTRL_REG_SIGDET_THRESHOLD_Pos (2UL) /*!< DEM RF_FTDF_SIGDET_CTRL_REG: SIGDET_THRESHOLD (Bit 2) */ -#define DEM_RF_FTDF_SIGDET_CTRL_REG_SIGDET_THRESHOLD_Msk (0xfcUL) /*!< DEM RF_FTDF_SIGDET_CTRL_REG: SIGDET_THRESHOLD (Bitfield-Mask: 0x3f) */ -#define DEM_RF_FTDF_SIGDET_CTRL_REG_SIGDET_DIFF_Pos (8UL) /*!< DEM RF_FTDF_SIGDET_CTRL_REG: SIGDET_DIFF (Bit 8) */ -#define DEM_RF_FTDF_SIGDET_CTRL_REG_SIGDET_DIFF_Msk (0x100UL) /*!< DEM RF_FTDF_SIGDET_CTRL_REG: SIGDET_DIFF (Bitfield-Mask: 0x01) */ -#define DEM_RF_FTDF_SIGDET_CTRL_REG_SIGDET_SFACTOR2_Pos (9UL) /*!< DEM RF_FTDF_SIGDET_CTRL_REG: SIGDET_SFACTOR2 (Bit 9) */ -#define DEM_RF_FTDF_SIGDET_CTRL_REG_SIGDET_SFACTOR2_Msk (0x600UL) /*!< DEM RF_FTDF_SIGDET_CTRL_REG: SIGDET_SFACTOR2 (Bitfield-Mask: 0x03) */ -#define DEM_RF_FTDF_SIGDET_CTRL_REG_SIGDET_SFACTOR1_Pos (11UL) /*!< DEM RF_FTDF_SIGDET_CTRL_REG: SIGDET_SFACTOR1 (Bit 11) */ -#define DEM_RF_FTDF_SIGDET_CTRL_REG_SIGDET_SFACTOR1_Msk (0x1800UL) /*!< DEM RF_FTDF_SIGDET_CTRL_REG: SIGDET_SFACTOR1 (Bitfield-Mask: 0x03) */ -#define DEM_RF_FTDF_SIGDET_CTRL_REG_SIGDET_DELAY_Pos (13UL) /*!< DEM RF_FTDF_SIGDET_CTRL_REG: SIGDET_DELAY (Bit 13) */ -#define DEM_RF_FTDF_SIGDET_CTRL_REG_SIGDET_DELAY_Msk (0x6000UL) /*!< DEM RF_FTDF_SIGDET_CTRL_REG: SIGDET_DELAY (Bitfield-Mask: 0x03) */ - - -/* ================================================================================ */ -/* ================ struct 'DMA' Position & Mask ================ */ -/* ================================================================================ */ - - -/* ---------------------------- DMA_DMA0_A_STARTL_REG --------------------------- */ -#define DMA_DMA0_A_STARTL_REG_DMA0_A_STARTL_Pos (0UL) /*!< DMA DMA0_A_STARTL_REG: DMA0_A_STARTL (Bit 0) */ -#define DMA_DMA0_A_STARTL_REG_DMA0_A_STARTL_Msk (0xffffUL) /*!< DMA DMA0_A_STARTL_REG: DMA0_A_STARTL (Bitfield-Mask: 0xffff) */ - -/* ---------------------------- DMA_DMA0_A_STARTH_REG --------------------------- */ -#define DMA_DMA0_A_STARTH_REG_DMA0_A_STARTH_Pos (0UL) /*!< DMA DMA0_A_STARTH_REG: DMA0_A_STARTH (Bit 0) */ -#define DMA_DMA0_A_STARTH_REG_DMA0_A_STARTH_Msk (0xffffUL) /*!< DMA DMA0_A_STARTH_REG: DMA0_A_STARTH (Bitfield-Mask: 0xffff) */ - -/* ---------------------------- DMA_DMA0_B_STARTL_REG --------------------------- */ -#define DMA_DMA0_B_STARTL_REG_DMA0_B_STARTL_Pos (0UL) /*!< DMA DMA0_B_STARTL_REG: DMA0_B_STARTL (Bit 0) */ -#define DMA_DMA0_B_STARTL_REG_DMA0_B_STARTL_Msk (0xffffUL) /*!< DMA DMA0_B_STARTL_REG: DMA0_B_STARTL (Bitfield-Mask: 0xffff) */ - -/* ---------------------------- DMA_DMA0_B_STARTH_REG --------------------------- */ -#define DMA_DMA0_B_STARTH_REG_DMA0_B_STARTH_Pos (0UL) /*!< DMA DMA0_B_STARTH_REG: DMA0_B_STARTH (Bit 0) */ -#define DMA_DMA0_B_STARTH_REG_DMA0_B_STARTH_Msk (0xffffUL) /*!< DMA DMA0_B_STARTH_REG: DMA0_B_STARTH (Bitfield-Mask: 0xffff) */ - -/* ------------------------------ DMA_DMA0_INT_REG ------------------------------ */ -#define DMA_DMA0_INT_REG_DMA0_INT_Pos (0UL) /*!< DMA DMA0_INT_REG: DMA0_INT (Bit 0) */ -#define DMA_DMA0_INT_REG_DMA0_INT_Msk (0xffffUL) /*!< DMA DMA0_INT_REG: DMA0_INT (Bitfield-Mask: 0xffff) */ - -/* ------------------------------ DMA_DMA0_LEN_REG ------------------------------ */ -#define DMA_DMA0_LEN_REG_DMA0_LEN_Pos (0UL) /*!< DMA DMA0_LEN_REG: DMA0_LEN (Bit 0) */ -#define DMA_DMA0_LEN_REG_DMA0_LEN_Msk (0xffffUL) /*!< DMA DMA0_LEN_REG: DMA0_LEN (Bitfield-Mask: 0xffff) */ - -/* ------------------------------ DMA_DMA0_CTRL_REG ----------------------------- */ -#define DMA_DMA0_CTRL_REG_DMA_ON_Pos (0UL) /*!< DMA DMA0_CTRL_REG: DMA_ON (Bit 0) */ -#define DMA_DMA0_CTRL_REG_DMA_ON_Msk (0x1UL) /*!< DMA DMA0_CTRL_REG: DMA_ON (Bitfield-Mask: 0x01) */ -#define DMA_DMA0_CTRL_REG_BW_Pos (1UL) /*!< DMA DMA0_CTRL_REG: BW (Bit 1) */ -#define DMA_DMA0_CTRL_REG_BW_Msk (0x6UL) /*!< DMA DMA0_CTRL_REG: BW (Bitfield-Mask: 0x03) */ -#define DMA_DMA0_CTRL_REG_IRQ_ENABLE_Pos (3UL) /*!< DMA DMA0_CTRL_REG: IRQ_ENABLE (Bit 3) */ -#define DMA_DMA0_CTRL_REG_IRQ_ENABLE_Msk (0x8UL) /*!< DMA DMA0_CTRL_REG: IRQ_ENABLE (Bitfield-Mask: 0x01) */ -#define DMA_DMA0_CTRL_REG_DREQ_MODE_Pos (4UL) /*!< DMA DMA0_CTRL_REG: DREQ_MODE (Bit 4) */ -#define DMA_DMA0_CTRL_REG_DREQ_MODE_Msk (0x10UL) /*!< DMA DMA0_CTRL_REG: DREQ_MODE (Bitfield-Mask: 0x01) */ -#define DMA_DMA0_CTRL_REG_BINC_Pos (5UL) /*!< DMA DMA0_CTRL_REG: BINC (Bit 5) */ -#define DMA_DMA0_CTRL_REG_BINC_Msk (0x20UL) /*!< DMA DMA0_CTRL_REG: BINC (Bitfield-Mask: 0x01) */ -#define DMA_DMA0_CTRL_REG_AINC_Pos (6UL) /*!< DMA DMA0_CTRL_REG: AINC (Bit 6) */ -#define DMA_DMA0_CTRL_REG_AINC_Msk (0x40UL) /*!< DMA DMA0_CTRL_REG: AINC (Bitfield-Mask: 0x01) */ -#define DMA_DMA0_CTRL_REG_CIRCULAR_Pos (7UL) /*!< DMA DMA0_CTRL_REG: CIRCULAR (Bit 7) */ -#define DMA_DMA0_CTRL_REG_CIRCULAR_Msk (0x80UL) /*!< DMA DMA0_CTRL_REG: CIRCULAR (Bitfield-Mask: 0x01) */ -#define DMA_DMA0_CTRL_REG_DMA_PRIO_Pos (8UL) /*!< DMA DMA0_CTRL_REG: DMA_PRIO (Bit 8) */ -#define DMA_DMA0_CTRL_REG_DMA_PRIO_Msk (0x700UL) /*!< DMA DMA0_CTRL_REG: DMA_PRIO (Bitfield-Mask: 0x07) */ -#define DMA_DMA0_CTRL_REG_DMA_IDLE_Pos (11UL) /*!< DMA DMA0_CTRL_REG: DMA_IDLE (Bit 11) */ -#define DMA_DMA0_CTRL_REG_DMA_IDLE_Msk (0x800UL) /*!< DMA DMA0_CTRL_REG: DMA_IDLE (Bitfield-Mask: 0x01) */ -#define DMA_DMA0_CTRL_REG_DMA_INIT_Pos (12UL) /*!< DMA DMA0_CTRL_REG: DMA_INIT (Bit 12) */ -#define DMA_DMA0_CTRL_REG_DMA_INIT_Msk (0x1000UL) /*!< DMA DMA0_CTRL_REG: DMA_INIT (Bitfield-Mask: 0x01) */ -#define DMA_DMA0_CTRL_REG_REQ_SENSE_Pos (13UL) /*!< DMA DMA0_CTRL_REG: REQ_SENSE (Bit 13) */ -#define DMA_DMA0_CTRL_REG_REQ_SENSE_Msk (0x2000UL) /*!< DMA DMA0_CTRL_REG: REQ_SENSE (Bitfield-Mask: 0x01) */ - -/* ------------------------------ DMA_DMA0_IDX_REG ------------------------------ */ -#define DMA_DMA0_IDX_REG_DMA0_IDX_Pos (0UL) /*!< DMA DMA0_IDX_REG: DMA0_IDX (Bit 0) */ -#define DMA_DMA0_IDX_REG_DMA0_IDX_Msk (0xffffUL) /*!< DMA DMA0_IDX_REG: DMA0_IDX (Bitfield-Mask: 0xffff) */ - -/* ---------------------------- DMA_DMA1_A_STARTL_REG --------------------------- */ -#define DMA_DMA1_A_STARTL_REG_DMA1_A_STARTL_Pos (0UL) /*!< DMA DMA1_A_STARTL_REG: DMA1_A_STARTL (Bit 0) */ -#define DMA_DMA1_A_STARTL_REG_DMA1_A_STARTL_Msk (0xffffUL) /*!< DMA DMA1_A_STARTL_REG: DMA1_A_STARTL (Bitfield-Mask: 0xffff) */ - -/* ---------------------------- DMA_DMA1_A_STARTH_REG --------------------------- */ -#define DMA_DMA1_A_STARTH_REG_DMA1_A_STARTH_Pos (0UL) /*!< DMA DMA1_A_STARTH_REG: DMA1_A_STARTH (Bit 0) */ -#define DMA_DMA1_A_STARTH_REG_DMA1_A_STARTH_Msk (0xffffUL) /*!< DMA DMA1_A_STARTH_REG: DMA1_A_STARTH (Bitfield-Mask: 0xffff) */ - -/* ---------------------------- DMA_DMA1_B_STARTL_REG --------------------------- */ -#define DMA_DMA1_B_STARTL_REG_DMA1_B_STARTL_Pos (0UL) /*!< DMA DMA1_B_STARTL_REG: DMA1_B_STARTL (Bit 0) */ -#define DMA_DMA1_B_STARTL_REG_DMA1_B_STARTL_Msk (0xffffUL) /*!< DMA DMA1_B_STARTL_REG: DMA1_B_STARTL (Bitfield-Mask: 0xffff) */ - -/* ---------------------------- DMA_DMA1_B_STARTH_REG --------------------------- */ -#define DMA_DMA1_B_STARTH_REG_DMA1_B_STARTH_Pos (0UL) /*!< DMA DMA1_B_STARTH_REG: DMA1_B_STARTH (Bit 0) */ -#define DMA_DMA1_B_STARTH_REG_DMA1_B_STARTH_Msk (0xffffUL) /*!< DMA DMA1_B_STARTH_REG: DMA1_B_STARTH (Bitfield-Mask: 0xffff) */ - -/* ------------------------------ DMA_DMA1_INT_REG ------------------------------ */ -#define DMA_DMA1_INT_REG_DMA1_INT_Pos (0UL) /*!< DMA DMA1_INT_REG: DMA1_INT (Bit 0) */ -#define DMA_DMA1_INT_REG_DMA1_INT_Msk (0xffffUL) /*!< DMA DMA1_INT_REG: DMA1_INT (Bitfield-Mask: 0xffff) */ - -/* ------------------------------ DMA_DMA1_LEN_REG ------------------------------ */ -#define DMA_DMA1_LEN_REG_DMA1_LEN_Pos (0UL) /*!< DMA DMA1_LEN_REG: DMA1_LEN (Bit 0) */ -#define DMA_DMA1_LEN_REG_DMA1_LEN_Msk (0xffffUL) /*!< DMA DMA1_LEN_REG: DMA1_LEN (Bitfield-Mask: 0xffff) */ - -/* ------------------------------ DMA_DMA1_CTRL_REG ----------------------------- */ -#define DMA_DMA1_CTRL_REG_DMA_ON_Pos (0UL) /*!< DMA DMA1_CTRL_REG: DMA_ON (Bit 0) */ -#define DMA_DMA1_CTRL_REG_DMA_ON_Msk (0x1UL) /*!< DMA DMA1_CTRL_REG: DMA_ON (Bitfield-Mask: 0x01) */ -#define DMA_DMA1_CTRL_REG_BW_Pos (1UL) /*!< DMA DMA1_CTRL_REG: BW (Bit 1) */ -#define DMA_DMA1_CTRL_REG_BW_Msk (0x6UL) /*!< DMA DMA1_CTRL_REG: BW (Bitfield-Mask: 0x03) */ -#define DMA_DMA1_CTRL_REG_IRQ_ENABLE_Pos (3UL) /*!< DMA DMA1_CTRL_REG: IRQ_ENABLE (Bit 3) */ -#define DMA_DMA1_CTRL_REG_IRQ_ENABLE_Msk (0x8UL) /*!< DMA DMA1_CTRL_REG: IRQ_ENABLE (Bitfield-Mask: 0x01) */ -#define DMA_DMA1_CTRL_REG_DREQ_MODE_Pos (4UL) /*!< DMA DMA1_CTRL_REG: DREQ_MODE (Bit 4) */ -#define DMA_DMA1_CTRL_REG_DREQ_MODE_Msk (0x10UL) /*!< DMA DMA1_CTRL_REG: DREQ_MODE (Bitfield-Mask: 0x01) */ -#define DMA_DMA1_CTRL_REG_BINC_Pos (5UL) /*!< DMA DMA1_CTRL_REG: BINC (Bit 5) */ -#define DMA_DMA1_CTRL_REG_BINC_Msk (0x20UL) /*!< DMA DMA1_CTRL_REG: BINC (Bitfield-Mask: 0x01) */ -#define DMA_DMA1_CTRL_REG_AINC_Pos (6UL) /*!< DMA DMA1_CTRL_REG: AINC (Bit 6) */ -#define DMA_DMA1_CTRL_REG_AINC_Msk (0x40UL) /*!< DMA DMA1_CTRL_REG: AINC (Bitfield-Mask: 0x01) */ -#define DMA_DMA1_CTRL_REG_CIRCULAR_Pos (7UL) /*!< DMA DMA1_CTRL_REG: CIRCULAR (Bit 7) */ -#define DMA_DMA1_CTRL_REG_CIRCULAR_Msk (0x80UL) /*!< DMA DMA1_CTRL_REG: CIRCULAR (Bitfield-Mask: 0x01) */ -#define DMA_DMA1_CTRL_REG_DMA_PRIO_Pos (8UL) /*!< DMA DMA1_CTRL_REG: DMA_PRIO (Bit 8) */ -#define DMA_DMA1_CTRL_REG_DMA_PRIO_Msk (0x700UL) /*!< DMA DMA1_CTRL_REG: DMA_PRIO (Bitfield-Mask: 0x07) */ -#define DMA_DMA1_CTRL_REG_DMA_IDLE_Pos (11UL) /*!< DMA DMA1_CTRL_REG: DMA_IDLE (Bit 11) */ -#define DMA_DMA1_CTRL_REG_DMA_IDLE_Msk (0x800UL) /*!< DMA DMA1_CTRL_REG: DMA_IDLE (Bitfield-Mask: 0x01) */ -#define DMA_DMA1_CTRL_REG_DMA_INIT_Pos (12UL) /*!< DMA DMA1_CTRL_REG: DMA_INIT (Bit 12) */ -#define DMA_DMA1_CTRL_REG_DMA_INIT_Msk (0x1000UL) /*!< DMA DMA1_CTRL_REG: DMA_INIT (Bitfield-Mask: 0x01) */ -#define DMA_DMA1_CTRL_REG_REQ_SENSE_Pos (13UL) /*!< DMA DMA1_CTRL_REG: REQ_SENSE (Bit 13) */ -#define DMA_DMA1_CTRL_REG_REQ_SENSE_Msk (0x2000UL) /*!< DMA DMA1_CTRL_REG: REQ_SENSE (Bitfield-Mask: 0x01) */ - -/* ------------------------------ DMA_DMA1_IDX_REG ------------------------------ */ -#define DMA_DMA1_IDX_REG_DMA1_IDX_Pos (0UL) /*!< DMA DMA1_IDX_REG: DMA1_IDX (Bit 0) */ -#define DMA_DMA1_IDX_REG_DMA1_IDX_Msk (0xffffUL) /*!< DMA DMA1_IDX_REG: DMA1_IDX (Bitfield-Mask: 0xffff) */ - -/* ---------------------------- DMA_DMA2_A_STARTL_REG --------------------------- */ -#define DMA_DMA2_A_STARTL_REG_DMA2_A_STARTL_Pos (0UL) /*!< DMA DMA2_A_STARTL_REG: DMA2_A_STARTL (Bit 0) */ -#define DMA_DMA2_A_STARTL_REG_DMA2_A_STARTL_Msk (0xffffUL) /*!< DMA DMA2_A_STARTL_REG: DMA2_A_STARTL (Bitfield-Mask: 0xffff) */ - -/* ---------------------------- DMA_DMA2_A_STARTH_REG --------------------------- */ -#define DMA_DMA2_A_STARTH_REG_DMA2_A_STARTH_Pos (0UL) /*!< DMA DMA2_A_STARTH_REG: DMA2_A_STARTH (Bit 0) */ -#define DMA_DMA2_A_STARTH_REG_DMA2_A_STARTH_Msk (0xffffUL) /*!< DMA DMA2_A_STARTH_REG: DMA2_A_STARTH (Bitfield-Mask: 0xffff) */ - -/* ---------------------------- DMA_DMA2_B_STARTL_REG --------------------------- */ -#define DMA_DMA2_B_STARTL_REG_DMA2_B_STARTL_Pos (0UL) /*!< DMA DMA2_B_STARTL_REG: DMA2_B_STARTL (Bit 0) */ -#define DMA_DMA2_B_STARTL_REG_DMA2_B_STARTL_Msk (0xffffUL) /*!< DMA DMA2_B_STARTL_REG: DMA2_B_STARTL (Bitfield-Mask: 0xffff) */ - -/* ---------------------------- DMA_DMA2_B_STARTH_REG --------------------------- */ -#define DMA_DMA2_B_STARTH_REG_DMA2_B_STARTH_Pos (0UL) /*!< DMA DMA2_B_STARTH_REG: DMA2_B_STARTH (Bit 0) */ -#define DMA_DMA2_B_STARTH_REG_DMA2_B_STARTH_Msk (0xffffUL) /*!< DMA DMA2_B_STARTH_REG: DMA2_B_STARTH (Bitfield-Mask: 0xffff) */ - -/* ------------------------------ DMA_DMA2_INT_REG ------------------------------ */ -#define DMA_DMA2_INT_REG_DMA2_INT_Pos (0UL) /*!< DMA DMA2_INT_REG: DMA2_INT (Bit 0) */ -#define DMA_DMA2_INT_REG_DMA2_INT_Msk (0xffffUL) /*!< DMA DMA2_INT_REG: DMA2_INT (Bitfield-Mask: 0xffff) */ - -/* ------------------------------ DMA_DMA2_LEN_REG ------------------------------ */ -#define DMA_DMA2_LEN_REG_DMA2_LEN_Pos (0UL) /*!< DMA DMA2_LEN_REG: DMA2_LEN (Bit 0) */ -#define DMA_DMA2_LEN_REG_DMA2_LEN_Msk (0xffffUL) /*!< DMA DMA2_LEN_REG: DMA2_LEN (Bitfield-Mask: 0xffff) */ - -/* ------------------------------ DMA_DMA2_CTRL_REG ----------------------------- */ -#define DMA_DMA2_CTRL_REG_DMA_ON_Pos (0UL) /*!< DMA DMA2_CTRL_REG: DMA_ON (Bit 0) */ -#define DMA_DMA2_CTRL_REG_DMA_ON_Msk (0x1UL) /*!< DMA DMA2_CTRL_REG: DMA_ON (Bitfield-Mask: 0x01) */ -#define DMA_DMA2_CTRL_REG_BW_Pos (1UL) /*!< DMA DMA2_CTRL_REG: BW (Bit 1) */ -#define DMA_DMA2_CTRL_REG_BW_Msk (0x6UL) /*!< DMA DMA2_CTRL_REG: BW (Bitfield-Mask: 0x03) */ -#define DMA_DMA2_CTRL_REG_IRQ_ENABLE_Pos (3UL) /*!< DMA DMA2_CTRL_REG: IRQ_ENABLE (Bit 3) */ -#define DMA_DMA2_CTRL_REG_IRQ_ENABLE_Msk (0x8UL) /*!< DMA DMA2_CTRL_REG: IRQ_ENABLE (Bitfield-Mask: 0x01) */ -#define DMA_DMA2_CTRL_REG_DREQ_MODE_Pos (4UL) /*!< DMA DMA2_CTRL_REG: DREQ_MODE (Bit 4) */ -#define DMA_DMA2_CTRL_REG_DREQ_MODE_Msk (0x10UL) /*!< DMA DMA2_CTRL_REG: DREQ_MODE (Bitfield-Mask: 0x01) */ -#define DMA_DMA2_CTRL_REG_BINC_Pos (5UL) /*!< DMA DMA2_CTRL_REG: BINC (Bit 5) */ -#define DMA_DMA2_CTRL_REG_BINC_Msk (0x20UL) /*!< DMA DMA2_CTRL_REG: BINC (Bitfield-Mask: 0x01) */ -#define DMA_DMA2_CTRL_REG_AINC_Pos (6UL) /*!< DMA DMA2_CTRL_REG: AINC (Bit 6) */ -#define DMA_DMA2_CTRL_REG_AINC_Msk (0x40UL) /*!< DMA DMA2_CTRL_REG: AINC (Bitfield-Mask: 0x01) */ -#define DMA_DMA2_CTRL_REG_CIRCULAR_Pos (7UL) /*!< DMA DMA2_CTRL_REG: CIRCULAR (Bit 7) */ -#define DMA_DMA2_CTRL_REG_CIRCULAR_Msk (0x80UL) /*!< DMA DMA2_CTRL_REG: CIRCULAR (Bitfield-Mask: 0x01) */ -#define DMA_DMA2_CTRL_REG_DMA_PRIO_Pos (8UL) /*!< DMA DMA2_CTRL_REG: DMA_PRIO (Bit 8) */ -#define DMA_DMA2_CTRL_REG_DMA_PRIO_Msk (0x700UL) /*!< DMA DMA2_CTRL_REG: DMA_PRIO (Bitfield-Mask: 0x07) */ -#define DMA_DMA2_CTRL_REG_DMA_IDLE_Pos (11UL) /*!< DMA DMA2_CTRL_REG: DMA_IDLE (Bit 11) */ -#define DMA_DMA2_CTRL_REG_DMA_IDLE_Msk (0x800UL) /*!< DMA DMA2_CTRL_REG: DMA_IDLE (Bitfield-Mask: 0x01) */ -#define DMA_DMA2_CTRL_REG_DMA_INIT_Pos (12UL) /*!< DMA DMA2_CTRL_REG: DMA_INIT (Bit 12) */ -#define DMA_DMA2_CTRL_REG_DMA_INIT_Msk (0x1000UL) /*!< DMA DMA2_CTRL_REG: DMA_INIT (Bitfield-Mask: 0x01) */ -#define DMA_DMA2_CTRL_REG_REQ_SENSE_Pos (13UL) /*!< DMA DMA2_CTRL_REG: REQ_SENSE (Bit 13) */ -#define DMA_DMA2_CTRL_REG_REQ_SENSE_Msk (0x2000UL) /*!< DMA DMA2_CTRL_REG: REQ_SENSE (Bitfield-Mask: 0x01) */ - -/* ------------------------------ DMA_DMA2_IDX_REG ------------------------------ */ -#define DMA_DMA2_IDX_REG_DMA2_IDX_Pos (0UL) /*!< DMA DMA2_IDX_REG: DMA2_IDX (Bit 0) */ -#define DMA_DMA2_IDX_REG_DMA2_IDX_Msk (0xffffUL) /*!< DMA DMA2_IDX_REG: DMA2_IDX (Bitfield-Mask: 0xffff) */ - -/* ---------------------------- DMA_DMA3_A_STARTL_REG --------------------------- */ -#define DMA_DMA3_A_STARTL_REG_DMA3_A_STARTL_Pos (0UL) /*!< DMA DMA3_A_STARTL_REG: DMA3_A_STARTL (Bit 0) */ -#define DMA_DMA3_A_STARTL_REG_DMA3_A_STARTL_Msk (0xffffUL) /*!< DMA DMA3_A_STARTL_REG: DMA3_A_STARTL (Bitfield-Mask: 0xffff) */ - -/* ---------------------------- DMA_DMA3_A_STARTH_REG --------------------------- */ -#define DMA_DMA3_A_STARTH_REG_DMA3_A_STARTH_Pos (0UL) /*!< DMA DMA3_A_STARTH_REG: DMA3_A_STARTH (Bit 0) */ -#define DMA_DMA3_A_STARTH_REG_DMA3_A_STARTH_Msk (0xffffUL) /*!< DMA DMA3_A_STARTH_REG: DMA3_A_STARTH (Bitfield-Mask: 0xffff) */ - -/* ---------------------------- DMA_DMA3_B_STARTL_REG --------------------------- */ -#define DMA_DMA3_B_STARTL_REG_DMA3_B_STARTL_Pos (0UL) /*!< DMA DMA3_B_STARTL_REG: DMA3_B_STARTL (Bit 0) */ -#define DMA_DMA3_B_STARTL_REG_DMA3_B_STARTL_Msk (0xffffUL) /*!< DMA DMA3_B_STARTL_REG: DMA3_B_STARTL (Bitfield-Mask: 0xffff) */ - -/* ---------------------------- DMA_DMA3_B_STARTH_REG --------------------------- */ -#define DMA_DMA3_B_STARTH_REG_DMA3_B_STARTH_Pos (0UL) /*!< DMA DMA3_B_STARTH_REG: DMA3_B_STARTH (Bit 0) */ -#define DMA_DMA3_B_STARTH_REG_DMA3_B_STARTH_Msk (0xffffUL) /*!< DMA DMA3_B_STARTH_REG: DMA3_B_STARTH (Bitfield-Mask: 0xffff) */ - -/* ------------------------------ DMA_DMA3_INT_REG ------------------------------ */ -#define DMA_DMA3_INT_REG_DMA3_INT_Pos (0UL) /*!< DMA DMA3_INT_REG: DMA3_INT (Bit 0) */ -#define DMA_DMA3_INT_REG_DMA3_INT_Msk (0xffffUL) /*!< DMA DMA3_INT_REG: DMA3_INT (Bitfield-Mask: 0xffff) */ - -/* ------------------------------ DMA_DMA3_LEN_REG ------------------------------ */ -#define DMA_DMA3_LEN_REG_DMA3_LEN_Pos (0UL) /*!< DMA DMA3_LEN_REG: DMA3_LEN (Bit 0) */ -#define DMA_DMA3_LEN_REG_DMA3_LEN_Msk (0xffffUL) /*!< DMA DMA3_LEN_REG: DMA3_LEN (Bitfield-Mask: 0xffff) */ - -/* ------------------------------ DMA_DMA3_CTRL_REG ----------------------------- */ -#define DMA_DMA3_CTRL_REG_DMA_ON_Pos (0UL) /*!< DMA DMA3_CTRL_REG: DMA_ON (Bit 0) */ -#define DMA_DMA3_CTRL_REG_DMA_ON_Msk (0x1UL) /*!< DMA DMA3_CTRL_REG: DMA_ON (Bitfield-Mask: 0x01) */ -#define DMA_DMA3_CTRL_REG_BW_Pos (1UL) /*!< DMA DMA3_CTRL_REG: BW (Bit 1) */ -#define DMA_DMA3_CTRL_REG_BW_Msk (0x6UL) /*!< DMA DMA3_CTRL_REG: BW (Bitfield-Mask: 0x03) */ -#define DMA_DMA3_CTRL_REG_IRQ_ENABLE_Pos (3UL) /*!< DMA DMA3_CTRL_REG: IRQ_ENABLE (Bit 3) */ -#define DMA_DMA3_CTRL_REG_IRQ_ENABLE_Msk (0x8UL) /*!< DMA DMA3_CTRL_REG: IRQ_ENABLE (Bitfield-Mask: 0x01) */ -#define DMA_DMA3_CTRL_REG_DREQ_MODE_Pos (4UL) /*!< DMA DMA3_CTRL_REG: DREQ_MODE (Bit 4) */ -#define DMA_DMA3_CTRL_REG_DREQ_MODE_Msk (0x10UL) /*!< DMA DMA3_CTRL_REG: DREQ_MODE (Bitfield-Mask: 0x01) */ -#define DMA_DMA3_CTRL_REG_BINC_Pos (5UL) /*!< DMA DMA3_CTRL_REG: BINC (Bit 5) */ -#define DMA_DMA3_CTRL_REG_BINC_Msk (0x20UL) /*!< DMA DMA3_CTRL_REG: BINC (Bitfield-Mask: 0x01) */ -#define DMA_DMA3_CTRL_REG_AINC_Pos (6UL) /*!< DMA DMA3_CTRL_REG: AINC (Bit 6) */ -#define DMA_DMA3_CTRL_REG_AINC_Msk (0x40UL) /*!< DMA DMA3_CTRL_REG: AINC (Bitfield-Mask: 0x01) */ -#define DMA_DMA3_CTRL_REG_CIRCULAR_Pos (7UL) /*!< DMA DMA3_CTRL_REG: CIRCULAR (Bit 7) */ -#define DMA_DMA3_CTRL_REG_CIRCULAR_Msk (0x80UL) /*!< DMA DMA3_CTRL_REG: CIRCULAR (Bitfield-Mask: 0x01) */ -#define DMA_DMA3_CTRL_REG_DMA_PRIO_Pos (8UL) /*!< DMA DMA3_CTRL_REG: DMA_PRIO (Bit 8) */ -#define DMA_DMA3_CTRL_REG_DMA_PRIO_Msk (0x700UL) /*!< DMA DMA3_CTRL_REG: DMA_PRIO (Bitfield-Mask: 0x07) */ -#define DMA_DMA3_CTRL_REG_DMA_IDLE_Pos (11UL) /*!< DMA DMA3_CTRL_REG: DMA_IDLE (Bit 11) */ -#define DMA_DMA3_CTRL_REG_DMA_IDLE_Msk (0x800UL) /*!< DMA DMA3_CTRL_REG: DMA_IDLE (Bitfield-Mask: 0x01) */ -#define DMA_DMA3_CTRL_REG_DMA_INIT_Pos (12UL) /*!< DMA DMA3_CTRL_REG: DMA_INIT (Bit 12) */ -#define DMA_DMA3_CTRL_REG_DMA_INIT_Msk (0x1000UL) /*!< DMA DMA3_CTRL_REG: DMA_INIT (Bitfield-Mask: 0x01) */ -#define DMA_DMA3_CTRL_REG_REQ_SENSE_Pos (13UL) /*!< DMA DMA3_CTRL_REG: REQ_SENSE (Bit 13) */ -#define DMA_DMA3_CTRL_REG_REQ_SENSE_Msk (0x2000UL) /*!< DMA DMA3_CTRL_REG: REQ_SENSE (Bitfield-Mask: 0x01) */ - -/* ------------------------------ DMA_DMA3_IDX_REG ------------------------------ */ -#define DMA_DMA3_IDX_REG_DMA3_IDX_Pos (0UL) /*!< DMA DMA3_IDX_REG: DMA3_IDX (Bit 0) */ -#define DMA_DMA3_IDX_REG_DMA3_IDX_Msk (0xffffUL) /*!< DMA DMA3_IDX_REG: DMA3_IDX (Bitfield-Mask: 0xffff) */ - -/* ---------------------------- DMA_DMA4_A_STARTL_REG --------------------------- */ -#define DMA_DMA4_A_STARTL_REG_DMA4_A_STARTL_Pos (0UL) /*!< DMA DMA4_A_STARTL_REG: DMA4_A_STARTL (Bit 0) */ -#define DMA_DMA4_A_STARTL_REG_DMA4_A_STARTL_Msk (0xffffUL) /*!< DMA DMA4_A_STARTL_REG: DMA4_A_STARTL (Bitfield-Mask: 0xffff) */ - -/* ---------------------------- DMA_DMA4_A_STARTH_REG --------------------------- */ -#define DMA_DMA4_A_STARTH_REG_DMA4_A_STARTH_Pos (0UL) /*!< DMA DMA4_A_STARTH_REG: DMA4_A_STARTH (Bit 0) */ -#define DMA_DMA4_A_STARTH_REG_DMA4_A_STARTH_Msk (0xffffUL) /*!< DMA DMA4_A_STARTH_REG: DMA4_A_STARTH (Bitfield-Mask: 0xffff) */ - -/* ---------------------------- DMA_DMA4_B_STARTL_REG --------------------------- */ -#define DMA_DMA4_B_STARTL_REG_DMA4_B_STARTL_Pos (0UL) /*!< DMA DMA4_B_STARTL_REG: DMA4_B_STARTL (Bit 0) */ -#define DMA_DMA4_B_STARTL_REG_DMA4_B_STARTL_Msk (0xffffUL) /*!< DMA DMA4_B_STARTL_REG: DMA4_B_STARTL (Bitfield-Mask: 0xffff) */ - -/* ---------------------------- DMA_DMA4_B_STARTH_REG --------------------------- */ -#define DMA_DMA4_B_STARTH_REG_DMA4_B_STARTH_Pos (0UL) /*!< DMA DMA4_B_STARTH_REG: DMA4_B_STARTH (Bit 0) */ -#define DMA_DMA4_B_STARTH_REG_DMA4_B_STARTH_Msk (0xffffUL) /*!< DMA DMA4_B_STARTH_REG: DMA4_B_STARTH (Bitfield-Mask: 0xffff) */ - -/* ------------------------------ DMA_DMA4_INT_REG ------------------------------ */ -#define DMA_DMA4_INT_REG_DMA4_INT_Pos (0UL) /*!< DMA DMA4_INT_REG: DMA4_INT (Bit 0) */ -#define DMA_DMA4_INT_REG_DMA4_INT_Msk (0xffffUL) /*!< DMA DMA4_INT_REG: DMA4_INT (Bitfield-Mask: 0xffff) */ - -/* ------------------------------ DMA_DMA4_LEN_REG ------------------------------ */ -#define DMA_DMA4_LEN_REG_DMA4_LEN_Pos (0UL) /*!< DMA DMA4_LEN_REG: DMA4_LEN (Bit 0) */ -#define DMA_DMA4_LEN_REG_DMA4_LEN_Msk (0xffffUL) /*!< DMA DMA4_LEN_REG: DMA4_LEN (Bitfield-Mask: 0xffff) */ - -/* ------------------------------ DMA_DMA4_CTRL_REG ----------------------------- */ -#define DMA_DMA4_CTRL_REG_DMA_ON_Pos (0UL) /*!< DMA DMA4_CTRL_REG: DMA_ON (Bit 0) */ -#define DMA_DMA4_CTRL_REG_DMA_ON_Msk (0x1UL) /*!< DMA DMA4_CTRL_REG: DMA_ON (Bitfield-Mask: 0x01) */ -#define DMA_DMA4_CTRL_REG_BW_Pos (1UL) /*!< DMA DMA4_CTRL_REG: BW (Bit 1) */ -#define DMA_DMA4_CTRL_REG_BW_Msk (0x6UL) /*!< DMA DMA4_CTRL_REG: BW (Bitfield-Mask: 0x03) */ -#define DMA_DMA4_CTRL_REG_IRQ_ENABLE_Pos (3UL) /*!< DMA DMA4_CTRL_REG: IRQ_ENABLE (Bit 3) */ -#define DMA_DMA4_CTRL_REG_IRQ_ENABLE_Msk (0x8UL) /*!< DMA DMA4_CTRL_REG: IRQ_ENABLE (Bitfield-Mask: 0x01) */ -#define DMA_DMA4_CTRL_REG_DREQ_MODE_Pos (4UL) /*!< DMA DMA4_CTRL_REG: DREQ_MODE (Bit 4) */ -#define DMA_DMA4_CTRL_REG_DREQ_MODE_Msk (0x10UL) /*!< DMA DMA4_CTRL_REG: DREQ_MODE (Bitfield-Mask: 0x01) */ -#define DMA_DMA4_CTRL_REG_BINC_Pos (5UL) /*!< DMA DMA4_CTRL_REG: BINC (Bit 5) */ -#define DMA_DMA4_CTRL_REG_BINC_Msk (0x20UL) /*!< DMA DMA4_CTRL_REG: BINC (Bitfield-Mask: 0x01) */ -#define DMA_DMA4_CTRL_REG_AINC_Pos (6UL) /*!< DMA DMA4_CTRL_REG: AINC (Bit 6) */ -#define DMA_DMA4_CTRL_REG_AINC_Msk (0x40UL) /*!< DMA DMA4_CTRL_REG: AINC (Bitfield-Mask: 0x01) */ -#define DMA_DMA4_CTRL_REG_CIRCULAR_Pos (7UL) /*!< DMA DMA4_CTRL_REG: CIRCULAR (Bit 7) */ -#define DMA_DMA4_CTRL_REG_CIRCULAR_Msk (0x80UL) /*!< DMA DMA4_CTRL_REG: CIRCULAR (Bitfield-Mask: 0x01) */ -#define DMA_DMA4_CTRL_REG_DMA_PRIO_Pos (8UL) /*!< DMA DMA4_CTRL_REG: DMA_PRIO (Bit 8) */ -#define DMA_DMA4_CTRL_REG_DMA_PRIO_Msk (0x700UL) /*!< DMA DMA4_CTRL_REG: DMA_PRIO (Bitfield-Mask: 0x07) */ -#define DMA_DMA4_CTRL_REG_DMA_IDLE_Pos (11UL) /*!< DMA DMA4_CTRL_REG: DMA_IDLE (Bit 11) */ -#define DMA_DMA4_CTRL_REG_DMA_IDLE_Msk (0x800UL) /*!< DMA DMA4_CTRL_REG: DMA_IDLE (Bitfield-Mask: 0x01) */ -#define DMA_DMA4_CTRL_REG_DMA_INIT_Pos (12UL) /*!< DMA DMA4_CTRL_REG: DMA_INIT (Bit 12) */ -#define DMA_DMA4_CTRL_REG_DMA_INIT_Msk (0x1000UL) /*!< DMA DMA4_CTRL_REG: DMA_INIT (Bitfield-Mask: 0x01) */ -#define DMA_DMA4_CTRL_REG_REQ_SENSE_Pos (13UL) /*!< DMA DMA4_CTRL_REG: REQ_SENSE (Bit 13) */ -#define DMA_DMA4_CTRL_REG_REQ_SENSE_Msk (0x2000UL) /*!< DMA DMA4_CTRL_REG: REQ_SENSE (Bitfield-Mask: 0x01) */ - -/* ------------------------------ DMA_DMA4_IDX_REG ------------------------------ */ -#define DMA_DMA4_IDX_REG_DMA4_IDX_Pos (0UL) /*!< DMA DMA4_IDX_REG: DMA4_IDX (Bit 0) */ -#define DMA_DMA4_IDX_REG_DMA4_IDX_Msk (0xffffUL) /*!< DMA DMA4_IDX_REG: DMA4_IDX (Bitfield-Mask: 0xffff) */ - -/* ---------------------------- DMA_DMA5_A_STARTL_REG --------------------------- */ -#define DMA_DMA5_A_STARTL_REG_DMA5_A_STARTL_Pos (0UL) /*!< DMA DMA5_A_STARTL_REG: DMA5_A_STARTL (Bit 0) */ -#define DMA_DMA5_A_STARTL_REG_DMA5_A_STARTL_Msk (0xffffUL) /*!< DMA DMA5_A_STARTL_REG: DMA5_A_STARTL (Bitfield-Mask: 0xffff) */ - -/* ---------------------------- DMA_DMA5_A_STARTH_REG --------------------------- */ -#define DMA_DMA5_A_STARTH_REG_DMA5_A_STARTH_Pos (0UL) /*!< DMA DMA5_A_STARTH_REG: DMA5_A_STARTH (Bit 0) */ -#define DMA_DMA5_A_STARTH_REG_DMA5_A_STARTH_Msk (0xffffUL) /*!< DMA DMA5_A_STARTH_REG: DMA5_A_STARTH (Bitfield-Mask: 0xffff) */ - -/* ---------------------------- DMA_DMA5_B_STARTL_REG --------------------------- */ -#define DMA_DMA5_B_STARTL_REG_DMA5_B_STARTL_Pos (0UL) /*!< DMA DMA5_B_STARTL_REG: DMA5_B_STARTL (Bit 0) */ -#define DMA_DMA5_B_STARTL_REG_DMA5_B_STARTL_Msk (0xffffUL) /*!< DMA DMA5_B_STARTL_REG: DMA5_B_STARTL (Bitfield-Mask: 0xffff) */ - -/* ---------------------------- DMA_DMA5_B_STARTH_REG --------------------------- */ -#define DMA_DMA5_B_STARTH_REG_DMA5_B_STARTH_Pos (0UL) /*!< DMA DMA5_B_STARTH_REG: DMA5_B_STARTH (Bit 0) */ -#define DMA_DMA5_B_STARTH_REG_DMA5_B_STARTH_Msk (0xffffUL) /*!< DMA DMA5_B_STARTH_REG: DMA5_B_STARTH (Bitfield-Mask: 0xffff) */ - -/* ------------------------------ DMA_DMA5_INT_REG ------------------------------ */ -#define DMA_DMA5_INT_REG_DMA5_INT_Pos (0UL) /*!< DMA DMA5_INT_REG: DMA5_INT (Bit 0) */ -#define DMA_DMA5_INT_REG_DMA5_INT_Msk (0xffffUL) /*!< DMA DMA5_INT_REG: DMA5_INT (Bitfield-Mask: 0xffff) */ - -/* ------------------------------ DMA_DMA5_LEN_REG ------------------------------ */ -#define DMA_DMA5_LEN_REG_DMA5_LEN_Pos (0UL) /*!< DMA DMA5_LEN_REG: DMA5_LEN (Bit 0) */ -#define DMA_DMA5_LEN_REG_DMA5_LEN_Msk (0xffffUL) /*!< DMA DMA5_LEN_REG: DMA5_LEN (Bitfield-Mask: 0xffff) */ - -/* ------------------------------ DMA_DMA5_CTRL_REG ----------------------------- */ -#define DMA_DMA5_CTRL_REG_DMA_ON_Pos (0UL) /*!< DMA DMA5_CTRL_REG: DMA_ON (Bit 0) */ -#define DMA_DMA5_CTRL_REG_DMA_ON_Msk (0x1UL) /*!< DMA DMA5_CTRL_REG: DMA_ON (Bitfield-Mask: 0x01) */ -#define DMA_DMA5_CTRL_REG_BW_Pos (1UL) /*!< DMA DMA5_CTRL_REG: BW (Bit 1) */ -#define DMA_DMA5_CTRL_REG_BW_Msk (0x6UL) /*!< DMA DMA5_CTRL_REG: BW (Bitfield-Mask: 0x03) */ -#define DMA_DMA5_CTRL_REG_IRQ_ENABLE_Pos (3UL) /*!< DMA DMA5_CTRL_REG: IRQ_ENABLE (Bit 3) */ -#define DMA_DMA5_CTRL_REG_IRQ_ENABLE_Msk (0x8UL) /*!< DMA DMA5_CTRL_REG: IRQ_ENABLE (Bitfield-Mask: 0x01) */ -#define DMA_DMA5_CTRL_REG_DREQ_MODE_Pos (4UL) /*!< DMA DMA5_CTRL_REG: DREQ_MODE (Bit 4) */ -#define DMA_DMA5_CTRL_REG_DREQ_MODE_Msk (0x10UL) /*!< DMA DMA5_CTRL_REG: DREQ_MODE (Bitfield-Mask: 0x01) */ -#define DMA_DMA5_CTRL_REG_BINC_Pos (5UL) /*!< DMA DMA5_CTRL_REG: BINC (Bit 5) */ -#define DMA_DMA5_CTRL_REG_BINC_Msk (0x20UL) /*!< DMA DMA5_CTRL_REG: BINC (Bitfield-Mask: 0x01) */ -#define DMA_DMA5_CTRL_REG_AINC_Pos (6UL) /*!< DMA DMA5_CTRL_REG: AINC (Bit 6) */ -#define DMA_DMA5_CTRL_REG_AINC_Msk (0x40UL) /*!< DMA DMA5_CTRL_REG: AINC (Bitfield-Mask: 0x01) */ -#define DMA_DMA5_CTRL_REG_CIRCULAR_Pos (7UL) /*!< DMA DMA5_CTRL_REG: CIRCULAR (Bit 7) */ -#define DMA_DMA5_CTRL_REG_CIRCULAR_Msk (0x80UL) /*!< DMA DMA5_CTRL_REG: CIRCULAR (Bitfield-Mask: 0x01) */ -#define DMA_DMA5_CTRL_REG_DMA_PRIO_Pos (8UL) /*!< DMA DMA5_CTRL_REG: DMA_PRIO (Bit 8) */ -#define DMA_DMA5_CTRL_REG_DMA_PRIO_Msk (0x700UL) /*!< DMA DMA5_CTRL_REG: DMA_PRIO (Bitfield-Mask: 0x07) */ -#define DMA_DMA5_CTRL_REG_DMA_IDLE_Pos (11UL) /*!< DMA DMA5_CTRL_REG: DMA_IDLE (Bit 11) */ -#define DMA_DMA5_CTRL_REG_DMA_IDLE_Msk (0x800UL) /*!< DMA DMA5_CTRL_REG: DMA_IDLE (Bitfield-Mask: 0x01) */ -#define DMA_DMA5_CTRL_REG_DMA_INIT_Pos (12UL) /*!< DMA DMA5_CTRL_REG: DMA_INIT (Bit 12) */ -#define DMA_DMA5_CTRL_REG_DMA_INIT_Msk (0x1000UL) /*!< DMA DMA5_CTRL_REG: DMA_INIT (Bitfield-Mask: 0x01) */ -#define DMA_DMA5_CTRL_REG_REQ_SENSE_Pos (13UL) /*!< DMA DMA5_CTRL_REG: REQ_SENSE (Bit 13) */ -#define DMA_DMA5_CTRL_REG_REQ_SENSE_Msk (0x2000UL) /*!< DMA DMA5_CTRL_REG: REQ_SENSE (Bitfield-Mask: 0x01) */ - -/* ------------------------------ DMA_DMA5_IDX_REG ------------------------------ */ -#define DMA_DMA5_IDX_REG_DMA5_IDX_Pos (0UL) /*!< DMA DMA5_IDX_REG: DMA5_IDX (Bit 0) */ -#define DMA_DMA5_IDX_REG_DMA5_IDX_Msk (0xffffUL) /*!< DMA DMA5_IDX_REG: DMA5_IDX (Bitfield-Mask: 0xffff) */ - -/* ---------------------------- DMA_DMA6_A_STARTL_REG --------------------------- */ -#define DMA_DMA6_A_STARTL_REG_DMA6_A_STARTL_Pos (0UL) /*!< DMA DMA6_A_STARTL_REG: DMA6_A_STARTL (Bit 0) */ -#define DMA_DMA6_A_STARTL_REG_DMA6_A_STARTL_Msk (0xffffUL) /*!< DMA DMA6_A_STARTL_REG: DMA6_A_STARTL (Bitfield-Mask: 0xffff) */ - -/* ---------------------------- DMA_DMA6_A_STARTH_REG --------------------------- */ -#define DMA_DMA6_A_STARTH_REG_DMA6_A_STARTH_Pos (0UL) /*!< DMA DMA6_A_STARTH_REG: DMA6_A_STARTH (Bit 0) */ -#define DMA_DMA6_A_STARTH_REG_DMA6_A_STARTH_Msk (0xffffUL) /*!< DMA DMA6_A_STARTH_REG: DMA6_A_STARTH (Bitfield-Mask: 0xffff) */ - -/* ---------------------------- DMA_DMA6_B_STARTL_REG --------------------------- */ -#define DMA_DMA6_B_STARTL_REG_DMA6_B_STARTL_Pos (0UL) /*!< DMA DMA6_B_STARTL_REG: DMA6_B_STARTL (Bit 0) */ -#define DMA_DMA6_B_STARTL_REG_DMA6_B_STARTL_Msk (0xffffUL) /*!< DMA DMA6_B_STARTL_REG: DMA6_B_STARTL (Bitfield-Mask: 0xffff) */ - -/* ---------------------------- DMA_DMA6_B_STARTH_REG --------------------------- */ -#define DMA_DMA6_B_STARTH_REG_DMA6_B_STARTH_Pos (0UL) /*!< DMA DMA6_B_STARTH_REG: DMA6_B_STARTH (Bit 0) */ -#define DMA_DMA6_B_STARTH_REG_DMA6_B_STARTH_Msk (0xffffUL) /*!< DMA DMA6_B_STARTH_REG: DMA6_B_STARTH (Bitfield-Mask: 0xffff) */ - -/* ------------------------------ DMA_DMA6_INT_REG ------------------------------ */ -#define DMA_DMA6_INT_REG_DMA6_INT_Pos (0UL) /*!< DMA DMA6_INT_REG: DMA6_INT (Bit 0) */ -#define DMA_DMA6_INT_REG_DMA6_INT_Msk (0xffffUL) /*!< DMA DMA6_INT_REG: DMA6_INT (Bitfield-Mask: 0xffff) */ - -/* ------------------------------ DMA_DMA6_LEN_REG ------------------------------ */ -#define DMA_DMA6_LEN_REG_DMA6_LEN_Pos (0UL) /*!< DMA DMA6_LEN_REG: DMA6_LEN (Bit 0) */ -#define DMA_DMA6_LEN_REG_DMA6_LEN_Msk (0xffffUL) /*!< DMA DMA6_LEN_REG: DMA6_LEN (Bitfield-Mask: 0xffff) */ - -/* ------------------------------ DMA_DMA6_CTRL_REG ----------------------------- */ -#define DMA_DMA6_CTRL_REG_DMA_ON_Pos (0UL) /*!< DMA DMA6_CTRL_REG: DMA_ON (Bit 0) */ -#define DMA_DMA6_CTRL_REG_DMA_ON_Msk (0x1UL) /*!< DMA DMA6_CTRL_REG: DMA_ON (Bitfield-Mask: 0x01) */ -#define DMA_DMA6_CTRL_REG_BW_Pos (1UL) /*!< DMA DMA6_CTRL_REG: BW (Bit 1) */ -#define DMA_DMA6_CTRL_REG_BW_Msk (0x6UL) /*!< DMA DMA6_CTRL_REG: BW (Bitfield-Mask: 0x03) */ -#define DMA_DMA6_CTRL_REG_IRQ_ENABLE_Pos (3UL) /*!< DMA DMA6_CTRL_REG: IRQ_ENABLE (Bit 3) */ -#define DMA_DMA6_CTRL_REG_IRQ_ENABLE_Msk (0x8UL) /*!< DMA DMA6_CTRL_REG: IRQ_ENABLE (Bitfield-Mask: 0x01) */ -#define DMA_DMA6_CTRL_REG_DREQ_MODE_Pos (4UL) /*!< DMA DMA6_CTRL_REG: DREQ_MODE (Bit 4) */ -#define DMA_DMA6_CTRL_REG_DREQ_MODE_Msk (0x10UL) /*!< DMA DMA6_CTRL_REG: DREQ_MODE (Bitfield-Mask: 0x01) */ -#define DMA_DMA6_CTRL_REG_BINC_Pos (5UL) /*!< DMA DMA6_CTRL_REG: BINC (Bit 5) */ -#define DMA_DMA6_CTRL_REG_BINC_Msk (0x20UL) /*!< DMA DMA6_CTRL_REG: BINC (Bitfield-Mask: 0x01) */ -#define DMA_DMA6_CTRL_REG_AINC_Pos (6UL) /*!< DMA DMA6_CTRL_REG: AINC (Bit 6) */ -#define DMA_DMA6_CTRL_REG_AINC_Msk (0x40UL) /*!< DMA DMA6_CTRL_REG: AINC (Bitfield-Mask: 0x01) */ -#define DMA_DMA6_CTRL_REG_CIRCULAR_Pos (7UL) /*!< DMA DMA6_CTRL_REG: CIRCULAR (Bit 7) */ -#define DMA_DMA6_CTRL_REG_CIRCULAR_Msk (0x80UL) /*!< DMA DMA6_CTRL_REG: CIRCULAR (Bitfield-Mask: 0x01) */ -#define DMA_DMA6_CTRL_REG_DMA_PRIO_Pos (8UL) /*!< DMA DMA6_CTRL_REG: DMA_PRIO (Bit 8) */ -#define DMA_DMA6_CTRL_REG_DMA_PRIO_Msk (0x700UL) /*!< DMA DMA6_CTRL_REG: DMA_PRIO (Bitfield-Mask: 0x07) */ -#define DMA_DMA6_CTRL_REG_DMA_IDLE_Pos (11UL) /*!< DMA DMA6_CTRL_REG: DMA_IDLE (Bit 11) */ -#define DMA_DMA6_CTRL_REG_DMA_IDLE_Msk (0x800UL) /*!< DMA DMA6_CTRL_REG: DMA_IDLE (Bitfield-Mask: 0x01) */ -#define DMA_DMA6_CTRL_REG_DMA_INIT_Pos (12UL) /*!< DMA DMA6_CTRL_REG: DMA_INIT (Bit 12) */ -#define DMA_DMA6_CTRL_REG_DMA_INIT_Msk (0x1000UL) /*!< DMA DMA6_CTRL_REG: DMA_INIT (Bitfield-Mask: 0x01) */ -#define DMA_DMA6_CTRL_REG_REQ_SENSE_Pos (13UL) /*!< DMA DMA6_CTRL_REG: REQ_SENSE (Bit 13) */ -#define DMA_DMA6_CTRL_REG_REQ_SENSE_Msk (0x2000UL) /*!< DMA DMA6_CTRL_REG: REQ_SENSE (Bitfield-Mask: 0x01) */ - -/* ------------------------------ DMA_DMA6_IDX_REG ------------------------------ */ -#define DMA_DMA6_IDX_REG_DMA6_IDX_Pos (0UL) /*!< DMA DMA6_IDX_REG: DMA6_IDX (Bit 0) */ -#define DMA_DMA6_IDX_REG_DMA6_IDX_Msk (0xffffUL) /*!< DMA DMA6_IDX_REG: DMA6_IDX (Bitfield-Mask: 0xffff) */ - -/* ---------------------------- DMA_DMA7_A_STARTL_REG --------------------------- */ -#define DMA_DMA7_A_STARTL_REG_DMA7_A_STARTL_Pos (0UL) /*!< DMA DMA7_A_STARTL_REG: DMA7_A_STARTL (Bit 0) */ -#define DMA_DMA7_A_STARTL_REG_DMA7_A_STARTL_Msk (0xffffUL) /*!< DMA DMA7_A_STARTL_REG: DMA7_A_STARTL (Bitfield-Mask: 0xffff) */ - -/* ---------------------------- DMA_DMA7_A_STARTH_REG --------------------------- */ -#define DMA_DMA7_A_STARTH_REG_DMA7_A_STARTH_Pos (0UL) /*!< DMA DMA7_A_STARTH_REG: DMA7_A_STARTH (Bit 0) */ -#define DMA_DMA7_A_STARTH_REG_DMA7_A_STARTH_Msk (0xffffUL) /*!< DMA DMA7_A_STARTH_REG: DMA7_A_STARTH (Bitfield-Mask: 0xffff) */ - -/* ---------------------------- DMA_DMA7_B_STARTL_REG --------------------------- */ -#define DMA_DMA7_B_STARTL_REG_DMA7_B_STARTL_Pos (0UL) /*!< DMA DMA7_B_STARTL_REG: DMA7_B_STARTL (Bit 0) */ -#define DMA_DMA7_B_STARTL_REG_DMA7_B_STARTL_Msk (0xffffUL) /*!< DMA DMA7_B_STARTL_REG: DMA7_B_STARTL (Bitfield-Mask: 0xffff) */ - -/* ---------------------------- DMA_DMA7_B_STARTH_REG --------------------------- */ -#define DMA_DMA7_B_STARTH_REG_DMA7_B_STARTH_Pos (0UL) /*!< DMA DMA7_B_STARTH_REG: DMA7_B_STARTH (Bit 0) */ -#define DMA_DMA7_B_STARTH_REG_DMA7_B_STARTH_Msk (0xffffUL) /*!< DMA DMA7_B_STARTH_REG: DMA7_B_STARTH (Bitfield-Mask: 0xffff) */ - -/* ------------------------------ DMA_DMA7_INT_REG ------------------------------ */ -#define DMA_DMA7_INT_REG_DMA7_INT_Pos (0UL) /*!< DMA DMA7_INT_REG: DMA7_INT (Bit 0) */ -#define DMA_DMA7_INT_REG_DMA7_INT_Msk (0xffffUL) /*!< DMA DMA7_INT_REG: DMA7_INT (Bitfield-Mask: 0xffff) */ - -/* ------------------------------ DMA_DMA7_LEN_REG ------------------------------ */ -#define DMA_DMA7_LEN_REG_DMA7_LEN_Pos (0UL) /*!< DMA DMA7_LEN_REG: DMA7_LEN (Bit 0) */ -#define DMA_DMA7_LEN_REG_DMA7_LEN_Msk (0xffffUL) /*!< DMA DMA7_LEN_REG: DMA7_LEN (Bitfield-Mask: 0xffff) */ - -/* ------------------------------ DMA_DMA7_CTRL_REG ----------------------------- */ -#define DMA_DMA7_CTRL_REG_DMA_ON_Pos (0UL) /*!< DMA DMA7_CTRL_REG: DMA_ON (Bit 0) */ -#define DMA_DMA7_CTRL_REG_DMA_ON_Msk (0x1UL) /*!< DMA DMA7_CTRL_REG: DMA_ON (Bitfield-Mask: 0x01) */ -#define DMA_DMA7_CTRL_REG_BW_Pos (1UL) /*!< DMA DMA7_CTRL_REG: BW (Bit 1) */ -#define DMA_DMA7_CTRL_REG_BW_Msk (0x6UL) /*!< DMA DMA7_CTRL_REG: BW (Bitfield-Mask: 0x03) */ -#define DMA_DMA7_CTRL_REG_IRQ_ENABLE_Pos (3UL) /*!< DMA DMA7_CTRL_REG: IRQ_ENABLE (Bit 3) */ -#define DMA_DMA7_CTRL_REG_IRQ_ENABLE_Msk (0x8UL) /*!< DMA DMA7_CTRL_REG: IRQ_ENABLE (Bitfield-Mask: 0x01) */ -#define DMA_DMA7_CTRL_REG_DREQ_MODE_Pos (4UL) /*!< DMA DMA7_CTRL_REG: DREQ_MODE (Bit 4) */ -#define DMA_DMA7_CTRL_REG_DREQ_MODE_Msk (0x10UL) /*!< DMA DMA7_CTRL_REG: DREQ_MODE (Bitfield-Mask: 0x01) */ -#define DMA_DMA7_CTRL_REG_BINC_Pos (5UL) /*!< DMA DMA7_CTRL_REG: BINC (Bit 5) */ -#define DMA_DMA7_CTRL_REG_BINC_Msk (0x20UL) /*!< DMA DMA7_CTRL_REG: BINC (Bitfield-Mask: 0x01) */ -#define DMA_DMA7_CTRL_REG_AINC_Pos (6UL) /*!< DMA DMA7_CTRL_REG: AINC (Bit 6) */ -#define DMA_DMA7_CTRL_REG_AINC_Msk (0x40UL) /*!< DMA DMA7_CTRL_REG: AINC (Bitfield-Mask: 0x01) */ -#define DMA_DMA7_CTRL_REG_CIRCULAR_Pos (7UL) /*!< DMA DMA7_CTRL_REG: CIRCULAR (Bit 7) */ -#define DMA_DMA7_CTRL_REG_CIRCULAR_Msk (0x80UL) /*!< DMA DMA7_CTRL_REG: CIRCULAR (Bitfield-Mask: 0x01) */ -#define DMA_DMA7_CTRL_REG_DMA_PRIO_Pos (8UL) /*!< DMA DMA7_CTRL_REG: DMA_PRIO (Bit 8) */ -#define DMA_DMA7_CTRL_REG_DMA_PRIO_Msk (0x700UL) /*!< DMA DMA7_CTRL_REG: DMA_PRIO (Bitfield-Mask: 0x07) */ -#define DMA_DMA7_CTRL_REG_DMA_IDLE_Pos (11UL) /*!< DMA DMA7_CTRL_REG: DMA_IDLE (Bit 11) */ -#define DMA_DMA7_CTRL_REG_DMA_IDLE_Msk (0x800UL) /*!< DMA DMA7_CTRL_REG: DMA_IDLE (Bitfield-Mask: 0x01) */ -#define DMA_DMA7_CTRL_REG_DMA_INIT_Pos (12UL) /*!< DMA DMA7_CTRL_REG: DMA_INIT (Bit 12) */ -#define DMA_DMA7_CTRL_REG_DMA_INIT_Msk (0x1000UL) /*!< DMA DMA7_CTRL_REG: DMA_INIT (Bitfield-Mask: 0x01) */ -#define DMA_DMA7_CTRL_REG_REQ_SENSE_Pos (13UL) /*!< DMA DMA7_CTRL_REG: REQ_SENSE (Bit 13) */ -#define DMA_DMA7_CTRL_REG_REQ_SENSE_Msk (0x2000UL) /*!< DMA DMA7_CTRL_REG: REQ_SENSE (Bitfield-Mask: 0x01) */ - -/* ------------------------------ DMA_DMA7_IDX_REG ------------------------------ */ -#define DMA_DMA7_IDX_REG_DMA7_IDX_Pos (0UL) /*!< DMA DMA7_IDX_REG: DMA7_IDX (Bit 0) */ -#define DMA_DMA7_IDX_REG_DMA7_IDX_Msk (0xffffUL) /*!< DMA DMA7_IDX_REG: DMA7_IDX (Bitfield-Mask: 0xffff) */ - -/* ----------------------------- DMA_DMA_REQ_MUX_REG ---------------------------- */ -#define DMA_DMA_REQ_MUX_REG_DMA01_SEL_Pos (0UL) /*!< DMA DMA_REQ_MUX_REG: DMA01_SEL (Bit 0) */ -#define DMA_DMA_REQ_MUX_REG_DMA01_SEL_Msk (0xfUL) /*!< DMA DMA_REQ_MUX_REG: DMA01_SEL (Bitfield-Mask: 0x0f) */ -#define DMA_DMA_REQ_MUX_REG_DMA23_SEL_Pos (4UL) /*!< DMA DMA_REQ_MUX_REG: DMA23_SEL (Bit 4) */ -#define DMA_DMA_REQ_MUX_REG_DMA23_SEL_Msk (0xf0UL) /*!< DMA DMA_REQ_MUX_REG: DMA23_SEL (Bitfield-Mask: 0x0f) */ -#define DMA_DMA_REQ_MUX_REG_DMA45_SEL_Pos (8UL) /*!< DMA DMA_REQ_MUX_REG: DMA45_SEL (Bit 8) */ -#define DMA_DMA_REQ_MUX_REG_DMA45_SEL_Msk (0xf00UL) /*!< DMA DMA_REQ_MUX_REG: DMA45_SEL (Bitfield-Mask: 0x0f) */ -#define DMA_DMA_REQ_MUX_REG_DMA67_SEL_Pos (12UL) /*!< DMA DMA_REQ_MUX_REG: DMA67_SEL (Bit 12) */ -#define DMA_DMA_REQ_MUX_REG_DMA67_SEL_Msk (0xf000UL) /*!< DMA DMA_REQ_MUX_REG: DMA67_SEL (Bitfield-Mask: 0x0f) */ - -/* --------------------------- DMA_DMA_INT_STATUS_REG --------------------------- */ -#define DMA_DMA_INT_STATUS_REG_DMA_IRQ_CH0_Pos (0UL) /*!< DMA DMA_INT_STATUS_REG: DMA_IRQ_CH0 (Bit 0) */ -#define DMA_DMA_INT_STATUS_REG_DMA_IRQ_CH0_Msk (0x1UL) /*!< DMA DMA_INT_STATUS_REG: DMA_IRQ_CH0 (Bitfield-Mask: 0x01) */ -#define DMA_DMA_INT_STATUS_REG_DMA_IRQ_CH1_Pos (1UL) /*!< DMA DMA_INT_STATUS_REG: DMA_IRQ_CH1 (Bit 1) */ -#define DMA_DMA_INT_STATUS_REG_DMA_IRQ_CH1_Msk (0x2UL) /*!< DMA DMA_INT_STATUS_REG: DMA_IRQ_CH1 (Bitfield-Mask: 0x01) */ -#define DMA_DMA_INT_STATUS_REG_DMA_IRQ_CH2_Pos (2UL) /*!< DMA DMA_INT_STATUS_REG: DMA_IRQ_CH2 (Bit 2) */ -#define DMA_DMA_INT_STATUS_REG_DMA_IRQ_CH2_Msk (0x4UL) /*!< DMA DMA_INT_STATUS_REG: DMA_IRQ_CH2 (Bitfield-Mask: 0x01) */ -#define DMA_DMA_INT_STATUS_REG_DMA_IRQ_CH3_Pos (3UL) /*!< DMA DMA_INT_STATUS_REG: DMA_IRQ_CH3 (Bit 3) */ -#define DMA_DMA_INT_STATUS_REG_DMA_IRQ_CH3_Msk (0x8UL) /*!< DMA DMA_INT_STATUS_REG: DMA_IRQ_CH3 (Bitfield-Mask: 0x01) */ -#define DMA_DMA_INT_STATUS_REG_DMA_IRQ_CH4_Pos (4UL) /*!< DMA DMA_INT_STATUS_REG: DMA_IRQ_CH4 (Bit 4) */ -#define DMA_DMA_INT_STATUS_REG_DMA_IRQ_CH4_Msk (0x10UL) /*!< DMA DMA_INT_STATUS_REG: DMA_IRQ_CH4 (Bitfield-Mask: 0x01) */ -#define DMA_DMA_INT_STATUS_REG_DMA_IRQ_CH5_Pos (5UL) /*!< DMA DMA_INT_STATUS_REG: DMA_IRQ_CH5 (Bit 5) */ -#define DMA_DMA_INT_STATUS_REG_DMA_IRQ_CH5_Msk (0x20UL) /*!< DMA DMA_INT_STATUS_REG: DMA_IRQ_CH5 (Bitfield-Mask: 0x01) */ -#define DMA_DMA_INT_STATUS_REG_DMA_IRQ_CH6_Pos (6UL) /*!< DMA DMA_INT_STATUS_REG: DMA_IRQ_CH6 (Bit 6) */ -#define DMA_DMA_INT_STATUS_REG_DMA_IRQ_CH6_Msk (0x40UL) /*!< DMA DMA_INT_STATUS_REG: DMA_IRQ_CH6 (Bitfield-Mask: 0x01) */ -#define DMA_DMA_INT_STATUS_REG_DMA_IRQ_CH7_Pos (7UL) /*!< DMA DMA_INT_STATUS_REG: DMA_IRQ_CH7 (Bit 7) */ -#define DMA_DMA_INT_STATUS_REG_DMA_IRQ_CH7_Msk (0x80UL) /*!< DMA DMA_INT_STATUS_REG: DMA_IRQ_CH7 (Bitfield-Mask: 0x01) */ - -/* ---------------------------- DMA_DMA_CLEAR_INT_REG --------------------------- */ -#define DMA_DMA_CLEAR_INT_REG_DMA_RST_IRQ_CH0_Pos (0UL) /*!< DMA DMA_CLEAR_INT_REG: DMA_RST_IRQ_CH0 (Bit 0) */ -#define DMA_DMA_CLEAR_INT_REG_DMA_RST_IRQ_CH0_Msk (0x1UL) /*!< DMA DMA_CLEAR_INT_REG: DMA_RST_IRQ_CH0 (Bitfield-Mask: 0x01) */ -#define DMA_DMA_CLEAR_INT_REG_DMA_RST_IRQ_CH1_Pos (1UL) /*!< DMA DMA_CLEAR_INT_REG: DMA_RST_IRQ_CH1 (Bit 1) */ -#define DMA_DMA_CLEAR_INT_REG_DMA_RST_IRQ_CH1_Msk (0x2UL) /*!< DMA DMA_CLEAR_INT_REG: DMA_RST_IRQ_CH1 (Bitfield-Mask: 0x01) */ -#define DMA_DMA_CLEAR_INT_REG_DMA_RST_IRQ_CH2_Pos (2UL) /*!< DMA DMA_CLEAR_INT_REG: DMA_RST_IRQ_CH2 (Bit 2) */ -#define DMA_DMA_CLEAR_INT_REG_DMA_RST_IRQ_CH2_Msk (0x4UL) /*!< DMA DMA_CLEAR_INT_REG: DMA_RST_IRQ_CH2 (Bitfield-Mask: 0x01) */ -#define DMA_DMA_CLEAR_INT_REG_DMA_RST_IRQ_CH3_Pos (3UL) /*!< DMA DMA_CLEAR_INT_REG: DMA_RST_IRQ_CH3 (Bit 3) */ -#define DMA_DMA_CLEAR_INT_REG_DMA_RST_IRQ_CH3_Msk (0x8UL) /*!< DMA DMA_CLEAR_INT_REG: DMA_RST_IRQ_CH3 (Bitfield-Mask: 0x01) */ -#define DMA_DMA_CLEAR_INT_REG_DMA_RST_IRQ_CH4_Pos (4UL) /*!< DMA DMA_CLEAR_INT_REG: DMA_RST_IRQ_CH4 (Bit 4) */ -#define DMA_DMA_CLEAR_INT_REG_DMA_RST_IRQ_CH4_Msk (0x10UL) /*!< DMA DMA_CLEAR_INT_REG: DMA_RST_IRQ_CH4 (Bitfield-Mask: 0x01) */ -#define DMA_DMA_CLEAR_INT_REG_DMA_RST_IRQ_CH5_Pos (5UL) /*!< DMA DMA_CLEAR_INT_REG: DMA_RST_IRQ_CH5 (Bit 5) */ -#define DMA_DMA_CLEAR_INT_REG_DMA_RST_IRQ_CH5_Msk (0x20UL) /*!< DMA DMA_CLEAR_INT_REG: DMA_RST_IRQ_CH5 (Bitfield-Mask: 0x01) */ -#define DMA_DMA_CLEAR_INT_REG_DMA_RST_IRQ_CH6_Pos (6UL) /*!< DMA DMA_CLEAR_INT_REG: DMA_RST_IRQ_CH6 (Bit 6) */ -#define DMA_DMA_CLEAR_INT_REG_DMA_RST_IRQ_CH6_Msk (0x40UL) /*!< DMA DMA_CLEAR_INT_REG: DMA_RST_IRQ_CH6 (Bitfield-Mask: 0x01) */ -#define DMA_DMA_CLEAR_INT_REG_DMA_RST_IRQ_CH7_Pos (7UL) /*!< DMA DMA_CLEAR_INT_REG: DMA_RST_IRQ_CH7 (Bit 7) */ -#define DMA_DMA_CLEAR_INT_REG_DMA_RST_IRQ_CH7_Msk (0x80UL) /*!< DMA DMA_CLEAR_INT_REG: DMA_RST_IRQ_CH7 (Bitfield-Mask: 0x01) */ - - -/* ================================================================================ */ -/* ================ struct 'ECC' Position & Mask ================ */ -/* ================================================================================ */ - - -/* ----------------------------- ECC_ECC_CONFIG_REG ----------------------------- */ -#define ECC_ECC_CONFIG_REG_ECC_OpPtrA_Pos (0UL) /*!< ECC ECC_CONFIG_REG: ECC_OpPtrA (Bit 0) */ -#define ECC_ECC_CONFIG_REG_ECC_OpPtrA_Msk (0x1fUL) /*!< ECC ECC_CONFIG_REG: ECC_OpPtrA (Bitfield-Mask: 0x1f) */ -#define ECC_ECC_CONFIG_REG_ECC_OpPtrB_Pos (8UL) /*!< ECC ECC_CONFIG_REG: ECC_OpPtrB (Bit 8) */ -#define ECC_ECC_CONFIG_REG_ECC_OpPtrB_Msk (0x1f00UL) /*!< ECC ECC_CONFIG_REG: ECC_OpPtrB (Bitfield-Mask: 0x1f) */ -#define ECC_ECC_CONFIG_REG_ECC_OpPtrC_Pos (16UL) /*!< ECC ECC_CONFIG_REG: ECC_OpPtrC (Bit 16) */ -#define ECC_ECC_CONFIG_REG_ECC_OpPtrC_Msk (0x1f0000UL) /*!< ECC ECC_CONFIG_REG: ECC_OpPtrC (Bitfield-Mask: 0x1f) */ - -/* ----------------------------- ECC_ECC_COMMAND_REG ---------------------------- */ -#define ECC_ECC_COMMAND_REG_ECC_TypeOperation_Pos (0UL) /*!< ECC ECC_COMMAND_REG: ECC_TypeOperation (Bit 0) */ -#define ECC_ECC_COMMAND_REG_ECC_TypeOperation_Msk (0x7fUL) /*!< ECC ECC_COMMAND_REG: ECC_TypeOperation (Bitfield-Mask: 0x7f) */ -#define ECC_ECC_COMMAND_REG_ECC_Field_Pos (7UL) /*!< ECC ECC_COMMAND_REG: ECC_Field (Bit 7) */ -#define ECC_ECC_COMMAND_REG_ECC_Field_Msk (0x80UL) /*!< ECC ECC_COMMAND_REG: ECC_Field (Bitfield-Mask: 0x01) */ -#define ECC_ECC_COMMAND_REG_ECC_SizeOfOperands_Pos (8UL) /*!< ECC ECC_COMMAND_REG: ECC_SizeOfOperands (Bit 8) */ -#define ECC_ECC_COMMAND_REG_ECC_SizeOfOperands_Msk (0xff00UL) /*!< ECC ECC_COMMAND_REG: ECC_SizeOfOperands (Bitfield-Mask: 0xff) */ -#define ECC_ECC_COMMAND_REG_ECC_SignA_Pos (29UL) /*!< ECC ECC_COMMAND_REG: ECC_SignA (Bit 29) */ -#define ECC_ECC_COMMAND_REG_ECC_SignA_Msk (0x20000000UL) /*!< ECC ECC_COMMAND_REG: ECC_SignA (Bitfield-Mask: 0x01) */ -#define ECC_ECC_COMMAND_REG_ECC_SignB_Pos (30UL) /*!< ECC ECC_COMMAND_REG: ECC_SignB (Bit 30) */ -#define ECC_ECC_COMMAND_REG_ECC_SignB_Msk (0x40000000UL) /*!< ECC ECC_COMMAND_REG: ECC_SignB (Bitfield-Mask: 0x01) */ -#define ECC_ECC_COMMAND_REG_ECC_CalcR2_Pos (31UL) /*!< ECC ECC_COMMAND_REG: ECC_CalcR2 (Bit 31) */ -#define ECC_ECC_COMMAND_REG_ECC_CalcR2_Msk (0x80000000UL) /*!< ECC ECC_COMMAND_REG: ECC_CalcR2 (Bitfield-Mask: 0x01) */ - -/* ----------------------------- ECC_ECC_CONTROL_REG ---------------------------- */ -#define ECC_ECC_CONTROL_REG_ECC_Start_Pos (0UL) /*!< ECC ECC_CONTROL_REG: ECC_Start (Bit 0) */ -#define ECC_ECC_CONTROL_REG_ECC_Start_Msk (0x1UL) /*!< ECC ECC_CONTROL_REG: ECC_Start (Bitfield-Mask: 0x01) */ - -/* ----------------------------- ECC_ECC_STATUS_REG ----------------------------- */ -#define ECC_ECC_STATUS_REG_ECC_Fail_Address_Pos (0UL) /*!< ECC ECC_STATUS_REG: ECC_Fail_Address (Bit 0) */ -#define ECC_ECC_STATUS_REG_ECC_Fail_Address_Msk (0xfUL) /*!< ECC ECC_STATUS_REG: ECC_Fail_Address (Bitfield-Mask: 0x0f) */ -#define ECC_ECC_STATUS_REG_ECC_Point_Px_NotOnCurve_Pos (4UL) /*!< ECC ECC_STATUS_REG: ECC_Point_Px_NotOnCurve (Bit 4) */ -#define ECC_ECC_STATUS_REG_ECC_Point_Px_NotOnCurve_Msk (0x10UL) /*!< ECC ECC_STATUS_REG: ECC_Point_Px_NotOnCurve (Bitfield-Mask: 0x01) */ -#define ECC_ECC_STATUS_REG_ECC_Point_Px_AtInfinity_Pos (5UL) /*!< ECC ECC_STATUS_REG: ECC_Point_Px_AtInfinity (Bit 5) */ -#define ECC_ECC_STATUS_REG_ECC_Point_Px_AtInfinity_Msk (0x20UL) /*!< ECC ECC_STATUS_REG: ECC_Point_Px_AtInfinity (Bitfield-Mask: 0x01) */ -#define ECC_ECC_STATUS_REG_ECC_Couple_NotValid_Pos (6UL) /*!< ECC ECC_STATUS_REG: ECC_Couple_NotValid (Bit 6) */ -#define ECC_ECC_STATUS_REG_ECC_Couple_NotValid_Msk (0x40UL) /*!< ECC ECC_STATUS_REG: ECC_Couple_NotValid (Bitfield-Mask: 0x01) */ -#define ECC_ECC_STATUS_REG_ECC_Param_n_NotValid_Pos (7UL) /*!< ECC ECC_STATUS_REG: ECC_Param_n_NotValid (Bit 7) */ -#define ECC_ECC_STATUS_REG_ECC_Param_n_NotValid_Msk (0x80UL) /*!< ECC ECC_STATUS_REG: ECC_Param_n_NotValid (Bitfield-Mask: 0x01) */ -#define ECC_ECC_STATUS_REG_ECC_Signature_NotValid_Pos (9UL) /*!< ECC ECC_STATUS_REG: ECC_Signature_NotValid (Bit 9) */ -#define ECC_ECC_STATUS_REG_ECC_Signature_NotValid_Msk (0x200UL) /*!< ECC ECC_STATUS_REG: ECC_Signature_NotValid (Bitfield-Mask: 0x01) */ -#define ECC_ECC_STATUS_REG_ECC_Param_AB_NotValid_Pos (10UL) /*!< ECC ECC_STATUS_REG: ECC_Param_AB_NotValid (Bit 10) */ -#define ECC_ECC_STATUS_REG_ECC_Param_AB_NotValid_Msk (0x400UL) /*!< ECC ECC_STATUS_REG: ECC_Param_AB_NotValid (Bitfield-Mask: 0x01) */ -#define ECC_ECC_STATUS_REG_ECC_NotInvertible_Pos (11UL) /*!< ECC ECC_STATUS_REG: ECC_NotInvertible (Bit 11) */ -#define ECC_ECC_STATUS_REG_ECC_NotInvertible_Msk (0x800UL) /*!< ECC ECC_STATUS_REG: ECC_NotInvertible (Bitfield-Mask: 0x01) */ -#define ECC_ECC_STATUS_REG_ECC_PrimalityTestResult_Pos (12UL) /*!< ECC ECC_STATUS_REG: ECC_PrimalityTestResult (Bit 12) */ -#define ECC_ECC_STATUS_REG_ECC_PrimalityTestResult_Msk (0x1000UL) /*!< ECC ECC_STATUS_REG: ECC_PrimalityTestResult (Bitfield-Mask: 0x01) */ -#define ECC_ECC_STATUS_REG_ECC_Busy_Pos (16UL) /*!< ECC ECC_STATUS_REG: ECC_Busy (Bit 16) */ -#define ECC_ECC_STATUS_REG_ECC_Busy_Msk (0x10000UL) /*!< ECC ECC_STATUS_REG: ECC_Busy (Bitfield-Mask: 0x01) */ - -/* ----------------------------- ECC_ECC_VERSION_REG ---------------------------- */ -#define ECC_ECC_VERSION_REG_ECC_SVN_Pos (0UL) /*!< ECC ECC_VERSION_REG: ECC_SVN (Bit 0) */ -#define ECC_ECC_VERSION_REG_ECC_SVN_Msk (0xffUL) /*!< ECC ECC_VERSION_REG: ECC_SVN (Bitfield-Mask: 0xff) */ -#define ECC_ECC_VERSION_REG_ECC_HVN_Pos (8UL) /*!< ECC ECC_VERSION_REG: ECC_HVN (Bit 8) */ -#define ECC_ECC_VERSION_REG_ECC_HVN_Msk (0xff00UL) /*!< ECC ECC_VERSION_REG: ECC_HVN (Bitfield-Mask: 0xff) */ - - -/* ================================================================================ */ -/* ================ struct 'FTDF' Position & Mask ================ */ -/* ================================================================================ */ - - -/* -------------------------- FTDF_FTDF_TX_FIFO_0_0_REG ------------------------- */ -#define FTDF_FTDF_TX_FIFO_0_0_REG_TX_FIFO_Pos (0UL) /*!< FTDF FTDF_TX_FIFO_0_0_REG: TX_FIFO (Bit 0) */ -#define FTDF_FTDF_TX_FIFO_0_0_REG_TX_FIFO_Msk (0xffffffffUL) /*!< FTDF FTDF_TX_FIFO_0_0_REG: TX_FIFO (Bitfield-Mask: 0xffffffff) */ - -/* -------------------------- FTDF_FTDF_TX_FIFO_1_0_REG ------------------------- */ -#define FTDF_FTDF_TX_FIFO_1_0_REG_TX_FIFO_Pos (0UL) /*!< FTDF FTDF_TX_FIFO_1_0_REG: TX_FIFO (Bit 0) */ -#define FTDF_FTDF_TX_FIFO_1_0_REG_TX_FIFO_Msk (0xffffffffUL) /*!< FTDF FTDF_TX_FIFO_1_0_REG: TX_FIFO (Bitfield-Mask: 0xffffffff) */ - -/* -------------------------- FTDF_FTDF_TX_FIFO_2_0_REG ------------------------- */ -#define FTDF_FTDF_TX_FIFO_2_0_REG_TX_FIFO_Pos (0UL) /*!< FTDF FTDF_TX_FIFO_2_0_REG: TX_FIFO (Bit 0) */ -#define FTDF_FTDF_TX_FIFO_2_0_REG_TX_FIFO_Msk (0xffffffffUL) /*!< FTDF FTDF_TX_FIFO_2_0_REG: TX_FIFO (Bitfield-Mask: 0xffffffff) */ - -/* -------------------------- FTDF_FTDF_TX_FIFO_3_0_REG ------------------------- */ -#define FTDF_FTDF_TX_FIFO_3_0_REG_TX_FIFO_Pos (0UL) /*!< FTDF FTDF_TX_FIFO_3_0_REG: TX_FIFO (Bit 0) */ -#define FTDF_FTDF_TX_FIFO_3_0_REG_TX_FIFO_Msk (0xffffffffUL) /*!< FTDF FTDF_TX_FIFO_3_0_REG: TX_FIFO (Bitfield-Mask: 0xffffffff) */ - -/* ----------------------- FTDF_FTDF_TX_META_DATA_0_0_REG ----------------------- */ -#define FTDF_FTDF_TX_META_DATA_0_0_REG_FRAME_LENGTH_Pos (0UL) /*!< FTDF FTDF_TX_META_DATA_0_0_REG: FRAME_LENGTH (Bit 0) */ -#define FTDF_FTDF_TX_META_DATA_0_0_REG_FRAME_LENGTH_Msk (0x7fUL) /*!< FTDF FTDF_TX_META_DATA_0_0_REG: FRAME_LENGTH (Bitfield-Mask: 0x7f) */ -#define FTDF_FTDF_TX_META_DATA_0_0_REG_PHYATTR_DEM_PTI_Pos (7UL) /*!< FTDF FTDF_TX_META_DATA_0_0_REG: PHYATTR_DEM_PTI (Bit 7) */ -#define FTDF_FTDF_TX_META_DATA_0_0_REG_PHYATTR_DEM_PTI_Msk (0x780UL) /*!< FTDF FTDF_TX_META_DATA_0_0_REG: PHYATTR_DEM_PTI (Bitfield-Mask: 0x0f) */ -#define FTDF_FTDF_TX_META_DATA_0_0_REG_PHYATTR_CN_Pos (11UL) /*!< FTDF FTDF_TX_META_DATA_0_0_REG: PHYATTR_CN (Bit 11) */ -#define FTDF_FTDF_TX_META_DATA_0_0_REG_PHYATTR_CN_Msk (0x7800UL) /*!< FTDF FTDF_TX_META_DATA_0_0_REG: PHYATTR_CN (Bitfield-Mask: 0x0f) */ -#define FTDF_FTDF_TX_META_DATA_0_0_REG_PHYATTR_CALCAP_Pos (15UL) /*!< FTDF FTDF_TX_META_DATA_0_0_REG: PHYATTR_CALCAP (Bit 15) */ -#define FTDF_FTDF_TX_META_DATA_0_0_REG_PHYATTR_CALCAP_Msk (0x78000UL) /*!< FTDF FTDF_TX_META_DATA_0_0_REG: PHYATTR_CALCAP (Bitfield-Mask: 0x0f) */ -#define FTDF_FTDF_TX_META_DATA_0_0_REG_PHYATTR_RF_GPIO_PINS_Pos (19UL) /*!< FTDF FTDF_TX_META_DATA_0_0_REG: PHYATTR_RF_GPIO_PINS (Bit 19) */ -#define FTDF_FTDF_TX_META_DATA_0_0_REG_PHYATTR_RF_GPIO_PINS_Msk (0x380000UL) /*!< FTDF FTDF_TX_META_DATA_0_0_REG: PHYATTR_RF_GPIO_PINS (Bitfield-Mask: 0x07) */ -#define FTDF_FTDF_TX_META_DATA_0_0_REG_PHYATTR_HSI_Pos (22UL) /*!< FTDF FTDF_TX_META_DATA_0_0_REG: PHYATTR_HSI (Bit 22) */ -#define FTDF_FTDF_TX_META_DATA_0_0_REG_PHYATTR_HSI_Msk (0x400000UL) /*!< FTDF FTDF_TX_META_DATA_0_0_REG: PHYATTR_HSI (Bitfield-Mask: 0x01) */ -#define FTDF_FTDF_TX_META_DATA_0_0_REG_FRAMETYPE_Pos (23UL) /*!< FTDF FTDF_TX_META_DATA_0_0_REG: FRAMETYPE (Bit 23) */ -#define FTDF_FTDF_TX_META_DATA_0_0_REG_FRAMETYPE_Msk (0x3800000UL) /*!< FTDF FTDF_TX_META_DATA_0_0_REG: FRAMETYPE (Bitfield-Mask: 0x07) */ -#define FTDF_FTDF_TX_META_DATA_0_0_REG_CSMACA_ENA_Pos (26UL) /*!< FTDF FTDF_TX_META_DATA_0_0_REG: CSMACA_ENA (Bit 26) */ -#define FTDF_FTDF_TX_META_DATA_0_0_REG_CSMACA_ENA_Msk (0x4000000UL) /*!< FTDF FTDF_TX_META_DATA_0_0_REG: CSMACA_ENA (Bitfield-Mask: 0x01) */ -#define FTDF_FTDF_TX_META_DATA_0_0_REG_ACKREQUEST_Pos (28UL) /*!< FTDF FTDF_TX_META_DATA_0_0_REG: ACKREQUEST (Bit 28) */ -#define FTDF_FTDF_TX_META_DATA_0_0_REG_ACKREQUEST_Msk (0x10000000UL) /*!< FTDF FTDF_TX_META_DATA_0_0_REG: ACKREQUEST (Bitfield-Mask: 0x01) */ -#define FTDF_FTDF_TX_META_DATA_0_0_REG_CRC16_ENA_Pos (30UL) /*!< FTDF FTDF_TX_META_DATA_0_0_REG: CRC16_ENA (Bit 30) */ -#define FTDF_FTDF_TX_META_DATA_0_0_REG_CRC16_ENA_Msk (0x40000000UL) /*!< FTDF FTDF_TX_META_DATA_0_0_REG: CRC16_ENA (Bitfield-Mask: 0x01) */ - -/* ----------------------- FTDF_FTDF_TX_META_DATA_1_0_REG ----------------------- */ -#define FTDF_FTDF_TX_META_DATA_1_0_REG_MACSN_Pos (0UL) /*!< FTDF FTDF_TX_META_DATA_1_0_REG: MACSN (Bit 0) */ -#define FTDF_FTDF_TX_META_DATA_1_0_REG_MACSN_Msk (0xffUL) /*!< FTDF FTDF_TX_META_DATA_1_0_REG: MACSN (Bitfield-Mask: 0xff) */ - -/* ----------------------- FTDF_FTDF_TX_META_DATA_0_1_REG ----------------------- */ -#define FTDF_FTDF_TX_META_DATA_0_1_REG_FRAME_LENGTH_Pos (0UL) /*!< FTDF FTDF_TX_META_DATA_0_1_REG: FRAME_LENGTH (Bit 0) */ -#define FTDF_FTDF_TX_META_DATA_0_1_REG_FRAME_LENGTH_Msk (0x7fUL) /*!< FTDF FTDF_TX_META_DATA_0_1_REG: FRAME_LENGTH (Bitfield-Mask: 0x7f) */ -#define FTDF_FTDF_TX_META_DATA_0_1_REG_PHYATTR_DEM_PTI_Pos (7UL) /*!< FTDF FTDF_TX_META_DATA_0_1_REG: PHYATTR_DEM_PTI (Bit 7) */ -#define FTDF_FTDF_TX_META_DATA_0_1_REG_PHYATTR_DEM_PTI_Msk (0x780UL) /*!< FTDF FTDF_TX_META_DATA_0_1_REG: PHYATTR_DEM_PTI (Bitfield-Mask: 0x0f) */ -#define FTDF_FTDF_TX_META_DATA_0_1_REG_PHYATTR_CN_Pos (11UL) /*!< FTDF FTDF_TX_META_DATA_0_1_REG: PHYATTR_CN (Bit 11) */ -#define FTDF_FTDF_TX_META_DATA_0_1_REG_PHYATTR_CN_Msk (0x7800UL) /*!< FTDF FTDF_TX_META_DATA_0_1_REG: PHYATTR_CN (Bitfield-Mask: 0x0f) */ -#define FTDF_FTDF_TX_META_DATA_0_1_REG_PHYATTR_CALCAP_Pos (15UL) /*!< FTDF FTDF_TX_META_DATA_0_1_REG: PHYATTR_CALCAP (Bit 15) */ -#define FTDF_FTDF_TX_META_DATA_0_1_REG_PHYATTR_CALCAP_Msk (0x78000UL) /*!< FTDF FTDF_TX_META_DATA_0_1_REG: PHYATTR_CALCAP (Bitfield-Mask: 0x0f) */ -#define FTDF_FTDF_TX_META_DATA_0_1_REG_PHYATTR_RF_GPIO_PINS_Pos (19UL) /*!< FTDF FTDF_TX_META_DATA_0_1_REG: PHYATTR_RF_GPIO_PINS (Bit 19) */ -#define FTDF_FTDF_TX_META_DATA_0_1_REG_PHYATTR_RF_GPIO_PINS_Msk (0x380000UL) /*!< FTDF FTDF_TX_META_DATA_0_1_REG: PHYATTR_RF_GPIO_PINS (Bitfield-Mask: 0x07) */ -#define FTDF_FTDF_TX_META_DATA_0_1_REG_PHYATTR_HSI_Pos (22UL) /*!< FTDF FTDF_TX_META_DATA_0_1_REG: PHYATTR_HSI (Bit 22) */ -#define FTDF_FTDF_TX_META_DATA_0_1_REG_PHYATTR_HSI_Msk (0x400000UL) /*!< FTDF FTDF_TX_META_DATA_0_1_REG: PHYATTR_HSI (Bitfield-Mask: 0x01) */ -#define FTDF_FTDF_TX_META_DATA_0_1_REG_FRAMETYPE_Pos (23UL) /*!< FTDF FTDF_TX_META_DATA_0_1_REG: FRAMETYPE (Bit 23) */ -#define FTDF_FTDF_TX_META_DATA_0_1_REG_FRAMETYPE_Msk (0x3800000UL) /*!< FTDF FTDF_TX_META_DATA_0_1_REG: FRAMETYPE (Bitfield-Mask: 0x07) */ -#define FTDF_FTDF_TX_META_DATA_0_1_REG_CSMACA_ENA_Pos (26UL) /*!< FTDF FTDF_TX_META_DATA_0_1_REG: CSMACA_ENA (Bit 26) */ -#define FTDF_FTDF_TX_META_DATA_0_1_REG_CSMACA_ENA_Msk (0x4000000UL) /*!< FTDF FTDF_TX_META_DATA_0_1_REG: CSMACA_ENA (Bitfield-Mask: 0x01) */ -#define FTDF_FTDF_TX_META_DATA_0_1_REG_ACKREQUEST_Pos (28UL) /*!< FTDF FTDF_TX_META_DATA_0_1_REG: ACKREQUEST (Bit 28) */ -#define FTDF_FTDF_TX_META_DATA_0_1_REG_ACKREQUEST_Msk (0x10000000UL) /*!< FTDF FTDF_TX_META_DATA_0_1_REG: ACKREQUEST (Bitfield-Mask: 0x01) */ -#define FTDF_FTDF_TX_META_DATA_0_1_REG_CRC16_ENA_Pos (30UL) /*!< FTDF FTDF_TX_META_DATA_0_1_REG: CRC16_ENA (Bit 30) */ -#define FTDF_FTDF_TX_META_DATA_0_1_REG_CRC16_ENA_Msk (0x40000000UL) /*!< FTDF FTDF_TX_META_DATA_0_1_REG: CRC16_ENA (Bitfield-Mask: 0x01) */ - -/* ----------------------- FTDF_FTDF_TX_META_DATA_1_1_REG ----------------------- */ -#define FTDF_FTDF_TX_META_DATA_1_1_REG_MACSN_Pos (0UL) /*!< FTDF FTDF_TX_META_DATA_1_1_REG: MACSN (Bit 0) */ -#define FTDF_FTDF_TX_META_DATA_1_1_REG_MACSN_Msk (0xffUL) /*!< FTDF FTDF_TX_META_DATA_1_1_REG: MACSN (Bitfield-Mask: 0xff) */ - -/* ----------------------- FTDF_FTDF_TX_META_DATA_0_2_REG ----------------------- */ -#define FTDF_FTDF_TX_META_DATA_0_2_REG_FRAME_LENGTH_Pos (0UL) /*!< FTDF FTDF_TX_META_DATA_0_2_REG: FRAME_LENGTH (Bit 0) */ -#define FTDF_FTDF_TX_META_DATA_0_2_REG_FRAME_LENGTH_Msk (0x7fUL) /*!< FTDF FTDF_TX_META_DATA_0_2_REG: FRAME_LENGTH (Bitfield-Mask: 0x7f) */ -#define FTDF_FTDF_TX_META_DATA_0_2_REG_PHYATTR_DEM_PTI_Pos (7UL) /*!< FTDF FTDF_TX_META_DATA_0_2_REG: PHYATTR_DEM_PTI (Bit 7) */ -#define FTDF_FTDF_TX_META_DATA_0_2_REG_PHYATTR_DEM_PTI_Msk (0x780UL) /*!< FTDF FTDF_TX_META_DATA_0_2_REG: PHYATTR_DEM_PTI (Bitfield-Mask: 0x0f) */ -#define FTDF_FTDF_TX_META_DATA_0_2_REG_PHYATTR_CN_Pos (11UL) /*!< FTDF FTDF_TX_META_DATA_0_2_REG: PHYATTR_CN (Bit 11) */ -#define FTDF_FTDF_TX_META_DATA_0_2_REG_PHYATTR_CN_Msk (0x7800UL) /*!< FTDF FTDF_TX_META_DATA_0_2_REG: PHYATTR_CN (Bitfield-Mask: 0x0f) */ -#define FTDF_FTDF_TX_META_DATA_0_2_REG_PHYATTR_CALCAP_Pos (15UL) /*!< FTDF FTDF_TX_META_DATA_0_2_REG: PHYATTR_CALCAP (Bit 15) */ -#define FTDF_FTDF_TX_META_DATA_0_2_REG_PHYATTR_CALCAP_Msk (0x78000UL) /*!< FTDF FTDF_TX_META_DATA_0_2_REG: PHYATTR_CALCAP (Bitfield-Mask: 0x0f) */ -#define FTDF_FTDF_TX_META_DATA_0_2_REG_PHYATTR_RF_GPIO_PINS_Pos (19UL) /*!< FTDF FTDF_TX_META_DATA_0_2_REG: PHYATTR_RF_GPIO_PINS (Bit 19) */ -#define FTDF_FTDF_TX_META_DATA_0_2_REG_PHYATTR_RF_GPIO_PINS_Msk (0x380000UL) /*!< FTDF FTDF_TX_META_DATA_0_2_REG: PHYATTR_RF_GPIO_PINS (Bitfield-Mask: 0x07) */ -#define FTDF_FTDF_TX_META_DATA_0_2_REG_PHYATTR_HSI_Pos (22UL) /*!< FTDF FTDF_TX_META_DATA_0_2_REG: PHYATTR_HSI (Bit 22) */ -#define FTDF_FTDF_TX_META_DATA_0_2_REG_PHYATTR_HSI_Msk (0x400000UL) /*!< FTDF FTDF_TX_META_DATA_0_2_REG: PHYATTR_HSI (Bitfield-Mask: 0x01) */ -#define FTDF_FTDF_TX_META_DATA_0_2_REG_FRAMETYPE_Pos (23UL) /*!< FTDF FTDF_TX_META_DATA_0_2_REG: FRAMETYPE (Bit 23) */ -#define FTDF_FTDF_TX_META_DATA_0_2_REG_FRAMETYPE_Msk (0x3800000UL) /*!< FTDF FTDF_TX_META_DATA_0_2_REG: FRAMETYPE (Bitfield-Mask: 0x07) */ -#define FTDF_FTDF_TX_META_DATA_0_2_REG_CSMACA_ENA_Pos (26UL) /*!< FTDF FTDF_TX_META_DATA_0_2_REG: CSMACA_ENA (Bit 26) */ -#define FTDF_FTDF_TX_META_DATA_0_2_REG_CSMACA_ENA_Msk (0x4000000UL) /*!< FTDF FTDF_TX_META_DATA_0_2_REG: CSMACA_ENA (Bitfield-Mask: 0x01) */ -#define FTDF_FTDF_TX_META_DATA_0_2_REG_ACKREQUEST_Pos (28UL) /*!< FTDF FTDF_TX_META_DATA_0_2_REG: ACKREQUEST (Bit 28) */ -#define FTDF_FTDF_TX_META_DATA_0_2_REG_ACKREQUEST_Msk (0x10000000UL) /*!< FTDF FTDF_TX_META_DATA_0_2_REG: ACKREQUEST (Bitfield-Mask: 0x01) */ -#define FTDF_FTDF_TX_META_DATA_0_2_REG_CRC16_ENA_Pos (30UL) /*!< FTDF FTDF_TX_META_DATA_0_2_REG: CRC16_ENA (Bit 30) */ -#define FTDF_FTDF_TX_META_DATA_0_2_REG_CRC16_ENA_Msk (0x40000000UL) /*!< FTDF FTDF_TX_META_DATA_0_2_REG: CRC16_ENA (Bitfield-Mask: 0x01) */ - -/* ----------------------- FTDF_FTDF_TX_META_DATA_1_2_REG ----------------------- */ -#define FTDF_FTDF_TX_META_DATA_1_2_REG_MACSN_Pos (0UL) /*!< FTDF FTDF_TX_META_DATA_1_2_REG: MACSN (Bit 0) */ -#define FTDF_FTDF_TX_META_DATA_1_2_REG_MACSN_Msk (0xffUL) /*!< FTDF FTDF_TX_META_DATA_1_2_REG: MACSN (Bitfield-Mask: 0xff) */ - -/* ----------------------- FTDF_FTDF_TX_META_DATA_0_3_REG ----------------------- */ -#define FTDF_FTDF_TX_META_DATA_0_3_REG_FRAME_LENGTH_Pos (0UL) /*!< FTDF FTDF_TX_META_DATA_0_3_REG: FRAME_LENGTH (Bit 0) */ -#define FTDF_FTDF_TX_META_DATA_0_3_REG_FRAME_LENGTH_Msk (0x7fUL) /*!< FTDF FTDF_TX_META_DATA_0_3_REG: FRAME_LENGTH (Bitfield-Mask: 0x7f) */ -#define FTDF_FTDF_TX_META_DATA_0_3_REG_PHYATTR_DEM_PTI_Pos (7UL) /*!< FTDF FTDF_TX_META_DATA_0_3_REG: PHYATTR_DEM_PTI (Bit 7) */ -#define FTDF_FTDF_TX_META_DATA_0_3_REG_PHYATTR_DEM_PTI_Msk (0x780UL) /*!< FTDF FTDF_TX_META_DATA_0_3_REG: PHYATTR_DEM_PTI (Bitfield-Mask: 0x0f) */ -#define FTDF_FTDF_TX_META_DATA_0_3_REG_PHYATTR_CN_Pos (11UL) /*!< FTDF FTDF_TX_META_DATA_0_3_REG: PHYATTR_CN (Bit 11) */ -#define FTDF_FTDF_TX_META_DATA_0_3_REG_PHYATTR_CN_Msk (0x7800UL) /*!< FTDF FTDF_TX_META_DATA_0_3_REG: PHYATTR_CN (Bitfield-Mask: 0x0f) */ -#define FTDF_FTDF_TX_META_DATA_0_3_REG_PHYATTR_CALCAP_Pos (15UL) /*!< FTDF FTDF_TX_META_DATA_0_3_REG: PHYATTR_CALCAP (Bit 15) */ -#define FTDF_FTDF_TX_META_DATA_0_3_REG_PHYATTR_CALCAP_Msk (0x78000UL) /*!< FTDF FTDF_TX_META_DATA_0_3_REG: PHYATTR_CALCAP (Bitfield-Mask: 0x0f) */ -#define FTDF_FTDF_TX_META_DATA_0_3_REG_PHYATTR_RF_GPIO_PINS_Pos (19UL) /*!< FTDF FTDF_TX_META_DATA_0_3_REG: PHYATTR_RF_GPIO_PINS (Bit 19) */ -#define FTDF_FTDF_TX_META_DATA_0_3_REG_PHYATTR_RF_GPIO_PINS_Msk (0x380000UL) /*!< FTDF FTDF_TX_META_DATA_0_3_REG: PHYATTR_RF_GPIO_PINS (Bitfield-Mask: 0x07) */ -#define FTDF_FTDF_TX_META_DATA_0_3_REG_PHYATTR_HSI_Pos (22UL) /*!< FTDF FTDF_TX_META_DATA_0_3_REG: PHYATTR_HSI (Bit 22) */ -#define FTDF_FTDF_TX_META_DATA_0_3_REG_PHYATTR_HSI_Msk (0x400000UL) /*!< FTDF FTDF_TX_META_DATA_0_3_REG: PHYATTR_HSI (Bitfield-Mask: 0x01) */ -#define FTDF_FTDF_TX_META_DATA_0_3_REG_FRAMETYPE_Pos (23UL) /*!< FTDF FTDF_TX_META_DATA_0_3_REG: FRAMETYPE (Bit 23) */ -#define FTDF_FTDF_TX_META_DATA_0_3_REG_FRAMETYPE_Msk (0x3800000UL) /*!< FTDF FTDF_TX_META_DATA_0_3_REG: FRAMETYPE (Bitfield-Mask: 0x07) */ -#define FTDF_FTDF_TX_META_DATA_0_3_REG_CSMACA_ENA_Pos (26UL) /*!< FTDF FTDF_TX_META_DATA_0_3_REG: CSMACA_ENA (Bit 26) */ -#define FTDF_FTDF_TX_META_DATA_0_3_REG_CSMACA_ENA_Msk (0x4000000UL) /*!< FTDF FTDF_TX_META_DATA_0_3_REG: CSMACA_ENA (Bitfield-Mask: 0x01) */ -#define FTDF_FTDF_TX_META_DATA_0_3_REG_ACKREQUEST_Pos (28UL) /*!< FTDF FTDF_TX_META_DATA_0_3_REG: ACKREQUEST (Bit 28) */ -#define FTDF_FTDF_TX_META_DATA_0_3_REG_ACKREQUEST_Msk (0x10000000UL) /*!< FTDF FTDF_TX_META_DATA_0_3_REG: ACKREQUEST (Bitfield-Mask: 0x01) */ -#define FTDF_FTDF_TX_META_DATA_0_3_REG_CRC16_ENA_Pos (30UL) /*!< FTDF FTDF_TX_META_DATA_0_3_REG: CRC16_ENA (Bit 30) */ -#define FTDF_FTDF_TX_META_DATA_0_3_REG_CRC16_ENA_Msk (0x40000000UL) /*!< FTDF FTDF_TX_META_DATA_0_3_REG: CRC16_ENA (Bitfield-Mask: 0x01) */ - -/* ----------------------- FTDF_FTDF_TX_META_DATA_1_3_REG ----------------------- */ -#define FTDF_FTDF_TX_META_DATA_1_3_REG_MACSN_Pos (0UL) /*!< FTDF FTDF_TX_META_DATA_1_3_REG: MACSN (Bit 0) */ -#define FTDF_FTDF_TX_META_DATA_1_3_REG_MACSN_Msk (0xffUL) /*!< FTDF FTDF_TX_META_DATA_1_3_REG: MACSN (Bitfield-Mask: 0xff) */ - -/* --------------------- FTDF_FTDF_TX_RETURN_STATUS_0_0_REG --------------------- */ -#define FTDF_FTDF_TX_RETURN_STATUS_0_0_REG_TXTIMESTAMP_Pos (0UL) /*!< FTDF FTDF_TX_RETURN_STATUS_0_0_REG: TXTIMESTAMP (Bit 0) */ -#define FTDF_FTDF_TX_RETURN_STATUS_0_0_REG_TXTIMESTAMP_Msk (0xffffffffUL) /*!< FTDF FTDF_TX_RETURN_STATUS_0_0_REG: TXTIMESTAMP (Bitfield-Mask: 0xffffffff) */ - -/* --------------------- FTDF_FTDF_TX_RETURN_STATUS_1_0_REG --------------------- */ -#define FTDF_FTDF_TX_RETURN_STATUS_1_0_REG_ACKFAIL_Pos (0UL) /*!< FTDF FTDF_TX_RETURN_STATUS_1_0_REG: ACKFAIL (Bit 0) */ -#define FTDF_FTDF_TX_RETURN_STATUS_1_0_REG_ACKFAIL_Msk (0x1UL) /*!< FTDF FTDF_TX_RETURN_STATUS_1_0_REG: ACKFAIL (Bitfield-Mask: 0x01) */ -#define FTDF_FTDF_TX_RETURN_STATUS_1_0_REG_CSMACAFAIL_Pos (1UL) /*!< FTDF FTDF_TX_RETURN_STATUS_1_0_REG: CSMACAFAIL (Bit 1) */ -#define FTDF_FTDF_TX_RETURN_STATUS_1_0_REG_CSMACAFAIL_Msk (0x2UL) /*!< FTDF FTDF_TX_RETURN_STATUS_1_0_REG: CSMACAFAIL (Bitfield-Mask: 0x01) */ -#define FTDF_FTDF_TX_RETURN_STATUS_1_0_REG_CSMACANRRETRIES_Pos (2UL) /*!< FTDF FTDF_TX_RETURN_STATUS_1_0_REG: CSMACANRRETRIES (Bit 2) */ -#define FTDF_FTDF_TX_RETURN_STATUS_1_0_REG_CSMACANRRETRIES_Msk (0x1cUL) /*!< FTDF FTDF_TX_RETURN_STATUS_1_0_REG: CSMACANRRETRIES (Bitfield-Mask: 0x07) */ - -/* --------------------- FTDF_FTDF_TX_RETURN_STATUS_0_1_REG --------------------- */ -#define FTDF_FTDF_TX_RETURN_STATUS_0_1_REG_TXTIMESTAMP_Pos (0UL) /*!< FTDF FTDF_TX_RETURN_STATUS_0_1_REG: TXTIMESTAMP (Bit 0) */ -#define FTDF_FTDF_TX_RETURN_STATUS_0_1_REG_TXTIMESTAMP_Msk (0xffffffffUL) /*!< FTDF FTDF_TX_RETURN_STATUS_0_1_REG: TXTIMESTAMP (Bitfield-Mask: 0xffffffff) */ - -/* --------------------- FTDF_FTDF_TX_RETURN_STATUS_1_1_REG --------------------- */ -#define FTDF_FTDF_TX_RETURN_STATUS_1_1_REG_ACKFAIL_Pos (0UL) /*!< FTDF FTDF_TX_RETURN_STATUS_1_1_REG: ACKFAIL (Bit 0) */ -#define FTDF_FTDF_TX_RETURN_STATUS_1_1_REG_ACKFAIL_Msk (0x1UL) /*!< FTDF FTDF_TX_RETURN_STATUS_1_1_REG: ACKFAIL (Bitfield-Mask: 0x01) */ -#define FTDF_FTDF_TX_RETURN_STATUS_1_1_REG_CSMACAFAIL_Pos (1UL) /*!< FTDF FTDF_TX_RETURN_STATUS_1_1_REG: CSMACAFAIL (Bit 1) */ -#define FTDF_FTDF_TX_RETURN_STATUS_1_1_REG_CSMACAFAIL_Msk (0x2UL) /*!< FTDF FTDF_TX_RETURN_STATUS_1_1_REG: CSMACAFAIL (Bitfield-Mask: 0x01) */ -#define FTDF_FTDF_TX_RETURN_STATUS_1_1_REG_CSMACANRRETRIES_Pos (2UL) /*!< FTDF FTDF_TX_RETURN_STATUS_1_1_REG: CSMACANRRETRIES (Bit 2) */ -#define FTDF_FTDF_TX_RETURN_STATUS_1_1_REG_CSMACANRRETRIES_Msk (0x1cUL) /*!< FTDF FTDF_TX_RETURN_STATUS_1_1_REG: CSMACANRRETRIES (Bitfield-Mask: 0x07) */ - -/* --------------------- FTDF_FTDF_TX_RETURN_STATUS_0_2_REG --------------------- */ -#define FTDF_FTDF_TX_RETURN_STATUS_0_2_REG_TXTIMESTAMP_Pos (0UL) /*!< FTDF FTDF_TX_RETURN_STATUS_0_2_REG: TXTIMESTAMP (Bit 0) */ -#define FTDF_FTDF_TX_RETURN_STATUS_0_2_REG_TXTIMESTAMP_Msk (0xffffffffUL) /*!< FTDF FTDF_TX_RETURN_STATUS_0_2_REG: TXTIMESTAMP (Bitfield-Mask: 0xffffffff) */ - -/* --------------------- FTDF_FTDF_TX_RETURN_STATUS_1_2_REG --------------------- */ -#define FTDF_FTDF_TX_RETURN_STATUS_1_2_REG_ACKFAIL_Pos (0UL) /*!< FTDF FTDF_TX_RETURN_STATUS_1_2_REG: ACKFAIL (Bit 0) */ -#define FTDF_FTDF_TX_RETURN_STATUS_1_2_REG_ACKFAIL_Msk (0x1UL) /*!< FTDF FTDF_TX_RETURN_STATUS_1_2_REG: ACKFAIL (Bitfield-Mask: 0x01) */ -#define FTDF_FTDF_TX_RETURN_STATUS_1_2_REG_CSMACAFAIL_Pos (1UL) /*!< FTDF FTDF_TX_RETURN_STATUS_1_2_REG: CSMACAFAIL (Bit 1) */ -#define FTDF_FTDF_TX_RETURN_STATUS_1_2_REG_CSMACAFAIL_Msk (0x2UL) /*!< FTDF FTDF_TX_RETURN_STATUS_1_2_REG: CSMACAFAIL (Bitfield-Mask: 0x01) */ -#define FTDF_FTDF_TX_RETURN_STATUS_1_2_REG_CSMACANRRETRIES_Pos (2UL) /*!< FTDF FTDF_TX_RETURN_STATUS_1_2_REG: CSMACANRRETRIES (Bit 2) */ -#define FTDF_FTDF_TX_RETURN_STATUS_1_2_REG_CSMACANRRETRIES_Msk (0x1cUL) /*!< FTDF FTDF_TX_RETURN_STATUS_1_2_REG: CSMACANRRETRIES (Bitfield-Mask: 0x07) */ - -/* --------------------- FTDF_FTDF_TX_RETURN_STATUS_0_3_REG --------------------- */ -#define FTDF_FTDF_TX_RETURN_STATUS_0_3_REG_TXTIMESTAMP_Pos (0UL) /*!< FTDF FTDF_TX_RETURN_STATUS_0_3_REG: TXTIMESTAMP (Bit 0) */ -#define FTDF_FTDF_TX_RETURN_STATUS_0_3_REG_TXTIMESTAMP_Msk (0xffffffffUL) /*!< FTDF FTDF_TX_RETURN_STATUS_0_3_REG: TXTIMESTAMP (Bitfield-Mask: 0xffffffff) */ - -/* --------------------- FTDF_FTDF_TX_RETURN_STATUS_1_3_REG --------------------- */ -#define FTDF_FTDF_TX_RETURN_STATUS_1_3_REG_ACKFAIL_Pos (0UL) /*!< FTDF FTDF_TX_RETURN_STATUS_1_3_REG: ACKFAIL (Bit 0) */ -#define FTDF_FTDF_TX_RETURN_STATUS_1_3_REG_ACKFAIL_Msk (0x1UL) /*!< FTDF FTDF_TX_RETURN_STATUS_1_3_REG: ACKFAIL (Bitfield-Mask: 0x01) */ -#define FTDF_FTDF_TX_RETURN_STATUS_1_3_REG_CSMACAFAIL_Pos (1UL) /*!< FTDF FTDF_TX_RETURN_STATUS_1_3_REG: CSMACAFAIL (Bit 1) */ -#define FTDF_FTDF_TX_RETURN_STATUS_1_3_REG_CSMACAFAIL_Msk (0x2UL) /*!< FTDF FTDF_TX_RETURN_STATUS_1_3_REG: CSMACAFAIL (Bitfield-Mask: 0x01) */ -#define FTDF_FTDF_TX_RETURN_STATUS_1_3_REG_CSMACANRRETRIES_Pos (2UL) /*!< FTDF FTDF_TX_RETURN_STATUS_1_3_REG: CSMACANRRETRIES (Bit 2) */ -#define FTDF_FTDF_TX_RETURN_STATUS_1_3_REG_CSMACANRRETRIES_Msk (0x1cUL) /*!< FTDF FTDF_TX_RETURN_STATUS_1_3_REG: CSMACANRRETRIES (Bitfield-Mask: 0x07) */ - -/* -------------------------- FTDF_FTDF_RX_META_0_0_REG ------------------------- */ -#define FTDF_FTDF_RX_META_0_0_REG_RX_TIMESTAMP_Pos (0UL) /*!< FTDF FTDF_RX_META_0_0_REG: RX_TIMESTAMP (Bit 0) */ -#define FTDF_FTDF_RX_META_0_0_REG_RX_TIMESTAMP_Msk (0xffffffffUL) /*!< FTDF FTDF_RX_META_0_0_REG: RX_TIMESTAMP (Bitfield-Mask: 0xffffffff) */ - -/* -------------------------- FTDF_FTDF_RX_META_1_0_REG ------------------------- */ -#define FTDF_FTDF_RX_META_1_0_REG_CRC16_ERROR_Pos (0UL) /*!< FTDF FTDF_RX_META_1_0_REG: CRC16_ERROR (Bit 0) */ -#define FTDF_FTDF_RX_META_1_0_REG_CRC16_ERROR_Msk (0x1UL) /*!< FTDF FTDF_RX_META_1_0_REG: CRC16_ERROR (Bitfield-Mask: 0x01) */ -#define FTDF_FTDF_RX_META_1_0_REG_RES_FRM_TYPE_ERROR_Pos (2UL) /*!< FTDF FTDF_RX_META_1_0_REG: RES_FRM_TYPE_ERROR (Bit 2) */ -#define FTDF_FTDF_RX_META_1_0_REG_RES_FRM_TYPE_ERROR_Msk (0x4UL) /*!< FTDF FTDF_RX_META_1_0_REG: RES_FRM_TYPE_ERROR (Bitfield-Mask: 0x01) */ -#define FTDF_FTDF_RX_META_1_0_REG_RES_FRM_VERSION_ERROR_Pos (3UL) /*!< FTDF FTDF_RX_META_1_0_REG: RES_FRM_VERSION_ERROR (Bit 3) */ -#define FTDF_FTDF_RX_META_1_0_REG_RES_FRM_VERSION_ERROR_Msk (0x8UL) /*!< FTDF FTDF_RX_META_1_0_REG: RES_FRM_VERSION_ERROR (Bitfield-Mask: 0x01) */ -#define FTDF_FTDF_RX_META_1_0_REG_DPANID_ERROR_Pos (4UL) /*!< FTDF FTDF_RX_META_1_0_REG: DPANID_ERROR (Bit 4) */ -#define FTDF_FTDF_RX_META_1_0_REG_DPANID_ERROR_Msk (0x10UL) /*!< FTDF FTDF_RX_META_1_0_REG: DPANID_ERROR (Bitfield-Mask: 0x01) */ -#define FTDF_FTDF_RX_META_1_0_REG_DADDR_ERROR_Pos (5UL) /*!< FTDF FTDF_RX_META_1_0_REG: DADDR_ERROR (Bit 5) */ -#define FTDF_FTDF_RX_META_1_0_REG_DADDR_ERROR_Msk (0x20UL) /*!< FTDF FTDF_RX_META_1_0_REG: DADDR_ERROR (Bitfield-Mask: 0x01) */ -#define FTDF_FTDF_RX_META_1_0_REG_SPANID_ERROR_Pos (6UL) /*!< FTDF FTDF_RX_META_1_0_REG: SPANID_ERROR (Bit 6) */ -#define FTDF_FTDF_RX_META_1_0_REG_SPANID_ERROR_Msk (0x40UL) /*!< FTDF FTDF_RX_META_1_0_REG: SPANID_ERROR (Bitfield-Mask: 0x01) */ -#define FTDF_FTDF_RX_META_1_0_REG_ISPANID_COORD_ERROR_Pos (7UL) /*!< FTDF FTDF_RX_META_1_0_REG: ISPANID_COORD_ERROR (Bit 7) */ -#define FTDF_FTDF_RX_META_1_0_REG_ISPANID_COORD_ERROR_Msk (0x80UL) /*!< FTDF FTDF_RX_META_1_0_REG: ISPANID_COORD_ERROR (Bitfield-Mask: 0x01) */ -#define FTDF_FTDF_RX_META_1_0_REG_QUALITY_INDICATOR_Pos (8UL) /*!< FTDF FTDF_RX_META_1_0_REG: QUALITY_INDICATOR (Bit 8) */ -#define FTDF_FTDF_RX_META_1_0_REG_QUALITY_INDICATOR_Msk (0xff00UL) /*!< FTDF FTDF_RX_META_1_0_REG: QUALITY_INDICATOR (Bitfield-Mask: 0xff) */ - -/* -------------------------- FTDF_FTDF_RX_META_0_1_REG ------------------------- */ -#define FTDF_FTDF_RX_META_0_1_REG_RX_TIMESTAMP_Pos (0UL) /*!< FTDF FTDF_RX_META_0_1_REG: RX_TIMESTAMP (Bit 0) */ -#define FTDF_FTDF_RX_META_0_1_REG_RX_TIMESTAMP_Msk (0xffffffffUL) /*!< FTDF FTDF_RX_META_0_1_REG: RX_TIMESTAMP (Bitfield-Mask: 0xffffffff) */ - -/* -------------------------- FTDF_FTDF_RX_META_1_1_REG ------------------------- */ -#define FTDF_FTDF_RX_META_1_1_REG_CRC16_ERROR_Pos (0UL) /*!< FTDF FTDF_RX_META_1_1_REG: CRC16_ERROR (Bit 0) */ -#define FTDF_FTDF_RX_META_1_1_REG_CRC16_ERROR_Msk (0x1UL) /*!< FTDF FTDF_RX_META_1_1_REG: CRC16_ERROR (Bitfield-Mask: 0x01) */ -#define FTDF_FTDF_RX_META_1_1_REG_RES_FRM_TYPE_ERROR_Pos (2UL) /*!< FTDF FTDF_RX_META_1_1_REG: RES_FRM_TYPE_ERROR (Bit 2) */ -#define FTDF_FTDF_RX_META_1_1_REG_RES_FRM_TYPE_ERROR_Msk (0x4UL) /*!< FTDF FTDF_RX_META_1_1_REG: RES_FRM_TYPE_ERROR (Bitfield-Mask: 0x01) */ -#define FTDF_FTDF_RX_META_1_1_REG_RES_FRM_VERSION_ERROR_Pos (3UL) /*!< FTDF FTDF_RX_META_1_1_REG: RES_FRM_VERSION_ERROR (Bit 3) */ -#define FTDF_FTDF_RX_META_1_1_REG_RES_FRM_VERSION_ERROR_Msk (0x8UL) /*!< FTDF FTDF_RX_META_1_1_REG: RES_FRM_VERSION_ERROR (Bitfield-Mask: 0x01) */ -#define FTDF_FTDF_RX_META_1_1_REG_DPANID_ERROR_Pos (4UL) /*!< FTDF FTDF_RX_META_1_1_REG: DPANID_ERROR (Bit 4) */ -#define FTDF_FTDF_RX_META_1_1_REG_DPANID_ERROR_Msk (0x10UL) /*!< FTDF FTDF_RX_META_1_1_REG: DPANID_ERROR (Bitfield-Mask: 0x01) */ -#define FTDF_FTDF_RX_META_1_1_REG_DADDR_ERROR_Pos (5UL) /*!< FTDF FTDF_RX_META_1_1_REG: DADDR_ERROR (Bit 5) */ -#define FTDF_FTDF_RX_META_1_1_REG_DADDR_ERROR_Msk (0x20UL) /*!< FTDF FTDF_RX_META_1_1_REG: DADDR_ERROR (Bitfield-Mask: 0x01) */ -#define FTDF_FTDF_RX_META_1_1_REG_SPANID_ERROR_Pos (6UL) /*!< FTDF FTDF_RX_META_1_1_REG: SPANID_ERROR (Bit 6) */ -#define FTDF_FTDF_RX_META_1_1_REG_SPANID_ERROR_Msk (0x40UL) /*!< FTDF FTDF_RX_META_1_1_REG: SPANID_ERROR (Bitfield-Mask: 0x01) */ -#define FTDF_FTDF_RX_META_1_1_REG_ISPANID_COORD_ERROR_Pos (7UL) /*!< FTDF FTDF_RX_META_1_1_REG: ISPANID_COORD_ERROR (Bit 7) */ -#define FTDF_FTDF_RX_META_1_1_REG_ISPANID_COORD_ERROR_Msk (0x80UL) /*!< FTDF FTDF_RX_META_1_1_REG: ISPANID_COORD_ERROR (Bitfield-Mask: 0x01) */ -#define FTDF_FTDF_RX_META_1_1_REG_QUALITY_INDICATOR_Pos (8UL) /*!< FTDF FTDF_RX_META_1_1_REG: QUALITY_INDICATOR (Bit 8) */ -#define FTDF_FTDF_RX_META_1_1_REG_QUALITY_INDICATOR_Msk (0xff00UL) /*!< FTDF FTDF_RX_META_1_1_REG: QUALITY_INDICATOR (Bitfield-Mask: 0xff) */ - -/* -------------------------- FTDF_FTDF_RX_META_0_2_REG ------------------------- */ -#define FTDF_FTDF_RX_META_0_2_REG_RX_TIMESTAMP_Pos (0UL) /*!< FTDF FTDF_RX_META_0_2_REG: RX_TIMESTAMP (Bit 0) */ -#define FTDF_FTDF_RX_META_0_2_REG_RX_TIMESTAMP_Msk (0xffffffffUL) /*!< FTDF FTDF_RX_META_0_2_REG: RX_TIMESTAMP (Bitfield-Mask: 0xffffffff) */ - -/* -------------------------- FTDF_FTDF_RX_META_1_2_REG ------------------------- */ -#define FTDF_FTDF_RX_META_1_2_REG_CRC16_ERROR_Pos (0UL) /*!< FTDF FTDF_RX_META_1_2_REG: CRC16_ERROR (Bit 0) */ -#define FTDF_FTDF_RX_META_1_2_REG_CRC16_ERROR_Msk (0x1UL) /*!< FTDF FTDF_RX_META_1_2_REG: CRC16_ERROR (Bitfield-Mask: 0x01) */ -#define FTDF_FTDF_RX_META_1_2_REG_RES_FRM_TYPE_ERROR_Pos (2UL) /*!< FTDF FTDF_RX_META_1_2_REG: RES_FRM_TYPE_ERROR (Bit 2) */ -#define FTDF_FTDF_RX_META_1_2_REG_RES_FRM_TYPE_ERROR_Msk (0x4UL) /*!< FTDF FTDF_RX_META_1_2_REG: RES_FRM_TYPE_ERROR (Bitfield-Mask: 0x01) */ -#define FTDF_FTDF_RX_META_1_2_REG_RES_FRM_VERSION_ERROR_Pos (3UL) /*!< FTDF FTDF_RX_META_1_2_REG: RES_FRM_VERSION_ERROR (Bit 3) */ -#define FTDF_FTDF_RX_META_1_2_REG_RES_FRM_VERSION_ERROR_Msk (0x8UL) /*!< FTDF FTDF_RX_META_1_2_REG: RES_FRM_VERSION_ERROR (Bitfield-Mask: 0x01) */ -#define FTDF_FTDF_RX_META_1_2_REG_DPANID_ERROR_Pos (4UL) /*!< FTDF FTDF_RX_META_1_2_REG: DPANID_ERROR (Bit 4) */ -#define FTDF_FTDF_RX_META_1_2_REG_DPANID_ERROR_Msk (0x10UL) /*!< FTDF FTDF_RX_META_1_2_REG: DPANID_ERROR (Bitfield-Mask: 0x01) */ -#define FTDF_FTDF_RX_META_1_2_REG_DADDR_ERROR_Pos (5UL) /*!< FTDF FTDF_RX_META_1_2_REG: DADDR_ERROR (Bit 5) */ -#define FTDF_FTDF_RX_META_1_2_REG_DADDR_ERROR_Msk (0x20UL) /*!< FTDF FTDF_RX_META_1_2_REG: DADDR_ERROR (Bitfield-Mask: 0x01) */ -#define FTDF_FTDF_RX_META_1_2_REG_SPANID_ERROR_Pos (6UL) /*!< FTDF FTDF_RX_META_1_2_REG: SPANID_ERROR (Bit 6) */ -#define FTDF_FTDF_RX_META_1_2_REG_SPANID_ERROR_Msk (0x40UL) /*!< FTDF FTDF_RX_META_1_2_REG: SPANID_ERROR (Bitfield-Mask: 0x01) */ -#define FTDF_FTDF_RX_META_1_2_REG_ISPANID_COORD_ERROR_Pos (7UL) /*!< FTDF FTDF_RX_META_1_2_REG: ISPANID_COORD_ERROR (Bit 7) */ -#define FTDF_FTDF_RX_META_1_2_REG_ISPANID_COORD_ERROR_Msk (0x80UL) /*!< FTDF FTDF_RX_META_1_2_REG: ISPANID_COORD_ERROR (Bitfield-Mask: 0x01) */ -#define FTDF_FTDF_RX_META_1_2_REG_QUALITY_INDICATOR_Pos (8UL) /*!< FTDF FTDF_RX_META_1_2_REG: QUALITY_INDICATOR (Bit 8) */ -#define FTDF_FTDF_RX_META_1_2_REG_QUALITY_INDICATOR_Msk (0xff00UL) /*!< FTDF FTDF_RX_META_1_2_REG: QUALITY_INDICATOR (Bitfield-Mask: 0xff) */ - -/* -------------------------- FTDF_FTDF_RX_META_0_3_REG ------------------------- */ -#define FTDF_FTDF_RX_META_0_3_REG_RX_TIMESTAMP_Pos (0UL) /*!< FTDF FTDF_RX_META_0_3_REG: RX_TIMESTAMP (Bit 0) */ -#define FTDF_FTDF_RX_META_0_3_REG_RX_TIMESTAMP_Msk (0xffffffffUL) /*!< FTDF FTDF_RX_META_0_3_REG: RX_TIMESTAMP (Bitfield-Mask: 0xffffffff) */ - -/* -------------------------- FTDF_FTDF_RX_META_1_3_REG ------------------------- */ -#define FTDF_FTDF_RX_META_1_3_REG_CRC16_ERROR_Pos (0UL) /*!< FTDF FTDF_RX_META_1_3_REG: CRC16_ERROR (Bit 0) */ -#define FTDF_FTDF_RX_META_1_3_REG_CRC16_ERROR_Msk (0x1UL) /*!< FTDF FTDF_RX_META_1_3_REG: CRC16_ERROR (Bitfield-Mask: 0x01) */ -#define FTDF_FTDF_RX_META_1_3_REG_RES_FRM_TYPE_ERROR_Pos (2UL) /*!< FTDF FTDF_RX_META_1_3_REG: RES_FRM_TYPE_ERROR (Bit 2) */ -#define FTDF_FTDF_RX_META_1_3_REG_RES_FRM_TYPE_ERROR_Msk (0x4UL) /*!< FTDF FTDF_RX_META_1_3_REG: RES_FRM_TYPE_ERROR (Bitfield-Mask: 0x01) */ -#define FTDF_FTDF_RX_META_1_3_REG_RES_FRM_VERSION_ERROR_Pos (3UL) /*!< FTDF FTDF_RX_META_1_3_REG: RES_FRM_VERSION_ERROR (Bit 3) */ -#define FTDF_FTDF_RX_META_1_3_REG_RES_FRM_VERSION_ERROR_Msk (0x8UL) /*!< FTDF FTDF_RX_META_1_3_REG: RES_FRM_VERSION_ERROR (Bitfield-Mask: 0x01) */ -#define FTDF_FTDF_RX_META_1_3_REG_DPANID_ERROR_Pos (4UL) /*!< FTDF FTDF_RX_META_1_3_REG: DPANID_ERROR (Bit 4) */ -#define FTDF_FTDF_RX_META_1_3_REG_DPANID_ERROR_Msk (0x10UL) /*!< FTDF FTDF_RX_META_1_3_REG: DPANID_ERROR (Bitfield-Mask: 0x01) */ -#define FTDF_FTDF_RX_META_1_3_REG_DADDR_ERROR_Pos (5UL) /*!< FTDF FTDF_RX_META_1_3_REG: DADDR_ERROR (Bit 5) */ -#define FTDF_FTDF_RX_META_1_3_REG_DADDR_ERROR_Msk (0x20UL) /*!< FTDF FTDF_RX_META_1_3_REG: DADDR_ERROR (Bitfield-Mask: 0x01) */ -#define FTDF_FTDF_RX_META_1_3_REG_SPANID_ERROR_Pos (6UL) /*!< FTDF FTDF_RX_META_1_3_REG: SPANID_ERROR (Bit 6) */ -#define FTDF_FTDF_RX_META_1_3_REG_SPANID_ERROR_Msk (0x40UL) /*!< FTDF FTDF_RX_META_1_3_REG: SPANID_ERROR (Bitfield-Mask: 0x01) */ -#define FTDF_FTDF_RX_META_1_3_REG_ISPANID_COORD_ERROR_Pos (7UL) /*!< FTDF FTDF_RX_META_1_3_REG: ISPANID_COORD_ERROR (Bit 7) */ -#define FTDF_FTDF_RX_META_1_3_REG_ISPANID_COORD_ERROR_Msk (0x80UL) /*!< FTDF FTDF_RX_META_1_3_REG: ISPANID_COORD_ERROR (Bitfield-Mask: 0x01) */ -#define FTDF_FTDF_RX_META_1_3_REG_QUALITY_INDICATOR_Pos (8UL) /*!< FTDF FTDF_RX_META_1_3_REG: QUALITY_INDICATOR (Bit 8) */ -#define FTDF_FTDF_RX_META_1_3_REG_QUALITY_INDICATOR_Msk (0xff00UL) /*!< FTDF FTDF_RX_META_1_3_REG: QUALITY_INDICATOR (Bitfield-Mask: 0xff) */ - -/* -------------------------- FTDF_FTDF_RX_META_0_4_REG ------------------------- */ -#define FTDF_FTDF_RX_META_0_4_REG_RX_TIMESTAMP_Pos (0UL) /*!< FTDF FTDF_RX_META_0_4_REG: RX_TIMESTAMP (Bit 0) */ -#define FTDF_FTDF_RX_META_0_4_REG_RX_TIMESTAMP_Msk (0xffffffffUL) /*!< FTDF FTDF_RX_META_0_4_REG: RX_TIMESTAMP (Bitfield-Mask: 0xffffffff) */ - -/* -------------------------- FTDF_FTDF_RX_META_1_4_REG ------------------------- */ -#define FTDF_FTDF_RX_META_1_4_REG_CRC16_ERROR_Pos (0UL) /*!< FTDF FTDF_RX_META_1_4_REG: CRC16_ERROR (Bit 0) */ -#define FTDF_FTDF_RX_META_1_4_REG_CRC16_ERROR_Msk (0x1UL) /*!< FTDF FTDF_RX_META_1_4_REG: CRC16_ERROR (Bitfield-Mask: 0x01) */ -#define FTDF_FTDF_RX_META_1_4_REG_RES_FRM_TYPE_ERROR_Pos (2UL) /*!< FTDF FTDF_RX_META_1_4_REG: RES_FRM_TYPE_ERROR (Bit 2) */ -#define FTDF_FTDF_RX_META_1_4_REG_RES_FRM_TYPE_ERROR_Msk (0x4UL) /*!< FTDF FTDF_RX_META_1_4_REG: RES_FRM_TYPE_ERROR (Bitfield-Mask: 0x01) */ -#define FTDF_FTDF_RX_META_1_4_REG_RES_FRM_VERSION_ERROR_Pos (3UL) /*!< FTDF FTDF_RX_META_1_4_REG: RES_FRM_VERSION_ERROR (Bit 3) */ -#define FTDF_FTDF_RX_META_1_4_REG_RES_FRM_VERSION_ERROR_Msk (0x8UL) /*!< FTDF FTDF_RX_META_1_4_REG: RES_FRM_VERSION_ERROR (Bitfield-Mask: 0x01) */ -#define FTDF_FTDF_RX_META_1_4_REG_DPANID_ERROR_Pos (4UL) /*!< FTDF FTDF_RX_META_1_4_REG: DPANID_ERROR (Bit 4) */ -#define FTDF_FTDF_RX_META_1_4_REG_DPANID_ERROR_Msk (0x10UL) /*!< FTDF FTDF_RX_META_1_4_REG: DPANID_ERROR (Bitfield-Mask: 0x01) */ -#define FTDF_FTDF_RX_META_1_4_REG_DADDR_ERROR_Pos (5UL) /*!< FTDF FTDF_RX_META_1_4_REG: DADDR_ERROR (Bit 5) */ -#define FTDF_FTDF_RX_META_1_4_REG_DADDR_ERROR_Msk (0x20UL) /*!< FTDF FTDF_RX_META_1_4_REG: DADDR_ERROR (Bitfield-Mask: 0x01) */ -#define FTDF_FTDF_RX_META_1_4_REG_SPANID_ERROR_Pos (6UL) /*!< FTDF FTDF_RX_META_1_4_REG: SPANID_ERROR (Bit 6) */ -#define FTDF_FTDF_RX_META_1_4_REG_SPANID_ERROR_Msk (0x40UL) /*!< FTDF FTDF_RX_META_1_4_REG: SPANID_ERROR (Bitfield-Mask: 0x01) */ -#define FTDF_FTDF_RX_META_1_4_REG_ISPANID_COORD_ERROR_Pos (7UL) /*!< FTDF FTDF_RX_META_1_4_REG: ISPANID_COORD_ERROR (Bit 7) */ -#define FTDF_FTDF_RX_META_1_4_REG_ISPANID_COORD_ERROR_Msk (0x80UL) /*!< FTDF FTDF_RX_META_1_4_REG: ISPANID_COORD_ERROR (Bitfield-Mask: 0x01) */ -#define FTDF_FTDF_RX_META_1_4_REG_QUALITY_INDICATOR_Pos (8UL) /*!< FTDF FTDF_RX_META_1_4_REG: QUALITY_INDICATOR (Bit 8) */ -#define FTDF_FTDF_RX_META_1_4_REG_QUALITY_INDICATOR_Msk (0xff00UL) /*!< FTDF FTDF_RX_META_1_4_REG: QUALITY_INDICATOR (Bitfield-Mask: 0xff) */ - -/* -------------------------- FTDF_FTDF_RX_META_0_5_REG ------------------------- */ -#define FTDF_FTDF_RX_META_0_5_REG_RX_TIMESTAMP_Pos (0UL) /*!< FTDF FTDF_RX_META_0_5_REG: RX_TIMESTAMP (Bit 0) */ -#define FTDF_FTDF_RX_META_0_5_REG_RX_TIMESTAMP_Msk (0xffffffffUL) /*!< FTDF FTDF_RX_META_0_5_REG: RX_TIMESTAMP (Bitfield-Mask: 0xffffffff) */ - -/* -------------------------- FTDF_FTDF_RX_META_1_5_REG ------------------------- */ -#define FTDF_FTDF_RX_META_1_5_REG_CRC16_ERROR_Pos (0UL) /*!< FTDF FTDF_RX_META_1_5_REG: CRC16_ERROR (Bit 0) */ -#define FTDF_FTDF_RX_META_1_5_REG_CRC16_ERROR_Msk (0x1UL) /*!< FTDF FTDF_RX_META_1_5_REG: CRC16_ERROR (Bitfield-Mask: 0x01) */ -#define FTDF_FTDF_RX_META_1_5_REG_RES_FRM_TYPE_ERROR_Pos (2UL) /*!< FTDF FTDF_RX_META_1_5_REG: RES_FRM_TYPE_ERROR (Bit 2) */ -#define FTDF_FTDF_RX_META_1_5_REG_RES_FRM_TYPE_ERROR_Msk (0x4UL) /*!< FTDF FTDF_RX_META_1_5_REG: RES_FRM_TYPE_ERROR (Bitfield-Mask: 0x01) */ -#define FTDF_FTDF_RX_META_1_5_REG_RES_FRM_VERSION_ERROR_Pos (3UL) /*!< FTDF FTDF_RX_META_1_5_REG: RES_FRM_VERSION_ERROR (Bit 3) */ -#define FTDF_FTDF_RX_META_1_5_REG_RES_FRM_VERSION_ERROR_Msk (0x8UL) /*!< FTDF FTDF_RX_META_1_5_REG: RES_FRM_VERSION_ERROR (Bitfield-Mask: 0x01) */ -#define FTDF_FTDF_RX_META_1_5_REG_DPANID_ERROR_Pos (4UL) /*!< FTDF FTDF_RX_META_1_5_REG: DPANID_ERROR (Bit 4) */ -#define FTDF_FTDF_RX_META_1_5_REG_DPANID_ERROR_Msk (0x10UL) /*!< FTDF FTDF_RX_META_1_5_REG: DPANID_ERROR (Bitfield-Mask: 0x01) */ -#define FTDF_FTDF_RX_META_1_5_REG_DADDR_ERROR_Pos (5UL) /*!< FTDF FTDF_RX_META_1_5_REG: DADDR_ERROR (Bit 5) */ -#define FTDF_FTDF_RX_META_1_5_REG_DADDR_ERROR_Msk (0x20UL) /*!< FTDF FTDF_RX_META_1_5_REG: DADDR_ERROR (Bitfield-Mask: 0x01) */ -#define FTDF_FTDF_RX_META_1_5_REG_SPANID_ERROR_Pos (6UL) /*!< FTDF FTDF_RX_META_1_5_REG: SPANID_ERROR (Bit 6) */ -#define FTDF_FTDF_RX_META_1_5_REG_SPANID_ERROR_Msk (0x40UL) /*!< FTDF FTDF_RX_META_1_5_REG: SPANID_ERROR (Bitfield-Mask: 0x01) */ -#define FTDF_FTDF_RX_META_1_5_REG_ISPANID_COORD_ERROR_Pos (7UL) /*!< FTDF FTDF_RX_META_1_5_REG: ISPANID_COORD_ERROR (Bit 7) */ -#define FTDF_FTDF_RX_META_1_5_REG_ISPANID_COORD_ERROR_Msk (0x80UL) /*!< FTDF FTDF_RX_META_1_5_REG: ISPANID_COORD_ERROR (Bitfield-Mask: 0x01) */ -#define FTDF_FTDF_RX_META_1_5_REG_QUALITY_INDICATOR_Pos (8UL) /*!< FTDF FTDF_RX_META_1_5_REG: QUALITY_INDICATOR (Bit 8) */ -#define FTDF_FTDF_RX_META_1_5_REG_QUALITY_INDICATOR_Msk (0xff00UL) /*!< FTDF FTDF_RX_META_1_5_REG: QUALITY_INDICATOR (Bitfield-Mask: 0xff) */ - -/* -------------------------- FTDF_FTDF_RX_META_0_6_REG ------------------------- */ -#define FTDF_FTDF_RX_META_0_6_REG_RX_TIMESTAMP_Pos (0UL) /*!< FTDF FTDF_RX_META_0_6_REG: RX_TIMESTAMP (Bit 0) */ -#define FTDF_FTDF_RX_META_0_6_REG_RX_TIMESTAMP_Msk (0xffffffffUL) /*!< FTDF FTDF_RX_META_0_6_REG: RX_TIMESTAMP (Bitfield-Mask: 0xffffffff) */ - -/* -------------------------- FTDF_FTDF_RX_META_1_6_REG ------------------------- */ -#define FTDF_FTDF_RX_META_1_6_REG_CRC16_ERROR_Pos (0UL) /*!< FTDF FTDF_RX_META_1_6_REG: CRC16_ERROR (Bit 0) */ -#define FTDF_FTDF_RX_META_1_6_REG_CRC16_ERROR_Msk (0x1UL) /*!< FTDF FTDF_RX_META_1_6_REG: CRC16_ERROR (Bitfield-Mask: 0x01) */ -#define FTDF_FTDF_RX_META_1_6_REG_RES_FRM_TYPE_ERROR_Pos (2UL) /*!< FTDF FTDF_RX_META_1_6_REG: RES_FRM_TYPE_ERROR (Bit 2) */ -#define FTDF_FTDF_RX_META_1_6_REG_RES_FRM_TYPE_ERROR_Msk (0x4UL) /*!< FTDF FTDF_RX_META_1_6_REG: RES_FRM_TYPE_ERROR (Bitfield-Mask: 0x01) */ -#define FTDF_FTDF_RX_META_1_6_REG_RES_FRM_VERSION_ERROR_Pos (3UL) /*!< FTDF FTDF_RX_META_1_6_REG: RES_FRM_VERSION_ERROR (Bit 3) */ -#define FTDF_FTDF_RX_META_1_6_REG_RES_FRM_VERSION_ERROR_Msk (0x8UL) /*!< FTDF FTDF_RX_META_1_6_REG: RES_FRM_VERSION_ERROR (Bitfield-Mask: 0x01) */ -#define FTDF_FTDF_RX_META_1_6_REG_DPANID_ERROR_Pos (4UL) /*!< FTDF FTDF_RX_META_1_6_REG: DPANID_ERROR (Bit 4) */ -#define FTDF_FTDF_RX_META_1_6_REG_DPANID_ERROR_Msk (0x10UL) /*!< FTDF FTDF_RX_META_1_6_REG: DPANID_ERROR (Bitfield-Mask: 0x01) */ -#define FTDF_FTDF_RX_META_1_6_REG_DADDR_ERROR_Pos (5UL) /*!< FTDF FTDF_RX_META_1_6_REG: DADDR_ERROR (Bit 5) */ -#define FTDF_FTDF_RX_META_1_6_REG_DADDR_ERROR_Msk (0x20UL) /*!< FTDF FTDF_RX_META_1_6_REG: DADDR_ERROR (Bitfield-Mask: 0x01) */ -#define FTDF_FTDF_RX_META_1_6_REG_SPANID_ERROR_Pos (6UL) /*!< FTDF FTDF_RX_META_1_6_REG: SPANID_ERROR (Bit 6) */ -#define FTDF_FTDF_RX_META_1_6_REG_SPANID_ERROR_Msk (0x40UL) /*!< FTDF FTDF_RX_META_1_6_REG: SPANID_ERROR (Bitfield-Mask: 0x01) */ -#define FTDF_FTDF_RX_META_1_6_REG_ISPANID_COORD_ERROR_Pos (7UL) /*!< FTDF FTDF_RX_META_1_6_REG: ISPANID_COORD_ERROR (Bit 7) */ -#define FTDF_FTDF_RX_META_1_6_REG_ISPANID_COORD_ERROR_Msk (0x80UL) /*!< FTDF FTDF_RX_META_1_6_REG: ISPANID_COORD_ERROR (Bitfield-Mask: 0x01) */ -#define FTDF_FTDF_RX_META_1_6_REG_QUALITY_INDICATOR_Pos (8UL) /*!< FTDF FTDF_RX_META_1_6_REG: QUALITY_INDICATOR (Bit 8) */ -#define FTDF_FTDF_RX_META_1_6_REG_QUALITY_INDICATOR_Msk (0xff00UL) /*!< FTDF FTDF_RX_META_1_6_REG: QUALITY_INDICATOR (Bitfield-Mask: 0xff) */ - -/* -------------------------- FTDF_FTDF_RX_META_0_7_REG ------------------------- */ -#define FTDF_FTDF_RX_META_0_7_REG_RX_TIMESTAMP_Pos (0UL) /*!< FTDF FTDF_RX_META_0_7_REG: RX_TIMESTAMP (Bit 0) */ -#define FTDF_FTDF_RX_META_0_7_REG_RX_TIMESTAMP_Msk (0xffffffffUL) /*!< FTDF FTDF_RX_META_0_7_REG: RX_TIMESTAMP (Bitfield-Mask: 0xffffffff) */ - -/* -------------------------- FTDF_FTDF_RX_META_1_7_REG ------------------------- */ -#define FTDF_FTDF_RX_META_1_7_REG_CRC16_ERROR_Pos (0UL) /*!< FTDF FTDF_RX_META_1_7_REG: CRC16_ERROR (Bit 0) */ -#define FTDF_FTDF_RX_META_1_7_REG_CRC16_ERROR_Msk (0x1UL) /*!< FTDF FTDF_RX_META_1_7_REG: CRC16_ERROR (Bitfield-Mask: 0x01) */ -#define FTDF_FTDF_RX_META_1_7_REG_RES_FRM_TYPE_ERROR_Pos (2UL) /*!< FTDF FTDF_RX_META_1_7_REG: RES_FRM_TYPE_ERROR (Bit 2) */ -#define FTDF_FTDF_RX_META_1_7_REG_RES_FRM_TYPE_ERROR_Msk (0x4UL) /*!< FTDF FTDF_RX_META_1_7_REG: RES_FRM_TYPE_ERROR (Bitfield-Mask: 0x01) */ -#define FTDF_FTDF_RX_META_1_7_REG_RES_FRM_VERSION_ERROR_Pos (3UL) /*!< FTDF FTDF_RX_META_1_7_REG: RES_FRM_VERSION_ERROR (Bit 3) */ -#define FTDF_FTDF_RX_META_1_7_REG_RES_FRM_VERSION_ERROR_Msk (0x8UL) /*!< FTDF FTDF_RX_META_1_7_REG: RES_FRM_VERSION_ERROR (Bitfield-Mask: 0x01) */ -#define FTDF_FTDF_RX_META_1_7_REG_DPANID_ERROR_Pos (4UL) /*!< FTDF FTDF_RX_META_1_7_REG: DPANID_ERROR (Bit 4) */ -#define FTDF_FTDF_RX_META_1_7_REG_DPANID_ERROR_Msk (0x10UL) /*!< FTDF FTDF_RX_META_1_7_REG: DPANID_ERROR (Bitfield-Mask: 0x01) */ -#define FTDF_FTDF_RX_META_1_7_REG_DADDR_ERROR_Pos (5UL) /*!< FTDF FTDF_RX_META_1_7_REG: DADDR_ERROR (Bit 5) */ -#define FTDF_FTDF_RX_META_1_7_REG_DADDR_ERROR_Msk (0x20UL) /*!< FTDF FTDF_RX_META_1_7_REG: DADDR_ERROR (Bitfield-Mask: 0x01) */ -#define FTDF_FTDF_RX_META_1_7_REG_SPANID_ERROR_Pos (6UL) /*!< FTDF FTDF_RX_META_1_7_REG: SPANID_ERROR (Bit 6) */ -#define FTDF_FTDF_RX_META_1_7_REG_SPANID_ERROR_Msk (0x40UL) /*!< FTDF FTDF_RX_META_1_7_REG: SPANID_ERROR (Bitfield-Mask: 0x01) */ -#define FTDF_FTDF_RX_META_1_7_REG_ISPANID_COORD_ERROR_Pos (7UL) /*!< FTDF FTDF_RX_META_1_7_REG: ISPANID_COORD_ERROR (Bit 7) */ -#define FTDF_FTDF_RX_META_1_7_REG_ISPANID_COORD_ERROR_Msk (0x80UL) /*!< FTDF FTDF_RX_META_1_7_REG: ISPANID_COORD_ERROR (Bitfield-Mask: 0x01) */ -#define FTDF_FTDF_RX_META_1_7_REG_QUALITY_INDICATOR_Pos (8UL) /*!< FTDF FTDF_RX_META_1_7_REG: QUALITY_INDICATOR (Bit 8) */ -#define FTDF_FTDF_RX_META_1_7_REG_QUALITY_INDICATOR_Msk (0xff00UL) /*!< FTDF FTDF_RX_META_1_7_REG: QUALITY_INDICATOR (Bitfield-Mask: 0xff) */ - -/* -------------------------- FTDF_FTDF_RX_FIFO_0_0_REG ------------------------- */ -#define FTDF_FTDF_RX_FIFO_0_0_REG_RX_FIFO_Pos (0UL) /*!< FTDF FTDF_RX_FIFO_0_0_REG: RX_FIFO (Bit 0) */ -#define FTDF_FTDF_RX_FIFO_0_0_REG_RX_FIFO_Msk (0xffffffffUL) /*!< FTDF FTDF_RX_FIFO_0_0_REG: RX_FIFO (Bitfield-Mask: 0xffffffff) */ - -/* -------------------------- FTDF_FTDF_RX_FIFO_1_0_REG ------------------------- */ -#define FTDF_FTDF_RX_FIFO_1_0_REG_RX_FIFO_Pos (0UL) /*!< FTDF FTDF_RX_FIFO_1_0_REG: RX_FIFO (Bit 0) */ -#define FTDF_FTDF_RX_FIFO_1_0_REG_RX_FIFO_Msk (0xffffffffUL) /*!< FTDF FTDF_RX_FIFO_1_0_REG: RX_FIFO (Bitfield-Mask: 0xffffffff) */ - -/* -------------------------- FTDF_FTDF_RX_FIFO_2_0_REG ------------------------- */ -#define FTDF_FTDF_RX_FIFO_2_0_REG_RX_FIFO_Pos (0UL) /*!< FTDF FTDF_RX_FIFO_2_0_REG: RX_FIFO (Bit 0) */ -#define FTDF_FTDF_RX_FIFO_2_0_REG_RX_FIFO_Msk (0xffffffffUL) /*!< FTDF FTDF_RX_FIFO_2_0_REG: RX_FIFO (Bitfield-Mask: 0xffffffff) */ - -/* -------------------------- FTDF_FTDF_RX_FIFO_3_0_REG ------------------------- */ -#define FTDF_FTDF_RX_FIFO_3_0_REG_RX_FIFO_Pos (0UL) /*!< FTDF FTDF_RX_FIFO_3_0_REG: RX_FIFO (Bit 0) */ -#define FTDF_FTDF_RX_FIFO_3_0_REG_RX_FIFO_Msk (0xffffffffUL) /*!< FTDF FTDF_RX_FIFO_3_0_REG: RX_FIFO (Bitfield-Mask: 0xffffffff) */ - -/* -------------------------- FTDF_FTDF_RX_FIFO_4_0_REG ------------------------- */ -#define FTDF_FTDF_RX_FIFO_4_0_REG_RX_FIFO_Pos (0UL) /*!< FTDF FTDF_RX_FIFO_4_0_REG: RX_FIFO (Bit 0) */ -#define FTDF_FTDF_RX_FIFO_4_0_REG_RX_FIFO_Msk (0xffffffffUL) /*!< FTDF FTDF_RX_FIFO_4_0_REG: RX_FIFO (Bitfield-Mask: 0xffffffff) */ - -/* -------------------------- FTDF_FTDF_RX_FIFO_5_0_REG ------------------------- */ -#define FTDF_FTDF_RX_FIFO_5_0_REG_RX_FIFO_Pos (0UL) /*!< FTDF FTDF_RX_FIFO_5_0_REG: RX_FIFO (Bit 0) */ -#define FTDF_FTDF_RX_FIFO_5_0_REG_RX_FIFO_Msk (0xffffffffUL) /*!< FTDF FTDF_RX_FIFO_5_0_REG: RX_FIFO (Bitfield-Mask: 0xffffffff) */ - -/* -------------------------- FTDF_FTDF_RX_FIFO_6_0_REG ------------------------- */ -#define FTDF_FTDF_RX_FIFO_6_0_REG_RX_FIFO_Pos (0UL) /*!< FTDF FTDF_RX_FIFO_6_0_REG: RX_FIFO (Bit 0) */ -#define FTDF_FTDF_RX_FIFO_6_0_REG_RX_FIFO_Msk (0xffffffffUL) /*!< FTDF FTDF_RX_FIFO_6_0_REG: RX_FIFO (Bitfield-Mask: 0xffffffff) */ - -/* -------------------------- FTDF_FTDF_RX_FIFO_7_0_REG ------------------------- */ -#define FTDF_FTDF_RX_FIFO_7_0_REG_RX_FIFO_Pos (0UL) /*!< FTDF FTDF_RX_FIFO_7_0_REG: RX_FIFO (Bit 0) */ -#define FTDF_FTDF_RX_FIFO_7_0_REG_RX_FIFO_Msk (0xffffffffUL) /*!< FTDF FTDF_RX_FIFO_7_0_REG: RX_FIFO (Bitfield-Mask: 0xffffffff) */ - -/* -------------------------- FTDF_FTDF_REL_NAME_0_REG -------------------------- */ -#define FTDF_FTDF_REL_NAME_0_REG_REL_NAME_Pos (0UL) /*!< FTDF FTDF_REL_NAME_0_REG: REL_NAME (Bit 0) */ -#define FTDF_FTDF_REL_NAME_0_REG_REL_NAME_Msk (0xffffffffUL) /*!< FTDF FTDF_REL_NAME_0_REG: REL_NAME (Bitfield-Mask: 0xffffffff) */ - -/* -------------------------- FTDF_FTDF_REL_NAME_1_REG -------------------------- */ -#define FTDF_FTDF_REL_NAME_1_REG_REL_NAME_Pos (0UL) /*!< FTDF FTDF_REL_NAME_1_REG: REL_NAME (Bit 0) */ -#define FTDF_FTDF_REL_NAME_1_REG_REL_NAME_Msk (0xffffffffUL) /*!< FTDF FTDF_REL_NAME_1_REG: REL_NAME (Bitfield-Mask: 0xffffffff) */ - -/* -------------------------- FTDF_FTDF_REL_NAME_2_REG -------------------------- */ -#define FTDF_FTDF_REL_NAME_2_REG_REL_NAME_Pos (0UL) /*!< FTDF FTDF_REL_NAME_2_REG: REL_NAME (Bit 0) */ -#define FTDF_FTDF_REL_NAME_2_REG_REL_NAME_Msk (0xffffffffUL) /*!< FTDF FTDF_REL_NAME_2_REG: REL_NAME (Bitfield-Mask: 0xffffffff) */ - -/* -------------------------- FTDF_FTDF_REL_NAME_3_REG -------------------------- */ -#define FTDF_FTDF_REL_NAME_3_REG_REL_NAME_Pos (0UL) /*!< FTDF FTDF_REL_NAME_3_REG: REL_NAME (Bit 0) */ -#define FTDF_FTDF_REL_NAME_3_REG_REL_NAME_Msk (0xffffffffUL) /*!< FTDF FTDF_REL_NAME_3_REG: REL_NAME (Bitfield-Mask: 0xffffffff) */ - -/* -------------------------- FTDF_FTDF_BUILDTIME_0_REG ------------------------- */ -#define FTDF_FTDF_BUILDTIME_0_REG_BUILDTIME_Pos (0UL) /*!< FTDF FTDF_BUILDTIME_0_REG: BUILDTIME (Bit 0) */ -#define FTDF_FTDF_BUILDTIME_0_REG_BUILDTIME_Msk (0xffffffffUL) /*!< FTDF FTDF_BUILDTIME_0_REG: BUILDTIME (Bitfield-Mask: 0xffffffff) */ - -/* -------------------------- FTDF_FTDF_BUILDTIME_1_REG ------------------------- */ -#define FTDF_FTDF_BUILDTIME_1_REG_BUILDTIME_Pos (0UL) /*!< FTDF FTDF_BUILDTIME_1_REG: BUILDTIME (Bit 0) */ -#define FTDF_FTDF_BUILDTIME_1_REG_BUILDTIME_Msk (0xffffffffUL) /*!< FTDF FTDF_BUILDTIME_1_REG: BUILDTIME (Bitfield-Mask: 0xffffffff) */ - -/* -------------------------- FTDF_FTDF_BUILDTIME_2_REG ------------------------- */ -#define FTDF_FTDF_BUILDTIME_2_REG_BUILDTIME_Pos (0UL) /*!< FTDF FTDF_BUILDTIME_2_REG: BUILDTIME (Bit 0) */ -#define FTDF_FTDF_BUILDTIME_2_REG_BUILDTIME_Msk (0xffffffffUL) /*!< FTDF FTDF_BUILDTIME_2_REG: BUILDTIME (Bitfield-Mask: 0xffffffff) */ - -/* -------------------------- FTDF_FTDF_BUILDTIME_3_REG ------------------------- */ -#define FTDF_FTDF_BUILDTIME_3_REG_BUILDTIME_Pos (0UL) /*!< FTDF FTDF_BUILDTIME_3_REG: BUILDTIME (Bit 0) */ -#define FTDF_FTDF_BUILDTIME_3_REG_BUILDTIME_Msk (0xffffffffUL) /*!< FTDF FTDF_BUILDTIME_3_REG: BUILDTIME (Bitfield-Mask: 0xffffffff) */ - -/* ------------------------ FTDF_FTDF_GLOB_CONTROL_0_REG ------------------------ */ -#define FTDF_FTDF_GLOB_CONTROL_0_REG_ISPANCOORDINATOR_Pos (1UL) /*!< FTDF FTDF_GLOB_CONTROL_0_REG: ISPANCOORDINATOR (Bit 1) */ -#define FTDF_FTDF_GLOB_CONTROL_0_REG_ISPANCOORDINATOR_Msk (0x2UL) /*!< FTDF FTDF_GLOB_CONTROL_0_REG: ISPANCOORDINATOR (Bitfield-Mask: 0x01) */ -#define FTDF_FTDF_GLOB_CONTROL_0_REG_RX_DMA_REQ_Pos (2UL) /*!< FTDF FTDF_GLOB_CONTROL_0_REG: RX_DMA_REQ (Bit 2) */ -#define FTDF_FTDF_GLOB_CONTROL_0_REG_RX_DMA_REQ_Msk (0x4UL) /*!< FTDF FTDF_GLOB_CONTROL_0_REG: RX_DMA_REQ (Bitfield-Mask: 0x01) */ -#define FTDF_FTDF_GLOB_CONTROL_0_REG_TX_DMA_REQ_Pos (3UL) /*!< FTDF FTDF_GLOB_CONTROL_0_REG: TX_DMA_REQ (Bit 3) */ -#define FTDF_FTDF_GLOB_CONTROL_0_REG_TX_DMA_REQ_Msk (0x8UL) /*!< FTDF FTDF_GLOB_CONTROL_0_REG: TX_DMA_REQ (Bitfield-Mask: 0x01) */ -#define FTDF_FTDF_GLOB_CONTROL_0_REG_MACSIMPLEADDRESS_Pos (8UL) /*!< FTDF FTDF_GLOB_CONTROL_0_REG: MACSIMPLEADDRESS (Bit 8) */ -#define FTDF_FTDF_GLOB_CONTROL_0_REG_MACSIMPLEADDRESS_Msk (0xff00UL) /*!< FTDF FTDF_GLOB_CONTROL_0_REG: MACSIMPLEADDRESS (Bitfield-Mask: 0xff) */ -#define FTDF_FTDF_GLOB_CONTROL_0_REG_MACLEENABLED_Pos (17UL) /*!< FTDF FTDF_GLOB_CONTROL_0_REG: MACLEENABLED (Bit 17) */ -#define FTDF_FTDF_GLOB_CONTROL_0_REG_MACLEENABLED_Msk (0x20000UL) /*!< FTDF FTDF_GLOB_CONTROL_0_REG: MACLEENABLED (Bitfield-Mask: 0x01) */ -#define FTDF_FTDF_GLOB_CONTROL_0_REG_MACTSCHENABLED_Pos (18UL) /*!< FTDF FTDF_GLOB_CONTROL_0_REG: MACTSCHENABLED (Bit 18) */ -#define FTDF_FTDF_GLOB_CONTROL_0_REG_MACTSCHENABLED_Msk (0x40000UL) /*!< FTDF FTDF_GLOB_CONTROL_0_REG: MACTSCHENABLED (Bitfield-Mask: 0x01) */ - -/* ------------------------ FTDF_FTDF_GLOB_CONTROL_1_REG ------------------------ */ -#define FTDF_FTDF_GLOB_CONTROL_1_REG_MACPANID_Pos (0UL) /*!< FTDF FTDF_GLOB_CONTROL_1_REG: MACPANID (Bit 0) */ -#define FTDF_FTDF_GLOB_CONTROL_1_REG_MACPANID_Msk (0xffffUL) /*!< FTDF FTDF_GLOB_CONTROL_1_REG: MACPANID (Bitfield-Mask: 0xffff) */ -#define FTDF_FTDF_GLOB_CONTROL_1_REG_MACSHORTADDRESS_Pos (16UL) /*!< FTDF FTDF_GLOB_CONTROL_1_REG: MACSHORTADDRESS (Bit 16) */ -#define FTDF_FTDF_GLOB_CONTROL_1_REG_MACSHORTADDRESS_Msk (0xffff0000UL) /*!< FTDF FTDF_GLOB_CONTROL_1_REG: MACSHORTADDRESS (Bitfield-Mask: 0xffff) */ - -/* ------------------------ FTDF_FTDF_GLOB_CONTROL_2_REG ------------------------ */ -#define FTDF_FTDF_GLOB_CONTROL_2_REG_AEXTENDEDADDRESS_L_Pos (0UL) /*!< FTDF FTDF_GLOB_CONTROL_2_REG: AEXTENDEDADDRESS_L (Bit 0) */ -#define FTDF_FTDF_GLOB_CONTROL_2_REG_AEXTENDEDADDRESS_L_Msk (0xffffffffUL) /*!< FTDF FTDF_GLOB_CONTROL_2_REG: AEXTENDEDADDRESS_L (Bitfield-Mask: 0xffffffff) */ - -/* ------------------------ FTDF_FTDF_GLOB_CONTROL_3_REG ------------------------ */ -#define FTDF_FTDF_GLOB_CONTROL_3_REG_AEXTENDEDADDRESS_H_Pos (0UL) /*!< FTDF FTDF_GLOB_CONTROL_3_REG: AEXTENDEDADDRESS_H (Bit 0) */ -#define FTDF_FTDF_GLOB_CONTROL_3_REG_AEXTENDEDADDRESS_H_Msk (0xffffffffUL) /*!< FTDF FTDF_GLOB_CONTROL_3_REG: AEXTENDEDADDRESS_H (Bitfield-Mask: 0xffffffff) */ - -/* ------------------------ FTDF_FTDF_LMAC_CONTROL_0_REG ------------------------ */ -#define FTDF_FTDF_LMAC_CONTROL_0_REG_RXONDURATION_Pos (1UL) /*!< FTDF FTDF_LMAC_CONTROL_0_REG: RXONDURATION (Bit 1) */ -#define FTDF_FTDF_LMAC_CONTROL_0_REG_RXONDURATION_Msk (0x1fffffeUL) /*!< FTDF FTDF_LMAC_CONTROL_0_REG: RXONDURATION (Bitfield-Mask: 0xffffff) */ -#define FTDF_FTDF_LMAC_CONTROL_0_REG_RXALWAYSON_Pos (25UL) /*!< FTDF FTDF_LMAC_CONTROL_0_REG: RXALWAYSON (Bit 25) */ -#define FTDF_FTDF_LMAC_CONTROL_0_REG_RXALWAYSON_Msk (0x2000000UL) /*!< FTDF FTDF_LMAC_CONTROL_0_REG: RXALWAYSON (Bitfield-Mask: 0x01) */ -#define FTDF_FTDF_LMAC_CONTROL_0_REG_PTI_RX_Pos (27UL) /*!< FTDF FTDF_LMAC_CONTROL_0_REG: PTI_RX (Bit 27) */ -#define FTDF_FTDF_LMAC_CONTROL_0_REG_PTI_RX_Msk (0x78000000UL) /*!< FTDF FTDF_LMAC_CONTROL_0_REG: PTI_RX (Bitfield-Mask: 0x0f) */ -#define FTDF_FTDF_LMAC_CONTROL_0_REG_KEEP_PHY_EN_Pos (31UL) /*!< FTDF FTDF_LMAC_CONTROL_0_REG: KEEP_PHY_EN (Bit 31) */ -#define FTDF_FTDF_LMAC_CONTROL_0_REG_KEEP_PHY_EN_Msk (0x80000000UL) /*!< FTDF FTDF_LMAC_CONTROL_0_REG: KEEP_PHY_EN (Bitfield-Mask: 0x01) */ - -/* ------------------------ FTDF_FTDF_TXPIPEPROPDELAY_REG ----------------------- */ -#define FTDF_FTDF_TXPIPEPROPDELAY_REG_TXPIPEPROPDELAY_Pos (0UL) /*!< FTDF FTDF_TXPIPEPROPDELAY_REG: TXPIPEPROPDELAY (Bit 0) */ -#define FTDF_FTDF_TXPIPEPROPDELAY_REG_TXPIPEPROPDELAY_Msk (0xffUL) /*!< FTDF FTDF_TXPIPEPROPDELAY_REG: TXPIPEPROPDELAY (Bitfield-Mask: 0xff) */ - -/* ---------------------- FTDF_FTDF_MACACKWAITDURATION_REG ---------------------- */ -#define FTDF_FTDF_MACACKWAITDURATION_REG_MACACKWAITDURATION_Pos (0UL) /*!< FTDF FTDF_MACACKWAITDURATION_REG: MACACKWAITDURATION (Bit 0) */ -#define FTDF_FTDF_MACACKWAITDURATION_REG_MACACKWAITDURATION_Msk (0xffUL) /*!< FTDF FTDF_MACACKWAITDURATION_REG: MACACKWAITDURATION (Bitfield-Mask: 0xff) */ - -/* --------------------- FTDF_FTDF_MACENHACKWAITDURATION_REG -------------------- */ -#define FTDF_FTDF_MACENHACKWAITDURATION_REG_MACENHACKWAITDURATION_Pos (0UL) /*!< FTDF FTDF_MACENHACKWAITDURATION_REG: MACENHACKWAITDURATION (Bit 0) */ -#define FTDF_FTDF_MACENHACKWAITDURATION_REG_MACENHACKWAITDURATION_Msk (0xffffUL) /*!< FTDF FTDF_MACENHACKWAITDURATION_REG: MACENHACKWAITDURATION (Bitfield-Mask: 0xffff) */ - -/* ------------------------ FTDF_FTDF_LMAC_CONTROL_1_REG ------------------------ */ -#define FTDF_FTDF_LMAC_CONTROL_1_REG_PHYRXATTR_DEM_PTI_Pos (0UL) /*!< FTDF FTDF_LMAC_CONTROL_1_REG: PHYRXATTR_DEM_PTI (Bit 0) */ -#define FTDF_FTDF_LMAC_CONTROL_1_REG_PHYRXATTR_DEM_PTI_Msk (0xfUL) /*!< FTDF FTDF_LMAC_CONTROL_1_REG: PHYRXATTR_DEM_PTI (Bitfield-Mask: 0x0f) */ -#define FTDF_FTDF_LMAC_CONTROL_1_REG_PHYRXATTR_CN_Pos (4UL) /*!< FTDF FTDF_LMAC_CONTROL_1_REG: PHYRXATTR_CN (Bit 4) */ -#define FTDF_FTDF_LMAC_CONTROL_1_REG_PHYRXATTR_CN_Msk (0xf0UL) /*!< FTDF FTDF_LMAC_CONTROL_1_REG: PHYRXATTR_CN (Bitfield-Mask: 0x0f) */ -#define FTDF_FTDF_LMAC_CONTROL_1_REG_PHYRXATTR_CALCAP_Pos (8UL) /*!< FTDF FTDF_LMAC_CONTROL_1_REG: PHYRXATTR_CALCAP (Bit 8) */ -#define FTDF_FTDF_LMAC_CONTROL_1_REG_PHYRXATTR_CALCAP_Msk (0xf00UL) /*!< FTDF FTDF_LMAC_CONTROL_1_REG: PHYRXATTR_CALCAP (Bitfield-Mask: 0x0f) */ -#define FTDF_FTDF_LMAC_CONTROL_1_REG_PHYRXATTR_RF_GPIO_PINS_Pos (12UL) /*!< FTDF FTDF_LMAC_CONTROL_1_REG: PHYRXATTR_RF_GPIO_PINS (Bit 12) */ -#define FTDF_FTDF_LMAC_CONTROL_1_REG_PHYRXATTR_RF_GPIO_PINS_Msk (0x7000UL) /*!< FTDF FTDF_LMAC_CONTROL_1_REG: PHYRXATTR_RF_GPIO_PINS (Bitfield-Mask: 0x07) */ -#define FTDF_FTDF_LMAC_CONTROL_1_REG_PHYRXATTR_HSI_Pos (15UL) /*!< FTDF FTDF_LMAC_CONTROL_1_REG: PHYRXATTR_HSI (Bit 15) */ -#define FTDF_FTDF_LMAC_CONTROL_1_REG_PHYRXATTR_HSI_Msk (0x8000UL) /*!< FTDF FTDF_LMAC_CONTROL_1_REG: PHYRXATTR_HSI (Bitfield-Mask: 0x01) */ - -/* ------------------------ FTDF_FTDF_LMAC_CONTROL_2_REG ------------------------ */ -#define FTDF_FTDF_LMAC_CONTROL_2_REG_EDSCANENABLE_Pos (0UL) /*!< FTDF FTDF_LMAC_CONTROL_2_REG: EDSCANENABLE (Bit 0) */ -#define FTDF_FTDF_LMAC_CONTROL_2_REG_EDSCANENABLE_Msk (0x1UL) /*!< FTDF FTDF_LMAC_CONTROL_2_REG: EDSCANENABLE (Bitfield-Mask: 0x01) */ -#define FTDF_FTDF_LMAC_CONTROL_2_REG_EDSCANDURATION_Pos (8UL) /*!< FTDF FTDF_LMAC_CONTROL_2_REG: EDSCANDURATION (Bit 8) */ -#define FTDF_FTDF_LMAC_CONTROL_2_REG_EDSCANDURATION_Msk (0xffffff00UL) /*!< FTDF FTDF_LMAC_CONTROL_2_REG: EDSCANDURATION (Bitfield-Mask: 0xffffff) */ - -/* ------------------------ FTDF_FTDF_LMAC_CONTROL_3_REG ------------------------ */ -#define FTDF_FTDF_LMAC_CONTROL_3_REG_MACMAXFRAMETOTALWAITTIME_Pos (0UL) /*!< FTDF FTDF_LMAC_CONTROL_3_REG: MACMAXFRAMETOTALWAITTIME (Bit 0) */ -#define FTDF_FTDF_LMAC_CONTROL_3_REG_MACMAXFRAMETOTALWAITTIME_Msk (0xffffUL) /*!< FTDF FTDF_LMAC_CONTROL_3_REG: MACMAXFRAMETOTALWAITTIME (Bitfield-Mask: 0xffff) */ -#define FTDF_FTDF_LMAC_CONTROL_3_REG_CCAIDLEWAIT_Pos (16UL) /*!< FTDF FTDF_LMAC_CONTROL_3_REG: CCAIDLEWAIT (Bit 16) */ -#define FTDF_FTDF_LMAC_CONTROL_3_REG_CCAIDLEWAIT_Msk (0xff0000UL) /*!< FTDF FTDF_LMAC_CONTROL_3_REG: CCAIDLEWAIT (Bitfield-Mask: 0xff) */ -#define FTDF_FTDF_LMAC_CONTROL_3_REG_ADDR_TAB_MATCH_FP_VALUE_Pos (24UL) /*!< FTDF FTDF_LMAC_CONTROL_3_REG: ADDR_TAB_MATCH_FP_VALUE (Bit 24) */ -#define FTDF_FTDF_LMAC_CONTROL_3_REG_ADDR_TAB_MATCH_FP_VALUE_Msk (0x1000000UL) /*!< FTDF FTDF_LMAC_CONTROL_3_REG: ADDR_TAB_MATCH_FP_VALUE (Bitfield-Mask: 0x01) */ -#define FTDF_FTDF_LMAC_CONTROL_3_REG_FP_OVERRIDE_Pos (25UL) /*!< FTDF FTDF_LMAC_CONTROL_3_REG: FP_OVERRIDE (Bit 25) */ -#define FTDF_FTDF_LMAC_CONTROL_3_REG_FP_OVERRIDE_Msk (0x2000000UL) /*!< FTDF FTDF_LMAC_CONTROL_3_REG: FP_OVERRIDE (Bitfield-Mask: 0x01) */ -#define FTDF_FTDF_LMAC_CONTROL_3_REG_FP_FORCE_VALUE_Pos (26UL) /*!< FTDF FTDF_LMAC_CONTROL_3_REG: FP_FORCE_VALUE (Bit 26) */ -#define FTDF_FTDF_LMAC_CONTROL_3_REG_FP_FORCE_VALUE_Msk (0x4000000UL) /*!< FTDF FTDF_LMAC_CONTROL_3_REG: FP_FORCE_VALUE (Bitfield-Mask: 0x01) */ -#define FTDF_FTDF_LMAC_CONTROL_3_REG_FTDF_LPDP_ENABLE_Pos (27UL) /*!< FTDF FTDF_LMAC_CONTROL_3_REG: FTDF_LPDP_ENABLE (Bit 27) */ -#define FTDF_FTDF_LMAC_CONTROL_3_REG_FTDF_LPDP_ENABLE_Msk (0x8000000UL) /*!< FTDF FTDF_LMAC_CONTROL_3_REG: FTDF_LPDP_ENABLE (Bitfield-Mask: 0x01) */ - -/* ------------------------ FTDF_FTDF_LMAC_CONTROL_OS_REG ----------------------- */ -#define FTDF_FTDF_LMAC_CONTROL_OS_REG_GETGENERATORVAL_Pos (0UL) /*!< FTDF FTDF_LMAC_CONTROL_OS_REG: GETGENERATORVAL (Bit 0) */ -#define FTDF_FTDF_LMAC_CONTROL_OS_REG_GETGENERATORVAL_Msk (0x1UL) /*!< FTDF FTDF_LMAC_CONTROL_OS_REG: GETGENERATORVAL (Bitfield-Mask: 0x01) */ -#define FTDF_FTDF_LMAC_CONTROL_OS_REG_RXENABLE_Pos (1UL) /*!< FTDF FTDF_LMAC_CONTROL_OS_REG: RXENABLE (Bit 1) */ -#define FTDF_FTDF_LMAC_CONTROL_OS_REG_RXENABLE_Msk (0x2UL) /*!< FTDF FTDF_LMAC_CONTROL_OS_REG: RXENABLE (Bitfield-Mask: 0x01) */ -#define FTDF_FTDF_LMAC_CONTROL_OS_REG_SINGLECCA_Pos (2UL) /*!< FTDF FTDF_LMAC_CONTROL_OS_REG: SINGLECCA (Bit 2) */ -#define FTDF_FTDF_LMAC_CONTROL_OS_REG_SINGLECCA_Msk (0x4UL) /*!< FTDF FTDF_LMAC_CONTROL_OS_REG: SINGLECCA (Bitfield-Mask: 0x01) */ -#define FTDF_FTDF_LMAC_CONTROL_OS_REG_CSMA_CA_RESUME_SET_Pos (3UL) /*!< FTDF FTDF_LMAC_CONTROL_OS_REG: CSMA_CA_RESUME_SET (Bit 3) */ -#define FTDF_FTDF_LMAC_CONTROL_OS_REG_CSMA_CA_RESUME_SET_Msk (0x8UL) /*!< FTDF FTDF_LMAC_CONTROL_OS_REG: CSMA_CA_RESUME_SET (Bitfield-Mask: 0x01) */ -#define FTDF_FTDF_LMAC_CONTROL_OS_REG_CSMA_CA_RESUME_CLEAR_Pos (4UL) /*!< FTDF FTDF_LMAC_CONTROL_OS_REG: CSMA_CA_RESUME_CLEAR (Bit 4) */ -#define FTDF_FTDF_LMAC_CONTROL_OS_REG_CSMA_CA_RESUME_CLEAR_Msk (0x10UL) /*!< FTDF FTDF_LMAC_CONTROL_OS_REG: CSMA_CA_RESUME_CLEAR (Bitfield-Mask: 0x01) */ - -/* ---------------------- FTDF_FTDF_LMAC_CONTROL_STATUS_REG --------------------- */ -#define FTDF_FTDF_LMAC_CONTROL_STATUS_REG_LMACREADY4SLEEP_Pos (1UL) /*!< FTDF FTDF_LMAC_CONTROL_STATUS_REG: LMACREADY4SLEEP (Bit 1) */ -#define FTDF_FTDF_LMAC_CONTROL_STATUS_REG_LMACREADY4SLEEP_Msk (0x2UL) /*!< FTDF FTDF_LMAC_CONTROL_STATUS_REG: LMACREADY4SLEEP (Bitfield-Mask: 0x01) */ -#define FTDF_FTDF_LMAC_CONTROL_STATUS_REG_CCASTAT_Pos (2UL) /*!< FTDF FTDF_LMAC_CONTROL_STATUS_REG: CCASTAT (Bit 2) */ -#define FTDF_FTDF_LMAC_CONTROL_STATUS_REG_CCASTAT_Msk (0x4UL) /*!< FTDF FTDF_LMAC_CONTROL_STATUS_REG: CCASTAT (Bitfield-Mask: 0x01) */ -#define FTDF_FTDF_LMAC_CONTROL_STATUS_REG_WAKEUPTIMERENABLESTATUS_Pos (6UL) /*!< FTDF FTDF_LMAC_CONTROL_STATUS_REG: WAKEUPTIMERENABLESTATUS (Bit 6) */ -#define FTDF_FTDF_LMAC_CONTROL_STATUS_REG_WAKEUPTIMERENABLESTATUS_Msk (0x40UL) /*!< FTDF FTDF_LMAC_CONTROL_STATUS_REG: WAKEUPTIMERENABLESTATUS (Bitfield-Mask: 0x01) */ -#define FTDF_FTDF_LMAC_CONTROL_STATUS_REG_EDSCANVALUE_Pos (8UL) /*!< FTDF FTDF_LMAC_CONTROL_STATUS_REG: EDSCANVALUE (Bit 8) */ -#define FTDF_FTDF_LMAC_CONTROL_STATUS_REG_EDSCANVALUE_Msk (0xff00UL) /*!< FTDF FTDF_LMAC_CONTROL_STATUS_REG: EDSCANVALUE (Bitfield-Mask: 0xff) */ -#define FTDF_FTDF_LMAC_CONTROL_STATUS_REG_CSMA_CA_NB_STAT_Pos (16UL) /*!< FTDF FTDF_LMAC_CONTROL_STATUS_REG: CSMA_CA_NB_STAT (Bit 16) */ -#define FTDF_FTDF_LMAC_CONTROL_STATUS_REG_CSMA_CA_NB_STAT_Msk (0x70000UL) /*!< FTDF FTDF_LMAC_CONTROL_STATUS_REG: CSMA_CA_NB_STAT (Bitfield-Mask: 0x07) */ -#define FTDF_FTDF_LMAC_CONTROL_STATUS_REG_CSMA_CA_RESUME_STAT_Pos (19UL) /*!< FTDF FTDF_LMAC_CONTROL_STATUS_REG: CSMA_CA_RESUME_STAT (Bit 19) */ -#define FTDF_FTDF_LMAC_CONTROL_STATUS_REG_CSMA_CA_RESUME_STAT_Msk (0x80000UL) /*!< FTDF FTDF_LMAC_CONTROL_STATUS_REG: CSMA_CA_RESUME_STAT (Bitfield-Mask: 0x01) */ -#define FTDF_FTDF_LMAC_CONTROL_STATUS_REG_CSMA_CA_BO_STAT_Pos (24UL) /*!< FTDF FTDF_LMAC_CONTROL_STATUS_REG: CSMA_CA_BO_STAT (Bit 24) */ -#define FTDF_FTDF_LMAC_CONTROL_STATUS_REG_CSMA_CA_BO_STAT_Msk (0xff000000UL) /*!< FTDF FTDF_LMAC_CONTROL_STATUS_REG: CSMA_CA_BO_STAT (Bitfield-Mask: 0xff) */ - -/* ------------------------- FTDF_FTDF_EVENTCURRVAL_REG ------------------------- */ -#define FTDF_FTDF_EVENTCURRVAL_REG_EVENTCURRVAL_Pos (0UL) /*!< FTDF FTDF_EVENTCURRVAL_REG: EVENTCURRVAL (Bit 0) */ -#define FTDF_FTDF_EVENTCURRVAL_REG_EVENTCURRVAL_Msk (0x1ffffffUL) /*!< FTDF FTDF_EVENTCURRVAL_REG: EVENTCURRVAL (Bitfield-Mask: 0x1ffffff) */ - -/* ----------------------- FTDF_FTDF_TIMESTAMPCURRVAL_REG ----------------------- */ -#define FTDF_FTDF_TIMESTAMPCURRVAL_REG_TIMESTAMPCURRVAL_Pos (0UL) /*!< FTDF FTDF_TIMESTAMPCURRVAL_REG: TIMESTAMPCURRVAL (Bit 0) */ -#define FTDF_FTDF_TIMESTAMPCURRVAL_REG_TIMESTAMPCURRVAL_Msk (0xffffffffUL) /*!< FTDF FTDF_TIMESTAMPCURRVAL_REG: TIMESTAMPCURRVAL (Bitfield-Mask: 0xffffffff) */ - -/* ------------------------ FTDF_FTDF_LMAC_CONTROL_4_REG ------------------------ */ -#define FTDF_FTDF_LMAC_CONTROL_4_REG_PHYSLEEPWAIT_Pos (0UL) /*!< FTDF FTDF_LMAC_CONTROL_4_REG: PHYSLEEPWAIT (Bit 0) */ -#define FTDF_FTDF_LMAC_CONTROL_4_REG_PHYSLEEPWAIT_Msk (0xffUL) /*!< FTDF FTDF_LMAC_CONTROL_4_REG: PHYSLEEPWAIT (Bitfield-Mask: 0xff) */ -#define FTDF_FTDF_LMAC_CONTROL_4_REG_RXPIPEPROPDELAY_Pos (8UL) /*!< FTDF FTDF_LMAC_CONTROL_4_REG: RXPIPEPROPDELAY (Bit 8) */ -#define FTDF_FTDF_LMAC_CONTROL_4_REG_RXPIPEPROPDELAY_Msk (0xff00UL) /*!< FTDF FTDF_LMAC_CONTROL_4_REG: RXPIPEPROPDELAY (Bitfield-Mask: 0xff) */ -#define FTDF_FTDF_LMAC_CONTROL_4_REG_PHYACKATTR_DEM_PTI_Pos (16UL) /*!< FTDF FTDF_LMAC_CONTROL_4_REG: PHYACKATTR_DEM_PTI (Bit 16) */ -#define FTDF_FTDF_LMAC_CONTROL_4_REG_PHYACKATTR_DEM_PTI_Msk (0xf0000UL) /*!< FTDF FTDF_LMAC_CONTROL_4_REG: PHYACKATTR_DEM_PTI (Bitfield-Mask: 0x0f) */ -#define FTDF_FTDF_LMAC_CONTROL_4_REG_PHYACKATTR_CN_Pos (20UL) /*!< FTDF FTDF_LMAC_CONTROL_4_REG: PHYACKATTR_CN (Bit 20) */ -#define FTDF_FTDF_LMAC_CONTROL_4_REG_PHYACKATTR_CN_Msk (0xf00000UL) /*!< FTDF FTDF_LMAC_CONTROL_4_REG: PHYACKATTR_CN (Bitfield-Mask: 0x0f) */ -#define FTDF_FTDF_LMAC_CONTROL_4_REG_PHYACKATTR_CALCAP_Pos (24UL) /*!< FTDF FTDF_LMAC_CONTROL_4_REG: PHYACKATTR_CALCAP (Bit 24) */ -#define FTDF_FTDF_LMAC_CONTROL_4_REG_PHYACKATTR_CALCAP_Msk (0xf000000UL) /*!< FTDF FTDF_LMAC_CONTROL_4_REG: PHYACKATTR_CALCAP (Bitfield-Mask: 0x0f) */ -#define FTDF_FTDF_LMAC_CONTROL_4_REG_PHYACKATTR_RF_GPIO_PINS_Pos (28UL) /*!< FTDF FTDF_LMAC_CONTROL_4_REG: PHYACKATTR_RF_GPIO_PINS (Bit 28) */ -#define FTDF_FTDF_LMAC_CONTROL_4_REG_PHYACKATTR_RF_GPIO_PINS_Msk (0x70000000UL) /*!< FTDF FTDF_LMAC_CONTROL_4_REG: PHYACKATTR_RF_GPIO_PINS (Bitfield-Mask: 0x07) */ -#define FTDF_FTDF_LMAC_CONTROL_4_REG_PHYACKATTR_HSI_Pos (31UL) /*!< FTDF FTDF_LMAC_CONTROL_4_REG: PHYACKATTR_HSI (Bit 31) */ -#define FTDF_FTDF_LMAC_CONTROL_4_REG_PHYACKATTR_HSI_Msk (0x80000000UL) /*!< FTDF FTDF_LMAC_CONTROL_4_REG: PHYACKATTR_HSI (Bitfield-Mask: 0x01) */ - -/* ------------------------ FTDF_FTDF_LMAC_CONTROL_5_REG ------------------------ */ -#define FTDF_FTDF_LMAC_CONTROL_5_REG_ACK_RESPONSE_DELAY_Pos (0UL) /*!< FTDF FTDF_LMAC_CONTROL_5_REG: ACK_RESPONSE_DELAY (Bit 0) */ -#define FTDF_FTDF_LMAC_CONTROL_5_REG_ACK_RESPONSE_DELAY_Msk (0xffUL) /*!< FTDF FTDF_LMAC_CONTROL_5_REG: ACK_RESPONSE_DELAY (Bitfield-Mask: 0xff) */ -#define FTDF_FTDF_LMAC_CONTROL_5_REG_CCASTATWAIT_Pos (8UL) /*!< FTDF FTDF_LMAC_CONTROL_5_REG: CCASTATWAIT (Bit 8) */ -#define FTDF_FTDF_LMAC_CONTROL_5_REG_CCASTATWAIT_Msk (0xf00UL) /*!< FTDF FTDF_LMAC_CONTROL_5_REG: CCASTATWAIT (Bitfield-Mask: 0x0f) */ -#define FTDF_FTDF_LMAC_CONTROL_5_REG_PHYCSMACAATTR_DEM_PTI_Pos (16UL) /*!< FTDF FTDF_LMAC_CONTROL_5_REG: PHYCSMACAATTR_DEM_PTI (Bit 16) */ -#define FTDF_FTDF_LMAC_CONTROL_5_REG_PHYCSMACAATTR_DEM_PTI_Msk (0xf0000UL) /*!< FTDF FTDF_LMAC_CONTROL_5_REG: PHYCSMACAATTR_DEM_PTI (Bitfield-Mask: 0x0f) */ -#define FTDF_FTDF_LMAC_CONTROL_5_REG_PHYCSMACAATTR_CN_Pos (20UL) /*!< FTDF FTDF_LMAC_CONTROL_5_REG: PHYCSMACAATTR_CN (Bit 20) */ -#define FTDF_FTDF_LMAC_CONTROL_5_REG_PHYCSMACAATTR_CN_Msk (0xf00000UL) /*!< FTDF FTDF_LMAC_CONTROL_5_REG: PHYCSMACAATTR_CN (Bitfield-Mask: 0x0f) */ -#define FTDF_FTDF_LMAC_CONTROL_5_REG_PHYCSMACAATTR_CALCAP_Pos (24UL) /*!< FTDF FTDF_LMAC_CONTROL_5_REG: PHYCSMACAATTR_CALCAP (Bit 24) */ -#define FTDF_FTDF_LMAC_CONTROL_5_REG_PHYCSMACAATTR_CALCAP_Msk (0xf000000UL) /*!< FTDF FTDF_LMAC_CONTROL_5_REG: PHYCSMACAATTR_CALCAP (Bitfield-Mask: 0x0f) */ -#define FTDF_FTDF_LMAC_CONTROL_5_REG_PHYCSMACAATTR_RF_GPIO_PINS_Pos (28UL) /*!< FTDF FTDF_LMAC_CONTROL_5_REG: PHYCSMACAATTR_RF_GPIO_PINS (Bit 28) */ -#define FTDF_FTDF_LMAC_CONTROL_5_REG_PHYCSMACAATTR_RF_GPIO_PINS_Msk (0x70000000UL) /*!< FTDF FTDF_LMAC_CONTROL_5_REG: PHYCSMACAATTR_RF_GPIO_PINS (Bitfield-Mask: 0x07) */ -#define FTDF_FTDF_LMAC_CONTROL_5_REG_PHYCSMACAATTR_HSI_Pos (31UL) /*!< FTDF FTDF_LMAC_CONTROL_5_REG: PHYCSMACAATTR_HSI (Bit 31) */ -#define FTDF_FTDF_LMAC_CONTROL_5_REG_PHYCSMACAATTR_HSI_Msk (0x80000000UL) /*!< FTDF FTDF_LMAC_CONTROL_5_REG: PHYCSMACAATTR_HSI (Bitfield-Mask: 0x01) */ - -/* ------------------------ FTDF_FTDF_LMAC_CONTROL_6_REG ------------------------ */ -#define FTDF_FTDF_LMAC_CONTROL_6_REG_LIFSPERIOD_Pos (0UL) /*!< FTDF FTDF_LMAC_CONTROL_6_REG: LIFSPERIOD (Bit 0) */ -#define FTDF_FTDF_LMAC_CONTROL_6_REG_LIFSPERIOD_Msk (0xffUL) /*!< FTDF FTDF_LMAC_CONTROL_6_REG: LIFSPERIOD (Bitfield-Mask: 0xff) */ -#define FTDF_FTDF_LMAC_CONTROL_6_REG_SIFSPERIOD_Pos (8UL) /*!< FTDF FTDF_LMAC_CONTROL_6_REG: SIFSPERIOD (Bit 8) */ -#define FTDF_FTDF_LMAC_CONTROL_6_REG_SIFSPERIOD_Msk (0xff00UL) /*!< FTDF FTDF_LMAC_CONTROL_6_REG: SIFSPERIOD (Bitfield-Mask: 0xff) */ -#define FTDF_FTDF_LMAC_CONTROL_6_REG_WUIFSPERIOD_Pos (16UL) /*!< FTDF FTDF_LMAC_CONTROL_6_REG: WUIFSPERIOD (Bit 16) */ -#define FTDF_FTDF_LMAC_CONTROL_6_REG_WUIFSPERIOD_Msk (0xff0000UL) /*!< FTDF FTDF_LMAC_CONTROL_6_REG: WUIFSPERIOD (Bitfield-Mask: 0xff) */ - -/* ------------------------ FTDF_FTDF_LMAC_CONTROL_11_REG ----------------------- */ -#define FTDF_FTDF_LMAC_CONTROL_11_REG_MACRXTOTALCYCLETIME_Pos (0UL) /*!< FTDF FTDF_LMAC_CONTROL_11_REG: MACRXTOTALCYCLETIME (Bit 0) */ -#define FTDF_FTDF_LMAC_CONTROL_11_REG_MACRXTOTALCYCLETIME_Msk (0xffffUL) /*!< FTDF FTDF_LMAC_CONTROL_11_REG: MACRXTOTALCYCLETIME (Bitfield-Mask: 0xffff) */ -#define FTDF_FTDF_LMAC_CONTROL_11_REG_MACDISCARXOFFTORZ_Pos (16UL) /*!< FTDF FTDF_LMAC_CONTROL_11_REG: MACDISCARXOFFTORZ (Bit 16) */ -#define FTDF_FTDF_LMAC_CONTROL_11_REG_MACDISCARXOFFTORZ_Msk (0x10000UL) /*!< FTDF FTDF_LMAC_CONTROL_11_REG: MACDISCARXOFFTORZ (Bitfield-Mask: 0x01) */ -#define FTDF_FTDF_LMAC_CONTROL_11_REG_CSMA_CA_NB_VAL_Pos (17UL) /*!< FTDF FTDF_LMAC_CONTROL_11_REG: CSMA_CA_NB_VAL (Bit 17) */ -#define FTDF_FTDF_LMAC_CONTROL_11_REG_CSMA_CA_NB_VAL_Msk (0xe0000UL) /*!< FTDF FTDF_LMAC_CONTROL_11_REG: CSMA_CA_NB_VAL (Bitfield-Mask: 0x07) */ -#define FTDF_FTDF_LMAC_CONTROL_11_REG_CSMA_CA_BO_THRESHOLD_Pos (24UL) /*!< FTDF FTDF_LMAC_CONTROL_11_REG: CSMA_CA_BO_THRESHOLD (Bit 24) */ -#define FTDF_FTDF_LMAC_CONTROL_11_REG_CSMA_CA_BO_THRESHOLD_Msk (0xff000000UL) /*!< FTDF FTDF_LMAC_CONTROL_11_REG: CSMA_CA_BO_THRESHOLD (Bitfield-Mask: 0xff) */ - -/* ---------------------- FTDF_FTDF_LMAC_CONTROL_DELTA_REG ---------------------- */ -#define FTDF_FTDF_LMAC_CONTROL_DELTA_REG_LMACREADY4SLEEP_D_Pos (1UL) /*!< FTDF FTDF_LMAC_CONTROL_DELTA_REG: LMACREADY4SLEEP_D (Bit 1) */ -#define FTDF_FTDF_LMAC_CONTROL_DELTA_REG_LMACREADY4SLEEP_D_Msk (0x2UL) /*!< FTDF FTDF_LMAC_CONTROL_DELTA_REG: LMACREADY4SLEEP_D (Bitfield-Mask: 0x01) */ -#define FTDF_FTDF_LMAC_CONTROL_DELTA_REG_SYNCTIMESTAMP_E_Pos (2UL) /*!< FTDF FTDF_LMAC_CONTROL_DELTA_REG: SYNCTIMESTAMP_E (Bit 2) */ -#define FTDF_FTDF_LMAC_CONTROL_DELTA_REG_SYNCTIMESTAMP_E_Msk (0x4UL) /*!< FTDF FTDF_LMAC_CONTROL_DELTA_REG: SYNCTIMESTAMP_E (Bitfield-Mask: 0x01) */ -#define FTDF_FTDF_LMAC_CONTROL_DELTA_REG_SYMBOLTIMETHR_E_Pos (3UL) /*!< FTDF FTDF_LMAC_CONTROL_DELTA_REG: SYMBOLTIMETHR_E (Bit 3) */ -#define FTDF_FTDF_LMAC_CONTROL_DELTA_REG_SYMBOLTIMETHR_E_Msk (0x8UL) /*!< FTDF FTDF_LMAC_CONTROL_DELTA_REG: SYMBOLTIMETHR_E (Bitfield-Mask: 0x01) */ -#define FTDF_FTDF_LMAC_CONTROL_DELTA_REG_SYMBOLTIME2THR_E_Pos (4UL) /*!< FTDF FTDF_LMAC_CONTROL_DELTA_REG: SYMBOLTIME2THR_E (Bit 4) */ -#define FTDF_FTDF_LMAC_CONTROL_DELTA_REG_SYMBOLTIME2THR_E_Msk (0x10UL) /*!< FTDF FTDF_LMAC_CONTROL_DELTA_REG: SYMBOLTIME2THR_E (Bitfield-Mask: 0x01) */ -#define FTDF_FTDF_LMAC_CONTROL_DELTA_REG_GETGENERATORVAL_E_Pos (5UL) /*!< FTDF FTDF_LMAC_CONTROL_DELTA_REG: GETGENERATORVAL_E (Bit 5) */ -#define FTDF_FTDF_LMAC_CONTROL_DELTA_REG_GETGENERATORVAL_E_Msk (0x20UL) /*!< FTDF FTDF_LMAC_CONTROL_DELTA_REG: GETGENERATORVAL_E (Bitfield-Mask: 0x01) */ -#define FTDF_FTDF_LMAC_CONTROL_DELTA_REG_WAKEUPTIMERENABLESTATUS_D_Pos (6UL) /*!< FTDF FTDF_LMAC_CONTROL_DELTA_REG: WAKEUPTIMERENABLESTATUS_D (Bit 6) */ -#define FTDF_FTDF_LMAC_CONTROL_DELTA_REG_WAKEUPTIMERENABLESTATUS_D_Msk (0x40UL) /*!< FTDF FTDF_LMAC_CONTROL_DELTA_REG: WAKEUPTIMERENABLESTATUS_D (Bitfield-Mask: 0x01) */ - -/* --------------------- FTDF_FTDF_TIMESTAMPCURRPHASEVAL_REG -------------------- */ -#define FTDF_FTDF_TIMESTAMPCURRPHASEVAL_REG_TIMESTAMPCURRPHASEVAL_Pos (0UL) /*!< FTDF FTDF_TIMESTAMPCURRPHASEVAL_REG: TIMESTAMPCURRPHASEVAL (Bit 0) */ -#define FTDF_FTDF_TIMESTAMPCURRPHASEVAL_REG_TIMESTAMPCURRPHASEVAL_Msk (0xffUL) /*!< FTDF FTDF_TIMESTAMPCURRPHASEVAL_REG: TIMESTAMPCURRPHASEVAL (Bitfield-Mask: 0xff) */ - -/* ---------------------- FTDF_FTDF_MACTSTXACKDELAYVAL_REG ---------------------- */ -#define FTDF_FTDF_MACTSTXACKDELAYVAL_REG_MACTSTXACKDELAYVAL_Pos (0UL) /*!< FTDF FTDF_MACTSTXACKDELAYVAL_REG: MACTSTXACKDELAYVAL (Bit 0) */ -#define FTDF_FTDF_MACTSTXACKDELAYVAL_REG_MACTSTXACKDELAYVAL_Msk (0xffffUL) /*!< FTDF FTDF_MACTSTXACKDELAYVAL_REG: MACTSTXACKDELAYVAL (Bitfield-Mask: 0xffff) */ - -/* ----------------------- FTDF_FTDF_LMAC_CONTROL_MASK_REG ---------------------- */ -#define FTDF_FTDF_LMAC_CONTROL_MASK_REG_LMACREADY4SLEEP_M_Pos (1UL) /*!< FTDF FTDF_LMAC_CONTROL_MASK_REG: LMACREADY4SLEEP_M (Bit 1) */ -#define FTDF_FTDF_LMAC_CONTROL_MASK_REG_LMACREADY4SLEEP_M_Msk (0x2UL) /*!< FTDF FTDF_LMAC_CONTROL_MASK_REG: LMACREADY4SLEEP_M (Bitfield-Mask: 0x01) */ -#define FTDF_FTDF_LMAC_CONTROL_MASK_REG_SYNCTIMESTAMP_M_Pos (2UL) /*!< FTDF FTDF_LMAC_CONTROL_MASK_REG: SYNCTIMESTAMP_M (Bit 2) */ -#define FTDF_FTDF_LMAC_CONTROL_MASK_REG_SYNCTIMESTAMP_M_Msk (0x4UL) /*!< FTDF FTDF_LMAC_CONTROL_MASK_REG: SYNCTIMESTAMP_M (Bitfield-Mask: 0x01) */ -#define FTDF_FTDF_LMAC_CONTROL_MASK_REG_SYMBOLTIMETHR_M_Pos (3UL) /*!< FTDF FTDF_LMAC_CONTROL_MASK_REG: SYMBOLTIMETHR_M (Bit 3) */ -#define FTDF_FTDF_LMAC_CONTROL_MASK_REG_SYMBOLTIMETHR_M_Msk (0x8UL) /*!< FTDF FTDF_LMAC_CONTROL_MASK_REG: SYMBOLTIMETHR_M (Bitfield-Mask: 0x01) */ -#define FTDF_FTDF_LMAC_CONTROL_MASK_REG_SYMBOLTIME2THR_M_Pos (4UL) /*!< FTDF FTDF_LMAC_CONTROL_MASK_REG: SYMBOLTIME2THR_M (Bit 4) */ -#define FTDF_FTDF_LMAC_CONTROL_MASK_REG_SYMBOLTIME2THR_M_Msk (0x10UL) /*!< FTDF FTDF_LMAC_CONTROL_MASK_REG: SYMBOLTIME2THR_M (Bitfield-Mask: 0x01) */ -#define FTDF_FTDF_LMAC_CONTROL_MASK_REG_GETGENERATORVAL_M_Pos (5UL) /*!< FTDF FTDF_LMAC_CONTROL_MASK_REG: GETGENERATORVAL_M (Bit 5) */ -#define FTDF_FTDF_LMAC_CONTROL_MASK_REG_GETGENERATORVAL_M_Msk (0x20UL) /*!< FTDF FTDF_LMAC_CONTROL_MASK_REG: GETGENERATORVAL_M (Bitfield-Mask: 0x01) */ -#define FTDF_FTDF_LMAC_CONTROL_MASK_REG_WAKEUPTIMERENABLESTATUS_M_Pos (6UL) /*!< FTDF FTDF_LMAC_CONTROL_MASK_REG: WAKEUPTIMERENABLESTATUS_M (Bit 6) */ -#define FTDF_FTDF_LMAC_CONTROL_MASK_REG_WAKEUPTIMERENABLESTATUS_M_Msk (0x40UL) /*!< FTDF FTDF_LMAC_CONTROL_MASK_REG: WAKEUPTIMERENABLESTATUS_M (Bitfield-Mask: 0x01) */ - -/* -------------------------- FTDF_FTDF_LMAC_EVENT_REG -------------------------- */ -#define FTDF_FTDF_LMAC_EVENT_REG_EDSCANREADY_E_Pos (0UL) /*!< FTDF FTDF_LMAC_EVENT_REG: EDSCANREADY_E (Bit 0) */ -#define FTDF_FTDF_LMAC_EVENT_REG_EDSCANREADY_E_Msk (0x1UL) /*!< FTDF FTDF_LMAC_EVENT_REG: EDSCANREADY_E (Bitfield-Mask: 0x01) */ -#define FTDF_FTDF_LMAC_EVENT_REG_CCASTAT_E_Pos (1UL) /*!< FTDF FTDF_LMAC_EVENT_REG: CCASTAT_E (Bit 1) */ -#define FTDF_FTDF_LMAC_EVENT_REG_CCASTAT_E_Msk (0x2UL) /*!< FTDF FTDF_LMAC_EVENT_REG: CCASTAT_E (Bitfield-Mask: 0x01) */ -#define FTDF_FTDF_LMAC_EVENT_REG_RXTIMEREXPIRED_E_Pos (2UL) /*!< FTDF FTDF_LMAC_EVENT_REG: RXTIMEREXPIRED_E (Bit 2) */ -#define FTDF_FTDF_LMAC_EVENT_REG_RXTIMEREXPIRED_E_Msk (0x4UL) /*!< FTDF FTDF_LMAC_EVENT_REG: RXTIMEREXPIRED_E (Bitfield-Mask: 0x01) */ -#define FTDF_FTDF_LMAC_EVENT_REG_CSMA_CA_BO_THR_E_Pos (3UL) /*!< FTDF FTDF_LMAC_EVENT_REG: CSMA_CA_BO_THR_E (Bit 3) */ -#define FTDF_FTDF_LMAC_EVENT_REG_CSMA_CA_BO_THR_E_Msk (0x8UL) /*!< FTDF FTDF_LMAC_EVENT_REG: CSMA_CA_BO_THR_E (Bitfield-Mask: 0x01) */ - -/* --------------------------- FTDF_FTDF_LMAC_MASK_REG -------------------------- */ -#define FTDF_FTDF_LMAC_MASK_REG_EDSCANREADY_M_Pos (0UL) /*!< FTDF FTDF_LMAC_MASK_REG: EDSCANREADY_M (Bit 0) */ -#define FTDF_FTDF_LMAC_MASK_REG_EDSCANREADY_M_Msk (0x1UL) /*!< FTDF FTDF_LMAC_MASK_REG: EDSCANREADY_M (Bitfield-Mask: 0x01) */ -#define FTDF_FTDF_LMAC_MASK_REG_CCASTAT_M_Pos (1UL) /*!< FTDF FTDF_LMAC_MASK_REG: CCASTAT_M (Bit 1) */ -#define FTDF_FTDF_LMAC_MASK_REG_CCASTAT_M_Msk (0x2UL) /*!< FTDF FTDF_LMAC_MASK_REG: CCASTAT_M (Bitfield-Mask: 0x01) */ -#define FTDF_FTDF_LMAC_MASK_REG_RXTIMEREXPIRED_M_Pos (2UL) /*!< FTDF FTDF_LMAC_MASK_REG: RXTIMEREXPIRED_M (Bit 2) */ -#define FTDF_FTDF_LMAC_MASK_REG_RXTIMEREXPIRED_M_Msk (0x4UL) /*!< FTDF FTDF_LMAC_MASK_REG: RXTIMEREXPIRED_M (Bitfield-Mask: 0x01) */ -#define FTDF_FTDF_LMAC_MASK_REG_CSMA_CA_BO_THR_M_Pos (3UL) /*!< FTDF FTDF_LMAC_MASK_REG: CSMA_CA_BO_THR_M (Bit 3) */ -#define FTDF_FTDF_LMAC_MASK_REG_CSMA_CA_BO_THR_M_Msk (0x8UL) /*!< FTDF FTDF_LMAC_MASK_REG: CSMA_CA_BO_THR_M (Bitfield-Mask: 0x01) */ - -/* ------------------------- FTDF_FTDF_LMAC_MANUAL_1_REG ------------------------ */ -#define FTDF_FTDF_LMAC_MANUAL_1_REG_LMAC_MANUAL_MODE_Pos (0UL) /*!< FTDF FTDF_LMAC_MANUAL_1_REG: LMAC_MANUAL_MODE (Bit 0) */ -#define FTDF_FTDF_LMAC_MANUAL_1_REG_LMAC_MANUAL_MODE_Msk (0x1UL) /*!< FTDF FTDF_LMAC_MANUAL_1_REG: LMAC_MANUAL_MODE (Bitfield-Mask: 0x01) */ -#define FTDF_FTDF_LMAC_MANUAL_1_REG_LMAC_MANUAL_PHY_EN_Pos (1UL) /*!< FTDF FTDF_LMAC_MANUAL_1_REG: LMAC_MANUAL_PHY_EN (Bit 1) */ -#define FTDF_FTDF_LMAC_MANUAL_1_REG_LMAC_MANUAL_PHY_EN_Msk (0x2UL) /*!< FTDF FTDF_LMAC_MANUAL_1_REG: LMAC_MANUAL_PHY_EN (Bitfield-Mask: 0x01) */ -#define FTDF_FTDF_LMAC_MANUAL_1_REG_LMAC_MANUAL_TX_EN_Pos (2UL) /*!< FTDF FTDF_LMAC_MANUAL_1_REG: LMAC_MANUAL_TX_EN (Bit 2) */ -#define FTDF_FTDF_LMAC_MANUAL_1_REG_LMAC_MANUAL_TX_EN_Msk (0x4UL) /*!< FTDF FTDF_LMAC_MANUAL_1_REG: LMAC_MANUAL_TX_EN (Bitfield-Mask: 0x01) */ -#define FTDF_FTDF_LMAC_MANUAL_1_REG_LMAC_MANUAL_RX_EN_Pos (3UL) /*!< FTDF FTDF_LMAC_MANUAL_1_REG: LMAC_MANUAL_RX_EN (Bit 3) */ -#define FTDF_FTDF_LMAC_MANUAL_1_REG_LMAC_MANUAL_RX_EN_Msk (0x8UL) /*!< FTDF FTDF_LMAC_MANUAL_1_REG: LMAC_MANUAL_RX_EN (Bitfield-Mask: 0x01) */ -#define FTDF_FTDF_LMAC_MANUAL_1_REG_LMAC_MANUAL_RX_PIPE_EN_Pos (4UL) /*!< FTDF FTDF_LMAC_MANUAL_1_REG: LMAC_MANUAL_RX_PIPE_EN (Bit 4) */ -#define FTDF_FTDF_LMAC_MANUAL_1_REG_LMAC_MANUAL_RX_PIPE_EN_Msk (0x10UL) /*!< FTDF FTDF_LMAC_MANUAL_1_REG: LMAC_MANUAL_RX_PIPE_EN (Bitfield-Mask: 0x01) */ -#define FTDF_FTDF_LMAC_MANUAL_1_REG_LMAC_MANUAL_ED_REQUEST_Pos (5UL) /*!< FTDF FTDF_LMAC_MANUAL_1_REG: LMAC_MANUAL_ED_REQUEST (Bit 5) */ -#define FTDF_FTDF_LMAC_MANUAL_1_REG_LMAC_MANUAL_ED_REQUEST_Msk (0x20UL) /*!< FTDF FTDF_LMAC_MANUAL_1_REG: LMAC_MANUAL_ED_REQUEST (Bitfield-Mask: 0x01) */ -#define FTDF_FTDF_LMAC_MANUAL_1_REG_LMAC_MANUAL_TX_FRM_NR_Pos (6UL) /*!< FTDF FTDF_LMAC_MANUAL_1_REG: LMAC_MANUAL_TX_FRM_NR (Bit 6) */ -#define FTDF_FTDF_LMAC_MANUAL_1_REG_LMAC_MANUAL_TX_FRM_NR_Msk (0xc0UL) /*!< FTDF FTDF_LMAC_MANUAL_1_REG: LMAC_MANUAL_TX_FRM_NR (Bitfield-Mask: 0x03) */ -#define FTDF_FTDF_LMAC_MANUAL_1_REG_LMAC_MANUAL_PTI_Pos (8UL) /*!< FTDF FTDF_LMAC_MANUAL_1_REG: LMAC_MANUAL_PTI (Bit 8) */ -#define FTDF_FTDF_LMAC_MANUAL_1_REG_LMAC_MANUAL_PTI_Msk (0xf00UL) /*!< FTDF FTDF_LMAC_MANUAL_1_REG: LMAC_MANUAL_PTI (Bitfield-Mask: 0x0f) */ -#define FTDF_FTDF_LMAC_MANUAL_1_REG_LMAC_MANUAL_PHY_ATTR_DEM_PTI_Pos (16UL) /*!< FTDF FTDF_LMAC_MANUAL_1_REG: LMAC_MANUAL_PHY_ATTR_DEM_PTI (Bit 16) */ -#define FTDF_FTDF_LMAC_MANUAL_1_REG_LMAC_MANUAL_PHY_ATTR_DEM_PTI_Msk (0xf0000UL) /*!< FTDF FTDF_LMAC_MANUAL_1_REG: LMAC_MANUAL_PHY_ATTR_DEM_PTI (Bitfield-Mask: 0x0f) */ -#define FTDF_FTDF_LMAC_MANUAL_1_REG_LMAC_MANUAL_PHY_ATTR_CN_Pos (20UL) /*!< FTDF FTDF_LMAC_MANUAL_1_REG: LMAC_MANUAL_PHY_ATTR_CN (Bit 20) */ -#define FTDF_FTDF_LMAC_MANUAL_1_REG_LMAC_MANUAL_PHY_ATTR_CN_Msk (0xf00000UL) /*!< FTDF FTDF_LMAC_MANUAL_1_REG: LMAC_MANUAL_PHY_ATTR_CN (Bitfield-Mask: 0x0f) */ -#define FTDF_FTDF_LMAC_MANUAL_1_REG_LMAC_MANUAL_PHY_ATTR_CALCAP_Pos (24UL) /*!< FTDF FTDF_LMAC_MANUAL_1_REG: LMAC_MANUAL_PHY_ATTR_CALCAP (Bit 24) */ -#define FTDF_FTDF_LMAC_MANUAL_1_REG_LMAC_MANUAL_PHY_ATTR_CALCAP_Msk (0xf000000UL) /*!< FTDF FTDF_LMAC_MANUAL_1_REG: LMAC_MANUAL_PHY_ATTR_CALCAP (Bitfield-Mask: 0x0f) */ -#define FTDF_FTDF_LMAC_MANUAL_1_REG_LMAC_MANUAL_PHY_ATTR_RF_GPIO_PINS_Pos (28UL) /*!< FTDF FTDF_LMAC_MANUAL_1_REG: LMAC_MANUAL_PHY_ATTR_RF_GPIO_PINS (Bit 28) */ -#define FTDF_FTDF_LMAC_MANUAL_1_REG_LMAC_MANUAL_PHY_ATTR_RF_GPIO_PINS_Msk (0x70000000UL) /*!< FTDF FTDF_LMAC_MANUAL_1_REG: LMAC_MANUAL_PHY_ATTR_RF_GPIO_PINS (Bitfield-Mask: 0x07) */ -#define FTDF_FTDF_LMAC_MANUAL_1_REG_LMAC_MANUAL_PHY_ATTR_HSI_Pos (31UL) /*!< FTDF FTDF_LMAC_MANUAL_1_REG: LMAC_MANUAL_PHY_ATTR_HSI (Bit 31) */ -#define FTDF_FTDF_LMAC_MANUAL_1_REG_LMAC_MANUAL_PHY_ATTR_HSI_Msk (0x80000000UL) /*!< FTDF FTDF_LMAC_MANUAL_1_REG: LMAC_MANUAL_PHY_ATTR_HSI (Bitfield-Mask: 0x01) */ - -/* ------------------------ FTDF_FTDF_LMAC_MANUAL_OS_REG ------------------------ */ -#define FTDF_FTDF_LMAC_MANUAL_OS_REG_LMAC_MANUAL_TX_START_Pos (0UL) /*!< FTDF FTDF_LMAC_MANUAL_OS_REG: LMAC_MANUAL_TX_START (Bit 0) */ -#define FTDF_FTDF_LMAC_MANUAL_OS_REG_LMAC_MANUAL_TX_START_Msk (0x1UL) /*!< FTDF FTDF_LMAC_MANUAL_OS_REG: LMAC_MANUAL_TX_START (Bitfield-Mask: 0x01) */ - -/* ---------------------- FTDF_FTDF_LMAC_MANUAL_STATUS_REG ---------------------- */ -#define FTDF_FTDF_LMAC_MANUAL_STATUS_REG_LMAC_MANUAL_CCA_STAT_Pos (0UL) /*!< FTDF FTDF_LMAC_MANUAL_STATUS_REG: LMAC_MANUAL_CCA_STAT (Bit 0) */ -#define FTDF_FTDF_LMAC_MANUAL_STATUS_REG_LMAC_MANUAL_CCA_STAT_Msk (0x1UL) /*!< FTDF FTDF_LMAC_MANUAL_STATUS_REG: LMAC_MANUAL_CCA_STAT (Bitfield-Mask: 0x01) */ -#define FTDF_FTDF_LMAC_MANUAL_STATUS_REG_LMAC_MANUAL_ED_STAT_Pos (8UL) /*!< FTDF FTDF_LMAC_MANUAL_STATUS_REG: LMAC_MANUAL_ED_STAT (Bit 8) */ -#define FTDF_FTDF_LMAC_MANUAL_STATUS_REG_LMAC_MANUAL_ED_STAT_Msk (0xff00UL) /*!< FTDF FTDF_LMAC_MANUAL_STATUS_REG: LMAC_MANUAL_ED_STAT (Bitfield-Mask: 0xff) */ - -/* ------------------------ FTDF_FTDF_LMAC_CONTROL_7_REG ------------------------ */ -#define FTDF_FTDF_LMAC_CONTROL_7_REG_MACWUPERIOD_Pos (0UL) /*!< FTDF FTDF_LMAC_CONTROL_7_REG: MACWUPERIOD (Bit 0) */ -#define FTDF_FTDF_LMAC_CONTROL_7_REG_MACWUPERIOD_Msk (0xffffUL) /*!< FTDF FTDF_LMAC_CONTROL_7_REG: MACWUPERIOD (Bitfield-Mask: 0xffff) */ -#define FTDF_FTDF_LMAC_CONTROL_7_REG_MACCSLSAMPLEPERIOD_Pos (16UL) /*!< FTDF FTDF_LMAC_CONTROL_7_REG: MACCSLSAMPLEPERIOD (Bit 16) */ -#define FTDF_FTDF_LMAC_CONTROL_7_REG_MACCSLSAMPLEPERIOD_Msk (0xffff0000UL) /*!< FTDF FTDF_LMAC_CONTROL_7_REG: MACCSLSAMPLEPERIOD (Bitfield-Mask: 0xffff) */ - -/* ------------------------ FTDF_FTDF_LMAC_CONTROL_8_REG ------------------------ */ -#define FTDF_FTDF_LMAC_CONTROL_8_REG_MACCSLSTARTSAMPLETIME_Pos (0UL) /*!< FTDF FTDF_LMAC_CONTROL_8_REG: MACCSLSTARTSAMPLETIME (Bit 0) */ -#define FTDF_FTDF_LMAC_CONTROL_8_REG_MACCSLSTARTSAMPLETIME_Msk (0xffffffffUL) /*!< FTDF FTDF_LMAC_CONTROL_8_REG: MACCSLSTARTSAMPLETIME (Bitfield-Mask: 0xffffffff) */ - -/* ------------------------ FTDF_FTDF_LMAC_CONTROL_9_REG ------------------------ */ -#define FTDF_FTDF_LMAC_CONTROL_9_REG_MACCSLDATAPERIOD_Pos (0UL) /*!< FTDF FTDF_LMAC_CONTROL_9_REG: MACCSLDATAPERIOD (Bit 0) */ -#define FTDF_FTDF_LMAC_CONTROL_9_REG_MACCSLDATAPERIOD_Msk (0xffffUL) /*!< FTDF FTDF_LMAC_CONTROL_9_REG: MACCSLDATAPERIOD (Bitfield-Mask: 0xffff) */ -#define FTDF_FTDF_LMAC_CONTROL_9_REG_MACCSLFRAMEPENDINGWAITT_Pos (16UL) /*!< FTDF FTDF_LMAC_CONTROL_9_REG: MACCSLFRAMEPENDINGWAITT (Bit 16) */ -#define FTDF_FTDF_LMAC_CONTROL_9_REG_MACCSLFRAMEPENDINGWAITT_Msk (0xffff0000UL) /*!< FTDF FTDF_LMAC_CONTROL_9_REG: MACCSLFRAMEPENDINGWAITT (Bitfield-Mask: 0xffff) */ - -/* ------------------------ FTDF_FTDF_LMAC_CONTROL_10_REG ----------------------- */ -#define FTDF_FTDF_LMAC_CONTROL_10_REG_MACWURZCORRECTION_Pos (0UL) /*!< FTDF FTDF_LMAC_CONTROL_10_REG: MACWURZCORRECTION (Bit 0) */ -#define FTDF_FTDF_LMAC_CONTROL_10_REG_MACWURZCORRECTION_Msk (0xffUL) /*!< FTDF FTDF_LMAC_CONTROL_10_REG: MACWURZCORRECTION (Bitfield-Mask: 0xff) */ -#define FTDF_FTDF_LMAC_CONTROL_10_REG_MACCSLMARGINRZ_Pos (16UL) /*!< FTDF FTDF_LMAC_CONTROL_10_REG: MACCSLMARGINRZ (Bit 16) */ -#define FTDF_FTDF_LMAC_CONTROL_10_REG_MACCSLMARGINRZ_Msk (0xf0000UL) /*!< FTDF FTDF_LMAC_CONTROL_10_REG: MACCSLMARGINRZ (Bitfield-Mask: 0x0f) */ -#define FTDF_FTDF_LMAC_CONTROL_10_REG_MACRZZEROVAL_Pos (28UL) /*!< FTDF FTDF_LMAC_CONTROL_10_REG: MACRZZEROVAL (Bit 28) */ -#define FTDF_FTDF_LMAC_CONTROL_10_REG_MACRZZEROVAL_Msk (0xf0000000UL) /*!< FTDF FTDF_LMAC_CONTROL_10_REG: MACRZZEROVAL (Bitfield-Mask: 0x0f) */ - -/* -------------------------- FTDF_FTDF_SECURITY_0_REG -------------------------- */ -#define FTDF_FTDF_SECURITY_0_REG_SECTXRXN_Pos (1UL) /*!< FTDF FTDF_SECURITY_0_REG: SECTXRXN (Bit 1) */ -#define FTDF_FTDF_SECURITY_0_REG_SECTXRXN_Msk (0x2UL) /*!< FTDF FTDF_SECURITY_0_REG: SECTXRXN (Bitfield-Mask: 0x01) */ -#define FTDF_FTDF_SECURITY_0_REG_SECENTRY_Pos (8UL) /*!< FTDF FTDF_SECURITY_0_REG: SECENTRY (Bit 8) */ -#define FTDF_FTDF_SECURITY_0_REG_SECENTRY_Msk (0xf00UL) /*!< FTDF FTDF_SECURITY_0_REG: SECENTRY (Bitfield-Mask: 0x0f) */ -#define FTDF_FTDF_SECURITY_0_REG_SECALENGTH_Pos (16UL) /*!< FTDF FTDF_SECURITY_0_REG: SECALENGTH (Bit 16) */ -#define FTDF_FTDF_SECURITY_0_REG_SECALENGTH_Msk (0x7f0000UL) /*!< FTDF FTDF_SECURITY_0_REG: SECALENGTH (Bitfield-Mask: 0x7f) */ -#define FTDF_FTDF_SECURITY_0_REG_SECMLENGTH_Pos (24UL) /*!< FTDF FTDF_SECURITY_0_REG: SECMLENGTH (Bit 24) */ -#define FTDF_FTDF_SECURITY_0_REG_SECMLENGTH_Msk (0x7f000000UL) /*!< FTDF FTDF_SECURITY_0_REG: SECMLENGTH (Bitfield-Mask: 0x7f) */ -#define FTDF_FTDF_SECURITY_0_REG_SECENCDECN_Pos (31UL) /*!< FTDF FTDF_SECURITY_0_REG: SECENCDECN (Bit 31) */ -#define FTDF_FTDF_SECURITY_0_REG_SECENCDECN_Msk (0x80000000UL) /*!< FTDF FTDF_SECURITY_0_REG: SECENCDECN (Bitfield-Mask: 0x01) */ - -/* -------------------------- FTDF_FTDF_SECURITY_1_REG -------------------------- */ -#define FTDF_FTDF_SECURITY_1_REG_SECAUTHFLAGS_Pos (0UL) /*!< FTDF FTDF_SECURITY_1_REG: SECAUTHFLAGS (Bit 0) */ -#define FTDF_FTDF_SECURITY_1_REG_SECAUTHFLAGS_Msk (0xffUL) /*!< FTDF FTDF_SECURITY_1_REG: SECAUTHFLAGS (Bitfield-Mask: 0xff) */ -#define FTDF_FTDF_SECURITY_1_REG_SECENCRFLAGS_Pos (8UL) /*!< FTDF FTDF_SECURITY_1_REG: SECENCRFLAGS (Bit 8) */ -#define FTDF_FTDF_SECURITY_1_REG_SECENCRFLAGS_Msk (0xff00UL) /*!< FTDF FTDF_SECURITY_1_REG: SECENCRFLAGS (Bitfield-Mask: 0xff) */ - -/* --------------------------- FTDF_FTDF_SECKEY_0_REG --------------------------- */ -#define FTDF_FTDF_SECKEY_0_REG_SECKEY_0_Pos (0UL) /*!< FTDF FTDF_SECKEY_0_REG: SECKEY_0 (Bit 0) */ -#define FTDF_FTDF_SECKEY_0_REG_SECKEY_0_Msk (0xffffffffUL) /*!< FTDF FTDF_SECKEY_0_REG: SECKEY_0 (Bitfield-Mask: 0xffffffff) */ - -/* --------------------------- FTDF_FTDF_SECKEY_1_REG --------------------------- */ -#define FTDF_FTDF_SECKEY_1_REG_SECKEY_1_Pos (0UL) /*!< FTDF FTDF_SECKEY_1_REG: SECKEY_1 (Bit 0) */ -#define FTDF_FTDF_SECKEY_1_REG_SECKEY_1_Msk (0xffffffffUL) /*!< FTDF FTDF_SECKEY_1_REG: SECKEY_1 (Bitfield-Mask: 0xffffffff) */ - -/* --------------------------- FTDF_FTDF_SECKEY_2_REG --------------------------- */ -#define FTDF_FTDF_SECKEY_2_REG_SECKEY_2_Pos (0UL) /*!< FTDF FTDF_SECKEY_2_REG: SECKEY_2 (Bit 0) */ -#define FTDF_FTDF_SECKEY_2_REG_SECKEY_2_Msk (0xffffffffUL) /*!< FTDF FTDF_SECKEY_2_REG: SECKEY_2 (Bitfield-Mask: 0xffffffff) */ - -/* --------------------------- FTDF_FTDF_SECKEY_3_REG --------------------------- */ -#define FTDF_FTDF_SECKEY_3_REG_SECKEY_3_Pos (0UL) /*!< FTDF FTDF_SECKEY_3_REG: SECKEY_3 (Bit 0) */ -#define FTDF_FTDF_SECKEY_3_REG_SECKEY_3_Msk (0xffffffffUL) /*!< FTDF FTDF_SECKEY_3_REG: SECKEY_3 (Bitfield-Mask: 0xffffffff) */ - -/* -------------------------- FTDF_FTDF_SECNONCE_0_REG -------------------------- */ -#define FTDF_FTDF_SECNONCE_0_REG_SECNONCE_0_Pos (0UL) /*!< FTDF FTDF_SECNONCE_0_REG: SECNONCE_0 (Bit 0) */ -#define FTDF_FTDF_SECNONCE_0_REG_SECNONCE_0_Msk (0xffffffffUL) /*!< FTDF FTDF_SECNONCE_0_REG: SECNONCE_0 (Bitfield-Mask: 0xffffffff) */ - -/* -------------------------- FTDF_FTDF_SECNONCE_1_REG -------------------------- */ -#define FTDF_FTDF_SECNONCE_1_REG_SECNONCE_1_Pos (0UL) /*!< FTDF FTDF_SECNONCE_1_REG: SECNONCE_1 (Bit 0) */ -#define FTDF_FTDF_SECNONCE_1_REG_SECNONCE_1_Msk (0xffffffffUL) /*!< FTDF FTDF_SECNONCE_1_REG: SECNONCE_1 (Bitfield-Mask: 0xffffffff) */ - -/* -------------------------- FTDF_FTDF_SECNONCE_2_REG -------------------------- */ -#define FTDF_FTDF_SECNONCE_2_REG_SECNONCE_2_Pos (0UL) /*!< FTDF FTDF_SECNONCE_2_REG: SECNONCE_2 (Bit 0) */ -#define FTDF_FTDF_SECNONCE_2_REG_SECNONCE_2_Msk (0xffffffffUL) /*!< FTDF FTDF_SECNONCE_2_REG: SECNONCE_2 (Bitfield-Mask: 0xffffffff) */ - -/* -------------------------- FTDF_FTDF_SECNONCE_3_REG -------------------------- */ -#define FTDF_FTDF_SECNONCE_3_REG_SECNONCE_3_Pos (0UL) /*!< FTDF FTDF_SECNONCE_3_REG: SECNONCE_3 (Bit 0) */ -#define FTDF_FTDF_SECNONCE_3_REG_SECNONCE_3_Msk (0xffUL) /*!< FTDF FTDF_SECNONCE_3_REG: SECNONCE_3 (Bitfield-Mask: 0xff) */ - -/* -------------------------- FTDF_FTDF_SECURITY_OS_REG ------------------------- */ -#define FTDF_FTDF_SECURITY_OS_REG_SECABORT_Pos (0UL) /*!< FTDF FTDF_SECURITY_OS_REG: SECABORT (Bit 0) */ -#define FTDF_FTDF_SECURITY_OS_REG_SECABORT_Msk (0x1UL) /*!< FTDF FTDF_SECURITY_OS_REG: SECABORT (Bitfield-Mask: 0x01) */ -#define FTDF_FTDF_SECURITY_OS_REG_SECSTART_Pos (1UL) /*!< FTDF FTDF_SECURITY_OS_REG: SECSTART (Bit 1) */ -#define FTDF_FTDF_SECURITY_OS_REG_SECSTART_Msk (0x2UL) /*!< FTDF FTDF_SECURITY_OS_REG: SECSTART (Bitfield-Mask: 0x01) */ - -/* ------------------------ FTDF_FTDF_SECURITY_STATUS_REG ----------------------- */ -#define FTDF_FTDF_SECURITY_STATUS_REG_SECBUSY_Pos (0UL) /*!< FTDF FTDF_SECURITY_STATUS_REG: SECBUSY (Bit 0) */ -#define FTDF_FTDF_SECURITY_STATUS_REG_SECBUSY_Msk (0x1UL) /*!< FTDF FTDF_SECURITY_STATUS_REG: SECBUSY (Bitfield-Mask: 0x01) */ -#define FTDF_FTDF_SECURITY_STATUS_REG_SECAUTHFAIL_Pos (1UL) /*!< FTDF FTDF_SECURITY_STATUS_REG: SECAUTHFAIL (Bit 1) */ -#define FTDF_FTDF_SECURITY_STATUS_REG_SECAUTHFAIL_Msk (0x2UL) /*!< FTDF FTDF_SECURITY_STATUS_REG: SECAUTHFAIL (Bitfield-Mask: 0x01) */ - -/* ------------------------ FTDF_FTDF_SECURITY_EVENT_REG ------------------------ */ -#define FTDF_FTDF_SECURITY_EVENT_REG_SECREADY_E_Pos (0UL) /*!< FTDF FTDF_SECURITY_EVENT_REG: SECREADY_E (Bit 0) */ -#define FTDF_FTDF_SECURITY_EVENT_REG_SECREADY_E_Msk (0x1UL) /*!< FTDF FTDF_SECURITY_EVENT_REG: SECREADY_E (Bitfield-Mask: 0x01) */ - -/* ---------------------- FTDF_FTDF_SECURITY_EVENTMASK_REG ---------------------- */ -#define FTDF_FTDF_SECURITY_EVENTMASK_REG_SECREADY_M_Pos (0UL) /*!< FTDF FTDF_SECURITY_EVENTMASK_REG: SECREADY_M (Bit 0) */ -#define FTDF_FTDF_SECURITY_EVENTMASK_REG_SECREADY_M_Msk (0x1UL) /*!< FTDF FTDF_SECURITY_EVENTMASK_REG: SECREADY_M (Bitfield-Mask: 0x01) */ - -/* ------------------------ FTDF_FTDF_TSCH_CONTROL_0_REG ------------------------ */ -#define FTDF_FTDF_TSCH_CONTROL_0_REG_MACTSTXACKDELAY_Pos (0UL) /*!< FTDF FTDF_TSCH_CONTROL_0_REG: MACTSTXACKDELAY (Bit 0) */ -#define FTDF_FTDF_TSCH_CONTROL_0_REG_MACTSTXACKDELAY_Msk (0xffffUL) /*!< FTDF FTDF_TSCH_CONTROL_0_REG: MACTSTXACKDELAY (Bitfield-Mask: 0xffff) */ -#define FTDF_FTDF_TSCH_CONTROL_0_REG_MACTSRXWAIT_Pos (16UL) /*!< FTDF FTDF_TSCH_CONTROL_0_REG: MACTSRXWAIT (Bit 16) */ -#define FTDF_FTDF_TSCH_CONTROL_0_REG_MACTSRXWAIT_Msk (0xffff0000UL) /*!< FTDF FTDF_TSCH_CONTROL_0_REG: MACTSRXWAIT (Bitfield-Mask: 0xffff) */ - -/* ------------------------ FTDF_FTDF_TSCH_CONTROL_1_REG ------------------------ */ -#define FTDF_FTDF_TSCH_CONTROL_1_REG_MACTSRXTX_Pos (0UL) /*!< FTDF FTDF_TSCH_CONTROL_1_REG: MACTSRXTX (Bit 0) */ -#define FTDF_FTDF_TSCH_CONTROL_1_REG_MACTSRXTX_Msk (0xffffUL) /*!< FTDF FTDF_TSCH_CONTROL_1_REG: MACTSRXTX (Bitfield-Mask: 0xffff) */ - -/* ------------------------ FTDF_FTDF_TSCH_CONTROL_2_REG ------------------------ */ -#define FTDF_FTDF_TSCH_CONTROL_2_REG_MACTSRXACKDELAY_Pos (0UL) /*!< FTDF FTDF_TSCH_CONTROL_2_REG: MACTSRXACKDELAY (Bit 0) */ -#define FTDF_FTDF_TSCH_CONTROL_2_REG_MACTSRXACKDELAY_Msk (0xffffUL) /*!< FTDF FTDF_TSCH_CONTROL_2_REG: MACTSRXACKDELAY (Bitfield-Mask: 0xffff) */ -#define FTDF_FTDF_TSCH_CONTROL_2_REG_MACTSACKWAIT_Pos (16UL) /*!< FTDF FTDF_TSCH_CONTROL_2_REG: MACTSACKWAIT (Bit 16) */ -#define FTDF_FTDF_TSCH_CONTROL_2_REG_MACTSACKWAIT_Msk (0xffff0000UL) /*!< FTDF FTDF_TSCH_CONTROL_2_REG: MACTSACKWAIT (Bitfield-Mask: 0xffff) */ - -/* ----------------------- FTDF_FTDF_PHY_PARAMETERS_0_REG ----------------------- */ -#define FTDF_FTDF_PHY_PARAMETERS_0_REG_RXBITPOS_0_Pos (0UL) /*!< FTDF FTDF_PHY_PARAMETERS_0_REG: RXBITPOS_0 (Bit 0) */ -#define FTDF_FTDF_PHY_PARAMETERS_0_REG_RXBITPOS_0_Msk (0x7UL) /*!< FTDF FTDF_PHY_PARAMETERS_0_REG: RXBITPOS_0 (Bitfield-Mask: 0x07) */ -#define FTDF_FTDF_PHY_PARAMETERS_0_REG_RXBITPOS_1_Pos (4UL) /*!< FTDF FTDF_PHY_PARAMETERS_0_REG: RXBITPOS_1 (Bit 4) */ -#define FTDF_FTDF_PHY_PARAMETERS_0_REG_RXBITPOS_1_Msk (0x70UL) /*!< FTDF FTDF_PHY_PARAMETERS_0_REG: RXBITPOS_1 (Bitfield-Mask: 0x07) */ -#define FTDF_FTDF_PHY_PARAMETERS_0_REG_RXBITPOS_2_Pos (8UL) /*!< FTDF FTDF_PHY_PARAMETERS_0_REG: RXBITPOS_2 (Bit 8) */ -#define FTDF_FTDF_PHY_PARAMETERS_0_REG_RXBITPOS_2_Msk (0x700UL) /*!< FTDF FTDF_PHY_PARAMETERS_0_REG: RXBITPOS_2 (Bitfield-Mask: 0x07) */ -#define FTDF_FTDF_PHY_PARAMETERS_0_REG_RXBITPOS_3_Pos (12UL) /*!< FTDF FTDF_PHY_PARAMETERS_0_REG: RXBITPOS_3 (Bit 12) */ -#define FTDF_FTDF_PHY_PARAMETERS_0_REG_RXBITPOS_3_Msk (0x7000UL) /*!< FTDF FTDF_PHY_PARAMETERS_0_REG: RXBITPOS_3 (Bitfield-Mask: 0x07) */ -#define FTDF_FTDF_PHY_PARAMETERS_0_REG_RXBITPOS_4_Pos (16UL) /*!< FTDF FTDF_PHY_PARAMETERS_0_REG: RXBITPOS_4 (Bit 16) */ -#define FTDF_FTDF_PHY_PARAMETERS_0_REG_RXBITPOS_4_Msk (0x70000UL) /*!< FTDF FTDF_PHY_PARAMETERS_0_REG: RXBITPOS_4 (Bitfield-Mask: 0x07) */ -#define FTDF_FTDF_PHY_PARAMETERS_0_REG_RXBITPOS_5_Pos (20UL) /*!< FTDF FTDF_PHY_PARAMETERS_0_REG: RXBITPOS_5 (Bit 20) */ -#define FTDF_FTDF_PHY_PARAMETERS_0_REG_RXBITPOS_5_Msk (0x700000UL) /*!< FTDF FTDF_PHY_PARAMETERS_0_REG: RXBITPOS_5 (Bitfield-Mask: 0x07) */ -#define FTDF_FTDF_PHY_PARAMETERS_0_REG_RXBITPOS_6_Pos (24UL) /*!< FTDF FTDF_PHY_PARAMETERS_0_REG: RXBITPOS_6 (Bit 24) */ -#define FTDF_FTDF_PHY_PARAMETERS_0_REG_RXBITPOS_6_Msk (0x7000000UL) /*!< FTDF FTDF_PHY_PARAMETERS_0_REG: RXBITPOS_6 (Bitfield-Mask: 0x07) */ -#define FTDF_FTDF_PHY_PARAMETERS_0_REG_RXBITPOS_7_Pos (28UL) /*!< FTDF FTDF_PHY_PARAMETERS_0_REG: RXBITPOS_7 (Bit 28) */ -#define FTDF_FTDF_PHY_PARAMETERS_0_REG_RXBITPOS_7_Msk (0x70000000UL) /*!< FTDF FTDF_PHY_PARAMETERS_0_REG: RXBITPOS_7 (Bitfield-Mask: 0x07) */ - -/* ----------------------- FTDF_FTDF_PHY_PARAMETERS_1_REG ----------------------- */ -#define FTDF_FTDF_PHY_PARAMETERS_1_REG_TXBITPOS_0_Pos (0UL) /*!< FTDF FTDF_PHY_PARAMETERS_1_REG: TXBITPOS_0 (Bit 0) */ -#define FTDF_FTDF_PHY_PARAMETERS_1_REG_TXBITPOS_0_Msk (0x7UL) /*!< FTDF FTDF_PHY_PARAMETERS_1_REG: TXBITPOS_0 (Bitfield-Mask: 0x07) */ -#define FTDF_FTDF_PHY_PARAMETERS_1_REG_TXBITPOS_1_Pos (4UL) /*!< FTDF FTDF_PHY_PARAMETERS_1_REG: TXBITPOS_1 (Bit 4) */ -#define FTDF_FTDF_PHY_PARAMETERS_1_REG_TXBITPOS_1_Msk (0x70UL) /*!< FTDF FTDF_PHY_PARAMETERS_1_REG: TXBITPOS_1 (Bitfield-Mask: 0x07) */ -#define FTDF_FTDF_PHY_PARAMETERS_1_REG_TXBITPOS_2_Pos (8UL) /*!< FTDF FTDF_PHY_PARAMETERS_1_REG: TXBITPOS_2 (Bit 8) */ -#define FTDF_FTDF_PHY_PARAMETERS_1_REG_TXBITPOS_2_Msk (0x700UL) /*!< FTDF FTDF_PHY_PARAMETERS_1_REG: TXBITPOS_2 (Bitfield-Mask: 0x07) */ -#define FTDF_FTDF_PHY_PARAMETERS_1_REG_TXBITPOS_3_Pos (12UL) /*!< FTDF FTDF_PHY_PARAMETERS_1_REG: TXBITPOS_3 (Bit 12) */ -#define FTDF_FTDF_PHY_PARAMETERS_1_REG_TXBITPOS_3_Msk (0x7000UL) /*!< FTDF FTDF_PHY_PARAMETERS_1_REG: TXBITPOS_3 (Bitfield-Mask: 0x07) */ -#define FTDF_FTDF_PHY_PARAMETERS_1_REG_TXBITPOS_4_Pos (16UL) /*!< FTDF FTDF_PHY_PARAMETERS_1_REG: TXBITPOS_4 (Bit 16) */ -#define FTDF_FTDF_PHY_PARAMETERS_1_REG_TXBITPOS_4_Msk (0x70000UL) /*!< FTDF FTDF_PHY_PARAMETERS_1_REG: TXBITPOS_4 (Bitfield-Mask: 0x07) */ -#define FTDF_FTDF_PHY_PARAMETERS_1_REG_TXBITPOS_5_Pos (20UL) /*!< FTDF FTDF_PHY_PARAMETERS_1_REG: TXBITPOS_5 (Bit 20) */ -#define FTDF_FTDF_PHY_PARAMETERS_1_REG_TXBITPOS_5_Msk (0x700000UL) /*!< FTDF FTDF_PHY_PARAMETERS_1_REG: TXBITPOS_5 (Bitfield-Mask: 0x07) */ -#define FTDF_FTDF_PHY_PARAMETERS_1_REG_TXBITPOS_6_Pos (24UL) /*!< FTDF FTDF_PHY_PARAMETERS_1_REG: TXBITPOS_6 (Bit 24) */ -#define FTDF_FTDF_PHY_PARAMETERS_1_REG_TXBITPOS_6_Msk (0x7000000UL) /*!< FTDF FTDF_PHY_PARAMETERS_1_REG: TXBITPOS_6 (Bitfield-Mask: 0x07) */ -#define FTDF_FTDF_PHY_PARAMETERS_1_REG_TXBITPOS_7_Pos (28UL) /*!< FTDF FTDF_PHY_PARAMETERS_1_REG: TXBITPOS_7 (Bit 28) */ -#define FTDF_FTDF_PHY_PARAMETERS_1_REG_TXBITPOS_7_Msk (0x70000000UL) /*!< FTDF FTDF_PHY_PARAMETERS_1_REG: TXBITPOS_7 (Bitfield-Mask: 0x07) */ - -/* ----------------------- FTDF_FTDF_PHY_PARAMETERS_2_REG ----------------------- */ -#define FTDF_FTDF_PHY_PARAMETERS_2_REG_PHYTXSTARTUP_Pos (0UL) /*!< FTDF FTDF_PHY_PARAMETERS_2_REG: PHYTXSTARTUP (Bit 0) */ -#define FTDF_FTDF_PHY_PARAMETERS_2_REG_PHYTXSTARTUP_Msk (0xffUL) /*!< FTDF FTDF_PHY_PARAMETERS_2_REG: PHYTXSTARTUP (Bitfield-Mask: 0xff) */ -#define FTDF_FTDF_PHY_PARAMETERS_2_REG_PHYTXLATENCY_Pos (8UL) /*!< FTDF FTDF_PHY_PARAMETERS_2_REG: PHYTXLATENCY (Bit 8) */ -#define FTDF_FTDF_PHY_PARAMETERS_2_REG_PHYTXLATENCY_Msk (0xff00UL) /*!< FTDF FTDF_PHY_PARAMETERS_2_REG: PHYTXLATENCY (Bitfield-Mask: 0xff) */ -#define FTDF_FTDF_PHY_PARAMETERS_2_REG_PHYTXFINISH_Pos (16UL) /*!< FTDF FTDF_PHY_PARAMETERS_2_REG: PHYTXFINISH (Bit 16) */ -#define FTDF_FTDF_PHY_PARAMETERS_2_REG_PHYTXFINISH_Msk (0xff0000UL) /*!< FTDF FTDF_PHY_PARAMETERS_2_REG: PHYTXFINISH (Bitfield-Mask: 0xff) */ -#define FTDF_FTDF_PHY_PARAMETERS_2_REG_PHYTRXWAIT_Pos (24UL) /*!< FTDF FTDF_PHY_PARAMETERS_2_REG: PHYTRXWAIT (Bit 24) */ -#define FTDF_FTDF_PHY_PARAMETERS_2_REG_PHYTRXWAIT_Msk (0xff000000UL) /*!< FTDF FTDF_PHY_PARAMETERS_2_REG: PHYTRXWAIT (Bitfield-Mask: 0xff) */ - -/* ----------------------- FTDF_FTDF_PHY_PARAMETERS_3_REG ----------------------- */ -#define FTDF_FTDF_PHY_PARAMETERS_3_REG_PHYRXSTARTUP_Pos (0UL) /*!< FTDF FTDF_PHY_PARAMETERS_3_REG: PHYRXSTARTUP (Bit 0) */ -#define FTDF_FTDF_PHY_PARAMETERS_3_REG_PHYRXSTARTUP_Msk (0xffUL) /*!< FTDF FTDF_PHY_PARAMETERS_3_REG: PHYRXSTARTUP (Bitfield-Mask: 0xff) */ -#define FTDF_FTDF_PHY_PARAMETERS_3_REG_PHYRXLATENCY_Pos (8UL) /*!< FTDF FTDF_PHY_PARAMETERS_3_REG: PHYRXLATENCY (Bit 8) */ -#define FTDF_FTDF_PHY_PARAMETERS_3_REG_PHYRXLATENCY_Msk (0xff00UL) /*!< FTDF FTDF_PHY_PARAMETERS_3_REG: PHYRXLATENCY (Bitfield-Mask: 0xff) */ -#define FTDF_FTDF_PHY_PARAMETERS_3_REG_PHYENABLE_Pos (16UL) /*!< FTDF FTDF_PHY_PARAMETERS_3_REG: PHYENABLE (Bit 16) */ -#define FTDF_FTDF_PHY_PARAMETERS_3_REG_PHYENABLE_Msk (0xff0000UL) /*!< FTDF FTDF_PHY_PARAMETERS_3_REG: PHYENABLE (Bitfield-Mask: 0xff) */ -#define FTDF_FTDF_PHY_PARAMETERS_3_REG_USE_LEGACY_PHY_EN_Pos (24UL) /*!< FTDF FTDF_PHY_PARAMETERS_3_REG: USE_LEGACY_PHY_EN (Bit 24) */ -#define FTDF_FTDF_PHY_PARAMETERS_3_REG_USE_LEGACY_PHY_EN_Msk (0x1000000UL) /*!< FTDF FTDF_PHY_PARAMETERS_3_REG: USE_LEGACY_PHY_EN (Bitfield-Mask: 0x01) */ - -/* ------------------------- FTDF_FTDF_RX_CONTROL_0_REG ------------------------- */ -#define FTDF_FTDF_RX_CONTROL_0_REG_DBGRXTRANSPARENTMODE_Pos (0UL) /*!< FTDF FTDF_RX_CONTROL_0_REG: DBGRXTRANSPARENTMODE (Bit 0) */ -#define FTDF_FTDF_RX_CONTROL_0_REG_DBGRXTRANSPARENTMODE_Msk (0x1UL) /*!< FTDF FTDF_RX_CONTROL_0_REG: DBGRXTRANSPARENTMODE (Bitfield-Mask: 0x01) */ -#define FTDF_FTDF_RX_CONTROL_0_REG_RXBEACONONLY_Pos (1UL) /*!< FTDF FTDF_RX_CONTROL_0_REG: RXBEACONONLY (Bit 1) */ -#define FTDF_FTDF_RX_CONTROL_0_REG_RXBEACONONLY_Msk (0x2UL) /*!< FTDF FTDF_RX_CONTROL_0_REG: RXBEACONONLY (Bitfield-Mask: 0x01) */ -#define FTDF_FTDF_RX_CONTROL_0_REG_RXCOORDREALIGNONLY_Pos (2UL) /*!< FTDF FTDF_RX_CONTROL_0_REG: RXCOORDREALIGNONLY (Bit 2) */ -#define FTDF_FTDF_RX_CONTROL_0_REG_RXCOORDREALIGNONLY_Msk (0x4UL) /*!< FTDF FTDF_RX_CONTROL_0_REG: RXCOORDREALIGNONLY (Bitfield-Mask: 0x01) */ -#define FTDF_FTDF_RX_CONTROL_0_REG_RX_READ_BUF_PTR_Pos (3UL) /*!< FTDF FTDF_RX_CONTROL_0_REG: RX_READ_BUF_PTR (Bit 3) */ -#define FTDF_FTDF_RX_CONTROL_0_REG_RX_READ_BUF_PTR_Msk (0x78UL) /*!< FTDF FTDF_RX_CONTROL_0_REG: RX_READ_BUF_PTR (Bitfield-Mask: 0x0f) */ -#define FTDF_FTDF_RX_CONTROL_0_REG_DISRXFRMPENDINGCA_Pos (7UL) /*!< FTDF FTDF_RX_CONTROL_0_REG: DISRXFRMPENDINGCA (Bit 7) */ -#define FTDF_FTDF_RX_CONTROL_0_REG_DISRXFRMPENDINGCA_Msk (0x80UL) /*!< FTDF FTDF_RX_CONTROL_0_REG: DISRXFRMPENDINGCA (Bitfield-Mask: 0x01) */ -#define FTDF_FTDF_RX_CONTROL_0_REG_DISRXACKREQUESTCA_Pos (8UL) /*!< FTDF FTDF_RX_CONTROL_0_REG: DISRXACKREQUESTCA (Bit 8) */ -#define FTDF_FTDF_RX_CONTROL_0_REG_DISRXACKREQUESTCA_Msk (0x100UL) /*!< FTDF FTDF_RX_CONTROL_0_REG: DISRXACKREQUESTCA (Bitfield-Mask: 0x01) */ -#define FTDF_FTDF_RX_CONTROL_0_REG_MACALWAYSPASSCRCERROR_Pos (9UL) /*!< FTDF FTDF_RX_CONTROL_0_REG: MACALWAYSPASSCRCERROR (Bit 9) */ -#define FTDF_FTDF_RX_CONTROL_0_REG_MACALWAYSPASSCRCERROR_Msk (0x200UL) /*!< FTDF FTDF_RX_CONTROL_0_REG: MACALWAYSPASSCRCERROR (Bitfield-Mask: 0x01) */ -#define FTDF_FTDF_RX_CONTROL_0_REG_DISDATAREQUESTCA_Pos (10UL) /*!< FTDF FTDF_RX_CONTROL_0_REG: DISDATAREQUESTCA (Bit 10) */ -#define FTDF_FTDF_RX_CONTROL_0_REG_DISDATAREQUESTCA_Msk (0x400UL) /*!< FTDF FTDF_RX_CONTROL_0_REG: DISDATAREQUESTCA (Bitfield-Mask: 0x01) */ -#define FTDF_FTDF_RX_CONTROL_0_REG_MACALWAYSPASSRESFRAMEVERSION_Pos (11UL) /*!< FTDF FTDF_RX_CONTROL_0_REG: MACALWAYSPASSRESFRAMEVERSION (Bit 11) */ -#define FTDF_FTDF_RX_CONTROL_0_REG_MACALWAYSPASSRESFRAMEVERSION_Msk (0x800UL) /*!< FTDF FTDF_RX_CONTROL_0_REG: MACALWAYSPASSRESFRAMEVERSION (Bitfield-Mask: 0x01) */ -#define FTDF_FTDF_RX_CONTROL_0_REG_MACALWAYSPASSWRONGDPANID_Pos (12UL) /*!< FTDF FTDF_RX_CONTROL_0_REG: MACALWAYSPASSWRONGDPANID (Bit 12) */ -#define FTDF_FTDF_RX_CONTROL_0_REG_MACALWAYSPASSWRONGDPANID_Msk (0x1000UL) /*!< FTDF FTDF_RX_CONTROL_0_REG: MACALWAYSPASSWRONGDPANID (Bitfield-Mask: 0x01) */ -#define FTDF_FTDF_RX_CONTROL_0_REG_MACALWAYSPASSWRONGDADDR_Pos (13UL) /*!< FTDF FTDF_RX_CONTROL_0_REG: MACALWAYSPASSWRONGDADDR (Bit 13) */ -#define FTDF_FTDF_RX_CONTROL_0_REG_MACALWAYSPASSWRONGDADDR_Msk (0x2000UL) /*!< FTDF FTDF_RX_CONTROL_0_REG: MACALWAYSPASSWRONGDADDR (Bitfield-Mask: 0x01) */ -#define FTDF_FTDF_RX_CONTROL_0_REG_MACALWAYSPASSBEACONWRONGPANID_Pos (14UL) /*!< FTDF FTDF_RX_CONTROL_0_REG: MACALWAYSPASSBEACONWRONGPANID (Bit 14) */ -#define FTDF_FTDF_RX_CONTROL_0_REG_MACALWAYSPASSBEACONWRONGPANID_Msk (0x4000UL) /*!< FTDF FTDF_RX_CONTROL_0_REG: MACALWAYSPASSBEACONWRONGPANID (Bitfield-Mask: 0x01) */ -#define FTDF_FTDF_RX_CONTROL_0_REG_MACALWAYSPASSTOPANCOORDINATOR_Pos (15UL) /*!< FTDF FTDF_RX_CONTROL_0_REG: MACALWAYSPASSTOPANCOORDINATOR (Bit 15) */ -#define FTDF_FTDF_RX_CONTROL_0_REG_MACALWAYSPASSTOPANCOORDINATOR_Msk (0x8000UL) /*!< FTDF FTDF_RX_CONTROL_0_REG: MACALWAYSPASSTOPANCOORDINATOR (Bitfield-Mask: 0x01) */ -#define FTDF_FTDF_RX_CONTROL_0_REG_MACALWAYSPASSFRMTYPE_Pos (16UL) /*!< FTDF FTDF_RX_CONTROL_0_REG: MACALWAYSPASSFRMTYPE (Bit 16) */ -#define FTDF_FTDF_RX_CONTROL_0_REG_MACALWAYSPASSFRMTYPE_Msk (0xff0000UL) /*!< FTDF FTDF_RX_CONTROL_0_REG: MACALWAYSPASSFRMTYPE (Bitfield-Mask: 0xff) */ -#define FTDF_FTDF_RX_CONTROL_0_REG_MACALWAYSPASSWAKEUP_Pos (24UL) /*!< FTDF FTDF_RX_CONTROL_0_REG: MACALWAYSPASSWAKEUP (Bit 24) */ -#define FTDF_FTDF_RX_CONTROL_0_REG_MACALWAYSPASSWAKEUP_Msk (0x1000000UL) /*!< FTDF FTDF_RX_CONTROL_0_REG: MACALWAYSPASSWAKEUP (Bitfield-Mask: 0x01) */ -#define FTDF_FTDF_RX_CONTROL_0_REG_MACPASSWAKEUP_Pos (25UL) /*!< FTDF FTDF_RX_CONTROL_0_REG: MACPASSWAKEUP (Bit 25) */ -#define FTDF_FTDF_RX_CONTROL_0_REG_MACPASSWAKEUP_Msk (0x2000000UL) /*!< FTDF FTDF_RX_CONTROL_0_REG: MACPASSWAKEUP (Bitfield-Mask: 0x01) */ -#define FTDF_FTDF_RX_CONTROL_0_REG_MACIMPLICITBROADCAST_Pos (26UL) /*!< FTDF FTDF_RX_CONTROL_0_REG: MACIMPLICITBROADCAST (Bit 26) */ -#define FTDF_FTDF_RX_CONTROL_0_REG_MACIMPLICITBROADCAST_Msk (0x4000000UL) /*!< FTDF FTDF_RX_CONTROL_0_REG: MACIMPLICITBROADCAST (Bitfield-Mask: 0x01) */ -#define FTDF_FTDF_RX_CONTROL_0_REG_DISRXACKRECEIVEDCA_Pos (27UL) /*!< FTDF FTDF_RX_CONTROL_0_REG: DISRXACKRECEIVEDCA (Bit 27) */ -#define FTDF_FTDF_RX_CONTROL_0_REG_DISRXACKRECEIVEDCA_Msk (0x8000000UL) /*!< FTDF FTDF_RX_CONTROL_0_REG: DISRXACKRECEIVEDCA (Bitfield-Mask: 0x01) */ - -/* --------------------------- FTDF_FTDF_RX_EVENT_REG --------------------------- */ -#define FTDF_FTDF_RX_EVENT_REG_RXSOF_E_Pos (0UL) /*!< FTDF FTDF_RX_EVENT_REG: RXSOF_E (Bit 0) */ -#define FTDF_FTDF_RX_EVENT_REG_RXSOF_E_Msk (0x1UL) /*!< FTDF FTDF_RX_EVENT_REG: RXSOF_E (Bitfield-Mask: 0x01) */ -#define FTDF_FTDF_RX_EVENT_REG_RX_OVERFLOW_E_Pos (1UL) /*!< FTDF FTDF_RX_EVENT_REG: RX_OVERFLOW_E (Bit 1) */ -#define FTDF_FTDF_RX_EVENT_REG_RX_OVERFLOW_E_Msk (0x2UL) /*!< FTDF FTDF_RX_EVENT_REG: RX_OVERFLOW_E (Bitfield-Mask: 0x01) */ -#define FTDF_FTDF_RX_EVENT_REG_RX_BUF_AVAIL_E_Pos (2UL) /*!< FTDF FTDF_RX_EVENT_REG: RX_BUF_AVAIL_E (Bit 2) */ -#define FTDF_FTDF_RX_EVENT_REG_RX_BUF_AVAIL_E_Msk (0x4UL) /*!< FTDF FTDF_RX_EVENT_REG: RX_BUF_AVAIL_E (Bitfield-Mask: 0x01) */ -#define FTDF_FTDF_RX_EVENT_REG_RXBYTE_E_Pos (3UL) /*!< FTDF FTDF_RX_EVENT_REG: RXBYTE_E (Bit 3) */ -#define FTDF_FTDF_RX_EVENT_REG_RXBYTE_E_Msk (0x8UL) /*!< FTDF FTDF_RX_EVENT_REG: RXBYTE_E (Bitfield-Mask: 0x01) */ - -/* ---------------------------- FTDF_FTDF_RX_MASK_REG --------------------------- */ -#define FTDF_FTDF_RX_MASK_REG_RXSOF_M_Pos (0UL) /*!< FTDF FTDF_RX_MASK_REG: RXSOF_M (Bit 0) */ -#define FTDF_FTDF_RX_MASK_REG_RXSOF_M_Msk (0x1UL) /*!< FTDF FTDF_RX_MASK_REG: RXSOF_M (Bitfield-Mask: 0x01) */ -#define FTDF_FTDF_RX_MASK_REG_RX_OVERFLOW_M_Pos (1UL) /*!< FTDF FTDF_RX_MASK_REG: RX_OVERFLOW_M (Bit 1) */ -#define FTDF_FTDF_RX_MASK_REG_RX_OVERFLOW_M_Msk (0x2UL) /*!< FTDF FTDF_RX_MASK_REG: RX_OVERFLOW_M (Bitfield-Mask: 0x01) */ -#define FTDF_FTDF_RX_MASK_REG_RX_BUF_AVAIL_M_Pos (2UL) /*!< FTDF FTDF_RX_MASK_REG: RX_BUF_AVAIL_M (Bit 2) */ -#define FTDF_FTDF_RX_MASK_REG_RX_BUF_AVAIL_M_Msk (0x4UL) /*!< FTDF FTDF_RX_MASK_REG: RX_BUF_AVAIL_M (Bitfield-Mask: 0x01) */ -#define FTDF_FTDF_RX_MASK_REG_RXBYTE_M_Pos (3UL) /*!< FTDF FTDF_RX_MASK_REG: RXBYTE_M (Bit 3) */ -#define FTDF_FTDF_RX_MASK_REG_RXBYTE_M_Msk (0x8UL) /*!< FTDF FTDF_RX_MASK_REG: RXBYTE_M (Bitfield-Mask: 0x01) */ - -/* --------------------------- FTDF_FTDF_RX_STATUS_REG -------------------------- */ -#define FTDF_FTDF_RX_STATUS_REG_RX_BUFF_IS_FULL_Pos (0UL) /*!< FTDF FTDF_RX_STATUS_REG: RX_BUFF_IS_FULL (Bit 0) */ -#define FTDF_FTDF_RX_STATUS_REG_RX_BUFF_IS_FULL_Msk (0x1UL) /*!< FTDF FTDF_RX_STATUS_REG: RX_BUFF_IS_FULL (Bitfield-Mask: 0x01) */ -#define FTDF_FTDF_RX_STATUS_REG_RX_WRITE_BUF_PTR_Pos (1UL) /*!< FTDF FTDF_RX_STATUS_REG: RX_WRITE_BUF_PTR (Bit 1) */ -#define FTDF_FTDF_RX_STATUS_REG_RX_WRITE_BUF_PTR_Msk (0x1eUL) /*!< FTDF FTDF_RX_STATUS_REG: RX_WRITE_BUF_PTR (Bitfield-Mask: 0x0f) */ - -/* --------------------- FTDF_FTDF_SYMBOLTIMESNAPSHOTVAL_REG -------------------- */ -#define FTDF_FTDF_SYMBOLTIMESNAPSHOTVAL_REG_SYMBOLTIMESNAPSHOTVAL_Pos (0UL) /*!< FTDF FTDF_SYMBOLTIMESNAPSHOTVAL_REG: SYMBOLTIMESNAPSHOTVAL (Bit 0) */ -#define FTDF_FTDF_SYMBOLTIMESNAPSHOTVAL_REG_SYMBOLTIMESNAPSHOTVAL_Msk (0xffffffffUL) /*!< FTDF FTDF_SYMBOLTIMESNAPSHOTVAL_REG: SYMBOLTIMESNAPSHOTVAL (Bitfield-Mask: 0xffffffff) */ - -/* ------------------------ FTDF_FTDF_RX_STATUS_DELTA_REG ----------------------- */ -#define FTDF_FTDF_RX_STATUS_DELTA_REG_RX_BUFF_IS_FULL_D_Pos (0UL) /*!< FTDF FTDF_RX_STATUS_DELTA_REG: RX_BUFF_IS_FULL_D (Bit 0) */ -#define FTDF_FTDF_RX_STATUS_DELTA_REG_RX_BUFF_IS_FULL_D_Msk (0x1UL) /*!< FTDF FTDF_RX_STATUS_DELTA_REG: RX_BUFF_IS_FULL_D (Bitfield-Mask: 0x01) */ - -/* ------------------------ FTDF_FTDF_RX_STATUS_MASK_REG ------------------------ */ -#define FTDF_FTDF_RX_STATUS_MASK_REG_RX_BUFF_IS_FULL_M_Pos (0UL) /*!< FTDF FTDF_RX_STATUS_MASK_REG: RX_BUFF_IS_FULL_M (Bit 0) */ -#define FTDF_FTDF_RX_STATUS_MASK_REG_RX_BUFF_IS_FULL_M_Msk (0x1UL) /*!< FTDF FTDF_RX_STATUS_MASK_REG: RX_BUFF_IS_FULL_M (Bitfield-Mask: 0x01) */ - -/* ------------------------- FTDF_FTDF_TX_CONTROL_0_REG ------------------------- */ -#define FTDF_FTDF_TX_CONTROL_0_REG_DBGTXTRANSPARENTMODE_Pos (0UL) /*!< FTDF FTDF_TX_CONTROL_0_REG: DBGTXTRANSPARENTMODE (Bit 0) */ -#define FTDF_FTDF_TX_CONTROL_0_REG_DBGTXTRANSPARENTMODE_Msk (0x1UL) /*!< FTDF FTDF_TX_CONTROL_0_REG: DBGTXTRANSPARENTMODE (Bitfield-Mask: 0x01) */ -#define FTDF_FTDF_TX_CONTROL_0_REG_MACMAXBE_Pos (4UL) /*!< FTDF FTDF_TX_CONTROL_0_REG: MACMAXBE (Bit 4) */ -#define FTDF_FTDF_TX_CONTROL_0_REG_MACMAXBE_Msk (0xf0UL) /*!< FTDF FTDF_TX_CONTROL_0_REG: MACMAXBE (Bitfield-Mask: 0x0f) */ -#define FTDF_FTDF_TX_CONTROL_0_REG_MACMINBE_Pos (8UL) /*!< FTDF FTDF_TX_CONTROL_0_REG: MACMINBE (Bit 8) */ -#define FTDF_FTDF_TX_CONTROL_0_REG_MACMINBE_Msk (0xf00UL) /*!< FTDF FTDF_TX_CONTROL_0_REG: MACMINBE (Bitfield-Mask: 0x0f) */ -#define FTDF_FTDF_TX_CONTROL_0_REG_MACMAXCSMABACKOFFS_Pos (12UL) /*!< FTDF FTDF_TX_CONTROL_0_REG: MACMAXCSMABACKOFFS (Bit 12) */ -#define FTDF_FTDF_TX_CONTROL_0_REG_MACMAXCSMABACKOFFS_Msk (0x7000UL) /*!< FTDF FTDF_TX_CONTROL_0_REG: MACMAXCSMABACKOFFS (Bitfield-Mask: 0x07) */ - -/* ---------------------------- FTDF_FTDF_FTDF_CE_REG --------------------------- */ -#define FTDF_FTDF_FTDF_CE_REG_FTDF_CE_Pos (0UL) /*!< FTDF FTDF_FTDF_CE_REG: FTDF_CE (Bit 0) */ -#define FTDF_FTDF_FTDF_CE_REG_FTDF_CE_Msk (0x3fUL) /*!< FTDF FTDF_FTDF_CE_REG: FTDF_CE (Bitfield-Mask: 0x3f) */ - -/* ---------------------------- FTDF_FTDF_FTDF_CM_REG --------------------------- */ -#define FTDF_FTDF_FTDF_CM_REG_FTDF_CM_Pos (0UL) /*!< FTDF FTDF_FTDF_CM_REG: FTDF_CM (Bit 0) */ -#define FTDF_FTDF_FTDF_CM_REG_FTDF_CM_Msk (0x3fUL) /*!< FTDF FTDF_FTDF_CM_REG: FTDF_CM (Bitfield-Mask: 0x3f) */ - -/* ----------------------- FTDF_FTDF_SYNCTIMESTAMPTHR_REG ----------------------- */ -#define FTDF_FTDF_SYNCTIMESTAMPTHR_REG_SYNCTIMESTAMPTHR_Pos (0UL) /*!< FTDF FTDF_SYNCTIMESTAMPTHR_REG: SYNCTIMESTAMPTHR (Bit 0) */ -#define FTDF_FTDF_SYNCTIMESTAMPTHR_REG_SYNCTIMESTAMPTHR_Msk (0x1ffffffUL) /*!< FTDF FTDF_SYNCTIMESTAMPTHR_REG: SYNCTIMESTAMPTHR (Bitfield-Mask: 0x1ffffff) */ - -/* ----------------------- FTDF_FTDF_SYNCTIMESTAMPVAL_REG ----------------------- */ -#define FTDF_FTDF_SYNCTIMESTAMPVAL_REG_SYNCTIMESTAMPVAL_Pos (0UL) /*!< FTDF FTDF_SYNCTIMESTAMPVAL_REG: SYNCTIMESTAMPVAL (Bit 0) */ -#define FTDF_FTDF_SYNCTIMESTAMPVAL_REG_SYNCTIMESTAMPVAL_Msk (0xffffffffUL) /*!< FTDF FTDF_SYNCTIMESTAMPVAL_REG: SYNCTIMESTAMPVAL (Bitfield-Mask: 0xffffffff) */ - -/* ------------------------ FTDF_FTDF_TIMER_CONTROL_1_REG ----------------------- */ -#define FTDF_FTDF_TIMER_CONTROL_1_REG_SYNCTIMESTAMPENA_Pos (1UL) /*!< FTDF FTDF_TIMER_CONTROL_1_REG: SYNCTIMESTAMPENA (Bit 1) */ -#define FTDF_FTDF_TIMER_CONTROL_1_REG_SYNCTIMESTAMPENA_Msk (0x2UL) /*!< FTDF FTDF_TIMER_CONTROL_1_REG: SYNCTIMESTAMPENA (Bitfield-Mask: 0x01) */ - -/* ----------------------- FTDF_FTDF_MACTXSTDACKFRMCNT_REG ---------------------- */ -#define FTDF_FTDF_MACTXSTDACKFRMCNT_REG_MACTXSTDACKFRMCNT_Pos (0UL) /*!< FTDF FTDF_MACTXSTDACKFRMCNT_REG: MACTXSTDACKFRMCNT (Bit 0) */ -#define FTDF_FTDF_MACTXSTDACKFRMCNT_REG_MACTXSTDACKFRMCNT_Msk (0xffffffffUL) /*!< FTDF FTDF_MACTXSTDACKFRMCNT_REG: MACTXSTDACKFRMCNT (Bitfield-Mask: 0xffffffff) */ - -/* ---------------------- FTDF_FTDF_MACRXSTDACKFRMOKCNT_REG --------------------- */ -#define FTDF_FTDF_MACRXSTDACKFRMOKCNT_REG_MACRXSTDACKFRMOKCNT_Pos (0UL) /*!< FTDF FTDF_MACRXSTDACKFRMOKCNT_REG: MACRXSTDACKFRMOKCNT (Bit 0) */ -#define FTDF_FTDF_MACRXSTDACKFRMOKCNT_REG_MACRXSTDACKFRMOKCNT_Msk (0xffffffffUL) /*!< FTDF FTDF_MACRXSTDACKFRMOKCNT_REG: MACRXSTDACKFRMOKCNT (Bitfield-Mask: 0xffffffff) */ - -/* ---------------------- FTDF_FTDF_MACRXADDRFAILFRMCNT_REG --------------------- */ -#define FTDF_FTDF_MACRXADDRFAILFRMCNT_REG_MACRXADDRFAILFRMCNT_Pos (0UL) /*!< FTDF FTDF_MACRXADDRFAILFRMCNT_REG: MACRXADDRFAILFRMCNT (Bit 0) */ -#define FTDF_FTDF_MACRXADDRFAILFRMCNT_REG_MACRXADDRFAILFRMCNT_Msk (0xffffffffUL) /*!< FTDF FTDF_MACRXADDRFAILFRMCNT_REG: MACRXADDRFAILFRMCNT (Bitfield-Mask: 0xffffffff) */ - -/* ----------------------- FTDF_FTDF_MACRXUNSUPFRMCNT_REG ----------------------- */ -#define FTDF_FTDF_MACRXUNSUPFRMCNT_REG_MACRXUNSUPFRMCNT_Pos (0UL) /*!< FTDF FTDF_MACRXUNSUPFRMCNT_REG: MACRXUNSUPFRMCNT (Bit 0) */ -#define FTDF_FTDF_MACRXUNSUPFRMCNT_REG_MACRXUNSUPFRMCNT_Msk (0xffffffffUL) /*!< FTDF FTDF_MACRXUNSUPFRMCNT_REG: MACRXUNSUPFRMCNT (Bitfield-Mask: 0xffffffff) */ - -/* --------------------- FTDF_FTDF_SYNCTIMESTAMPPHASEVAL_REG -------------------- */ -#define FTDF_FTDF_SYNCTIMESTAMPPHASEVAL_REG_SYNCTIMESTAMPPHASEVAL_Pos (0UL) /*!< FTDF FTDF_SYNCTIMESTAMPPHASEVAL_REG: SYNCTIMESTAMPPHASEVAL (Bit 0) */ -#define FTDF_FTDF_SYNCTIMESTAMPPHASEVAL_REG_SYNCTIMESTAMPPHASEVAL_Msk (0xffUL) /*!< FTDF FTDF_SYNCTIMESTAMPPHASEVAL_REG: SYNCTIMESTAMPPHASEVAL (Bitfield-Mask: 0xff) */ - -/* ----------------------- FTDF_FTDF_MACFCSERRORCOUNT_REG ----------------------- */ -#define FTDF_FTDF_MACFCSERRORCOUNT_REG_MACFCSERRORCOUNT_Pos (0UL) /*!< FTDF FTDF_MACFCSERRORCOUNT_REG: MACFCSERRORCOUNT (Bit 0) */ -#define FTDF_FTDF_MACFCSERRORCOUNT_REG_MACFCSERRORCOUNT_Msk (0xffffffffUL) /*!< FTDF FTDF_MACFCSERRORCOUNT_REG: MACFCSERRORCOUNT (Bitfield-Mask: 0xffffffff) */ - -/* --------------------------- FTDF_FTDF_LMACRESET_REG -------------------------- */ -#define FTDF_FTDF_LMACRESET_REG_LMACRESET_CONTROL_Pos (0UL) /*!< FTDF FTDF_LMACRESET_REG: LMACRESET_CONTROL (Bit 0) */ -#define FTDF_FTDF_LMACRESET_REG_LMACRESET_CONTROL_Msk (0x1UL) /*!< FTDF FTDF_LMACRESET_REG: LMACRESET_CONTROL (Bitfield-Mask: 0x01) */ -#define FTDF_FTDF_LMACRESET_REG_LMACRESET_RX_Pos (1UL) /*!< FTDF FTDF_LMACRESET_REG: LMACRESET_RX (Bit 1) */ -#define FTDF_FTDF_LMACRESET_REG_LMACRESET_RX_Msk (0x2UL) /*!< FTDF FTDF_LMACRESET_REG: LMACRESET_RX (Bitfield-Mask: 0x01) */ -#define FTDF_FTDF_LMACRESET_REG_LMACRESET_TX_Pos (2UL) /*!< FTDF FTDF_LMACRESET_REG: LMACRESET_TX (Bit 2) */ -#define FTDF_FTDF_LMACRESET_REG_LMACRESET_TX_Msk (0x4UL) /*!< FTDF FTDF_LMACRESET_REG: LMACRESET_TX (Bitfield-Mask: 0x01) */ -#define FTDF_FTDF_LMACRESET_REG_LMACRESET_AHB_Pos (3UL) /*!< FTDF FTDF_LMACRESET_REG: LMACRESET_AHB (Bit 3) */ -#define FTDF_FTDF_LMACRESET_REG_LMACRESET_AHB_Msk (0x8UL) /*!< FTDF FTDF_LMACRESET_REG: LMACRESET_AHB (Bitfield-Mask: 0x01) */ -#define FTDF_FTDF_LMACRESET_REG_LMACRESET_OREG_Pos (4UL) /*!< FTDF FTDF_LMACRESET_REG: LMACRESET_OREG (Bit 4) */ -#define FTDF_FTDF_LMACRESET_REG_LMACRESET_OREG_Msk (0x10UL) /*!< FTDF FTDF_LMACRESET_REG: LMACRESET_OREG (Bitfield-Mask: 0x01) */ -#define FTDF_FTDF_LMACRESET_REG_LMACRESET_TSTIM_Pos (6UL) /*!< FTDF FTDF_LMACRESET_REG: LMACRESET_TSTIM (Bit 6) */ -#define FTDF_FTDF_LMACRESET_REG_LMACRESET_TSTIM_Msk (0x40UL) /*!< FTDF FTDF_LMACRESET_REG: LMACRESET_TSTIM (Bitfield-Mask: 0x01) */ -#define FTDF_FTDF_LMACRESET_REG_LMACRESET_SEC_Pos (7UL) /*!< FTDF FTDF_LMACRESET_REG: LMACRESET_SEC (Bit 7) */ -#define FTDF_FTDF_LMACRESET_REG_LMACRESET_SEC_Msk (0x80UL) /*!< FTDF FTDF_LMACRESET_REG: LMACRESET_SEC (Bitfield-Mask: 0x01) */ -#define FTDF_FTDF_LMACRESET_REG_LMACRESET_COUNT_Pos (9UL) /*!< FTDF FTDF_LMACRESET_REG: LMACRESET_COUNT (Bit 9) */ -#define FTDF_FTDF_LMACRESET_REG_LMACRESET_COUNT_Msk (0x200UL) /*!< FTDF FTDF_LMACRESET_REG: LMACRESET_COUNT (Bitfield-Mask: 0x01) */ -#define FTDF_FTDF_LMACRESET_REG_LMACRESET_TIMCTRL_Pos (10UL) /*!< FTDF FTDF_LMACRESET_REG: LMACRESET_TIMCTRL (Bit 10) */ -#define FTDF_FTDF_LMACRESET_REG_LMACRESET_TIMCTRL_Msk (0x400UL) /*!< FTDF FTDF_LMACRESET_REG: LMACRESET_TIMCTRL (Bitfield-Mask: 0x01) */ -#define FTDF_FTDF_LMACRESET_REG_LMACGLOBRESET_COUNT_Pos (16UL) /*!< FTDF FTDF_LMACRESET_REG: LMACGLOBRESET_COUNT (Bit 16) */ -#define FTDF_FTDF_LMACRESET_REG_LMACGLOBRESET_COUNT_Msk (0x10000UL) /*!< FTDF FTDF_LMACRESET_REG: LMACGLOBRESET_COUNT (Bitfield-Mask: 0x01) */ - -/* ----------------------- FTDF_FTDF_WAKEUP_CONTROL_OS_REG ---------------------- */ -#define FTDF_FTDF_WAKEUP_CONTROL_OS_REG_WAKEUPTIMERENABLE_SET_Pos (0UL) /*!< FTDF FTDF_WAKEUP_CONTROL_OS_REG: WAKEUPTIMERENABLE_SET (Bit 0) */ -#define FTDF_FTDF_WAKEUP_CONTROL_OS_REG_WAKEUPTIMERENABLE_SET_Msk (0x1UL) /*!< FTDF FTDF_WAKEUP_CONTROL_OS_REG: WAKEUPTIMERENABLE_SET (Bitfield-Mask: 0x01) */ -#define FTDF_FTDF_WAKEUP_CONTROL_OS_REG_WAKEUPTIMERENABLE_CLEAR_Pos (1UL) /*!< FTDF FTDF_WAKEUP_CONTROL_OS_REG: WAKEUPTIMERENABLE_CLEAR (Bit 1) */ -#define FTDF_FTDF_WAKEUP_CONTROL_OS_REG_WAKEUPTIMERENABLE_CLEAR_Msk (0x2UL) /*!< FTDF FTDF_WAKEUP_CONTROL_OS_REG: WAKEUPTIMERENABLE_CLEAR (Bitfield-Mask: 0x01) */ - -/* ------------------------- FTDF_FTDF_SYMBOLTIMETHR_REG ------------------------ */ -#define FTDF_FTDF_SYMBOLTIMETHR_REG_SYMBOLTIMETHR_Pos (0UL) /*!< FTDF FTDF_SYMBOLTIMETHR_REG: SYMBOLTIMETHR (Bit 0) */ -#define FTDF_FTDF_SYMBOLTIMETHR_REG_SYMBOLTIMETHR_Msk (0xffffffffUL) /*!< FTDF FTDF_SYMBOLTIMETHR_REG: SYMBOLTIMETHR (Bitfield-Mask: 0xffffffff) */ - -/* ------------------------ FTDF_FTDF_SYMBOLTIME2THR_REG ------------------------ */ -#define FTDF_FTDF_SYMBOLTIME2THR_REG_SYMBOLTIME2THR_Pos (0UL) /*!< FTDF FTDF_SYMBOLTIME2THR_REG: SYMBOLTIME2THR (Bit 0) */ -#define FTDF_FTDF_SYMBOLTIME2THR_REG_SYMBOLTIME2THR_Msk (0xffffffffUL) /*!< FTDF FTDF_SYMBOLTIME2THR_REG: SYMBOLTIME2THR (Bitfield-Mask: 0xffffffff) */ - -/* ------------------------- FTDF_FTDF_DEBUGCONTROL_REG ------------------------- */ -#define FTDF_FTDF_DEBUGCONTROL_REG_DBG_RX_INPUT_Pos (8UL) /*!< FTDF FTDF_DEBUGCONTROL_REG: DBG_RX_INPUT (Bit 8) */ -#define FTDF_FTDF_DEBUGCONTROL_REG_DBG_RX_INPUT_Msk (0x100UL) /*!< FTDF FTDF_DEBUGCONTROL_REG: DBG_RX_INPUT (Bitfield-Mask: 0x01) */ - -/* --------------------------- FTDF_FTDF_TXBYTE_E_REG --------------------------- */ -#define FTDF_FTDF_TXBYTE_E_REG_TXBYTE_E_Pos (0UL) /*!< FTDF FTDF_TXBYTE_E_REG: TXBYTE_E (Bit 0) */ -#define FTDF_FTDF_TXBYTE_E_REG_TXBYTE_E_Msk (0x1UL) /*!< FTDF FTDF_TXBYTE_E_REG: TXBYTE_E (Bitfield-Mask: 0x01) */ -#define FTDF_FTDF_TXBYTE_E_REG_TX_LAST_SYMBOL_E_Pos (1UL) /*!< FTDF FTDF_TXBYTE_E_REG: TX_LAST_SYMBOL_E (Bit 1) */ -#define FTDF_FTDF_TXBYTE_E_REG_TX_LAST_SYMBOL_E_Msk (0x2UL) /*!< FTDF FTDF_TXBYTE_E_REG: TX_LAST_SYMBOL_E (Bitfield-Mask: 0x01) */ - -/* --------------------------- FTDF_FTDF_TXBYTE_M_REG --------------------------- */ -#define FTDF_FTDF_TXBYTE_M_REG_TXBYTE_M_Pos (0UL) /*!< FTDF FTDF_TXBYTE_M_REG: TXBYTE_M (Bit 0) */ -#define FTDF_FTDF_TXBYTE_M_REG_TXBYTE_M_Msk (0x1UL) /*!< FTDF FTDF_TXBYTE_M_REG: TXBYTE_M (Bitfield-Mask: 0x01) */ -#define FTDF_FTDF_TXBYTE_M_REG_TX_LAST_SYMBOL_M_Pos (1UL) /*!< FTDF FTDF_TXBYTE_M_REG: TX_LAST_SYMBOL_M (Bit 1) */ -#define FTDF_FTDF_TXBYTE_M_REG_TX_LAST_SYMBOL_M_Msk (0x2UL) /*!< FTDF FTDF_TXBYTE_M_REG: TX_LAST_SYMBOL_M (Bitfield-Mask: 0x01) */ - -/* -------------------------- FTDF_FTDF_TX_FLAG_S_0_REG ------------------------- */ -#define FTDF_FTDF_TX_FLAG_S_0_REG_TX_FLAG_STAT_Pos (0UL) /*!< FTDF FTDF_TX_FLAG_S_0_REG: TX_FLAG_STAT (Bit 0) */ -#define FTDF_FTDF_TX_FLAG_S_0_REG_TX_FLAG_STAT_Msk (0x1UL) /*!< FTDF FTDF_TX_FLAG_S_0_REG: TX_FLAG_STAT (Bitfield-Mask: 0x01) */ - -/* ----------------------- FTDF_FTDF_TX_FLAG_CLEAR_E_0_REG ---------------------- */ -#define FTDF_FTDF_TX_FLAG_CLEAR_E_0_REG_TX_FLAG_CLEAR_E_Pos (0UL) /*!< FTDF FTDF_TX_FLAG_CLEAR_E_0_REG: TX_FLAG_CLEAR_E (Bit 0) */ -#define FTDF_FTDF_TX_FLAG_CLEAR_E_0_REG_TX_FLAG_CLEAR_E_Msk (0x1UL) /*!< FTDF FTDF_TX_FLAG_CLEAR_E_0_REG: TX_FLAG_CLEAR_E (Bitfield-Mask: 0x01) */ - -/* ----------------------- FTDF_FTDF_TX_FLAG_CLEAR_M_0_REG ---------------------- */ -#define FTDF_FTDF_TX_FLAG_CLEAR_M_0_REG_TX_FLAG_CLEAR_M_Pos (0UL) /*!< FTDF FTDF_TX_FLAG_CLEAR_M_0_REG: TX_FLAG_CLEAR_M (Bit 0) */ -#define FTDF_FTDF_TX_FLAG_CLEAR_M_0_REG_TX_FLAG_CLEAR_M_Msk (0x1UL) /*!< FTDF FTDF_TX_FLAG_CLEAR_M_0_REG: TX_FLAG_CLEAR_M (Bitfield-Mask: 0x01) */ - -/* ------------------------- FTDF_FTDF_TX_PRIORITY_0_REG ------------------------ */ -#define FTDF_FTDF_TX_PRIORITY_0_REG_TX_PRIORITY_Pos (0UL) /*!< FTDF FTDF_TX_PRIORITY_0_REG: TX_PRIORITY (Bit 0) */ -#define FTDF_FTDF_TX_PRIORITY_0_REG_TX_PRIORITY_Msk (0xfUL) /*!< FTDF FTDF_TX_PRIORITY_0_REG: TX_PRIORITY (Bitfield-Mask: 0x0f) */ -#define FTDF_FTDF_TX_PRIORITY_0_REG_ISWAKEUP_Pos (4UL) /*!< FTDF FTDF_TX_PRIORITY_0_REG: ISWAKEUP (Bit 4) */ -#define FTDF_FTDF_TX_PRIORITY_0_REG_ISWAKEUP_Msk (0x10UL) /*!< FTDF FTDF_TX_PRIORITY_0_REG: ISWAKEUP (Bitfield-Mask: 0x01) */ -#define FTDF_FTDF_TX_PRIORITY_0_REG_PTI_TX_Pos (8UL) /*!< FTDF FTDF_TX_PRIORITY_0_REG: PTI_TX (Bit 8) */ -#define FTDF_FTDF_TX_PRIORITY_0_REG_PTI_TX_Msk (0xf00UL) /*!< FTDF FTDF_TX_PRIORITY_0_REG: PTI_TX (Bitfield-Mask: 0x0f) */ - -/* -------------------------- FTDF_FTDF_TX_FLAG_S_1_REG ------------------------- */ -#define FTDF_FTDF_TX_FLAG_S_1_REG_TX_FLAG_STAT_Pos (0UL) /*!< FTDF FTDF_TX_FLAG_S_1_REG: TX_FLAG_STAT (Bit 0) */ -#define FTDF_FTDF_TX_FLAG_S_1_REG_TX_FLAG_STAT_Msk (0x1UL) /*!< FTDF FTDF_TX_FLAG_S_1_REG: TX_FLAG_STAT (Bitfield-Mask: 0x01) */ - -/* ----------------------- FTDF_FTDF_TX_FLAG_CLEAR_E_1_REG ---------------------- */ -#define FTDF_FTDF_TX_FLAG_CLEAR_E_1_REG_TX_FLAG_CLEAR_E_Pos (0UL) /*!< FTDF FTDF_TX_FLAG_CLEAR_E_1_REG: TX_FLAG_CLEAR_E (Bit 0) */ -#define FTDF_FTDF_TX_FLAG_CLEAR_E_1_REG_TX_FLAG_CLEAR_E_Msk (0x1UL) /*!< FTDF FTDF_TX_FLAG_CLEAR_E_1_REG: TX_FLAG_CLEAR_E (Bitfield-Mask: 0x01) */ - -/* ----------------------- FTDF_FTDF_TX_FLAG_CLEAR_M_1_REG ---------------------- */ -#define FTDF_FTDF_TX_FLAG_CLEAR_M_1_REG_TX_FLAG_CLEAR_M_Pos (0UL) /*!< FTDF FTDF_TX_FLAG_CLEAR_M_1_REG: TX_FLAG_CLEAR_M (Bit 0) */ -#define FTDF_FTDF_TX_FLAG_CLEAR_M_1_REG_TX_FLAG_CLEAR_M_Msk (0x1UL) /*!< FTDF FTDF_TX_FLAG_CLEAR_M_1_REG: TX_FLAG_CLEAR_M (Bitfield-Mask: 0x01) */ - -/* ------------------------- FTDF_FTDF_TX_PRIORITY_1_REG ------------------------ */ -#define FTDF_FTDF_TX_PRIORITY_1_REG_TX_PRIORITY_Pos (0UL) /*!< FTDF FTDF_TX_PRIORITY_1_REG: TX_PRIORITY (Bit 0) */ -#define FTDF_FTDF_TX_PRIORITY_1_REG_TX_PRIORITY_Msk (0xfUL) /*!< FTDF FTDF_TX_PRIORITY_1_REG: TX_PRIORITY (Bitfield-Mask: 0x0f) */ -#define FTDF_FTDF_TX_PRIORITY_1_REG_ISWAKEUP_Pos (4UL) /*!< FTDF FTDF_TX_PRIORITY_1_REG: ISWAKEUP (Bit 4) */ -#define FTDF_FTDF_TX_PRIORITY_1_REG_ISWAKEUP_Msk (0x10UL) /*!< FTDF FTDF_TX_PRIORITY_1_REG: ISWAKEUP (Bitfield-Mask: 0x01) */ -#define FTDF_FTDF_TX_PRIORITY_1_REG_PTI_TX_Pos (8UL) /*!< FTDF FTDF_TX_PRIORITY_1_REG: PTI_TX (Bit 8) */ -#define FTDF_FTDF_TX_PRIORITY_1_REG_PTI_TX_Msk (0xf00UL) /*!< FTDF FTDF_TX_PRIORITY_1_REG: PTI_TX (Bitfield-Mask: 0x0f) */ - -/* -------------------------- FTDF_FTDF_TX_FLAG_S_2_REG ------------------------- */ -#define FTDF_FTDF_TX_FLAG_S_2_REG_TX_FLAG_STAT_Pos (0UL) /*!< FTDF FTDF_TX_FLAG_S_2_REG: TX_FLAG_STAT (Bit 0) */ -#define FTDF_FTDF_TX_FLAG_S_2_REG_TX_FLAG_STAT_Msk (0x1UL) /*!< FTDF FTDF_TX_FLAG_S_2_REG: TX_FLAG_STAT (Bitfield-Mask: 0x01) */ - -/* ----------------------- FTDF_FTDF_TX_FLAG_CLEAR_E_2_REG ---------------------- */ -#define FTDF_FTDF_TX_FLAG_CLEAR_E_2_REG_TX_FLAG_CLEAR_E_Pos (0UL) /*!< FTDF FTDF_TX_FLAG_CLEAR_E_2_REG: TX_FLAG_CLEAR_E (Bit 0) */ -#define FTDF_FTDF_TX_FLAG_CLEAR_E_2_REG_TX_FLAG_CLEAR_E_Msk (0x1UL) /*!< FTDF FTDF_TX_FLAG_CLEAR_E_2_REG: TX_FLAG_CLEAR_E (Bitfield-Mask: 0x01) */ - -/* ----------------------- FTDF_FTDF_TX_FLAG_CLEAR_M_2_REG ---------------------- */ -#define FTDF_FTDF_TX_FLAG_CLEAR_M_2_REG_TX_FLAG_CLEAR_M_Pos (0UL) /*!< FTDF FTDF_TX_FLAG_CLEAR_M_2_REG: TX_FLAG_CLEAR_M (Bit 0) */ -#define FTDF_FTDF_TX_FLAG_CLEAR_M_2_REG_TX_FLAG_CLEAR_M_Msk (0x1UL) /*!< FTDF FTDF_TX_FLAG_CLEAR_M_2_REG: TX_FLAG_CLEAR_M (Bitfield-Mask: 0x01) */ - -/* ------------------------- FTDF_FTDF_TX_PRIORITY_2_REG ------------------------ */ -#define FTDF_FTDF_TX_PRIORITY_2_REG_TX_PRIORITY_Pos (0UL) /*!< FTDF FTDF_TX_PRIORITY_2_REG: TX_PRIORITY (Bit 0) */ -#define FTDF_FTDF_TX_PRIORITY_2_REG_TX_PRIORITY_Msk (0xfUL) /*!< FTDF FTDF_TX_PRIORITY_2_REG: TX_PRIORITY (Bitfield-Mask: 0x0f) */ -#define FTDF_FTDF_TX_PRIORITY_2_REG_ISWAKEUP_Pos (4UL) /*!< FTDF FTDF_TX_PRIORITY_2_REG: ISWAKEUP (Bit 4) */ -#define FTDF_FTDF_TX_PRIORITY_2_REG_ISWAKEUP_Msk (0x10UL) /*!< FTDF FTDF_TX_PRIORITY_2_REG: ISWAKEUP (Bitfield-Mask: 0x01) */ -#define FTDF_FTDF_TX_PRIORITY_2_REG_PTI_TX_Pos (8UL) /*!< FTDF FTDF_TX_PRIORITY_2_REG: PTI_TX (Bit 8) */ -#define FTDF_FTDF_TX_PRIORITY_2_REG_PTI_TX_Msk (0xf00UL) /*!< FTDF FTDF_TX_PRIORITY_2_REG: PTI_TX (Bitfield-Mask: 0x0f) */ - -/* -------------------------- FTDF_FTDF_TX_FLAG_S_3_REG ------------------------- */ -#define FTDF_FTDF_TX_FLAG_S_3_REG_TX_FLAG_STAT_Pos (0UL) /*!< FTDF FTDF_TX_FLAG_S_3_REG: TX_FLAG_STAT (Bit 0) */ -#define FTDF_FTDF_TX_FLAG_S_3_REG_TX_FLAG_STAT_Msk (0x1UL) /*!< FTDF FTDF_TX_FLAG_S_3_REG: TX_FLAG_STAT (Bitfield-Mask: 0x01) */ - -/* ----------------------- FTDF_FTDF_TX_FLAG_CLEAR_E_3_REG ---------------------- */ -#define FTDF_FTDF_TX_FLAG_CLEAR_E_3_REG_TX_FLAG_CLEAR_E_Pos (0UL) /*!< FTDF FTDF_TX_FLAG_CLEAR_E_3_REG: TX_FLAG_CLEAR_E (Bit 0) */ -#define FTDF_FTDF_TX_FLAG_CLEAR_E_3_REG_TX_FLAG_CLEAR_E_Msk (0x1UL) /*!< FTDF FTDF_TX_FLAG_CLEAR_E_3_REG: TX_FLAG_CLEAR_E (Bitfield-Mask: 0x01) */ - -/* ----------------------- FTDF_FTDF_TX_FLAG_CLEAR_M_3_REG ---------------------- */ -#define FTDF_FTDF_TX_FLAG_CLEAR_M_3_REG_TX_FLAG_CLEAR_M_Pos (0UL) /*!< FTDF FTDF_TX_FLAG_CLEAR_M_3_REG: TX_FLAG_CLEAR_M (Bit 0) */ -#define FTDF_FTDF_TX_FLAG_CLEAR_M_3_REG_TX_FLAG_CLEAR_M_Msk (0x1UL) /*!< FTDF FTDF_TX_FLAG_CLEAR_M_3_REG: TX_FLAG_CLEAR_M (Bitfield-Mask: 0x01) */ - -/* ------------------------- FTDF_FTDF_TX_PRIORITY_3_REG ------------------------ */ -#define FTDF_FTDF_TX_PRIORITY_3_REG_TX_PRIORITY_Pos (0UL) /*!< FTDF FTDF_TX_PRIORITY_3_REG: TX_PRIORITY (Bit 0) */ -#define FTDF_FTDF_TX_PRIORITY_3_REG_TX_PRIORITY_Msk (0xfUL) /*!< FTDF FTDF_TX_PRIORITY_3_REG: TX_PRIORITY (Bitfield-Mask: 0x0f) */ -#define FTDF_FTDF_TX_PRIORITY_3_REG_ISWAKEUP_Pos (4UL) /*!< FTDF FTDF_TX_PRIORITY_3_REG: ISWAKEUP (Bit 4) */ -#define FTDF_FTDF_TX_PRIORITY_3_REG_ISWAKEUP_Msk (0x10UL) /*!< FTDF FTDF_TX_PRIORITY_3_REG: ISWAKEUP (Bitfield-Mask: 0x01) */ -#define FTDF_FTDF_TX_PRIORITY_3_REG_PTI_TX_Pos (8UL) /*!< FTDF FTDF_TX_PRIORITY_3_REG: PTI_TX (Bit 8) */ -#define FTDF_FTDF_TX_PRIORITY_3_REG_PTI_TX_Msk (0xf00UL) /*!< FTDF FTDF_TX_PRIORITY_3_REG: PTI_TX (Bitfield-Mask: 0x0f) */ - -/* --------------------------- FTDF_FTDF_TX_SET_OS_REG -------------------------- */ -#define FTDF_FTDF_TX_SET_OS_REG_TX_FLAG_SET_Pos (0UL) /*!< FTDF FTDF_TX_SET_OS_REG: TX_FLAG_SET (Bit 0) */ -#define FTDF_FTDF_TX_SET_OS_REG_TX_FLAG_SET_Msk (0xfUL) /*!< FTDF FTDF_TX_SET_OS_REG: TX_FLAG_SET (Bitfield-Mask: 0x0f) */ - -/* -------------------------- FTDF_FTDF_TX_CLEAR_OS_REG ------------------------- */ -#define FTDF_FTDF_TX_CLEAR_OS_REG_TX_FLAG_CLEAR_Pos (0UL) /*!< FTDF FTDF_TX_CLEAR_OS_REG: TX_FLAG_CLEAR (Bit 0) */ -#define FTDF_FTDF_TX_CLEAR_OS_REG_TX_FLAG_CLEAR_Msk (0xfUL) /*!< FTDF FTDF_TX_CLEAR_OS_REG: TX_FLAG_CLEAR (Bitfield-Mask: 0x0f) */ - -/* ------------------------ FTDF_FTDF_WAKEUP_CONTROL_REG ------------------------ */ -#define FTDF_FTDF_WAKEUP_CONTROL_REG_WAKEUPINTTHR_Pos (0UL) /*!< FTDF FTDF_WAKEUP_CONTROL_REG: WAKEUPINTTHR (Bit 0) */ -#define FTDF_FTDF_WAKEUP_CONTROL_REG_WAKEUPINTTHR_Msk (0x1ffffffUL) /*!< FTDF FTDF_WAKEUP_CONTROL_REG: WAKEUPINTTHR (Bitfield-Mask: 0x1ffffff) */ -#define FTDF_FTDF_WAKEUP_CONTROL_REG_WAKEUPENABLE_Pos (29UL) /*!< FTDF FTDF_WAKEUP_CONTROL_REG: WAKEUPENABLE (Bit 29) */ -#define FTDF_FTDF_WAKEUP_CONTROL_REG_WAKEUPENABLE_Msk (0x20000000UL) /*!< FTDF FTDF_WAKEUP_CONTROL_REG: WAKEUPENABLE (Bitfield-Mask: 0x01) */ -#define FTDF_FTDF_WAKEUP_CONTROL_REG_WAKEUP_MODE_Pos (30UL) /*!< FTDF FTDF_WAKEUP_CONTROL_REG: WAKEUP_MODE (Bit 30) */ -#define FTDF_FTDF_WAKEUP_CONTROL_REG_WAKEUP_MODE_Msk (0xc0000000UL) /*!< FTDF FTDF_WAKEUP_CONTROL_REG: WAKEUP_MODE (Bitfield-Mask: 0x03) */ - -/* ------------------------- FTDF_FTDF_LONG_ADDR_0_0_REG ------------------------ */ -#define FTDF_FTDF_LONG_ADDR_0_0_REG_EXP_SA_L_Pos (0UL) /*!< FTDF FTDF_LONG_ADDR_0_0_REG: EXP_SA_L (Bit 0) */ -#define FTDF_FTDF_LONG_ADDR_0_0_REG_EXP_SA_L_Msk (0xffffffffUL) /*!< FTDF FTDF_LONG_ADDR_0_0_REG: EXP_SA_L (Bitfield-Mask: 0xffffffff) */ - -/* ------------------------- FTDF_FTDF_LONG_ADDR_1_0_REG ------------------------ */ -#define FTDF_FTDF_LONG_ADDR_1_0_REG_EXP_SA_H_Pos (0UL) /*!< FTDF FTDF_LONG_ADDR_1_0_REG: EXP_SA_H (Bit 0) */ -#define FTDF_FTDF_LONG_ADDR_1_0_REG_EXP_SA_H_Msk (0xffffffffUL) /*!< FTDF FTDF_LONG_ADDR_1_0_REG: EXP_SA_H (Bitfield-Mask: 0xffffffff) */ - -/* ------------------------ FTDF_FTDF_SIZE_AND_VAL_0_REG ------------------------ */ -#define FTDF_FTDF_SIZE_AND_VAL_0_REG_VALID_SA_Pos (0UL) /*!< FTDF FTDF_SIZE_AND_VAL_0_REG: VALID_SA (Bit 0) */ -#define FTDF_FTDF_SIZE_AND_VAL_0_REG_VALID_SA_Msk (0xfUL) /*!< FTDF FTDF_SIZE_AND_VAL_0_REG: VALID_SA (Bitfield-Mask: 0x0f) */ -#define FTDF_FTDF_SIZE_AND_VAL_0_REG_SHORT_LONGNOT_Pos (4UL) /*!< FTDF FTDF_SIZE_AND_VAL_0_REG: SHORT_LONGNOT (Bit 4) */ -#define FTDF_FTDF_SIZE_AND_VAL_0_REG_SHORT_LONGNOT_Msk (0x10UL) /*!< FTDF FTDF_SIZE_AND_VAL_0_REG: SHORT_LONGNOT (Bitfield-Mask: 0x01) */ - - -/* ================================================================================ */ -/* ================ struct 'GP_TIMERS' Position & Mask ================ */ -/* ================================================================================ */ - - -/* -------------------------- GP_TIMERS_TIMER0_CTRL_REG ------------------------- */ -#define GP_TIMERS_TIMER0_CTRL_REG_TIM0_CTRL_Pos (0UL) /*!< GP_TIMERS TIMER0_CTRL_REG: TIM0_CTRL (Bit 0) */ -#define GP_TIMERS_TIMER0_CTRL_REG_TIM0_CTRL_Msk (0x1UL) /*!< GP_TIMERS TIMER0_CTRL_REG: TIM0_CTRL (Bitfield-Mask: 0x01) */ -#define GP_TIMERS_TIMER0_CTRL_REG_TIM0_CLK_SEL_Pos (1UL) /*!< GP_TIMERS TIMER0_CTRL_REG: TIM0_CLK_SEL (Bit 1) */ -#define GP_TIMERS_TIMER0_CTRL_REG_TIM0_CLK_SEL_Msk (0x2UL) /*!< GP_TIMERS TIMER0_CTRL_REG: TIM0_CLK_SEL (Bitfield-Mask: 0x01) */ -#define GP_TIMERS_TIMER0_CTRL_REG_TIM0_CLK_DIV_Pos (2UL) /*!< GP_TIMERS TIMER0_CTRL_REG: TIM0_CLK_DIV (Bit 2) */ -#define GP_TIMERS_TIMER0_CTRL_REG_TIM0_CLK_DIV_Msk (0x4UL) /*!< GP_TIMERS TIMER0_CTRL_REG: TIM0_CLK_DIV (Bitfield-Mask: 0x01) */ -#define GP_TIMERS_TIMER0_CTRL_REG_PWM_MODE_Pos (3UL) /*!< GP_TIMERS TIMER0_CTRL_REG: PWM_MODE (Bit 3) */ -#define GP_TIMERS_TIMER0_CTRL_REG_PWM_MODE_Msk (0x8UL) /*!< GP_TIMERS TIMER0_CTRL_REG: PWM_MODE (Bitfield-Mask: 0x01) */ - -/* --------------------------- GP_TIMERS_TIMER0_ON_REG -------------------------- */ -#define GP_TIMERS_TIMER0_ON_REG_TIM0_ON_Pos (0UL) /*!< GP_TIMERS TIMER0_ON_REG: TIM0_ON (Bit 0) */ -#define GP_TIMERS_TIMER0_ON_REG_TIM0_ON_Msk (0xffffUL) /*!< GP_TIMERS TIMER0_ON_REG: TIM0_ON (Bitfield-Mask: 0xffff) */ - -/* ------------------------ GP_TIMERS_TIMER0_RELOAD_M_REG ----------------------- */ -#define GP_TIMERS_TIMER0_RELOAD_M_REG_TIM0_M_Pos (0UL) /*!< GP_TIMERS TIMER0_RELOAD_M_REG: TIM0_M (Bit 0) */ -#define GP_TIMERS_TIMER0_RELOAD_M_REG_TIM0_M_Msk (0xffffUL) /*!< GP_TIMERS TIMER0_RELOAD_M_REG: TIM0_M (Bitfield-Mask: 0xffff) */ - -/* ------------------------ GP_TIMERS_TIMER0_RELOAD_N_REG ----------------------- */ -#define GP_TIMERS_TIMER0_RELOAD_N_REG_TIM0_N_Pos (0UL) /*!< GP_TIMERS TIMER0_RELOAD_N_REG: TIM0_N (Bit 0) */ -#define GP_TIMERS_TIMER0_RELOAD_N_REG_TIM0_N_Msk (0xffffUL) /*!< GP_TIMERS TIMER0_RELOAD_N_REG: TIM0_N (Bitfield-Mask: 0xffff) */ - -/* ------------------------- GP_TIMERS_PWM2_START_CYCLE ------------------------- */ -#define GP_TIMERS_PWM2_START_CYCLE_START_CYCLE_Pos (0UL) /*!< GP_TIMERS PWM2_START_CYCLE: START_CYCLE (Bit 0) */ -#define GP_TIMERS_PWM2_START_CYCLE_START_CYCLE_Msk (0x3fffUL) /*!< GP_TIMERS PWM2_START_CYCLE: START_CYCLE (Bitfield-Mask: 0x3fff) */ - -/* ------------------------- GP_TIMERS_PWM3_START_CYCLE ------------------------- */ -#define GP_TIMERS_PWM3_START_CYCLE_START_CYCLE_Pos (0UL) /*!< GP_TIMERS PWM3_START_CYCLE: START_CYCLE (Bit 0) */ -#define GP_TIMERS_PWM3_START_CYCLE_START_CYCLE_Msk (0x3fffUL) /*!< GP_TIMERS PWM3_START_CYCLE: START_CYCLE (Bitfield-Mask: 0x3fff) */ - -/* ------------------------- GP_TIMERS_PWM4_START_CYCLE ------------------------- */ -#define GP_TIMERS_PWM4_START_CYCLE_START_CYCLE_Pos (0UL) /*!< GP_TIMERS PWM4_START_CYCLE: START_CYCLE (Bit 0) */ -#define GP_TIMERS_PWM4_START_CYCLE_START_CYCLE_Msk (0x3fffUL) /*!< GP_TIMERS PWM4_START_CYCLE: START_CYCLE (Bitfield-Mask: 0x3fff) */ - -/* -------------------------- GP_TIMERS_PWM2_END_CYCLE -------------------------- */ -#define GP_TIMERS_PWM2_END_CYCLE_END_CYCLE_Pos (0UL) /*!< GP_TIMERS PWM2_END_CYCLE: END_CYCLE (Bit 0) */ -#define GP_TIMERS_PWM2_END_CYCLE_END_CYCLE_Msk (0x3fffUL) /*!< GP_TIMERS PWM2_END_CYCLE: END_CYCLE (Bitfield-Mask: 0x3fff) */ - -/* -------------------------- GP_TIMERS_PWM3_END_CYCLE -------------------------- */ -#define GP_TIMERS_PWM3_END_CYCLE_END_CYCLE_Pos (0UL) /*!< GP_TIMERS PWM3_END_CYCLE: END_CYCLE (Bit 0) */ -#define GP_TIMERS_PWM3_END_CYCLE_END_CYCLE_Msk (0x3fffUL) /*!< GP_TIMERS PWM3_END_CYCLE: END_CYCLE (Bitfield-Mask: 0x3fff) */ - -/* -------------------------- GP_TIMERS_PWM4_END_CYCLE -------------------------- */ -#define GP_TIMERS_PWM4_END_CYCLE_END_CYCLE_Pos (0UL) /*!< GP_TIMERS PWM4_END_CYCLE: END_CYCLE (Bit 0) */ -#define GP_TIMERS_PWM4_END_CYCLE_END_CYCLE_Msk (0x3fffUL) /*!< GP_TIMERS PWM4_END_CYCLE: END_CYCLE (Bitfield-Mask: 0x3fff) */ - -/* ----------------------- GP_TIMERS_TRIPLE_PWM_FREQUENCY ----------------------- */ -#define GP_TIMERS_TRIPLE_PWM_FREQUENCY_FREQ_Pos (0UL) /*!< GP_TIMERS TRIPLE_PWM_FREQUENCY: FREQ (Bit 0) */ -#define GP_TIMERS_TRIPLE_PWM_FREQUENCY_FREQ_Msk (0x3fffUL) /*!< GP_TIMERS TRIPLE_PWM_FREQUENCY: FREQ (Bitfield-Mask: 0x3fff) */ - -/* ------------------------ GP_TIMERS_TRIPLE_PWM_CTRL_REG ----------------------- */ -#define GP_TIMERS_TRIPLE_PWM_CTRL_REG_TRIPLE_PWM_ENABLE_Pos (0UL) /*!< GP_TIMERS TRIPLE_PWM_CTRL_REG: TRIPLE_PWM_ENABLE (Bit 0) */ -#define GP_TIMERS_TRIPLE_PWM_CTRL_REG_TRIPLE_PWM_ENABLE_Msk (0x1UL) /*!< GP_TIMERS TRIPLE_PWM_CTRL_REG: TRIPLE_PWM_ENABLE (Bitfield-Mask: 0x01) */ -#define GP_TIMERS_TRIPLE_PWM_CTRL_REG_SW_PAUSE_EN_Pos (1UL) /*!< GP_TIMERS TRIPLE_PWM_CTRL_REG: SW_PAUSE_EN (Bit 1) */ -#define GP_TIMERS_TRIPLE_PWM_CTRL_REG_SW_PAUSE_EN_Msk (0x2UL) /*!< GP_TIMERS TRIPLE_PWM_CTRL_REG: SW_PAUSE_EN (Bitfield-Mask: 0x01) */ -#define GP_TIMERS_TRIPLE_PWM_CTRL_REG_HW_PAUSE_EN_Pos (2UL) /*!< GP_TIMERS TRIPLE_PWM_CTRL_REG: HW_PAUSE_EN (Bit 2) */ -#define GP_TIMERS_TRIPLE_PWM_CTRL_REG_HW_PAUSE_EN_Msk (0x4UL) /*!< GP_TIMERS TRIPLE_PWM_CTRL_REG: HW_PAUSE_EN (Bitfield-Mask: 0x01) */ -#define GP_TIMERS_TRIPLE_PWM_CTRL_REG_TRIPLE_PWM_CLK_SEL_Pos (3UL) /*!< GP_TIMERS TRIPLE_PWM_CTRL_REG: TRIPLE_PWM_CLK_SEL (Bit 3) */ -#define GP_TIMERS_TRIPLE_PWM_CTRL_REG_TRIPLE_PWM_CLK_SEL_Msk (0x8UL) /*!< GP_TIMERS TRIPLE_PWM_CTRL_REG: TRIPLE_PWM_CLK_SEL (Bitfield-Mask: 0x01) */ - -/* -------------------------- GP_TIMERS_BREATH_CFG_REG -------------------------- */ -#define GP_TIMERS_BREATH_CFG_REG_BRTH_DIV_Pos (0UL) /*!< GP_TIMERS BREATH_CFG_REG: BRTH_DIV (Bit 0) */ -#define GP_TIMERS_BREATH_CFG_REG_BRTH_DIV_Msk (0xffUL) /*!< GP_TIMERS BREATH_CFG_REG: BRTH_DIV (Bitfield-Mask: 0xff) */ -#define GP_TIMERS_BREATH_CFG_REG_BRTH_STEP_Pos (8UL) /*!< GP_TIMERS BREATH_CFG_REG: BRTH_STEP (Bit 8) */ -#define GP_TIMERS_BREATH_CFG_REG_BRTH_STEP_Msk (0xff00UL) /*!< GP_TIMERS BREATH_CFG_REG: BRTH_STEP (Bitfield-Mask: 0xff) */ - -/* ------------------------ GP_TIMERS_BREATH_DUTY_MAX_REG ----------------------- */ -#define GP_TIMERS_BREATH_DUTY_MAX_REG_BRTH_DUTY_MAX_Pos (0UL) /*!< GP_TIMERS BREATH_DUTY_MAX_REG: BRTH_DUTY_MAX (Bit 0) */ -#define GP_TIMERS_BREATH_DUTY_MAX_REG_BRTH_DUTY_MAX_Msk (0xffUL) /*!< GP_TIMERS BREATH_DUTY_MAX_REG: BRTH_DUTY_MAX (Bitfield-Mask: 0xff) */ - -/* ------------------------ GP_TIMERS_BREATH_DUTY_MIN_REG ----------------------- */ -#define GP_TIMERS_BREATH_DUTY_MIN_REG_BRTH_DUTY_MIN_Pos (0UL) /*!< GP_TIMERS BREATH_DUTY_MIN_REG: BRTH_DUTY_MIN (Bit 0) */ -#define GP_TIMERS_BREATH_DUTY_MIN_REG_BRTH_DUTY_MIN_Msk (0xffUL) /*!< GP_TIMERS BREATH_DUTY_MIN_REG: BRTH_DUTY_MIN (Bitfield-Mask: 0xff) */ - -/* -------------------------- GP_TIMERS_BREATH_CTRL_REG ------------------------- */ -#define GP_TIMERS_BREATH_CTRL_REG_BRTH_EN_Pos (0UL) /*!< GP_TIMERS BREATH_CTRL_REG: BRTH_EN (Bit 0) */ -#define GP_TIMERS_BREATH_CTRL_REG_BRTH_EN_Msk (0x1UL) /*!< GP_TIMERS BREATH_CTRL_REG: BRTH_EN (Bitfield-Mask: 0x01) */ -#define GP_TIMERS_BREATH_CTRL_REG_BRTH_PWM_POL_Pos (1UL) /*!< GP_TIMERS BREATH_CTRL_REG: BRTH_PWM_POL (Bit 1) */ -#define GP_TIMERS_BREATH_CTRL_REG_BRTH_PWM_POL_Msk (0x2UL) /*!< GP_TIMERS BREATH_CTRL_REG: BRTH_PWM_POL (Bitfield-Mask: 0x01) */ - - -/* ================================================================================ */ -/* ================ struct 'GPADC' Position & Mask ================ */ -/* ================================================================================ */ - - -/* ---------------------------- GPADC_GP_ADC_CTRL_REG --------------------------- */ -#define GPADC_GP_ADC_CTRL_REG_GP_ADC_EN_Pos (0UL) /*!< GPADC GP_ADC_CTRL_REG: GP_ADC_EN (Bit 0) */ -#define GPADC_GP_ADC_CTRL_REG_GP_ADC_EN_Msk (0x1UL) /*!< GPADC GP_ADC_CTRL_REG: GP_ADC_EN (Bitfield-Mask: 0x01) */ -#define GPADC_GP_ADC_CTRL_REG_GP_ADC_START_Pos (1UL) /*!< GPADC GP_ADC_CTRL_REG: GP_ADC_START (Bit 1) */ -#define GPADC_GP_ADC_CTRL_REG_GP_ADC_START_Msk (0x2UL) /*!< GPADC GP_ADC_CTRL_REG: GP_ADC_START (Bitfield-Mask: 0x01) */ -#define GPADC_GP_ADC_CTRL_REG_GP_ADC_CONT_Pos (2UL) /*!< GPADC GP_ADC_CTRL_REG: GP_ADC_CONT (Bit 2) */ -#define GPADC_GP_ADC_CTRL_REG_GP_ADC_CONT_Msk (0x4UL) /*!< GPADC GP_ADC_CTRL_REG: GP_ADC_CONT (Bitfield-Mask: 0x01) */ -#define GPADC_GP_ADC_CTRL_REG_GP_ADC_CLK_SEL_Pos (3UL) /*!< GPADC GP_ADC_CTRL_REG: GP_ADC_CLK_SEL (Bit 3) */ -#define GPADC_GP_ADC_CTRL_REG_GP_ADC_CLK_SEL_Msk (0x8UL) /*!< GPADC GP_ADC_CTRL_REG: GP_ADC_CLK_SEL (Bitfield-Mask: 0x01) */ -#define GPADC_GP_ADC_CTRL_REG_GP_ADC_INT_Pos (4UL) /*!< GPADC GP_ADC_CTRL_REG: GP_ADC_INT (Bit 4) */ -#define GPADC_GP_ADC_CTRL_REG_GP_ADC_INT_Msk (0x10UL) /*!< GPADC GP_ADC_CTRL_REG: GP_ADC_INT (Bitfield-Mask: 0x01) */ -#define GPADC_GP_ADC_CTRL_REG_GP_ADC_MINT_Pos (5UL) /*!< GPADC GP_ADC_CTRL_REG: GP_ADC_MINT (Bit 5) */ -#define GPADC_GP_ADC_CTRL_REG_GP_ADC_MINT_Msk (0x20UL) /*!< GPADC GP_ADC_CTRL_REG: GP_ADC_MINT (Bitfield-Mask: 0x01) */ -#define GPADC_GP_ADC_CTRL_REG_GP_ADC_SE_Pos (6UL) /*!< GPADC GP_ADC_CTRL_REG: GP_ADC_SE (Bit 6) */ -#define GPADC_GP_ADC_CTRL_REG_GP_ADC_SE_Msk (0x40UL) /*!< GPADC GP_ADC_CTRL_REG: GP_ADC_SE (Bitfield-Mask: 0x01) */ -#define GPADC_GP_ADC_CTRL_REG_GP_ADC_MUTE_Pos (7UL) /*!< GPADC GP_ADC_CTRL_REG: GP_ADC_MUTE (Bit 7) */ -#define GPADC_GP_ADC_CTRL_REG_GP_ADC_MUTE_Msk (0x80UL) /*!< GPADC GP_ADC_CTRL_REG: GP_ADC_MUTE (Bitfield-Mask: 0x01) */ -#define GPADC_GP_ADC_CTRL_REG_GP_ADC_SEL_Pos (8UL) /*!< GPADC GP_ADC_CTRL_REG: GP_ADC_SEL (Bit 8) */ -#define GPADC_GP_ADC_CTRL_REG_GP_ADC_SEL_Msk (0x1f00UL) /*!< GPADC GP_ADC_CTRL_REG: GP_ADC_SEL (Bitfield-Mask: 0x1f) */ -#define GPADC_GP_ADC_CTRL_REG_GP_ADC_SIGN_Pos (13UL) /*!< GPADC GP_ADC_CTRL_REG: GP_ADC_SIGN (Bit 13) */ -#define GPADC_GP_ADC_CTRL_REG_GP_ADC_SIGN_Msk (0x2000UL) /*!< GPADC GP_ADC_CTRL_REG: GP_ADC_SIGN (Bitfield-Mask: 0x01) */ -#define GPADC_GP_ADC_CTRL_REG_GP_ADC_CHOP_Pos (14UL) /*!< GPADC GP_ADC_CTRL_REG: GP_ADC_CHOP (Bit 14) */ -#define GPADC_GP_ADC_CTRL_REG_GP_ADC_CHOP_Msk (0x4000UL) /*!< GPADC GP_ADC_CTRL_REG: GP_ADC_CHOP (Bitfield-Mask: 0x01) */ -#define GPADC_GP_ADC_CTRL_REG_GP_ADC_LDO_ZERO_Pos (15UL) /*!< GPADC GP_ADC_CTRL_REG: GP_ADC_LDO_ZERO (Bit 15) */ -#define GPADC_GP_ADC_CTRL_REG_GP_ADC_LDO_ZERO_Msk (0x8000UL) /*!< GPADC GP_ADC_CTRL_REG: GP_ADC_LDO_ZERO (Bitfield-Mask: 0x01) */ - -/* --------------------------- GPADC_GP_ADC_CTRL2_REG --------------------------- */ -#define GPADC_GP_ADC_CTRL2_REG_GP_ADC_ATTN3X_Pos (0UL) /*!< GPADC GP_ADC_CTRL2_REG: GP_ADC_ATTN3X (Bit 0) */ -#define GPADC_GP_ADC_CTRL2_REG_GP_ADC_ATTN3X_Msk (0x1UL) /*!< GPADC GP_ADC_CTRL2_REG: GP_ADC_ATTN3X (Bitfield-Mask: 0x01) */ -#define GPADC_GP_ADC_CTRL2_REG_GP_ADC_IDYN_Pos (1UL) /*!< GPADC GP_ADC_CTRL2_REG: GP_ADC_IDYN (Bit 1) */ -#define GPADC_GP_ADC_CTRL2_REG_GP_ADC_IDYN_Msk (0x2UL) /*!< GPADC GP_ADC_CTRL2_REG: GP_ADC_IDYN (Bitfield-Mask: 0x01) */ -#define GPADC_GP_ADC_CTRL2_REG_GP_ADC_I20U_Pos (2UL) /*!< GPADC GP_ADC_CTRL2_REG: GP_ADC_I20U (Bit 2) */ -#define GPADC_GP_ADC_CTRL2_REG_GP_ADC_I20U_Msk (0x4UL) /*!< GPADC GP_ADC_CTRL2_REG: GP_ADC_I20U (Bitfield-Mask: 0x01) */ -#define GPADC_GP_ADC_CTRL2_REG_GP_ADC_DMA_EN_Pos (3UL) /*!< GPADC GP_ADC_CTRL2_REG: GP_ADC_DMA_EN (Bit 3) */ -#define GPADC_GP_ADC_CTRL2_REG_GP_ADC_DMA_EN_Msk (0x8UL) /*!< GPADC GP_ADC_CTRL2_REG: GP_ADC_DMA_EN (Bitfield-Mask: 0x01) */ -#define GPADC_GP_ADC_CTRL2_REG_GP_ADC_CONV_NRS_Pos (5UL) /*!< GPADC GP_ADC_CTRL2_REG: GP_ADC_CONV_NRS (Bit 5) */ -#define GPADC_GP_ADC_CTRL2_REG_GP_ADC_CONV_NRS_Msk (0xe0UL) /*!< GPADC GP_ADC_CTRL2_REG: GP_ADC_CONV_NRS (Bitfield-Mask: 0x07) */ -#define GPADC_GP_ADC_CTRL2_REG_GP_ADC_SMPL_TIME_Pos (8UL) /*!< GPADC GP_ADC_CTRL2_REG: GP_ADC_SMPL_TIME (Bit 8) */ -#define GPADC_GP_ADC_CTRL2_REG_GP_ADC_SMPL_TIME_Msk (0xf00UL) /*!< GPADC GP_ADC_CTRL2_REG: GP_ADC_SMPL_TIME (Bitfield-Mask: 0x0f) */ -#define GPADC_GP_ADC_CTRL2_REG_GP_ADC_STORE_DEL_Pos (12UL) /*!< GPADC GP_ADC_CTRL2_REG: GP_ADC_STORE_DEL (Bit 12) */ -#define GPADC_GP_ADC_CTRL2_REG_GP_ADC_STORE_DEL_Msk (0xf000UL) /*!< GPADC GP_ADC_CTRL2_REG: GP_ADC_STORE_DEL (Bitfield-Mask: 0x0f) */ - -/* --------------------------- GPADC_GP_ADC_CTRL3_REG --------------------------- */ -#define GPADC_GP_ADC_CTRL3_REG_GP_ADC_EN_DEL_Pos (0UL) /*!< GPADC GP_ADC_CTRL3_REG: GP_ADC_EN_DEL (Bit 0) */ -#define GPADC_GP_ADC_CTRL3_REG_GP_ADC_EN_DEL_Msk (0xffUL) /*!< GPADC GP_ADC_CTRL3_REG: GP_ADC_EN_DEL (Bitfield-Mask: 0xff) */ -#define GPADC_GP_ADC_CTRL3_REG_GP_ADC_INTERVAL_Pos (8UL) /*!< GPADC GP_ADC_CTRL3_REG: GP_ADC_INTERVAL (Bit 8) */ -#define GPADC_GP_ADC_CTRL3_REG_GP_ADC_INTERVAL_Msk (0xff00UL) /*!< GPADC GP_ADC_CTRL3_REG: GP_ADC_INTERVAL (Bitfield-Mask: 0xff) */ - -/* ---------------------------- GPADC_GP_ADC_OFFP_REG --------------------------- */ -#define GPADC_GP_ADC_OFFP_REG_GP_ADC_OFFP_Pos (0UL) /*!< GPADC GP_ADC_OFFP_REG: GP_ADC_OFFP (Bit 0) */ -#define GPADC_GP_ADC_OFFP_REG_GP_ADC_OFFP_Msk (0x3ffUL) /*!< GPADC GP_ADC_OFFP_REG: GP_ADC_OFFP (Bitfield-Mask: 0x3ff) */ - -/* ---------------------------- GPADC_GP_ADC_OFFN_REG --------------------------- */ -#define GPADC_GP_ADC_OFFN_REG_GP_ADC_OFFN_Pos (0UL) /*!< GPADC GP_ADC_OFFN_REG: GP_ADC_OFFN (Bit 0) */ -#define GPADC_GP_ADC_OFFN_REG_GP_ADC_OFFN_Msk (0x3ffUL) /*!< GPADC GP_ADC_OFFN_REG: GP_ADC_OFFN (Bitfield-Mask: 0x3ff) */ - -/* ------------------------- GPADC_GP_ADC_CLEAR_INT_REG ------------------------- */ -#define GPADC_GP_ADC_CLEAR_INT_REG_GP_ADC_CLR_INT_Pos (0UL) /*!< GPADC GP_ADC_CLEAR_INT_REG: GP_ADC_CLR_INT (Bit 0) */ -#define GPADC_GP_ADC_CLEAR_INT_REG_GP_ADC_CLR_INT_Msk (0xffffUL) /*!< GPADC GP_ADC_CLEAR_INT_REG: GP_ADC_CLR_INT (Bitfield-Mask: 0xffff) */ - -/* --------------------------- GPADC_GP_ADC_RESULT_REG -------------------------- */ -#define GPADC_GP_ADC_RESULT_REG_GP_ADC_VAL_Pos (0UL) /*!< GPADC GP_ADC_RESULT_REG: GP_ADC_VAL (Bit 0) */ -#define GPADC_GP_ADC_RESULT_REG_GP_ADC_VAL_Msk (0xffffUL) /*!< GPADC GP_ADC_RESULT_REG: GP_ADC_VAL (Bitfield-Mask: 0xffff) */ - - -/* ================================================================================ */ -/* ================ struct 'GPIO' Position & Mask ================ */ -/* ================================================================================ */ - - -/* ------------------------------ GPIO_P0_DATA_REG ------------------------------ */ -#define GPIO_P0_DATA_REG_P0_DATA_Pos (0UL) /*!< GPIO P0_DATA_REG: P0_DATA (Bit 0) */ -#define GPIO_P0_DATA_REG_P0_DATA_Msk (0xffUL) /*!< GPIO P0_DATA_REG: P0_DATA (Bitfield-Mask: 0xff) */ - -/* ------------------------------ GPIO_P1_DATA_REG ------------------------------ */ -#define GPIO_P1_DATA_REG_P1_DATA_Pos (0UL) /*!< GPIO P1_DATA_REG: P1_DATA (Bit 0) */ -#define GPIO_P1_DATA_REG_P1_DATA_Msk (0xffUL) /*!< GPIO P1_DATA_REG: P1_DATA (Bitfield-Mask: 0xff) */ - -/* ------------------------------ GPIO_P2_DATA_REG ------------------------------ */ -#define GPIO_P2_DATA_REG_P2_DATA_Pos (0UL) /*!< GPIO P2_DATA_REG: P2_DATA (Bit 0) */ -#define GPIO_P2_DATA_REG_P2_DATA_Msk (0x1fUL) /*!< GPIO P2_DATA_REG: P2_DATA (Bitfield-Mask: 0x1f) */ - -/* ------------------------------ GPIO_P3_DATA_REG ------------------------------ */ -#define GPIO_P3_DATA_REG_P3_DATA_Pos (0UL) /*!< GPIO P3_DATA_REG: P3_DATA (Bit 0) */ -#define GPIO_P3_DATA_REG_P3_DATA_Msk (0xffUL) /*!< GPIO P3_DATA_REG: P3_DATA (Bitfield-Mask: 0xff) */ - -/* ------------------------------ GPIO_P4_DATA_REG ------------------------------ */ -#define GPIO_P4_DATA_REG_P4_DATA_Pos (0UL) /*!< GPIO P4_DATA_REG: P4_DATA (Bit 0) */ -#define GPIO_P4_DATA_REG_P4_DATA_Msk (0xffUL) /*!< GPIO P4_DATA_REG: P4_DATA (Bitfield-Mask: 0xff) */ - -/* ---------------------------- GPIO_P0_SET_DATA_REG ---------------------------- */ -#define GPIO_P0_SET_DATA_REG_P0_SET_Pos (0UL) /*!< GPIO P0_SET_DATA_REG: P0_SET (Bit 0) */ -#define GPIO_P0_SET_DATA_REG_P0_SET_Msk (0xffUL) /*!< GPIO P0_SET_DATA_REG: P0_SET (Bitfield-Mask: 0xff) */ - -/* ---------------------------- GPIO_P1_SET_DATA_REG ---------------------------- */ -#define GPIO_P1_SET_DATA_REG_P1_SET_Pos (0UL) /*!< GPIO P1_SET_DATA_REG: P1_SET (Bit 0) */ -#define GPIO_P1_SET_DATA_REG_P1_SET_Msk (0xffUL) /*!< GPIO P1_SET_DATA_REG: P1_SET (Bitfield-Mask: 0xff) */ - -/* ---------------------------- GPIO_P2_SET_DATA_REG ---------------------------- */ -#define GPIO_P2_SET_DATA_REG_P2_SET_Pos (0UL) /*!< GPIO P2_SET_DATA_REG: P2_SET (Bit 0) */ -#define GPIO_P2_SET_DATA_REG_P2_SET_Msk (0x1fUL) /*!< GPIO P2_SET_DATA_REG: P2_SET (Bitfield-Mask: 0x1f) */ - -/* ---------------------------- GPIO_P3_SET_DATA_REG ---------------------------- */ -#define GPIO_P3_SET_DATA_REG_P3_SET_Pos (0UL) /*!< GPIO P3_SET_DATA_REG: P3_SET (Bit 0) */ -#define GPIO_P3_SET_DATA_REG_P3_SET_Msk (0xffUL) /*!< GPIO P3_SET_DATA_REG: P3_SET (Bitfield-Mask: 0xff) */ - -/* ---------------------------- GPIO_P4_SET_DATA_REG ---------------------------- */ -#define GPIO_P4_SET_DATA_REG_P4_SET_Pos (0UL) /*!< GPIO P4_SET_DATA_REG: P4_SET (Bit 0) */ -#define GPIO_P4_SET_DATA_REG_P4_SET_Msk (0xffUL) /*!< GPIO P4_SET_DATA_REG: P4_SET (Bitfield-Mask: 0xff) */ - -/* --------------------------- GPIO_P0_RESET_DATA_REG --------------------------- */ -#define GPIO_P0_RESET_DATA_REG_P0_RESET_Pos (0UL) /*!< GPIO P0_RESET_DATA_REG: P0_RESET (Bit 0) */ -#define GPIO_P0_RESET_DATA_REG_P0_RESET_Msk (0xffUL) /*!< GPIO P0_RESET_DATA_REG: P0_RESET (Bitfield-Mask: 0xff) */ - -/* --------------------------- GPIO_P1_RESET_DATA_REG --------------------------- */ -#define GPIO_P1_RESET_DATA_REG_P1_RESET_Pos (0UL) /*!< GPIO P1_RESET_DATA_REG: P1_RESET (Bit 0) */ -#define GPIO_P1_RESET_DATA_REG_P1_RESET_Msk (0xffUL) /*!< GPIO P1_RESET_DATA_REG: P1_RESET (Bitfield-Mask: 0xff) */ - -/* --------------------------- GPIO_P2_RESET_DATA_REG --------------------------- */ -#define GPIO_P2_RESET_DATA_REG_P2_RESET_Pos (0UL) /*!< GPIO P2_RESET_DATA_REG: P2_RESET (Bit 0) */ -#define GPIO_P2_RESET_DATA_REG_P2_RESET_Msk (0x1fUL) /*!< GPIO P2_RESET_DATA_REG: P2_RESET (Bitfield-Mask: 0x1f) */ - -/* --------------------------- GPIO_P3_RESET_DATA_REG --------------------------- */ -#define GPIO_P3_RESET_DATA_REG_P3_RESET_Pos (0UL) /*!< GPIO P3_RESET_DATA_REG: P3_RESET (Bit 0) */ -#define GPIO_P3_RESET_DATA_REG_P3_RESET_Msk (0xffUL) /*!< GPIO P3_RESET_DATA_REG: P3_RESET (Bitfield-Mask: 0xff) */ - -/* --------------------------- GPIO_P4_RESET_DATA_REG --------------------------- */ -#define GPIO_P4_RESET_DATA_REG_P4_RESET_Pos (0UL) /*!< GPIO P4_RESET_DATA_REG: P4_RESET (Bit 0) */ -#define GPIO_P4_RESET_DATA_REG_P4_RESET_Msk (0xffUL) /*!< GPIO P4_RESET_DATA_REG: P4_RESET (Bitfield-Mask: 0xff) */ - -/* ------------------------------ GPIO_P00_MODE_REG ----------------------------- */ -#define GPIO_P00_MODE_REG_PID_Pos (0UL) /*!< GPIO P00_MODE_REG: PID (Bit 0) */ -#define GPIO_P00_MODE_REG_PID_Msk (0x3fUL) /*!< GPIO P00_MODE_REG: PID (Bitfield-Mask: 0x3f) */ -#define GPIO_P00_MODE_REG_PUPD_Pos (8UL) /*!< GPIO P00_MODE_REG: PUPD (Bit 8) */ -#define GPIO_P00_MODE_REG_PUPD_Msk (0x300UL) /*!< GPIO P00_MODE_REG: PUPD (Bitfield-Mask: 0x03) */ -#define GPIO_P00_MODE_REG_PPOD_Pos (10UL) /*!< GPIO P00_MODE_REG: PPOD (Bit 10) */ -#define GPIO_P00_MODE_REG_PPOD_Msk (0x400UL) /*!< GPIO P00_MODE_REG: PPOD (Bitfield-Mask: 0x01) */ - -/* ------------------------------ GPIO_P01_MODE_REG ----------------------------- */ -#define GPIO_P01_MODE_REG_PID_Pos (0UL) /*!< GPIO P01_MODE_REG: PID (Bit 0) */ -#define GPIO_P01_MODE_REG_PID_Msk (0x3fUL) /*!< GPIO P01_MODE_REG: PID (Bitfield-Mask: 0x3f) */ -#define GPIO_P01_MODE_REG_PUPD_Pos (8UL) /*!< GPIO P01_MODE_REG: PUPD (Bit 8) */ -#define GPIO_P01_MODE_REG_PUPD_Msk (0x300UL) /*!< GPIO P01_MODE_REG: PUPD (Bitfield-Mask: 0x03) */ -#define GPIO_P01_MODE_REG_PPOD_Pos (10UL) /*!< GPIO P01_MODE_REG: PPOD (Bit 10) */ -#define GPIO_P01_MODE_REG_PPOD_Msk (0x400UL) /*!< GPIO P01_MODE_REG: PPOD (Bitfield-Mask: 0x01) */ - -/* ------------------------------ GPIO_P02_MODE_REG ----------------------------- */ -#define GPIO_P02_MODE_REG_PID_Pos (0UL) /*!< GPIO P02_MODE_REG: PID (Bit 0) */ -#define GPIO_P02_MODE_REG_PID_Msk (0x3fUL) /*!< GPIO P02_MODE_REG: PID (Bitfield-Mask: 0x3f) */ -#define GPIO_P02_MODE_REG_PUPD_Pos (8UL) /*!< GPIO P02_MODE_REG: PUPD (Bit 8) */ -#define GPIO_P02_MODE_REG_PUPD_Msk (0x300UL) /*!< GPIO P02_MODE_REG: PUPD (Bitfield-Mask: 0x03) */ -#define GPIO_P02_MODE_REG_PPOD_Pos (10UL) /*!< GPIO P02_MODE_REG: PPOD (Bit 10) */ -#define GPIO_P02_MODE_REG_PPOD_Msk (0x400UL) /*!< GPIO P02_MODE_REG: PPOD (Bitfield-Mask: 0x01) */ - -/* ------------------------------ GPIO_P03_MODE_REG ----------------------------- */ -#define GPIO_P03_MODE_REG_PID_Pos (0UL) /*!< GPIO P03_MODE_REG: PID (Bit 0) */ -#define GPIO_P03_MODE_REG_PID_Msk (0x3fUL) /*!< GPIO P03_MODE_REG: PID (Bitfield-Mask: 0x3f) */ -#define GPIO_P03_MODE_REG_PUPD_Pos (8UL) /*!< GPIO P03_MODE_REG: PUPD (Bit 8) */ -#define GPIO_P03_MODE_REG_PUPD_Msk (0x300UL) /*!< GPIO P03_MODE_REG: PUPD (Bitfield-Mask: 0x03) */ -#define GPIO_P03_MODE_REG_PPOD_Pos (10UL) /*!< GPIO P03_MODE_REG: PPOD (Bit 10) */ -#define GPIO_P03_MODE_REG_PPOD_Msk (0x400UL) /*!< GPIO P03_MODE_REG: PPOD (Bitfield-Mask: 0x01) */ - -/* ------------------------------ GPIO_P04_MODE_REG ----------------------------- */ -#define GPIO_P04_MODE_REG_PID_Pos (0UL) /*!< GPIO P04_MODE_REG: PID (Bit 0) */ -#define GPIO_P04_MODE_REG_PID_Msk (0x3fUL) /*!< GPIO P04_MODE_REG: PID (Bitfield-Mask: 0x3f) */ -#define GPIO_P04_MODE_REG_PUPD_Pos (8UL) /*!< GPIO P04_MODE_REG: PUPD (Bit 8) */ -#define GPIO_P04_MODE_REG_PUPD_Msk (0x300UL) /*!< GPIO P04_MODE_REG: PUPD (Bitfield-Mask: 0x03) */ -#define GPIO_P04_MODE_REG_PPOD_Pos (10UL) /*!< GPIO P04_MODE_REG: PPOD (Bit 10) */ -#define GPIO_P04_MODE_REG_PPOD_Msk (0x400UL) /*!< GPIO P04_MODE_REG: PPOD (Bitfield-Mask: 0x01) */ - -/* ------------------------------ GPIO_P05_MODE_REG ----------------------------- */ -#define GPIO_P05_MODE_REG_PID_Pos (0UL) /*!< GPIO P05_MODE_REG: PID (Bit 0) */ -#define GPIO_P05_MODE_REG_PID_Msk (0x3fUL) /*!< GPIO P05_MODE_REG: PID (Bitfield-Mask: 0x3f) */ -#define GPIO_P05_MODE_REG_PUPD_Pos (8UL) /*!< GPIO P05_MODE_REG: PUPD (Bit 8) */ -#define GPIO_P05_MODE_REG_PUPD_Msk (0x300UL) /*!< GPIO P05_MODE_REG: PUPD (Bitfield-Mask: 0x03) */ -#define GPIO_P05_MODE_REG_PPOD_Pos (10UL) /*!< GPIO P05_MODE_REG: PPOD (Bit 10) */ -#define GPIO_P05_MODE_REG_PPOD_Msk (0x400UL) /*!< GPIO P05_MODE_REG: PPOD (Bitfield-Mask: 0x01) */ - -/* ------------------------------ GPIO_P06_MODE_REG ----------------------------- */ -#define GPIO_P06_MODE_REG_PID_Pos (0UL) /*!< GPIO P06_MODE_REG: PID (Bit 0) */ -#define GPIO_P06_MODE_REG_PID_Msk (0x3fUL) /*!< GPIO P06_MODE_REG: PID (Bitfield-Mask: 0x3f) */ -#define GPIO_P06_MODE_REG_PUPD_Pos (8UL) /*!< GPIO P06_MODE_REG: PUPD (Bit 8) */ -#define GPIO_P06_MODE_REG_PUPD_Msk (0x300UL) /*!< GPIO P06_MODE_REG: PUPD (Bitfield-Mask: 0x03) */ -#define GPIO_P06_MODE_REG_PPOD_Pos (10UL) /*!< GPIO P06_MODE_REG: PPOD (Bit 10) */ -#define GPIO_P06_MODE_REG_PPOD_Msk (0x400UL) /*!< GPIO P06_MODE_REG: PPOD (Bitfield-Mask: 0x01) */ - -/* ------------------------------ GPIO_P07_MODE_REG ----------------------------- */ -#define GPIO_P07_MODE_REG_PID_Pos (0UL) /*!< GPIO P07_MODE_REG: PID (Bit 0) */ -#define GPIO_P07_MODE_REG_PID_Msk (0x3fUL) /*!< GPIO P07_MODE_REG: PID (Bitfield-Mask: 0x3f) */ -#define GPIO_P07_MODE_REG_PUPD_Pos (8UL) /*!< GPIO P07_MODE_REG: PUPD (Bit 8) */ -#define GPIO_P07_MODE_REG_PUPD_Msk (0x300UL) /*!< GPIO P07_MODE_REG: PUPD (Bitfield-Mask: 0x03) */ -#define GPIO_P07_MODE_REG_PPOD_Pos (10UL) /*!< GPIO P07_MODE_REG: PPOD (Bit 10) */ -#define GPIO_P07_MODE_REG_PPOD_Msk (0x400UL) /*!< GPIO P07_MODE_REG: PPOD (Bitfield-Mask: 0x01) */ - -/* ------------------------------ GPIO_P10_MODE_REG ----------------------------- */ -#define GPIO_P10_MODE_REG_PID_Pos (0UL) /*!< GPIO P10_MODE_REG: PID (Bit 0) */ -#define GPIO_P10_MODE_REG_PID_Msk (0x3fUL) /*!< GPIO P10_MODE_REG: PID (Bitfield-Mask: 0x3f) */ -#define GPIO_P10_MODE_REG_PUPD_Pos (8UL) /*!< GPIO P10_MODE_REG: PUPD (Bit 8) */ -#define GPIO_P10_MODE_REG_PUPD_Msk (0x300UL) /*!< GPIO P10_MODE_REG: PUPD (Bitfield-Mask: 0x03) */ -#define GPIO_P10_MODE_REG_PPOD_Pos (10UL) /*!< GPIO P10_MODE_REG: PPOD (Bit 10) */ -#define GPIO_P10_MODE_REG_PPOD_Msk (0x400UL) /*!< GPIO P10_MODE_REG: PPOD (Bitfield-Mask: 0x01) */ - -/* ------------------------------ GPIO_P11_MODE_REG ----------------------------- */ -#define GPIO_P11_MODE_REG_PID_Pos (0UL) /*!< GPIO P11_MODE_REG: PID (Bit 0) */ -#define GPIO_P11_MODE_REG_PID_Msk (0x3fUL) /*!< GPIO P11_MODE_REG: PID (Bitfield-Mask: 0x3f) */ -#define GPIO_P11_MODE_REG_PUPD_Pos (8UL) /*!< GPIO P11_MODE_REG: PUPD (Bit 8) */ -#define GPIO_P11_MODE_REG_PUPD_Msk (0x300UL) /*!< GPIO P11_MODE_REG: PUPD (Bitfield-Mask: 0x03) */ -#define GPIO_P11_MODE_REG_PPOD_Pos (10UL) /*!< GPIO P11_MODE_REG: PPOD (Bit 10) */ -#define GPIO_P11_MODE_REG_PPOD_Msk (0x400UL) /*!< GPIO P11_MODE_REG: PPOD (Bitfield-Mask: 0x01) */ - -/* ------------------------------ GPIO_P12_MODE_REG ----------------------------- */ -#define GPIO_P12_MODE_REG_PID_Pos (0UL) /*!< GPIO P12_MODE_REG: PID (Bit 0) */ -#define GPIO_P12_MODE_REG_PID_Msk (0x3fUL) /*!< GPIO P12_MODE_REG: PID (Bitfield-Mask: 0x3f) */ -#define GPIO_P12_MODE_REG_PUPD_Pos (8UL) /*!< GPIO P12_MODE_REG: PUPD (Bit 8) */ -#define GPIO_P12_MODE_REG_PUPD_Msk (0x300UL) /*!< GPIO P12_MODE_REG: PUPD (Bitfield-Mask: 0x03) */ -#define GPIO_P12_MODE_REG_PPOD_Pos (10UL) /*!< GPIO P12_MODE_REG: PPOD (Bit 10) */ -#define GPIO_P12_MODE_REG_PPOD_Msk (0x400UL) /*!< GPIO P12_MODE_REG: PPOD (Bitfield-Mask: 0x01) */ - -/* ------------------------------ GPIO_P13_MODE_REG ----------------------------- */ -#define GPIO_P13_MODE_REG_PID_Pos (0UL) /*!< GPIO P13_MODE_REG: PID (Bit 0) */ -#define GPIO_P13_MODE_REG_PID_Msk (0x3fUL) /*!< GPIO P13_MODE_REG: PID (Bitfield-Mask: 0x3f) */ -#define GPIO_P13_MODE_REG_PUPD_Pos (8UL) /*!< GPIO P13_MODE_REG: PUPD (Bit 8) */ -#define GPIO_P13_MODE_REG_PUPD_Msk (0x300UL) /*!< GPIO P13_MODE_REG: PUPD (Bitfield-Mask: 0x03) */ -#define GPIO_P13_MODE_REG_PPOD_Pos (10UL) /*!< GPIO P13_MODE_REG: PPOD (Bit 10) */ -#define GPIO_P13_MODE_REG_PPOD_Msk (0x400UL) /*!< GPIO P13_MODE_REG: PPOD (Bitfield-Mask: 0x01) */ - -/* ------------------------------ GPIO_P14_MODE_REG ----------------------------- */ -#define GPIO_P14_MODE_REG_PID_Pos (0UL) /*!< GPIO P14_MODE_REG: PID (Bit 0) */ -#define GPIO_P14_MODE_REG_PID_Msk (0x3fUL) /*!< GPIO P14_MODE_REG: PID (Bitfield-Mask: 0x3f) */ -#define GPIO_P14_MODE_REG_PUPD_Pos (8UL) /*!< GPIO P14_MODE_REG: PUPD (Bit 8) */ -#define GPIO_P14_MODE_REG_PUPD_Msk (0x300UL) /*!< GPIO P14_MODE_REG: PUPD (Bitfield-Mask: 0x03) */ -#define GPIO_P14_MODE_REG_PPOD_Pos (10UL) /*!< GPIO P14_MODE_REG: PPOD (Bit 10) */ -#define GPIO_P14_MODE_REG_PPOD_Msk (0x400UL) /*!< GPIO P14_MODE_REG: PPOD (Bitfield-Mask: 0x01) */ - -/* ------------------------------ GPIO_P15_MODE_REG ----------------------------- */ -#define GPIO_P15_MODE_REG_PID_Pos (0UL) /*!< GPIO P15_MODE_REG: PID (Bit 0) */ -#define GPIO_P15_MODE_REG_PID_Msk (0x3fUL) /*!< GPIO P15_MODE_REG: PID (Bitfield-Mask: 0x3f) */ -#define GPIO_P15_MODE_REG_PUPD_Pos (8UL) /*!< GPIO P15_MODE_REG: PUPD (Bit 8) */ -#define GPIO_P15_MODE_REG_PUPD_Msk (0x300UL) /*!< GPIO P15_MODE_REG: PUPD (Bitfield-Mask: 0x03) */ -#define GPIO_P15_MODE_REG_PPOD_Pos (10UL) /*!< GPIO P15_MODE_REG: PPOD (Bit 10) */ -#define GPIO_P15_MODE_REG_PPOD_Msk (0x400UL) /*!< GPIO P15_MODE_REG: PPOD (Bitfield-Mask: 0x01) */ - -/* ------------------------------ GPIO_P16_MODE_REG ----------------------------- */ -#define GPIO_P16_MODE_REG_PID_Pos (0UL) /*!< GPIO P16_MODE_REG: PID (Bit 0) */ -#define GPIO_P16_MODE_REG_PID_Msk (0x3fUL) /*!< GPIO P16_MODE_REG: PID (Bitfield-Mask: 0x3f) */ -#define GPIO_P16_MODE_REG_PUPD_Pos (8UL) /*!< GPIO P16_MODE_REG: PUPD (Bit 8) */ -#define GPIO_P16_MODE_REG_PUPD_Msk (0x300UL) /*!< GPIO P16_MODE_REG: PUPD (Bitfield-Mask: 0x03) */ -#define GPIO_P16_MODE_REG_PPOD_Pos (10UL) /*!< GPIO P16_MODE_REG: PPOD (Bit 10) */ -#define GPIO_P16_MODE_REG_PPOD_Msk (0x400UL) /*!< GPIO P16_MODE_REG: PPOD (Bitfield-Mask: 0x01) */ - -/* ------------------------------ GPIO_P17_MODE_REG ----------------------------- */ -#define GPIO_P17_MODE_REG_PID_Pos (0UL) /*!< GPIO P17_MODE_REG: PID (Bit 0) */ -#define GPIO_P17_MODE_REG_PID_Msk (0x3fUL) /*!< GPIO P17_MODE_REG: PID (Bitfield-Mask: 0x3f) */ -#define GPIO_P17_MODE_REG_PUPD_Pos (8UL) /*!< GPIO P17_MODE_REG: PUPD (Bit 8) */ -#define GPIO_P17_MODE_REG_PUPD_Msk (0x300UL) /*!< GPIO P17_MODE_REG: PUPD (Bitfield-Mask: 0x03) */ -#define GPIO_P17_MODE_REG_PPOD_Pos (10UL) /*!< GPIO P17_MODE_REG: PPOD (Bit 10) */ -#define GPIO_P17_MODE_REG_PPOD_Msk (0x400UL) /*!< GPIO P17_MODE_REG: PPOD (Bitfield-Mask: 0x01) */ - -/* ------------------------------ GPIO_P20_MODE_REG ----------------------------- */ -#define GPIO_P20_MODE_REG_PID_Pos (0UL) /*!< GPIO P20_MODE_REG: PID (Bit 0) */ -#define GPIO_P20_MODE_REG_PID_Msk (0x3fUL) /*!< GPIO P20_MODE_REG: PID (Bitfield-Mask: 0x3f) */ -#define GPIO_P20_MODE_REG_PUPD_Pos (8UL) /*!< GPIO P20_MODE_REG: PUPD (Bit 8) */ -#define GPIO_P20_MODE_REG_PUPD_Msk (0x300UL) /*!< GPIO P20_MODE_REG: PUPD (Bitfield-Mask: 0x03) */ -#define GPIO_P20_MODE_REG_PPOD_Pos (10UL) /*!< GPIO P20_MODE_REG: PPOD (Bit 10) */ -#define GPIO_P20_MODE_REG_PPOD_Msk (0x400UL) /*!< GPIO P20_MODE_REG: PPOD (Bitfield-Mask: 0x01) */ - -/* ------------------------------ GPIO_P21_MODE_REG ----------------------------- */ -#define GPIO_P21_MODE_REG_PID_Pos (0UL) /*!< GPIO P21_MODE_REG: PID (Bit 0) */ -#define GPIO_P21_MODE_REG_PID_Msk (0x3fUL) /*!< GPIO P21_MODE_REG: PID (Bitfield-Mask: 0x3f) */ -#define GPIO_P21_MODE_REG_PUPD_Pos (8UL) /*!< GPIO P21_MODE_REG: PUPD (Bit 8) */ -#define GPIO_P21_MODE_REG_PUPD_Msk (0x300UL) /*!< GPIO P21_MODE_REG: PUPD (Bitfield-Mask: 0x03) */ -#define GPIO_P21_MODE_REG_PPOD_Pos (10UL) /*!< GPIO P21_MODE_REG: PPOD (Bit 10) */ -#define GPIO_P21_MODE_REG_PPOD_Msk (0x400UL) /*!< GPIO P21_MODE_REG: PPOD (Bitfield-Mask: 0x01) */ - -/* ------------------------------ GPIO_P22_MODE_REG ----------------------------- */ -#define GPIO_P22_MODE_REG_PID_Pos (0UL) /*!< GPIO P22_MODE_REG: PID (Bit 0) */ -#define GPIO_P22_MODE_REG_PID_Msk (0x3fUL) /*!< GPIO P22_MODE_REG: PID (Bitfield-Mask: 0x3f) */ -#define GPIO_P22_MODE_REG_PUPD_Pos (8UL) /*!< GPIO P22_MODE_REG: PUPD (Bit 8) */ -#define GPIO_P22_MODE_REG_PUPD_Msk (0x300UL) /*!< GPIO P22_MODE_REG: PUPD (Bitfield-Mask: 0x03) */ -#define GPIO_P22_MODE_REG_PPOD_Pos (10UL) /*!< GPIO P22_MODE_REG: PPOD (Bit 10) */ -#define GPIO_P22_MODE_REG_PPOD_Msk (0x400UL) /*!< GPIO P22_MODE_REG: PPOD (Bitfield-Mask: 0x01) */ - -/* ------------------------------ GPIO_P23_MODE_REG ----------------------------- */ -#define GPIO_P23_MODE_REG_PID_Pos (0UL) /*!< GPIO P23_MODE_REG: PID (Bit 0) */ -#define GPIO_P23_MODE_REG_PID_Msk (0x3fUL) /*!< GPIO P23_MODE_REG: PID (Bitfield-Mask: 0x3f) */ -#define GPIO_P23_MODE_REG_PUPD_Pos (8UL) /*!< GPIO P23_MODE_REG: PUPD (Bit 8) */ -#define GPIO_P23_MODE_REG_PUPD_Msk (0x300UL) /*!< GPIO P23_MODE_REG: PUPD (Bitfield-Mask: 0x03) */ -#define GPIO_P23_MODE_REG_PPOD_Pos (10UL) /*!< GPIO P23_MODE_REG: PPOD (Bit 10) */ -#define GPIO_P23_MODE_REG_PPOD_Msk (0x400UL) /*!< GPIO P23_MODE_REG: PPOD (Bitfield-Mask: 0x01) */ - -/* ------------------------------ GPIO_P24_MODE_REG ----------------------------- */ -#define GPIO_P24_MODE_REG_PID_Pos (0UL) /*!< GPIO P24_MODE_REG: PID (Bit 0) */ -#define GPIO_P24_MODE_REG_PID_Msk (0x3fUL) /*!< GPIO P24_MODE_REG: PID (Bitfield-Mask: 0x3f) */ -#define GPIO_P24_MODE_REG_PUPD_Pos (8UL) /*!< GPIO P24_MODE_REG: PUPD (Bit 8) */ -#define GPIO_P24_MODE_REG_PUPD_Msk (0x300UL) /*!< GPIO P24_MODE_REG: PUPD (Bitfield-Mask: 0x03) */ -#define GPIO_P24_MODE_REG_PPOD_Pos (10UL) /*!< GPIO P24_MODE_REG: PPOD (Bit 10) */ -#define GPIO_P24_MODE_REG_PPOD_Msk (0x400UL) /*!< GPIO P24_MODE_REG: PPOD (Bitfield-Mask: 0x01) */ - -/* ------------------------------ GPIO_P30_MODE_REG ----------------------------- */ -#define GPIO_P30_MODE_REG_PID_Pos (0UL) /*!< GPIO P30_MODE_REG: PID (Bit 0) */ -#define GPIO_P30_MODE_REG_PID_Msk (0x3fUL) /*!< GPIO P30_MODE_REG: PID (Bitfield-Mask: 0x3f) */ -#define GPIO_P30_MODE_REG_PUPD_Pos (8UL) /*!< GPIO P30_MODE_REG: PUPD (Bit 8) */ -#define GPIO_P30_MODE_REG_PUPD_Msk (0x300UL) /*!< GPIO P30_MODE_REG: PUPD (Bitfield-Mask: 0x03) */ -#define GPIO_P30_MODE_REG_PPOD_Pos (10UL) /*!< GPIO P30_MODE_REG: PPOD (Bit 10) */ -#define GPIO_P30_MODE_REG_PPOD_Msk (0x400UL) /*!< GPIO P30_MODE_REG: PPOD (Bitfield-Mask: 0x01) */ - -/* ------------------------------ GPIO_P31_MODE_REG ----------------------------- */ -#define GPIO_P31_MODE_REG_PID_Pos (0UL) /*!< GPIO P31_MODE_REG: PID (Bit 0) */ -#define GPIO_P31_MODE_REG_PID_Msk (0x3fUL) /*!< GPIO P31_MODE_REG: PID (Bitfield-Mask: 0x3f) */ -#define GPIO_P31_MODE_REG_PUPD_Pos (8UL) /*!< GPIO P31_MODE_REG: PUPD (Bit 8) */ -#define GPIO_P31_MODE_REG_PUPD_Msk (0x300UL) /*!< GPIO P31_MODE_REG: PUPD (Bitfield-Mask: 0x03) */ -#define GPIO_P31_MODE_REG_PPOD_Pos (10UL) /*!< GPIO P31_MODE_REG: PPOD (Bit 10) */ -#define GPIO_P31_MODE_REG_PPOD_Msk (0x400UL) /*!< GPIO P31_MODE_REG: PPOD (Bitfield-Mask: 0x01) */ - -/* ------------------------------ GPIO_P32_MODE_REG ----------------------------- */ -#define GPIO_P32_MODE_REG_PID_Pos (0UL) /*!< GPIO P32_MODE_REG: PID (Bit 0) */ -#define GPIO_P32_MODE_REG_PID_Msk (0x3fUL) /*!< GPIO P32_MODE_REG: PID (Bitfield-Mask: 0x3f) */ -#define GPIO_P32_MODE_REG_PUPD_Pos (8UL) /*!< GPIO P32_MODE_REG: PUPD (Bit 8) */ -#define GPIO_P32_MODE_REG_PUPD_Msk (0x300UL) /*!< GPIO P32_MODE_REG: PUPD (Bitfield-Mask: 0x03) */ -#define GPIO_P32_MODE_REG_PPOD_Pos (10UL) /*!< GPIO P32_MODE_REG: PPOD (Bit 10) */ -#define GPIO_P32_MODE_REG_PPOD_Msk (0x400UL) /*!< GPIO P32_MODE_REG: PPOD (Bitfield-Mask: 0x01) */ - -/* ------------------------------ GPIO_P33_MODE_REG ----------------------------- */ -#define GPIO_P33_MODE_REG_PID_Pos (0UL) /*!< GPIO P33_MODE_REG: PID (Bit 0) */ -#define GPIO_P33_MODE_REG_PID_Msk (0x3fUL) /*!< GPIO P33_MODE_REG: PID (Bitfield-Mask: 0x3f) */ -#define GPIO_P33_MODE_REG_PUPD_Pos (8UL) /*!< GPIO P33_MODE_REG: PUPD (Bit 8) */ -#define GPIO_P33_MODE_REG_PUPD_Msk (0x300UL) /*!< GPIO P33_MODE_REG: PUPD (Bitfield-Mask: 0x03) */ -#define GPIO_P33_MODE_REG_PPOD_Pos (10UL) /*!< GPIO P33_MODE_REG: PPOD (Bit 10) */ -#define GPIO_P33_MODE_REG_PPOD_Msk (0x400UL) /*!< GPIO P33_MODE_REG: PPOD (Bitfield-Mask: 0x01) */ - -/* ------------------------------ GPIO_P34_MODE_REG ----------------------------- */ -#define GPIO_P34_MODE_REG_PID_Pos (0UL) /*!< GPIO P34_MODE_REG: PID (Bit 0) */ -#define GPIO_P34_MODE_REG_PID_Msk (0x3fUL) /*!< GPIO P34_MODE_REG: PID (Bitfield-Mask: 0x3f) */ -#define GPIO_P34_MODE_REG_PUPD_Pos (8UL) /*!< GPIO P34_MODE_REG: PUPD (Bit 8) */ -#define GPIO_P34_MODE_REG_PUPD_Msk (0x300UL) /*!< GPIO P34_MODE_REG: PUPD (Bitfield-Mask: 0x03) */ -#define GPIO_P34_MODE_REG_PPOD_Pos (10UL) /*!< GPIO P34_MODE_REG: PPOD (Bit 10) */ -#define GPIO_P34_MODE_REG_PPOD_Msk (0x400UL) /*!< GPIO P34_MODE_REG: PPOD (Bitfield-Mask: 0x01) */ - -/* ------------------------------ GPIO_P35_MODE_REG ----------------------------- */ -#define GPIO_P35_MODE_REG_PID_Pos (0UL) /*!< GPIO P35_MODE_REG: PID (Bit 0) */ -#define GPIO_P35_MODE_REG_PID_Msk (0x3fUL) /*!< GPIO P35_MODE_REG: PID (Bitfield-Mask: 0x3f) */ -#define GPIO_P35_MODE_REG_PUPD_Pos (8UL) /*!< GPIO P35_MODE_REG: PUPD (Bit 8) */ -#define GPIO_P35_MODE_REG_PUPD_Msk (0x300UL) /*!< GPIO P35_MODE_REG: PUPD (Bitfield-Mask: 0x03) */ -#define GPIO_P35_MODE_REG_PPOD_Pos (10UL) /*!< GPIO P35_MODE_REG: PPOD (Bit 10) */ -#define GPIO_P35_MODE_REG_PPOD_Msk (0x400UL) /*!< GPIO P35_MODE_REG: PPOD (Bitfield-Mask: 0x01) */ - -/* ------------------------------ GPIO_P36_MODE_REG ----------------------------- */ -#define GPIO_P36_MODE_REG_PID_Pos (0UL) /*!< GPIO P36_MODE_REG: PID (Bit 0) */ -#define GPIO_P36_MODE_REG_PID_Msk (0x3fUL) /*!< GPIO P36_MODE_REG: PID (Bitfield-Mask: 0x3f) */ -#define GPIO_P36_MODE_REG_PUPD_Pos (8UL) /*!< GPIO P36_MODE_REG: PUPD (Bit 8) */ -#define GPIO_P36_MODE_REG_PUPD_Msk (0x300UL) /*!< GPIO P36_MODE_REG: PUPD (Bitfield-Mask: 0x03) */ -#define GPIO_P36_MODE_REG_PPOD_Pos (10UL) /*!< GPIO P36_MODE_REG: PPOD (Bit 10) */ -#define GPIO_P36_MODE_REG_PPOD_Msk (0x400UL) /*!< GPIO P36_MODE_REG: PPOD (Bitfield-Mask: 0x01) */ - -/* ------------------------------ GPIO_P37_MODE_REG ----------------------------- */ -#define GPIO_P37_MODE_REG_PID_Pos (0UL) /*!< GPIO P37_MODE_REG: PID (Bit 0) */ -#define GPIO_P37_MODE_REG_PID_Msk (0x3fUL) /*!< GPIO P37_MODE_REG: PID (Bitfield-Mask: 0x3f) */ -#define GPIO_P37_MODE_REG_PUPD_Pos (8UL) /*!< GPIO P37_MODE_REG: PUPD (Bit 8) */ -#define GPIO_P37_MODE_REG_PUPD_Msk (0x300UL) /*!< GPIO P37_MODE_REG: PUPD (Bitfield-Mask: 0x03) */ -#define GPIO_P37_MODE_REG_PPOD_Pos (10UL) /*!< GPIO P37_MODE_REG: PPOD (Bit 10) */ -#define GPIO_P37_MODE_REG_PPOD_Msk (0x400UL) /*!< GPIO P37_MODE_REG: PPOD (Bitfield-Mask: 0x01) */ - -/* ------------------------------ GPIO_P40_MODE_REG ----------------------------- */ -#define GPIO_P40_MODE_REG_PID_Pos (0UL) /*!< GPIO P40_MODE_REG: PID (Bit 0) */ -#define GPIO_P40_MODE_REG_PID_Msk (0x3fUL) /*!< GPIO P40_MODE_REG: PID (Bitfield-Mask: 0x3f) */ -#define GPIO_P40_MODE_REG_PUPD_Pos (8UL) /*!< GPIO P40_MODE_REG: PUPD (Bit 8) */ -#define GPIO_P40_MODE_REG_PUPD_Msk (0x300UL) /*!< GPIO P40_MODE_REG: PUPD (Bitfield-Mask: 0x03) */ -#define GPIO_P40_MODE_REG_PPOD_Pos (10UL) /*!< GPIO P40_MODE_REG: PPOD (Bit 10) */ -#define GPIO_P40_MODE_REG_PPOD_Msk (0x400UL) /*!< GPIO P40_MODE_REG: PPOD (Bitfield-Mask: 0x01) */ - -/* ------------------------------ GPIO_P41_MODE_REG ----------------------------- */ -#define GPIO_P41_MODE_REG_PID_Pos (0UL) /*!< GPIO P41_MODE_REG: PID (Bit 0) */ -#define GPIO_P41_MODE_REG_PID_Msk (0x3fUL) /*!< GPIO P41_MODE_REG: PID (Bitfield-Mask: 0x3f) */ -#define GPIO_P41_MODE_REG_PUPD_Pos (8UL) /*!< GPIO P41_MODE_REG: PUPD (Bit 8) */ -#define GPIO_P41_MODE_REG_PUPD_Msk (0x300UL) /*!< GPIO P41_MODE_REG: PUPD (Bitfield-Mask: 0x03) */ -#define GPIO_P41_MODE_REG_PPOD_Pos (10UL) /*!< GPIO P41_MODE_REG: PPOD (Bit 10) */ -#define GPIO_P41_MODE_REG_PPOD_Msk (0x400UL) /*!< GPIO P41_MODE_REG: PPOD (Bitfield-Mask: 0x01) */ - -/* ------------------------------ GPIO_P42_MODE_REG ----------------------------- */ -#define GPIO_P42_MODE_REG_PID_Pos (0UL) /*!< GPIO P42_MODE_REG: PID (Bit 0) */ -#define GPIO_P42_MODE_REG_PID_Msk (0x3fUL) /*!< GPIO P42_MODE_REG: PID (Bitfield-Mask: 0x3f) */ -#define GPIO_P42_MODE_REG_PUPD_Pos (8UL) /*!< GPIO P42_MODE_REG: PUPD (Bit 8) */ -#define GPIO_P42_MODE_REG_PUPD_Msk (0x300UL) /*!< GPIO P42_MODE_REG: PUPD (Bitfield-Mask: 0x03) */ -#define GPIO_P42_MODE_REG_PPOD_Pos (10UL) /*!< GPIO P42_MODE_REG: PPOD (Bit 10) */ -#define GPIO_P42_MODE_REG_PPOD_Msk (0x400UL) /*!< GPIO P42_MODE_REG: PPOD (Bitfield-Mask: 0x01) */ - -/* ------------------------------ GPIO_P43_MODE_REG ----------------------------- */ -#define GPIO_P43_MODE_REG_PID_Pos (0UL) /*!< GPIO P43_MODE_REG: PID (Bit 0) */ -#define GPIO_P43_MODE_REG_PID_Msk (0x3fUL) /*!< GPIO P43_MODE_REG: PID (Bitfield-Mask: 0x3f) */ -#define GPIO_P43_MODE_REG_PUPD_Pos (8UL) /*!< GPIO P43_MODE_REG: PUPD (Bit 8) */ -#define GPIO_P43_MODE_REG_PUPD_Msk (0x300UL) /*!< GPIO P43_MODE_REG: PUPD (Bitfield-Mask: 0x03) */ -#define GPIO_P43_MODE_REG_PPOD_Pos (10UL) /*!< GPIO P43_MODE_REG: PPOD (Bit 10) */ -#define GPIO_P43_MODE_REG_PPOD_Msk (0x400UL) /*!< GPIO P43_MODE_REG: PPOD (Bitfield-Mask: 0x01) */ - -/* ------------------------------ GPIO_P44_MODE_REG ----------------------------- */ -#define GPIO_P44_MODE_REG_PID_Pos (0UL) /*!< GPIO P44_MODE_REG: PID (Bit 0) */ -#define GPIO_P44_MODE_REG_PID_Msk (0x3fUL) /*!< GPIO P44_MODE_REG: PID (Bitfield-Mask: 0x3f) */ -#define GPIO_P44_MODE_REG_PUPD_Pos (8UL) /*!< GPIO P44_MODE_REG: PUPD (Bit 8) */ -#define GPIO_P44_MODE_REG_PUPD_Msk (0x300UL) /*!< GPIO P44_MODE_REG: PUPD (Bitfield-Mask: 0x03) */ -#define GPIO_P44_MODE_REG_PPOD_Pos (10UL) /*!< GPIO P44_MODE_REG: PPOD (Bit 10) */ -#define GPIO_P44_MODE_REG_PPOD_Msk (0x400UL) /*!< GPIO P44_MODE_REG: PPOD (Bitfield-Mask: 0x01) */ - -/* ------------------------------ GPIO_P45_MODE_REG ----------------------------- */ -#define GPIO_P45_MODE_REG_PID_Pos (0UL) /*!< GPIO P45_MODE_REG: PID (Bit 0) */ -#define GPIO_P45_MODE_REG_PID_Msk (0x3fUL) /*!< GPIO P45_MODE_REG: PID (Bitfield-Mask: 0x3f) */ -#define GPIO_P45_MODE_REG_PUPD_Pos (8UL) /*!< GPIO P45_MODE_REG: PUPD (Bit 8) */ -#define GPIO_P45_MODE_REG_PUPD_Msk (0x300UL) /*!< GPIO P45_MODE_REG: PUPD (Bitfield-Mask: 0x03) */ -#define GPIO_P45_MODE_REG_PPOD_Pos (10UL) /*!< GPIO P45_MODE_REG: PPOD (Bit 10) */ -#define GPIO_P45_MODE_REG_PPOD_Msk (0x400UL) /*!< GPIO P45_MODE_REG: PPOD (Bitfield-Mask: 0x01) */ - -/* ------------------------------ GPIO_P46_MODE_REG ----------------------------- */ -#define GPIO_P46_MODE_REG_PID_Pos (0UL) /*!< GPIO P46_MODE_REG: PID (Bit 0) */ -#define GPIO_P46_MODE_REG_PID_Msk (0x3fUL) /*!< GPIO P46_MODE_REG: PID (Bitfield-Mask: 0x3f) */ -#define GPIO_P46_MODE_REG_PUPD_Pos (8UL) /*!< GPIO P46_MODE_REG: PUPD (Bit 8) */ -#define GPIO_P46_MODE_REG_PUPD_Msk (0x300UL) /*!< GPIO P46_MODE_REG: PUPD (Bitfield-Mask: 0x03) */ -#define GPIO_P46_MODE_REG_PPOD_Pos (10UL) /*!< GPIO P46_MODE_REG: PPOD (Bit 10) */ -#define GPIO_P46_MODE_REG_PPOD_Msk (0x400UL) /*!< GPIO P46_MODE_REG: PPOD (Bitfield-Mask: 0x01) */ - -/* ------------------------------ GPIO_P47_MODE_REG ----------------------------- */ -#define GPIO_P47_MODE_REG_PID_Pos (0UL) /*!< GPIO P47_MODE_REG: PID (Bit 0) */ -#define GPIO_P47_MODE_REG_PID_Msk (0x3fUL) /*!< GPIO P47_MODE_REG: PID (Bitfield-Mask: 0x3f) */ -#define GPIO_P47_MODE_REG_PUPD_Pos (8UL) /*!< GPIO P47_MODE_REG: PUPD (Bit 8) */ -#define GPIO_P47_MODE_REG_PUPD_Msk (0x300UL) /*!< GPIO P47_MODE_REG: PUPD (Bitfield-Mask: 0x03) */ -#define GPIO_P47_MODE_REG_PPOD_Pos (10UL) /*!< GPIO P47_MODE_REG: PPOD (Bit 10) */ -#define GPIO_P47_MODE_REG_PPOD_Msk (0x400UL) /*!< GPIO P47_MODE_REG: PPOD (Bitfield-Mask: 0x01) */ - -/* --------------------------- GPIO_P0_PADPWR_CTRL_REG -------------------------- */ -#define GPIO_P0_PADPWR_CTRL_REG_P0_OUT_CTRL_Pos (6UL) /*!< GPIO P0_PADPWR_CTRL_REG: P0_OUT_CTRL (Bit 6) */ -#define GPIO_P0_PADPWR_CTRL_REG_P0_OUT_CTRL_Msk (0xc0UL) /*!< GPIO P0_PADPWR_CTRL_REG: P0_OUT_CTRL (Bitfield-Mask: 0x03) */ - -/* --------------------------- GPIO_P1_PADPWR_CTRL_REG -------------------------- */ -#define GPIO_P1_PADPWR_CTRL_REG_P1_OUT_CTRL_Pos (0UL) /*!< GPIO P1_PADPWR_CTRL_REG: P1_OUT_CTRL (Bit 0) */ -#define GPIO_P1_PADPWR_CTRL_REG_P1_OUT_CTRL_Msk (0xffUL) /*!< GPIO P1_PADPWR_CTRL_REG: P1_OUT_CTRL (Bitfield-Mask: 0xff) */ - -/* --------------------------- GPIO_P2_PADPWR_CTRL_REG -------------------------- */ -#define GPIO_P2_PADPWR_CTRL_REG_P2_OUT_CTRL_Pos (0UL) /*!< GPIO P2_PADPWR_CTRL_REG: P2_OUT_CTRL (Bit 0) */ -#define GPIO_P2_PADPWR_CTRL_REG_P2_OUT_CTRL_Msk (0x1fUL) /*!< GPIO P2_PADPWR_CTRL_REG: P2_OUT_CTRL (Bitfield-Mask: 0x1f) */ - -/* --------------------------- GPIO_P3_PADPWR_CTRL_REG -------------------------- */ -#define GPIO_P3_PADPWR_CTRL_REG_P3_OUT_CTRL_Pos (0UL) /*!< GPIO P3_PADPWR_CTRL_REG: P3_OUT_CTRL (Bit 0) */ -#define GPIO_P3_PADPWR_CTRL_REG_P3_OUT_CTRL_Msk (0xffUL) /*!< GPIO P3_PADPWR_CTRL_REG: P3_OUT_CTRL (Bitfield-Mask: 0xff) */ - -/* --------------------------- GPIO_P4_PADPWR_CTRL_REG -------------------------- */ -#define GPIO_P4_PADPWR_CTRL_REG_P4_OUT_CTRL_Pos (0UL) /*!< GPIO P4_PADPWR_CTRL_REG: P4_OUT_CTRL (Bit 0) */ -#define GPIO_P4_PADPWR_CTRL_REG_P4_OUT_CTRL_Msk (0xffUL) /*!< GPIO P4_PADPWR_CTRL_REG: P4_OUT_CTRL (Bitfield-Mask: 0xff) */ - -/* ------------------------------ GPIO_GPIO_CLK_SEL ----------------------------- */ -#define GPIO_GPIO_CLK_SEL_FUNC_CLOCK_SEL_Pos (0UL) /*!< GPIO GPIO_CLK_SEL: FUNC_CLOCK_SEL (Bit 0) */ -#define GPIO_GPIO_CLK_SEL_FUNC_CLOCK_SEL_Msk (0x7UL) /*!< GPIO GPIO_CLK_SEL: FUNC_CLOCK_SEL (Bitfield-Mask: 0x07) */ - -/* ----------------------------- GPIO_BIST_CTRL_REG ----------------------------- */ -#define GPIO_BIST_CTRL_REG_RAM_BIST_CONFIG_Pos (0UL) /*!< GPIO BIST_CTRL_REG: RAM_BIST_CONFIG (Bit 0) */ -#define GPIO_BIST_CTRL_REG_RAM_BIST_CONFIG_Msk (0x3UL) /*!< GPIO BIST_CTRL_REG: RAM_BIST_CONFIG (Bitfield-Mask: 0x03) */ -#define GPIO_BIST_CTRL_REG_RAM_BIST_PATTERN_Pos (2UL) /*!< GPIO BIST_CTRL_REG: RAM_BIST_PATTERN (Bit 2) */ -#define GPIO_BIST_CTRL_REG_RAM_BIST_PATTERN_Msk (0xcUL) /*!< GPIO BIST_CTRL_REG: RAM_BIST_PATTERN (Bitfield-Mask: 0x03) */ -#define GPIO_BIST_CTRL_REG_ROMBIST_ENABLE_Pos (4UL) /*!< GPIO BIST_CTRL_REG: ROMBIST_ENABLE (Bit 4) */ -#define GPIO_BIST_CTRL_REG_ROMBIST_ENABLE_Msk (0x10UL) /*!< GPIO BIST_CTRL_REG: ROMBIST_ENABLE (Bitfield-Mask: 0x01) */ -#define GPIO_BIST_CTRL_REG_RAMBIST_ENABLE_Pos (5UL) /*!< GPIO BIST_CTRL_REG: RAMBIST_ENABLE (Bit 5) */ -#define GPIO_BIST_CTRL_REG_RAMBIST_ENABLE_Msk (0x20UL) /*!< GPIO BIST_CTRL_REG: RAMBIST_ENABLE (Bitfield-Mask: 0x01) */ -#define GPIO_BIST_CTRL_REG_SYSRAMBIST_ENABLE_Pos (6UL) /*!< GPIO BIST_CTRL_REG: SYSRAMBIST_ENABLE (Bit 6) */ -#define GPIO_BIST_CTRL_REG_SYSRAMBIST_ENABLE_Msk (0x40UL) /*!< GPIO BIST_CTRL_REG: SYSRAMBIST_ENABLE (Bitfield-Mask: 0x01) */ -#define GPIO_BIST_CTRL_REG_SHOW_BIST_Pos (7UL) /*!< GPIO BIST_CTRL_REG: SHOW_BIST (Bit 7) */ -#define GPIO_BIST_CTRL_REG_SHOW_BIST_Msk (0x80UL) /*!< GPIO BIST_CTRL_REG: SHOW_BIST (Bitfield-Mask: 0x01) */ - -/* -------------------------- GPIO_RAMBIST_STATUS1_REG -------------------------- */ -#define GPIO_RAMBIST_STATUS1_REG_SYSRAM_BIST_LINE_FAIL_Pos (0UL) /*!< GPIO RAMBIST_STATUS1_REG: SYSRAM_BIST_LINE_FAIL (Bit 0) */ -#define GPIO_RAMBIST_STATUS1_REG_SYSRAM_BIST_LINE_FAIL_Msk (0x1UL) /*!< GPIO RAMBIST_STATUS1_REG: SYSRAM_BIST_LINE_FAIL (Bitfield-Mask: 0x01) */ -#define GPIO_RAMBIST_STATUS1_REG_SYSRAM_BIST_FAIL_Pos (1UL) /*!< GPIO RAMBIST_STATUS1_REG: SYSRAM_BIST_FAIL (Bit 1) */ -#define GPIO_RAMBIST_STATUS1_REG_SYSRAM_BIST_FAIL_Msk (0x2UL) /*!< GPIO RAMBIST_STATUS1_REG: SYSRAM_BIST_FAIL (Bitfield-Mask: 0x01) */ -#define GPIO_RAMBIST_STATUS1_REG_SYSRAM_BIST_BUSY_Pos (2UL) /*!< GPIO RAMBIST_STATUS1_REG: SYSRAM_BIST_BUSY (Bit 2) */ -#define GPIO_RAMBIST_STATUS1_REG_SYSRAM_BIST_BUSY_Msk (0x4UL) /*!< GPIO RAMBIST_STATUS1_REG: SYSRAM_BIST_BUSY (Bitfield-Mask: 0x01) */ -#define GPIO_RAMBIST_STATUS1_REG_CTRAM_BIST_LINE_FAIL_Pos (3UL) /*!< GPIO RAMBIST_STATUS1_REG: CTRAM_BIST_LINE_FAIL (Bit 3) */ -#define GPIO_RAMBIST_STATUS1_REG_CTRAM_BIST_LINE_FAIL_Msk (0x8UL) /*!< GPIO RAMBIST_STATUS1_REG: CTRAM_BIST_LINE_FAIL (Bitfield-Mask: 0x01) */ -#define GPIO_RAMBIST_STATUS1_REG_CTRAM_BIST_FAIL_Pos (4UL) /*!< GPIO RAMBIST_STATUS1_REG: CTRAM_BIST_FAIL (Bit 4) */ -#define GPIO_RAMBIST_STATUS1_REG_CTRAM_BIST_FAIL_Msk (0x10UL) /*!< GPIO RAMBIST_STATUS1_REG: CTRAM_BIST_FAIL (Bitfield-Mask: 0x01) */ -#define GPIO_RAMBIST_STATUS1_REG_CTRAM_BIST_BUSY_Pos (5UL) /*!< GPIO RAMBIST_STATUS1_REG: CTRAM_BIST_BUSY (Bit 5) */ -#define GPIO_RAMBIST_STATUS1_REG_CTRAM_BIST_BUSY_Msk (0x20UL) /*!< GPIO RAMBIST_STATUS1_REG: CTRAM_BIST_BUSY (Bitfield-Mask: 0x01) */ -#define GPIO_RAMBIST_STATUS1_REG_CDRAM_BIST_LINE_FAIL_Pos (6UL) /*!< GPIO RAMBIST_STATUS1_REG: CDRAM_BIST_LINE_FAIL (Bit 6) */ -#define GPIO_RAMBIST_STATUS1_REG_CDRAM_BIST_LINE_FAIL_Msk (0x40UL) /*!< GPIO RAMBIST_STATUS1_REG: CDRAM_BIST_LINE_FAIL (Bitfield-Mask: 0x01) */ -#define GPIO_RAMBIST_STATUS1_REG_CDRAM_BIST_FAIL_Pos (7UL) /*!< GPIO RAMBIST_STATUS1_REG: CDRAM_BIST_FAIL (Bit 7) */ -#define GPIO_RAMBIST_STATUS1_REG_CDRAM_BIST_FAIL_Msk (0x80UL) /*!< GPIO RAMBIST_STATUS1_REG: CDRAM_BIST_FAIL (Bitfield-Mask: 0x01) */ -#define GPIO_RAMBIST_STATUS1_REG_CDRAM_BIST_BUSY_Pos (8UL) /*!< GPIO RAMBIST_STATUS1_REG: CDRAM_BIST_BUSY (Bit 8) */ -#define GPIO_RAMBIST_STATUS1_REG_CDRAM_BIST_BUSY_Msk (0x100UL) /*!< GPIO RAMBIST_STATUS1_REG: CDRAM_BIST_BUSY (Bitfield-Mask: 0x01) */ -#define GPIO_RAMBIST_STATUS1_REG_USBRAM_BIST_LINE_FAIL_Pos (9UL) /*!< GPIO RAMBIST_STATUS1_REG: USBRAM_BIST_LINE_FAIL (Bit 9) */ -#define GPIO_RAMBIST_STATUS1_REG_USBRAM_BIST_LINE_FAIL_Msk (0x200UL) /*!< GPIO RAMBIST_STATUS1_REG: USBRAM_BIST_LINE_FAIL (Bitfield-Mask: 0x01) */ -#define GPIO_RAMBIST_STATUS1_REG_USBRAM_BIST_FAIL_Pos (10UL) /*!< GPIO RAMBIST_STATUS1_REG: USBRAM_BIST_FAIL (Bit 10) */ -#define GPIO_RAMBIST_STATUS1_REG_USBRAM_BIST_FAIL_Msk (0x400UL) /*!< GPIO RAMBIST_STATUS1_REG: USBRAM_BIST_FAIL (Bitfield-Mask: 0x01) */ -#define GPIO_RAMBIST_STATUS1_REG_USBRAM_BIST_BUSY_Pos (11UL) /*!< GPIO RAMBIST_STATUS1_REG: USBRAM_BIST_BUSY (Bit 11) */ -#define GPIO_RAMBIST_STATUS1_REG_USBRAM_BIST_BUSY_Msk (0x800UL) /*!< GPIO RAMBIST_STATUS1_REG: USBRAM_BIST_BUSY (Bitfield-Mask: 0x01) */ -#define GPIO_RAMBIST_STATUS1_REG_QSPIRAM_BIST_LINE_FAIL_Pos (12UL) /*!< GPIO RAMBIST_STATUS1_REG: QSPIRAM_BIST_LINE_FAIL (Bit 12) */ -#define GPIO_RAMBIST_STATUS1_REG_QSPIRAM_BIST_LINE_FAIL_Msk (0x1000UL) /*!< GPIO RAMBIST_STATUS1_REG: QSPIRAM_BIST_LINE_FAIL (Bitfield-Mask: 0x01) */ -#define GPIO_RAMBIST_STATUS1_REG_QSPIRAM_BIST_FAIL_Pos (13UL) /*!< GPIO RAMBIST_STATUS1_REG: QSPIRAM_BIST_FAIL (Bit 13) */ -#define GPIO_RAMBIST_STATUS1_REG_QSPIRAM_BIST_FAIL_Msk (0x2000UL) /*!< GPIO RAMBIST_STATUS1_REG: QSPIRAM_BIST_FAIL (Bitfield-Mask: 0x01) */ -#define GPIO_RAMBIST_STATUS1_REG_QSPIRAM_BIST_BUSY_Pos (14UL) /*!< GPIO RAMBIST_STATUS1_REG: QSPIRAM_BIST_BUSY (Bit 14) */ -#define GPIO_RAMBIST_STATUS1_REG_QSPIRAM_BIST_BUSY_Msk (0x4000UL) /*!< GPIO RAMBIST_STATUS1_REG: QSPIRAM_BIST_BUSY (Bitfield-Mask: 0x01) */ -#define GPIO_RAMBIST_STATUS1_REG_ROM_BIST_BUSY_Pos (15UL) /*!< GPIO RAMBIST_STATUS1_REG: ROM_BIST_BUSY (Bit 15) */ -#define GPIO_RAMBIST_STATUS1_REG_ROM_BIST_BUSY_Msk (0x8000UL) /*!< GPIO RAMBIST_STATUS1_REG: ROM_BIST_BUSY (Bitfield-Mask: 0x01) */ - -/* -------------------------- GPIO_RAMBIST_STATUS2_REG -------------------------- */ -#define GPIO_RAMBIST_STATUS2_REG_FTDF_TXRAM_BIST_LINE_FAIL_Pos (0UL) /*!< GPIO RAMBIST_STATUS2_REG: FTDF_TXRAM_BIST_LINE_FAIL (Bit 0) */ -#define GPIO_RAMBIST_STATUS2_REG_FTDF_TXRAM_BIST_LINE_FAIL_Msk (0x1UL) /*!< GPIO RAMBIST_STATUS2_REG: FTDF_TXRAM_BIST_LINE_FAIL (Bitfield-Mask: 0x01) */ -#define GPIO_RAMBIST_STATUS2_REG_FTDF_TXRAM_BIST_FAIL_Pos (1UL) /*!< GPIO RAMBIST_STATUS2_REG: FTDF_TXRAM_BIST_FAIL (Bit 1) */ -#define GPIO_RAMBIST_STATUS2_REG_FTDF_TXRAM_BIST_FAIL_Msk (0x2UL) /*!< GPIO RAMBIST_STATUS2_REG: FTDF_TXRAM_BIST_FAIL (Bitfield-Mask: 0x01) */ -#define GPIO_RAMBIST_STATUS2_REG_FTDF_TXRAM_BIST_BUSY_Pos (2UL) /*!< GPIO RAMBIST_STATUS2_REG: FTDF_TXRAM_BIST_BUSY (Bit 2) */ -#define GPIO_RAMBIST_STATUS2_REG_FTDF_TXRAM_BIST_BUSY_Msk (0x4UL) /*!< GPIO RAMBIST_STATUS2_REG: FTDF_TXRAM_BIST_BUSY (Bitfield-Mask: 0x01) */ -#define GPIO_RAMBIST_STATUS2_REG_FTDF_RXRAM_BIST_LINE_FAIL_Pos (3UL) /*!< GPIO RAMBIST_STATUS2_REG: FTDF_RXRAM_BIST_LINE_FAIL (Bit 3) */ -#define GPIO_RAMBIST_STATUS2_REG_FTDF_RXRAM_BIST_LINE_FAIL_Msk (0x8UL) /*!< GPIO RAMBIST_STATUS2_REG: FTDF_RXRAM_BIST_LINE_FAIL (Bitfield-Mask: 0x01) */ -#define GPIO_RAMBIST_STATUS2_REG_FTDF_RXRAM_BIST_FAIL_Pos (4UL) /*!< GPIO RAMBIST_STATUS2_REG: FTDF_RXRAM_BIST_FAIL (Bit 4) */ -#define GPIO_RAMBIST_STATUS2_REG_FTDF_RXRAM_BIST_FAIL_Msk (0x10UL) /*!< GPIO RAMBIST_STATUS2_REG: FTDF_RXRAM_BIST_FAIL (Bitfield-Mask: 0x01) */ -#define GPIO_RAMBIST_STATUS2_REG_FTDF_RXRAM_BIST_BUSY_Pos (5UL) /*!< GPIO RAMBIST_STATUS2_REG: FTDF_RXRAM_BIST_BUSY (Bit 5) */ -#define GPIO_RAMBIST_STATUS2_REG_FTDF_RXRAM_BIST_BUSY_Msk (0x20UL) /*!< GPIO RAMBIST_STATUS2_REG: FTDF_RXRAM_BIST_BUSY (Bitfield-Mask: 0x01) */ -#define GPIO_RAMBIST_STATUS2_REG_ECC_CODERAM_BIST_LINE_FAIL_Pos (6UL) /*!< GPIO RAMBIST_STATUS2_REG: ECC_CODERAM_BIST_LINE_FAIL (Bit 6) */ -#define GPIO_RAMBIST_STATUS2_REG_ECC_CODERAM_BIST_LINE_FAIL_Msk (0x40UL) /*!< GPIO RAMBIST_STATUS2_REG: ECC_CODERAM_BIST_LINE_FAIL (Bitfield-Mask: 0x01) */ -#define GPIO_RAMBIST_STATUS2_REG_ECC_CODERAM_BIST_FAIL_Pos (7UL) /*!< GPIO RAMBIST_STATUS2_REG: ECC_CODERAM_BIST_FAIL (Bit 7) */ -#define GPIO_RAMBIST_STATUS2_REG_ECC_CODERAM_BIST_FAIL_Msk (0x80UL) /*!< GPIO RAMBIST_STATUS2_REG: ECC_CODERAM_BIST_FAIL (Bitfield-Mask: 0x01) */ -#define GPIO_RAMBIST_STATUS2_REG_ECC_CODERAM_BIST_BUSY_Pos (8UL) /*!< GPIO RAMBIST_STATUS2_REG: ECC_CODERAM_BIST_BUSY (Bit 8) */ -#define GPIO_RAMBIST_STATUS2_REG_ECC_CODERAM_BIST_BUSY_Msk (0x100UL) /*!< GPIO RAMBIST_STATUS2_REG: ECC_CODERAM_BIST_BUSY (Bitfield-Mask: 0x01) */ -#define GPIO_RAMBIST_STATUS2_REG_ECC_TCMRAM_BIST_LINE_FAIL_Pos (9UL) /*!< GPIO RAMBIST_STATUS2_REG: ECC_TCMRAM_BIST_LINE_FAIL (Bit 9) */ -#define GPIO_RAMBIST_STATUS2_REG_ECC_TCMRAM_BIST_LINE_FAIL_Msk (0x200UL) /*!< GPIO RAMBIST_STATUS2_REG: ECC_TCMRAM_BIST_LINE_FAIL (Bitfield-Mask: 0x01) */ -#define GPIO_RAMBIST_STATUS2_REG_ECC_TCMRAM_BIST_FAIL_Pos (10UL) /*!< GPIO RAMBIST_STATUS2_REG: ECC_TCMRAM_BIST_FAIL (Bit 10) */ -#define GPIO_RAMBIST_STATUS2_REG_ECC_TCMRAM_BIST_FAIL_Msk (0x400UL) /*!< GPIO RAMBIST_STATUS2_REG: ECC_TCMRAM_BIST_FAIL (Bitfield-Mask: 0x01) */ -#define GPIO_RAMBIST_STATUS2_REG_ECC_TCMRAM_BIST_BUSY_Pos (11UL) /*!< GPIO RAMBIST_STATUS2_REG: ECC_TCMRAM_BIST_BUSY (Bit 11) */ -#define GPIO_RAMBIST_STATUS2_REG_ECC_TCMRAM_BIST_BUSY_Msk (0x800UL) /*!< GPIO RAMBIST_STATUS2_REG: ECC_TCMRAM_BIST_BUSY (Bitfield-Mask: 0x01) */ -#define GPIO_RAMBIST_STATUS2_REG_CRYPTORAM_BIST_LINE_FAIL_Pos (12UL) /*!< GPIO RAMBIST_STATUS2_REG: CRYPTORAM_BIST_LINE_FAIL (Bit 12) */ -#define GPIO_RAMBIST_STATUS2_REG_CRYPTORAM_BIST_LINE_FAIL_Msk (0x1000UL) /*!< GPIO RAMBIST_STATUS2_REG: CRYPTORAM_BIST_LINE_FAIL (Bitfield-Mask: 0x01) */ -#define GPIO_RAMBIST_STATUS2_REG_CRYPTORAM_BIST_FAIL_Pos (13UL) /*!< GPIO RAMBIST_STATUS2_REG: CRYPTORAM_BIST_FAIL (Bit 13) */ -#define GPIO_RAMBIST_STATUS2_REG_CRYPTORAM_BIST_FAIL_Msk (0x2000UL) /*!< GPIO RAMBIST_STATUS2_REG: CRYPTORAM_BIST_FAIL (Bitfield-Mask: 0x01) */ -#define GPIO_RAMBIST_STATUS2_REG_CRYPTORAM_BIST_BUSY_Pos (14UL) /*!< GPIO RAMBIST_STATUS2_REG: CRYPTORAM_BIST_BUSY (Bit 14) */ -#define GPIO_RAMBIST_STATUS2_REG_CRYPTORAM_BIST_BUSY_Msk (0x4000UL) /*!< GPIO RAMBIST_STATUS2_REG: CRYPTORAM_BIST_BUSY (Bitfield-Mask: 0x01) */ - -/* -------------------------- GPIO_RAMBIST_STATUS3_REG -------------------------- */ -#define GPIO_RAMBIST_STATUS3_REG_FTDF_FPRAM_BIST_LINE_FAIL_Pos (0UL) /*!< GPIO RAMBIST_STATUS3_REG: FTDF_FPRAM_BIST_LINE_FAIL (Bit 0) */ -#define GPIO_RAMBIST_STATUS3_REG_FTDF_FPRAM_BIST_LINE_FAIL_Msk (0x1UL) /*!< GPIO RAMBIST_STATUS3_REG: FTDF_FPRAM_BIST_LINE_FAIL (Bitfield-Mask: 0x01) */ -#define GPIO_RAMBIST_STATUS3_REG_FTDF_FPRAM_BIST_FAIL_Pos (1UL) /*!< GPIO RAMBIST_STATUS3_REG: FTDF_FPRAM_BIST_FAIL (Bit 1) */ -#define GPIO_RAMBIST_STATUS3_REG_FTDF_FPRAM_BIST_FAIL_Msk (0x2UL) /*!< GPIO RAMBIST_STATUS3_REG: FTDF_FPRAM_BIST_FAIL (Bitfield-Mask: 0x01) */ -#define GPIO_RAMBIST_STATUS3_REG_FTDF_FPRAM_BIST_BUSY_Pos (2UL) /*!< GPIO RAMBIST_STATUS3_REG: FTDF_FPRAM_BIST_BUSY (Bit 2) */ -#define GPIO_RAMBIST_STATUS3_REG_FTDF_FPRAM_BIST_BUSY_Msk (0x4UL) /*!< GPIO RAMBIST_STATUS3_REG: FTDF_FPRAM_BIST_BUSY (Bitfield-Mask: 0x01) */ - -/* -------------------------- GPIO_ROMBIST_RESULTL_REG -------------------------- */ -#define GPIO_ROMBIST_RESULTL_REG_ROMBIST_RESULTL_Pos (0UL) /*!< GPIO ROMBIST_RESULTL_REG: ROMBIST_RESULTL (Bit 0) */ -#define GPIO_ROMBIST_RESULTL_REG_ROMBIST_RESULTL_Msk (0xffffUL) /*!< GPIO ROMBIST_RESULTL_REG: ROMBIST_RESULTL (Bitfield-Mask: 0xffff) */ - -/* -------------------------- GPIO_ROMBIST_RESULTH_REG -------------------------- */ -#define GPIO_ROMBIST_RESULTH_REG_ROMBIST_RESULTH_Pos (0UL) /*!< GPIO ROMBIST_RESULTH_REG: ROMBIST_RESULTH (Bit 0) */ -#define GPIO_ROMBIST_RESULTH_REG_ROMBIST_RESULTH_Msk (0xffffUL) /*!< GPIO ROMBIST_RESULTH_REG: ROMBIST_RESULTH (Bitfield-Mask: 0xffff) */ - -/* ----------------------------- GPIO_TEST_CTRL_REG ----------------------------- */ -#define GPIO_TEST_CTRL_REG_SHOW_CLOCKS_Pos (0UL) /*!< GPIO TEST_CTRL_REG: SHOW_CLOCKS (Bit 0) */ -#define GPIO_TEST_CTRL_REG_SHOW_CLOCKS_Msk (0x1UL) /*!< GPIO TEST_CTRL_REG: SHOW_CLOCKS (Bitfield-Mask: 0x01) */ -#define GPIO_TEST_CTRL_REG_ENABLE_RFPT_Pos (1UL) /*!< GPIO TEST_CTRL_REG: ENABLE_RFPT (Bit 1) */ -#define GPIO_TEST_CTRL_REG_ENABLE_RFPT_Msk (0x2UL) /*!< GPIO TEST_CTRL_REG: ENABLE_RFPT (Bitfield-Mask: 0x01) */ -#define GPIO_TEST_CTRL_REG_SHOW_PLL_TEST_OUT_Pos (2UL) /*!< GPIO TEST_CTRL_REG: SHOW_PLL_TEST_OUT (Bit 2) */ -#define GPIO_TEST_CTRL_REG_SHOW_PLL_TEST_OUT_Msk (0x4UL) /*!< GPIO TEST_CTRL_REG: SHOW_PLL_TEST_OUT (Bitfield-Mask: 0x01) */ -#define GPIO_TEST_CTRL_REG_SHOW_DCDC_TESTBUS_Pos (3UL) /*!< GPIO TEST_CTRL_REG: SHOW_DCDC_TESTBUS (Bit 3) */ -#define GPIO_TEST_CTRL_REG_SHOW_DCDC_TESTBUS_Msk (0x8UL) /*!< GPIO TEST_CTRL_REG: SHOW_DCDC_TESTBUS (Bitfield-Mask: 0x01) */ -#define GPIO_TEST_CTRL_REG_XTAL16M_CAP_TEST_EN_Pos (4UL) /*!< GPIO TEST_CTRL_REG: XTAL16M_CAP_TEST_EN (Bit 4) */ -#define GPIO_TEST_CTRL_REG_XTAL16M_CAP_TEST_EN_Msk (0x10UL) /*!< GPIO TEST_CTRL_REG: XTAL16M_CAP_TEST_EN (Bitfield-Mask: 0x01) */ -#define GPIO_TEST_CTRL_REG_SHOW_IF_RO_Pos (5UL) /*!< GPIO TEST_CTRL_REG: SHOW_IF_RO (Bit 5) */ -#define GPIO_TEST_CTRL_REG_SHOW_IF_RO_Msk (0x20UL) /*!< GPIO TEST_CTRL_REG: SHOW_IF_RO (Bitfield-Mask: 0x01) */ -#define GPIO_TEST_CTRL_REG_PLL_TST_MODE_Pos (6UL) /*!< GPIO TEST_CTRL_REG: PLL_TST_MODE (Bit 6) */ -#define GPIO_TEST_CTRL_REG_PLL_TST_MODE_Msk (0x40UL) /*!< GPIO TEST_CTRL_REG: PLL_TST_MODE (Bitfield-Mask: 0x01) */ -#define GPIO_TEST_CTRL_REG_SHOW_TXDAC_MOD_Pos (7UL) /*!< GPIO TEST_CTRL_REG: SHOW_TXDAC_MOD (Bit 7) */ -#define GPIO_TEST_CTRL_REG_SHOW_TXDAC_MOD_Msk (0x80UL) /*!< GPIO TEST_CTRL_REG: SHOW_TXDAC_MOD (Bitfield-Mask: 0x01) */ -#define GPIO_TEST_CTRL_REG_SHOW_PWR_TST_OUT_Pos (8UL) /*!< GPIO TEST_CTRL_REG: SHOW_PWR_TST_OUT (Bit 8) */ -#define GPIO_TEST_CTRL_REG_SHOW_PWR_TST_OUT_Msk (0x700UL) /*!< GPIO TEST_CTRL_REG: SHOW_PWR_TST_OUT (Bitfield-Mask: 0x07) */ -#define GPIO_TEST_CTRL_REG_XTAL16M_TST_SYS_Pos (12UL) /*!< GPIO TEST_CTRL_REG: XTAL16M_TST_SYS (Bit 12) */ -#define GPIO_TEST_CTRL_REG_XTAL16M_TST_SYS_Msk (0x3000UL) /*!< GPIO TEST_CTRL_REG: XTAL16M_TST_SYS (Bitfield-Mask: 0x03) */ -#define GPIO_TEST_CTRL_REG_XTAL16M_TRIM_TEST_EN_Pos (14UL) /*!< GPIO TEST_CTRL_REG: XTAL16M_TRIM_TEST_EN (Bit 14) */ -#define GPIO_TEST_CTRL_REG_XTAL16M_TRIM_TEST_EN_Msk (0x4000UL) /*!< GPIO TEST_CTRL_REG: XTAL16M_TRIM_TEST_EN (Bitfield-Mask: 0x01) */ - -/* ----------------------------- GPIO_TEST_CTRL2_REG ---------------------------- */ -#define GPIO_TEST_CTRL2_REG_ANA_TESTMUX_CTRL_Pos (0UL) /*!< GPIO TEST_CTRL2_REG: ANA_TESTMUX_CTRL (Bit 0) */ -#define GPIO_TEST_CTRL2_REG_ANA_TESTMUX_CTRL_Msk (0xfUL) /*!< GPIO TEST_CTRL2_REG: ANA_TESTMUX_CTRL (Bitfield-Mask: 0x0f) */ -#define GPIO_TEST_CTRL2_REG_RF_IN_TESTMUX_CTRL_Pos (8UL) /*!< GPIO TEST_CTRL2_REG: RF_IN_TESTMUX_CTRL (Bit 8) */ -#define GPIO_TEST_CTRL2_REG_RF_IN_TESTMUX_CTRL_Msk (0x300UL) /*!< GPIO TEST_CTRL2_REG: RF_IN_TESTMUX_CTRL (Bitfield-Mask: 0x03) */ - -/* ----------------------------- GPIO_TEST_CTRL3_REG ---------------------------- */ -#define GPIO_TEST_CTRL3_REG_RF_TEST_OUT_SEL_Pos (0UL) /*!< GPIO TEST_CTRL3_REG: RF_TEST_OUT_SEL (Bit 0) */ -#define GPIO_TEST_CTRL3_REG_RF_TEST_OUT_SEL_Msk (0x3fUL) /*!< GPIO TEST_CTRL3_REG: RF_TEST_OUT_SEL (Bitfield-Mask: 0x3f) */ -#define GPIO_TEST_CTRL3_REG_VBUS_COMPARATOR_TEST_Pos (6UL) /*!< GPIO TEST_CTRL3_REG: VBUS_COMPARATOR_TEST (Bit 6) */ -#define GPIO_TEST_CTRL3_REG_VBUS_COMPARATOR_TEST_Msk (0x40UL) /*!< GPIO TEST_CTRL3_REG: VBUS_COMPARATOR_TEST (Bitfield-Mask: 0x01) */ -#define GPIO_TEST_CTRL3_REG_RF_TEST_OUT_PARAM_Pos (8UL) /*!< GPIO TEST_CTRL3_REG: RF_TEST_OUT_PARAM (Bit 8) */ -#define GPIO_TEST_CTRL3_REG_RF_TEST_OUT_PARAM_Msk (0xff00UL) /*!< GPIO TEST_CTRL3_REG: RF_TEST_OUT_PARAM (Bitfield-Mask: 0xff) */ - -/* ----------------------------- GPIO_TEST_CTRL4_REG ---------------------------- */ -#define GPIO_TEST_CTRL4_REG_RF_TEST_IN_SEL_Pos (0UL) /*!< GPIO TEST_CTRL4_REG: RF_TEST_IN_SEL (Bit 0) */ -#define GPIO_TEST_CTRL4_REG_RF_TEST_IN_SEL_Msk (0x7UL) /*!< GPIO TEST_CTRL4_REG: RF_TEST_IN_SEL (Bitfield-Mask: 0x07) */ -#define GPIO_TEST_CTRL4_REG_RF_TEST_IN_PARAM_Pos (8UL) /*!< GPIO TEST_CTRL4_REG: RF_TEST_IN_PARAM (Bit 8) */ -#define GPIO_TEST_CTRL4_REG_RF_TEST_IN_PARAM_Msk (0xff00UL) /*!< GPIO TEST_CTRL4_REG: RF_TEST_IN_PARAM (Bitfield-Mask: 0xff) */ - -/* ----------------------------- GPIO_TEST_CTRL5_REG ---------------------------- */ -#define GPIO_TEST_CTRL5_REG_TEST_BUS_TO_AVS_Pos (0UL) /*!< GPIO TEST_CTRL5_REG: TEST_BUS_TO_AVS (Bit 0) */ -#define GPIO_TEST_CTRL5_REG_TEST_BUS_TO_AVS_Msk (0x1UL) /*!< GPIO TEST_CTRL5_REG: TEST_BUS_TO_AVS (Bitfield-Mask: 0x01) */ -#define GPIO_TEST_CTRL5_REG_TEST_LDO_1V4_Pos (1UL) /*!< GPIO TEST_CTRL5_REG: TEST_LDO_1V4 (Bit 1) */ -#define GPIO_TEST_CTRL5_REG_TEST_LDO_1V4_Msk (0x2UL) /*!< GPIO TEST_CTRL5_REG: TEST_LDO_1V4 (Bitfield-Mask: 0x01) */ -#define GPIO_TEST_CTRL5_REG_TEST_LDO_1V8_FLASH_Pos (2UL) /*!< GPIO TEST_CTRL5_REG: TEST_LDO_1V8_FLASH (Bit 2) */ -#define GPIO_TEST_CTRL5_REG_TEST_LDO_1V8_FLASH_Msk (0x4UL) /*!< GPIO TEST_CTRL5_REG: TEST_LDO_1V8_FLASH (Bitfield-Mask: 0x01) */ -#define GPIO_TEST_CTRL5_REG_TEST_LDO_CORE_Pos (3UL) /*!< GPIO TEST_CTRL5_REG: TEST_LDO_CORE (Bit 3) */ -#define GPIO_TEST_CTRL5_REG_TEST_LDO_CORE_Msk (0x8UL) /*!< GPIO TEST_CTRL5_REG: TEST_LDO_CORE (Bitfield-Mask: 0x01) */ -#define GPIO_TEST_CTRL5_REG_TEST_LDO_1V8_PA_Pos (4UL) /*!< GPIO TEST_CTRL5_REG: TEST_LDO_1V8_PA (Bit 4) */ -#define GPIO_TEST_CTRL5_REG_TEST_LDO_1V8_PA_Msk (0x10UL) /*!< GPIO TEST_CTRL5_REG: TEST_LDO_1V8_PA (Bitfield-Mask: 0x01) */ -#define GPIO_TEST_CTRL5_REG_TEST_LDO_ADC_Pos (5UL) /*!< GPIO TEST_CTRL5_REG: TEST_LDO_ADC (Bit 5) */ -#define GPIO_TEST_CTRL5_REG_TEST_LDO_ADC_Msk (0x20UL) /*!< GPIO TEST_CTRL5_REG: TEST_LDO_ADC (Bitfield-Mask: 0x01) */ -#define GPIO_TEST_CTRL5_REG_TEST_LDO_PLL_Pos (6UL) /*!< GPIO TEST_CTRL5_REG: TEST_LDO_PLL (Bit 6) */ -#define GPIO_TEST_CTRL5_REG_TEST_LDO_PLL_Msk (0x40UL) /*!< GPIO TEST_CTRL5_REG: TEST_LDO_PLL (Bitfield-Mask: 0x01) */ -#define GPIO_TEST_CTRL5_REG_TEST_BANDGAP_I_TEST_Pos (7UL) /*!< GPIO TEST_CTRL5_REG: TEST_BANDGAP_I_TEST (Bit 7) */ -#define GPIO_TEST_CTRL5_REG_TEST_BANDGAP_I_TEST_Msk (0x80UL) /*!< GPIO TEST_CTRL5_REG: TEST_BANDGAP_I_TEST (Bitfield-Mask: 0x01) */ -#define GPIO_TEST_CTRL5_REG_TEST_SIMO_BUCK_Pos (8UL) /*!< GPIO TEST_CTRL5_REG: TEST_SIMO_BUCK (Bit 8) */ -#define GPIO_TEST_CTRL5_REG_TEST_SIMO_BUCK_Msk (0x100UL) /*!< GPIO TEST_CTRL5_REG: TEST_SIMO_BUCK (Bitfield-Mask: 0x01) */ -#define GPIO_TEST_CTRL5_REG_TEST_BOD_VREF_OUT_Pos (9UL) /*!< GPIO TEST_CTRL5_REG: TEST_BOD_VREF_OUT (Bit 9) */ -#define GPIO_TEST_CTRL5_REG_TEST_BOD_VREF_OUT_Msk (0x200UL) /*!< GPIO TEST_CTRL5_REG: TEST_BOD_VREF_OUT (Bitfield-Mask: 0x01) */ -#define GPIO_TEST_CTRL5_REG_TEST_BOD_VREF_IN_Pos (10UL) /*!< GPIO TEST_CTRL5_REG: TEST_BOD_VREF_IN (Bit 10) */ -#define GPIO_TEST_CTRL5_REG_TEST_BOD_VREF_IN_Msk (0x400UL) /*!< GPIO TEST_CTRL5_REG: TEST_BOD_VREF_IN (Bitfield-Mask: 0x01) */ -#define GPIO_TEST_CTRL5_REG_TEST_I_DCDC_FILT_Pos (11UL) /*!< GPIO TEST_CTRL5_REG: TEST_I_DCDC_FILT (Bit 11) */ -#define GPIO_TEST_CTRL5_REG_TEST_I_DCDC_FILT_Msk (0x800UL) /*!< GPIO TEST_CTRL5_REG: TEST_I_DCDC_FILT (Bitfield-Mask: 0x01) */ -#define GPIO_TEST_CTRL5_REG_TEST_VCONT_A_Pos (12UL) /*!< GPIO TEST_CTRL5_REG: TEST_VCONT_A (Bit 12) */ -#define GPIO_TEST_CTRL5_REG_TEST_VCONT_A_Msk (0x1000UL) /*!< GPIO TEST_CTRL5_REG: TEST_VCONT_A (Bitfield-Mask: 0x01) */ -#define GPIO_TEST_CTRL5_REG_TEST_VREF_1V2_A_Pos (13UL) /*!< GPIO TEST_CTRL5_REG: TEST_VREF_1V2_A (Bit 13) */ -#define GPIO_TEST_CTRL5_REG_TEST_VREF_1V2_A_Msk (0x2000UL) /*!< GPIO TEST_CTRL5_REG: TEST_VREF_1V2_A (Bitfield-Mask: 0x01) */ -#define GPIO_TEST_CTRL5_REG_TEST_POR_VBAT_NOK_AVD_Pos (14UL) /*!< GPIO TEST_CTRL5_REG: TEST_POR_VBAT_NOK_AVD (Bit 14) */ -#define GPIO_TEST_CTRL5_REG_TEST_POR_VBAT_NOK_AVD_Msk (0x4000UL) /*!< GPIO TEST_CTRL5_REG: TEST_POR_VBAT_NOK_AVD (Bitfield-Mask: 0x01) */ - - -/* ================================================================================ */ -/* ================ struct 'GPREG' Position & Mask ================ */ -/* ================================================================================ */ - - -/* ---------------------------- GPREG_SET_FREEZE_REG ---------------------------- */ -#define GPREG_SET_FREEZE_REG_FRZ_WKUPTIM_Pos (0UL) /*!< GPREG SET_FREEZE_REG: FRZ_WKUPTIM (Bit 0) */ -#define GPREG_SET_FREEZE_REG_FRZ_WKUPTIM_Msk (0x1UL) /*!< GPREG SET_FREEZE_REG: FRZ_WKUPTIM (Bitfield-Mask: 0x01) */ -#define GPREG_SET_FREEZE_REG_FRZ_SWTIM0_Pos (1UL) /*!< GPREG SET_FREEZE_REG: FRZ_SWTIM0 (Bit 1) */ -#define GPREG_SET_FREEZE_REG_FRZ_SWTIM0_Msk (0x2UL) /*!< GPREG SET_FREEZE_REG: FRZ_SWTIM0 (Bitfield-Mask: 0x01) */ -#define GPREG_SET_FREEZE_REG_FRZ_BLETIM_Pos (2UL) /*!< GPREG SET_FREEZE_REG: FRZ_BLETIM (Bit 2) */ -#define GPREG_SET_FREEZE_REG_FRZ_BLETIM_Msk (0x4UL) /*!< GPREG SET_FREEZE_REG: FRZ_BLETIM (Bitfield-Mask: 0x01) */ -#define GPREG_SET_FREEZE_REG_FRZ_WDOG_Pos (3UL) /*!< GPREG SET_FREEZE_REG: FRZ_WDOG (Bit 3) */ -#define GPREG_SET_FREEZE_REG_FRZ_WDOG_Msk (0x8UL) /*!< GPREG SET_FREEZE_REG: FRZ_WDOG (Bitfield-Mask: 0x01) */ -#define GPREG_SET_FREEZE_REG_FRZ_USB_Pos (4UL) /*!< GPREG SET_FREEZE_REG: FRZ_USB (Bit 4) */ -#define GPREG_SET_FREEZE_REG_FRZ_USB_Msk (0x10UL) /*!< GPREG SET_FREEZE_REG: FRZ_USB (Bitfield-Mask: 0x01) */ -#define GPREG_SET_FREEZE_REG_FRZ_DMA_Pos (5UL) /*!< GPREG SET_FREEZE_REG: FRZ_DMA (Bit 5) */ -#define GPREG_SET_FREEZE_REG_FRZ_DMA_Msk (0x20UL) /*!< GPREG SET_FREEZE_REG: FRZ_DMA (Bitfield-Mask: 0x01) */ -#define GPREG_SET_FREEZE_REG_FRZ_SWTIM1_Pos (6UL) /*!< GPREG SET_FREEZE_REG: FRZ_SWTIM1 (Bit 6) */ -#define GPREG_SET_FREEZE_REG_FRZ_SWTIM1_Msk (0x40UL) /*!< GPREG SET_FREEZE_REG: FRZ_SWTIM1 (Bitfield-Mask: 0x01) */ -#define GPREG_SET_FREEZE_REG_FRZ_SWTIM2_Pos (7UL) /*!< GPREG SET_FREEZE_REG: FRZ_SWTIM2 (Bit 7) */ -#define GPREG_SET_FREEZE_REG_FRZ_SWTIM2_Msk (0x80UL) /*!< GPREG SET_FREEZE_REG: FRZ_SWTIM2 (Bitfield-Mask: 0x01) */ - -/* --------------------------- GPREG_RESET_FREEZE_REG --------------------------- */ -#define GPREG_RESET_FREEZE_REG_FRZ_WKUPTIM_Pos (0UL) /*!< GPREG RESET_FREEZE_REG: FRZ_WKUPTIM (Bit 0) */ -#define GPREG_RESET_FREEZE_REG_FRZ_WKUPTIM_Msk (0x1UL) /*!< GPREG RESET_FREEZE_REG: FRZ_WKUPTIM (Bitfield-Mask: 0x01) */ -#define GPREG_RESET_FREEZE_REG_FRZ_SWTIM0_Pos (1UL) /*!< GPREG RESET_FREEZE_REG: FRZ_SWTIM0 (Bit 1) */ -#define GPREG_RESET_FREEZE_REG_FRZ_SWTIM0_Msk (0x2UL) /*!< GPREG RESET_FREEZE_REG: FRZ_SWTIM0 (Bitfield-Mask: 0x01) */ -#define GPREG_RESET_FREEZE_REG_FRZ_BLETIM_Pos (2UL) /*!< GPREG RESET_FREEZE_REG: FRZ_BLETIM (Bit 2) */ -#define GPREG_RESET_FREEZE_REG_FRZ_BLETIM_Msk (0x4UL) /*!< GPREG RESET_FREEZE_REG: FRZ_BLETIM (Bitfield-Mask: 0x01) */ -#define GPREG_RESET_FREEZE_REG_FRZ_WDOG_Pos (3UL) /*!< GPREG RESET_FREEZE_REG: FRZ_WDOG (Bit 3) */ -#define GPREG_RESET_FREEZE_REG_FRZ_WDOG_Msk (0x8UL) /*!< GPREG RESET_FREEZE_REG: FRZ_WDOG (Bitfield-Mask: 0x01) */ -#define GPREG_RESET_FREEZE_REG_FRZ_USB_Pos (4UL) /*!< GPREG RESET_FREEZE_REG: FRZ_USB (Bit 4) */ -#define GPREG_RESET_FREEZE_REG_FRZ_USB_Msk (0x10UL) /*!< GPREG RESET_FREEZE_REG: FRZ_USB (Bitfield-Mask: 0x01) */ -#define GPREG_RESET_FREEZE_REG_FRZ_DMA_Pos (5UL) /*!< GPREG RESET_FREEZE_REG: FRZ_DMA (Bit 5) */ -#define GPREG_RESET_FREEZE_REG_FRZ_DMA_Msk (0x20UL) /*!< GPREG RESET_FREEZE_REG: FRZ_DMA (Bitfield-Mask: 0x01) */ -#define GPREG_RESET_FREEZE_REG_FRZ_SWTIM1_Pos (6UL) /*!< GPREG RESET_FREEZE_REG: FRZ_SWTIM1 (Bit 6) */ -#define GPREG_RESET_FREEZE_REG_FRZ_SWTIM1_Msk (0x40UL) /*!< GPREG RESET_FREEZE_REG: FRZ_SWTIM1 (Bitfield-Mask: 0x01) */ -#define GPREG_RESET_FREEZE_REG_FRZ_SWTIM2_Pos (7UL) /*!< GPREG RESET_FREEZE_REG: FRZ_SWTIM2 (Bit 7) */ -#define GPREG_RESET_FREEZE_REG_FRZ_SWTIM2_Msk (0x80UL) /*!< GPREG RESET_FREEZE_REG: FRZ_SWTIM2 (Bitfield-Mask: 0x01) */ - -/* ------------------------------- GPREG_DEBUG_REG ------------------------------ */ -#define GPREG_DEBUG_REG_DEBUGS_FREEZE_EN_Pos (0UL) /*!< GPREG DEBUG_REG: DEBUGS_FREEZE_EN (Bit 0) */ -#define GPREG_DEBUG_REG_DEBUGS_FREEZE_EN_Msk (0x1UL) /*!< GPREG DEBUG_REG: DEBUGS_FREEZE_EN (Bitfield-Mask: 0x01) */ - -/* ----------------------------- GPREG_GP_STATUS_REG ---------------------------- */ -#define GPREG_GP_STATUS_REG_CAL_PHASE_Pos (0UL) /*!< GPREG GP_STATUS_REG: CAL_PHASE (Bit 0) */ -#define GPREG_GP_STATUS_REG_CAL_PHASE_Msk (0x1UL) /*!< GPREG GP_STATUS_REG: CAL_PHASE (Bitfield-Mask: 0x01) */ - -/* ---------------------------- GPREG_GP_CONTROL_REG ---------------------------- */ -#define GPREG_GP_CONTROL_REG_BLE_WAKEUP_REQ_Pos (0UL) /*!< GPREG GP_CONTROL_REG: BLE_WAKEUP_REQ (Bit 0) */ -#define GPREG_GP_CONTROL_REG_BLE_WAKEUP_REQ_Msk (0x1UL) /*!< GPREG GP_CONTROL_REG: BLE_WAKEUP_REQ (Bitfield-Mask: 0x01) */ -#define GPREG_GP_CONTROL_REG_BLE_H2H_BRIDGE_BYPASS_Pos (1UL) /*!< GPREG GP_CONTROL_REG: BLE_H2H_BRIDGE_BYPASS (Bit 1) */ -#define GPREG_GP_CONTROL_REG_BLE_H2H_BRIDGE_BYPASS_Msk (0x2UL) /*!< GPREG GP_CONTROL_REG: BLE_H2H_BRIDGE_BYPASS (Bitfield-Mask: 0x01) */ -#define GPREG_GP_CONTROL_REG_BLE_WAKEUP_LP_IRQ_Pos (2UL) /*!< GPREG GP_CONTROL_REG: BLE_WAKEUP_LP_IRQ (Bit 2) */ -#define GPREG_GP_CONTROL_REG_BLE_WAKEUP_LP_IRQ_Msk (0x4UL) /*!< GPREG GP_CONTROL_REG: BLE_WAKEUP_LP_IRQ (Bitfield-Mask: 0x01) */ - -/* --------------------------- GPREG_ECC_BASE_ADDR_REG -------------------------- */ -#define GPREG_ECC_BASE_ADDR_REG_ECC_BASE_ADDR_Pos (0UL) /*!< GPREG ECC_BASE_ADDR_REG: ECC_BASE_ADDR (Bit 0) */ -#define GPREG_ECC_BASE_ADDR_REG_ECC_BASE_ADDR_Msk (0x7fUL) /*!< GPREG ECC_BASE_ADDR_REG: ECC_BASE_ADDR (Bitfield-Mask: 0x7f) */ - -/* ---------------------------- GPREG_LED_CONTROL_REG --------------------------- */ -#define GPREG_LED_CONTROL_REG_LED1_SRC_SEL_Pos (0UL) /*!< GPREG LED_CONTROL_REG: LED1_SRC_SEL (Bit 0) */ -#define GPREG_LED_CONTROL_REG_LED1_SRC_SEL_Msk (0x1UL) /*!< GPREG LED_CONTROL_REG: LED1_SRC_SEL (Bitfield-Mask: 0x01) */ -#define GPREG_LED_CONTROL_REG_LED2_SRC_SEL_Pos (1UL) /*!< GPREG LED_CONTROL_REG: LED2_SRC_SEL (Bit 1) */ -#define GPREG_LED_CONTROL_REG_LED2_SRC_SEL_Msk (0x2UL) /*!< GPREG LED_CONTROL_REG: LED2_SRC_SEL (Bitfield-Mask: 0x01) */ -#define GPREG_LED_CONTROL_REG_LED3_SRC_SEL_Pos (2UL) /*!< GPREG LED_CONTROL_REG: LED3_SRC_SEL (Bit 2) */ -#define GPREG_LED_CONTROL_REG_LED3_SRC_SEL_Msk (0x4UL) /*!< GPREG LED_CONTROL_REG: LED3_SRC_SEL (Bitfield-Mask: 0x01) */ -#define GPREG_LED_CONTROL_REG_LED1_EN_Pos (3UL) /*!< GPREG LED_CONTROL_REG: LED1_EN (Bit 3) */ -#define GPREG_LED_CONTROL_REG_LED1_EN_Msk (0x8UL) /*!< GPREG LED_CONTROL_REG: LED1_EN (Bitfield-Mask: 0x01) */ -#define GPREG_LED_CONTROL_REG_LED2_EN_Pos (4UL) /*!< GPREG LED_CONTROL_REG: LED2_EN (Bit 4) */ -#define GPREG_LED_CONTROL_REG_LED2_EN_Msk (0x10UL) /*!< GPREG LED_CONTROL_REG: LED2_EN (Bitfield-Mask: 0x01) */ -#define GPREG_LED_CONTROL_REG_LED3_EN_Pos (5UL) /*!< GPREG LED_CONTROL_REG: LED3_EN (Bit 5) */ -#define GPREG_LED_CONTROL_REG_LED3_EN_Msk (0x20UL) /*!< GPREG LED_CONTROL_REG: LED3_EN (Bitfield-Mask: 0x01) */ -#define GPREG_LED_CONTROL_REG_LED_TRIM_Pos (6UL) /*!< GPREG LED_CONTROL_REG: LED_TRIM (Bit 6) */ -#define GPREG_LED_CONTROL_REG_LED_TRIM_Msk (0x3c0UL) /*!< GPREG LED_CONTROL_REG: LED_TRIM (Bitfield-Mask: 0x0f) */ - -/* ------------------------- GPREG_BLE_FINECNT_SAMP_REG ------------------------- */ -#define GPREG_BLE_FINECNT_SAMP_REG_BLE_FINECNT_SAMP_Pos (0UL) /*!< GPREG BLE_FINECNT_SAMP_REG: BLE_FINECNT_SAMP (Bit 0) */ -#define GPREG_BLE_FINECNT_SAMP_REG_BLE_FINECNT_SAMP_Msk (0x3ffUL) /*!< GPREG BLE_FINECNT_SAMP_REG: BLE_FINECNT_SAMP (Bitfield-Mask: 0x3ff) */ - -/* --------------------------- GPREG_PLL_SYS_CTRL1_REG -------------------------- */ -#define GPREG_PLL_SYS_CTRL1_REG_PLL_EN_Pos (0UL) /*!< GPREG PLL_SYS_CTRL1_REG: PLL_EN (Bit 0) */ -#define GPREG_PLL_SYS_CTRL1_REG_PLL_EN_Msk (0x1UL) /*!< GPREG PLL_SYS_CTRL1_REG: PLL_EN (Bitfield-Mask: 0x01) */ -#define GPREG_PLL_SYS_CTRL1_REG_LDO_PLL_ENABLE_Pos (1UL) /*!< GPREG PLL_SYS_CTRL1_REG: LDO_PLL_ENABLE (Bit 1) */ -#define GPREG_PLL_SYS_CTRL1_REG_LDO_PLL_ENABLE_Msk (0x2UL) /*!< GPREG PLL_SYS_CTRL1_REG: LDO_PLL_ENABLE (Bitfield-Mask: 0x01) */ -#define GPREG_PLL_SYS_CTRL1_REG_LDO_PLL_VREF_HOLD_Pos (2UL) /*!< GPREG PLL_SYS_CTRL1_REG: LDO_PLL_VREF_HOLD (Bit 2) */ -#define GPREG_PLL_SYS_CTRL1_REG_LDO_PLL_VREF_HOLD_Msk (0x4UL) /*!< GPREG PLL_SYS_CTRL1_REG: LDO_PLL_VREF_HOLD (Bitfield-Mask: 0x01) */ -#define GPREG_PLL_SYS_CTRL1_REG_PLL_R_DIV_Pos (8UL) /*!< GPREG PLL_SYS_CTRL1_REG: PLL_R_DIV (Bit 8) */ -#define GPREG_PLL_SYS_CTRL1_REG_PLL_R_DIV_Msk (0x7f00UL) /*!< GPREG PLL_SYS_CTRL1_REG: PLL_R_DIV (Bitfield-Mask: 0x7f) */ - -/* --------------------------- GPREG_PLL_SYS_CTRL2_REG -------------------------- */ -#define GPREG_PLL_SYS_CTRL2_REG_PLL_N_DIV_Pos (0UL) /*!< GPREG PLL_SYS_CTRL2_REG: PLL_N_DIV (Bit 0) */ -#define GPREG_PLL_SYS_CTRL2_REG_PLL_N_DIV_Msk (0x7fUL) /*!< GPREG PLL_SYS_CTRL2_REG: PLL_N_DIV (Bitfield-Mask: 0x7f) */ -#define GPREG_PLL_SYS_CTRL2_REG_PLL_DEL_SEL_Pos (12UL) /*!< GPREG PLL_SYS_CTRL2_REG: PLL_DEL_SEL (Bit 12) */ -#define GPREG_PLL_SYS_CTRL2_REG_PLL_DEL_SEL_Msk (0x3000UL) /*!< GPREG PLL_SYS_CTRL2_REG: PLL_DEL_SEL (Bitfield-Mask: 0x03) */ -#define GPREG_PLL_SYS_CTRL2_REG_PLL_SEL_MIN_CUR_INT_Pos (14UL) /*!< GPREG PLL_SYS_CTRL2_REG: PLL_SEL_MIN_CUR_INT (Bit 14) */ -#define GPREG_PLL_SYS_CTRL2_REG_PLL_SEL_MIN_CUR_INT_Msk (0x4000UL) /*!< GPREG PLL_SYS_CTRL2_REG: PLL_SEL_MIN_CUR_INT (Bitfield-Mask: 0x01) */ - -/* --------------------------- GPREG_PLL_SYS_CTRL3_REG -------------------------- */ -#define GPREG_PLL_SYS_CTRL3_REG_PLL_ICP_SEL_Pos (0UL) /*!< GPREG PLL_SYS_CTRL3_REG: PLL_ICP_SEL (Bit 0) */ -#define GPREG_PLL_SYS_CTRL3_REG_PLL_ICP_SEL_Msk (0x1fUL) /*!< GPREG PLL_SYS_CTRL3_REG: PLL_ICP_SEL (Bitfield-Mask: 0x1f) */ -#define GPREG_PLL_SYS_CTRL3_REG_PLL_START_DEL_Pos (10UL) /*!< GPREG PLL_SYS_CTRL3_REG: PLL_START_DEL (Bit 10) */ -#define GPREG_PLL_SYS_CTRL3_REG_PLL_START_DEL_Msk (0x7c00UL) /*!< GPREG PLL_SYS_CTRL3_REG: PLL_START_DEL (Bitfield-Mask: 0x1f) */ -#define GPREG_PLL_SYS_CTRL3_REG_PLL_RECALIB_Pos (15UL) /*!< GPREG PLL_SYS_CTRL3_REG: PLL_RECALIB (Bit 15) */ -#define GPREG_PLL_SYS_CTRL3_REG_PLL_RECALIB_Msk (0x8000UL) /*!< GPREG PLL_SYS_CTRL3_REG: PLL_RECALIB (Bitfield-Mask: 0x01) */ - -/* -------------------------- GPREG_PLL_SYS_STATUS_REG -------------------------- */ -#define GPREG_PLL_SYS_STATUS_REG_PLL_LOCK_FINE_Pos (0UL) /*!< GPREG PLL_SYS_STATUS_REG: PLL_LOCK_FINE (Bit 0) */ -#define GPREG_PLL_SYS_STATUS_REG_PLL_LOCK_FINE_Msk (0x1UL) /*!< GPREG PLL_SYS_STATUS_REG: PLL_LOCK_FINE (Bitfield-Mask: 0x01) */ -#define GPREG_PLL_SYS_STATUS_REG_LDO_PLL_OK_Pos (1UL) /*!< GPREG PLL_SYS_STATUS_REG: LDO_PLL_OK (Bit 1) */ -#define GPREG_PLL_SYS_STATUS_REG_LDO_PLL_OK_Msk (0x2UL) /*!< GPREG PLL_SYS_STATUS_REG: LDO_PLL_OK (Bitfield-Mask: 0x01) */ -#define GPREG_PLL_SYS_STATUS_REG_PLL_PLL_BEST_MIN_CUR_Pos (5UL) /*!< GPREG PLL_SYS_STATUS_REG: PLL_PLL_BEST_MIN_CUR (Bit 5) */ -#define GPREG_PLL_SYS_STATUS_REG_PLL_PLL_BEST_MIN_CUR_Msk (0x7e0UL) /*!< GPREG PLL_SYS_STATUS_REG: PLL_PLL_BEST_MIN_CUR (Bitfield-Mask: 0x3f) */ -#define GPREG_PLL_SYS_STATUS_REG_PLL_CALIBR_END_Pos (11UL) /*!< GPREG PLL_SYS_STATUS_REG: PLL_CALIBR_END (Bit 11) */ -#define GPREG_PLL_SYS_STATUS_REG_PLL_CALIBR_END_Msk (0x800UL) /*!< GPREG PLL_SYS_STATUS_REG: PLL_CALIBR_END (Bitfield-Mask: 0x01) */ - -/* --------------------------- GPREG_PLL_SYS_TEST_REG --------------------------- */ -#define GPREG_PLL_SYS_TEST_REG_PLL_DIS_LOOPFILT_Pos (0UL) /*!< GPREG PLL_SYS_TEST_REG: PLL_DIS_LOOPFILT (Bit 0) */ -#define GPREG_PLL_SYS_TEST_REG_PLL_DIS_LOOPFILT_Msk (0x1UL) /*!< GPREG PLL_SYS_TEST_REG: PLL_DIS_LOOPFILT (Bitfield-Mask: 0x01) */ -#define GPREG_PLL_SYS_TEST_REG_PLL_MIN_CURRENT_Pos (1UL) /*!< GPREG PLL_SYS_TEST_REG: PLL_MIN_CURRENT (Bit 1) */ -#define GPREG_PLL_SYS_TEST_REG_PLL_MIN_CURRENT_Msk (0x7eUL) /*!< GPREG PLL_SYS_TEST_REG: PLL_MIN_CURRENT (Bitfield-Mask: 0x3f) */ -#define GPREG_PLL_SYS_TEST_REG_PLL_TEST_VCTR_Pos (7UL) /*!< GPREG PLL_SYS_TEST_REG: PLL_TEST_VCTR (Bit 7) */ -#define GPREG_PLL_SYS_TEST_REG_PLL_TEST_VCTR_Msk (0x80UL) /*!< GPREG PLL_SYS_TEST_REG: PLL_TEST_VCTR (Bitfield-Mask: 0x01) */ -#define GPREG_PLL_SYS_TEST_REG_PLL_OPEN_LOOP_Pos (8UL) /*!< GPREG PLL_SYS_TEST_REG: PLL_OPEN_LOOP (Bit 8) */ -#define GPREG_PLL_SYS_TEST_REG_PLL_OPEN_LOOP_Msk (0x100UL) /*!< GPREG PLL_SYS_TEST_REG: PLL_OPEN_LOOP (Bitfield-Mask: 0x01) */ -#define GPREG_PLL_SYS_TEST_REG_PLL_CHANGE_Pos (9UL) /*!< GPREG PLL_SYS_TEST_REG: PLL_CHANGE (Bit 9) */ -#define GPREG_PLL_SYS_TEST_REG_PLL_CHANGE_Msk (0x200UL) /*!< GPREG PLL_SYS_TEST_REG: PLL_CHANGE (Bitfield-Mask: 0x01) */ -#define GPREG_PLL_SYS_TEST_REG_PLL_SEL_N_DIV_TEST_Pos (10UL) /*!< GPREG PLL_SYS_TEST_REG: PLL_SEL_N_DIV_TEST (Bit 10) */ -#define GPREG_PLL_SYS_TEST_REG_PLL_SEL_N_DIV_TEST_Msk (0x400UL) /*!< GPREG PLL_SYS_TEST_REG: PLL_SEL_N_DIV_TEST (Bitfield-Mask: 0x01) */ -#define GPREG_PLL_SYS_TEST_REG_PLL_SEL_R_DIV_TEST_Pos (11UL) /*!< GPREG PLL_SYS_TEST_REG: PLL_SEL_R_DIV_TEST (Bit 11) */ -#define GPREG_PLL_SYS_TEST_REG_PLL_SEL_R_DIV_TEST_Msk (0x800UL) /*!< GPREG PLL_SYS_TEST_REG: PLL_SEL_R_DIV_TEST (Bitfield-Mask: 0x01) */ -#define GPREG_PLL_SYS_TEST_REG_PLL_LOCK_DET_RES_CNT_Pos (13UL) /*!< GPREG PLL_SYS_TEST_REG: PLL_LOCK_DET_RES_CNT (Bit 13) */ -#define GPREG_PLL_SYS_TEST_REG_PLL_LOCK_DET_RES_CNT_Msk (0xe000UL) /*!< GPREG PLL_SYS_TEST_REG: PLL_LOCK_DET_RES_CNT (Bitfield-Mask: 0x07) */ - - -/* ================================================================================ */ -/* ================ struct 'I2C' Position & Mask ================ */ -/* ================================================================================ */ - - -/* ------------------------------- I2C_I2C_CON_REG ------------------------------ */ -#define I2C_I2C_CON_REG_I2C_MASTER_MODE_Pos (0UL) /*!< I2C I2C_CON_REG: I2C_MASTER_MODE (Bit 0) */ -#define I2C_I2C_CON_REG_I2C_MASTER_MODE_Msk (0x1UL) /*!< I2C I2C_CON_REG: I2C_MASTER_MODE (Bitfield-Mask: 0x01) */ -#define I2C_I2C_CON_REG_I2C_SPEED_Pos (1UL) /*!< I2C I2C_CON_REG: I2C_SPEED (Bit 1) */ -#define I2C_I2C_CON_REG_I2C_SPEED_Msk (0x6UL) /*!< I2C I2C_CON_REG: I2C_SPEED (Bitfield-Mask: 0x03) */ -#define I2C_I2C_CON_REG_I2C_10BITADDR_SLAVE_Pos (3UL) /*!< I2C I2C_CON_REG: I2C_10BITADDR_SLAVE (Bit 3) */ -#define I2C_I2C_CON_REG_I2C_10BITADDR_SLAVE_Msk (0x8UL) /*!< I2C I2C_CON_REG: I2C_10BITADDR_SLAVE (Bitfield-Mask: 0x01) */ -#define I2C_I2C_CON_REG_I2C_10BITADDR_MASTER_Pos (4UL) /*!< I2C I2C_CON_REG: I2C_10BITADDR_MASTER (Bit 4) */ -#define I2C_I2C_CON_REG_I2C_10BITADDR_MASTER_Msk (0x10UL) /*!< I2C I2C_CON_REG: I2C_10BITADDR_MASTER (Bitfield-Mask: 0x01) */ -#define I2C_I2C_CON_REG_I2C_RESTART_EN_Pos (5UL) /*!< I2C I2C_CON_REG: I2C_RESTART_EN (Bit 5) */ -#define I2C_I2C_CON_REG_I2C_RESTART_EN_Msk (0x20UL) /*!< I2C I2C_CON_REG: I2C_RESTART_EN (Bitfield-Mask: 0x01) */ -#define I2C_I2C_CON_REG_I2C_SLAVE_DISABLE_Pos (6UL) /*!< I2C I2C_CON_REG: I2C_SLAVE_DISABLE (Bit 6) */ -#define I2C_I2C_CON_REG_I2C_SLAVE_DISABLE_Msk (0x40UL) /*!< I2C I2C_CON_REG: I2C_SLAVE_DISABLE (Bitfield-Mask: 0x01) */ - -/* ------------------------------- I2C_I2C_TAR_REG ------------------------------ */ -#define I2C_I2C_TAR_REG_IC_TAR_Pos (0UL) /*!< I2C I2C_TAR_REG: IC_TAR (Bit 0) */ -#define I2C_I2C_TAR_REG_IC_TAR_Msk (0x3ffUL) /*!< I2C I2C_TAR_REG: IC_TAR (Bitfield-Mask: 0x3ff) */ -#define I2C_I2C_TAR_REG_GC_OR_START_Pos (10UL) /*!< I2C I2C_TAR_REG: GC_OR_START (Bit 10) */ -#define I2C_I2C_TAR_REG_GC_OR_START_Msk (0x400UL) /*!< I2C I2C_TAR_REG: GC_OR_START (Bitfield-Mask: 0x01) */ -#define I2C_I2C_TAR_REG_SPECIAL_Pos (11UL) /*!< I2C I2C_TAR_REG: SPECIAL (Bit 11) */ -#define I2C_I2C_TAR_REG_SPECIAL_Msk (0x800UL) /*!< I2C I2C_TAR_REG: SPECIAL (Bitfield-Mask: 0x01) */ - -/* ------------------------------- I2C_I2C_SAR_REG ------------------------------ */ -#define I2C_I2C_SAR_REG_IC_SAR_Pos (0UL) /*!< I2C I2C_SAR_REG: IC_SAR (Bit 0) */ -#define I2C_I2C_SAR_REG_IC_SAR_Msk (0x3ffUL) /*!< I2C I2C_SAR_REG: IC_SAR (Bitfield-Mask: 0x3ff) */ - -/* ---------------------------- I2C_I2C_DATA_CMD_REG ---------------------------- */ -#define I2C_I2C_DATA_CMD_REG_DAT_Pos (0UL) /*!< I2C I2C_DATA_CMD_REG: DAT (Bit 0) */ -#define I2C_I2C_DATA_CMD_REG_DAT_Msk (0xffUL) /*!< I2C I2C_DATA_CMD_REG: DAT (Bitfield-Mask: 0xff) */ -#define I2C_I2C_DATA_CMD_REG_CMD_Pos (8UL) /*!< I2C I2C_DATA_CMD_REG: CMD (Bit 8) */ -#define I2C_I2C_DATA_CMD_REG_CMD_Msk (0x100UL) /*!< I2C I2C_DATA_CMD_REG: CMD (Bitfield-Mask: 0x01) */ -#define I2C_I2C_DATA_CMD_REG_STOP_Pos (9UL) /*!< I2C I2C_DATA_CMD_REG: STOP (Bit 9) */ -#define I2C_I2C_DATA_CMD_REG_STOP_Msk (0x200UL) /*!< I2C I2C_DATA_CMD_REG: STOP (Bitfield-Mask: 0x01) */ -#define I2C_I2C_DATA_CMD_REG_RESTART_Pos (10UL) /*!< I2C I2C_DATA_CMD_REG: RESTART (Bit 10) */ -#define I2C_I2C_DATA_CMD_REG_RESTART_Msk (0x400UL) /*!< I2C I2C_DATA_CMD_REG: RESTART (Bitfield-Mask: 0x01) */ - -/* --------------------------- I2C_I2C_SS_SCL_HCNT_REG -------------------------- */ -#define I2C_I2C_SS_SCL_HCNT_REG_IC_SS_SCL_HCNT_Pos (0UL) /*!< I2C I2C_SS_SCL_HCNT_REG: IC_SS_SCL_HCNT (Bit 0) */ -#define I2C_I2C_SS_SCL_HCNT_REG_IC_SS_SCL_HCNT_Msk (0xffffUL) /*!< I2C I2C_SS_SCL_HCNT_REG: IC_SS_SCL_HCNT (Bitfield-Mask: 0xffff) */ - -/* --------------------------- I2C_I2C_SS_SCL_LCNT_REG -------------------------- */ -#define I2C_I2C_SS_SCL_LCNT_REG_IC_SS_SCL_LCNT_Pos (0UL) /*!< I2C I2C_SS_SCL_LCNT_REG: IC_SS_SCL_LCNT (Bit 0) */ -#define I2C_I2C_SS_SCL_LCNT_REG_IC_SS_SCL_LCNT_Msk (0xffffUL) /*!< I2C I2C_SS_SCL_LCNT_REG: IC_SS_SCL_LCNT (Bitfield-Mask: 0xffff) */ - -/* --------------------------- I2C_I2C_FS_SCL_HCNT_REG -------------------------- */ -#define I2C_I2C_FS_SCL_HCNT_REG_IC_FS_SCL_HCNT_Pos (0UL) /*!< I2C I2C_FS_SCL_HCNT_REG: IC_FS_SCL_HCNT (Bit 0) */ -#define I2C_I2C_FS_SCL_HCNT_REG_IC_FS_SCL_HCNT_Msk (0xffffUL) /*!< I2C I2C_FS_SCL_HCNT_REG: IC_FS_SCL_HCNT (Bitfield-Mask: 0xffff) */ - -/* --------------------------- I2C_I2C_FS_SCL_LCNT_REG -------------------------- */ -#define I2C_I2C_FS_SCL_LCNT_REG_IC_FS_SCL_LCNT_Pos (0UL) /*!< I2C I2C_FS_SCL_LCNT_REG: IC_FS_SCL_LCNT (Bit 0) */ -#define I2C_I2C_FS_SCL_LCNT_REG_IC_FS_SCL_LCNT_Msk (0xffffUL) /*!< I2C I2C_FS_SCL_LCNT_REG: IC_FS_SCL_LCNT (Bitfield-Mask: 0xffff) */ - -/* ---------------------------- I2C_I2C_INTR_STAT_REG --------------------------- */ -#define I2C_I2C_INTR_STAT_REG_R_RX_UNDER_Pos (0UL) /*!< I2C I2C_INTR_STAT_REG: R_RX_UNDER (Bit 0) */ -#define I2C_I2C_INTR_STAT_REG_R_RX_UNDER_Msk (0x1UL) /*!< I2C I2C_INTR_STAT_REG: R_RX_UNDER (Bitfield-Mask: 0x01) */ -#define I2C_I2C_INTR_STAT_REG_R_RX_OVER_Pos (1UL) /*!< I2C I2C_INTR_STAT_REG: R_RX_OVER (Bit 1) */ -#define I2C_I2C_INTR_STAT_REG_R_RX_OVER_Msk (0x2UL) /*!< I2C I2C_INTR_STAT_REG: R_RX_OVER (Bitfield-Mask: 0x01) */ -#define I2C_I2C_INTR_STAT_REG_R_RX_FULL_Pos (2UL) /*!< I2C I2C_INTR_STAT_REG: R_RX_FULL (Bit 2) */ -#define I2C_I2C_INTR_STAT_REG_R_RX_FULL_Msk (0x4UL) /*!< I2C I2C_INTR_STAT_REG: R_RX_FULL (Bitfield-Mask: 0x01) */ -#define I2C_I2C_INTR_STAT_REG_R_TX_OVER_Pos (3UL) /*!< I2C I2C_INTR_STAT_REG: R_TX_OVER (Bit 3) */ -#define I2C_I2C_INTR_STAT_REG_R_TX_OVER_Msk (0x8UL) /*!< I2C I2C_INTR_STAT_REG: R_TX_OVER (Bitfield-Mask: 0x01) */ -#define I2C_I2C_INTR_STAT_REG_R_TX_EMPTY_Pos (4UL) /*!< I2C I2C_INTR_STAT_REG: R_TX_EMPTY (Bit 4) */ -#define I2C_I2C_INTR_STAT_REG_R_TX_EMPTY_Msk (0x10UL) /*!< I2C I2C_INTR_STAT_REG: R_TX_EMPTY (Bitfield-Mask: 0x01) */ -#define I2C_I2C_INTR_STAT_REG_R_RD_REQ_Pos (5UL) /*!< I2C I2C_INTR_STAT_REG: R_RD_REQ (Bit 5) */ -#define I2C_I2C_INTR_STAT_REG_R_RD_REQ_Msk (0x20UL) /*!< I2C I2C_INTR_STAT_REG: R_RD_REQ (Bitfield-Mask: 0x01) */ -#define I2C_I2C_INTR_STAT_REG_R_TX_ABRT_Pos (6UL) /*!< I2C I2C_INTR_STAT_REG: R_TX_ABRT (Bit 6) */ -#define I2C_I2C_INTR_STAT_REG_R_TX_ABRT_Msk (0x40UL) /*!< I2C I2C_INTR_STAT_REG: R_TX_ABRT (Bitfield-Mask: 0x01) */ -#define I2C_I2C_INTR_STAT_REG_R_RX_DONE_Pos (7UL) /*!< I2C I2C_INTR_STAT_REG: R_RX_DONE (Bit 7) */ -#define I2C_I2C_INTR_STAT_REG_R_RX_DONE_Msk (0x80UL) /*!< I2C I2C_INTR_STAT_REG: R_RX_DONE (Bitfield-Mask: 0x01) */ -#define I2C_I2C_INTR_STAT_REG_R_ACTIVITY_Pos (8UL) /*!< I2C I2C_INTR_STAT_REG: R_ACTIVITY (Bit 8) */ -#define I2C_I2C_INTR_STAT_REG_R_ACTIVITY_Msk (0x100UL) /*!< I2C I2C_INTR_STAT_REG: R_ACTIVITY (Bitfield-Mask: 0x01) */ -#define I2C_I2C_INTR_STAT_REG_R_STOP_DET_Pos (9UL) /*!< I2C I2C_INTR_STAT_REG: R_STOP_DET (Bit 9) */ -#define I2C_I2C_INTR_STAT_REG_R_STOP_DET_Msk (0x200UL) /*!< I2C I2C_INTR_STAT_REG: R_STOP_DET (Bitfield-Mask: 0x01) */ -#define I2C_I2C_INTR_STAT_REG_R_START_DET_Pos (10UL) /*!< I2C I2C_INTR_STAT_REG: R_START_DET (Bit 10) */ -#define I2C_I2C_INTR_STAT_REG_R_START_DET_Msk (0x400UL) /*!< I2C I2C_INTR_STAT_REG: R_START_DET (Bitfield-Mask: 0x01) */ -#define I2C_I2C_INTR_STAT_REG_R_GEN_CALL_Pos (11UL) /*!< I2C I2C_INTR_STAT_REG: R_GEN_CALL (Bit 11) */ -#define I2C_I2C_INTR_STAT_REG_R_GEN_CALL_Msk (0x800UL) /*!< I2C I2C_INTR_STAT_REG: R_GEN_CALL (Bitfield-Mask: 0x01) */ - -/* ---------------------------- I2C_I2C_INTR_MASK_REG --------------------------- */ -#define I2C_I2C_INTR_MASK_REG_M_RX_UNDER_Pos (0UL) /*!< I2C I2C_INTR_MASK_REG: M_RX_UNDER (Bit 0) */ -#define I2C_I2C_INTR_MASK_REG_M_RX_UNDER_Msk (0x1UL) /*!< I2C I2C_INTR_MASK_REG: M_RX_UNDER (Bitfield-Mask: 0x01) */ -#define I2C_I2C_INTR_MASK_REG_M_RX_OVER_Pos (1UL) /*!< I2C I2C_INTR_MASK_REG: M_RX_OVER (Bit 1) */ -#define I2C_I2C_INTR_MASK_REG_M_RX_OVER_Msk (0x2UL) /*!< I2C I2C_INTR_MASK_REG: M_RX_OVER (Bitfield-Mask: 0x01) */ -#define I2C_I2C_INTR_MASK_REG_M_RX_FULL_Pos (2UL) /*!< I2C I2C_INTR_MASK_REG: M_RX_FULL (Bit 2) */ -#define I2C_I2C_INTR_MASK_REG_M_RX_FULL_Msk (0x4UL) /*!< I2C I2C_INTR_MASK_REG: M_RX_FULL (Bitfield-Mask: 0x01) */ -#define I2C_I2C_INTR_MASK_REG_M_TX_OVER_Pos (3UL) /*!< I2C I2C_INTR_MASK_REG: M_TX_OVER (Bit 3) */ -#define I2C_I2C_INTR_MASK_REG_M_TX_OVER_Msk (0x8UL) /*!< I2C I2C_INTR_MASK_REG: M_TX_OVER (Bitfield-Mask: 0x01) */ -#define I2C_I2C_INTR_MASK_REG_M_TX_EMPTY_Pos (4UL) /*!< I2C I2C_INTR_MASK_REG: M_TX_EMPTY (Bit 4) */ -#define I2C_I2C_INTR_MASK_REG_M_TX_EMPTY_Msk (0x10UL) /*!< I2C I2C_INTR_MASK_REG: M_TX_EMPTY (Bitfield-Mask: 0x01) */ -#define I2C_I2C_INTR_MASK_REG_M_RD_REQ_Pos (5UL) /*!< I2C I2C_INTR_MASK_REG: M_RD_REQ (Bit 5) */ -#define I2C_I2C_INTR_MASK_REG_M_RD_REQ_Msk (0x20UL) /*!< I2C I2C_INTR_MASK_REG: M_RD_REQ (Bitfield-Mask: 0x01) */ -#define I2C_I2C_INTR_MASK_REG_M_TX_ABRT_Pos (6UL) /*!< I2C I2C_INTR_MASK_REG: M_TX_ABRT (Bit 6) */ -#define I2C_I2C_INTR_MASK_REG_M_TX_ABRT_Msk (0x40UL) /*!< I2C I2C_INTR_MASK_REG: M_TX_ABRT (Bitfield-Mask: 0x01) */ -#define I2C_I2C_INTR_MASK_REG_M_RX_DONE_Pos (7UL) /*!< I2C I2C_INTR_MASK_REG: M_RX_DONE (Bit 7) */ -#define I2C_I2C_INTR_MASK_REG_M_RX_DONE_Msk (0x80UL) /*!< I2C I2C_INTR_MASK_REG: M_RX_DONE (Bitfield-Mask: 0x01) */ -#define I2C_I2C_INTR_MASK_REG_M_ACTIVITY_Pos (8UL) /*!< I2C I2C_INTR_MASK_REG: M_ACTIVITY (Bit 8) */ -#define I2C_I2C_INTR_MASK_REG_M_ACTIVITY_Msk (0x100UL) /*!< I2C I2C_INTR_MASK_REG: M_ACTIVITY (Bitfield-Mask: 0x01) */ -#define I2C_I2C_INTR_MASK_REG_M_STOP_DET_Pos (9UL) /*!< I2C I2C_INTR_MASK_REG: M_STOP_DET (Bit 9) */ -#define I2C_I2C_INTR_MASK_REG_M_STOP_DET_Msk (0x200UL) /*!< I2C I2C_INTR_MASK_REG: M_STOP_DET (Bitfield-Mask: 0x01) */ -#define I2C_I2C_INTR_MASK_REG_M_START_DET_Pos (10UL) /*!< I2C I2C_INTR_MASK_REG: M_START_DET (Bit 10) */ -#define I2C_I2C_INTR_MASK_REG_M_START_DET_Msk (0x400UL) /*!< I2C I2C_INTR_MASK_REG: M_START_DET (Bitfield-Mask: 0x01) */ -#define I2C_I2C_INTR_MASK_REG_M_GEN_CALL_Pos (11UL) /*!< I2C I2C_INTR_MASK_REG: M_GEN_CALL (Bit 11) */ -#define I2C_I2C_INTR_MASK_REG_M_GEN_CALL_Msk (0x800UL) /*!< I2C I2C_INTR_MASK_REG: M_GEN_CALL (Bitfield-Mask: 0x01) */ - -/* -------------------------- I2C_I2C_RAW_INTR_STAT_REG ------------------------- */ -#define I2C_I2C_RAW_INTR_STAT_REG_RX_UNDER_Pos (0UL) /*!< I2C I2C_RAW_INTR_STAT_REG: RX_UNDER (Bit 0) */ -#define I2C_I2C_RAW_INTR_STAT_REG_RX_UNDER_Msk (0x1UL) /*!< I2C I2C_RAW_INTR_STAT_REG: RX_UNDER (Bitfield-Mask: 0x01) */ -#define I2C_I2C_RAW_INTR_STAT_REG_RX_OVER_Pos (1UL) /*!< I2C I2C_RAW_INTR_STAT_REG: RX_OVER (Bit 1) */ -#define I2C_I2C_RAW_INTR_STAT_REG_RX_OVER_Msk (0x2UL) /*!< I2C I2C_RAW_INTR_STAT_REG: RX_OVER (Bitfield-Mask: 0x01) */ -#define I2C_I2C_RAW_INTR_STAT_REG_RX_FULL_Pos (2UL) /*!< I2C I2C_RAW_INTR_STAT_REG: RX_FULL (Bit 2) */ -#define I2C_I2C_RAW_INTR_STAT_REG_RX_FULL_Msk (0x4UL) /*!< I2C I2C_RAW_INTR_STAT_REG: RX_FULL (Bitfield-Mask: 0x01) */ -#define I2C_I2C_RAW_INTR_STAT_REG_TX_OVER_Pos (3UL) /*!< I2C I2C_RAW_INTR_STAT_REG: TX_OVER (Bit 3) */ -#define I2C_I2C_RAW_INTR_STAT_REG_TX_OVER_Msk (0x8UL) /*!< I2C I2C_RAW_INTR_STAT_REG: TX_OVER (Bitfield-Mask: 0x01) */ -#define I2C_I2C_RAW_INTR_STAT_REG_TX_EMPTY_Pos (4UL) /*!< I2C I2C_RAW_INTR_STAT_REG: TX_EMPTY (Bit 4) */ -#define I2C_I2C_RAW_INTR_STAT_REG_TX_EMPTY_Msk (0x10UL) /*!< I2C I2C_RAW_INTR_STAT_REG: TX_EMPTY (Bitfield-Mask: 0x01) */ -#define I2C_I2C_RAW_INTR_STAT_REG_RD_REQ_Pos (5UL) /*!< I2C I2C_RAW_INTR_STAT_REG: RD_REQ (Bit 5) */ -#define I2C_I2C_RAW_INTR_STAT_REG_RD_REQ_Msk (0x20UL) /*!< I2C I2C_RAW_INTR_STAT_REG: RD_REQ (Bitfield-Mask: 0x01) */ -#define I2C_I2C_RAW_INTR_STAT_REG_TX_ABRT_Pos (6UL) /*!< I2C I2C_RAW_INTR_STAT_REG: TX_ABRT (Bit 6) */ -#define I2C_I2C_RAW_INTR_STAT_REG_TX_ABRT_Msk (0x40UL) /*!< I2C I2C_RAW_INTR_STAT_REG: TX_ABRT (Bitfield-Mask: 0x01) */ -#define I2C_I2C_RAW_INTR_STAT_REG_RX_DONE_Pos (7UL) /*!< I2C I2C_RAW_INTR_STAT_REG: RX_DONE (Bit 7) */ -#define I2C_I2C_RAW_INTR_STAT_REG_RX_DONE_Msk (0x80UL) /*!< I2C I2C_RAW_INTR_STAT_REG: RX_DONE (Bitfield-Mask: 0x01) */ -#define I2C_I2C_RAW_INTR_STAT_REG_ACTIVITY_Pos (8UL) /*!< I2C I2C_RAW_INTR_STAT_REG: ACTIVITY (Bit 8) */ -#define I2C_I2C_RAW_INTR_STAT_REG_ACTIVITY_Msk (0x100UL) /*!< I2C I2C_RAW_INTR_STAT_REG: ACTIVITY (Bitfield-Mask: 0x01) */ -#define I2C_I2C_RAW_INTR_STAT_REG_STOP_DET_Pos (9UL) /*!< I2C I2C_RAW_INTR_STAT_REG: STOP_DET (Bit 9) */ -#define I2C_I2C_RAW_INTR_STAT_REG_STOP_DET_Msk (0x200UL) /*!< I2C I2C_RAW_INTR_STAT_REG: STOP_DET (Bitfield-Mask: 0x01) */ -#define I2C_I2C_RAW_INTR_STAT_REG_START_DET_Pos (10UL) /*!< I2C I2C_RAW_INTR_STAT_REG: START_DET (Bit 10) */ -#define I2C_I2C_RAW_INTR_STAT_REG_START_DET_Msk (0x400UL) /*!< I2C I2C_RAW_INTR_STAT_REG: START_DET (Bitfield-Mask: 0x01) */ -#define I2C_I2C_RAW_INTR_STAT_REG_GEN_CALL_Pos (11UL) /*!< I2C I2C_RAW_INTR_STAT_REG: GEN_CALL (Bit 11) */ -#define I2C_I2C_RAW_INTR_STAT_REG_GEN_CALL_Msk (0x800UL) /*!< I2C I2C_RAW_INTR_STAT_REG: GEN_CALL (Bitfield-Mask: 0x01) */ - -/* ------------------------------ I2C_I2C_RX_TL_REG ----------------------------- */ -#define I2C_I2C_RX_TL_REG_RX_TL_Pos (0UL) /*!< I2C I2C_RX_TL_REG: RX_TL (Bit 0) */ -#define I2C_I2C_RX_TL_REG_RX_TL_Msk (0x1fUL) /*!< I2C I2C_RX_TL_REG: RX_TL (Bitfield-Mask: 0x1f) */ - -/* ------------------------------ I2C_I2C_TX_TL_REG ----------------------------- */ -#define I2C_I2C_TX_TL_REG_TX_TL_Pos (0UL) /*!< I2C I2C_TX_TL_REG: TX_TL (Bit 0) */ -#define I2C_I2C_TX_TL_REG_TX_TL_Msk (0x1fUL) /*!< I2C I2C_TX_TL_REG: TX_TL (Bitfield-Mask: 0x1f) */ - -/* ---------------------------- I2C_I2C_CLR_INTR_REG ---------------------------- */ -#define I2C_I2C_CLR_INTR_REG_CLR_INTR_Pos (0UL) /*!< I2C I2C_CLR_INTR_REG: CLR_INTR (Bit 0) */ -#define I2C_I2C_CLR_INTR_REG_CLR_INTR_Msk (0x1UL) /*!< I2C I2C_CLR_INTR_REG: CLR_INTR (Bitfield-Mask: 0x01) */ - -/* -------------------------- I2C_I2C_CLR_RX_UNDER_REG -------------------------- */ -#define I2C_I2C_CLR_RX_UNDER_REG_CLR_RX_UNDER_Pos (0UL) /*!< I2C I2C_CLR_RX_UNDER_REG: CLR_RX_UNDER (Bit 0) */ -#define I2C_I2C_CLR_RX_UNDER_REG_CLR_RX_UNDER_Msk (0x1UL) /*!< I2C I2C_CLR_RX_UNDER_REG: CLR_RX_UNDER (Bitfield-Mask: 0x01) */ - -/* --------------------------- I2C_I2C_CLR_RX_OVER_REG -------------------------- */ -#define I2C_I2C_CLR_RX_OVER_REG_CLR_RX_OVER_Pos (0UL) /*!< I2C I2C_CLR_RX_OVER_REG: CLR_RX_OVER (Bit 0) */ -#define I2C_I2C_CLR_RX_OVER_REG_CLR_RX_OVER_Msk (0x1UL) /*!< I2C I2C_CLR_RX_OVER_REG: CLR_RX_OVER (Bitfield-Mask: 0x01) */ - -/* --------------------------- I2C_I2C_CLR_TX_OVER_REG -------------------------- */ -#define I2C_I2C_CLR_TX_OVER_REG_CLR_TX_OVER_Pos (0UL) /*!< I2C I2C_CLR_TX_OVER_REG: CLR_TX_OVER (Bit 0) */ -#define I2C_I2C_CLR_TX_OVER_REG_CLR_TX_OVER_Msk (0x1UL) /*!< I2C I2C_CLR_TX_OVER_REG: CLR_TX_OVER (Bitfield-Mask: 0x01) */ - -/* --------------------------- I2C_I2C_CLR_RD_REQ_REG --------------------------- */ -#define I2C_I2C_CLR_RD_REQ_REG_CLR_RD_REQ_Pos (0UL) /*!< I2C I2C_CLR_RD_REQ_REG: CLR_RD_REQ (Bit 0) */ -#define I2C_I2C_CLR_RD_REQ_REG_CLR_RD_REQ_Msk (0x1UL) /*!< I2C I2C_CLR_RD_REQ_REG: CLR_RD_REQ (Bitfield-Mask: 0x01) */ - -/* --------------------------- I2C_I2C_CLR_TX_ABRT_REG -------------------------- */ -#define I2C_I2C_CLR_TX_ABRT_REG_CLR_TX_ABRT_Pos (0UL) /*!< I2C I2C_CLR_TX_ABRT_REG: CLR_TX_ABRT (Bit 0) */ -#define I2C_I2C_CLR_TX_ABRT_REG_CLR_TX_ABRT_Msk (0x1UL) /*!< I2C I2C_CLR_TX_ABRT_REG: CLR_TX_ABRT (Bitfield-Mask: 0x01) */ - -/* --------------------------- I2C_I2C_CLR_RX_DONE_REG -------------------------- */ -#define I2C_I2C_CLR_RX_DONE_REG_CLR_RX_DONE_Pos (0UL) /*!< I2C I2C_CLR_RX_DONE_REG: CLR_RX_DONE (Bit 0) */ -#define I2C_I2C_CLR_RX_DONE_REG_CLR_RX_DONE_Msk (0x1UL) /*!< I2C I2C_CLR_RX_DONE_REG: CLR_RX_DONE (Bitfield-Mask: 0x01) */ - -/* -------------------------- I2C_I2C_CLR_ACTIVITY_REG -------------------------- */ -#define I2C_I2C_CLR_ACTIVITY_REG_CLR_ACTIVITY_Pos (0UL) /*!< I2C I2C_CLR_ACTIVITY_REG: CLR_ACTIVITY (Bit 0) */ -#define I2C_I2C_CLR_ACTIVITY_REG_CLR_ACTIVITY_Msk (0x1UL) /*!< I2C I2C_CLR_ACTIVITY_REG: CLR_ACTIVITY (Bitfield-Mask: 0x01) */ - -/* -------------------------- I2C_I2C_CLR_STOP_DET_REG -------------------------- */ -#define I2C_I2C_CLR_STOP_DET_REG_CLR_ACTIVITY_Pos (0UL) /*!< I2C I2C_CLR_STOP_DET_REG: CLR_ACTIVITY (Bit 0) */ -#define I2C_I2C_CLR_STOP_DET_REG_CLR_ACTIVITY_Msk (0x1UL) /*!< I2C I2C_CLR_STOP_DET_REG: CLR_ACTIVITY (Bitfield-Mask: 0x01) */ - -/* -------------------------- I2C_I2C_CLR_START_DET_REG ------------------------- */ -#define I2C_I2C_CLR_START_DET_REG_CLR_START_DET_Pos (0UL) /*!< I2C I2C_CLR_START_DET_REG: CLR_START_DET (Bit 0) */ -#define I2C_I2C_CLR_START_DET_REG_CLR_START_DET_Msk (0x1UL) /*!< I2C I2C_CLR_START_DET_REG: CLR_START_DET (Bitfield-Mask: 0x01) */ - -/* -------------------------- I2C_I2C_CLR_GEN_CALL_REG -------------------------- */ -#define I2C_I2C_CLR_GEN_CALL_REG_CLR_GEN_CALL_Pos (0UL) /*!< I2C I2C_CLR_GEN_CALL_REG: CLR_GEN_CALL (Bit 0) */ -#define I2C_I2C_CLR_GEN_CALL_REG_CLR_GEN_CALL_Msk (0x1UL) /*!< I2C I2C_CLR_GEN_CALL_REG: CLR_GEN_CALL (Bitfield-Mask: 0x01) */ - -/* ----------------------------- I2C_I2C_ENABLE_REG ----------------------------- */ -#define I2C_I2C_ENABLE_REG_CTRL_ENABLE_Pos (0UL) /*!< I2C I2C_ENABLE_REG: CTRL_ENABLE (Bit 0) */ -#define I2C_I2C_ENABLE_REG_CTRL_ENABLE_Msk (0x1UL) /*!< I2C I2C_ENABLE_REG: CTRL_ENABLE (Bitfield-Mask: 0x01) */ - -/* ----------------------------- I2C_I2C_STATUS_REG ----------------------------- */ -#define I2C_I2C_STATUS_REG_I2C_ACTIVITY_Pos (0UL) /*!< I2C I2C_STATUS_REG: I2C_ACTIVITY (Bit 0) */ -#define I2C_I2C_STATUS_REG_I2C_ACTIVITY_Msk (0x1UL) /*!< I2C I2C_STATUS_REG: I2C_ACTIVITY (Bitfield-Mask: 0x01) */ -#define I2C_I2C_STATUS_REG_TFNF_Pos (1UL) /*!< I2C I2C_STATUS_REG: TFNF (Bit 1) */ -#define I2C_I2C_STATUS_REG_TFNF_Msk (0x2UL) /*!< I2C I2C_STATUS_REG: TFNF (Bitfield-Mask: 0x01) */ -#define I2C_I2C_STATUS_REG_TFE_Pos (2UL) /*!< I2C I2C_STATUS_REG: TFE (Bit 2) */ -#define I2C_I2C_STATUS_REG_TFE_Msk (0x4UL) /*!< I2C I2C_STATUS_REG: TFE (Bitfield-Mask: 0x01) */ -#define I2C_I2C_STATUS_REG_RFNE_Pos (3UL) /*!< I2C I2C_STATUS_REG: RFNE (Bit 3) */ -#define I2C_I2C_STATUS_REG_RFNE_Msk (0x8UL) /*!< I2C I2C_STATUS_REG: RFNE (Bitfield-Mask: 0x01) */ -#define I2C_I2C_STATUS_REG_RFF_Pos (4UL) /*!< I2C I2C_STATUS_REG: RFF (Bit 4) */ -#define I2C_I2C_STATUS_REG_RFF_Msk (0x10UL) /*!< I2C I2C_STATUS_REG: RFF (Bitfield-Mask: 0x01) */ -#define I2C_I2C_STATUS_REG_MST_ACTIVITY_Pos (5UL) /*!< I2C I2C_STATUS_REG: MST_ACTIVITY (Bit 5) */ -#define I2C_I2C_STATUS_REG_MST_ACTIVITY_Msk (0x20UL) /*!< I2C I2C_STATUS_REG: MST_ACTIVITY (Bitfield-Mask: 0x01) */ -#define I2C_I2C_STATUS_REG_SLV_ACTIVITY_Pos (6UL) /*!< I2C I2C_STATUS_REG: SLV_ACTIVITY (Bit 6) */ -#define I2C_I2C_STATUS_REG_SLV_ACTIVITY_Msk (0x40UL) /*!< I2C I2C_STATUS_REG: SLV_ACTIVITY (Bitfield-Mask: 0x01) */ - -/* ------------------------------ I2C_I2C_TXFLR_REG ----------------------------- */ -#define I2C_I2C_TXFLR_REG_TXFLR_Pos (0UL) /*!< I2C I2C_TXFLR_REG: TXFLR (Bit 0) */ -#define I2C_I2C_TXFLR_REG_TXFLR_Msk (0x3fUL) /*!< I2C I2C_TXFLR_REG: TXFLR (Bitfield-Mask: 0x3f) */ - -/* ------------------------------ I2C_I2C_RXFLR_REG ----------------------------- */ -#define I2C_I2C_RXFLR_REG_RXFLR_Pos (0UL) /*!< I2C I2C_RXFLR_REG: RXFLR (Bit 0) */ -#define I2C_I2C_RXFLR_REG_RXFLR_Msk (0x3fUL) /*!< I2C I2C_RXFLR_REG: RXFLR (Bitfield-Mask: 0x3f) */ - -/* ---------------------------- I2C_I2C_SDA_HOLD_REG ---------------------------- */ -#define I2C_I2C_SDA_HOLD_REG_IC_SDA_HOLD_Pos (0UL) /*!< I2C I2C_SDA_HOLD_REG: IC_SDA_HOLD (Bit 0) */ -#define I2C_I2C_SDA_HOLD_REG_IC_SDA_HOLD_Msk (0xffffUL) /*!< I2C I2C_SDA_HOLD_REG: IC_SDA_HOLD (Bitfield-Mask: 0xffff) */ - -/* ------------------------- I2C_I2C_TX_ABRT_SOURCE_REG ------------------------- */ -#define I2C_I2C_TX_ABRT_SOURCE_REG_ABRT_7B_ADDR_NOACK_Pos (0UL) /*!< I2C I2C_TX_ABRT_SOURCE_REG: ABRT_7B_ADDR_NOACK (Bit 0) */ -#define I2C_I2C_TX_ABRT_SOURCE_REG_ABRT_7B_ADDR_NOACK_Msk (0x1UL) /*!< I2C I2C_TX_ABRT_SOURCE_REG: ABRT_7B_ADDR_NOACK (Bitfield-Mask: 0x01) */ -#define I2C_I2C_TX_ABRT_SOURCE_REG_ABRT_10ADDR1_NOACK_Pos (1UL) /*!< I2C I2C_TX_ABRT_SOURCE_REG: ABRT_10ADDR1_NOACK (Bit 1) */ -#define I2C_I2C_TX_ABRT_SOURCE_REG_ABRT_10ADDR1_NOACK_Msk (0x2UL) /*!< I2C I2C_TX_ABRT_SOURCE_REG: ABRT_10ADDR1_NOACK (Bitfield-Mask: 0x01) */ -#define I2C_I2C_TX_ABRT_SOURCE_REG_ABRT_10ADDR2_NOACK_Pos (2UL) /*!< I2C I2C_TX_ABRT_SOURCE_REG: ABRT_10ADDR2_NOACK (Bit 2) */ -#define I2C_I2C_TX_ABRT_SOURCE_REG_ABRT_10ADDR2_NOACK_Msk (0x4UL) /*!< I2C I2C_TX_ABRT_SOURCE_REG: ABRT_10ADDR2_NOACK (Bitfield-Mask: 0x01) */ -#define I2C_I2C_TX_ABRT_SOURCE_REG_ABRT_TXDATA_NOACK_Pos (3UL) /*!< I2C I2C_TX_ABRT_SOURCE_REG: ABRT_TXDATA_NOACK (Bit 3) */ -#define I2C_I2C_TX_ABRT_SOURCE_REG_ABRT_TXDATA_NOACK_Msk (0x8UL) /*!< I2C I2C_TX_ABRT_SOURCE_REG: ABRT_TXDATA_NOACK (Bitfield-Mask: 0x01) */ -#define I2C_I2C_TX_ABRT_SOURCE_REG_ABRT_GCALL_NOACK_Pos (4UL) /*!< I2C I2C_TX_ABRT_SOURCE_REG: ABRT_GCALL_NOACK (Bit 4) */ -#define I2C_I2C_TX_ABRT_SOURCE_REG_ABRT_GCALL_NOACK_Msk (0x10UL) /*!< I2C I2C_TX_ABRT_SOURCE_REG: ABRT_GCALL_NOACK (Bitfield-Mask: 0x01) */ -#define I2C_I2C_TX_ABRT_SOURCE_REG_ABRT_GCALL_READ_Pos (5UL) /*!< I2C I2C_TX_ABRT_SOURCE_REG: ABRT_GCALL_READ (Bit 5) */ -#define I2C_I2C_TX_ABRT_SOURCE_REG_ABRT_GCALL_READ_Msk (0x20UL) /*!< I2C I2C_TX_ABRT_SOURCE_REG: ABRT_GCALL_READ (Bitfield-Mask: 0x01) */ -#define I2C_I2C_TX_ABRT_SOURCE_REG_ABRT_HS_ACKDET_Pos (6UL) /*!< I2C I2C_TX_ABRT_SOURCE_REG: ABRT_HS_ACKDET (Bit 6) */ -#define I2C_I2C_TX_ABRT_SOURCE_REG_ABRT_HS_ACKDET_Msk (0x40UL) /*!< I2C I2C_TX_ABRT_SOURCE_REG: ABRT_HS_ACKDET (Bitfield-Mask: 0x01) */ -#define I2C_I2C_TX_ABRT_SOURCE_REG_ABRT_SBYTE_ACKDET_Pos (7UL) /*!< I2C I2C_TX_ABRT_SOURCE_REG: ABRT_SBYTE_ACKDET (Bit 7) */ -#define I2C_I2C_TX_ABRT_SOURCE_REG_ABRT_SBYTE_ACKDET_Msk (0x80UL) /*!< I2C I2C_TX_ABRT_SOURCE_REG: ABRT_SBYTE_ACKDET (Bitfield-Mask: 0x01) */ -#define I2C_I2C_TX_ABRT_SOURCE_REG_ABRT_HS_NORSTRT_Pos (8UL) /*!< I2C I2C_TX_ABRT_SOURCE_REG: ABRT_HS_NORSTRT (Bit 8) */ -#define I2C_I2C_TX_ABRT_SOURCE_REG_ABRT_HS_NORSTRT_Msk (0x100UL) /*!< I2C I2C_TX_ABRT_SOURCE_REG: ABRT_HS_NORSTRT (Bitfield-Mask: 0x01) */ -#define I2C_I2C_TX_ABRT_SOURCE_REG_ABRT_SBYTE_NORSTRT_Pos (9UL) /*!< I2C I2C_TX_ABRT_SOURCE_REG: ABRT_SBYTE_NORSTRT (Bit 9) */ -#define I2C_I2C_TX_ABRT_SOURCE_REG_ABRT_SBYTE_NORSTRT_Msk (0x200UL) /*!< I2C I2C_TX_ABRT_SOURCE_REG: ABRT_SBYTE_NORSTRT (Bitfield-Mask: 0x01) */ -#define I2C_I2C_TX_ABRT_SOURCE_REG_ABRT_10B_RD_NORSTRT_Pos (10UL) /*!< I2C I2C_TX_ABRT_SOURCE_REG: ABRT_10B_RD_NORSTRT (Bit 10) */ -#define I2C_I2C_TX_ABRT_SOURCE_REG_ABRT_10B_RD_NORSTRT_Msk (0x400UL) /*!< I2C I2C_TX_ABRT_SOURCE_REG: ABRT_10B_RD_NORSTRT (Bitfield-Mask: 0x01) */ -#define I2C_I2C_TX_ABRT_SOURCE_REG_ABRT_MASTER_DIS_Pos (11UL) /*!< I2C I2C_TX_ABRT_SOURCE_REG: ABRT_MASTER_DIS (Bit 11) */ -#define I2C_I2C_TX_ABRT_SOURCE_REG_ABRT_MASTER_DIS_Msk (0x800UL) /*!< I2C I2C_TX_ABRT_SOURCE_REG: ABRT_MASTER_DIS (Bitfield-Mask: 0x01) */ -#define I2C_I2C_TX_ABRT_SOURCE_REG_ARB_LOST_Pos (12UL) /*!< I2C I2C_TX_ABRT_SOURCE_REG: ARB_LOST (Bit 12) */ -#define I2C_I2C_TX_ABRT_SOURCE_REG_ARB_LOST_Msk (0x1000UL) /*!< I2C I2C_TX_ABRT_SOURCE_REG: ARB_LOST (Bitfield-Mask: 0x01) */ -#define I2C_I2C_TX_ABRT_SOURCE_REG_ABRT_SLVFLUSH_TXFIFO_Pos (13UL) /*!< I2C I2C_TX_ABRT_SOURCE_REG: ABRT_SLVFLUSH_TXFIFO (Bit 13) */ -#define I2C_I2C_TX_ABRT_SOURCE_REG_ABRT_SLVFLUSH_TXFIFO_Msk (0x2000UL) /*!< I2C I2C_TX_ABRT_SOURCE_REG: ABRT_SLVFLUSH_TXFIFO (Bitfield-Mask: 0x01) */ -#define I2C_I2C_TX_ABRT_SOURCE_REG_ABRT_SLV_ARBLOST_Pos (14UL) /*!< I2C I2C_TX_ABRT_SOURCE_REG: ABRT_SLV_ARBLOST (Bit 14) */ -#define I2C_I2C_TX_ABRT_SOURCE_REG_ABRT_SLV_ARBLOST_Msk (0x4000UL) /*!< I2C I2C_TX_ABRT_SOURCE_REG: ABRT_SLV_ARBLOST (Bitfield-Mask: 0x01) */ -#define I2C_I2C_TX_ABRT_SOURCE_REG_ABRT_SLVRD_INTX_Pos (15UL) /*!< I2C I2C_TX_ABRT_SOURCE_REG: ABRT_SLVRD_INTX (Bit 15) */ -#define I2C_I2C_TX_ABRT_SOURCE_REG_ABRT_SLVRD_INTX_Msk (0x8000UL) /*!< I2C I2C_TX_ABRT_SOURCE_REG: ABRT_SLVRD_INTX (Bitfield-Mask: 0x01) */ - -/* ----------------------------- I2C_I2C_DMA_CR_REG ----------------------------- */ -#define I2C_I2C_DMA_CR_REG_RDMAE_Pos (0UL) /*!< I2C I2C_DMA_CR_REG: RDMAE (Bit 0) */ -#define I2C_I2C_DMA_CR_REG_RDMAE_Msk (0x1UL) /*!< I2C I2C_DMA_CR_REG: RDMAE (Bitfield-Mask: 0x01) */ -#define I2C_I2C_DMA_CR_REG_TDMAE_Pos (1UL) /*!< I2C I2C_DMA_CR_REG: TDMAE (Bit 1) */ -#define I2C_I2C_DMA_CR_REG_TDMAE_Msk (0x2UL) /*!< I2C I2C_DMA_CR_REG: TDMAE (Bitfield-Mask: 0x01) */ - -/* ---------------------------- I2C_I2C_DMA_TDLR_REG ---------------------------- */ -#define I2C_I2C_DMA_TDLR_REG_DMATDL_Pos (0UL) /*!< I2C I2C_DMA_TDLR_REG: DMATDL (Bit 0) */ -#define I2C_I2C_DMA_TDLR_REG_DMATDL_Msk (0x1fUL) /*!< I2C I2C_DMA_TDLR_REG: DMATDL (Bitfield-Mask: 0x1f) */ - -/* ---------------------------- I2C_I2C_DMA_RDLR_REG ---------------------------- */ -#define I2C_I2C_DMA_RDLR_REG_DMARDL_Pos (0UL) /*!< I2C I2C_DMA_RDLR_REG: DMARDL (Bit 0) */ -#define I2C_I2C_DMA_RDLR_REG_DMARDL_Msk (0x1fUL) /*!< I2C I2C_DMA_RDLR_REG: DMARDL (Bitfield-Mask: 0x1f) */ - -/* ---------------------------- I2C_I2C_SDA_SETUP_REG --------------------------- */ -#define I2C_I2C_SDA_SETUP_REG_SDA_SETUP_Pos (0UL) /*!< I2C I2C_SDA_SETUP_REG: SDA_SETUP (Bit 0) */ -#define I2C_I2C_SDA_SETUP_REG_SDA_SETUP_Msk (0xffUL) /*!< I2C I2C_SDA_SETUP_REG: SDA_SETUP (Bitfield-Mask: 0xff) */ - -/* ------------------------ I2C_I2C_ACK_GENERAL_CALL_REG ------------------------ */ -#define I2C_I2C_ACK_GENERAL_CALL_REG_ACK_GEN_CALL_Pos (0UL) /*!< I2C I2C_ACK_GENERAL_CALL_REG: ACK_GEN_CALL (Bit 0) */ -#define I2C_I2C_ACK_GENERAL_CALL_REG_ACK_GEN_CALL_Msk (0x1UL) /*!< I2C I2C_ACK_GENERAL_CALL_REG: ACK_GEN_CALL (Bitfield-Mask: 0x01) */ - -/* -------------------------- I2C_I2C_ENABLE_STATUS_REG ------------------------- */ -#define I2C_I2C_ENABLE_STATUS_REG_IC_EN_Pos (0UL) /*!< I2C I2C_ENABLE_STATUS_REG: IC_EN (Bit 0) */ -#define I2C_I2C_ENABLE_STATUS_REG_IC_EN_Msk (0x1UL) /*!< I2C I2C_ENABLE_STATUS_REG: IC_EN (Bitfield-Mask: 0x01) */ -#define I2C_I2C_ENABLE_STATUS_REG_SLV_DISABLED_WHILE_BUSY_Pos (1UL) /*!< I2C I2C_ENABLE_STATUS_REG: SLV_DISABLED_WHILE_BUSY (Bit 1) */ -#define I2C_I2C_ENABLE_STATUS_REG_SLV_DISABLED_WHILE_BUSY_Msk (0x2UL) /*!< I2C I2C_ENABLE_STATUS_REG: SLV_DISABLED_WHILE_BUSY (Bitfield-Mask: 0x01) */ -#define I2C_I2C_ENABLE_STATUS_REG_SLV_RX_DATA_LOST_Pos (2UL) /*!< I2C I2C_ENABLE_STATUS_REG: SLV_RX_DATA_LOST (Bit 2) */ -#define I2C_I2C_ENABLE_STATUS_REG_SLV_RX_DATA_LOST_Msk (0x4UL) /*!< I2C I2C_ENABLE_STATUS_REG: SLV_RX_DATA_LOST (Bitfield-Mask: 0x01) */ - -/* -------------------------- I2C_I2C_IC_FS_SPKLEN_REG -------------------------- */ -#define I2C_I2C_IC_FS_SPKLEN_REG_IC_FS_SPKLEN_Pos (0UL) /*!< I2C I2C_IC_FS_SPKLEN_REG: IC_FS_SPKLEN (Bit 0) */ -#define I2C_I2C_IC_FS_SPKLEN_REG_IC_FS_SPKLEN_Msk (0xffUL) /*!< I2C I2C_IC_FS_SPKLEN_REG: IC_FS_SPKLEN (Bitfield-Mask: 0xff) */ - -/* --------------------------- I2C_I2C_COMP_PARAM1_REG -------------------------- */ -#define I2C_I2C_COMP_PARAM1_REG_IC_COMP_PARAM1_Pos (0UL) /*!< I2C I2C_COMP_PARAM1_REG: IC_COMP_PARAM1 (Bit 0) */ -#define I2C_I2C_COMP_PARAM1_REG_IC_COMP_PARAM1_Msk (0xffffUL) /*!< I2C I2C_COMP_PARAM1_REG: IC_COMP_PARAM1 (Bitfield-Mask: 0xffff) */ - -/* --------------------------- I2C_I2C_COMP_PARAM2_REG -------------------------- */ -#define I2C_I2C_COMP_PARAM2_REG_IC_COMP_PARAM2_Pos (0UL) /*!< I2C I2C_COMP_PARAM2_REG: IC_COMP_PARAM2 (Bit 0) */ -#define I2C_I2C_COMP_PARAM2_REG_IC_COMP_PARAM2_Msk (0xffffUL) /*!< I2C I2C_COMP_PARAM2_REG: IC_COMP_PARAM2 (Bitfield-Mask: 0xffff) */ - -/* -------------------------- I2C_I2C_COMP_VERSION_REG -------------------------- */ -#define I2C_I2C_COMP_VERSION_REG_IC_COMP_VERSION_Pos (0UL) /*!< I2C I2C_COMP_VERSION_REG: IC_COMP_VERSION (Bit 0) */ -#define I2C_I2C_COMP_VERSION_REG_IC_COMP_VERSION_Msk (0xffffUL) /*!< I2C I2C_COMP_VERSION_REG: IC_COMP_VERSION (Bitfield-Mask: 0xffff) */ - -/* ---------------------------- I2C_I2C_COMP2_VERSION --------------------------- */ -#define I2C_I2C_COMP2_VERSION_IC_COMP2_VERSION_Pos (0UL) /*!< I2C I2C_COMP2_VERSION: IC_COMP2_VERSION (Bit 0) */ -#define I2C_I2C_COMP2_VERSION_IC_COMP2_VERSION_Msk (0xffffUL) /*!< I2C I2C_COMP2_VERSION: IC_COMP2_VERSION (Bitfield-Mask: 0xffff) */ - -/* ---------------------------- I2C_I2C_COMP_TYPE_REG --------------------------- */ -#define I2C_I2C_COMP_TYPE_REG_IC_COMP_TYPE_Pos (0UL) /*!< I2C I2C_COMP_TYPE_REG: IC_COMP_TYPE (Bit 0) */ -#define I2C_I2C_COMP_TYPE_REG_IC_COMP_TYPE_Msk (0xffffUL) /*!< I2C I2C_COMP_TYPE_REG: IC_COMP_TYPE (Bitfield-Mask: 0xffff) */ - -/* --------------------------- I2C_I2C_COMP_TYPE2_REG --------------------------- */ -#define I2C_I2C_COMP_TYPE2_REG_IC_COMP2_TYPE_Pos (0UL) /*!< I2C I2C_COMP_TYPE2_REG: IC_COMP2_TYPE (Bit 0) */ -#define I2C_I2C_COMP_TYPE2_REG_IC_COMP2_TYPE_Msk (0xffffUL) /*!< I2C I2C_COMP_TYPE2_REG: IC_COMP2_TYPE (Bitfield-Mask: 0xffff) */ - - -/* ================================================================================ */ -/* ================ struct 'I2C2' Position & Mask ================ */ -/* ================================================================================ */ - - -/* ------------------------------ I2C2_I2C2_CON_REG ----------------------------- */ -#define I2C2_I2C2_CON_REG_I2C_MASTER_MODE_Pos (0UL) /*!< I2C2 I2C2_CON_REG: I2C_MASTER_MODE (Bit 0) */ -#define I2C2_I2C2_CON_REG_I2C_MASTER_MODE_Msk (0x1UL) /*!< I2C2 I2C2_CON_REG: I2C_MASTER_MODE (Bitfield-Mask: 0x01) */ -#define I2C2_I2C2_CON_REG_I2C_SPEED_Pos (1UL) /*!< I2C2 I2C2_CON_REG: I2C_SPEED (Bit 1) */ -#define I2C2_I2C2_CON_REG_I2C_SPEED_Msk (0x6UL) /*!< I2C2 I2C2_CON_REG: I2C_SPEED (Bitfield-Mask: 0x03) */ -#define I2C2_I2C2_CON_REG_I2C_10BITADDR_SLAVE_Pos (3UL) /*!< I2C2 I2C2_CON_REG: I2C_10BITADDR_SLAVE (Bit 3) */ -#define I2C2_I2C2_CON_REG_I2C_10BITADDR_SLAVE_Msk (0x8UL) /*!< I2C2 I2C2_CON_REG: I2C_10BITADDR_SLAVE (Bitfield-Mask: 0x01) */ -#define I2C2_I2C2_CON_REG_I2C_10BITADDR_MASTER_Pos (4UL) /*!< I2C2 I2C2_CON_REG: I2C_10BITADDR_MASTER (Bit 4) */ -#define I2C2_I2C2_CON_REG_I2C_10BITADDR_MASTER_Msk (0x10UL) /*!< I2C2 I2C2_CON_REG: I2C_10BITADDR_MASTER (Bitfield-Mask: 0x01) */ -#define I2C2_I2C2_CON_REG_I2C_RESTART_EN_Pos (5UL) /*!< I2C2 I2C2_CON_REG: I2C_RESTART_EN (Bit 5) */ -#define I2C2_I2C2_CON_REG_I2C_RESTART_EN_Msk (0x20UL) /*!< I2C2 I2C2_CON_REG: I2C_RESTART_EN (Bitfield-Mask: 0x01) */ -#define I2C2_I2C2_CON_REG_I2C_SLAVE_DISABLE_Pos (6UL) /*!< I2C2 I2C2_CON_REG: I2C_SLAVE_DISABLE (Bit 6) */ -#define I2C2_I2C2_CON_REG_I2C_SLAVE_DISABLE_Msk (0x40UL) /*!< I2C2 I2C2_CON_REG: I2C_SLAVE_DISABLE (Bitfield-Mask: 0x01) */ - -/* ------------------------------ I2C2_I2C2_TAR_REG ----------------------------- */ -#define I2C2_I2C2_TAR_REG_IC_TAR_Pos (0UL) /*!< I2C2 I2C2_TAR_REG: IC_TAR (Bit 0) */ -#define I2C2_I2C2_TAR_REG_IC_TAR_Msk (0x3ffUL) /*!< I2C2 I2C2_TAR_REG: IC_TAR (Bitfield-Mask: 0x3ff) */ -#define I2C2_I2C2_TAR_REG_GC_OR_START_Pos (10UL) /*!< I2C2 I2C2_TAR_REG: GC_OR_START (Bit 10) */ -#define I2C2_I2C2_TAR_REG_GC_OR_START_Msk (0x400UL) /*!< I2C2 I2C2_TAR_REG: GC_OR_START (Bitfield-Mask: 0x01) */ -#define I2C2_I2C2_TAR_REG_SPECIAL_Pos (11UL) /*!< I2C2 I2C2_TAR_REG: SPECIAL (Bit 11) */ -#define I2C2_I2C2_TAR_REG_SPECIAL_Msk (0x800UL) /*!< I2C2 I2C2_TAR_REG: SPECIAL (Bitfield-Mask: 0x01) */ - -/* ------------------------------ I2C2_I2C2_SAR_REG ----------------------------- */ -#define I2C2_I2C2_SAR_REG_IC_SAR_Pos (0UL) /*!< I2C2 I2C2_SAR_REG: IC_SAR (Bit 0) */ -#define I2C2_I2C2_SAR_REG_IC_SAR_Msk (0x3ffUL) /*!< I2C2 I2C2_SAR_REG: IC_SAR (Bitfield-Mask: 0x3ff) */ - -/* --------------------------- I2C2_I2C2_DATA_CMD_REG --------------------------- */ -#define I2C2_I2C2_DATA_CMD_REG_DAT_Pos (0UL) /*!< I2C2 I2C2_DATA_CMD_REG: DAT (Bit 0) */ -#define I2C2_I2C2_DATA_CMD_REG_DAT_Msk (0xffUL) /*!< I2C2 I2C2_DATA_CMD_REG: DAT (Bitfield-Mask: 0xff) */ -#define I2C2_I2C2_DATA_CMD_REG_CMD_Pos (8UL) /*!< I2C2 I2C2_DATA_CMD_REG: CMD (Bit 8) */ -#define I2C2_I2C2_DATA_CMD_REG_CMD_Msk (0x100UL) /*!< I2C2 I2C2_DATA_CMD_REG: CMD (Bitfield-Mask: 0x01) */ -#define I2C2_I2C2_DATA_CMD_REG_STOP_Pos (9UL) /*!< I2C2 I2C2_DATA_CMD_REG: STOP (Bit 9) */ -#define I2C2_I2C2_DATA_CMD_REG_STOP_Msk (0x200UL) /*!< I2C2 I2C2_DATA_CMD_REG: STOP (Bitfield-Mask: 0x01) */ -#define I2C2_I2C2_DATA_CMD_REG_RESTART_Pos (10UL) /*!< I2C2 I2C2_DATA_CMD_REG: RESTART (Bit 10) */ -#define I2C2_I2C2_DATA_CMD_REG_RESTART_Msk (0x400UL) /*!< I2C2 I2C2_DATA_CMD_REG: RESTART (Bitfield-Mask: 0x01) */ - -/* -------------------------- I2C2_I2C2_SS_SCL_HCNT_REG ------------------------- */ -#define I2C2_I2C2_SS_SCL_HCNT_REG_IC_SS_SCL_HCNT_Pos (0UL) /*!< I2C2 I2C2_SS_SCL_HCNT_REG: IC_SS_SCL_HCNT (Bit 0) */ -#define I2C2_I2C2_SS_SCL_HCNT_REG_IC_SS_SCL_HCNT_Msk (0xffffUL) /*!< I2C2 I2C2_SS_SCL_HCNT_REG: IC_SS_SCL_HCNT (Bitfield-Mask: 0xffff) */ - -/* -------------------------- I2C2_I2C2_SS_SCL_LCNT_REG ------------------------- */ -#define I2C2_I2C2_SS_SCL_LCNT_REG_IC_SS_SCL_LCNT_Pos (0UL) /*!< I2C2 I2C2_SS_SCL_LCNT_REG: IC_SS_SCL_LCNT (Bit 0) */ -#define I2C2_I2C2_SS_SCL_LCNT_REG_IC_SS_SCL_LCNT_Msk (0xffffUL) /*!< I2C2 I2C2_SS_SCL_LCNT_REG: IC_SS_SCL_LCNT (Bitfield-Mask: 0xffff) */ - -/* -------------------------- I2C2_I2C2_FS_SCL_HCNT_REG ------------------------- */ -#define I2C2_I2C2_FS_SCL_HCNT_REG_IC_FS_SCL_HCNT_Pos (0UL) /*!< I2C2 I2C2_FS_SCL_HCNT_REG: IC_FS_SCL_HCNT (Bit 0) */ -#define I2C2_I2C2_FS_SCL_HCNT_REG_IC_FS_SCL_HCNT_Msk (0xffffUL) /*!< I2C2 I2C2_FS_SCL_HCNT_REG: IC_FS_SCL_HCNT (Bitfield-Mask: 0xffff) */ - -/* -------------------------- I2C2_I2C2_FS_SCL_LCNT_REG ------------------------- */ -#define I2C2_I2C2_FS_SCL_LCNT_REG_IC_FS_SCL_LCNT_Pos (0UL) /*!< I2C2 I2C2_FS_SCL_LCNT_REG: IC_FS_SCL_LCNT (Bit 0) */ -#define I2C2_I2C2_FS_SCL_LCNT_REG_IC_FS_SCL_LCNT_Msk (0xffffUL) /*!< I2C2 I2C2_FS_SCL_LCNT_REG: IC_FS_SCL_LCNT (Bitfield-Mask: 0xffff) */ - -/* --------------------------- I2C2_I2C2_INTR_STAT_REG -------------------------- */ -#define I2C2_I2C2_INTR_STAT_REG_R_RX_UNDER_Pos (0UL) /*!< I2C2 I2C2_INTR_STAT_REG: R_RX_UNDER (Bit 0) */ -#define I2C2_I2C2_INTR_STAT_REG_R_RX_UNDER_Msk (0x1UL) /*!< I2C2 I2C2_INTR_STAT_REG: R_RX_UNDER (Bitfield-Mask: 0x01) */ -#define I2C2_I2C2_INTR_STAT_REG_R_RX_OVER_Pos (1UL) /*!< I2C2 I2C2_INTR_STAT_REG: R_RX_OVER (Bit 1) */ -#define I2C2_I2C2_INTR_STAT_REG_R_RX_OVER_Msk (0x2UL) /*!< I2C2 I2C2_INTR_STAT_REG: R_RX_OVER (Bitfield-Mask: 0x01) */ -#define I2C2_I2C2_INTR_STAT_REG_R_RX_FULL_Pos (2UL) /*!< I2C2 I2C2_INTR_STAT_REG: R_RX_FULL (Bit 2) */ -#define I2C2_I2C2_INTR_STAT_REG_R_RX_FULL_Msk (0x4UL) /*!< I2C2 I2C2_INTR_STAT_REG: R_RX_FULL (Bitfield-Mask: 0x01) */ -#define I2C2_I2C2_INTR_STAT_REG_R_TX_OVER_Pos (3UL) /*!< I2C2 I2C2_INTR_STAT_REG: R_TX_OVER (Bit 3) */ -#define I2C2_I2C2_INTR_STAT_REG_R_TX_OVER_Msk (0x8UL) /*!< I2C2 I2C2_INTR_STAT_REG: R_TX_OVER (Bitfield-Mask: 0x01) */ -#define I2C2_I2C2_INTR_STAT_REG_R_TX_EMPTY_Pos (4UL) /*!< I2C2 I2C2_INTR_STAT_REG: R_TX_EMPTY (Bit 4) */ -#define I2C2_I2C2_INTR_STAT_REG_R_TX_EMPTY_Msk (0x10UL) /*!< I2C2 I2C2_INTR_STAT_REG: R_TX_EMPTY (Bitfield-Mask: 0x01) */ -#define I2C2_I2C2_INTR_STAT_REG_R_RD_REQ_Pos (5UL) /*!< I2C2 I2C2_INTR_STAT_REG: R_RD_REQ (Bit 5) */ -#define I2C2_I2C2_INTR_STAT_REG_R_RD_REQ_Msk (0x20UL) /*!< I2C2 I2C2_INTR_STAT_REG: R_RD_REQ (Bitfield-Mask: 0x01) */ -#define I2C2_I2C2_INTR_STAT_REG_R_TX_ABRT_Pos (6UL) /*!< I2C2 I2C2_INTR_STAT_REG: R_TX_ABRT (Bit 6) */ -#define I2C2_I2C2_INTR_STAT_REG_R_TX_ABRT_Msk (0x40UL) /*!< I2C2 I2C2_INTR_STAT_REG: R_TX_ABRT (Bitfield-Mask: 0x01) */ -#define I2C2_I2C2_INTR_STAT_REG_R_RX_DONE_Pos (7UL) /*!< I2C2 I2C2_INTR_STAT_REG: R_RX_DONE (Bit 7) */ -#define I2C2_I2C2_INTR_STAT_REG_R_RX_DONE_Msk (0x80UL) /*!< I2C2 I2C2_INTR_STAT_REG: R_RX_DONE (Bitfield-Mask: 0x01) */ -#define I2C2_I2C2_INTR_STAT_REG_R_ACTIVITY_Pos (8UL) /*!< I2C2 I2C2_INTR_STAT_REG: R_ACTIVITY (Bit 8) */ -#define I2C2_I2C2_INTR_STAT_REG_R_ACTIVITY_Msk (0x100UL) /*!< I2C2 I2C2_INTR_STAT_REG: R_ACTIVITY (Bitfield-Mask: 0x01) */ -#define I2C2_I2C2_INTR_STAT_REG_R_STOP_DET_Pos (9UL) /*!< I2C2 I2C2_INTR_STAT_REG: R_STOP_DET (Bit 9) */ -#define I2C2_I2C2_INTR_STAT_REG_R_STOP_DET_Msk (0x200UL) /*!< I2C2 I2C2_INTR_STAT_REG: R_STOP_DET (Bitfield-Mask: 0x01) */ -#define I2C2_I2C2_INTR_STAT_REG_R_START_DET_Pos (10UL) /*!< I2C2 I2C2_INTR_STAT_REG: R_START_DET (Bit 10) */ -#define I2C2_I2C2_INTR_STAT_REG_R_START_DET_Msk (0x400UL) /*!< I2C2 I2C2_INTR_STAT_REG: R_START_DET (Bitfield-Mask: 0x01) */ -#define I2C2_I2C2_INTR_STAT_REG_R_GEN_CALL_Pos (11UL) /*!< I2C2 I2C2_INTR_STAT_REG: R_GEN_CALL (Bit 11) */ -#define I2C2_I2C2_INTR_STAT_REG_R_GEN_CALL_Msk (0x800UL) /*!< I2C2 I2C2_INTR_STAT_REG: R_GEN_CALL (Bitfield-Mask: 0x01) */ - -/* --------------------------- I2C2_I2C2_INTR_MASK_REG -------------------------- */ -#define I2C2_I2C2_INTR_MASK_REG_M_RX_UNDER_Pos (0UL) /*!< I2C2 I2C2_INTR_MASK_REG: M_RX_UNDER (Bit 0) */ -#define I2C2_I2C2_INTR_MASK_REG_M_RX_UNDER_Msk (0x1UL) /*!< I2C2 I2C2_INTR_MASK_REG: M_RX_UNDER (Bitfield-Mask: 0x01) */ -#define I2C2_I2C2_INTR_MASK_REG_M_RX_OVER_Pos (1UL) /*!< I2C2 I2C2_INTR_MASK_REG: M_RX_OVER (Bit 1) */ -#define I2C2_I2C2_INTR_MASK_REG_M_RX_OVER_Msk (0x2UL) /*!< I2C2 I2C2_INTR_MASK_REG: M_RX_OVER (Bitfield-Mask: 0x01) */ -#define I2C2_I2C2_INTR_MASK_REG_M_RX_FULL_Pos (2UL) /*!< I2C2 I2C2_INTR_MASK_REG: M_RX_FULL (Bit 2) */ -#define I2C2_I2C2_INTR_MASK_REG_M_RX_FULL_Msk (0x4UL) /*!< I2C2 I2C2_INTR_MASK_REG: M_RX_FULL (Bitfield-Mask: 0x01) */ -#define I2C2_I2C2_INTR_MASK_REG_M_TX_OVER_Pos (3UL) /*!< I2C2 I2C2_INTR_MASK_REG: M_TX_OVER (Bit 3) */ -#define I2C2_I2C2_INTR_MASK_REG_M_TX_OVER_Msk (0x8UL) /*!< I2C2 I2C2_INTR_MASK_REG: M_TX_OVER (Bitfield-Mask: 0x01) */ -#define I2C2_I2C2_INTR_MASK_REG_M_TX_EMPTY_Pos (4UL) /*!< I2C2 I2C2_INTR_MASK_REG: M_TX_EMPTY (Bit 4) */ -#define I2C2_I2C2_INTR_MASK_REG_M_TX_EMPTY_Msk (0x10UL) /*!< I2C2 I2C2_INTR_MASK_REG: M_TX_EMPTY (Bitfield-Mask: 0x01) */ -#define I2C2_I2C2_INTR_MASK_REG_M_RD_REQ_Pos (5UL) /*!< I2C2 I2C2_INTR_MASK_REG: M_RD_REQ (Bit 5) */ -#define I2C2_I2C2_INTR_MASK_REG_M_RD_REQ_Msk (0x20UL) /*!< I2C2 I2C2_INTR_MASK_REG: M_RD_REQ (Bitfield-Mask: 0x01) */ -#define I2C2_I2C2_INTR_MASK_REG_M_TX_ABRT_Pos (6UL) /*!< I2C2 I2C2_INTR_MASK_REG: M_TX_ABRT (Bit 6) */ -#define I2C2_I2C2_INTR_MASK_REG_M_TX_ABRT_Msk (0x40UL) /*!< I2C2 I2C2_INTR_MASK_REG: M_TX_ABRT (Bitfield-Mask: 0x01) */ -#define I2C2_I2C2_INTR_MASK_REG_M_RX_DONE_Pos (7UL) /*!< I2C2 I2C2_INTR_MASK_REG: M_RX_DONE (Bit 7) */ -#define I2C2_I2C2_INTR_MASK_REG_M_RX_DONE_Msk (0x80UL) /*!< I2C2 I2C2_INTR_MASK_REG: M_RX_DONE (Bitfield-Mask: 0x01) */ -#define I2C2_I2C2_INTR_MASK_REG_M_ACTIVITY_Pos (8UL) /*!< I2C2 I2C2_INTR_MASK_REG: M_ACTIVITY (Bit 8) */ -#define I2C2_I2C2_INTR_MASK_REG_M_ACTIVITY_Msk (0x100UL) /*!< I2C2 I2C2_INTR_MASK_REG: M_ACTIVITY (Bitfield-Mask: 0x01) */ -#define I2C2_I2C2_INTR_MASK_REG_M_STOP_DET_Pos (9UL) /*!< I2C2 I2C2_INTR_MASK_REG: M_STOP_DET (Bit 9) */ -#define I2C2_I2C2_INTR_MASK_REG_M_STOP_DET_Msk (0x200UL) /*!< I2C2 I2C2_INTR_MASK_REG: M_STOP_DET (Bitfield-Mask: 0x01) */ -#define I2C2_I2C2_INTR_MASK_REG_M_START_DET_Pos (10UL) /*!< I2C2 I2C2_INTR_MASK_REG: M_START_DET (Bit 10) */ -#define I2C2_I2C2_INTR_MASK_REG_M_START_DET_Msk (0x400UL) /*!< I2C2 I2C2_INTR_MASK_REG: M_START_DET (Bitfield-Mask: 0x01) */ -#define I2C2_I2C2_INTR_MASK_REG_M_GEN_CALL_Pos (11UL) /*!< I2C2 I2C2_INTR_MASK_REG: M_GEN_CALL (Bit 11) */ -#define I2C2_I2C2_INTR_MASK_REG_M_GEN_CALL_Msk (0x800UL) /*!< I2C2 I2C2_INTR_MASK_REG: M_GEN_CALL (Bitfield-Mask: 0x01) */ - -/* ------------------------- I2C2_I2C2_RAW_INTR_STAT_REG ------------------------ */ -#define I2C2_I2C2_RAW_INTR_STAT_REG_RX_UNDER_Pos (0UL) /*!< I2C2 I2C2_RAW_INTR_STAT_REG: RX_UNDER (Bit 0) */ -#define I2C2_I2C2_RAW_INTR_STAT_REG_RX_UNDER_Msk (0x1UL) /*!< I2C2 I2C2_RAW_INTR_STAT_REG: RX_UNDER (Bitfield-Mask: 0x01) */ -#define I2C2_I2C2_RAW_INTR_STAT_REG_RX_OVER_Pos (1UL) /*!< I2C2 I2C2_RAW_INTR_STAT_REG: RX_OVER (Bit 1) */ -#define I2C2_I2C2_RAW_INTR_STAT_REG_RX_OVER_Msk (0x2UL) /*!< I2C2 I2C2_RAW_INTR_STAT_REG: RX_OVER (Bitfield-Mask: 0x01) */ -#define I2C2_I2C2_RAW_INTR_STAT_REG_RX_FULL_Pos (2UL) /*!< I2C2 I2C2_RAW_INTR_STAT_REG: RX_FULL (Bit 2) */ -#define I2C2_I2C2_RAW_INTR_STAT_REG_RX_FULL_Msk (0x4UL) /*!< I2C2 I2C2_RAW_INTR_STAT_REG: RX_FULL (Bitfield-Mask: 0x01) */ -#define I2C2_I2C2_RAW_INTR_STAT_REG_TX_OVER_Pos (3UL) /*!< I2C2 I2C2_RAW_INTR_STAT_REG: TX_OVER (Bit 3) */ -#define I2C2_I2C2_RAW_INTR_STAT_REG_TX_OVER_Msk (0x8UL) /*!< I2C2 I2C2_RAW_INTR_STAT_REG: TX_OVER (Bitfield-Mask: 0x01) */ -#define I2C2_I2C2_RAW_INTR_STAT_REG_TX_EMPTY_Pos (4UL) /*!< I2C2 I2C2_RAW_INTR_STAT_REG: TX_EMPTY (Bit 4) */ -#define I2C2_I2C2_RAW_INTR_STAT_REG_TX_EMPTY_Msk (0x10UL) /*!< I2C2 I2C2_RAW_INTR_STAT_REG: TX_EMPTY (Bitfield-Mask: 0x01) */ -#define I2C2_I2C2_RAW_INTR_STAT_REG_RD_REQ_Pos (5UL) /*!< I2C2 I2C2_RAW_INTR_STAT_REG: RD_REQ (Bit 5) */ -#define I2C2_I2C2_RAW_INTR_STAT_REG_RD_REQ_Msk (0x20UL) /*!< I2C2 I2C2_RAW_INTR_STAT_REG: RD_REQ (Bitfield-Mask: 0x01) */ -#define I2C2_I2C2_RAW_INTR_STAT_REG_TX_ABRT_Pos (6UL) /*!< I2C2 I2C2_RAW_INTR_STAT_REG: TX_ABRT (Bit 6) */ -#define I2C2_I2C2_RAW_INTR_STAT_REG_TX_ABRT_Msk (0x40UL) /*!< I2C2 I2C2_RAW_INTR_STAT_REG: TX_ABRT (Bitfield-Mask: 0x01) */ -#define I2C2_I2C2_RAW_INTR_STAT_REG_RX_DONE_Pos (7UL) /*!< I2C2 I2C2_RAW_INTR_STAT_REG: RX_DONE (Bit 7) */ -#define I2C2_I2C2_RAW_INTR_STAT_REG_RX_DONE_Msk (0x80UL) /*!< I2C2 I2C2_RAW_INTR_STAT_REG: RX_DONE (Bitfield-Mask: 0x01) */ -#define I2C2_I2C2_RAW_INTR_STAT_REG_ACTIVITY_Pos (8UL) /*!< I2C2 I2C2_RAW_INTR_STAT_REG: ACTIVITY (Bit 8) */ -#define I2C2_I2C2_RAW_INTR_STAT_REG_ACTIVITY_Msk (0x100UL) /*!< I2C2 I2C2_RAW_INTR_STAT_REG: ACTIVITY (Bitfield-Mask: 0x01) */ -#define I2C2_I2C2_RAW_INTR_STAT_REG_STOP_DET_Pos (9UL) /*!< I2C2 I2C2_RAW_INTR_STAT_REG: STOP_DET (Bit 9) */ -#define I2C2_I2C2_RAW_INTR_STAT_REG_STOP_DET_Msk (0x200UL) /*!< I2C2 I2C2_RAW_INTR_STAT_REG: STOP_DET (Bitfield-Mask: 0x01) */ -#define I2C2_I2C2_RAW_INTR_STAT_REG_START_DET_Pos (10UL) /*!< I2C2 I2C2_RAW_INTR_STAT_REG: START_DET (Bit 10) */ -#define I2C2_I2C2_RAW_INTR_STAT_REG_START_DET_Msk (0x400UL) /*!< I2C2 I2C2_RAW_INTR_STAT_REG: START_DET (Bitfield-Mask: 0x01) */ -#define I2C2_I2C2_RAW_INTR_STAT_REG_GEN_CALL_Pos (11UL) /*!< I2C2 I2C2_RAW_INTR_STAT_REG: GEN_CALL (Bit 11) */ -#define I2C2_I2C2_RAW_INTR_STAT_REG_GEN_CALL_Msk (0x800UL) /*!< I2C2 I2C2_RAW_INTR_STAT_REG: GEN_CALL (Bitfield-Mask: 0x01) */ - -/* ----------------------------- I2C2_I2C2_RX_TL_REG ---------------------------- */ -#define I2C2_I2C2_RX_TL_REG_RX_TL_Pos (0UL) /*!< I2C2 I2C2_RX_TL_REG: RX_TL (Bit 0) */ -#define I2C2_I2C2_RX_TL_REG_RX_TL_Msk (0x1fUL) /*!< I2C2 I2C2_RX_TL_REG: RX_TL (Bitfield-Mask: 0x1f) */ - -/* ----------------------------- I2C2_I2C2_TX_TL_REG ---------------------------- */ -#define I2C2_I2C2_TX_TL_REG_TX_TL_Pos (0UL) /*!< I2C2 I2C2_TX_TL_REG: TX_TL (Bit 0) */ -#define I2C2_I2C2_TX_TL_REG_TX_TL_Msk (0x1fUL) /*!< I2C2 I2C2_TX_TL_REG: TX_TL (Bitfield-Mask: 0x1f) */ - -/* --------------------------- I2C2_I2C2_CLR_INTR_REG --------------------------- */ -#define I2C2_I2C2_CLR_INTR_REG_CLR_INTR_Pos (0UL) /*!< I2C2 I2C2_CLR_INTR_REG: CLR_INTR (Bit 0) */ -#define I2C2_I2C2_CLR_INTR_REG_CLR_INTR_Msk (0x1UL) /*!< I2C2 I2C2_CLR_INTR_REG: CLR_INTR (Bitfield-Mask: 0x01) */ - -/* ------------------------- I2C2_I2C2_CLR_RX_UNDER_REG ------------------------- */ -#define I2C2_I2C2_CLR_RX_UNDER_REG_CLR_RX_UNDER_Pos (0UL) /*!< I2C2 I2C2_CLR_RX_UNDER_REG: CLR_RX_UNDER (Bit 0) */ -#define I2C2_I2C2_CLR_RX_UNDER_REG_CLR_RX_UNDER_Msk (0x1UL) /*!< I2C2 I2C2_CLR_RX_UNDER_REG: CLR_RX_UNDER (Bitfield-Mask: 0x01) */ - -/* -------------------------- I2C2_I2C2_CLR_RX_OVER_REG ------------------------- */ -#define I2C2_I2C2_CLR_RX_OVER_REG_CLR_RX_OVER_Pos (0UL) /*!< I2C2 I2C2_CLR_RX_OVER_REG: CLR_RX_OVER (Bit 0) */ -#define I2C2_I2C2_CLR_RX_OVER_REG_CLR_RX_OVER_Msk (0x1UL) /*!< I2C2 I2C2_CLR_RX_OVER_REG: CLR_RX_OVER (Bitfield-Mask: 0x01) */ - -/* -------------------------- I2C2_I2C2_CLR_TX_OVER_REG ------------------------- */ -#define I2C2_I2C2_CLR_TX_OVER_REG_CLR_TX_OVER_Pos (0UL) /*!< I2C2 I2C2_CLR_TX_OVER_REG: CLR_TX_OVER (Bit 0) */ -#define I2C2_I2C2_CLR_TX_OVER_REG_CLR_TX_OVER_Msk (0x1UL) /*!< I2C2 I2C2_CLR_TX_OVER_REG: CLR_TX_OVER (Bitfield-Mask: 0x01) */ - -/* -------------------------- I2C2_I2C2_CLR_RD_REQ_REG -------------------------- */ -#define I2C2_I2C2_CLR_RD_REQ_REG_CLR_RD_REQ_Pos (0UL) /*!< I2C2 I2C2_CLR_RD_REQ_REG: CLR_RD_REQ (Bit 0) */ -#define I2C2_I2C2_CLR_RD_REQ_REG_CLR_RD_REQ_Msk (0x1UL) /*!< I2C2 I2C2_CLR_RD_REQ_REG: CLR_RD_REQ (Bitfield-Mask: 0x01) */ - -/* -------------------------- I2C2_I2C2_CLR_TX_ABRT_REG ------------------------- */ -#define I2C2_I2C2_CLR_TX_ABRT_REG_CLR_TX_ABRT_Pos (0UL) /*!< I2C2 I2C2_CLR_TX_ABRT_REG: CLR_TX_ABRT (Bit 0) */ -#define I2C2_I2C2_CLR_TX_ABRT_REG_CLR_TX_ABRT_Msk (0x1UL) /*!< I2C2 I2C2_CLR_TX_ABRT_REG: CLR_TX_ABRT (Bitfield-Mask: 0x01) */ - -/* -------------------------- I2C2_I2C2_CLR_RX_DONE_REG ------------------------- */ -#define I2C2_I2C2_CLR_RX_DONE_REG_CLR_RX_DONE_Pos (0UL) /*!< I2C2 I2C2_CLR_RX_DONE_REG: CLR_RX_DONE (Bit 0) */ -#define I2C2_I2C2_CLR_RX_DONE_REG_CLR_RX_DONE_Msk (0x1UL) /*!< I2C2 I2C2_CLR_RX_DONE_REG: CLR_RX_DONE (Bitfield-Mask: 0x01) */ - -/* ------------------------- I2C2_I2C2_CLR_ACTIVITY_REG ------------------------- */ -#define I2C2_I2C2_CLR_ACTIVITY_REG_CLR_ACTIVITY_Pos (0UL) /*!< I2C2 I2C2_CLR_ACTIVITY_REG: CLR_ACTIVITY (Bit 0) */ -#define I2C2_I2C2_CLR_ACTIVITY_REG_CLR_ACTIVITY_Msk (0x1UL) /*!< I2C2 I2C2_CLR_ACTIVITY_REG: CLR_ACTIVITY (Bitfield-Mask: 0x01) */ - -/* ------------------------- I2C2_I2C2_CLR_STOP_DET_REG ------------------------- */ -#define I2C2_I2C2_CLR_STOP_DET_REG_CLR_ACTIVITY_Pos (0UL) /*!< I2C2 I2C2_CLR_STOP_DET_REG: CLR_ACTIVITY (Bit 0) */ -#define I2C2_I2C2_CLR_STOP_DET_REG_CLR_ACTIVITY_Msk (0x1UL) /*!< I2C2 I2C2_CLR_STOP_DET_REG: CLR_ACTIVITY (Bitfield-Mask: 0x01) */ - -/* ------------------------- I2C2_I2C2_CLR_START_DET_REG ------------------------ */ -#define I2C2_I2C2_CLR_START_DET_REG_CLR_START_DET_Pos (0UL) /*!< I2C2 I2C2_CLR_START_DET_REG: CLR_START_DET (Bit 0) */ -#define I2C2_I2C2_CLR_START_DET_REG_CLR_START_DET_Msk (0x1UL) /*!< I2C2 I2C2_CLR_START_DET_REG: CLR_START_DET (Bitfield-Mask: 0x01) */ - -/* ------------------------- I2C2_I2C2_CLR_GEN_CALL_REG ------------------------- */ -#define I2C2_I2C2_CLR_GEN_CALL_REG_CLR_GEN_CALL_Pos (0UL) /*!< I2C2 I2C2_CLR_GEN_CALL_REG: CLR_GEN_CALL (Bit 0) */ -#define I2C2_I2C2_CLR_GEN_CALL_REG_CLR_GEN_CALL_Msk (0x1UL) /*!< I2C2 I2C2_CLR_GEN_CALL_REG: CLR_GEN_CALL (Bitfield-Mask: 0x01) */ - -/* ---------------------------- I2C2_I2C2_ENABLE_REG ---------------------------- */ -#define I2C2_I2C2_ENABLE_REG_CTRL_ENABLE_Pos (0UL) /*!< I2C2 I2C2_ENABLE_REG: CTRL_ENABLE (Bit 0) */ -#define I2C2_I2C2_ENABLE_REG_CTRL_ENABLE_Msk (0x1UL) /*!< I2C2 I2C2_ENABLE_REG: CTRL_ENABLE (Bitfield-Mask: 0x01) */ - -/* ---------------------------- I2C2_I2C2_STATUS_REG ---------------------------- */ -#define I2C2_I2C2_STATUS_REG_I2C_ACTIVITY_Pos (0UL) /*!< I2C2 I2C2_STATUS_REG: I2C_ACTIVITY (Bit 0) */ -#define I2C2_I2C2_STATUS_REG_I2C_ACTIVITY_Msk (0x1UL) /*!< I2C2 I2C2_STATUS_REG: I2C_ACTIVITY (Bitfield-Mask: 0x01) */ -#define I2C2_I2C2_STATUS_REG_TFNF_Pos (1UL) /*!< I2C2 I2C2_STATUS_REG: TFNF (Bit 1) */ -#define I2C2_I2C2_STATUS_REG_TFNF_Msk (0x2UL) /*!< I2C2 I2C2_STATUS_REG: TFNF (Bitfield-Mask: 0x01) */ -#define I2C2_I2C2_STATUS_REG_TFE_Pos (2UL) /*!< I2C2 I2C2_STATUS_REG: TFE (Bit 2) */ -#define I2C2_I2C2_STATUS_REG_TFE_Msk (0x4UL) /*!< I2C2 I2C2_STATUS_REG: TFE (Bitfield-Mask: 0x01) */ -#define I2C2_I2C2_STATUS_REG_RFNE_Pos (3UL) /*!< I2C2 I2C2_STATUS_REG: RFNE (Bit 3) */ -#define I2C2_I2C2_STATUS_REG_RFNE_Msk (0x8UL) /*!< I2C2 I2C2_STATUS_REG: RFNE (Bitfield-Mask: 0x01) */ -#define I2C2_I2C2_STATUS_REG_RFF_Pos (4UL) /*!< I2C2 I2C2_STATUS_REG: RFF (Bit 4) */ -#define I2C2_I2C2_STATUS_REG_RFF_Msk (0x10UL) /*!< I2C2 I2C2_STATUS_REG: RFF (Bitfield-Mask: 0x01) */ -#define I2C2_I2C2_STATUS_REG_MST_ACTIVITY_Pos (5UL) /*!< I2C2 I2C2_STATUS_REG: MST_ACTIVITY (Bit 5) */ -#define I2C2_I2C2_STATUS_REG_MST_ACTIVITY_Msk (0x20UL) /*!< I2C2 I2C2_STATUS_REG: MST_ACTIVITY (Bitfield-Mask: 0x01) */ -#define I2C2_I2C2_STATUS_REG_SLV_ACTIVITY_Pos (6UL) /*!< I2C2 I2C2_STATUS_REG: SLV_ACTIVITY (Bit 6) */ -#define I2C2_I2C2_STATUS_REG_SLV_ACTIVITY_Msk (0x40UL) /*!< I2C2 I2C2_STATUS_REG: SLV_ACTIVITY (Bitfield-Mask: 0x01) */ - -/* ----------------------------- I2C2_I2C2_TXFLR_REG ---------------------------- */ -#define I2C2_I2C2_TXFLR_REG_TXFLR_Pos (0UL) /*!< I2C2 I2C2_TXFLR_REG: TXFLR (Bit 0) */ -#define I2C2_I2C2_TXFLR_REG_TXFLR_Msk (0x3fUL) /*!< I2C2 I2C2_TXFLR_REG: TXFLR (Bitfield-Mask: 0x3f) */ - -/* ----------------------------- I2C2_I2C2_RXFLR_REG ---------------------------- */ -#define I2C2_I2C2_RXFLR_REG_RXFLR_Pos (0UL) /*!< I2C2 I2C2_RXFLR_REG: RXFLR (Bit 0) */ -#define I2C2_I2C2_RXFLR_REG_RXFLR_Msk (0x3fUL) /*!< I2C2 I2C2_RXFLR_REG: RXFLR (Bitfield-Mask: 0x3f) */ - -/* --------------------------- I2C2_I2C2_SDA_HOLD_REG --------------------------- */ -#define I2C2_I2C2_SDA_HOLD_REG_IC_SDA_HOLD_Pos (0UL) /*!< I2C2 I2C2_SDA_HOLD_REG: IC_SDA_HOLD (Bit 0) */ -#define I2C2_I2C2_SDA_HOLD_REG_IC_SDA_HOLD_Msk (0xffffUL) /*!< I2C2 I2C2_SDA_HOLD_REG: IC_SDA_HOLD (Bitfield-Mask: 0xffff) */ - -/* ------------------------ I2C2_I2C2_TX_ABRT_SOURCE_REG ------------------------ */ -#define I2C2_I2C2_TX_ABRT_SOURCE_REG_ABRT_7B_ADDR_NOACK_Pos (0UL) /*!< I2C2 I2C2_TX_ABRT_SOURCE_REG: ABRT_7B_ADDR_NOACK (Bit 0) */ -#define I2C2_I2C2_TX_ABRT_SOURCE_REG_ABRT_7B_ADDR_NOACK_Msk (0x1UL) /*!< I2C2 I2C2_TX_ABRT_SOURCE_REG: ABRT_7B_ADDR_NOACK (Bitfield-Mask: 0x01) */ -#define I2C2_I2C2_TX_ABRT_SOURCE_REG_ABRT_10ADDR1_NOACK_Pos (1UL) /*!< I2C2 I2C2_TX_ABRT_SOURCE_REG: ABRT_10ADDR1_NOACK (Bit 1) */ -#define I2C2_I2C2_TX_ABRT_SOURCE_REG_ABRT_10ADDR1_NOACK_Msk (0x2UL) /*!< I2C2 I2C2_TX_ABRT_SOURCE_REG: ABRT_10ADDR1_NOACK (Bitfield-Mask: 0x01) */ -#define I2C2_I2C2_TX_ABRT_SOURCE_REG_ABRT_10ADDR2_NOACK_Pos (2UL) /*!< I2C2 I2C2_TX_ABRT_SOURCE_REG: ABRT_10ADDR2_NOACK (Bit 2) */ -#define I2C2_I2C2_TX_ABRT_SOURCE_REG_ABRT_10ADDR2_NOACK_Msk (0x4UL) /*!< I2C2 I2C2_TX_ABRT_SOURCE_REG: ABRT_10ADDR2_NOACK (Bitfield-Mask: 0x01) */ -#define I2C2_I2C2_TX_ABRT_SOURCE_REG_ABRT_TXDATA_NOACK_Pos (3UL) /*!< I2C2 I2C2_TX_ABRT_SOURCE_REG: ABRT_TXDATA_NOACK (Bit 3) */ -#define I2C2_I2C2_TX_ABRT_SOURCE_REG_ABRT_TXDATA_NOACK_Msk (0x8UL) /*!< I2C2 I2C2_TX_ABRT_SOURCE_REG: ABRT_TXDATA_NOACK (Bitfield-Mask: 0x01) */ -#define I2C2_I2C2_TX_ABRT_SOURCE_REG_ABRT_GCALL_NOACK_Pos (4UL) /*!< I2C2 I2C2_TX_ABRT_SOURCE_REG: ABRT_GCALL_NOACK (Bit 4) */ -#define I2C2_I2C2_TX_ABRT_SOURCE_REG_ABRT_GCALL_NOACK_Msk (0x10UL) /*!< I2C2 I2C2_TX_ABRT_SOURCE_REG: ABRT_GCALL_NOACK (Bitfield-Mask: 0x01) */ -#define I2C2_I2C2_TX_ABRT_SOURCE_REG_ABRT_GCALL_READ_Pos (5UL) /*!< I2C2 I2C2_TX_ABRT_SOURCE_REG: ABRT_GCALL_READ (Bit 5) */ -#define I2C2_I2C2_TX_ABRT_SOURCE_REG_ABRT_GCALL_READ_Msk (0x20UL) /*!< I2C2 I2C2_TX_ABRT_SOURCE_REG: ABRT_GCALL_READ (Bitfield-Mask: 0x01) */ -#define I2C2_I2C2_TX_ABRT_SOURCE_REG_ABRT_HS_ACKDET_Pos (6UL) /*!< I2C2 I2C2_TX_ABRT_SOURCE_REG: ABRT_HS_ACKDET (Bit 6) */ -#define I2C2_I2C2_TX_ABRT_SOURCE_REG_ABRT_HS_ACKDET_Msk (0x40UL) /*!< I2C2 I2C2_TX_ABRT_SOURCE_REG: ABRT_HS_ACKDET (Bitfield-Mask: 0x01) */ -#define I2C2_I2C2_TX_ABRT_SOURCE_REG_ABRT_SBYTE_ACKDET_Pos (7UL) /*!< I2C2 I2C2_TX_ABRT_SOURCE_REG: ABRT_SBYTE_ACKDET (Bit 7) */ -#define I2C2_I2C2_TX_ABRT_SOURCE_REG_ABRT_SBYTE_ACKDET_Msk (0x80UL) /*!< I2C2 I2C2_TX_ABRT_SOURCE_REG: ABRT_SBYTE_ACKDET (Bitfield-Mask: 0x01) */ -#define I2C2_I2C2_TX_ABRT_SOURCE_REG_ABRT_HS_NORSTRT_Pos (8UL) /*!< I2C2 I2C2_TX_ABRT_SOURCE_REG: ABRT_HS_NORSTRT (Bit 8) */ -#define I2C2_I2C2_TX_ABRT_SOURCE_REG_ABRT_HS_NORSTRT_Msk (0x100UL) /*!< I2C2 I2C2_TX_ABRT_SOURCE_REG: ABRT_HS_NORSTRT (Bitfield-Mask: 0x01) */ -#define I2C2_I2C2_TX_ABRT_SOURCE_REG_ABRT_SBYTE_NORSTRT_Pos (9UL) /*!< I2C2 I2C2_TX_ABRT_SOURCE_REG: ABRT_SBYTE_NORSTRT (Bit 9) */ -#define I2C2_I2C2_TX_ABRT_SOURCE_REG_ABRT_SBYTE_NORSTRT_Msk (0x200UL) /*!< I2C2 I2C2_TX_ABRT_SOURCE_REG: ABRT_SBYTE_NORSTRT (Bitfield-Mask: 0x01) */ -#define I2C2_I2C2_TX_ABRT_SOURCE_REG_ABRT_10B_RD_NORSTRT_Pos (10UL) /*!< I2C2 I2C2_TX_ABRT_SOURCE_REG: ABRT_10B_RD_NORSTRT (Bit 10) */ -#define I2C2_I2C2_TX_ABRT_SOURCE_REG_ABRT_10B_RD_NORSTRT_Msk (0x400UL) /*!< I2C2 I2C2_TX_ABRT_SOURCE_REG: ABRT_10B_RD_NORSTRT (Bitfield-Mask: 0x01) */ -#define I2C2_I2C2_TX_ABRT_SOURCE_REG_ABRT_MASTER_DIS_Pos (11UL) /*!< I2C2 I2C2_TX_ABRT_SOURCE_REG: ABRT_MASTER_DIS (Bit 11) */ -#define I2C2_I2C2_TX_ABRT_SOURCE_REG_ABRT_MASTER_DIS_Msk (0x800UL) /*!< I2C2 I2C2_TX_ABRT_SOURCE_REG: ABRT_MASTER_DIS (Bitfield-Mask: 0x01) */ -#define I2C2_I2C2_TX_ABRT_SOURCE_REG_ARB_LOST_Pos (12UL) /*!< I2C2 I2C2_TX_ABRT_SOURCE_REG: ARB_LOST (Bit 12) */ -#define I2C2_I2C2_TX_ABRT_SOURCE_REG_ARB_LOST_Msk (0x1000UL) /*!< I2C2 I2C2_TX_ABRT_SOURCE_REG: ARB_LOST (Bitfield-Mask: 0x01) */ -#define I2C2_I2C2_TX_ABRT_SOURCE_REG_ABRT_SLVFLUSH_TXFIFO_Pos (13UL) /*!< I2C2 I2C2_TX_ABRT_SOURCE_REG: ABRT_SLVFLUSH_TXFIFO (Bit 13) */ -#define I2C2_I2C2_TX_ABRT_SOURCE_REG_ABRT_SLVFLUSH_TXFIFO_Msk (0x2000UL) /*!< I2C2 I2C2_TX_ABRT_SOURCE_REG: ABRT_SLVFLUSH_TXFIFO (Bitfield-Mask: 0x01) */ -#define I2C2_I2C2_TX_ABRT_SOURCE_REG_ABRT_SLV_ARBLOST_Pos (14UL) /*!< I2C2 I2C2_TX_ABRT_SOURCE_REG: ABRT_SLV_ARBLOST (Bit 14) */ -#define I2C2_I2C2_TX_ABRT_SOURCE_REG_ABRT_SLV_ARBLOST_Msk (0x4000UL) /*!< I2C2 I2C2_TX_ABRT_SOURCE_REG: ABRT_SLV_ARBLOST (Bitfield-Mask: 0x01) */ -#define I2C2_I2C2_TX_ABRT_SOURCE_REG_ABRT_SLVRD_INTX_Pos (15UL) /*!< I2C2 I2C2_TX_ABRT_SOURCE_REG: ABRT_SLVRD_INTX (Bit 15) */ -#define I2C2_I2C2_TX_ABRT_SOURCE_REG_ABRT_SLVRD_INTX_Msk (0x8000UL) /*!< I2C2 I2C2_TX_ABRT_SOURCE_REG: ABRT_SLVRD_INTX (Bitfield-Mask: 0x01) */ - -/* ---------------------------- I2C2_I2C2_DMA_CR_REG ---------------------------- */ -#define I2C2_I2C2_DMA_CR_REG_RDMAE_Pos (0UL) /*!< I2C2 I2C2_DMA_CR_REG: RDMAE (Bit 0) */ -#define I2C2_I2C2_DMA_CR_REG_RDMAE_Msk (0x1UL) /*!< I2C2 I2C2_DMA_CR_REG: RDMAE (Bitfield-Mask: 0x01) */ -#define I2C2_I2C2_DMA_CR_REG_TDMAE_Pos (1UL) /*!< I2C2 I2C2_DMA_CR_REG: TDMAE (Bit 1) */ -#define I2C2_I2C2_DMA_CR_REG_TDMAE_Msk (0x2UL) /*!< I2C2 I2C2_DMA_CR_REG: TDMAE (Bitfield-Mask: 0x01) */ - -/* --------------------------- I2C2_I2C2_DMA_TDLR_REG --------------------------- */ -#define I2C2_I2C2_DMA_TDLR_REG_DMATDL_Pos (0UL) /*!< I2C2 I2C2_DMA_TDLR_REG: DMATDL (Bit 0) */ -#define I2C2_I2C2_DMA_TDLR_REG_DMATDL_Msk (0x1fUL) /*!< I2C2 I2C2_DMA_TDLR_REG: DMATDL (Bitfield-Mask: 0x1f) */ - -/* --------------------------- I2C2_I2C2_DMA_RDLR_REG --------------------------- */ -#define I2C2_I2C2_DMA_RDLR_REG_DMARDL_Pos (0UL) /*!< I2C2 I2C2_DMA_RDLR_REG: DMARDL (Bit 0) */ -#define I2C2_I2C2_DMA_RDLR_REG_DMARDL_Msk (0x1fUL) /*!< I2C2 I2C2_DMA_RDLR_REG: DMARDL (Bitfield-Mask: 0x1f) */ - -/* --------------------------- I2C2_I2C2_SDA_SETUP_REG -------------------------- */ -#define I2C2_I2C2_SDA_SETUP_REG_SDA_SETUP_Pos (0UL) /*!< I2C2 I2C2_SDA_SETUP_REG: SDA_SETUP (Bit 0) */ -#define I2C2_I2C2_SDA_SETUP_REG_SDA_SETUP_Msk (0xffUL) /*!< I2C2 I2C2_SDA_SETUP_REG: SDA_SETUP (Bitfield-Mask: 0xff) */ - -/* ----------------------- I2C2_I2C2_ACK_GENERAL_CALL_REG ----------------------- */ -#define I2C2_I2C2_ACK_GENERAL_CALL_REG_ACK_GEN_CALL_Pos (0UL) /*!< I2C2 I2C2_ACK_GENERAL_CALL_REG: ACK_GEN_CALL (Bit 0) */ -#define I2C2_I2C2_ACK_GENERAL_CALL_REG_ACK_GEN_CALL_Msk (0x1UL) /*!< I2C2 I2C2_ACK_GENERAL_CALL_REG: ACK_GEN_CALL (Bitfield-Mask: 0x01) */ - -/* ------------------------- I2C2_I2C2_ENABLE_STATUS_REG ------------------------ */ -#define I2C2_I2C2_ENABLE_STATUS_REG_IC_EN_Pos (0UL) /*!< I2C2 I2C2_ENABLE_STATUS_REG: IC_EN (Bit 0) */ -#define I2C2_I2C2_ENABLE_STATUS_REG_IC_EN_Msk (0x1UL) /*!< I2C2 I2C2_ENABLE_STATUS_REG: IC_EN (Bitfield-Mask: 0x01) */ -#define I2C2_I2C2_ENABLE_STATUS_REG_SLV_DISABLED_WHILE_BUSY_Pos (1UL) /*!< I2C2 I2C2_ENABLE_STATUS_REG: SLV_DISABLED_WHILE_BUSY (Bit 1) */ -#define I2C2_I2C2_ENABLE_STATUS_REG_SLV_DISABLED_WHILE_BUSY_Msk (0x2UL) /*!< I2C2 I2C2_ENABLE_STATUS_REG: SLV_DISABLED_WHILE_BUSY (Bitfield-Mask: 0x01) */ -#define I2C2_I2C2_ENABLE_STATUS_REG_SLV_RX_DATA_LOST_Pos (2UL) /*!< I2C2 I2C2_ENABLE_STATUS_REG: SLV_RX_DATA_LOST (Bit 2) */ -#define I2C2_I2C2_ENABLE_STATUS_REG_SLV_RX_DATA_LOST_Msk (0x4UL) /*!< I2C2 I2C2_ENABLE_STATUS_REG: SLV_RX_DATA_LOST (Bitfield-Mask: 0x01) */ - -/* ------------------------- I2C2_I2C2_IC_FS_SPKLEN_REG ------------------------- */ -#define I2C2_I2C2_IC_FS_SPKLEN_REG_IC_FS_SPKLEN_Pos (0UL) /*!< I2C2 I2C2_IC_FS_SPKLEN_REG: IC_FS_SPKLEN (Bit 0) */ -#define I2C2_I2C2_IC_FS_SPKLEN_REG_IC_FS_SPKLEN_Msk (0xffUL) /*!< I2C2 I2C2_IC_FS_SPKLEN_REG: IC_FS_SPKLEN (Bitfield-Mask: 0xff) */ - -/* -------------------------- I2C2_I2C2_COMP_PARAM1_REG ------------------------- */ -#define I2C2_I2C2_COMP_PARAM1_REG_IC_COMP_PARAM1_Pos (0UL) /*!< I2C2 I2C2_COMP_PARAM1_REG: IC_COMP_PARAM1 (Bit 0) */ -#define I2C2_I2C2_COMP_PARAM1_REG_IC_COMP_PARAM1_Msk (0xffffUL) /*!< I2C2 I2C2_COMP_PARAM1_REG: IC_COMP_PARAM1 (Bitfield-Mask: 0xffff) */ - -/* -------------------------- I2C2_I2C2_COMP_PARAM2_REG ------------------------- */ -#define I2C2_I2C2_COMP_PARAM2_REG_IC_COMP_PARAM2_Pos (0UL) /*!< I2C2 I2C2_COMP_PARAM2_REG: IC_COMP_PARAM2 (Bit 0) */ -#define I2C2_I2C2_COMP_PARAM2_REG_IC_COMP_PARAM2_Msk (0xffffUL) /*!< I2C2 I2C2_COMP_PARAM2_REG: IC_COMP_PARAM2 (Bitfield-Mask: 0xffff) */ - -/* ------------------------- I2C2_I2C2_COMP_VERSION_REG ------------------------- */ -#define I2C2_I2C2_COMP_VERSION_REG_IC_COMP_VERSION_Pos (0UL) /*!< I2C2 I2C2_COMP_VERSION_REG: IC_COMP_VERSION (Bit 0) */ -#define I2C2_I2C2_COMP_VERSION_REG_IC_COMP_VERSION_Msk (0xffffUL) /*!< I2C2 I2C2_COMP_VERSION_REG: IC_COMP_VERSION (Bitfield-Mask: 0xffff) */ - -/* --------------------------- I2C2_I2C2_COMP2_VERSION -------------------------- */ -#define I2C2_I2C2_COMP2_VERSION_IC_COMP2_VERSION_Pos (0UL) /*!< I2C2 I2C2_COMP2_VERSION: IC_COMP2_VERSION (Bit 0) */ -#define I2C2_I2C2_COMP2_VERSION_IC_COMP2_VERSION_Msk (0xffffUL) /*!< I2C2 I2C2_COMP2_VERSION: IC_COMP2_VERSION (Bitfield-Mask: 0xffff) */ - -/* --------------------------- I2C2_I2C2_COMP_TYPE_REG -------------------------- */ -#define I2C2_I2C2_COMP_TYPE_REG_IC_COMP_TYPE_Pos (0UL) /*!< I2C2 I2C2_COMP_TYPE_REG: IC_COMP_TYPE (Bit 0) */ -#define I2C2_I2C2_COMP_TYPE_REG_IC_COMP_TYPE_Msk (0xffffUL) /*!< I2C2 I2C2_COMP_TYPE_REG: IC_COMP_TYPE (Bitfield-Mask: 0xffff) */ - -/* -------------------------- I2C2_I2C2_COMP_TYPE2_REG -------------------------- */ -#define I2C2_I2C2_COMP_TYPE2_REG_IC_COMP2_TYPE_Pos (0UL) /*!< I2C2 I2C2_COMP_TYPE2_REG: IC_COMP2_TYPE (Bit 0) */ -#define I2C2_I2C2_COMP_TYPE2_REG_IC_COMP2_TYPE_Msk (0xffffUL) /*!< I2C2 I2C2_COMP_TYPE2_REG: IC_COMP2_TYPE (Bitfield-Mask: 0xffff) */ - - -/* ================================================================================ */ -/* ================ struct 'IR' Position & Mask ================ */ -/* ================================================================================ */ - - -/* -------------------------- IR_IR_FREQ_CARRIER_ON_REG ------------------------- */ -#define IR_IR_FREQ_CARRIER_ON_REG_IR_FREQ_CARRIER_ON_Pos (0UL) /*!< IR IR_FREQ_CARRIER_ON_REG: IR_FREQ_CARRIER_ON (Bit 0) */ -#define IR_IR_FREQ_CARRIER_ON_REG_IR_FREQ_CARRIER_ON_Msk (0x3ffUL) /*!< IR IR_FREQ_CARRIER_ON_REG: IR_FREQ_CARRIER_ON (Bitfield-Mask: 0x3ff) */ - -/* ------------------------- IR_IR_FREQ_CARRIER_OFF_REG ------------------------- */ -#define IR_IR_FREQ_CARRIER_OFF_REG_IR_FREQ_CARRIER_OFF_Pos (0UL) /*!< IR IR_FREQ_CARRIER_OFF_REG: IR_FREQ_CARRIER_OFF (Bit 0) */ -#define IR_IR_FREQ_CARRIER_OFF_REG_IR_FREQ_CARRIER_OFF_Msk (0x3ffUL) /*!< IR IR_FREQ_CARRIER_OFF_REG: IR_FREQ_CARRIER_OFF (Bitfield-Mask: 0x3ff) */ - -/* -------------------------- IR_IR_LOGIC_ONE_TIME_REG -------------------------- */ -#define IR_IR_LOGIC_ONE_TIME_REG_IR_LOGIC_ONE_SPACE_Pos (0UL) /*!< IR IR_LOGIC_ONE_TIME_REG: IR_LOGIC_ONE_SPACE (Bit 0) */ -#define IR_IR_LOGIC_ONE_TIME_REG_IR_LOGIC_ONE_SPACE_Msk (0xffUL) /*!< IR IR_LOGIC_ONE_TIME_REG: IR_LOGIC_ONE_SPACE (Bitfield-Mask: 0xff) */ -#define IR_IR_LOGIC_ONE_TIME_REG_IR_LOGIC_ONE_MARK_Pos (8UL) /*!< IR IR_LOGIC_ONE_TIME_REG: IR_LOGIC_ONE_MARK (Bit 8) */ -#define IR_IR_LOGIC_ONE_TIME_REG_IR_LOGIC_ONE_MARK_Msk (0xff00UL) /*!< IR IR_LOGIC_ONE_TIME_REG: IR_LOGIC_ONE_MARK (Bitfield-Mask: 0xff) */ - -/* -------------------------- IR_IR_LOGIC_ZERO_TIME_REG ------------------------- */ -#define IR_IR_LOGIC_ZERO_TIME_REG_IR_LOGIC_ZERO_SPACE_Pos (0UL) /*!< IR IR_LOGIC_ZERO_TIME_REG: IR_LOGIC_ZERO_SPACE (Bit 0) */ -#define IR_IR_LOGIC_ZERO_TIME_REG_IR_LOGIC_ZERO_SPACE_Msk (0xffUL) /*!< IR IR_LOGIC_ZERO_TIME_REG: IR_LOGIC_ZERO_SPACE (Bitfield-Mask: 0xff) */ -#define IR_IR_LOGIC_ZERO_TIME_REG_IR_LOGIC_ZERO_MARK_Pos (8UL) /*!< IR IR_LOGIC_ZERO_TIME_REG: IR_LOGIC_ZERO_MARK (Bit 8) */ -#define IR_IR_LOGIC_ZERO_TIME_REG_IR_LOGIC_ZERO_MARK_Msk (0xff00UL) /*!< IR IR_LOGIC_ZERO_TIME_REG: IR_LOGIC_ZERO_MARK (Bitfield-Mask: 0xff) */ - -/* ------------------------------- IR_IR_CTRL_REG ------------------------------- */ -#define IR_IR_CTRL_REG_IR_CODE_FIFO_RESET_Pos (0UL) /*!< IR IR_CTRL_REG: IR_CODE_FIFO_RESET (Bit 0) */ -#define IR_IR_CTRL_REG_IR_CODE_FIFO_RESET_Msk (0x1UL) /*!< IR IR_CTRL_REG: IR_CODE_FIFO_RESET (Bitfield-Mask: 0x01) */ -#define IR_IR_CTRL_REG_IR_REP_FIFO_RESET_Pos (1UL) /*!< IR IR_CTRL_REG: IR_REP_FIFO_RESET (Bit 1) */ -#define IR_IR_CTRL_REG_IR_REP_FIFO_RESET_Msk (0x2UL) /*!< IR IR_CTRL_REG: IR_REP_FIFO_RESET (Bitfield-Mask: 0x01) */ -#define IR_IR_CTRL_REG_IR_ENABLE_Pos (2UL) /*!< IR IR_CTRL_REG: IR_ENABLE (Bit 2) */ -#define IR_IR_CTRL_REG_IR_ENABLE_Msk (0x4UL) /*!< IR IR_CTRL_REG: IR_ENABLE (Bitfield-Mask: 0x01) */ -#define IR_IR_CTRL_REG_IR_TX_START_Pos (3UL) /*!< IR IR_CTRL_REG: IR_TX_START (Bit 3) */ -#define IR_IR_CTRL_REG_IR_TX_START_Msk (0x8UL) /*!< IR IR_CTRL_REG: IR_TX_START (Bitfield-Mask: 0x01) */ -#define IR_IR_CTRL_REG_IR_REPEAT_TYPE_Pos (4UL) /*!< IR IR_CTRL_REG: IR_REPEAT_TYPE (Bit 4) */ -#define IR_IR_CTRL_REG_IR_REPEAT_TYPE_Msk (0x10UL) /*!< IR IR_CTRL_REG: IR_REPEAT_TYPE (Bitfield-Mask: 0x01) */ -#define IR_IR_CTRL_REG_IR_INVERT_OUTPUT_Pos (5UL) /*!< IR IR_CTRL_REG: IR_INVERT_OUTPUT (Bit 5) */ -#define IR_IR_CTRL_REG_IR_INVERT_OUTPUT_Msk (0x20UL) /*!< IR IR_CTRL_REG: IR_INVERT_OUTPUT (Bitfield-Mask: 0x01) */ -#define IR_IR_CTRL_REG_IR_LOGIC_ZERO_FORMAT_Pos (6UL) /*!< IR IR_CTRL_REG: IR_LOGIC_ZERO_FORMAT (Bit 6) */ -#define IR_IR_CTRL_REG_IR_LOGIC_ZERO_FORMAT_Msk (0x40UL) /*!< IR IR_CTRL_REG: IR_LOGIC_ZERO_FORMAT (Bitfield-Mask: 0x01) */ -#define IR_IR_CTRL_REG_IR_LOGIC_ONE_FORMAT_Pos (7UL) /*!< IR IR_CTRL_REG: IR_LOGIC_ONE_FORMAT (Bit 7) */ -#define IR_IR_CTRL_REG_IR_LOGIC_ONE_FORMAT_Msk (0x80UL) /*!< IR IR_CTRL_REG: IR_LOGIC_ONE_FORMAT (Bitfield-Mask: 0x01) */ -#define IR_IR_CTRL_REG_IR_IRQ_EN_Pos (8UL) /*!< IR IR_CTRL_REG: IR_IRQ_EN (Bit 8) */ -#define IR_IR_CTRL_REG_IR_IRQ_EN_Msk (0x100UL) /*!< IR IR_CTRL_REG: IR_IRQ_EN (Bitfield-Mask: 0x01) */ - -/* ------------------------------ IR_IR_STATUS_REG ------------------------------ */ -#define IR_IR_STATUS_REG_IR_CODE_FIFO_WRDS_Pos (0UL) /*!< IR IR_STATUS_REG: IR_CODE_FIFO_WRDS (Bit 0) */ -#define IR_IR_STATUS_REG_IR_CODE_FIFO_WRDS_Msk (0x3fUL) /*!< IR IR_STATUS_REG: IR_CODE_FIFO_WRDS (Bitfield-Mask: 0x3f) */ -#define IR_IR_STATUS_REG_IR_REP_FIFO_WRDS_Pos (6UL) /*!< IR IR_STATUS_REG: IR_REP_FIFO_WRDS (Bit 6) */ -#define IR_IR_STATUS_REG_IR_REP_FIFO_WRDS_Msk (0x3c0UL) /*!< IR IR_STATUS_REG: IR_REP_FIFO_WRDS (Bitfield-Mask: 0x0f) */ -#define IR_IR_STATUS_REG_IR_BUSY_Pos (10UL) /*!< IR IR_STATUS_REG: IR_BUSY (Bit 10) */ -#define IR_IR_STATUS_REG_IR_BUSY_Msk (0x400UL) /*!< IR IR_STATUS_REG: IR_BUSY (Bitfield-Mask: 0x01) */ - -/* ---------------------------- IR_IR_REPEAT_TIME_REG --------------------------- */ -#define IR_IR_REPEAT_TIME_REG_IR_REPEAT_TIME_Pos (0UL) /*!< IR IR_REPEAT_TIME_REG: IR_REPEAT_TIME (Bit 0) */ -#define IR_IR_REPEAT_TIME_REG_IR_REPEAT_TIME_Msk (0xffffUL) /*!< IR IR_REPEAT_TIME_REG: IR_REPEAT_TIME (Bitfield-Mask: 0xffff) */ - -/* ----------------------------- IR_IR_MAIN_FIFO_REG ---------------------------- */ -#define IR_IR_MAIN_FIFO_REG_IR_CODE_FIFO_DATA_Pos (0UL) /*!< IR IR_MAIN_FIFO_REG: IR_CODE_FIFO_DATA (Bit 0) */ -#define IR_IR_MAIN_FIFO_REG_IR_CODE_FIFO_DATA_Msk (0xffffUL) /*!< IR IR_MAIN_FIFO_REG: IR_CODE_FIFO_DATA (Bitfield-Mask: 0xffff) */ - -/* ---------------------------- IR_IR_REPEAT_FIFO_REG --------------------------- */ -#define IR_IR_REPEAT_FIFO_REG_IR_REPEAT_FIFO_DATA_Pos (0UL) /*!< IR IR_REPEAT_FIFO_REG: IR_REPEAT_FIFO_DATA (Bit 0) */ -#define IR_IR_REPEAT_FIFO_REG_IR_REPEAT_FIFO_DATA_Msk (0xffffUL) /*!< IR IR_REPEAT_FIFO_REG: IR_REPEAT_FIFO_DATA (Bitfield-Mask: 0xffff) */ - -/* ---------------------------- IR_IR_IRQ_STATUS_REG ---------------------------- */ -#define IR_IR_IRQ_STATUS_REG_IR_IRQ_ACK_Pos (0UL) /*!< IR IR_IRQ_STATUS_REG: IR_IRQ_ACK (Bit 0) */ -#define IR_IR_IRQ_STATUS_REG_IR_IRQ_ACK_Msk (0x1UL) /*!< IR IR_IRQ_STATUS_REG: IR_IRQ_ACK (Bitfield-Mask: 0x01) */ - - -/* ================================================================================ */ -/* ================ struct 'KBSCAN' Position & Mask ================ */ -/* ================================================================================ */ - - -/* ---------------------------- KBSCAN_KBSCN_CTRL_REG --------------------------- */ -#define KBSCAN_KBSCN_CTRL_REG_KBSCN_EN_Pos (0UL) /*!< KBSCAN KBSCN_CTRL_REG: KBSCN_EN (Bit 0) */ -#define KBSCAN_KBSCN_CTRL_REG_KBSCN_EN_Msk (0x1UL) /*!< KBSCAN KBSCN_CTRL_REG: KBSCN_EN (Bitfield-Mask: 0x01) */ -#define KBSCAN_KBSCN_CTRL_REG_KBSCN_IRQ_MESSAGE_MASK_Pos (1UL) /*!< KBSCAN KBSCN_CTRL_REG: KBSCN_IRQ_MESSAGE_MASK (Bit 1) */ -#define KBSCAN_KBSCN_CTRL_REG_KBSCN_IRQ_MESSAGE_MASK_Msk (0x2UL) /*!< KBSCAN KBSCN_CTRL_REG: KBSCN_IRQ_MESSAGE_MASK (Bitfield-Mask: 0x01) */ -#define KBSCAN_KBSCN_CTRL_REG_KBSCN_IRQ_INACTIVE_MASK_Pos (2UL) /*!< KBSCAN KBSCN_CTRL_REG: KBSCN_IRQ_INACTIVE_MASK (Bit 2) */ -#define KBSCAN_KBSCN_CTRL_REG_KBSCN_IRQ_INACTIVE_MASK_Msk (0x4UL) /*!< KBSCAN KBSCN_CTRL_REG: KBSCN_IRQ_INACTIVE_MASK (Bitfield-Mask: 0x01) */ -#define KBSCAN_KBSCN_CTRL_REG_KBSCN_IRQ_FIFO_MASK_Pos (3UL) /*!< KBSCAN KBSCN_CTRL_REG: KBSCN_IRQ_FIFO_MASK (Bit 3) */ -#define KBSCAN_KBSCN_CTRL_REG_KBSCN_IRQ_FIFO_MASK_Msk (0x8UL) /*!< KBSCAN KBSCN_CTRL_REG: KBSCN_IRQ_FIFO_MASK (Bitfield-Mask: 0x01) */ -#define KBSCAN_KBSCN_CTRL_REG_KBSCN_INACTIVE_TIME_Pos (4UL) /*!< KBSCAN KBSCN_CTRL_REG: KBSCN_INACTIVE_TIME (Bit 4) */ -#define KBSCAN_KBSCN_CTRL_REG_KBSCN_INACTIVE_TIME_Msk (0x7f0UL) /*!< KBSCAN KBSCN_CTRL_REG: KBSCN_INACTIVE_TIME (Bitfield-Mask: 0x7f) */ -#define KBSCAN_KBSCN_CTRL_REG_KBSCN_INACTIVE_EN_Pos (11UL) /*!< KBSCAN KBSCN_CTRL_REG: KBSCN_INACTIVE_EN (Bit 11) */ -#define KBSCAN_KBSCN_CTRL_REG_KBSCN_INACTIVE_EN_Msk (0x800UL) /*!< KBSCAN KBSCN_CTRL_REG: KBSCN_INACTIVE_EN (Bitfield-Mask: 0x01) */ -#define KBSCAN_KBSCN_CTRL_REG_KBSCN_CLKDIV_Pos (12UL) /*!< KBSCAN KBSCN_CTRL_REG: KBSCN_CLKDIV (Bit 12) */ -#define KBSCAN_KBSCN_CTRL_REG_KBSCN_CLKDIV_Msk (0x3000UL) /*!< KBSCAN KBSCN_CTRL_REG: KBSCN_CLKDIV (Bitfield-Mask: 0x03) */ -#define KBSCAN_KBSCN_CTRL_REG_KBSCN_RESET_FIFO_Pos (14UL) /*!< KBSCAN KBSCN_CTRL_REG: KBSCN_RESET_FIFO (Bit 14) */ -#define KBSCAN_KBSCN_CTRL_REG_KBSCN_RESET_FIFO_Msk (0x4000UL) /*!< KBSCAN KBSCN_CTRL_REG: KBSCN_RESET_FIFO (Bitfield-Mask: 0x01) */ - -/* --------------------------- KBSCAN_KBSCN_CTRL2_REG --------------------------- */ -#define KBSCAN_KBSCN_CTRL2_REG_KBSCN_ROW_ACTIVE_TIME_Pos (0UL) /*!< KBSCAN KBSCN_CTRL2_REG: KBSCN_ROW_ACTIVE_TIME (Bit 0) */ -#define KBSCAN_KBSCN_CTRL2_REG_KBSCN_ROW_ACTIVE_TIME_Msk (0xffffUL) /*!< KBSCAN KBSCN_CTRL2_REG: KBSCN_ROW_ACTIVE_TIME (Bitfield-Mask: 0xffff) */ - -/* ------------------------ KBSCAN_KBSCN_MATRIX_SIZE_REG ------------------------ */ -#define KBSCAN_KBSCN_MATRIX_SIZE_REG_KBSCN_MATRIX_ROW_Pos (0UL) /*!< KBSCAN KBSCN_MATRIX_SIZE_REG: KBSCN_MATRIX_ROW (Bit 0) */ -#define KBSCAN_KBSCN_MATRIX_SIZE_REG_KBSCN_MATRIX_ROW_Msk (0xfUL) /*!< KBSCAN KBSCN_MATRIX_SIZE_REG: KBSCN_MATRIX_ROW (Bitfield-Mask: 0x0f) */ -#define KBSCAN_KBSCN_MATRIX_SIZE_REG_KBSCN_MATRIX_COLUMN_Pos (4UL) /*!< KBSCAN KBSCN_MATRIX_SIZE_REG: KBSCN_MATRIX_COLUMN (Bit 4) */ -#define KBSCAN_KBSCN_MATRIX_SIZE_REG_KBSCN_MATRIX_COLUMN_Msk (0x1f0UL) /*!< KBSCAN KBSCN_MATRIX_SIZE_REG: KBSCN_MATRIX_COLUMN (Bitfield-Mask: 0x1f) */ - -/* -------------------------- KBSCAN_KBSCN_DEBOUNCE_REG ------------------------- */ -#define KBSCAN_KBSCN_DEBOUNCE_REG_KBSCN_DEBOUNCE_RELEASE_TIME_Pos (0UL) /*!< KBSCAN KBSCN_DEBOUNCE_REG: KBSCN_DEBOUNCE_RELEASE_TIME (Bit 0) */ -#define KBSCAN_KBSCN_DEBOUNCE_REG_KBSCN_DEBOUNCE_RELEASE_TIME_Msk (0x3fUL) /*!< KBSCAN KBSCN_DEBOUNCE_REG: KBSCN_DEBOUNCE_RELEASE_TIME (Bitfield-Mask: 0x3f) */ -#define KBSCAN_KBSCN_DEBOUNCE_REG_KBSCN_DEBOUNCE_PRESS_TIME_Pos (6UL) /*!< KBSCAN KBSCN_DEBOUNCE_REG: KBSCN_DEBOUNCE_PRESS_TIME (Bit 6) */ -#define KBSCAN_KBSCN_DEBOUNCE_REG_KBSCN_DEBOUNCE_PRESS_TIME_Msk (0xfc0UL) /*!< KBSCAN KBSCN_DEBOUNCE_REG: KBSCN_DEBOUNCE_PRESS_TIME (Bitfield-Mask: 0x3f) */ - -/* --------------------------- KBSCAN_KBSCN_STATUS_REG -------------------------- */ -#define KBSCAN_KBSCN_STATUS_REG_KBSCN_MES_IRQ_STATUS_Pos (0UL) /*!< KBSCAN KBSCN_STATUS_REG: KBSCN_MES_IRQ_STATUS (Bit 0) */ -#define KBSCAN_KBSCN_STATUS_REG_KBSCN_MES_IRQ_STATUS_Msk (0x1UL) /*!< KBSCAN KBSCN_STATUS_REG: KBSCN_MES_IRQ_STATUS (Bitfield-Mask: 0x01) */ -#define KBSCAN_KBSCN_STATUS_REG_KBSCN_INACTIVE_IRQ_STATUS_Pos (1UL) /*!< KBSCAN KBSCN_STATUS_REG: KBSCN_INACTIVE_IRQ_STATUS (Bit 1) */ -#define KBSCAN_KBSCN_STATUS_REG_KBSCN_INACTIVE_IRQ_STATUS_Msk (0x2UL) /*!< KBSCAN KBSCN_STATUS_REG: KBSCN_INACTIVE_IRQ_STATUS (Bitfield-Mask: 0x01) */ -#define KBSCAN_KBSCN_STATUS_REG_KBSCN_NUM_MESSAGE_Pos (2UL) /*!< KBSCAN KBSCN_STATUS_REG: KBSCN_NUM_MESSAGE (Bit 2) */ -#define KBSCAN_KBSCN_STATUS_REG_KBSCN_NUM_MESSAGE_Msk (0x7cUL) /*!< KBSCAN KBSCN_STATUS_REG: KBSCN_NUM_MESSAGE (Bitfield-Mask: 0x1f) */ -#define KBSCAN_KBSCN_STATUS_REG_KBSCN_FIFO_OVERFL_Pos (7UL) /*!< KBSCAN KBSCN_STATUS_REG: KBSCN_FIFO_OVERFL (Bit 7) */ -#define KBSCAN_KBSCN_STATUS_REG_KBSCN_FIFO_OVERFL_Msk (0x80UL) /*!< KBSCAN KBSCN_STATUS_REG: KBSCN_FIFO_OVERFL (Bitfield-Mask: 0x01) */ -#define KBSCAN_KBSCN_STATUS_REG_KBSCN_FIFO_UNDERFL_Pos (8UL) /*!< KBSCAN KBSCN_STATUS_REG: KBSCN_FIFO_UNDERFL (Bit 8) */ -#define KBSCAN_KBSCN_STATUS_REG_KBSCN_FIFO_UNDERFL_Msk (0x100UL) /*!< KBSCAN KBSCN_STATUS_REG: KBSCN_FIFO_UNDERFL (Bitfield-Mask: 0x01) */ - -/* ------------------------ KBSCAN_KBSCN_MESSAGE_KEY_REG ------------------------ */ -#define KBSCAN_KBSCN_MESSAGE_KEY_REG_KBSCN_KEYID_ROW_Pos (0UL) /*!< KBSCAN KBSCN_MESSAGE_KEY_REG: KBSCN_KEYID_ROW (Bit 0) */ -#define KBSCAN_KBSCN_MESSAGE_KEY_REG_KBSCN_KEYID_ROW_Msk (0xfUL) /*!< KBSCAN KBSCN_MESSAGE_KEY_REG: KBSCN_KEYID_ROW (Bitfield-Mask: 0x0f) */ -#define KBSCAN_KBSCN_MESSAGE_KEY_REG_KBSCN_KEYID_COLUMN_Pos (4UL) /*!< KBSCAN KBSCN_MESSAGE_KEY_REG: KBSCN_KEYID_COLUMN (Bit 4) */ -#define KBSCAN_KBSCN_MESSAGE_KEY_REG_KBSCN_KEYID_COLUMN_Msk (0x1f0UL) /*!< KBSCAN KBSCN_MESSAGE_KEY_REG: KBSCN_KEYID_COLUMN (Bitfield-Mask: 0x1f) */ -#define KBSCAN_KBSCN_MESSAGE_KEY_REG_KBSCN_KEY_STATE_Pos (9UL) /*!< KBSCAN KBSCN_MESSAGE_KEY_REG: KBSCN_KEY_STATE (Bit 9) */ -#define KBSCAN_KBSCN_MESSAGE_KEY_REG_KBSCN_KEY_STATE_Msk (0x200UL) /*!< KBSCAN KBSCN_MESSAGE_KEY_REG: KBSCN_KEY_STATE (Bitfield-Mask: 0x01) */ -#define KBSCAN_KBSCN_MESSAGE_KEY_REG_KBSCN_LAST_ENTRY_Pos (10UL) /*!< KBSCAN KBSCN_MESSAGE_KEY_REG: KBSCN_LAST_ENTRY (Bit 10) */ -#define KBSCAN_KBSCN_MESSAGE_KEY_REG_KBSCN_LAST_ENTRY_Msk (0x400UL) /*!< KBSCAN KBSCN_MESSAGE_KEY_REG: KBSCN_LAST_ENTRY (Bitfield-Mask: 0x01) */ - -/* -------------------------- KBSCAN_KBSCN_P00_MODE_REG ------------------------- */ -#define KBSCAN_KBSCN_P00_MODE_REG_KBSCN_MODE_Pos (0UL) /*!< KBSCAN KBSCN_P00_MODE_REG: KBSCN_MODE (Bit 0) */ -#define KBSCAN_KBSCN_P00_MODE_REG_KBSCN_MODE_Msk (0x1fUL) /*!< KBSCAN KBSCN_P00_MODE_REG: KBSCN_MODE (Bitfield-Mask: 0x1f) */ -#define KBSCAN_KBSCN_P00_MODE_REG_KBSCN_ROW_Pos (5UL) /*!< KBSCAN KBSCN_P00_MODE_REG: KBSCN_ROW (Bit 5) */ -#define KBSCAN_KBSCN_P00_MODE_REG_KBSCN_ROW_Msk (0x20UL) /*!< KBSCAN KBSCN_P00_MODE_REG: KBSCN_ROW (Bitfield-Mask: 0x01) */ -#define KBSCAN_KBSCN_P00_MODE_REG_KBSCN_GPIO_EN_Pos (6UL) /*!< KBSCAN KBSCN_P00_MODE_REG: KBSCN_GPIO_EN (Bit 6) */ -#define KBSCAN_KBSCN_P00_MODE_REG_KBSCN_GPIO_EN_Msk (0x40UL) /*!< KBSCAN KBSCN_P00_MODE_REG: KBSCN_GPIO_EN (Bitfield-Mask: 0x01) */ - -/* -------------------------- KBSCAN_KBSCN_P01_MODE_REG ------------------------- */ -#define KBSCAN_KBSCN_P01_MODE_REG_KBSCN_MODE_Pos (0UL) /*!< KBSCAN KBSCN_P01_MODE_REG: KBSCN_MODE (Bit 0) */ -#define KBSCAN_KBSCN_P01_MODE_REG_KBSCN_MODE_Msk (0x1fUL) /*!< KBSCAN KBSCN_P01_MODE_REG: KBSCN_MODE (Bitfield-Mask: 0x1f) */ -#define KBSCAN_KBSCN_P01_MODE_REG_KBSCN_ROW_Pos (5UL) /*!< KBSCAN KBSCN_P01_MODE_REG: KBSCN_ROW (Bit 5) */ -#define KBSCAN_KBSCN_P01_MODE_REG_KBSCN_ROW_Msk (0x20UL) /*!< KBSCAN KBSCN_P01_MODE_REG: KBSCN_ROW (Bitfield-Mask: 0x01) */ -#define KBSCAN_KBSCN_P01_MODE_REG_KBSCN_GPIO_EN_Pos (6UL) /*!< KBSCAN KBSCN_P01_MODE_REG: KBSCN_GPIO_EN (Bit 6) */ -#define KBSCAN_KBSCN_P01_MODE_REG_KBSCN_GPIO_EN_Msk (0x40UL) /*!< KBSCAN KBSCN_P01_MODE_REG: KBSCN_GPIO_EN (Bitfield-Mask: 0x01) */ - -/* -------------------------- KBSCAN_KBSCN_P02_MODE_REG ------------------------- */ -#define KBSCAN_KBSCN_P02_MODE_REG_KBSCN_MODE_Pos (0UL) /*!< KBSCAN KBSCN_P02_MODE_REG: KBSCN_MODE (Bit 0) */ -#define KBSCAN_KBSCN_P02_MODE_REG_KBSCN_MODE_Msk (0x1fUL) /*!< KBSCAN KBSCN_P02_MODE_REG: KBSCN_MODE (Bitfield-Mask: 0x1f) */ -#define KBSCAN_KBSCN_P02_MODE_REG_KBSCN_ROW_Pos (5UL) /*!< KBSCAN KBSCN_P02_MODE_REG: KBSCN_ROW (Bit 5) */ -#define KBSCAN_KBSCN_P02_MODE_REG_KBSCN_ROW_Msk (0x20UL) /*!< KBSCAN KBSCN_P02_MODE_REG: KBSCN_ROW (Bitfield-Mask: 0x01) */ -#define KBSCAN_KBSCN_P02_MODE_REG_KBSCN_GPIO_EN_Pos (6UL) /*!< KBSCAN KBSCN_P02_MODE_REG: KBSCN_GPIO_EN (Bit 6) */ -#define KBSCAN_KBSCN_P02_MODE_REG_KBSCN_GPIO_EN_Msk (0x40UL) /*!< KBSCAN KBSCN_P02_MODE_REG: KBSCN_GPIO_EN (Bitfield-Mask: 0x01) */ - -/* -------------------------- KBSCAN_KBSCN_P03_MODE_REG ------------------------- */ -#define KBSCAN_KBSCN_P03_MODE_REG_KBSCN_MODE_Pos (0UL) /*!< KBSCAN KBSCN_P03_MODE_REG: KBSCN_MODE (Bit 0) */ -#define KBSCAN_KBSCN_P03_MODE_REG_KBSCN_MODE_Msk (0x1fUL) /*!< KBSCAN KBSCN_P03_MODE_REG: KBSCN_MODE (Bitfield-Mask: 0x1f) */ -#define KBSCAN_KBSCN_P03_MODE_REG_KBSCN_ROW_Pos (5UL) /*!< KBSCAN KBSCN_P03_MODE_REG: KBSCN_ROW (Bit 5) */ -#define KBSCAN_KBSCN_P03_MODE_REG_KBSCN_ROW_Msk (0x20UL) /*!< KBSCAN KBSCN_P03_MODE_REG: KBSCN_ROW (Bitfield-Mask: 0x01) */ -#define KBSCAN_KBSCN_P03_MODE_REG_KBSCN_GPIO_EN_Pos (6UL) /*!< KBSCAN KBSCN_P03_MODE_REG: KBSCN_GPIO_EN (Bit 6) */ -#define KBSCAN_KBSCN_P03_MODE_REG_KBSCN_GPIO_EN_Msk (0x40UL) /*!< KBSCAN KBSCN_P03_MODE_REG: KBSCN_GPIO_EN (Bitfield-Mask: 0x01) */ - -/* -------------------------- KBSCAN_KBSCN_P04_MODE_REG ------------------------- */ -#define KBSCAN_KBSCN_P04_MODE_REG_KBSCN_MODE_Pos (0UL) /*!< KBSCAN KBSCN_P04_MODE_REG: KBSCN_MODE (Bit 0) */ -#define KBSCAN_KBSCN_P04_MODE_REG_KBSCN_MODE_Msk (0x1fUL) /*!< KBSCAN KBSCN_P04_MODE_REG: KBSCN_MODE (Bitfield-Mask: 0x1f) */ -#define KBSCAN_KBSCN_P04_MODE_REG_KBSCN_ROW_Pos (5UL) /*!< KBSCAN KBSCN_P04_MODE_REG: KBSCN_ROW (Bit 5) */ -#define KBSCAN_KBSCN_P04_MODE_REG_KBSCN_ROW_Msk (0x20UL) /*!< KBSCAN KBSCN_P04_MODE_REG: KBSCN_ROW (Bitfield-Mask: 0x01) */ -#define KBSCAN_KBSCN_P04_MODE_REG_KBSCN_GPIO_EN_Pos (6UL) /*!< KBSCAN KBSCN_P04_MODE_REG: KBSCN_GPIO_EN (Bit 6) */ -#define KBSCAN_KBSCN_P04_MODE_REG_KBSCN_GPIO_EN_Msk (0x40UL) /*!< KBSCAN KBSCN_P04_MODE_REG: KBSCN_GPIO_EN (Bitfield-Mask: 0x01) */ - -/* -------------------------- KBSCAN_KBSCN_P05_MODE_REG ------------------------- */ -#define KBSCAN_KBSCN_P05_MODE_REG_KBSCN_MODE_Pos (0UL) /*!< KBSCAN KBSCN_P05_MODE_REG: KBSCN_MODE (Bit 0) */ -#define KBSCAN_KBSCN_P05_MODE_REG_KBSCN_MODE_Msk (0x1fUL) /*!< KBSCAN KBSCN_P05_MODE_REG: KBSCN_MODE (Bitfield-Mask: 0x1f) */ -#define KBSCAN_KBSCN_P05_MODE_REG_KBSCN_ROW_Pos (5UL) /*!< KBSCAN KBSCN_P05_MODE_REG: KBSCN_ROW (Bit 5) */ -#define KBSCAN_KBSCN_P05_MODE_REG_KBSCN_ROW_Msk (0x20UL) /*!< KBSCAN KBSCN_P05_MODE_REG: KBSCN_ROW (Bitfield-Mask: 0x01) */ -#define KBSCAN_KBSCN_P05_MODE_REG_KBSCN_GPIO_EN_Pos (6UL) /*!< KBSCAN KBSCN_P05_MODE_REG: KBSCN_GPIO_EN (Bit 6) */ -#define KBSCAN_KBSCN_P05_MODE_REG_KBSCN_GPIO_EN_Msk (0x40UL) /*!< KBSCAN KBSCN_P05_MODE_REG: KBSCN_GPIO_EN (Bitfield-Mask: 0x01) */ - -/* -------------------------- KBSCAN_KBSCN_P06_MODE_REG ------------------------- */ -#define KBSCAN_KBSCN_P06_MODE_REG_KBSCN_MODE_Pos (0UL) /*!< KBSCAN KBSCN_P06_MODE_REG: KBSCN_MODE (Bit 0) */ -#define KBSCAN_KBSCN_P06_MODE_REG_KBSCN_MODE_Msk (0x1fUL) /*!< KBSCAN KBSCN_P06_MODE_REG: KBSCN_MODE (Bitfield-Mask: 0x1f) */ -#define KBSCAN_KBSCN_P06_MODE_REG_KBSCN_ROW_Pos (5UL) /*!< KBSCAN KBSCN_P06_MODE_REG: KBSCN_ROW (Bit 5) */ -#define KBSCAN_KBSCN_P06_MODE_REG_KBSCN_ROW_Msk (0x20UL) /*!< KBSCAN KBSCN_P06_MODE_REG: KBSCN_ROW (Bitfield-Mask: 0x01) */ -#define KBSCAN_KBSCN_P06_MODE_REG_KBSCN_GPIO_EN_Pos (6UL) /*!< KBSCAN KBSCN_P06_MODE_REG: KBSCN_GPIO_EN (Bit 6) */ -#define KBSCAN_KBSCN_P06_MODE_REG_KBSCN_GPIO_EN_Msk (0x40UL) /*!< KBSCAN KBSCN_P06_MODE_REG: KBSCN_GPIO_EN (Bitfield-Mask: 0x01) */ - -/* -------------------------- KBSCAN_KBSCN_P07_MODE_REG ------------------------- */ -#define KBSCAN_KBSCN_P07_MODE_REG_KBSCN_MODE_Pos (0UL) /*!< KBSCAN KBSCN_P07_MODE_REG: KBSCN_MODE (Bit 0) */ -#define KBSCAN_KBSCN_P07_MODE_REG_KBSCN_MODE_Msk (0x1fUL) /*!< KBSCAN KBSCN_P07_MODE_REG: KBSCN_MODE (Bitfield-Mask: 0x1f) */ -#define KBSCAN_KBSCN_P07_MODE_REG_KBSCN_ROW_Pos (5UL) /*!< KBSCAN KBSCN_P07_MODE_REG: KBSCN_ROW (Bit 5) */ -#define KBSCAN_KBSCN_P07_MODE_REG_KBSCN_ROW_Msk (0x20UL) /*!< KBSCAN KBSCN_P07_MODE_REG: KBSCN_ROW (Bitfield-Mask: 0x01) */ -#define KBSCAN_KBSCN_P07_MODE_REG_KBSCN_GPIO_EN_Pos (6UL) /*!< KBSCAN KBSCN_P07_MODE_REG: KBSCN_GPIO_EN (Bit 6) */ -#define KBSCAN_KBSCN_P07_MODE_REG_KBSCN_GPIO_EN_Msk (0x40UL) /*!< KBSCAN KBSCN_P07_MODE_REG: KBSCN_GPIO_EN (Bitfield-Mask: 0x01) */ - -/* -------------------------- KBSCAN_KBSCN_P10_MODE_REG ------------------------- */ -#define KBSCAN_KBSCN_P10_MODE_REG_KBSCN_MODE_Pos (0UL) /*!< KBSCAN KBSCN_P10_MODE_REG: KBSCN_MODE (Bit 0) */ -#define KBSCAN_KBSCN_P10_MODE_REG_KBSCN_MODE_Msk (0x1fUL) /*!< KBSCAN KBSCN_P10_MODE_REG: KBSCN_MODE (Bitfield-Mask: 0x1f) */ -#define KBSCAN_KBSCN_P10_MODE_REG_KBSCN_ROW_Pos (5UL) /*!< KBSCAN KBSCN_P10_MODE_REG: KBSCN_ROW (Bit 5) */ -#define KBSCAN_KBSCN_P10_MODE_REG_KBSCN_ROW_Msk (0x20UL) /*!< KBSCAN KBSCN_P10_MODE_REG: KBSCN_ROW (Bitfield-Mask: 0x01) */ -#define KBSCAN_KBSCN_P10_MODE_REG_KBSCN_GPIO_EN_Pos (6UL) /*!< KBSCAN KBSCN_P10_MODE_REG: KBSCN_GPIO_EN (Bit 6) */ -#define KBSCAN_KBSCN_P10_MODE_REG_KBSCN_GPIO_EN_Msk (0x40UL) /*!< KBSCAN KBSCN_P10_MODE_REG: KBSCN_GPIO_EN (Bitfield-Mask: 0x01) */ - -/* -------------------------- KBSCAN_KBSCN_P11_MODE_REG ------------------------- */ -#define KBSCAN_KBSCN_P11_MODE_REG_KBSCN_MODE_Pos (0UL) /*!< KBSCAN KBSCN_P11_MODE_REG: KBSCN_MODE (Bit 0) */ -#define KBSCAN_KBSCN_P11_MODE_REG_KBSCN_MODE_Msk (0x1fUL) /*!< KBSCAN KBSCN_P11_MODE_REG: KBSCN_MODE (Bitfield-Mask: 0x1f) */ -#define KBSCAN_KBSCN_P11_MODE_REG_KBSCN_ROW_Pos (5UL) /*!< KBSCAN KBSCN_P11_MODE_REG: KBSCN_ROW (Bit 5) */ -#define KBSCAN_KBSCN_P11_MODE_REG_KBSCN_ROW_Msk (0x20UL) /*!< KBSCAN KBSCN_P11_MODE_REG: KBSCN_ROW (Bitfield-Mask: 0x01) */ -#define KBSCAN_KBSCN_P11_MODE_REG_KBSCN_GPIO_EN_Pos (6UL) /*!< KBSCAN KBSCN_P11_MODE_REG: KBSCN_GPIO_EN (Bit 6) */ -#define KBSCAN_KBSCN_P11_MODE_REG_KBSCN_GPIO_EN_Msk (0x40UL) /*!< KBSCAN KBSCN_P11_MODE_REG: KBSCN_GPIO_EN (Bitfield-Mask: 0x01) */ - -/* -------------------------- KBSCAN_KBSCN_P12_MODE_REG ------------------------- */ -#define KBSCAN_KBSCN_P12_MODE_REG_KBSCN_MODE_Pos (0UL) /*!< KBSCAN KBSCN_P12_MODE_REG: KBSCN_MODE (Bit 0) */ -#define KBSCAN_KBSCN_P12_MODE_REG_KBSCN_MODE_Msk (0x1fUL) /*!< KBSCAN KBSCN_P12_MODE_REG: KBSCN_MODE (Bitfield-Mask: 0x1f) */ -#define KBSCAN_KBSCN_P12_MODE_REG_KBSCN_ROW_Pos (5UL) /*!< KBSCAN KBSCN_P12_MODE_REG: KBSCN_ROW (Bit 5) */ -#define KBSCAN_KBSCN_P12_MODE_REG_KBSCN_ROW_Msk (0x20UL) /*!< KBSCAN KBSCN_P12_MODE_REG: KBSCN_ROW (Bitfield-Mask: 0x01) */ -#define KBSCAN_KBSCN_P12_MODE_REG_KBSCN_GPIO_EN_Pos (6UL) /*!< KBSCAN KBSCN_P12_MODE_REG: KBSCN_GPIO_EN (Bit 6) */ -#define KBSCAN_KBSCN_P12_MODE_REG_KBSCN_GPIO_EN_Msk (0x40UL) /*!< KBSCAN KBSCN_P12_MODE_REG: KBSCN_GPIO_EN (Bitfield-Mask: 0x01) */ - -/* -------------------------- KBSCAN_KBSCN_P13_MODE_REG ------------------------- */ -#define KBSCAN_KBSCN_P13_MODE_REG_KBSCN_MODE_Pos (0UL) /*!< KBSCAN KBSCN_P13_MODE_REG: KBSCN_MODE (Bit 0) */ -#define KBSCAN_KBSCN_P13_MODE_REG_KBSCN_MODE_Msk (0x1fUL) /*!< KBSCAN KBSCN_P13_MODE_REG: KBSCN_MODE (Bitfield-Mask: 0x1f) */ -#define KBSCAN_KBSCN_P13_MODE_REG_KBSCN_ROW_Pos (5UL) /*!< KBSCAN KBSCN_P13_MODE_REG: KBSCN_ROW (Bit 5) */ -#define KBSCAN_KBSCN_P13_MODE_REG_KBSCN_ROW_Msk (0x20UL) /*!< KBSCAN KBSCN_P13_MODE_REG: KBSCN_ROW (Bitfield-Mask: 0x01) */ -#define KBSCAN_KBSCN_P13_MODE_REG_KBSCN_GPIO_EN_Pos (6UL) /*!< KBSCAN KBSCN_P13_MODE_REG: KBSCN_GPIO_EN (Bit 6) */ -#define KBSCAN_KBSCN_P13_MODE_REG_KBSCN_GPIO_EN_Msk (0x40UL) /*!< KBSCAN KBSCN_P13_MODE_REG: KBSCN_GPIO_EN (Bitfield-Mask: 0x01) */ - -/* -------------------------- KBSCAN_KBSCN_P14_MODE_REG ------------------------- */ -#define KBSCAN_KBSCN_P14_MODE_REG_KBSCN_MODE_Pos (0UL) /*!< KBSCAN KBSCN_P14_MODE_REG: KBSCN_MODE (Bit 0) */ -#define KBSCAN_KBSCN_P14_MODE_REG_KBSCN_MODE_Msk (0x1fUL) /*!< KBSCAN KBSCN_P14_MODE_REG: KBSCN_MODE (Bitfield-Mask: 0x1f) */ -#define KBSCAN_KBSCN_P14_MODE_REG_KBSCN_ROW_Pos (5UL) /*!< KBSCAN KBSCN_P14_MODE_REG: KBSCN_ROW (Bit 5) */ -#define KBSCAN_KBSCN_P14_MODE_REG_KBSCN_ROW_Msk (0x20UL) /*!< KBSCAN KBSCN_P14_MODE_REG: KBSCN_ROW (Bitfield-Mask: 0x01) */ -#define KBSCAN_KBSCN_P14_MODE_REG_KBSCN_GPIO_EN_Pos (6UL) /*!< KBSCAN KBSCN_P14_MODE_REG: KBSCN_GPIO_EN (Bit 6) */ -#define KBSCAN_KBSCN_P14_MODE_REG_KBSCN_GPIO_EN_Msk (0x40UL) /*!< KBSCAN KBSCN_P14_MODE_REG: KBSCN_GPIO_EN (Bitfield-Mask: 0x01) */ - -/* -------------------------- KBSCAN_KBSCN_P15_MODE_REG ------------------------- */ -#define KBSCAN_KBSCN_P15_MODE_REG_KBSCN_MODE_Pos (0UL) /*!< KBSCAN KBSCN_P15_MODE_REG: KBSCN_MODE (Bit 0) */ -#define KBSCAN_KBSCN_P15_MODE_REG_KBSCN_MODE_Msk (0x1fUL) /*!< KBSCAN KBSCN_P15_MODE_REG: KBSCN_MODE (Bitfield-Mask: 0x1f) */ -#define KBSCAN_KBSCN_P15_MODE_REG_KBSCN_ROW_Pos (5UL) /*!< KBSCAN KBSCN_P15_MODE_REG: KBSCN_ROW (Bit 5) */ -#define KBSCAN_KBSCN_P15_MODE_REG_KBSCN_ROW_Msk (0x20UL) /*!< KBSCAN KBSCN_P15_MODE_REG: KBSCN_ROW (Bitfield-Mask: 0x01) */ -#define KBSCAN_KBSCN_P15_MODE_REG_KBSCN_GPIO_EN_Pos (6UL) /*!< KBSCAN KBSCN_P15_MODE_REG: KBSCN_GPIO_EN (Bit 6) */ -#define KBSCAN_KBSCN_P15_MODE_REG_KBSCN_GPIO_EN_Msk (0x40UL) /*!< KBSCAN KBSCN_P15_MODE_REG: KBSCN_GPIO_EN (Bitfield-Mask: 0x01) */ - -/* -------------------------- KBSCAN_KBSCN_P16_MODE_REG ------------------------- */ -#define KBSCAN_KBSCN_P16_MODE_REG_KBSCN_MODE_Pos (0UL) /*!< KBSCAN KBSCN_P16_MODE_REG: KBSCN_MODE (Bit 0) */ -#define KBSCAN_KBSCN_P16_MODE_REG_KBSCN_MODE_Msk (0x1fUL) /*!< KBSCAN KBSCN_P16_MODE_REG: KBSCN_MODE (Bitfield-Mask: 0x1f) */ -#define KBSCAN_KBSCN_P16_MODE_REG_KBSCN_ROW_Pos (5UL) /*!< KBSCAN KBSCN_P16_MODE_REG: KBSCN_ROW (Bit 5) */ -#define KBSCAN_KBSCN_P16_MODE_REG_KBSCN_ROW_Msk (0x20UL) /*!< KBSCAN KBSCN_P16_MODE_REG: KBSCN_ROW (Bitfield-Mask: 0x01) */ -#define KBSCAN_KBSCN_P16_MODE_REG_KBSCN_GPIO_EN_Pos (6UL) /*!< KBSCAN KBSCN_P16_MODE_REG: KBSCN_GPIO_EN (Bit 6) */ -#define KBSCAN_KBSCN_P16_MODE_REG_KBSCN_GPIO_EN_Msk (0x40UL) /*!< KBSCAN KBSCN_P16_MODE_REG: KBSCN_GPIO_EN (Bitfield-Mask: 0x01) */ - -/* -------------------------- KBSCAN_KBSCN_P17_MODE_REG ------------------------- */ -#define KBSCAN_KBSCN_P17_MODE_REG_KBSCN_MODE_Pos (0UL) /*!< KBSCAN KBSCN_P17_MODE_REG: KBSCN_MODE (Bit 0) */ -#define KBSCAN_KBSCN_P17_MODE_REG_KBSCN_MODE_Msk (0x1fUL) /*!< KBSCAN KBSCN_P17_MODE_REG: KBSCN_MODE (Bitfield-Mask: 0x1f) */ -#define KBSCAN_KBSCN_P17_MODE_REG_KBSCN_ROW_Pos (5UL) /*!< KBSCAN KBSCN_P17_MODE_REG: KBSCN_ROW (Bit 5) */ -#define KBSCAN_KBSCN_P17_MODE_REG_KBSCN_ROW_Msk (0x20UL) /*!< KBSCAN KBSCN_P17_MODE_REG: KBSCN_ROW (Bitfield-Mask: 0x01) */ -#define KBSCAN_KBSCN_P17_MODE_REG_KBSCN_GPIO_EN_Pos (6UL) /*!< KBSCAN KBSCN_P17_MODE_REG: KBSCN_GPIO_EN (Bit 6) */ -#define KBSCAN_KBSCN_P17_MODE_REG_KBSCN_GPIO_EN_Msk (0x40UL) /*!< KBSCAN KBSCN_P17_MODE_REG: KBSCN_GPIO_EN (Bitfield-Mask: 0x01) */ - -/* -------------------------- KBSCAN_KBSCN_P20_MODE_REG ------------------------- */ -#define KBSCAN_KBSCN_P20_MODE_REG_KBSCN_MODE_Pos (0UL) /*!< KBSCAN KBSCN_P20_MODE_REG: KBSCN_MODE (Bit 0) */ -#define KBSCAN_KBSCN_P20_MODE_REG_KBSCN_MODE_Msk (0x1fUL) /*!< KBSCAN KBSCN_P20_MODE_REG: KBSCN_MODE (Bitfield-Mask: 0x1f) */ -#define KBSCAN_KBSCN_P20_MODE_REG_KBSCN_ROW_Pos (5UL) /*!< KBSCAN KBSCN_P20_MODE_REG: KBSCN_ROW (Bit 5) */ -#define KBSCAN_KBSCN_P20_MODE_REG_KBSCN_ROW_Msk (0x20UL) /*!< KBSCAN KBSCN_P20_MODE_REG: KBSCN_ROW (Bitfield-Mask: 0x01) */ -#define KBSCAN_KBSCN_P20_MODE_REG_KBSCN_GPIO_EN_Pos (6UL) /*!< KBSCAN KBSCN_P20_MODE_REG: KBSCN_GPIO_EN (Bit 6) */ -#define KBSCAN_KBSCN_P20_MODE_REG_KBSCN_GPIO_EN_Msk (0x40UL) /*!< KBSCAN KBSCN_P20_MODE_REG: KBSCN_GPIO_EN (Bitfield-Mask: 0x01) */ - -/* -------------------------- KBSCAN_KBSCN_P21_MODE_REG ------------------------- */ -#define KBSCAN_KBSCN_P21_MODE_REG_KBSCN_MODE_Pos (0UL) /*!< KBSCAN KBSCN_P21_MODE_REG: KBSCN_MODE (Bit 0) */ -#define KBSCAN_KBSCN_P21_MODE_REG_KBSCN_MODE_Msk (0x1fUL) /*!< KBSCAN KBSCN_P21_MODE_REG: KBSCN_MODE (Bitfield-Mask: 0x1f) */ -#define KBSCAN_KBSCN_P21_MODE_REG_KBSCN_ROW_Pos (5UL) /*!< KBSCAN KBSCN_P21_MODE_REG: KBSCN_ROW (Bit 5) */ -#define KBSCAN_KBSCN_P21_MODE_REG_KBSCN_ROW_Msk (0x20UL) /*!< KBSCAN KBSCN_P21_MODE_REG: KBSCN_ROW (Bitfield-Mask: 0x01) */ -#define KBSCAN_KBSCN_P21_MODE_REG_KBSCN_GPIO_EN_Pos (6UL) /*!< KBSCAN KBSCN_P21_MODE_REG: KBSCN_GPIO_EN (Bit 6) */ -#define KBSCAN_KBSCN_P21_MODE_REG_KBSCN_GPIO_EN_Msk (0x40UL) /*!< KBSCAN KBSCN_P21_MODE_REG: KBSCN_GPIO_EN (Bitfield-Mask: 0x01) */ - -/* -------------------------- KBSCAN_KBSCN_P22_MODE_REG ------------------------- */ -#define KBSCAN_KBSCN_P22_MODE_REG_KBSCN_MODE_Pos (0UL) /*!< KBSCAN KBSCN_P22_MODE_REG: KBSCN_MODE (Bit 0) */ -#define KBSCAN_KBSCN_P22_MODE_REG_KBSCN_MODE_Msk (0x1fUL) /*!< KBSCAN KBSCN_P22_MODE_REG: KBSCN_MODE (Bitfield-Mask: 0x1f) */ -#define KBSCAN_KBSCN_P22_MODE_REG_KBSCN_ROW_Pos (5UL) /*!< KBSCAN KBSCN_P22_MODE_REG: KBSCN_ROW (Bit 5) */ -#define KBSCAN_KBSCN_P22_MODE_REG_KBSCN_ROW_Msk (0x20UL) /*!< KBSCAN KBSCN_P22_MODE_REG: KBSCN_ROW (Bitfield-Mask: 0x01) */ -#define KBSCAN_KBSCN_P22_MODE_REG_KBSCN_GPIO_EN_Pos (6UL) /*!< KBSCAN KBSCN_P22_MODE_REG: KBSCN_GPIO_EN (Bit 6) */ -#define KBSCAN_KBSCN_P22_MODE_REG_KBSCN_GPIO_EN_Msk (0x40UL) /*!< KBSCAN KBSCN_P22_MODE_REG: KBSCN_GPIO_EN (Bitfield-Mask: 0x01) */ - -/* -------------------------- KBSCAN_KBSCN_P23_MODE_REG ------------------------- */ -#define KBSCAN_KBSCN_P23_MODE_REG_KBSCN_MODE_Pos (0UL) /*!< KBSCAN KBSCN_P23_MODE_REG: KBSCN_MODE (Bit 0) */ -#define KBSCAN_KBSCN_P23_MODE_REG_KBSCN_MODE_Msk (0x1fUL) /*!< KBSCAN KBSCN_P23_MODE_REG: KBSCN_MODE (Bitfield-Mask: 0x1f) */ -#define KBSCAN_KBSCN_P23_MODE_REG_KBSCN_ROW_Pos (5UL) /*!< KBSCAN KBSCN_P23_MODE_REG: KBSCN_ROW (Bit 5) */ -#define KBSCAN_KBSCN_P23_MODE_REG_KBSCN_ROW_Msk (0x20UL) /*!< KBSCAN KBSCN_P23_MODE_REG: KBSCN_ROW (Bitfield-Mask: 0x01) */ -#define KBSCAN_KBSCN_P23_MODE_REG_KBSCN_GPIO_EN_Pos (6UL) /*!< KBSCAN KBSCN_P23_MODE_REG: KBSCN_GPIO_EN (Bit 6) */ -#define KBSCAN_KBSCN_P23_MODE_REG_KBSCN_GPIO_EN_Msk (0x40UL) /*!< KBSCAN KBSCN_P23_MODE_REG: KBSCN_GPIO_EN (Bitfield-Mask: 0x01) */ - -/* -------------------------- KBSCAN_KBSCN_P24_MODE_REG ------------------------- */ -#define KBSCAN_KBSCN_P24_MODE_REG_KBSCN_MODE_Pos (0UL) /*!< KBSCAN KBSCN_P24_MODE_REG: KBSCN_MODE (Bit 0) */ -#define KBSCAN_KBSCN_P24_MODE_REG_KBSCN_MODE_Msk (0x1fUL) /*!< KBSCAN KBSCN_P24_MODE_REG: KBSCN_MODE (Bitfield-Mask: 0x1f) */ -#define KBSCAN_KBSCN_P24_MODE_REG_KBSCN_ROW_Pos (5UL) /*!< KBSCAN KBSCN_P24_MODE_REG: KBSCN_ROW (Bit 5) */ -#define KBSCAN_KBSCN_P24_MODE_REG_KBSCN_ROW_Msk (0x20UL) /*!< KBSCAN KBSCN_P24_MODE_REG: KBSCN_ROW (Bitfield-Mask: 0x01) */ -#define KBSCAN_KBSCN_P24_MODE_REG_KBSCN_GPIO_EN_Pos (6UL) /*!< KBSCAN KBSCN_P24_MODE_REG: KBSCN_GPIO_EN (Bit 6) */ -#define KBSCAN_KBSCN_P24_MODE_REG_KBSCN_GPIO_EN_Msk (0x40UL) /*!< KBSCAN KBSCN_P24_MODE_REG: KBSCN_GPIO_EN (Bitfield-Mask: 0x01) */ - -/* -------------------------- KBSCAN_KBSCN_P30_MODE_REG ------------------------- */ -#define KBSCAN_KBSCN_P30_MODE_REG_KBSCN_MODE_Pos (0UL) /*!< KBSCAN KBSCN_P30_MODE_REG: KBSCN_MODE (Bit 0) */ -#define KBSCAN_KBSCN_P30_MODE_REG_KBSCN_MODE_Msk (0x1fUL) /*!< KBSCAN KBSCN_P30_MODE_REG: KBSCN_MODE (Bitfield-Mask: 0x1f) */ -#define KBSCAN_KBSCN_P30_MODE_REG_KBSCN_ROW_Pos (5UL) /*!< KBSCAN KBSCN_P30_MODE_REG: KBSCN_ROW (Bit 5) */ -#define KBSCAN_KBSCN_P30_MODE_REG_KBSCN_ROW_Msk (0x20UL) /*!< KBSCAN KBSCN_P30_MODE_REG: KBSCN_ROW (Bitfield-Mask: 0x01) */ -#define KBSCAN_KBSCN_P30_MODE_REG_KBSCN_GPIO_EN_Pos (6UL) /*!< KBSCAN KBSCN_P30_MODE_REG: KBSCN_GPIO_EN (Bit 6) */ -#define KBSCAN_KBSCN_P30_MODE_REG_KBSCN_GPIO_EN_Msk (0x40UL) /*!< KBSCAN KBSCN_P30_MODE_REG: KBSCN_GPIO_EN (Bitfield-Mask: 0x01) */ - -/* -------------------------- KBSCAN_KBSCN_P31_MODE_REG ------------------------- */ -#define KBSCAN_KBSCN_P31_MODE_REG_KBSCN_MODE_Pos (0UL) /*!< KBSCAN KBSCN_P31_MODE_REG: KBSCN_MODE (Bit 0) */ -#define KBSCAN_KBSCN_P31_MODE_REG_KBSCN_MODE_Msk (0x1fUL) /*!< KBSCAN KBSCN_P31_MODE_REG: KBSCN_MODE (Bitfield-Mask: 0x1f) */ -#define KBSCAN_KBSCN_P31_MODE_REG_KBSCN_ROW_Pos (5UL) /*!< KBSCAN KBSCN_P31_MODE_REG: KBSCN_ROW (Bit 5) */ -#define KBSCAN_KBSCN_P31_MODE_REG_KBSCN_ROW_Msk (0x20UL) /*!< KBSCAN KBSCN_P31_MODE_REG: KBSCN_ROW (Bitfield-Mask: 0x01) */ -#define KBSCAN_KBSCN_P31_MODE_REG_KBSCN_GPIO_EN_Pos (6UL) /*!< KBSCAN KBSCN_P31_MODE_REG: KBSCN_GPIO_EN (Bit 6) */ -#define KBSCAN_KBSCN_P31_MODE_REG_KBSCN_GPIO_EN_Msk (0x40UL) /*!< KBSCAN KBSCN_P31_MODE_REG: KBSCN_GPIO_EN (Bitfield-Mask: 0x01) */ - -/* -------------------------- KBSCAN_KBSCN_P32_MODE_REG ------------------------- */ -#define KBSCAN_KBSCN_P32_MODE_REG_KBSCN_MODE_Pos (0UL) /*!< KBSCAN KBSCN_P32_MODE_REG: KBSCN_MODE (Bit 0) */ -#define KBSCAN_KBSCN_P32_MODE_REG_KBSCN_MODE_Msk (0x1fUL) /*!< KBSCAN KBSCN_P32_MODE_REG: KBSCN_MODE (Bitfield-Mask: 0x1f) */ -#define KBSCAN_KBSCN_P32_MODE_REG_KBSCN_ROW_Pos (5UL) /*!< KBSCAN KBSCN_P32_MODE_REG: KBSCN_ROW (Bit 5) */ -#define KBSCAN_KBSCN_P32_MODE_REG_KBSCN_ROW_Msk (0x20UL) /*!< KBSCAN KBSCN_P32_MODE_REG: KBSCN_ROW (Bitfield-Mask: 0x01) */ -#define KBSCAN_KBSCN_P32_MODE_REG_KBSCN_GPIO_EN_Pos (6UL) /*!< KBSCAN KBSCN_P32_MODE_REG: KBSCN_GPIO_EN (Bit 6) */ -#define KBSCAN_KBSCN_P32_MODE_REG_KBSCN_GPIO_EN_Msk (0x40UL) /*!< KBSCAN KBSCN_P32_MODE_REG: KBSCN_GPIO_EN (Bitfield-Mask: 0x01) */ - -/* -------------------------- KBSCAN_KBSCN_P33_MODE_REG ------------------------- */ -#define KBSCAN_KBSCN_P33_MODE_REG_KBSCN_MODE_Pos (0UL) /*!< KBSCAN KBSCN_P33_MODE_REG: KBSCN_MODE (Bit 0) */ -#define KBSCAN_KBSCN_P33_MODE_REG_KBSCN_MODE_Msk (0x1fUL) /*!< KBSCAN KBSCN_P33_MODE_REG: KBSCN_MODE (Bitfield-Mask: 0x1f) */ -#define KBSCAN_KBSCN_P33_MODE_REG_KBSCN_ROW_Pos (5UL) /*!< KBSCAN KBSCN_P33_MODE_REG: KBSCN_ROW (Bit 5) */ -#define KBSCAN_KBSCN_P33_MODE_REG_KBSCN_ROW_Msk (0x20UL) /*!< KBSCAN KBSCN_P33_MODE_REG: KBSCN_ROW (Bitfield-Mask: 0x01) */ -#define KBSCAN_KBSCN_P33_MODE_REG_KBSCN_GPIO_EN_Pos (6UL) /*!< KBSCAN KBSCN_P33_MODE_REG: KBSCN_GPIO_EN (Bit 6) */ -#define KBSCAN_KBSCN_P33_MODE_REG_KBSCN_GPIO_EN_Msk (0x40UL) /*!< KBSCAN KBSCN_P33_MODE_REG: KBSCN_GPIO_EN (Bitfield-Mask: 0x01) */ - -/* -------------------------- KBSCAN_KBSCN_P34_MODE_REG ------------------------- */ -#define KBSCAN_KBSCN_P34_MODE_REG_KBSCN_MODE_Pos (0UL) /*!< KBSCAN KBSCN_P34_MODE_REG: KBSCN_MODE (Bit 0) */ -#define KBSCAN_KBSCN_P34_MODE_REG_KBSCN_MODE_Msk (0x1fUL) /*!< KBSCAN KBSCN_P34_MODE_REG: KBSCN_MODE (Bitfield-Mask: 0x1f) */ -#define KBSCAN_KBSCN_P34_MODE_REG_KBSCN_ROW_Pos (5UL) /*!< KBSCAN KBSCN_P34_MODE_REG: KBSCN_ROW (Bit 5) */ -#define KBSCAN_KBSCN_P34_MODE_REG_KBSCN_ROW_Msk (0x20UL) /*!< KBSCAN KBSCN_P34_MODE_REG: KBSCN_ROW (Bitfield-Mask: 0x01) */ -#define KBSCAN_KBSCN_P34_MODE_REG_KBSCN_GPIO_EN_Pos (6UL) /*!< KBSCAN KBSCN_P34_MODE_REG: KBSCN_GPIO_EN (Bit 6) */ -#define KBSCAN_KBSCN_P34_MODE_REG_KBSCN_GPIO_EN_Msk (0x40UL) /*!< KBSCAN KBSCN_P34_MODE_REG: KBSCN_GPIO_EN (Bitfield-Mask: 0x01) */ - -/* -------------------------- KBSCAN_KBSCN_P35_MODE_REG ------------------------- */ -#define KBSCAN_KBSCN_P35_MODE_REG_KBSCN_MODE_Pos (0UL) /*!< KBSCAN KBSCN_P35_MODE_REG: KBSCN_MODE (Bit 0) */ -#define KBSCAN_KBSCN_P35_MODE_REG_KBSCN_MODE_Msk (0x1fUL) /*!< KBSCAN KBSCN_P35_MODE_REG: KBSCN_MODE (Bitfield-Mask: 0x1f) */ -#define KBSCAN_KBSCN_P35_MODE_REG_KBSCN_ROW_Pos (5UL) /*!< KBSCAN KBSCN_P35_MODE_REG: KBSCN_ROW (Bit 5) */ -#define KBSCAN_KBSCN_P35_MODE_REG_KBSCN_ROW_Msk (0x20UL) /*!< KBSCAN KBSCN_P35_MODE_REG: KBSCN_ROW (Bitfield-Mask: 0x01) */ -#define KBSCAN_KBSCN_P35_MODE_REG_KBSCN_GPIO_EN_Pos (6UL) /*!< KBSCAN KBSCN_P35_MODE_REG: KBSCN_GPIO_EN (Bit 6) */ -#define KBSCAN_KBSCN_P35_MODE_REG_KBSCN_GPIO_EN_Msk (0x40UL) /*!< KBSCAN KBSCN_P35_MODE_REG: KBSCN_GPIO_EN (Bitfield-Mask: 0x01) */ - -/* -------------------------- KBSCAN_KBSCN_P36_MODE_REG ------------------------- */ -#define KBSCAN_KBSCN_P36_MODE_REG_KBSCN_MODE_Pos (0UL) /*!< KBSCAN KBSCN_P36_MODE_REG: KBSCN_MODE (Bit 0) */ -#define KBSCAN_KBSCN_P36_MODE_REG_KBSCN_MODE_Msk (0x1fUL) /*!< KBSCAN KBSCN_P36_MODE_REG: KBSCN_MODE (Bitfield-Mask: 0x1f) */ -#define KBSCAN_KBSCN_P36_MODE_REG_KBSCN_ROW_Pos (5UL) /*!< KBSCAN KBSCN_P36_MODE_REG: KBSCN_ROW (Bit 5) */ -#define KBSCAN_KBSCN_P36_MODE_REG_KBSCN_ROW_Msk (0x20UL) /*!< KBSCAN KBSCN_P36_MODE_REG: KBSCN_ROW (Bitfield-Mask: 0x01) */ -#define KBSCAN_KBSCN_P36_MODE_REG_KBSCN_GPIO_EN_Pos (6UL) /*!< KBSCAN KBSCN_P36_MODE_REG: KBSCN_GPIO_EN (Bit 6) */ -#define KBSCAN_KBSCN_P36_MODE_REG_KBSCN_GPIO_EN_Msk (0x40UL) /*!< KBSCAN KBSCN_P36_MODE_REG: KBSCN_GPIO_EN (Bitfield-Mask: 0x01) */ - -/* -------------------------- KBSCAN_KBSCN_P37_MODE_REG ------------------------- */ -#define KBSCAN_KBSCN_P37_MODE_REG_KBSCN_MODE_Pos (0UL) /*!< KBSCAN KBSCN_P37_MODE_REG: KBSCN_MODE (Bit 0) */ -#define KBSCAN_KBSCN_P37_MODE_REG_KBSCN_MODE_Msk (0x1fUL) /*!< KBSCAN KBSCN_P37_MODE_REG: KBSCN_MODE (Bitfield-Mask: 0x1f) */ -#define KBSCAN_KBSCN_P37_MODE_REG_KBSCN_ROW_Pos (5UL) /*!< KBSCAN KBSCN_P37_MODE_REG: KBSCN_ROW (Bit 5) */ -#define KBSCAN_KBSCN_P37_MODE_REG_KBSCN_ROW_Msk (0x20UL) /*!< KBSCAN KBSCN_P37_MODE_REG: KBSCN_ROW (Bitfield-Mask: 0x01) */ -#define KBSCAN_KBSCN_P37_MODE_REG_KBSCN_GPIO_EN_Pos (6UL) /*!< KBSCAN KBSCN_P37_MODE_REG: KBSCN_GPIO_EN (Bit 6) */ -#define KBSCAN_KBSCN_P37_MODE_REG_KBSCN_GPIO_EN_Msk (0x40UL) /*!< KBSCAN KBSCN_P37_MODE_REG: KBSCN_GPIO_EN (Bitfield-Mask: 0x01) */ - -/* -------------------------- KBSCAN_KBSCN_P40_MODE_REG ------------------------- */ -#define KBSCAN_KBSCN_P40_MODE_REG_KBSCN_MODE_Pos (0UL) /*!< KBSCAN KBSCN_P40_MODE_REG: KBSCN_MODE (Bit 0) */ -#define KBSCAN_KBSCN_P40_MODE_REG_KBSCN_MODE_Msk (0x1fUL) /*!< KBSCAN KBSCN_P40_MODE_REG: KBSCN_MODE (Bitfield-Mask: 0x1f) */ -#define KBSCAN_KBSCN_P40_MODE_REG_KBSCN_ROW_Pos (5UL) /*!< KBSCAN KBSCN_P40_MODE_REG: KBSCN_ROW (Bit 5) */ -#define KBSCAN_KBSCN_P40_MODE_REG_KBSCN_ROW_Msk (0x20UL) /*!< KBSCAN KBSCN_P40_MODE_REG: KBSCN_ROW (Bitfield-Mask: 0x01) */ -#define KBSCAN_KBSCN_P40_MODE_REG_KBSCN_GPIO_EN_Pos (6UL) /*!< KBSCAN KBSCN_P40_MODE_REG: KBSCN_GPIO_EN (Bit 6) */ -#define KBSCAN_KBSCN_P40_MODE_REG_KBSCN_GPIO_EN_Msk (0x40UL) /*!< KBSCAN KBSCN_P40_MODE_REG: KBSCN_GPIO_EN (Bitfield-Mask: 0x01) */ - -/* -------------------------- KBSCAN_KBSCN_P41_MODE_REG ------------------------- */ -#define KBSCAN_KBSCN_P41_MODE_REG_KBSCN_MODE_Pos (0UL) /*!< KBSCAN KBSCN_P41_MODE_REG: KBSCN_MODE (Bit 0) */ -#define KBSCAN_KBSCN_P41_MODE_REG_KBSCN_MODE_Msk (0x1fUL) /*!< KBSCAN KBSCN_P41_MODE_REG: KBSCN_MODE (Bitfield-Mask: 0x1f) */ -#define KBSCAN_KBSCN_P41_MODE_REG_KBSCN_ROW_Pos (5UL) /*!< KBSCAN KBSCN_P41_MODE_REG: KBSCN_ROW (Bit 5) */ -#define KBSCAN_KBSCN_P41_MODE_REG_KBSCN_ROW_Msk (0x20UL) /*!< KBSCAN KBSCN_P41_MODE_REG: KBSCN_ROW (Bitfield-Mask: 0x01) */ -#define KBSCAN_KBSCN_P41_MODE_REG_KBSCN_GPIO_EN_Pos (6UL) /*!< KBSCAN KBSCN_P41_MODE_REG: KBSCN_GPIO_EN (Bit 6) */ -#define KBSCAN_KBSCN_P41_MODE_REG_KBSCN_GPIO_EN_Msk (0x40UL) /*!< KBSCAN KBSCN_P41_MODE_REG: KBSCN_GPIO_EN (Bitfield-Mask: 0x01) */ - -/* -------------------------- KBSCAN_KBSCN_P42_MODE_REG ------------------------- */ -#define KBSCAN_KBSCN_P42_MODE_REG_KBSCN_MODE_Pos (0UL) /*!< KBSCAN KBSCN_P42_MODE_REG: KBSCN_MODE (Bit 0) */ -#define KBSCAN_KBSCN_P42_MODE_REG_KBSCN_MODE_Msk (0x1fUL) /*!< KBSCAN KBSCN_P42_MODE_REG: KBSCN_MODE (Bitfield-Mask: 0x1f) */ -#define KBSCAN_KBSCN_P42_MODE_REG_KBSCN_ROW_Pos (5UL) /*!< KBSCAN KBSCN_P42_MODE_REG: KBSCN_ROW (Bit 5) */ -#define KBSCAN_KBSCN_P42_MODE_REG_KBSCN_ROW_Msk (0x20UL) /*!< KBSCAN KBSCN_P42_MODE_REG: KBSCN_ROW (Bitfield-Mask: 0x01) */ -#define KBSCAN_KBSCN_P42_MODE_REG_KBSCN_GPIO_EN_Pos (6UL) /*!< KBSCAN KBSCN_P42_MODE_REG: KBSCN_GPIO_EN (Bit 6) */ -#define KBSCAN_KBSCN_P42_MODE_REG_KBSCN_GPIO_EN_Msk (0x40UL) /*!< KBSCAN KBSCN_P42_MODE_REG: KBSCN_GPIO_EN (Bitfield-Mask: 0x01) */ - -/* -------------------------- KBSCAN_KBSCN_P43_MODE_REG ------------------------- */ -#define KBSCAN_KBSCN_P43_MODE_REG_KBSCN_MODE_Pos (0UL) /*!< KBSCAN KBSCN_P43_MODE_REG: KBSCN_MODE (Bit 0) */ -#define KBSCAN_KBSCN_P43_MODE_REG_KBSCN_MODE_Msk (0x1fUL) /*!< KBSCAN KBSCN_P43_MODE_REG: KBSCN_MODE (Bitfield-Mask: 0x1f) */ -#define KBSCAN_KBSCN_P43_MODE_REG_KBSCN_ROW_Pos (5UL) /*!< KBSCAN KBSCN_P43_MODE_REG: KBSCN_ROW (Bit 5) */ -#define KBSCAN_KBSCN_P43_MODE_REG_KBSCN_ROW_Msk (0x20UL) /*!< KBSCAN KBSCN_P43_MODE_REG: KBSCN_ROW (Bitfield-Mask: 0x01) */ -#define KBSCAN_KBSCN_P43_MODE_REG_KBSCN_GPIO_EN_Pos (6UL) /*!< KBSCAN KBSCN_P43_MODE_REG: KBSCN_GPIO_EN (Bit 6) */ -#define KBSCAN_KBSCN_P43_MODE_REG_KBSCN_GPIO_EN_Msk (0x40UL) /*!< KBSCAN KBSCN_P43_MODE_REG: KBSCN_GPIO_EN (Bitfield-Mask: 0x01) */ - -/* -------------------------- KBSCAN_KBSCN_P44_MODE_REG ------------------------- */ -#define KBSCAN_KBSCN_P44_MODE_REG_KBSCN_MODE_Pos (0UL) /*!< KBSCAN KBSCN_P44_MODE_REG: KBSCN_MODE (Bit 0) */ -#define KBSCAN_KBSCN_P44_MODE_REG_KBSCN_MODE_Msk (0x1fUL) /*!< KBSCAN KBSCN_P44_MODE_REG: KBSCN_MODE (Bitfield-Mask: 0x1f) */ -#define KBSCAN_KBSCN_P44_MODE_REG_KBSCN_ROW_Pos (5UL) /*!< KBSCAN KBSCN_P44_MODE_REG: KBSCN_ROW (Bit 5) */ -#define KBSCAN_KBSCN_P44_MODE_REG_KBSCN_ROW_Msk (0x20UL) /*!< KBSCAN KBSCN_P44_MODE_REG: KBSCN_ROW (Bitfield-Mask: 0x01) */ -#define KBSCAN_KBSCN_P44_MODE_REG_KBSCN_GPIO_EN_Pos (6UL) /*!< KBSCAN KBSCN_P44_MODE_REG: KBSCN_GPIO_EN (Bit 6) */ -#define KBSCAN_KBSCN_P44_MODE_REG_KBSCN_GPIO_EN_Msk (0x40UL) /*!< KBSCAN KBSCN_P44_MODE_REG: KBSCN_GPIO_EN (Bitfield-Mask: 0x01) */ - -/* -------------------------- KBSCAN_KBSCN_P45_MODE_REG ------------------------- */ -#define KBSCAN_KBSCN_P45_MODE_REG_KBSCN_MODE_Pos (0UL) /*!< KBSCAN KBSCN_P45_MODE_REG: KBSCN_MODE (Bit 0) */ -#define KBSCAN_KBSCN_P45_MODE_REG_KBSCN_MODE_Msk (0x1fUL) /*!< KBSCAN KBSCN_P45_MODE_REG: KBSCN_MODE (Bitfield-Mask: 0x1f) */ -#define KBSCAN_KBSCN_P45_MODE_REG_KBSCN_ROW_Pos (5UL) /*!< KBSCAN KBSCN_P45_MODE_REG: KBSCN_ROW (Bit 5) */ -#define KBSCAN_KBSCN_P45_MODE_REG_KBSCN_ROW_Msk (0x20UL) /*!< KBSCAN KBSCN_P45_MODE_REG: KBSCN_ROW (Bitfield-Mask: 0x01) */ -#define KBSCAN_KBSCN_P45_MODE_REG_KBSCN_GPIO_EN_Pos (6UL) /*!< KBSCAN KBSCN_P45_MODE_REG: KBSCN_GPIO_EN (Bit 6) */ -#define KBSCAN_KBSCN_P45_MODE_REG_KBSCN_GPIO_EN_Msk (0x40UL) /*!< KBSCAN KBSCN_P45_MODE_REG: KBSCN_GPIO_EN (Bitfield-Mask: 0x01) */ - -/* -------------------------- KBSCAN_KBSCN_P46_MODE_REG ------------------------- */ -#define KBSCAN_KBSCN_P46_MODE_REG_KBSCN_MODE_Pos (0UL) /*!< KBSCAN KBSCN_P46_MODE_REG: KBSCN_MODE (Bit 0) */ -#define KBSCAN_KBSCN_P46_MODE_REG_KBSCN_MODE_Msk (0x1fUL) /*!< KBSCAN KBSCN_P46_MODE_REG: KBSCN_MODE (Bitfield-Mask: 0x1f) */ -#define KBSCAN_KBSCN_P46_MODE_REG_KBSCN_ROW_Pos (5UL) /*!< KBSCAN KBSCN_P46_MODE_REG: KBSCN_ROW (Bit 5) */ -#define KBSCAN_KBSCN_P46_MODE_REG_KBSCN_ROW_Msk (0x20UL) /*!< KBSCAN KBSCN_P46_MODE_REG: KBSCN_ROW (Bitfield-Mask: 0x01) */ -#define KBSCAN_KBSCN_P46_MODE_REG_KBSCN_GPIO_EN_Pos (6UL) /*!< KBSCAN KBSCN_P46_MODE_REG: KBSCN_GPIO_EN (Bit 6) */ -#define KBSCAN_KBSCN_P46_MODE_REG_KBSCN_GPIO_EN_Msk (0x40UL) /*!< KBSCAN KBSCN_P46_MODE_REG: KBSCN_GPIO_EN (Bitfield-Mask: 0x01) */ - -/* -------------------------- KBSCAN_KBSCN_P47_MODE_REG ------------------------- */ -#define KBSCAN_KBSCN_P47_MODE_REG_KBSCN_MODE_Pos (0UL) /*!< KBSCAN KBSCN_P47_MODE_REG: KBSCN_MODE (Bit 0) */ -#define KBSCAN_KBSCN_P47_MODE_REG_KBSCN_MODE_Msk (0x1fUL) /*!< KBSCAN KBSCN_P47_MODE_REG: KBSCN_MODE (Bitfield-Mask: 0x1f) */ -#define KBSCAN_KBSCN_P47_MODE_REG_KBSCN_ROW_Pos (5UL) /*!< KBSCAN KBSCN_P47_MODE_REG: KBSCN_ROW (Bit 5) */ -#define KBSCAN_KBSCN_P47_MODE_REG_KBSCN_ROW_Msk (0x20UL) /*!< KBSCAN KBSCN_P47_MODE_REG: KBSCN_ROW (Bitfield-Mask: 0x01) */ -#define KBSCAN_KBSCN_P47_MODE_REG_KBSCN_GPIO_EN_Pos (6UL) /*!< KBSCAN KBSCN_P47_MODE_REG: KBSCN_GPIO_EN (Bit 6) */ -#define KBSCAN_KBSCN_P47_MODE_REG_KBSCN_GPIO_EN_Msk (0x40UL) /*!< KBSCAN KBSCN_P47_MODE_REG: KBSCN_GPIO_EN (Bitfield-Mask: 0x01) */ - - -/* ================================================================================ */ -/* ================ struct 'OTPC' Position & Mask ================ */ -/* ================================================================================ */ - - -/* ----------------------------- OTPC_OTPC_MODE_REG ----------------------------- */ -#define OTPC_OTPC_MODE_REG_OTPC_MODE_MODE_Pos (0UL) /*!< OTPC OTPC_MODE_REG: OTPC_MODE_MODE (Bit 0) */ -#define OTPC_OTPC_MODE_REG_OTPC_MODE_MODE_Msk (0x7UL) /*!< OTPC OTPC_MODE_REG: OTPC_MODE_MODE (Bitfield-Mask: 0x07) */ -#define OTPC_OTPC_MODE_REG_OTPC_MODE_USE_DMA_Pos (4UL) /*!< OTPC OTPC_MODE_REG: OTPC_MODE_USE_DMA (Bit 4) */ -#define OTPC_OTPC_MODE_REG_OTPC_MODE_USE_DMA_Msk (0x10UL) /*!< OTPC OTPC_MODE_REG: OTPC_MODE_USE_DMA (Bitfield-Mask: 0x01) */ -#define OTPC_OTPC_MODE_REG_OTPC_MODE_FIFO_FLUSH_Pos (5UL) /*!< OTPC OTPC_MODE_REG: OTPC_MODE_FIFO_FLUSH (Bit 5) */ -#define OTPC_OTPC_MODE_REG_OTPC_MODE_FIFO_FLUSH_Msk (0x20UL) /*!< OTPC OTPC_MODE_REG: OTPC_MODE_FIFO_FLUSH (Bitfield-Mask: 0x01) */ -#define OTPC_OTPC_MODE_REG_OTPC_MODE_ERR_RESP_DIS_Pos (6UL) /*!< OTPC OTPC_MODE_REG: OTPC_MODE_ERR_RESP_DIS (Bit 6) */ -#define OTPC_OTPC_MODE_REG_OTPC_MODE_ERR_RESP_DIS_Msk (0x40UL) /*!< OTPC OTPC_MODE_REG: OTPC_MODE_ERR_RESP_DIS (Bitfield-Mask: 0x01) */ -#define OTPC_OTPC_MODE_REG_OTPC_MODE_USE_SP_ROWS_Pos (8UL) /*!< OTPC OTPC_MODE_REG: OTPC_MODE_USE_SP_ROWS (Bit 8) */ -#define OTPC_OTPC_MODE_REG_OTPC_MODE_USE_SP_ROWS_Msk (0x100UL) /*!< OTPC OTPC_MODE_REG: OTPC_MODE_USE_SP_ROWS (Bitfield-Mask: 0x01) */ -#define OTPC_OTPC_MODE_REG_OTPC_MODE_RLD_RR_REQ_Pos (9UL) /*!< OTPC OTPC_MODE_REG: OTPC_MODE_RLD_RR_REQ (Bit 9) */ -#define OTPC_OTPC_MODE_REG_OTPC_MODE_RLD_RR_REQ_Msk (0x200UL) /*!< OTPC OTPC_MODE_REG: OTPC_MODE_RLD_RR_REQ (Bitfield-Mask: 0x01) */ - -/* ----------------------------- OTPC_OTPC_PCTRL_REG ---------------------------- */ -#define OTPC_OTPC_PCTRL_REG_OTPC_PCTRL_WADDR_Pos (0UL) /*!< OTPC OTPC_PCTRL_REG: OTPC_PCTRL_WADDR (Bit 0) */ -#define OTPC_OTPC_PCTRL_REG_OTPC_PCTRL_WADDR_Msk (0x1fffUL) /*!< OTPC OTPC_PCTRL_REG: OTPC_PCTRL_WADDR (Bitfield-Mask: 0x1fff) */ -#define OTPC_OTPC_PCTRL_REG_OTPC_PCTRL_PRETRY_Pos (14UL) /*!< OTPC OTPC_PCTRL_REG: OTPC_PCTRL_PRETRY (Bit 14) */ -#define OTPC_OTPC_PCTRL_REG_OTPC_PCTRL_PRETRY_Msk (0x4000UL) /*!< OTPC OTPC_PCTRL_REG: OTPC_PCTRL_PRETRY (Bitfield-Mask: 0x01) */ -#define OTPC_OTPC_PCTRL_REG_OTPC_PCTRL_PSTART_Pos (15UL) /*!< OTPC OTPC_PCTRL_REG: OTPC_PCTRL_PSTART (Bit 15) */ -#define OTPC_OTPC_PCTRL_REG_OTPC_PCTRL_PSTART_Msk (0x8000UL) /*!< OTPC OTPC_PCTRL_REG: OTPC_PCTRL_PSTART (Bitfield-Mask: 0x01) */ - -/* ----------------------------- OTPC_OTPC_STAT_REG ----------------------------- */ -#define OTPC_OTPC_STAT_REG_OTPC_STAT_PRDY_Pos (0UL) /*!< OTPC OTPC_STAT_REG: OTPC_STAT_PRDY (Bit 0) */ -#define OTPC_OTPC_STAT_REG_OTPC_STAT_PRDY_Msk (0x1UL) /*!< OTPC OTPC_STAT_REG: OTPC_STAT_PRDY (Bitfield-Mask: 0x01) */ -#define OTPC_OTPC_STAT_REG_OTPC_STAT_PERR_UNC_Pos (1UL) /*!< OTPC OTPC_STAT_REG: OTPC_STAT_PERR_UNC (Bit 1) */ -#define OTPC_OTPC_STAT_REG_OTPC_STAT_PERR_UNC_Msk (0x2UL) /*!< OTPC OTPC_STAT_REG: OTPC_STAT_PERR_UNC (Bitfield-Mask: 0x01) */ -#define OTPC_OTPC_STAT_REG_OTPC_STAT_PERR_COR_Pos (2UL) /*!< OTPC OTPC_STAT_REG: OTPC_STAT_PERR_COR (Bit 2) */ -#define OTPC_OTPC_STAT_REG_OTPC_STAT_PERR_COR_Msk (0x4UL) /*!< OTPC OTPC_STAT_REG: OTPC_STAT_PERR_COR (Bitfield-Mask: 0x01) */ -#define OTPC_OTPC_STAT_REG_OTPC_STAT_PZERO_Pos (3UL) /*!< OTPC OTPC_STAT_REG: OTPC_STAT_PZERO (Bit 3) */ -#define OTPC_OTPC_STAT_REG_OTPC_STAT_PZERO_Msk (0x8UL) /*!< OTPC OTPC_STAT_REG: OTPC_STAT_PZERO (Bitfield-Mask: 0x01) */ -#define OTPC_OTPC_STAT_REG_OTPC_STAT_TRDY_Pos (4UL) /*!< OTPC OTPC_STAT_REG: OTPC_STAT_TRDY (Bit 4) */ -#define OTPC_OTPC_STAT_REG_OTPC_STAT_TRDY_Msk (0x10UL) /*!< OTPC OTPC_STAT_REG: OTPC_STAT_TRDY (Bitfield-Mask: 0x01) */ -#define OTPC_OTPC_STAT_REG_OTPC_STAT_TERROR_Pos (5UL) /*!< OTPC OTPC_STAT_REG: OTPC_STAT_TERROR (Bit 5) */ -#define OTPC_OTPC_STAT_REG_OTPC_STAT_TERROR_Msk (0x20UL) /*!< OTPC OTPC_STAT_REG: OTPC_STAT_TERROR (Bitfield-Mask: 0x01) */ -#define OTPC_OTPC_STAT_REG_OTPC_STAT_ARDY_Pos (6UL) /*!< OTPC OTPC_STAT_REG: OTPC_STAT_ARDY (Bit 6) */ -#define OTPC_OTPC_STAT_REG_OTPC_STAT_ARDY_Msk (0x40UL) /*!< OTPC OTPC_STAT_REG: OTPC_STAT_ARDY (Bitfield-Mask: 0x01) */ -#define OTPC_OTPC_STAT_REG_OTPC_STAT_RERROR_Pos (7UL) /*!< OTPC OTPC_STAT_REG: OTPC_STAT_RERROR (Bit 7) */ -#define OTPC_OTPC_STAT_REG_OTPC_STAT_RERROR_Msk (0x80UL) /*!< OTPC OTPC_STAT_REG: OTPC_STAT_RERROR (Bitfield-Mask: 0x01) */ -#define OTPC_OTPC_STAT_REG_OTPC_STAT_FWORDS_Pos (8UL) /*!< OTPC OTPC_STAT_REG: OTPC_STAT_FWORDS (Bit 8) */ -#define OTPC_OTPC_STAT_REG_OTPC_STAT_FWORDS_Msk (0xf00UL) /*!< OTPC OTPC_STAT_REG: OTPC_STAT_FWORDS (Bitfield-Mask: 0x0f) */ -#define OTPC_OTPC_STAT_REG_OTPC_STAT_NWORDS_Pos (16UL) /*!< OTPC OTPC_STAT_REG: OTPC_STAT_NWORDS (Bit 16) */ -#define OTPC_OTPC_STAT_REG_OTPC_STAT_NWORDS_Msk (0x3fff0000UL) /*!< OTPC OTPC_STAT_REG: OTPC_STAT_NWORDS (Bitfield-Mask: 0x3fff) */ - -/* ---------------------------- OTPC_OTPC_AHBADR_REG ---------------------------- */ -#define OTPC_OTPC_AHBADR_REG_OTPC_AHBADR_Pos (2UL) /*!< OTPC OTPC_AHBADR_REG: OTPC_AHBADR (Bit 2) */ -#define OTPC_OTPC_AHBADR_REG_OTPC_AHBADR_Msk (0xfffffffcUL) /*!< OTPC OTPC_AHBADR_REG: OTPC_AHBADR (Bitfield-Mask: 0x3fffffff) */ - -/* ---------------------------- OTPC_OTPC_CELADR_REG ---------------------------- */ -#define OTPC_OTPC_CELADR_REG_OTPC_CELADR_Pos (0UL) /*!< OTPC OTPC_CELADR_REG: OTPC_CELADR (Bit 0) */ -#define OTPC_OTPC_CELADR_REG_OTPC_CELADR_Msk (0x3fffUL) /*!< OTPC OTPC_CELADR_REG: OTPC_CELADR (Bitfield-Mask: 0x3fff) */ -#define OTPC_OTPC_CELADR_REG_OTPC_CELADR_LV_Pos (16UL) /*!< OTPC OTPC_CELADR_REG: OTPC_CELADR_LV (Bit 16) */ -#define OTPC_OTPC_CELADR_REG_OTPC_CELADR_LV_Msk (0x3fff0000UL) /*!< OTPC OTPC_CELADR_REG: OTPC_CELADR_LV (Bitfield-Mask: 0x3fff) */ - -/* ---------------------------- OTPC_OTPC_NWORDS_REG ---------------------------- */ -#define OTPC_OTPC_NWORDS_REG_OTPC_NWORDS_Pos (0UL) /*!< OTPC OTPC_NWORDS_REG: OTPC_NWORDS (Bit 0) */ -#define OTPC_OTPC_NWORDS_REG_OTPC_NWORDS_Msk (0x3fffUL) /*!< OTPC OTPC_NWORDS_REG: OTPC_NWORDS (Bitfield-Mask: 0x3fff) */ - -/* ----------------------------- OTPC_OTPC_FFPRT_REG ---------------------------- */ -#define OTPC_OTPC_FFPRT_REG_OTPC_FFPRT_Pos (0UL) /*!< OTPC OTPC_FFPRT_REG: OTPC_FFPRT (Bit 0) */ -#define OTPC_OTPC_FFPRT_REG_OTPC_FFPRT_Msk (0xffffffffUL) /*!< OTPC OTPC_FFPRT_REG: OTPC_FFPRT (Bitfield-Mask: 0xffffffff) */ - -/* ----------------------------- OTPC_OTPC_FFRD_REG ----------------------------- */ -#define OTPC_OTPC_FFRD_REG_OTPC_FFRD_Pos (0UL) /*!< OTPC OTPC_FFRD_REG: OTPC_FFRD (Bit 0) */ -#define OTPC_OTPC_FFRD_REG_OTPC_FFRD_Msk (0xffffffffUL) /*!< OTPC OTPC_FFRD_REG: OTPC_FFRD (Bitfield-Mask: 0xffffffff) */ - -/* ---------------------------- OTPC_OTPC_PWORDL_REG ---------------------------- */ -#define OTPC_OTPC_PWORDL_REG_OTPC_PWORDL_Pos (0UL) /*!< OTPC OTPC_PWORDL_REG: OTPC_PWORDL (Bit 0) */ -#define OTPC_OTPC_PWORDL_REG_OTPC_PWORDL_Msk (0xffffffffUL) /*!< OTPC OTPC_PWORDL_REG: OTPC_PWORDL (Bitfield-Mask: 0xffffffff) */ - -/* ---------------------------- OTPC_OTPC_PWORDH_REG ---------------------------- */ -#define OTPC_OTPC_PWORDH_REG_OTPC_PWORDH_Pos (0UL) /*!< OTPC OTPC_PWORDH_REG: OTPC_PWORDH (Bit 0) */ -#define OTPC_OTPC_PWORDH_REG_OTPC_PWORDH_Msk (0xffffffffUL) /*!< OTPC OTPC_PWORDH_REG: OTPC_PWORDH (Bitfield-Mask: 0xffffffff) */ - -/* ----------------------------- OTPC_OTPC_TIM1_REG ----------------------------- */ -#define OTPC_OTPC_TIM1_REG_OTPC_TIM1_CC_T_CADX_Pos (0UL) /*!< OTPC OTPC_TIM1_REG: OTPC_TIM1_CC_T_CADX (Bit 0) */ -#define OTPC_OTPC_TIM1_REG_OTPC_TIM1_CC_T_CADX_Msk (0xffUL) /*!< OTPC OTPC_TIM1_REG: OTPC_TIM1_CC_T_CADX (Bitfield-Mask: 0xff) */ -#define OTPC_OTPC_TIM1_REG_OTPC_TIM1_CC_T_PW_Pos (8UL) /*!< OTPC OTPC_TIM1_REG: OTPC_TIM1_CC_T_PW (Bit 8) */ -#define OTPC_OTPC_TIM1_REG_OTPC_TIM1_CC_T_PW_Msk (0xff00UL) /*!< OTPC OTPC_TIM1_REG: OTPC_TIM1_CC_T_PW (Bitfield-Mask: 0xff) */ -#define OTPC_OTPC_TIM1_REG_OTPC_TIM1_CC_T_1US_Pos (16UL) /*!< OTPC OTPC_TIM1_REG: OTPC_TIM1_CC_T_1US (Bit 16) */ -#define OTPC_OTPC_TIM1_REG_OTPC_TIM1_CC_T_1US_Msk (0x3f0000UL) /*!< OTPC OTPC_TIM1_REG: OTPC_TIM1_CC_T_1US (Bitfield-Mask: 0x3f) */ -#define OTPC_OTPC_TIM1_REG_OTPC_TIM1_CC_T_500NS_Pos (22UL) /*!< OTPC OTPC_TIM1_REG: OTPC_TIM1_CC_T_500NS (Bit 22) */ -#define OTPC_OTPC_TIM1_REG_OTPC_TIM1_CC_T_500NS_Msk (0x7c00000UL) /*!< OTPC OTPC_TIM1_REG: OTPC_TIM1_CC_T_500NS (Bitfield-Mask: 0x1f) */ -#define OTPC_OTPC_TIM1_REG_OTPC_TIM1_CC_T_200NS_Pos (27UL) /*!< OTPC OTPC_TIM1_REG: OTPC_TIM1_CC_T_200NS (Bit 27) */ -#define OTPC_OTPC_TIM1_REG_OTPC_TIM1_CC_T_200NS_Msk (0x78000000UL) /*!< OTPC OTPC_TIM1_REG: OTPC_TIM1_CC_T_200NS (Bitfield-Mask: 0x0f) */ -#define OTPC_OTPC_TIM1_REG_OTPC_TIM1_CC_T_25NS_Pos (31UL) /*!< OTPC OTPC_TIM1_REG: OTPC_TIM1_CC_T_25NS (Bit 31) */ -#define OTPC_OTPC_TIM1_REG_OTPC_TIM1_CC_T_25NS_Msk (0x80000000UL) /*!< OTPC OTPC_TIM1_REG: OTPC_TIM1_CC_T_25NS (Bitfield-Mask: 0x01) */ - -/* ----------------------------- OTPC_OTPC_TIM2_REG ----------------------------- */ -#define OTPC_OTPC_TIM2_REG_OTPC_TIM2_CC_STBY_THR_Pos (0UL) /*!< OTPC OTPC_TIM2_REG: OTPC_TIM2_CC_STBY_THR (Bit 0) */ -#define OTPC_OTPC_TIM2_REG_OTPC_TIM2_CC_STBY_THR_Msk (0x3ffUL) /*!< OTPC OTPC_TIM2_REG: OTPC_TIM2_CC_STBY_THR (Bitfield-Mask: 0x3ff) */ -#define OTPC_OTPC_TIM2_REG_OTPC_TIM2_CC_T_BCHK_Pos (16UL) /*!< OTPC OTPC_TIM2_REG: OTPC_TIM2_CC_T_BCHK (Bit 16) */ -#define OTPC_OTPC_TIM2_REG_OTPC_TIM2_CC_T_BCHK_Msk (0x7f0000UL) /*!< OTPC OTPC_TIM2_REG: OTPC_TIM2_CC_T_BCHK (Bitfield-Mask: 0x7f) */ -#define OTPC_OTPC_TIM2_REG_OTPC_TIM2_RDENL_PROT_Pos (23UL) /*!< OTPC OTPC_TIM2_REG: OTPC_TIM2_RDENL_PROT (Bit 23) */ -#define OTPC_OTPC_TIM2_REG_OTPC_TIM2_RDENL_PROT_Msk (0x800000UL) /*!< OTPC OTPC_TIM2_REG: OTPC_TIM2_RDENL_PROT (Bitfield-Mask: 0x01) */ - -/* ----------------------------- OTPC_OTPC_TEST_REG ----------------------------- */ -#define OTPC_OTPC_TEST_REG_OTPC_SECDED_COR_DIS_Pos (0UL) /*!< OTPC OTPC_TEST_REG: OTPC_SECDED_COR_DIS (Bit 0) */ -#define OTPC_OTPC_TEST_REG_OTPC_SECDED_COR_DIS_Msk (0x1UL) /*!< OTPC OTPC_TEST_REG: OTPC_SECDED_COR_DIS (Bitfield-Mask: 0x01) */ -#define OTPC_OTPC_TEST_REG_OTPC_SECDED_RAW_ECC_Pos (16UL) /*!< OTPC OTPC_TEST_REG: OTPC_SECDED_RAW_ECC (Bit 16) */ -#define OTPC_OTPC_TEST_REG_OTPC_SECDED_RAW_ECC_Msk (0xff0000UL) /*!< OTPC OTPC_TEST_REG: OTPC_SECDED_RAW_ECC (Bitfield-Mask: 0xff) */ -#define OTPC_OTPC_TEST_REG_OTPC_SECDED_STAT_Pos (24UL) /*!< OTPC OTPC_TEST_REG: OTPC_SECDED_STAT (Bit 24) */ -#define OTPC_OTPC_TEST_REG_OTPC_SECDED_STAT_Msk (0x3000000UL) /*!< OTPC OTPC_TEST_REG: OTPC_SECDED_STAT (Bitfield-Mask: 0x03) */ -#define OTPC_OTPC_TEST_REG_OTPC_USED_RR_Pos (26UL) /*!< OTPC OTPC_TEST_REG: OTPC_USED_RR (Bit 26) */ -#define OTPC_OTPC_TEST_REG_OTPC_USED_RR_Msk (0x4000000UL) /*!< OTPC OTPC_TEST_REG: OTPC_USED_RR (Bitfield-Mask: 0x01) */ - - -/* ================================================================================ */ -/* ================ struct 'PATCH' Position & Mask ================ */ -/* ================================================================================ */ - - -/* ---------------------------- PATCH_PATCH_VALID_REG --------------------------- */ -#define PATCH_PATCH_VALID_REG_PATCH_VALID_Pos (0UL) /*!< PATCH PATCH_VALID_REG: PATCH_VALID (Bit 0) */ -#define PATCH_PATCH_VALID_REG_PATCH_VALID_Msk (0xfffffffUL) /*!< PATCH PATCH_VALID_REG: PATCH_VALID (Bitfield-Mask: 0xfffffff) */ - -/* -------------------------- PATCH_PATCH_VALID_SET_REG ------------------------- */ -#define PATCH_PATCH_VALID_SET_REG_PATCH_VALID_Pos (0UL) /*!< PATCH PATCH_VALID_SET_REG: PATCH_VALID (Bit 0) */ -#define PATCH_PATCH_VALID_SET_REG_PATCH_VALID_Msk (0xfffffffUL) /*!< PATCH PATCH_VALID_SET_REG: PATCH_VALID (Bitfield-Mask: 0xfffffff) */ - -/* ------------------------- PATCH_PATCH_VALID_RESET_REG ------------------------ */ -#define PATCH_PATCH_VALID_RESET_REG_PATCH_VALID_Pos (0UL) /*!< PATCH PATCH_VALID_RESET_REG: PATCH_VALID (Bit 0) */ -#define PATCH_PATCH_VALID_RESET_REG_PATCH_VALID_Msk (0xfffffffUL) /*!< PATCH PATCH_VALID_RESET_REG: PATCH_VALID (Bitfield-Mask: 0xfffffff) */ - -/* ---------------------------- PATCH_PATCH_ADDR0_REG --------------------------- */ -#define PATCH_PATCH_ADDR0_REG_PATCH_ADDR_C_Pos (1UL) /*!< PATCH PATCH_ADDR0_REG: PATCH_ADDR_C (Bit 1) */ -#define PATCH_PATCH_ADDR0_REG_PATCH_ADDR_C_Msk (0x1fffeUL) /*!< PATCH PATCH_ADDR0_REG: PATCH_ADDR_C (Bitfield-Mask: 0xffff) */ -#define PATCH_PATCH_ADDR0_REG_PATCH_ADDR_19_Pos (19UL) /*!< PATCH PATCH_ADDR0_REG: PATCH_ADDR_19 (Bit 19) */ -#define PATCH_PATCH_ADDR0_REG_PATCH_ADDR_19_Msk (0x80000UL) /*!< PATCH PATCH_ADDR0_REG: PATCH_ADDR_19 (Bitfield-Mask: 0x01) */ - -/* ---------------------------- PATCH_PATCH_ADDR1_REG --------------------------- */ -#define PATCH_PATCH_ADDR1_REG_PATCH_ADDR_C_Pos (1UL) /*!< PATCH PATCH_ADDR1_REG: PATCH_ADDR_C (Bit 1) */ -#define PATCH_PATCH_ADDR1_REG_PATCH_ADDR_C_Msk (0x1fffeUL) /*!< PATCH PATCH_ADDR1_REG: PATCH_ADDR_C (Bitfield-Mask: 0xffff) */ -#define PATCH_PATCH_ADDR1_REG_PATCH_ADDR_19_Pos (19UL) /*!< PATCH PATCH_ADDR1_REG: PATCH_ADDR_19 (Bit 19) */ -#define PATCH_PATCH_ADDR1_REG_PATCH_ADDR_19_Msk (0x80000UL) /*!< PATCH PATCH_ADDR1_REG: PATCH_ADDR_19 (Bitfield-Mask: 0x01) */ - -/* ---------------------------- PATCH_PATCH_ADDR2_REG --------------------------- */ -#define PATCH_PATCH_ADDR2_REG_PATCH_ADDR_C_Pos (1UL) /*!< PATCH PATCH_ADDR2_REG: PATCH_ADDR_C (Bit 1) */ -#define PATCH_PATCH_ADDR2_REG_PATCH_ADDR_C_Msk (0x1fffeUL) /*!< PATCH PATCH_ADDR2_REG: PATCH_ADDR_C (Bitfield-Mask: 0xffff) */ -#define PATCH_PATCH_ADDR2_REG_PATCH_ADDR_19_Pos (19UL) /*!< PATCH PATCH_ADDR2_REG: PATCH_ADDR_19 (Bit 19) */ -#define PATCH_PATCH_ADDR2_REG_PATCH_ADDR_19_Msk (0x80000UL) /*!< PATCH PATCH_ADDR2_REG: PATCH_ADDR_19 (Bitfield-Mask: 0x01) */ - -/* ---------------------------- PATCH_PATCH_ADDR3_REG --------------------------- */ -#define PATCH_PATCH_ADDR3_REG_PATCH_ADDR_C_Pos (1UL) /*!< PATCH PATCH_ADDR3_REG: PATCH_ADDR_C (Bit 1) */ -#define PATCH_PATCH_ADDR3_REG_PATCH_ADDR_C_Msk (0x1fffeUL) /*!< PATCH PATCH_ADDR3_REG: PATCH_ADDR_C (Bitfield-Mask: 0xffff) */ -#define PATCH_PATCH_ADDR3_REG_PATCH_ADDR_19_Pos (19UL) /*!< PATCH PATCH_ADDR3_REG: PATCH_ADDR_19 (Bit 19) */ -#define PATCH_PATCH_ADDR3_REG_PATCH_ADDR_19_Msk (0x80000UL) /*!< PATCH PATCH_ADDR3_REG: PATCH_ADDR_19 (Bitfield-Mask: 0x01) */ - -/* ---------------------------- PATCH_PATCH_ADDR4_REG --------------------------- */ -#define PATCH_PATCH_ADDR4_REG_PATCH_ADDR_C_Pos (1UL) /*!< PATCH PATCH_ADDR4_REG: PATCH_ADDR_C (Bit 1) */ -#define PATCH_PATCH_ADDR4_REG_PATCH_ADDR_C_Msk (0x1fffeUL) /*!< PATCH PATCH_ADDR4_REG: PATCH_ADDR_C (Bitfield-Mask: 0xffff) */ -#define PATCH_PATCH_ADDR4_REG_PATCH_ADDR_19_Pos (19UL) /*!< PATCH PATCH_ADDR4_REG: PATCH_ADDR_19 (Bit 19) */ -#define PATCH_PATCH_ADDR4_REG_PATCH_ADDR_19_Msk (0x80000UL) /*!< PATCH PATCH_ADDR4_REG: PATCH_ADDR_19 (Bitfield-Mask: 0x01) */ - -/* ---------------------------- PATCH_PATCH_ADDR5_REG --------------------------- */ -#define PATCH_PATCH_ADDR5_REG_PATCH_ADDR_C_Pos (1UL) /*!< PATCH PATCH_ADDR5_REG: PATCH_ADDR_C (Bit 1) */ -#define PATCH_PATCH_ADDR5_REG_PATCH_ADDR_C_Msk (0x1fffeUL) /*!< PATCH PATCH_ADDR5_REG: PATCH_ADDR_C (Bitfield-Mask: 0xffff) */ -#define PATCH_PATCH_ADDR5_REG_PATCH_ADDR_19_Pos (19UL) /*!< PATCH PATCH_ADDR5_REG: PATCH_ADDR_19 (Bit 19) */ -#define PATCH_PATCH_ADDR5_REG_PATCH_ADDR_19_Msk (0x80000UL) /*!< PATCH PATCH_ADDR5_REG: PATCH_ADDR_19 (Bitfield-Mask: 0x01) */ - -/* ---------------------------- PATCH_PATCH_ADDR6_REG --------------------------- */ -#define PATCH_PATCH_ADDR6_REG_PATCH_ADDR_C_Pos (1UL) /*!< PATCH PATCH_ADDR6_REG: PATCH_ADDR_C (Bit 1) */ -#define PATCH_PATCH_ADDR6_REG_PATCH_ADDR_C_Msk (0x1fffeUL) /*!< PATCH PATCH_ADDR6_REG: PATCH_ADDR_C (Bitfield-Mask: 0xffff) */ -#define PATCH_PATCH_ADDR6_REG_PATCH_ADDR_19_Pos (19UL) /*!< PATCH PATCH_ADDR6_REG: PATCH_ADDR_19 (Bit 19) */ -#define PATCH_PATCH_ADDR6_REG_PATCH_ADDR_19_Msk (0x80000UL) /*!< PATCH PATCH_ADDR6_REG: PATCH_ADDR_19 (Bitfield-Mask: 0x01) */ - -/* ---------------------------- PATCH_PATCH_ADDR7_REG --------------------------- */ -#define PATCH_PATCH_ADDR7_REG_PATCH_ADDR_C_Pos (1UL) /*!< PATCH PATCH_ADDR7_REG: PATCH_ADDR_C (Bit 1) */ -#define PATCH_PATCH_ADDR7_REG_PATCH_ADDR_C_Msk (0x1fffeUL) /*!< PATCH PATCH_ADDR7_REG: PATCH_ADDR_C (Bitfield-Mask: 0xffff) */ -#define PATCH_PATCH_ADDR7_REG_PATCH_ADDR_19_Pos (19UL) /*!< PATCH PATCH_ADDR7_REG: PATCH_ADDR_19 (Bit 19) */ -#define PATCH_PATCH_ADDR7_REG_PATCH_ADDR_19_Msk (0x80000UL) /*!< PATCH PATCH_ADDR7_REG: PATCH_ADDR_19 (Bitfield-Mask: 0x01) */ - -/* ---------------------------- PATCH_PATCH_ADDR8_REG --------------------------- */ -#define PATCH_PATCH_ADDR8_REG_PATCH_ADDR_C_Pos (1UL) /*!< PATCH PATCH_ADDR8_REG: PATCH_ADDR_C (Bit 1) */ -#define PATCH_PATCH_ADDR8_REG_PATCH_ADDR_C_Msk (0x1fffeUL) /*!< PATCH PATCH_ADDR8_REG: PATCH_ADDR_C (Bitfield-Mask: 0xffff) */ -#define PATCH_PATCH_ADDR8_REG_PATCH_ADDR_19_Pos (19UL) /*!< PATCH PATCH_ADDR8_REG: PATCH_ADDR_19 (Bit 19) */ -#define PATCH_PATCH_ADDR8_REG_PATCH_ADDR_19_Msk (0x80000UL) /*!< PATCH PATCH_ADDR8_REG: PATCH_ADDR_19 (Bitfield-Mask: 0x01) */ - -/* ---------------------------- PATCH_PATCH_ADDR9_REG --------------------------- */ -#define PATCH_PATCH_ADDR9_REG_PATCH_ADDR_C_Pos (1UL) /*!< PATCH PATCH_ADDR9_REG: PATCH_ADDR_C (Bit 1) */ -#define PATCH_PATCH_ADDR9_REG_PATCH_ADDR_C_Msk (0x1fffeUL) /*!< PATCH PATCH_ADDR9_REG: PATCH_ADDR_C (Bitfield-Mask: 0xffff) */ -#define PATCH_PATCH_ADDR9_REG_PATCH_ADDR_19_Pos (19UL) /*!< PATCH PATCH_ADDR9_REG: PATCH_ADDR_19 (Bit 19) */ -#define PATCH_PATCH_ADDR9_REG_PATCH_ADDR_19_Msk (0x80000UL) /*!< PATCH PATCH_ADDR9_REG: PATCH_ADDR_19 (Bitfield-Mask: 0x01) */ - -/* --------------------------- PATCH_PATCH_ADDR10_REG --------------------------- */ -#define PATCH_PATCH_ADDR10_REG_PATCH_ADDR_C_Pos (1UL) /*!< PATCH PATCH_ADDR10_REG: PATCH_ADDR_C (Bit 1) */ -#define PATCH_PATCH_ADDR10_REG_PATCH_ADDR_C_Msk (0x1fffeUL) /*!< PATCH PATCH_ADDR10_REG: PATCH_ADDR_C (Bitfield-Mask: 0xffff) */ -#define PATCH_PATCH_ADDR10_REG_PATCH_ADDR_19_Pos (19UL) /*!< PATCH PATCH_ADDR10_REG: PATCH_ADDR_19 (Bit 19) */ -#define PATCH_PATCH_ADDR10_REG_PATCH_ADDR_19_Msk (0x80000UL) /*!< PATCH PATCH_ADDR10_REG: PATCH_ADDR_19 (Bitfield-Mask: 0x01) */ - -/* --------------------------- PATCH_PATCH_ADDR11_REG --------------------------- */ -#define PATCH_PATCH_ADDR11_REG_PATCH_ADDR_C_Pos (1UL) /*!< PATCH PATCH_ADDR11_REG: PATCH_ADDR_C (Bit 1) */ -#define PATCH_PATCH_ADDR11_REG_PATCH_ADDR_C_Msk (0x1fffeUL) /*!< PATCH PATCH_ADDR11_REG: PATCH_ADDR_C (Bitfield-Mask: 0xffff) */ -#define PATCH_PATCH_ADDR11_REG_PATCH_ADDR_19_Pos (19UL) /*!< PATCH PATCH_ADDR11_REG: PATCH_ADDR_19 (Bit 19) */ -#define PATCH_PATCH_ADDR11_REG_PATCH_ADDR_19_Msk (0x80000UL) /*!< PATCH PATCH_ADDR11_REG: PATCH_ADDR_19 (Bitfield-Mask: 0x01) */ - -/* --------------------------- PATCH_PATCH_ADDR12_REG --------------------------- */ -#define PATCH_PATCH_ADDR12_REG_PATCH_ADDR_C_Pos (1UL) /*!< PATCH PATCH_ADDR12_REG: PATCH_ADDR_C (Bit 1) */ -#define PATCH_PATCH_ADDR12_REG_PATCH_ADDR_C_Msk (0x1fffeUL) /*!< PATCH PATCH_ADDR12_REG: PATCH_ADDR_C (Bitfield-Mask: 0xffff) */ -#define PATCH_PATCH_ADDR12_REG_PATCH_ADDR_19_Pos (19UL) /*!< PATCH PATCH_ADDR12_REG: PATCH_ADDR_19 (Bit 19) */ -#define PATCH_PATCH_ADDR12_REG_PATCH_ADDR_19_Msk (0x80000UL) /*!< PATCH PATCH_ADDR12_REG: PATCH_ADDR_19 (Bitfield-Mask: 0x01) */ - -/* --------------------------- PATCH_PATCH_ADDR13_REG --------------------------- */ -#define PATCH_PATCH_ADDR13_REG_PATCH_ADDR_C_Pos (1UL) /*!< PATCH PATCH_ADDR13_REG: PATCH_ADDR_C (Bit 1) */ -#define PATCH_PATCH_ADDR13_REG_PATCH_ADDR_C_Msk (0x1fffeUL) /*!< PATCH PATCH_ADDR13_REG: PATCH_ADDR_C (Bitfield-Mask: 0xffff) */ -#define PATCH_PATCH_ADDR13_REG_PATCH_ADDR_19_Pos (19UL) /*!< PATCH PATCH_ADDR13_REG: PATCH_ADDR_19 (Bit 19) */ -#define PATCH_PATCH_ADDR13_REG_PATCH_ADDR_19_Msk (0x80000UL) /*!< PATCH PATCH_ADDR13_REG: PATCH_ADDR_19 (Bitfield-Mask: 0x01) */ - -/* --------------------------- PATCH_PATCH_ADDR14_REG --------------------------- */ -#define PATCH_PATCH_ADDR14_REG_PATCH_ADDR_C_Pos (1UL) /*!< PATCH PATCH_ADDR14_REG: PATCH_ADDR_C (Bit 1) */ -#define PATCH_PATCH_ADDR14_REG_PATCH_ADDR_C_Msk (0x1fffeUL) /*!< PATCH PATCH_ADDR14_REG: PATCH_ADDR_C (Bitfield-Mask: 0xffff) */ -#define PATCH_PATCH_ADDR14_REG_PATCH_ADDR_19_Pos (19UL) /*!< PATCH PATCH_ADDR14_REG: PATCH_ADDR_19 (Bit 19) */ -#define PATCH_PATCH_ADDR14_REG_PATCH_ADDR_19_Msk (0x80000UL) /*!< PATCH PATCH_ADDR14_REG: PATCH_ADDR_19 (Bitfield-Mask: 0x01) */ - -/* --------------------------- PATCH_PATCH_ADDR15_REG --------------------------- */ -#define PATCH_PATCH_ADDR15_REG_PATCH_ADDR_C_Pos (1UL) /*!< PATCH PATCH_ADDR15_REG: PATCH_ADDR_C (Bit 1) */ -#define PATCH_PATCH_ADDR15_REG_PATCH_ADDR_C_Msk (0x1fffeUL) /*!< PATCH PATCH_ADDR15_REG: PATCH_ADDR_C (Bitfield-Mask: 0xffff) */ -#define PATCH_PATCH_ADDR15_REG_PATCH_ADDR_19_Pos (19UL) /*!< PATCH PATCH_ADDR15_REG: PATCH_ADDR_19 (Bit 19) */ -#define PATCH_PATCH_ADDR15_REG_PATCH_ADDR_19_Msk (0x80000UL) /*!< PATCH PATCH_ADDR15_REG: PATCH_ADDR_19 (Bitfield-Mask: 0x01) */ - -/* --------------------------- PATCH_PATCH_ADDR16_REG --------------------------- */ -#define PATCH_PATCH_ADDR16_REG_PATCH_ADDR_C_Pos (1UL) /*!< PATCH PATCH_ADDR16_REG: PATCH_ADDR_C (Bit 1) */ -#define PATCH_PATCH_ADDR16_REG_PATCH_ADDR_C_Msk (0x1fffeUL) /*!< PATCH PATCH_ADDR16_REG: PATCH_ADDR_C (Bitfield-Mask: 0xffff) */ -#define PATCH_PATCH_ADDR16_REG_PATCH_ADDR_19_Pos (19UL) /*!< PATCH PATCH_ADDR16_REG: PATCH_ADDR_19 (Bit 19) */ -#define PATCH_PATCH_ADDR16_REG_PATCH_ADDR_19_Msk (0x80000UL) /*!< PATCH PATCH_ADDR16_REG: PATCH_ADDR_19 (Bitfield-Mask: 0x01) */ - -/* --------------------------- PATCH_PATCH_ADDR17_REG --------------------------- */ -#define PATCH_PATCH_ADDR17_REG_PATCH_ADDR_C_Pos (1UL) /*!< PATCH PATCH_ADDR17_REG: PATCH_ADDR_C (Bit 1) */ -#define PATCH_PATCH_ADDR17_REG_PATCH_ADDR_C_Msk (0x1fffeUL) /*!< PATCH PATCH_ADDR17_REG: PATCH_ADDR_C (Bitfield-Mask: 0xffff) */ -#define PATCH_PATCH_ADDR17_REG_PATCH_ADDR_19_Pos (19UL) /*!< PATCH PATCH_ADDR17_REG: PATCH_ADDR_19 (Bit 19) */ -#define PATCH_PATCH_ADDR17_REG_PATCH_ADDR_19_Msk (0x80000UL) /*!< PATCH PATCH_ADDR17_REG: PATCH_ADDR_19 (Bitfield-Mask: 0x01) */ - -/* --------------------------- PATCH_PATCH_ADDR18_REG --------------------------- */ -#define PATCH_PATCH_ADDR18_REG_PATCH_ADDR_C_Pos (1UL) /*!< PATCH PATCH_ADDR18_REG: PATCH_ADDR_C (Bit 1) */ -#define PATCH_PATCH_ADDR18_REG_PATCH_ADDR_C_Msk (0x1fffeUL) /*!< PATCH PATCH_ADDR18_REG: PATCH_ADDR_C (Bitfield-Mask: 0xffff) */ -#define PATCH_PATCH_ADDR18_REG_PATCH_ADDR_19_Pos (19UL) /*!< PATCH PATCH_ADDR18_REG: PATCH_ADDR_19 (Bit 19) */ -#define PATCH_PATCH_ADDR18_REG_PATCH_ADDR_19_Msk (0x80000UL) /*!< PATCH PATCH_ADDR18_REG: PATCH_ADDR_19 (Bitfield-Mask: 0x01) */ - -/* --------------------------- PATCH_PATCH_ADDR19_REG --------------------------- */ -#define PATCH_PATCH_ADDR19_REG_PATCH_ADDR_C_Pos (1UL) /*!< PATCH PATCH_ADDR19_REG: PATCH_ADDR_C (Bit 1) */ -#define PATCH_PATCH_ADDR19_REG_PATCH_ADDR_C_Msk (0x1fffeUL) /*!< PATCH PATCH_ADDR19_REG: PATCH_ADDR_C (Bitfield-Mask: 0xffff) */ -#define PATCH_PATCH_ADDR19_REG_PATCH_ADDR_19_Pos (19UL) /*!< PATCH PATCH_ADDR19_REG: PATCH_ADDR_19 (Bit 19) */ -#define PATCH_PATCH_ADDR19_REG_PATCH_ADDR_19_Msk (0x80000UL) /*!< PATCH PATCH_ADDR19_REG: PATCH_ADDR_19 (Bitfield-Mask: 0x01) */ - -/* --------------------------- PATCH_PATCH_ADDR20_REG --------------------------- */ -#define PATCH_PATCH_ADDR20_REG_PATCH_ADDR_D_Pos (2UL) /*!< PATCH PATCH_ADDR20_REG: PATCH_ADDR_D (Bit 2) */ -#define PATCH_PATCH_ADDR20_REG_PATCH_ADDR_D_Msk (0x1fffcUL) /*!< PATCH PATCH_ADDR20_REG: PATCH_ADDR_D (Bitfield-Mask: 0x7fff) */ -#define PATCH_PATCH_ADDR20_REG_PATCH_ADDR_19_Pos (19UL) /*!< PATCH PATCH_ADDR20_REG: PATCH_ADDR_19 (Bit 19) */ -#define PATCH_PATCH_ADDR20_REG_PATCH_ADDR_19_Msk (0x80000UL) /*!< PATCH PATCH_ADDR20_REG: PATCH_ADDR_19 (Bitfield-Mask: 0x01) */ - -/* --------------------------- PATCH_PATCH_DATA20_REG --------------------------- */ -#define PATCH_PATCH_DATA20_REG_PATCH_DATA_Pos (0UL) /*!< PATCH PATCH_DATA20_REG: PATCH_DATA (Bit 0) */ -#define PATCH_PATCH_DATA20_REG_PATCH_DATA_Msk (0xffffffffUL) /*!< PATCH PATCH_DATA20_REG: PATCH_DATA (Bitfield-Mask: 0xffffffff) */ - -/* --------------------------- PATCH_PATCH_ADDR21_REG --------------------------- */ -#define PATCH_PATCH_ADDR21_REG_PATCH_ADDR_D_Pos (2UL) /*!< PATCH PATCH_ADDR21_REG: PATCH_ADDR_D (Bit 2) */ -#define PATCH_PATCH_ADDR21_REG_PATCH_ADDR_D_Msk (0x1fffcUL) /*!< PATCH PATCH_ADDR21_REG: PATCH_ADDR_D (Bitfield-Mask: 0x7fff) */ -#define PATCH_PATCH_ADDR21_REG_PATCH_ADDR_19_Pos (19UL) /*!< PATCH PATCH_ADDR21_REG: PATCH_ADDR_19 (Bit 19) */ -#define PATCH_PATCH_ADDR21_REG_PATCH_ADDR_19_Msk (0x80000UL) /*!< PATCH PATCH_ADDR21_REG: PATCH_ADDR_19 (Bitfield-Mask: 0x01) */ - -/* --------------------------- PATCH_PATCH_DATA21_REG --------------------------- */ -#define PATCH_PATCH_DATA21_REG_PATCH_DATA_Pos (0UL) /*!< PATCH PATCH_DATA21_REG: PATCH_DATA (Bit 0) */ -#define PATCH_PATCH_DATA21_REG_PATCH_DATA_Msk (0xffffffffUL) /*!< PATCH PATCH_DATA21_REG: PATCH_DATA (Bitfield-Mask: 0xffffffff) */ - -/* --------------------------- PATCH_PATCH_ADDR22_REG --------------------------- */ -#define PATCH_PATCH_ADDR22_REG_PATCH_ADDR_D_Pos (2UL) /*!< PATCH PATCH_ADDR22_REG: PATCH_ADDR_D (Bit 2) */ -#define PATCH_PATCH_ADDR22_REG_PATCH_ADDR_D_Msk (0x1fffcUL) /*!< PATCH PATCH_ADDR22_REG: PATCH_ADDR_D (Bitfield-Mask: 0x7fff) */ -#define PATCH_PATCH_ADDR22_REG_PATCH_ADDR_19_Pos (19UL) /*!< PATCH PATCH_ADDR22_REG: PATCH_ADDR_19 (Bit 19) */ -#define PATCH_PATCH_ADDR22_REG_PATCH_ADDR_19_Msk (0x80000UL) /*!< PATCH PATCH_ADDR22_REG: PATCH_ADDR_19 (Bitfield-Mask: 0x01) */ - -/* --------------------------- PATCH_PATCH_DATA22_REG --------------------------- */ -#define PATCH_PATCH_DATA22_REG_PATCH_DATA_Pos (0UL) /*!< PATCH PATCH_DATA22_REG: PATCH_DATA (Bit 0) */ -#define PATCH_PATCH_DATA22_REG_PATCH_DATA_Msk (0xffffffffUL) /*!< PATCH PATCH_DATA22_REG: PATCH_DATA (Bitfield-Mask: 0xffffffff) */ - -/* --------------------------- PATCH_PATCH_ADDR23_REG --------------------------- */ -#define PATCH_PATCH_ADDR23_REG_PATCH_ADDR_D_Pos (2UL) /*!< PATCH PATCH_ADDR23_REG: PATCH_ADDR_D (Bit 2) */ -#define PATCH_PATCH_ADDR23_REG_PATCH_ADDR_D_Msk (0x1fffcUL) /*!< PATCH PATCH_ADDR23_REG: PATCH_ADDR_D (Bitfield-Mask: 0x7fff) */ -#define PATCH_PATCH_ADDR23_REG_PATCH_ADDR_19_Pos (19UL) /*!< PATCH PATCH_ADDR23_REG: PATCH_ADDR_19 (Bit 19) */ -#define PATCH_PATCH_ADDR23_REG_PATCH_ADDR_19_Msk (0x80000UL) /*!< PATCH PATCH_ADDR23_REG: PATCH_ADDR_19 (Bitfield-Mask: 0x01) */ - -/* --------------------------- PATCH_PATCH_DATA23_REG --------------------------- */ -#define PATCH_PATCH_DATA23_REG_PATCH_DATA_Pos (0UL) /*!< PATCH PATCH_DATA23_REG: PATCH_DATA (Bit 0) */ -#define PATCH_PATCH_DATA23_REG_PATCH_DATA_Msk (0xffffffffUL) /*!< PATCH PATCH_DATA23_REG: PATCH_DATA (Bitfield-Mask: 0xffffffff) */ - -/* --------------------------- PATCH_PATCH_ADDR24_REG --------------------------- */ -#define PATCH_PATCH_ADDR24_REG_PATCH_ADDR_D_Pos (2UL) /*!< PATCH PATCH_ADDR24_REG: PATCH_ADDR_D (Bit 2) */ -#define PATCH_PATCH_ADDR24_REG_PATCH_ADDR_D_Msk (0x1fffcUL) /*!< PATCH PATCH_ADDR24_REG: PATCH_ADDR_D (Bitfield-Mask: 0x7fff) */ -#define PATCH_PATCH_ADDR24_REG_PATCH_ADDR_19_Pos (19UL) /*!< PATCH PATCH_ADDR24_REG: PATCH_ADDR_19 (Bit 19) */ -#define PATCH_PATCH_ADDR24_REG_PATCH_ADDR_19_Msk (0x80000UL) /*!< PATCH PATCH_ADDR24_REG: PATCH_ADDR_19 (Bitfield-Mask: 0x01) */ - -/* --------------------------- PATCH_PATCH_DATA24_REG --------------------------- */ -#define PATCH_PATCH_DATA24_REG_PATCH_DATA_Pos (0UL) /*!< PATCH PATCH_DATA24_REG: PATCH_DATA (Bit 0) */ -#define PATCH_PATCH_DATA24_REG_PATCH_DATA_Msk (0xffffffffUL) /*!< PATCH PATCH_DATA24_REG: PATCH_DATA (Bitfield-Mask: 0xffffffff) */ - -/* --------------------------- PATCH_PATCH_ADDR25_REG --------------------------- */ -#define PATCH_PATCH_ADDR25_REG_PATCH_ADDR_D_Pos (2UL) /*!< PATCH PATCH_ADDR25_REG: PATCH_ADDR_D (Bit 2) */ -#define PATCH_PATCH_ADDR25_REG_PATCH_ADDR_D_Msk (0x1fffcUL) /*!< PATCH PATCH_ADDR25_REG: PATCH_ADDR_D (Bitfield-Mask: 0x7fff) */ -#define PATCH_PATCH_ADDR25_REG_PATCH_ADDR_19_Pos (19UL) /*!< PATCH PATCH_ADDR25_REG: PATCH_ADDR_19 (Bit 19) */ -#define PATCH_PATCH_ADDR25_REG_PATCH_ADDR_19_Msk (0x80000UL) /*!< PATCH PATCH_ADDR25_REG: PATCH_ADDR_19 (Bitfield-Mask: 0x01) */ - -/* --------------------------- PATCH_PATCH_DATA25_REG --------------------------- */ -#define PATCH_PATCH_DATA25_REG_PATCH_DATA_Pos (0UL) /*!< PATCH PATCH_DATA25_REG: PATCH_DATA (Bit 0) */ -#define PATCH_PATCH_DATA25_REG_PATCH_DATA_Msk (0xffffffffUL) /*!< PATCH PATCH_DATA25_REG: PATCH_DATA (Bitfield-Mask: 0xffffffff) */ - -/* --------------------------- PATCH_PATCH_ADDR26_REG --------------------------- */ -#define PATCH_PATCH_ADDR26_REG_PATCH_ADDR_D_Pos (2UL) /*!< PATCH PATCH_ADDR26_REG: PATCH_ADDR_D (Bit 2) */ -#define PATCH_PATCH_ADDR26_REG_PATCH_ADDR_D_Msk (0x1fffcUL) /*!< PATCH PATCH_ADDR26_REG: PATCH_ADDR_D (Bitfield-Mask: 0x7fff) */ -#define PATCH_PATCH_ADDR26_REG_PATCH_ADDR_19_Pos (19UL) /*!< PATCH PATCH_ADDR26_REG: PATCH_ADDR_19 (Bit 19) */ -#define PATCH_PATCH_ADDR26_REG_PATCH_ADDR_19_Msk (0x80000UL) /*!< PATCH PATCH_ADDR26_REG: PATCH_ADDR_19 (Bitfield-Mask: 0x01) */ - -/* --------------------------- PATCH_PATCH_DATA26_REG --------------------------- */ -#define PATCH_PATCH_DATA26_REG_PATCH_DATA_Pos (0UL) /*!< PATCH PATCH_DATA26_REG: PATCH_DATA (Bit 0) */ -#define PATCH_PATCH_DATA26_REG_PATCH_DATA_Msk (0xffffffffUL) /*!< PATCH PATCH_DATA26_REG: PATCH_DATA (Bitfield-Mask: 0xffffffff) */ - -/* --------------------------- PATCH_PATCH_ADDR27_REG --------------------------- */ -#define PATCH_PATCH_ADDR27_REG_PATCH_ADDR_D_Pos (2UL) /*!< PATCH PATCH_ADDR27_REG: PATCH_ADDR_D (Bit 2) */ -#define PATCH_PATCH_ADDR27_REG_PATCH_ADDR_D_Msk (0x1fffcUL) /*!< PATCH PATCH_ADDR27_REG: PATCH_ADDR_D (Bitfield-Mask: 0x7fff) */ -#define PATCH_PATCH_ADDR27_REG_PATCH_ADDR_19_Pos (19UL) /*!< PATCH PATCH_ADDR27_REG: PATCH_ADDR_19 (Bit 19) */ -#define PATCH_PATCH_ADDR27_REG_PATCH_ADDR_19_Msk (0x80000UL) /*!< PATCH PATCH_ADDR27_REG: PATCH_ADDR_19 (Bitfield-Mask: 0x01) */ - -/* --------------------------- PATCH_PATCH_DATA27_REG --------------------------- */ -#define PATCH_PATCH_DATA27_REG_PATCH_DATA_Pos (0UL) /*!< PATCH PATCH_DATA27_REG: PATCH_DATA (Bit 0) */ -#define PATCH_PATCH_DATA27_REG_PATCH_DATA_Msk (0xffffffffUL) /*!< PATCH PATCH_DATA27_REG: PATCH_DATA (Bitfield-Mask: 0xffffffff) */ - - -/* ================================================================================ */ -/* ================ struct 'PLLDIG' Position & Mask ================ */ -/* ================================================================================ */ - - -/* ------------------------ PLLDIG_RF_SYNTH_CTRL1_BLE_REG ----------------------- */ -#define PLLDIG_RF_SYNTH_CTRL1_BLE_REG_CHANNEL_ZERO_Pos (0UL) /*!< PLLDIG RF_SYNTH_CTRL1_BLE_REG: CHANNEL_ZERO (Bit 0) */ -#define PLLDIG_RF_SYNTH_CTRL1_BLE_REG_CHANNEL_ZERO_Msk (0xfffUL) /*!< PLLDIG RF_SYNTH_CTRL1_BLE_REG: CHANNEL_ZERO (Bitfield-Mask: 0xfff) */ -#define PLLDIG_RF_SYNTH_CTRL1_BLE_REG_SGN_Pos (12UL) /*!< PLLDIG RF_SYNTH_CTRL1_BLE_REG: SGN (Bit 12) */ -#define PLLDIG_RF_SYNTH_CTRL1_BLE_REG_SGN_Msk (0x1000UL) /*!< PLLDIG RF_SYNTH_CTRL1_BLE_REG: SGN (Bitfield-Mask: 0x01) */ -#define PLLDIG_RF_SYNTH_CTRL1_BLE_REG_CS_Pos (13UL) /*!< PLLDIG RF_SYNTH_CTRL1_BLE_REG: CS (Bit 13) */ -#define PLLDIG_RF_SYNTH_CTRL1_BLE_REG_CS_Msk (0x2000UL) /*!< PLLDIG RF_SYNTH_CTRL1_BLE_REG: CS (Bitfield-Mask: 0x01) */ -#define PLLDIG_RF_SYNTH_CTRL1_BLE_REG_PLL_HSI_POL_Pos (14UL) /*!< PLLDIG RF_SYNTH_CTRL1_BLE_REG: PLL_HSI_POL (Bit 14) */ -#define PLLDIG_RF_SYNTH_CTRL1_BLE_REG_PLL_HSI_POL_Msk (0x4000UL) /*!< PLLDIG RF_SYNTH_CTRL1_BLE_REG: PLL_HSI_POL (Bitfield-Mask: 0x01) */ - -/* ----------------------- PLLDIG_RF_SYNTH_CTRL1_FTDF_REG ----------------------- */ -#define PLLDIG_RF_SYNTH_CTRL1_FTDF_REG_CHANNEL_ZERO_Pos (0UL) /*!< PLLDIG RF_SYNTH_CTRL1_FTDF_REG: CHANNEL_ZERO (Bit 0) */ -#define PLLDIG_RF_SYNTH_CTRL1_FTDF_REG_CHANNEL_ZERO_Msk (0xfffUL) /*!< PLLDIG RF_SYNTH_CTRL1_FTDF_REG: CHANNEL_ZERO (Bitfield-Mask: 0xfff) */ -#define PLLDIG_RF_SYNTH_CTRL1_FTDF_REG_SGN_Pos (12UL) /*!< PLLDIG RF_SYNTH_CTRL1_FTDF_REG: SGN (Bit 12) */ -#define PLLDIG_RF_SYNTH_CTRL1_FTDF_REG_SGN_Msk (0x1000UL) /*!< PLLDIG RF_SYNTH_CTRL1_FTDF_REG: SGN (Bitfield-Mask: 0x01) */ -#define PLLDIG_RF_SYNTH_CTRL1_FTDF_REG_CS_Pos (13UL) /*!< PLLDIG RF_SYNTH_CTRL1_FTDF_REG: CS (Bit 13) */ -#define PLLDIG_RF_SYNTH_CTRL1_FTDF_REG_CS_Msk (0x2000UL) /*!< PLLDIG RF_SYNTH_CTRL1_FTDF_REG: CS (Bitfield-Mask: 0x01) */ -#define PLLDIG_RF_SYNTH_CTRL1_FTDF_REG_PLL_HSI_POL_Pos (14UL) /*!< PLLDIG RF_SYNTH_CTRL1_FTDF_REG: PLL_HSI_POL (Bit 14) */ -#define PLLDIG_RF_SYNTH_CTRL1_FTDF_REG_PLL_HSI_POL_Msk (0x4000UL) /*!< PLLDIG RF_SYNTH_CTRL1_FTDF_REG: PLL_HSI_POL (Bitfield-Mask: 0x01) */ - -/* ------------------------ PLLDIG_RF_SYNTH_CTRL2_BLE_REG ----------------------- */ -#define PLLDIG_RF_SYNTH_CTRL2_BLE_REG_SD_ORDER_RX_Pos (0UL) /*!< PLLDIG RF_SYNTH_CTRL2_BLE_REG: SD_ORDER_RX (Bit 0) */ -#define PLLDIG_RF_SYNTH_CTRL2_BLE_REG_SD_ORDER_RX_Msk (0x3UL) /*!< PLLDIG RF_SYNTH_CTRL2_BLE_REG: SD_ORDER_RX (Bitfield-Mask: 0x03) */ -#define PLLDIG_RF_SYNTH_CTRL2_BLE_REG_SD_ORDER_TX_Pos (2UL) /*!< PLLDIG RF_SYNTH_CTRL2_BLE_REG: SD_ORDER_TX (Bit 2) */ -#define PLLDIG_RF_SYNTH_CTRL2_BLE_REG_SD_ORDER_TX_Msk (0xcUL) /*!< PLLDIG RF_SYNTH_CTRL2_BLE_REG: SD_ORDER_TX (Bitfield-Mask: 0x03) */ -#define PLLDIG_RF_SYNTH_CTRL2_BLE_REG_MODINDEX_Pos (4UL) /*!< PLLDIG RF_SYNTH_CTRL2_BLE_REG: MODINDEX (Bit 4) */ -#define PLLDIG_RF_SYNTH_CTRL2_BLE_REG_MODINDEX_Msk (0x30UL) /*!< PLLDIG RF_SYNTH_CTRL2_BLE_REG: MODINDEX (Bitfield-Mask: 0x03) */ -#define PLLDIG_RF_SYNTH_CTRL2_BLE_REG_GAUSS_DELAY_Pos (6UL) /*!< PLLDIG RF_SYNTH_CTRL2_BLE_REG: GAUSS_DELAY (Bit 6) */ -#define PLLDIG_RF_SYNTH_CTRL2_BLE_REG_GAUSS_DELAY_Msk (0xc0UL) /*!< PLLDIG RF_SYNTH_CTRL2_BLE_REG: GAUSS_DELAY (Bitfield-Mask: 0x03) */ -#define PLLDIG_RF_SYNTH_CTRL2_BLE_REG_GAUSS_INV_Pos (8UL) /*!< PLLDIG RF_SYNTH_CTRL2_BLE_REG: GAUSS_INV (Bit 8) */ -#define PLLDIG_RF_SYNTH_CTRL2_BLE_REG_GAUSS_INV_Msk (0x100UL) /*!< PLLDIG RF_SYNTH_CTRL2_BLE_REG: GAUSS_INV (Bitfield-Mask: 0x01) */ -#define PLLDIG_RF_SYNTH_CTRL2_BLE_REG_GAUSS_86_Pos (9UL) /*!< PLLDIG RF_SYNTH_CTRL2_BLE_REG: GAUSS_86 (Bit 9) */ -#define PLLDIG_RF_SYNTH_CTRL2_BLE_REG_GAUSS_86_Msk (0x200UL) /*!< PLLDIG RF_SYNTH_CTRL2_BLE_REG: GAUSS_86 (Bitfield-Mask: 0x01) */ -#define PLLDIG_RF_SYNTH_CTRL2_BLE_REG_TXDATA_INV_Pos (10UL) /*!< PLLDIG RF_SYNTH_CTRL2_BLE_REG: TXDATA_INV (Bit 10) */ -#define PLLDIG_RF_SYNTH_CTRL2_BLE_REG_TXDATA_INV_Msk (0x400UL) /*!< PLLDIG RF_SYNTH_CTRL2_BLE_REG: TXDATA_INV (Bitfield-Mask: 0x01) */ -#define PLLDIG_RF_SYNTH_CTRL2_BLE_REG_EO_PACKET_DIS_Pos (11UL) /*!< PLLDIG RF_SYNTH_CTRL2_BLE_REG: EO_PACKET_DIS (Bit 11) */ -#define PLLDIG_RF_SYNTH_CTRL2_BLE_REG_EO_PACKET_DIS_Msk (0x800UL) /*!< PLLDIG RF_SYNTH_CTRL2_BLE_REG: EO_PACKET_DIS (Bitfield-Mask: 0x01) */ -#define PLLDIG_RF_SYNTH_CTRL2_BLE_REG_BT_SEL_Pos (12UL) /*!< PLLDIG RF_SYNTH_CTRL2_BLE_REG: BT_SEL (Bit 12) */ -#define PLLDIG_RF_SYNTH_CTRL2_BLE_REG_BT_SEL_Msk (0x1000UL) /*!< PLLDIG RF_SYNTH_CTRL2_BLE_REG: BT_SEL (Bitfield-Mask: 0x01) */ -#define PLLDIG_RF_SYNTH_CTRL2_BLE_REG_BLE_DAC_SEL_Pos (13UL) /*!< PLLDIG RF_SYNTH_CTRL2_BLE_REG: BLE_DAC_SEL (Bit 13) */ -#define PLLDIG_RF_SYNTH_CTRL2_BLE_REG_BLE_DAC_SEL_Msk (0x2000UL) /*!< PLLDIG RF_SYNTH_CTRL2_BLE_REG: BLE_DAC_SEL (Bitfield-Mask: 0x01) */ - -/* ----------------------- PLLDIG_RF_SYNTH_CTRL2_FTDF_REG ----------------------- */ -#define PLLDIG_RF_SYNTH_CTRL2_FTDF_REG_SD_ORDER_RX_Pos (0UL) /*!< PLLDIG RF_SYNTH_CTRL2_FTDF_REG: SD_ORDER_RX (Bit 0) */ -#define PLLDIG_RF_SYNTH_CTRL2_FTDF_REG_SD_ORDER_RX_Msk (0x3UL) /*!< PLLDIG RF_SYNTH_CTRL2_FTDF_REG: SD_ORDER_RX (Bitfield-Mask: 0x03) */ -#define PLLDIG_RF_SYNTH_CTRL2_FTDF_REG_SD_ORDER_TX_Pos (2UL) /*!< PLLDIG RF_SYNTH_CTRL2_FTDF_REG: SD_ORDER_TX (Bit 2) */ -#define PLLDIG_RF_SYNTH_CTRL2_FTDF_REG_SD_ORDER_TX_Msk (0xcUL) /*!< PLLDIG RF_SYNTH_CTRL2_FTDF_REG: SD_ORDER_TX (Bitfield-Mask: 0x03) */ -#define PLLDIG_RF_SYNTH_CTRL2_FTDF_REG_MODINDEX_Pos (4UL) /*!< PLLDIG RF_SYNTH_CTRL2_FTDF_REG: MODINDEX (Bit 4) */ -#define PLLDIG_RF_SYNTH_CTRL2_FTDF_REG_MODINDEX_Msk (0x30UL) /*!< PLLDIG RF_SYNTH_CTRL2_FTDF_REG: MODINDEX (Bitfield-Mask: 0x03) */ -#define PLLDIG_RF_SYNTH_CTRL2_FTDF_REG_TXDAC_DELAY_Pos (6UL) /*!< PLLDIG RF_SYNTH_CTRL2_FTDF_REG: TXDAC_DELAY (Bit 6) */ -#define PLLDIG_RF_SYNTH_CTRL2_FTDF_REG_TXDAC_DELAY_Msk (0x40UL) /*!< PLLDIG RF_SYNTH_CTRL2_FTDF_REG: TXDAC_DELAY (Bitfield-Mask: 0x01) */ -#define PLLDIG_RF_SYNTH_CTRL2_FTDF_REG_GAUSS_INV_Pos (8UL) /*!< PLLDIG RF_SYNTH_CTRL2_FTDF_REG: GAUSS_INV (Bit 8) */ -#define PLLDIG_RF_SYNTH_CTRL2_FTDF_REG_GAUSS_INV_Msk (0x100UL) /*!< PLLDIG RF_SYNTH_CTRL2_FTDF_REG: GAUSS_INV (Bitfield-Mask: 0x01) */ -#define PLLDIG_RF_SYNTH_CTRL2_FTDF_REG_TXDATA_INV_Pos (10UL) /*!< PLLDIG RF_SYNTH_CTRL2_FTDF_REG: TXDATA_INV (Bit 10) */ -#define PLLDIG_RF_SYNTH_CTRL2_FTDF_REG_TXDATA_INV_Msk (0x400UL) /*!< PLLDIG RF_SYNTH_CTRL2_FTDF_REG: TXDATA_INV (Bitfield-Mask: 0x01) */ - -/* -------------------------- PLLDIG_RF_SYNTH_CTRL3_REG ------------------------- */ -#define PLLDIG_RF_SYNTH_CTRL3_REG_MODVAL_WR_Pos (0UL) /*!< PLLDIG RF_SYNTH_CTRL3_REG: MODVAL_WR (Bit 0) */ -#define PLLDIG_RF_SYNTH_CTRL3_REG_MODVAL_WR_Msk (0x3fffUL) /*!< PLLDIG RF_SYNTH_CTRL3_REG: MODVAL_WR (Bitfield-Mask: 0x3fff) */ -#define PLLDIG_RF_SYNTH_CTRL3_REG_MODVAL_SEL_Pos (14UL) /*!< PLLDIG RF_SYNTH_CTRL3_REG: MODVAL_SEL (Bit 14) */ -#define PLLDIG_RF_SYNTH_CTRL3_REG_MODVAL_SEL_Msk (0x4000UL) /*!< PLLDIG RF_SYNTH_CTRL3_REG: MODVAL_SEL (Bitfield-Mask: 0x01) */ -#define PLLDIG_RF_SYNTH_CTRL3_REG_ZIF_MODE_EN_Pos (15UL) /*!< PLLDIG RF_SYNTH_CTRL3_REG: ZIF_MODE_EN (Bit 15) */ -#define PLLDIG_RF_SYNTH_CTRL3_REG_ZIF_MODE_EN_Msk (0x8000UL) /*!< PLLDIG RF_SYNTH_CTRL3_REG: ZIF_MODE_EN (Bitfield-Mask: 0x01) */ - -/* -------------------------- PLLDIG_RF_VCOCAL_CTRL_REG ------------------------- */ -#define PLLDIG_RF_VCOCAL_CTRL_REG_VCO_FREQTRIM_WR_Pos (0UL) /*!< PLLDIG RF_VCOCAL_CTRL_REG: VCO_FREQTRIM_WR (Bit 0) */ -#define PLLDIG_RF_VCOCAL_CTRL_REG_VCO_FREQTRIM_WR_Msk (0xfUL) /*!< PLLDIG RF_VCOCAL_CTRL_REG: VCO_FREQTRIM_WR (Bitfield-Mask: 0x0f) */ -#define PLLDIG_RF_VCOCAL_CTRL_REG_VCO_FREQTRIM_SEL_Pos (4UL) /*!< PLLDIG RF_VCOCAL_CTRL_REG: VCO_FREQTRIM_SEL (Bit 4) */ -#define PLLDIG_RF_VCOCAL_CTRL_REG_VCO_FREQTRIM_SEL_Msk (0x30UL) /*!< PLLDIG RF_VCOCAL_CTRL_REG: VCO_FREQTRIM_SEL (Bitfield-Mask: 0x03) */ -#define PLLDIG_RF_VCOCAL_CTRL_REG_VCOCAL_PERIOD_Pos (6UL) /*!< PLLDIG RF_VCOCAL_CTRL_REG: VCOCAL_PERIOD (Bit 6) */ -#define PLLDIG_RF_VCOCAL_CTRL_REG_VCOCAL_PERIOD_Msk (0xc0UL) /*!< PLLDIG RF_VCOCAL_CTRL_REG: VCOCAL_PERIOD (Bitfield-Mask: 0x03) */ -#define PLLDIG_RF_VCOCAL_CTRL_REG_VCOCAL_MD_STATE_DLY_SEL_Pos (8UL) /*!< PLLDIG RF_VCOCAL_CTRL_REG: VCOCAL_MD_STATE_DLY_SEL (Bit 8) */ -#define PLLDIG_RF_VCOCAL_CTRL_REG_VCOCAL_MD_STATE_DLY_SEL_Msk (0x100UL) /*!< PLLDIG RF_VCOCAL_CTRL_REG: VCOCAL_MD_STATE_DLY_SEL (Bitfield-Mask: 0x01) */ - -/* ------------------------ PLLDIG_RF_MGAIN_CTRL_BLE_REG ------------------------ */ -#define PLLDIG_RF_MGAIN_CTRL_BLE_REG_GAUSS_GAIN_WR_Pos (0UL) /*!< PLLDIG RF_MGAIN_CTRL_BLE_REG: GAUSS_GAIN_WR (Bit 0) */ -#define PLLDIG_RF_MGAIN_CTRL_BLE_REG_GAUSS_GAIN_WR_Msk (0xffUL) /*!< PLLDIG RF_MGAIN_CTRL_BLE_REG: GAUSS_GAIN_WR (Bitfield-Mask: 0xff) */ -#define PLLDIG_RF_MGAIN_CTRL_BLE_REG_GAUSS_GAIN_SEL_Pos (8UL) /*!< PLLDIG RF_MGAIN_CTRL_BLE_REG: GAUSS_GAIN_SEL (Bit 8) */ -#define PLLDIG_RF_MGAIN_CTRL_BLE_REG_GAUSS_GAIN_SEL_Msk (0x100UL) /*!< PLLDIG RF_MGAIN_CTRL_BLE_REG: GAUSS_GAIN_SEL (Bitfield-Mask: 0x01) */ -#define PLLDIG_RF_MGAIN_CTRL_BLE_REG_BLE_TESTPAT_GEN_Pos (9UL) /*!< PLLDIG RF_MGAIN_CTRL_BLE_REG: BLE_TESTPAT_GEN (Bit 9) */ -#define PLLDIG_RF_MGAIN_CTRL_BLE_REG_BLE_TESTPAT_GEN_Msk (0x200UL) /*!< PLLDIG RF_MGAIN_CTRL_BLE_REG: BLE_TESTPAT_GEN (Bitfield-Mask: 0x01) */ -#define PLLDIG_RF_MGAIN_CTRL_BLE_REG_MGAIN_CMP_INV_Pos (10UL) /*!< PLLDIG RF_MGAIN_CTRL_BLE_REG: MGAIN_CMP_INV (Bit 10) */ -#define PLLDIG_RF_MGAIN_CTRL_BLE_REG_MGAIN_CMP_INV_Msk (0x400UL) /*!< PLLDIG RF_MGAIN_CTRL_BLE_REG: MGAIN_CMP_INV (Bitfield-Mask: 0x01) */ -#define PLLDIG_RF_MGAIN_CTRL_BLE_REG_MGAIN_AVER_Pos (11UL) /*!< PLLDIG RF_MGAIN_CTRL_BLE_REG: MGAIN_AVER (Bit 11) */ -#define PLLDIG_RF_MGAIN_CTRL_BLE_REG_MGAIN_AVER_Msk (0x1800UL) /*!< PLLDIG RF_MGAIN_CTRL_BLE_REG: MGAIN_AVER (Bitfield-Mask: 0x03) */ - -/* ------------------------ PLLDIG_RF_MGAIN_CTRL_FTDF_REG ----------------------- */ -#define PLLDIG_RF_MGAIN_CTRL_FTDF_REG_MSK_GAIN_WR_Pos (0UL) /*!< PLLDIG RF_MGAIN_CTRL_FTDF_REG: MSK_GAIN_WR (Bit 0) */ -#define PLLDIG_RF_MGAIN_CTRL_FTDF_REG_MSK_GAIN_WR_Msk (0x7fUL) /*!< PLLDIG RF_MGAIN_CTRL_FTDF_REG: MSK_GAIN_WR (Bitfield-Mask: 0x7f) */ -#define PLLDIG_RF_MGAIN_CTRL_FTDF_REG_MSK_GAIN_SEL_Pos (7UL) /*!< PLLDIG RF_MGAIN_CTRL_FTDF_REG: MSK_GAIN_SEL (Bit 7) */ -#define PLLDIG_RF_MGAIN_CTRL_FTDF_REG_MSK_GAIN_SEL_Msk (0x80UL) /*!< PLLDIG RF_MGAIN_CTRL_FTDF_REG: MSK_GAIN_SEL (Bitfield-Mask: 0x01) */ -#define PLLDIG_RF_MGAIN_CTRL_FTDF_REG_MSK_GAIN_OFFSET_Pos (8UL) /*!< PLLDIG RF_MGAIN_CTRL_FTDF_REG: MSK_GAIN_OFFSET (Bit 8) */ -#define PLLDIG_RF_MGAIN_CTRL_FTDF_REG_MSK_GAIN_OFFSET_Msk (0xff00UL) /*!< PLLDIG RF_MGAIN_CTRL_FTDF_REG: MSK_GAIN_OFFSET (Bitfield-Mask: 0xff) */ - -/* -------------------------- PLLDIG_RF_MGAIN_CTRL2_REG ------------------------- */ -#define PLLDIG_RF_MGAIN_CTRL2_REG_MGAIN_TRANSMIT_LENGTH_Pos (0UL) /*!< PLLDIG RF_MGAIN_CTRL2_REG: MGAIN_TRANSMIT_LENGTH (Bit 0) */ -#define PLLDIG_RF_MGAIN_CTRL2_REG_MGAIN_TRANSMIT_LENGTH_Msk (0x7fUL) /*!< PLLDIG RF_MGAIN_CTRL2_REG: MGAIN_TRANSMIT_LENGTH (Bitfield-Mask: 0x7f) */ -#define PLLDIG_RF_MGAIN_CTRL2_REG_MGAIN_MODE_SEL_Pos (7UL) /*!< PLLDIG RF_MGAIN_CTRL2_REG: MGAIN_MODE_SEL (Bit 7) */ -#define PLLDIG_RF_MGAIN_CTRL2_REG_MGAIN_MODE_SEL_Msk (0x80UL) /*!< PLLDIG RF_MGAIN_CTRL2_REG: MGAIN_MODE_SEL (Bitfield-Mask: 0x01) */ -#define PLLDIG_RF_MGAIN_CTRL2_REG_MSK_GAINCAL_LONG_Pos (8UL) /*!< PLLDIG RF_MGAIN_CTRL2_REG: MSK_GAINCAL_LONG (Bit 8) */ -#define PLLDIG_RF_MGAIN_CTRL2_REG_MSK_GAINCAL_LONG_Msk (0x100UL) /*!< PLLDIG RF_MGAIN_CTRL2_REG: MSK_GAINCAL_LONG (Bitfield-Mask: 0x01) */ - -/* ----------------------- PLLDIG_RF_VCO_CALCAP_BIT14_REG ----------------------- */ -#define PLLDIG_RF_VCO_CALCAP_BIT14_REG_VCO_CALCAP_BIT14_Pos (0UL) /*!< PLLDIG RF_VCO_CALCAP_BIT14_REG: VCO_CALCAP_BIT14 (Bit 0) */ -#define PLLDIG_RF_VCO_CALCAP_BIT14_REG_VCO_CALCAP_BIT14_Msk (0xffffUL) /*!< PLLDIG RF_VCO_CALCAP_BIT14_REG: VCO_CALCAP_BIT14 (Bitfield-Mask: 0xffff) */ - -/* ----------------------- PLLDIG_RF_VCO_CALCAP_BIT15_REG ----------------------- */ -#define PLLDIG_RF_VCO_CALCAP_BIT15_REG_VCO_CALCAP_BIT15_Pos (0UL) /*!< PLLDIG RF_VCO_CALCAP_BIT15_REG: VCO_CALCAP_BIT15 (Bit 0) */ -#define PLLDIG_RF_VCO_CALCAP_BIT15_REG_VCO_CALCAP_BIT15_Msk (0xffffUL) /*!< PLLDIG RF_VCO_CALCAP_BIT15_REG: VCO_CALCAP_BIT15 (Bitfield-Mask: 0xffff) */ - -/* ----------------------------- PLLDIG_RF_BMCW_REG ----------------------------- */ -#define PLLDIG_RF_BMCW_REG_CN_WR_Pos (0UL) /*!< PLLDIG RF_BMCW_REG: CN_WR (Bit 0) */ -#define PLLDIG_RF_BMCW_REG_CN_WR_Msk (0x3fUL) /*!< PLLDIG RF_BMCW_REG: CN_WR (Bitfield-Mask: 0x3f) */ -#define PLLDIG_RF_BMCW_REG_HSI_WR_Pos (6UL) /*!< PLLDIG RF_BMCW_REG: HSI_WR (Bit 6) */ -#define PLLDIG_RF_BMCW_REG_HSI_WR_Msk (0x40UL) /*!< PLLDIG RF_BMCW_REG: HSI_WR (Bitfield-Mask: 0x01) */ -#define PLLDIG_RF_BMCW_REG_CN_SEL_Pos (7UL) /*!< PLLDIG RF_BMCW_REG: CN_SEL (Bit 7) */ -#define PLLDIG_RF_BMCW_REG_CN_SEL_Msk (0x80UL) /*!< PLLDIG RF_BMCW_REG: CN_SEL (Bitfield-Mask: 0x01) */ -#define PLLDIG_RF_BMCW_REG_HSI_SEL_Pos (8UL) /*!< PLLDIG RF_BMCW_REG: HSI_SEL (Bit 8) */ -#define PLLDIG_RF_BMCW_REG_HSI_SEL_Msk (0x100UL) /*!< PLLDIG RF_BMCW_REG: HSI_SEL (Bitfield-Mask: 0x01) */ - -/* ------------------------ PLLDIG_RF_KMOD_ALPHA_BLE_REG ------------------------ */ -#define PLLDIG_RF_KMOD_ALPHA_BLE_REG_KMOD_ALPHA_GAUSSDAC_Pos (0UL) /*!< PLLDIG RF_KMOD_ALPHA_BLE_REG: KMOD_ALPHA_GAUSSDAC (Bit 0) */ -#define PLLDIG_RF_KMOD_ALPHA_BLE_REG_KMOD_ALPHA_GAUSSDAC_Msk (0x3fUL) /*!< PLLDIG RF_KMOD_ALPHA_BLE_REG: KMOD_ALPHA_GAUSSDAC (Bitfield-Mask: 0x3f) */ -#define PLLDIG_RF_KMOD_ALPHA_BLE_REG_KMOD_ALPHA_TXDAC_Pos (6UL) /*!< PLLDIG RF_KMOD_ALPHA_BLE_REG: KMOD_ALPHA_TXDAC (Bit 6) */ -#define PLLDIG_RF_KMOD_ALPHA_BLE_REG_KMOD_ALPHA_TXDAC_Msk (0xfc0UL) /*!< PLLDIG RF_KMOD_ALPHA_BLE_REG: KMOD_ALPHA_TXDAC (Bitfield-Mask: 0x3f) */ - -/* ------------------------ PLLDIG_RF_KMOD_ALPHA_FTDF_REG ----------------------- */ -#define PLLDIG_RF_KMOD_ALPHA_FTDF_REG_KMOD_ALPHA_FTDF_Pos (0UL) /*!< PLLDIG RF_KMOD_ALPHA_FTDF_REG: KMOD_ALPHA_FTDF (Bit 0) */ -#define PLLDIG_RF_KMOD_ALPHA_FTDF_REG_KMOD_ALPHA_FTDF_Msk (0x3fUL) /*!< PLLDIG RF_KMOD_ALPHA_FTDF_REG: KMOD_ALPHA_FTDF (Bitfield-Mask: 0x3f) */ - -/* ----------------------- PLLDIG_RF_SYNTH_RESULT_BLE_REG ----------------------- */ -#define PLLDIG_RF_SYNTH_RESULT_BLE_REG_GAUSS_GAIN_CAL_RD_Pos (0UL) /*!< PLLDIG RF_SYNTH_RESULT_BLE_REG: GAUSS_GAIN_CAL_RD (Bit 0) */ -#define PLLDIG_RF_SYNTH_RESULT_BLE_REG_GAUSS_GAIN_CAL_RD_Msk (0xffUL) /*!< PLLDIG RF_SYNTH_RESULT_BLE_REG: GAUSS_GAIN_CAL_RD (Bitfield-Mask: 0xff) */ -#define PLLDIG_RF_SYNTH_RESULT_BLE_REG_VCO_FREQTRIM_RD_Pos (8UL) /*!< PLLDIG RF_SYNTH_RESULT_BLE_REG: VCO_FREQTRIM_RD (Bit 8) */ -#define PLLDIG_RF_SYNTH_RESULT_BLE_REG_VCO_FREQTRIM_RD_Msk (0xf00UL) /*!< PLLDIG RF_SYNTH_RESULT_BLE_REG: VCO_FREQTRIM_RD (Bitfield-Mask: 0x0f) */ - -/* ----------------------- PLLDIG_RF_SYNTH_RESULT_FTDF_REG ---------------------- */ -#define PLLDIG_RF_SYNTH_RESULT_FTDF_REG_MSK_GAIN_CAL_RD_Pos (0UL) /*!< PLLDIG RF_SYNTH_RESULT_FTDF_REG: MSK_GAIN_CAL_RD (Bit 0) */ -#define PLLDIG_RF_SYNTH_RESULT_FTDF_REG_MSK_GAIN_CAL_RD_Msk (0x7fUL) /*!< PLLDIG RF_SYNTH_RESULT_FTDF_REG: MSK_GAIN_CAL_RD (Bitfield-Mask: 0x7f) */ - -/* ----------------------- PLLDIG_RF_SYNTH_RESULT2_BLE_REG ---------------------- */ -#define PLLDIG_RF_SYNTH_RESULT2_BLE_REG_GAUSS_GAIN_RD_Pos (0UL) /*!< PLLDIG RF_SYNTH_RESULT2_BLE_REG: GAUSS_GAIN_RD (Bit 0) */ -#define PLLDIG_RF_SYNTH_RESULT2_BLE_REG_GAUSS_GAIN_RD_Msk (0xffUL) /*!< PLLDIG RF_SYNTH_RESULT2_BLE_REG: GAUSS_GAIN_RD (Bitfield-Mask: 0xff) */ -#define PLLDIG_RF_SYNTH_RESULT2_BLE_REG_CN_CAL_RD_Pos (8UL) /*!< PLLDIG RF_SYNTH_RESULT2_BLE_REG: CN_CAL_RD (Bit 8) */ -#define PLLDIG_RF_SYNTH_RESULT2_BLE_REG_CN_CAL_RD_Msk (0x3f00UL) /*!< PLLDIG RF_SYNTH_RESULT2_BLE_REG: CN_CAL_RD (Bitfield-Mask: 0x3f) */ - -/* ---------------------- PLLDIG_RF_SYNTH_RESULT2_FTDF_REG ---------------------- */ -#define PLLDIG_RF_SYNTH_RESULT2_FTDF_REG_MSK_GAIN_RD_Pos (0UL) /*!< PLLDIG RF_SYNTH_RESULT2_FTDF_REG: MSK_GAIN_RD (Bit 0) */ -#define PLLDIG_RF_SYNTH_RESULT2_FTDF_REG_MSK_GAIN_RD_Msk (0xffUL) /*!< PLLDIG RF_SYNTH_RESULT2_FTDF_REG: MSK_GAIN_RD (Bitfield-Mask: 0xff) */ - -/* ---------------------- PLLDIG_RF_SYNTH_RESULT3_FTDF_REG ---------------------- */ -#define PLLDIG_RF_SYNTH_RESULT3_FTDF_REG_CN_CAL_FTDF_RD_Pos (0UL) /*!< PLLDIG RF_SYNTH_RESULT3_FTDF_REG: CN_CAL_FTDF_RD (Bit 0) */ -#define PLLDIG_RF_SYNTH_RESULT3_FTDF_REG_CN_CAL_FTDF_RD_Msk (0x3fUL) /*!< PLLDIG RF_SYNTH_RESULT3_FTDF_REG: CN_CAL_FTDF_RD (Bitfield-Mask: 0x3f) */ - -/* ---------------------------- PLLDIG_RF_CALCAP1_REG --------------------------- */ -#define PLLDIG_RF_CALCAP1_REG_VCO_CALCAP_LOW_Pos (0UL) /*!< PLLDIG RF_CALCAP1_REG: VCO_CALCAP_LOW (Bit 0) */ -#define PLLDIG_RF_CALCAP1_REG_VCO_CALCAP_LOW_Msk (0xffffUL) /*!< PLLDIG RF_CALCAP1_REG: VCO_CALCAP_LOW (Bitfield-Mask: 0xffff) */ - -/* ---------------------------- PLLDIG_RF_CALCAP2_REG --------------------------- */ -#define PLLDIG_RF_CALCAP2_REG_VCO_CALCAP_HIGH_Pos (0UL) /*!< PLLDIG RF_CALCAP2_REG: VCO_CALCAP_HIGH (Bit 0) */ -#define PLLDIG_RF_CALCAP2_REG_VCO_CALCAP_HIGH_Msk (0x3UL) /*!< PLLDIG RF_CALCAP2_REG: VCO_CALCAP_HIGH (Bitfield-Mask: 0x03) */ - -/* -------------------------- PLLDIG_RF_NMD_OFFSET_REG -------------------------- */ -#define PLLDIG_RF_NMD_OFFSET_REG_NMD_OFFSET_XTAL16M_Pos (0UL) /*!< PLLDIG RF_NMD_OFFSET_REG: NMD_OFFSET_XTAL16M (Bit 0) */ -#define PLLDIG_RF_NMD_OFFSET_REG_NMD_OFFSET_XTAL16M_Msk (0xffUL) /*!< PLLDIG RF_NMD_OFFSET_REG: NMD_OFFSET_XTAL16M (Bitfield-Mask: 0xff) */ -#define PLLDIG_RF_NMD_OFFSET_REG_NMD_OFFSET_PLL96M_Pos (8UL) /*!< PLLDIG RF_NMD_OFFSET_REG: NMD_OFFSET_PLL96M (Bit 8) */ -#define PLLDIG_RF_NMD_OFFSET_REG_NMD_OFFSET_PLL96M_Msk (0xff00UL) /*!< PLLDIG RF_NMD_OFFSET_REG: NMD_OFFSET_PLL96M (Bitfield-Mask: 0xff) */ - -/* ------------------------- PLLDIG_RF_FTDF_PHYATTR_REG ------------------------- */ -#define PLLDIG_RF_FTDF_PHYATTR_REG_FTDF_PHYATTR_Pos (0UL) /*!< PLLDIG RF_FTDF_PHYATTR_REG: FTDF_PHYATTR (Bit 0) */ -#define PLLDIG_RF_FTDF_PHYATTR_REG_FTDF_PHYATTR_Msk (0xffffUL) /*!< PLLDIG RF_FTDF_PHYATTR_REG: FTDF_PHYATTR (Bitfield-Mask: 0xffff) */ - -/* ------------------------- PLLDIG_RF_CALTRIM_STEP1_REG ------------------------ */ -#define PLLDIG_RF_CALTRIM_STEP1_REG_MDSTATE_RD_Pos (0UL) /*!< PLLDIG RF_CALTRIM_STEP1_REG: MDSTATE_RD (Bit 0) */ -#define PLLDIG_RF_CALTRIM_STEP1_REG_MDSTATE_RD_Msk (0xffffUL) /*!< PLLDIG RF_CALTRIM_STEP1_REG: MDSTATE_RD (Bitfield-Mask: 0xffff) */ - -/* ------------------------- PLLDIG_RF_CALTRIM_STEP2_REG ------------------------ */ -#define PLLDIG_RF_CALTRIM_STEP2_REG_MDSTATE_RD_Pos (0UL) /*!< PLLDIG RF_CALTRIM_STEP2_REG: MDSTATE_RD (Bit 0) */ -#define PLLDIG_RF_CALTRIM_STEP2_REG_MDSTATE_RD_Msk (0xffffUL) /*!< PLLDIG RF_CALTRIM_STEP2_REG: MDSTATE_RD (Bitfield-Mask: 0xffff) */ - -/* ------------------------- PLLDIG_RF_CALTRIM_STEP3_REG ------------------------ */ -#define PLLDIG_RF_CALTRIM_STEP3_REG_MDSTATE_RD_Pos (0UL) /*!< PLLDIG RF_CALTRIM_STEP3_REG: MDSTATE_RD (Bit 0) */ -#define PLLDIG_RF_CALTRIM_STEP3_REG_MDSTATE_RD_Msk (0xffffUL) /*!< PLLDIG RF_CALTRIM_STEP3_REG: MDSTATE_RD (Bitfield-Mask: 0xffff) */ - -/* ------------------------- PLLDIG_RF_CALTRIM_STEP4_REG ------------------------ */ -#define PLLDIG_RF_CALTRIM_STEP4_REG_MDSTATE_RD_Pos (0UL) /*!< PLLDIG RF_CALTRIM_STEP4_REG: MDSTATE_RD (Bit 0) */ -#define PLLDIG_RF_CALTRIM_STEP4_REG_MDSTATE_RD_Msk (0xffffUL) /*!< PLLDIG RF_CALTRIM_STEP4_REG: MDSTATE_RD (Bitfield-Mask: 0xffff) */ - -/* -------------------------- PLLDIG_RF_MGAIN_CTRL3_REG ------------------------- */ -#define PLLDIG_RF_MGAIN_CTRL3_REG_GFSK_GAIN_OFFSET_Pos (0UL) /*!< PLLDIG RF_MGAIN_CTRL3_REG: GFSK_GAIN_OFFSET (Bit 0) */ -#define PLLDIG_RF_MGAIN_CTRL3_REG_GFSK_GAIN_OFFSET_Msk (0xffUL) /*!< PLLDIG RF_MGAIN_CTRL3_REG: GFSK_GAIN_OFFSET (Bitfield-Mask: 0xff) */ - -/* ------------------------- PLLDIG_RF_VCO_FREQ_EST_REG ------------------------- */ -#define PLLDIG_RF_VCO_FREQ_EST_REG_VCO_FREQ_EST_EN_Pos (0UL) /*!< PLLDIG RF_VCO_FREQ_EST_REG: VCO_FREQ_EST_EN (Bit 0) */ -#define PLLDIG_RF_VCO_FREQ_EST_REG_VCO_FREQ_EST_EN_Msk (0x1UL) /*!< PLLDIG RF_VCO_FREQ_EST_REG: VCO_FREQ_EST_EN (Bitfield-Mask: 0x01) */ -#define PLLDIG_RF_VCO_FREQ_EST_REG_VCO_FREQ_EST_LEN_Pos (1UL) /*!< PLLDIG RF_VCO_FREQ_EST_REG: VCO_FREQ_EST_LEN (Bit 1) */ -#define PLLDIG_RF_VCO_FREQ_EST_REG_VCO_FREQ_EST_LEN_Msk (0xfeUL) /*!< PLLDIG RF_VCO_FREQ_EST_REG: VCO_FREQ_EST_LEN (Bitfield-Mask: 0x7f) */ -#define PLLDIG_RF_VCO_FREQ_EST_REG_VCO_FREQ_EST_UPPER_RD_Pos (8UL) /*!< PLLDIG RF_VCO_FREQ_EST_REG: VCO_FREQ_EST_UPPER_RD (Bit 8) */ -#define PLLDIG_RF_VCO_FREQ_EST_REG_VCO_FREQ_EST_UPPER_RD_Msk (0x700UL) /*!< PLLDIG RF_VCO_FREQ_EST_REG: VCO_FREQ_EST_UPPER_RD (Bitfield-Mask: 0x07) */ - -/* -------------------------- PLLDIG_RF_SYNTH_SPARE_REG ------------------------- */ -#define PLLDIG_RF_SYNTH_SPARE_REG_SPARE_Pos (0UL) /*!< PLLDIG RF_SYNTH_SPARE_REG: SPARE (Bit 0) */ -#define PLLDIG_RF_SYNTH_SPARE_REG_SPARE_Msk (0xffUL) /*!< PLLDIG RF_SYNTH_SPARE_REG: SPARE (Bitfield-Mask: 0xff) */ - -/* ------------------------- PLLDIG_RF_MSKMOD_CTRL1_REG ------------------------- */ -#define PLLDIG_RF_MSKMOD_CTRL1_REG_TX_DATA_Pos (0UL) /*!< PLLDIG RF_MSKMOD_CTRL1_REG: TX_DATA (Bit 0) */ -#define PLLDIG_RF_MSKMOD_CTRL1_REG_TX_DATA_Msk (0xfUL) /*!< PLLDIG RF_MSKMOD_CTRL1_REG: TX_DATA (Bitfield-Mask: 0x0f) */ -#define PLLDIG_RF_MSKMOD_CTRL1_REG_TX_VALID_Pos (4UL) /*!< PLLDIG RF_MSKMOD_CTRL1_REG: TX_VALID (Bit 4) */ -#define PLLDIG_RF_MSKMOD_CTRL1_REG_TX_VALID_Msk (0x10UL) /*!< PLLDIG RF_MSKMOD_CTRL1_REG: TX_VALID (Bitfield-Mask: 0x01) */ -#define PLLDIG_RF_MSKMOD_CTRL1_REG_MSK_TX_SEL_Pos (5UL) /*!< PLLDIG RF_MSKMOD_CTRL1_REG: MSK_TX_SEL (Bit 5) */ -#define PLLDIG_RF_MSKMOD_CTRL1_REG_MSK_TX_SEL_Msk (0x20UL) /*!< PLLDIG RF_MSKMOD_CTRL1_REG: MSK_TX_SEL (Bitfield-Mask: 0x01) */ -#define PLLDIG_RF_MSKMOD_CTRL1_REG_MSK_ALW_EN_Pos (6UL) /*!< PLLDIG RF_MSKMOD_CTRL1_REG: MSK_ALW_EN (Bit 6) */ -#define PLLDIG_RF_MSKMOD_CTRL1_REG_MSK_ALW_EN_Msk (0x40UL) /*!< PLLDIG RF_MSKMOD_CTRL1_REG: MSK_ALW_EN (Bitfield-Mask: 0x01) */ -#define PLLDIG_RF_MSKMOD_CTRL1_REG_TX_MOD_FROM_GPIO_Pos (7UL) /*!< PLLDIG RF_MSKMOD_CTRL1_REG: TX_MOD_FROM_GPIO (Bit 7) */ -#define PLLDIG_RF_MSKMOD_CTRL1_REG_TX_MOD_FROM_GPIO_Msk (0x80UL) /*!< PLLDIG RF_MSKMOD_CTRL1_REG: TX_MOD_FROM_GPIO (Bitfield-Mask: 0x01) */ -#define PLLDIG_RF_MSKMOD_CTRL1_REG_MSK_BYPASS_PHASE_Pos (8UL) /*!< PLLDIG RF_MSKMOD_CTRL1_REG: MSK_BYPASS_PHASE (Bit 8) */ -#define PLLDIG_RF_MSKMOD_CTRL1_REG_MSK_BYPASS_PHASE_Msk (0x100UL) /*!< PLLDIG RF_MSKMOD_CTRL1_REG: MSK_BYPASS_PHASE (Bitfield-Mask: 0x01) */ - -/* ------------------------- PLLDIG_RF_MSKMOD_CHIPL_REG ------------------------- */ -#define PLLDIG_RF_MSKMOD_CHIPL_REG_MSK_CHIPL_Pos (0UL) /*!< PLLDIG RF_MSKMOD_CHIPL_REG: MSK_CHIPL (Bit 0) */ -#define PLLDIG_RF_MSKMOD_CHIPL_REG_MSK_CHIPL_Msk (0xffffUL) /*!< PLLDIG RF_MSKMOD_CHIPL_REG: MSK_CHIPL (Bitfield-Mask: 0xffff) */ - -/* ------------------------- PLLDIG_RF_MSKMOD_CHIPH_REG ------------------------- */ -#define PLLDIG_RF_MSKMOD_CHIPH_REG_MSK_CHIPH_Pos (0UL) /*!< PLLDIG RF_MSKMOD_CHIPH_REG: MSK_CHIPH (Bit 0) */ -#define PLLDIG_RF_MSKMOD_CHIPH_REG_MSK_CHIPH_Msk (0xffffUL) /*!< PLLDIG RF_MSKMOD_CHIPH_REG: MSK_CHIPH (Bitfield-Mask: 0xffff) */ - -/* -------------------------- PLLDIG_RF_TXDAC_TEST_REG -------------------------- */ -#define PLLDIG_RF_TXDAC_TEST_REG_RF_TXDAC_TEST_WR_Pos (0UL) /*!< PLLDIG RF_TXDAC_TEST_REG: RF_TXDAC_TEST_WR (Bit 0) */ -#define PLLDIG_RF_TXDAC_TEST_REG_RF_TXDAC_TEST_WR_Msk (0xffUL) /*!< PLLDIG RF_TXDAC_TEST_REG: RF_TXDAC_TEST_WR (Bitfield-Mask: 0xff) */ -#define PLLDIG_RF_TXDAC_TEST_REG_RF_TXDAC_TEST_SEL_Pos (8UL) /*!< PLLDIG RF_TXDAC_TEST_REG: RF_TXDAC_TEST_SEL (Bit 8) */ -#define PLLDIG_RF_TXDAC_TEST_REG_RF_TXDAC_TEST_SEL_Msk (0x100UL) /*!< PLLDIG RF_TXDAC_TEST_REG: RF_TXDAC_TEST_SEL (Bitfield-Mask: 0x01) */ - -/* ------------------------ PLLDIG_RF_MGAIN_COMP_VAL0_REG ----------------------- */ -#define PLLDIG_RF_MGAIN_COMP_VAL0_REG_MGAIN_COMP_VAL_Pos (0UL) /*!< PLLDIG RF_MGAIN_COMP_VAL0_REG: MGAIN_COMP_VAL (Bit 0) */ -#define PLLDIG_RF_MGAIN_COMP_VAL0_REG_MGAIN_COMP_VAL_Msk (0x1fUL) /*!< PLLDIG RF_MGAIN_COMP_VAL0_REG: MGAIN_COMP_VAL (Bitfield-Mask: 0x1f) */ - -/* ------------------------ PLLDIG_RF_MGAIN_COMP_VAL1_REG ----------------------- */ -#define PLLDIG_RF_MGAIN_COMP_VAL1_REG_MGAIN_COMP_VAL_Pos (0UL) /*!< PLLDIG RF_MGAIN_COMP_VAL1_REG: MGAIN_COMP_VAL (Bit 0) */ -#define PLLDIG_RF_MGAIN_COMP_VAL1_REG_MGAIN_COMP_VAL_Msk (0x1fUL) /*!< PLLDIG RF_MGAIN_COMP_VAL1_REG: MGAIN_COMP_VAL (Bitfield-Mask: 0x1f) */ - -/* ------------------------ PLLDIG_RF_MGAIN_COMP_VAL2_REG ----------------------- */ -#define PLLDIG_RF_MGAIN_COMP_VAL2_REG_MGAIN_COMP_VAL_Pos (0UL) /*!< PLLDIG RF_MGAIN_COMP_VAL2_REG: MGAIN_COMP_VAL (Bit 0) */ -#define PLLDIG_RF_MGAIN_COMP_VAL2_REG_MGAIN_COMP_VAL_Msk (0x1fUL) /*!< PLLDIG RF_MGAIN_COMP_VAL2_REG: MGAIN_COMP_VAL (Bitfield-Mask: 0x1f) */ - -/* ------------------------ PLLDIG_RF_MGAIN_COMP_VAL3_REG ----------------------- */ -#define PLLDIG_RF_MGAIN_COMP_VAL3_REG_MGAIN_COMP_VAL_Pos (0UL) /*!< PLLDIG RF_MGAIN_COMP_VAL3_REG: MGAIN_COMP_VAL (Bit 0) */ -#define PLLDIG_RF_MGAIN_COMP_VAL3_REG_MGAIN_COMP_VAL_Msk (0x1fUL) /*!< PLLDIG RF_MGAIN_COMP_VAL3_REG: MGAIN_COMP_VAL (Bitfield-Mask: 0x1f) */ - -/* ------------------------ PLLDIG_RF_MGAIN_COMP_VAL4_REG ----------------------- */ -#define PLLDIG_RF_MGAIN_COMP_VAL4_REG_MGAIN_COMP_VAL_Pos (0UL) /*!< PLLDIG RF_MGAIN_COMP_VAL4_REG: MGAIN_COMP_VAL (Bit 0) */ -#define PLLDIG_RF_MGAIN_COMP_VAL4_REG_MGAIN_COMP_VAL_Msk (0x1fUL) /*!< PLLDIG RF_MGAIN_COMP_VAL4_REG: MGAIN_COMP_VAL (Bitfield-Mask: 0x1f) */ - -/* ------------------------ PLLDIG_RF_MGAIN_COMP_VAL5_REG ----------------------- */ -#define PLLDIG_RF_MGAIN_COMP_VAL5_REG_MGAIN_COMP_VAL_Pos (0UL) /*!< PLLDIG RF_MGAIN_COMP_VAL5_REG: MGAIN_COMP_VAL (Bit 0) */ -#define PLLDIG_RF_MGAIN_COMP_VAL5_REG_MGAIN_COMP_VAL_Msk (0x1fUL) /*!< PLLDIG RF_MGAIN_COMP_VAL5_REG: MGAIN_COMP_VAL (Bitfield-Mask: 0x1f) */ - -/* ------------------------ PLLDIG_RF_MGAIN_COMP_VAL6_REG ----------------------- */ -#define PLLDIG_RF_MGAIN_COMP_VAL6_REG_MGAIN_COMP_VAL_Pos (0UL) /*!< PLLDIG RF_MGAIN_COMP_VAL6_REG: MGAIN_COMP_VAL (Bit 0) */ -#define PLLDIG_RF_MGAIN_COMP_VAL6_REG_MGAIN_COMP_VAL_Msk (0x1fUL) /*!< PLLDIG RF_MGAIN_COMP_VAL6_REG: MGAIN_COMP_VAL (Bitfield-Mask: 0x1f) */ - -/* ------------------------ PLLDIG_RF_MGAIN_COMP_VAL7_REG ----------------------- */ -#define PLLDIG_RF_MGAIN_COMP_VAL7_REG_MGAIN_COMP_VAL_Pos (0UL) /*!< PLLDIG RF_MGAIN_COMP_VAL7_REG: MGAIN_COMP_VAL (Bit 0) */ -#define PLLDIG_RF_MGAIN_COMP_VAL7_REG_MGAIN_COMP_VAL_Msk (0x1fUL) /*!< PLLDIG RF_MGAIN_COMP_VAL7_REG: MGAIN_COMP_VAL (Bitfield-Mask: 0x1f) */ - -/* -------------------------- PLLDIG_RF_PULSE_TBL_0_REG ------------------------- */ -#define PLLDIG_RF_PULSE_TBL_0_REG_FTDF_PULSE_VAL_Pos (0UL) /*!< PLLDIG RF_PULSE_TBL_0_REG: FTDF_PULSE_VAL (Bit 0) */ -#define PLLDIG_RF_PULSE_TBL_0_REG_FTDF_PULSE_VAL_Msk (0x7ffUL) /*!< PLLDIG RF_PULSE_TBL_0_REG: FTDF_PULSE_VAL (Bitfield-Mask: 0x7ff) */ - -/* -------------------------- PLLDIG_RF_PULSE_TBL_1_REG ------------------------- */ -#define PLLDIG_RF_PULSE_TBL_1_REG_FTDF_PULSE_VAL_Pos (0UL) /*!< PLLDIG RF_PULSE_TBL_1_REG: FTDF_PULSE_VAL (Bit 0) */ -#define PLLDIG_RF_PULSE_TBL_1_REG_FTDF_PULSE_VAL_Msk (0x7ffUL) /*!< PLLDIG RF_PULSE_TBL_1_REG: FTDF_PULSE_VAL (Bitfield-Mask: 0x7ff) */ - -/* -------------------------- PLLDIG_RF_PULSE_TBL_2_REG ------------------------- */ -#define PLLDIG_RF_PULSE_TBL_2_REG_FTDF_PULSE_VAL_Pos (0UL) /*!< PLLDIG RF_PULSE_TBL_2_REG: FTDF_PULSE_VAL (Bit 0) */ -#define PLLDIG_RF_PULSE_TBL_2_REG_FTDF_PULSE_VAL_Msk (0x7ffUL) /*!< PLLDIG RF_PULSE_TBL_2_REG: FTDF_PULSE_VAL (Bitfield-Mask: 0x7ff) */ - -/* -------------------------- PLLDIG_RF_PULSE_TBL_3_REG ------------------------- */ -#define PLLDIG_RF_PULSE_TBL_3_REG_FTDF_PULSE_VAL_Pos (0UL) /*!< PLLDIG RF_PULSE_TBL_3_REG: FTDF_PULSE_VAL (Bit 0) */ -#define PLLDIG_RF_PULSE_TBL_3_REG_FTDF_PULSE_VAL_Msk (0x7ffUL) /*!< PLLDIG RF_PULSE_TBL_3_REG: FTDF_PULSE_VAL (Bitfield-Mask: 0x7ff) */ - -/* -------------------------- PLLDIG_RF_PULSE_TBL_4_REG ------------------------- */ -#define PLLDIG_RF_PULSE_TBL_4_REG_FTDF_PULSE_VAL_Pos (0UL) /*!< PLLDIG RF_PULSE_TBL_4_REG: FTDF_PULSE_VAL (Bit 0) */ -#define PLLDIG_RF_PULSE_TBL_4_REG_FTDF_PULSE_VAL_Msk (0x7ffUL) /*!< PLLDIG RF_PULSE_TBL_4_REG: FTDF_PULSE_VAL (Bitfield-Mask: 0x7ff) */ - -/* -------------------------- PLLDIG_RF_PULSE_TBL_5_REG ------------------------- */ -#define PLLDIG_RF_PULSE_TBL_5_REG_FTDF_PULSE_VAL_Pos (0UL) /*!< PLLDIG RF_PULSE_TBL_5_REG: FTDF_PULSE_VAL (Bit 0) */ -#define PLLDIG_RF_PULSE_TBL_5_REG_FTDF_PULSE_VAL_Msk (0x7ffUL) /*!< PLLDIG RF_PULSE_TBL_5_REG: FTDF_PULSE_VAL (Bitfield-Mask: 0x7ff) */ - -/* -------------------------- PLLDIG_RF_PULSE_TBL_6_REG ------------------------- */ -#define PLLDIG_RF_PULSE_TBL_6_REG_FTDF_PULSE_VAL_Pos (0UL) /*!< PLLDIG RF_PULSE_TBL_6_REG: FTDF_PULSE_VAL (Bit 0) */ -#define PLLDIG_RF_PULSE_TBL_6_REG_FTDF_PULSE_VAL_Msk (0x7ffUL) /*!< PLLDIG RF_PULSE_TBL_6_REG: FTDF_PULSE_VAL (Bitfield-Mask: 0x7ff) */ - -/* -------------------------- PLLDIG_RF_PULSE_TBL_7_REG ------------------------- */ -#define PLLDIG_RF_PULSE_TBL_7_REG_FTDF_PULSE_VAL_Pos (0UL) /*!< PLLDIG RF_PULSE_TBL_7_REG: FTDF_PULSE_VAL (Bit 0) */ -#define PLLDIG_RF_PULSE_TBL_7_REG_FTDF_PULSE_VAL_Msk (0x7ffUL) /*!< PLLDIG RF_PULSE_TBL_7_REG: FTDF_PULSE_VAL (Bitfield-Mask: 0x7ff) */ - -/* -------------------------- PLLDIG_RF_PULSE_CTRL_REG -------------------------- */ -#define PLLDIG_RF_PULSE_CTRL_REG_FTDF_PULSE_SEL_Pos (0UL) /*!< PLLDIG RF_PULSE_CTRL_REG: FTDF_PULSE_SEL (Bit 0) */ -#define PLLDIG_RF_PULSE_CTRL_REG_FTDF_PULSE_SEL_Msk (0x1UL) /*!< PLLDIG RF_PULSE_CTRL_REG: FTDF_PULSE_SEL (Bitfield-Mask: 0x01) */ -#define PLLDIG_RF_PULSE_CTRL_REG_FTDF_PULSE_GATE_Pos (1UL) /*!< PLLDIG RF_PULSE_CTRL_REG: FTDF_PULSE_GATE (Bit 1) */ -#define PLLDIG_RF_PULSE_CTRL_REG_FTDF_PULSE_GATE_Msk (0x6UL) /*!< PLLDIG RF_PULSE_CTRL_REG: FTDF_PULSE_GATE (Bitfield-Mask: 0x03) */ -#define PLLDIG_RF_PULSE_CTRL_REG_FTDF_LOWPASS_EN_Pos (3UL) /*!< PLLDIG RF_PULSE_CTRL_REG: FTDF_LOWPASS_EN (Bit 3) */ -#define PLLDIG_RF_PULSE_CTRL_REG_FTDF_LOWPASS_EN_Msk (0x8UL) /*!< PLLDIG RF_PULSE_CTRL_REG: FTDF_LOWPASS_EN (Bitfield-Mask: 0x01) */ -#define PLLDIG_RF_PULSE_CTRL_REG_FTDF_PULSE_GAIN_Pos (4UL) /*!< PLLDIG RF_PULSE_CTRL_REG: FTDF_PULSE_GAIN (Bit 4) */ -#define PLLDIG_RF_PULSE_CTRL_REG_FTDF_PULSE_GAIN_Msk (0xf0UL) /*!< PLLDIG RF_PULSE_CTRL_REG: FTDF_PULSE_GAIN (Bitfield-Mask: 0x0f) */ - - -/* ================================================================================ */ -/* ================ struct 'QSPIC' Position & Mask ================ */ -/* ================================================================================ */ - - -/* --------------------------- QSPIC_QSPIC_CTRLBUS_REG -------------------------- */ -#define QSPIC_QSPIC_CTRLBUS_REG_QSPIC_SET_SINGLE_Pos (0UL) /*!< QSPIC QSPIC_CTRLBUS_REG: QSPIC_SET_SINGLE (Bit 0) */ -#define QSPIC_QSPIC_CTRLBUS_REG_QSPIC_SET_SINGLE_Msk (0x1UL) /*!< QSPIC QSPIC_CTRLBUS_REG: QSPIC_SET_SINGLE (Bitfield-Mask: 0x01) */ -#define QSPIC_QSPIC_CTRLBUS_REG_QSPIC_SET_DUAL_Pos (1UL) /*!< QSPIC QSPIC_CTRLBUS_REG: QSPIC_SET_DUAL (Bit 1) */ -#define QSPIC_QSPIC_CTRLBUS_REG_QSPIC_SET_DUAL_Msk (0x2UL) /*!< QSPIC QSPIC_CTRLBUS_REG: QSPIC_SET_DUAL (Bitfield-Mask: 0x01) */ -#define QSPIC_QSPIC_CTRLBUS_REG_QSPIC_SET_QUAD_Pos (2UL) /*!< QSPIC QSPIC_CTRLBUS_REG: QSPIC_SET_QUAD (Bit 2) */ -#define QSPIC_QSPIC_CTRLBUS_REG_QSPIC_SET_QUAD_Msk (0x4UL) /*!< QSPIC QSPIC_CTRLBUS_REG: QSPIC_SET_QUAD (Bitfield-Mask: 0x01) */ -#define QSPIC_QSPIC_CTRLBUS_REG_QSPIC_EN_CS_Pos (3UL) /*!< QSPIC QSPIC_CTRLBUS_REG: QSPIC_EN_CS (Bit 3) */ -#define QSPIC_QSPIC_CTRLBUS_REG_QSPIC_EN_CS_Msk (0x8UL) /*!< QSPIC QSPIC_CTRLBUS_REG: QSPIC_EN_CS (Bitfield-Mask: 0x01) */ -#define QSPIC_QSPIC_CTRLBUS_REG_QSPIC_DIS_CS_Pos (4UL) /*!< QSPIC QSPIC_CTRLBUS_REG: QSPIC_DIS_CS (Bit 4) */ -#define QSPIC_QSPIC_CTRLBUS_REG_QSPIC_DIS_CS_Msk (0x10UL) /*!< QSPIC QSPIC_CTRLBUS_REG: QSPIC_DIS_CS (Bitfield-Mask: 0x01) */ - -/* -------------------------- QSPIC_QSPIC_CTRLMODE_REG -------------------------- */ -#define QSPIC_QSPIC_CTRLMODE_REG_QSPIC_AUTO_MD_Pos (0UL) /*!< QSPIC QSPIC_CTRLMODE_REG: QSPIC_AUTO_MD (Bit 0) */ -#define QSPIC_QSPIC_CTRLMODE_REG_QSPIC_AUTO_MD_Msk (0x1UL) /*!< QSPIC QSPIC_CTRLMODE_REG: QSPIC_AUTO_MD (Bitfield-Mask: 0x01) */ -#define QSPIC_QSPIC_CTRLMODE_REG_QSPIC_CLK_MD_Pos (1UL) /*!< QSPIC QSPIC_CTRLMODE_REG: QSPIC_CLK_MD (Bit 1) */ -#define QSPIC_QSPIC_CTRLMODE_REG_QSPIC_CLK_MD_Msk (0x2UL) /*!< QSPIC QSPIC_CTRLMODE_REG: QSPIC_CLK_MD (Bitfield-Mask: 0x01) */ -#define QSPIC_QSPIC_CTRLMODE_REG_QSPIC_IO2_OEN_Pos (2UL) /*!< QSPIC QSPIC_CTRLMODE_REG: QSPIC_IO2_OEN (Bit 2) */ -#define QSPIC_QSPIC_CTRLMODE_REG_QSPIC_IO2_OEN_Msk (0x4UL) /*!< QSPIC QSPIC_CTRLMODE_REG: QSPIC_IO2_OEN (Bitfield-Mask: 0x01) */ -#define QSPIC_QSPIC_CTRLMODE_REG_QSPIC_IO3_OEN_Pos (3UL) /*!< QSPIC QSPIC_CTRLMODE_REG: QSPIC_IO3_OEN (Bit 3) */ -#define QSPIC_QSPIC_CTRLMODE_REG_QSPIC_IO3_OEN_Msk (0x8UL) /*!< QSPIC QSPIC_CTRLMODE_REG: QSPIC_IO3_OEN (Bitfield-Mask: 0x01) */ -#define QSPIC_QSPIC_CTRLMODE_REG_QSPIC_IO2_DAT_Pos (4UL) /*!< QSPIC QSPIC_CTRLMODE_REG: QSPIC_IO2_DAT (Bit 4) */ -#define QSPIC_QSPIC_CTRLMODE_REG_QSPIC_IO2_DAT_Msk (0x10UL) /*!< QSPIC QSPIC_CTRLMODE_REG: QSPIC_IO2_DAT (Bitfield-Mask: 0x01) */ -#define QSPIC_QSPIC_CTRLMODE_REG_QSPIC_IO3_DAT_Pos (5UL) /*!< QSPIC QSPIC_CTRLMODE_REG: QSPIC_IO3_DAT (Bit 5) */ -#define QSPIC_QSPIC_CTRLMODE_REG_QSPIC_IO3_DAT_Msk (0x20UL) /*!< QSPIC QSPIC_CTRLMODE_REG: QSPIC_IO3_DAT (Bitfield-Mask: 0x01) */ -#define QSPIC_QSPIC_CTRLMODE_REG_QSPIC_HRDY_MD_Pos (6UL) /*!< QSPIC QSPIC_CTRLMODE_REG: QSPIC_HRDY_MD (Bit 6) */ -#define QSPIC_QSPIC_CTRLMODE_REG_QSPIC_HRDY_MD_Msk (0x40UL) /*!< QSPIC QSPIC_CTRLMODE_REG: QSPIC_HRDY_MD (Bitfield-Mask: 0x01) */ -#define QSPIC_QSPIC_CTRLMODE_REG_QSPIC_RXD_NEG_Pos (7UL) /*!< QSPIC QSPIC_CTRLMODE_REG: QSPIC_RXD_NEG (Bit 7) */ -#define QSPIC_QSPIC_CTRLMODE_REG_QSPIC_RXD_NEG_Msk (0x80UL) /*!< QSPIC QSPIC_CTRLMODE_REG: QSPIC_RXD_NEG (Bitfield-Mask: 0x01) */ -#define QSPIC_QSPIC_CTRLMODE_REG_QSPIC_RPIPE_EN_Pos (8UL) /*!< QSPIC QSPIC_CTRLMODE_REG: QSPIC_RPIPE_EN (Bit 8) */ -#define QSPIC_QSPIC_CTRLMODE_REG_QSPIC_RPIPE_EN_Msk (0x100UL) /*!< QSPIC QSPIC_CTRLMODE_REG: QSPIC_RPIPE_EN (Bitfield-Mask: 0x01) */ -#define QSPIC_QSPIC_CTRLMODE_REG_QSPIC_PCLK_MD_Pos (9UL) /*!< QSPIC QSPIC_CTRLMODE_REG: QSPIC_PCLK_MD (Bit 9) */ -#define QSPIC_QSPIC_CTRLMODE_REG_QSPIC_PCLK_MD_Msk (0xe00UL) /*!< QSPIC QSPIC_CTRLMODE_REG: QSPIC_PCLK_MD (Bitfield-Mask: 0x07) */ -#define QSPIC_QSPIC_CTRLMODE_REG_QSPIC_FORCENSEQ_EN_Pos (12UL) /*!< QSPIC QSPIC_CTRLMODE_REG: QSPIC_FORCENSEQ_EN (Bit 12) */ -#define QSPIC_QSPIC_CTRLMODE_REG_QSPIC_FORCENSEQ_EN_Msk (0x1000UL) /*!< QSPIC QSPIC_CTRLMODE_REG: QSPIC_FORCENSEQ_EN (Bitfield-Mask: 0x01) */ -#define QSPIC_QSPIC_CTRLMODE_REG_QSPIC_USE_32BA_Pos (13UL) /*!< QSPIC QSPIC_CTRLMODE_REG: QSPIC_USE_32BA (Bit 13) */ -#define QSPIC_QSPIC_CTRLMODE_REG_QSPIC_USE_32BA_Msk (0x2000UL) /*!< QSPIC QSPIC_CTRLMODE_REG: QSPIC_USE_32BA (Bitfield-Mask: 0x01) */ - -/* -------------------------- QSPIC_QSPIC_RECVDATA_REG -------------------------- */ -#define QSPIC_QSPIC_RECVDATA_REG_QSPIC_RECVDATA_Pos (0UL) /*!< QSPIC QSPIC_RECVDATA_REG: QSPIC_RECVDATA (Bit 0) */ -#define QSPIC_QSPIC_RECVDATA_REG_QSPIC_RECVDATA_Msk (0xffffffffUL) /*!< QSPIC QSPIC_RECVDATA_REG: QSPIC_RECVDATA (Bitfield-Mask: 0xffffffff) */ - -/* -------------------------- QSPIC_QSPIC_BURSTCMDA_REG ------------------------- */ -#define QSPIC_QSPIC_BURSTCMDA_REG_QSPIC_INST_Pos (0UL) /*!< QSPIC QSPIC_BURSTCMDA_REG: QSPIC_INST (Bit 0) */ -#define QSPIC_QSPIC_BURSTCMDA_REG_QSPIC_INST_Msk (0xffUL) /*!< QSPIC QSPIC_BURSTCMDA_REG: QSPIC_INST (Bitfield-Mask: 0xff) */ -#define QSPIC_QSPIC_BURSTCMDA_REG_QSPIC_INST_WB_Pos (8UL) /*!< QSPIC QSPIC_BURSTCMDA_REG: QSPIC_INST_WB (Bit 8) */ -#define QSPIC_QSPIC_BURSTCMDA_REG_QSPIC_INST_WB_Msk (0xff00UL) /*!< QSPIC QSPIC_BURSTCMDA_REG: QSPIC_INST_WB (Bitfield-Mask: 0xff) */ -#define QSPIC_QSPIC_BURSTCMDA_REG_QSPIC_EXT_BYTE_Pos (16UL) /*!< QSPIC QSPIC_BURSTCMDA_REG: QSPIC_EXT_BYTE (Bit 16) */ -#define QSPIC_QSPIC_BURSTCMDA_REG_QSPIC_EXT_BYTE_Msk (0xff0000UL) /*!< QSPIC QSPIC_BURSTCMDA_REG: QSPIC_EXT_BYTE (Bitfield-Mask: 0xff) */ -#define QSPIC_QSPIC_BURSTCMDA_REG_QSPIC_INST_TX_MD_Pos (24UL) /*!< QSPIC QSPIC_BURSTCMDA_REG: QSPIC_INST_TX_MD (Bit 24) */ -#define QSPIC_QSPIC_BURSTCMDA_REG_QSPIC_INST_TX_MD_Msk (0x3000000UL) /*!< QSPIC QSPIC_BURSTCMDA_REG: QSPIC_INST_TX_MD (Bitfield-Mask: 0x03) */ -#define QSPIC_QSPIC_BURSTCMDA_REG_QSPIC_ADR_TX_MD_Pos (26UL) /*!< QSPIC QSPIC_BURSTCMDA_REG: QSPIC_ADR_TX_MD (Bit 26) */ -#define QSPIC_QSPIC_BURSTCMDA_REG_QSPIC_ADR_TX_MD_Msk (0xc000000UL) /*!< QSPIC QSPIC_BURSTCMDA_REG: QSPIC_ADR_TX_MD (Bitfield-Mask: 0x03) */ -#define QSPIC_QSPIC_BURSTCMDA_REG_QSPIC_EXT_TX_MD_Pos (28UL) /*!< QSPIC QSPIC_BURSTCMDA_REG: QSPIC_EXT_TX_MD (Bit 28) */ -#define QSPIC_QSPIC_BURSTCMDA_REG_QSPIC_EXT_TX_MD_Msk (0x30000000UL) /*!< QSPIC QSPIC_BURSTCMDA_REG: QSPIC_EXT_TX_MD (Bitfield-Mask: 0x03) */ -#define QSPIC_QSPIC_BURSTCMDA_REG_QSPIC_DMY_TX_MD_Pos (30UL) /*!< QSPIC QSPIC_BURSTCMDA_REG: QSPIC_DMY_TX_MD (Bit 30) */ -#define QSPIC_QSPIC_BURSTCMDA_REG_QSPIC_DMY_TX_MD_Msk (0xc0000000UL) /*!< QSPIC QSPIC_BURSTCMDA_REG: QSPIC_DMY_TX_MD (Bitfield-Mask: 0x03) */ - -/* -------------------------- QSPIC_QSPIC_BURSTCMDB_REG ------------------------- */ -#define QSPIC_QSPIC_BURSTCMDB_REG_QSPIC_DAT_RX_MD_Pos (0UL) /*!< QSPIC QSPIC_BURSTCMDB_REG: QSPIC_DAT_RX_MD (Bit 0) */ -#define QSPIC_QSPIC_BURSTCMDB_REG_QSPIC_DAT_RX_MD_Msk (0x3UL) /*!< QSPIC QSPIC_BURSTCMDB_REG: QSPIC_DAT_RX_MD (Bitfield-Mask: 0x03) */ -#define QSPIC_QSPIC_BURSTCMDB_REG_QSPIC_EXT_BYTE_EN_Pos (2UL) /*!< QSPIC QSPIC_BURSTCMDB_REG: QSPIC_EXT_BYTE_EN (Bit 2) */ -#define QSPIC_QSPIC_BURSTCMDB_REG_QSPIC_EXT_BYTE_EN_Msk (0x4UL) /*!< QSPIC QSPIC_BURSTCMDB_REG: QSPIC_EXT_BYTE_EN (Bitfield-Mask: 0x01) */ -#define QSPIC_QSPIC_BURSTCMDB_REG_QSPIC_EXT_HF_DS_Pos (3UL) /*!< QSPIC QSPIC_BURSTCMDB_REG: QSPIC_EXT_HF_DS (Bit 3) */ -#define QSPIC_QSPIC_BURSTCMDB_REG_QSPIC_EXT_HF_DS_Msk (0x8UL) /*!< QSPIC QSPIC_BURSTCMDB_REG: QSPIC_EXT_HF_DS (Bitfield-Mask: 0x01) */ -#define QSPIC_QSPIC_BURSTCMDB_REG_QSPIC_DMY_NUM_Pos (4UL) /*!< QSPIC QSPIC_BURSTCMDB_REG: QSPIC_DMY_NUM (Bit 4) */ -#define QSPIC_QSPIC_BURSTCMDB_REG_QSPIC_DMY_NUM_Msk (0x30UL) /*!< QSPIC QSPIC_BURSTCMDB_REG: QSPIC_DMY_NUM (Bitfield-Mask: 0x03) */ -#define QSPIC_QSPIC_BURSTCMDB_REG_QSPIC_INST_MD_Pos (6UL) /*!< QSPIC QSPIC_BURSTCMDB_REG: QSPIC_INST_MD (Bit 6) */ -#define QSPIC_QSPIC_BURSTCMDB_REG_QSPIC_INST_MD_Msk (0x40UL) /*!< QSPIC QSPIC_BURSTCMDB_REG: QSPIC_INST_MD (Bitfield-Mask: 0x01) */ -#define QSPIC_QSPIC_BURSTCMDB_REG_QSPIC_WRAP_MD_Pos (7UL) /*!< QSPIC QSPIC_BURSTCMDB_REG: QSPIC_WRAP_MD (Bit 7) */ -#define QSPIC_QSPIC_BURSTCMDB_REG_QSPIC_WRAP_MD_Msk (0x80UL) /*!< QSPIC QSPIC_BURSTCMDB_REG: QSPIC_WRAP_MD (Bitfield-Mask: 0x01) */ -#define QSPIC_QSPIC_BURSTCMDB_REG_QSPIC_WRAP_LEN_Pos (8UL) /*!< QSPIC QSPIC_BURSTCMDB_REG: QSPIC_WRAP_LEN (Bit 8) */ -#define QSPIC_QSPIC_BURSTCMDB_REG_QSPIC_WRAP_LEN_Msk (0x300UL) /*!< QSPIC QSPIC_BURSTCMDB_REG: QSPIC_WRAP_LEN (Bitfield-Mask: 0x03) */ -#define QSPIC_QSPIC_BURSTCMDB_REG_QSPIC_WRAP_SIZE_Pos (10UL) /*!< QSPIC QSPIC_BURSTCMDB_REG: QSPIC_WRAP_SIZE (Bit 10) */ -#define QSPIC_QSPIC_BURSTCMDB_REG_QSPIC_WRAP_SIZE_Msk (0xc00UL) /*!< QSPIC QSPIC_BURSTCMDB_REG: QSPIC_WRAP_SIZE (Bitfield-Mask: 0x03) */ -#define QSPIC_QSPIC_BURSTCMDB_REG_QSPIC_CS_HIGH_MIN_Pos (12UL) /*!< QSPIC QSPIC_BURSTCMDB_REG: QSPIC_CS_HIGH_MIN (Bit 12) */ -#define QSPIC_QSPIC_BURSTCMDB_REG_QSPIC_CS_HIGH_MIN_Msk (0x7000UL) /*!< QSPIC QSPIC_BURSTCMDB_REG: QSPIC_CS_HIGH_MIN (Bitfield-Mask: 0x07) */ -#define QSPIC_QSPIC_BURSTCMDB_REG_QSPIC_DMY_FORCE_Pos (15UL) /*!< QSPIC QSPIC_BURSTCMDB_REG: QSPIC_DMY_FORCE (Bit 15) */ -#define QSPIC_QSPIC_BURSTCMDB_REG_QSPIC_DMY_FORCE_Msk (0x8000UL) /*!< QSPIC QSPIC_BURSTCMDB_REG: QSPIC_DMY_FORCE (Bitfield-Mask: 0x01) */ - -/* --------------------------- QSPIC_QSPIC_STATUS_REG --------------------------- */ -#define QSPIC_QSPIC_STATUS_REG_QSPIC_BUSY_Pos (0UL) /*!< QSPIC QSPIC_STATUS_REG: QSPIC_BUSY (Bit 0) */ -#define QSPIC_QSPIC_STATUS_REG_QSPIC_BUSY_Msk (0x1UL) /*!< QSPIC QSPIC_STATUS_REG: QSPIC_BUSY (Bitfield-Mask: 0x01) */ - -/* -------------------------- QSPIC_QSPIC_WRITEDATA_REG ------------------------- */ -#define QSPIC_QSPIC_WRITEDATA_REG_QSPIC_WRITEDATA_Pos (0UL) /*!< QSPIC QSPIC_WRITEDATA_REG: QSPIC_WRITEDATA (Bit 0) */ -#define QSPIC_QSPIC_WRITEDATA_REG_QSPIC_WRITEDATA_Msk (0xffffffffUL) /*!< QSPIC QSPIC_WRITEDATA_REG: QSPIC_WRITEDATA (Bitfield-Mask: 0xffffffff) */ - -/* -------------------------- QSPIC_QSPIC_READDATA_REG -------------------------- */ -#define QSPIC_QSPIC_READDATA_REG_QSPIC_READDATA_Pos (0UL) /*!< QSPIC QSPIC_READDATA_REG: QSPIC_READDATA (Bit 0) */ -#define QSPIC_QSPIC_READDATA_REG_QSPIC_READDATA_Msk (0xffffffffUL) /*!< QSPIC QSPIC_READDATA_REG: QSPIC_READDATA (Bitfield-Mask: 0xffffffff) */ - -/* -------------------------- QSPIC_QSPIC_DUMMYDATA_REG ------------------------- */ -#define QSPIC_QSPIC_DUMMYDATA_REG_QSPIC_DUMMYDATA_Pos (0UL) /*!< QSPIC QSPIC_DUMMYDATA_REG: QSPIC_DUMMYDATA (Bit 0) */ -#define QSPIC_QSPIC_DUMMYDATA_REG_QSPIC_DUMMYDATA_Msk (0xffffffffUL) /*!< QSPIC QSPIC_DUMMYDATA_REG: QSPIC_DUMMYDATA (Bitfield-Mask: 0xffffffff) */ - -/* -------------------------- QSPIC_QSPIC_ERASECTRL_REG ------------------------- */ -#define QSPIC_QSPIC_ERASECTRL_REG_QSPIC_ERS_ADDR_Pos (4UL) /*!< QSPIC QSPIC_ERASECTRL_REG: QSPIC_ERS_ADDR (Bit 4) */ -#define QSPIC_QSPIC_ERASECTRL_REG_QSPIC_ERS_ADDR_Msk (0xfffff0UL) /*!< QSPIC QSPIC_ERASECTRL_REG: QSPIC_ERS_ADDR (Bitfield-Mask: 0xfffff) */ -#define QSPIC_QSPIC_ERASECTRL_REG_QSPIC_ERASE_EN_Pos (24UL) /*!< QSPIC QSPIC_ERASECTRL_REG: QSPIC_ERASE_EN (Bit 24) */ -#define QSPIC_QSPIC_ERASECTRL_REG_QSPIC_ERASE_EN_Msk (0x1000000UL) /*!< QSPIC QSPIC_ERASECTRL_REG: QSPIC_ERASE_EN (Bitfield-Mask: 0x01) */ -#define QSPIC_QSPIC_ERASECTRL_REG_QSPIC_ERS_STATE_Pos (25UL) /*!< QSPIC QSPIC_ERASECTRL_REG: QSPIC_ERS_STATE (Bit 25) */ -#define QSPIC_QSPIC_ERASECTRL_REG_QSPIC_ERS_STATE_Msk (0xe000000UL) /*!< QSPIC QSPIC_ERASECTRL_REG: QSPIC_ERS_STATE (Bitfield-Mask: 0x07) */ - -/* -------------------------- QSPIC_QSPIC_ERASECMDA_REG ------------------------- */ -#define QSPIC_QSPIC_ERASECMDA_REG_QSPIC_ERS_INST_Pos (0UL) /*!< QSPIC QSPIC_ERASECMDA_REG: QSPIC_ERS_INST (Bit 0) */ -#define QSPIC_QSPIC_ERASECMDA_REG_QSPIC_ERS_INST_Msk (0xffUL) /*!< QSPIC QSPIC_ERASECMDA_REG: QSPIC_ERS_INST (Bitfield-Mask: 0xff) */ -#define QSPIC_QSPIC_ERASECMDA_REG_QSPIC_WEN_INST_Pos (8UL) /*!< QSPIC QSPIC_ERASECMDA_REG: QSPIC_WEN_INST (Bit 8) */ -#define QSPIC_QSPIC_ERASECMDA_REG_QSPIC_WEN_INST_Msk (0xff00UL) /*!< QSPIC QSPIC_ERASECMDA_REG: QSPIC_WEN_INST (Bitfield-Mask: 0xff) */ -#define QSPIC_QSPIC_ERASECMDA_REG_QSPIC_SUS_INST_Pos (16UL) /*!< QSPIC QSPIC_ERASECMDA_REG: QSPIC_SUS_INST (Bit 16) */ -#define QSPIC_QSPIC_ERASECMDA_REG_QSPIC_SUS_INST_Msk (0xff0000UL) /*!< QSPIC QSPIC_ERASECMDA_REG: QSPIC_SUS_INST (Bitfield-Mask: 0xff) */ -#define QSPIC_QSPIC_ERASECMDA_REG_QSPIC_RES_INST_Pos (24UL) /*!< QSPIC QSPIC_ERASECMDA_REG: QSPIC_RES_INST (Bit 24) */ -#define QSPIC_QSPIC_ERASECMDA_REG_QSPIC_RES_INST_Msk (0xff000000UL) /*!< QSPIC QSPIC_ERASECMDA_REG: QSPIC_RES_INST (Bitfield-Mask: 0xff) */ - -/* -------------------------- QSPIC_QSPIC_ERASECMDB_REG ------------------------- */ -#define QSPIC_QSPIC_ERASECMDB_REG_QSPIC_ERS_TX_MD_Pos (0UL) /*!< QSPIC QSPIC_ERASECMDB_REG: QSPIC_ERS_TX_MD (Bit 0) */ -#define QSPIC_QSPIC_ERASECMDB_REG_QSPIC_ERS_TX_MD_Msk (0x3UL) /*!< QSPIC QSPIC_ERASECMDB_REG: QSPIC_ERS_TX_MD (Bitfield-Mask: 0x03) */ -#define QSPIC_QSPIC_ERASECMDB_REG_QSPIC_WEN_TX_MD_Pos (2UL) /*!< QSPIC QSPIC_ERASECMDB_REG: QSPIC_WEN_TX_MD (Bit 2) */ -#define QSPIC_QSPIC_ERASECMDB_REG_QSPIC_WEN_TX_MD_Msk (0xcUL) /*!< QSPIC QSPIC_ERASECMDB_REG: QSPIC_WEN_TX_MD (Bitfield-Mask: 0x03) */ -#define QSPIC_QSPIC_ERASECMDB_REG_QSPIC_SUS_TX_MD_Pos (4UL) /*!< QSPIC QSPIC_ERASECMDB_REG: QSPIC_SUS_TX_MD (Bit 4) */ -#define QSPIC_QSPIC_ERASECMDB_REG_QSPIC_SUS_TX_MD_Msk (0x30UL) /*!< QSPIC QSPIC_ERASECMDB_REG: QSPIC_SUS_TX_MD (Bitfield-Mask: 0x03) */ -#define QSPIC_QSPIC_ERASECMDB_REG_QSPIC_RES_TX_MD_Pos (6UL) /*!< QSPIC QSPIC_ERASECMDB_REG: QSPIC_RES_TX_MD (Bit 6) */ -#define QSPIC_QSPIC_ERASECMDB_REG_QSPIC_RES_TX_MD_Msk (0xc0UL) /*!< QSPIC QSPIC_ERASECMDB_REG: QSPIC_RES_TX_MD (Bitfield-Mask: 0x03) */ -#define QSPIC_QSPIC_ERASECMDB_REG_QSPIC_EAD_TX_MD_Pos (8UL) /*!< QSPIC QSPIC_ERASECMDB_REG: QSPIC_EAD_TX_MD (Bit 8) */ -#define QSPIC_QSPIC_ERASECMDB_REG_QSPIC_EAD_TX_MD_Msk (0x300UL) /*!< QSPIC QSPIC_ERASECMDB_REG: QSPIC_EAD_TX_MD (Bitfield-Mask: 0x03) */ -#define QSPIC_QSPIC_ERASECMDB_REG_QSPIC_ERS_CS_HI_Pos (10UL) /*!< QSPIC QSPIC_ERASECMDB_REG: QSPIC_ERS_CS_HI (Bit 10) */ -#define QSPIC_QSPIC_ERASECMDB_REG_QSPIC_ERS_CS_HI_Msk (0x7c00UL) /*!< QSPIC QSPIC_ERASECMDB_REG: QSPIC_ERS_CS_HI (Bitfield-Mask: 0x1f) */ -#define QSPIC_QSPIC_ERASECMDB_REG_QSPIC_ERSRES_HLD_Pos (16UL) /*!< QSPIC QSPIC_ERASECMDB_REG: QSPIC_ERSRES_HLD (Bit 16) */ -#define QSPIC_QSPIC_ERASECMDB_REG_QSPIC_ERSRES_HLD_Msk (0xf0000UL) /*!< QSPIC QSPIC_ERASECMDB_REG: QSPIC_ERSRES_HLD (Bitfield-Mask: 0x0f) */ -#define QSPIC_QSPIC_ERASECMDB_REG_QSPIC_RESSUS_DLY_Pos (24UL) /*!< QSPIC QSPIC_ERASECMDB_REG: QSPIC_RESSUS_DLY (Bit 24) */ -#define QSPIC_QSPIC_ERASECMDB_REG_QSPIC_RESSUS_DLY_Msk (0x3f000000UL) /*!< QSPIC QSPIC_ERASECMDB_REG: QSPIC_RESSUS_DLY (Bitfield-Mask: 0x3f) */ - -/* -------------------------- QSPIC_QSPIC_BURSTBRK_REG -------------------------- */ -#define QSPIC_QSPIC_BURSTBRK_REG_QSPIC_BRK_WRD_Pos (0UL) /*!< QSPIC QSPIC_BURSTBRK_REG: QSPIC_BRK_WRD (Bit 0) */ -#define QSPIC_QSPIC_BURSTBRK_REG_QSPIC_BRK_WRD_Msk (0xffffUL) /*!< QSPIC QSPIC_BURSTBRK_REG: QSPIC_BRK_WRD (Bitfield-Mask: 0xffff) */ -#define QSPIC_QSPIC_BURSTBRK_REG_QSPIC_BRK_EN_Pos (16UL) /*!< QSPIC QSPIC_BURSTBRK_REG: QSPIC_BRK_EN (Bit 16) */ -#define QSPIC_QSPIC_BURSTBRK_REG_QSPIC_BRK_EN_Msk (0x10000UL) /*!< QSPIC QSPIC_BURSTBRK_REG: QSPIC_BRK_EN (Bitfield-Mask: 0x01) */ -#define QSPIC_QSPIC_BURSTBRK_REG_QSPIC_BRK_SZ_Pos (17UL) /*!< QSPIC QSPIC_BURSTBRK_REG: QSPIC_BRK_SZ (Bit 17) */ -#define QSPIC_QSPIC_BURSTBRK_REG_QSPIC_BRK_SZ_Msk (0x20000UL) /*!< QSPIC QSPIC_BURSTBRK_REG: QSPIC_BRK_SZ (Bitfield-Mask: 0x01) */ -#define QSPIC_QSPIC_BURSTBRK_REG_QSPIC_BRK_TX_MD_Pos (18UL) /*!< QSPIC QSPIC_BURSTBRK_REG: QSPIC_BRK_TX_MD (Bit 18) */ -#define QSPIC_QSPIC_BURSTBRK_REG_QSPIC_BRK_TX_MD_Msk (0xc0000UL) /*!< QSPIC QSPIC_BURSTBRK_REG: QSPIC_BRK_TX_MD (Bitfield-Mask: 0x03) */ -#define QSPIC_QSPIC_BURSTBRK_REG_QSPIC_SEC_HF_DS_Pos (20UL) /*!< QSPIC QSPIC_BURSTBRK_REG: QSPIC_SEC_HF_DS (Bit 20) */ -#define QSPIC_QSPIC_BURSTBRK_REG_QSPIC_SEC_HF_DS_Msk (0x100000UL) /*!< QSPIC QSPIC_BURSTBRK_REG: QSPIC_SEC_HF_DS (Bitfield-Mask: 0x01) */ - -/* -------------------------- QSPIC_QSPIC_STATUSCMD_REG ------------------------- */ -#define QSPIC_QSPIC_STATUSCMD_REG_QSPIC_RSTAT_INST_Pos (0UL) /*!< QSPIC QSPIC_STATUSCMD_REG: QSPIC_RSTAT_INST (Bit 0) */ -#define QSPIC_QSPIC_STATUSCMD_REG_QSPIC_RSTAT_INST_Msk (0xffUL) /*!< QSPIC QSPIC_STATUSCMD_REG: QSPIC_RSTAT_INST (Bitfield-Mask: 0xff) */ -#define QSPIC_QSPIC_STATUSCMD_REG_QSPIC_RSTAT_TX_MD_Pos (8UL) /*!< QSPIC QSPIC_STATUSCMD_REG: QSPIC_RSTAT_TX_MD (Bit 8) */ -#define QSPIC_QSPIC_STATUSCMD_REG_QSPIC_RSTAT_TX_MD_Msk (0x300UL) /*!< QSPIC QSPIC_STATUSCMD_REG: QSPIC_RSTAT_TX_MD (Bitfield-Mask: 0x03) */ -#define QSPIC_QSPIC_STATUSCMD_REG_QSPIC_RSTAT_RX_MD_Pos (10UL) /*!< QSPIC QSPIC_STATUSCMD_REG: QSPIC_RSTAT_RX_MD (Bit 10) */ -#define QSPIC_QSPIC_STATUSCMD_REG_QSPIC_RSTAT_RX_MD_Msk (0xc00UL) /*!< QSPIC QSPIC_STATUSCMD_REG: QSPIC_RSTAT_RX_MD (Bitfield-Mask: 0x03) */ -#define QSPIC_QSPIC_STATUSCMD_REG_QSPIC_BUSY_POS_Pos (12UL) /*!< QSPIC QSPIC_STATUSCMD_REG: QSPIC_BUSY_POS (Bit 12) */ -#define QSPIC_QSPIC_STATUSCMD_REG_QSPIC_BUSY_POS_Msk (0x7000UL) /*!< QSPIC QSPIC_STATUSCMD_REG: QSPIC_BUSY_POS (Bitfield-Mask: 0x07) */ -#define QSPIC_QSPIC_STATUSCMD_REG_QSPIC_BUSY_VAL_Pos (15UL) /*!< QSPIC QSPIC_STATUSCMD_REG: QSPIC_BUSY_VAL (Bit 15) */ -#define QSPIC_QSPIC_STATUSCMD_REG_QSPIC_BUSY_VAL_Msk (0x8000UL) /*!< QSPIC QSPIC_STATUSCMD_REG: QSPIC_BUSY_VAL (Bitfield-Mask: 0x01) */ -#define QSPIC_QSPIC_STATUSCMD_REG_QSPIC_RESSTS_DLY_Pos (16UL) /*!< QSPIC QSPIC_STATUSCMD_REG: QSPIC_RESSTS_DLY (Bit 16) */ -#define QSPIC_QSPIC_STATUSCMD_REG_QSPIC_RESSTS_DLY_Msk (0x3f0000UL) /*!< QSPIC QSPIC_STATUSCMD_REG: QSPIC_RESSTS_DLY (Bitfield-Mask: 0x3f) */ -#define QSPIC_QSPIC_STATUSCMD_REG_QSPIC_STSDLY_SEL_Pos (22UL) /*!< QSPIC QSPIC_STATUSCMD_REG: QSPIC_STSDLY_SEL (Bit 22) */ -#define QSPIC_QSPIC_STATUSCMD_REG_QSPIC_STSDLY_SEL_Msk (0x400000UL) /*!< QSPIC QSPIC_STATUSCMD_REG: QSPIC_STSDLY_SEL (Bitfield-Mask: 0x01) */ - -/* -------------------------- QSPIC_QSPIC_CHCKERASE_REG ------------------------- */ -#define QSPIC_QSPIC_CHCKERASE_REG_QSPIC_CHCKERASE_Pos (0UL) /*!< QSPIC QSPIC_CHCKERASE_REG: QSPIC_CHCKERASE (Bit 0) */ -#define QSPIC_QSPIC_CHCKERASE_REG_QSPIC_CHCKERASE_Msk (0xffffffffUL) /*!< QSPIC QSPIC_CHCKERASE_REG: QSPIC_CHCKERASE (Bitfield-Mask: 0xffffffff) */ - -/* ----------------------------- QSPIC_QSPIC_GP_REG ----------------------------- */ -#define QSPIC_QSPIC_GP_REG_QSPIC_PADS_DRV_Pos (1UL) /*!< QSPIC QSPIC_GP_REG: QSPIC_PADS_DRV (Bit 1) */ -#define QSPIC_QSPIC_GP_REG_QSPIC_PADS_DRV_Msk (0x6UL) /*!< QSPIC QSPIC_GP_REG: QSPIC_PADS_DRV (Bitfield-Mask: 0x03) */ -#define QSPIC_QSPIC_GP_REG_QSPIC_PADS_SLEW_Pos (3UL) /*!< QSPIC QSPIC_GP_REG: QSPIC_PADS_SLEW (Bit 3) */ -#define QSPIC_QSPIC_GP_REG_QSPIC_PADS_SLEW_Msk (0x18UL) /*!< QSPIC QSPIC_GP_REG: QSPIC_PADS_SLEW (Bitfield-Mask: 0x03) */ - -/* --------------------------- QSPIC_QSPIC_UCODE_START -------------------------- */ -#define QSPIC_QSPIC_UCODE_START_QSPIC_UCODE_X_Pos (0UL) /*!< QSPIC QSPIC_UCODE_START: QSPIC_UCODE_X (Bit 0) */ -#define QSPIC_QSPIC_UCODE_START_QSPIC_UCODE_X_Msk (0xffffffffUL) /*!< QSPIC QSPIC_UCODE_START: QSPIC_UCODE_X (Bitfield-Mask: 0xffffffff) */ - - -/* ================================================================================ */ -/* ================ struct 'QUAD' Position & Mask ================ */ -/* ================================================================================ */ - - -/* ----------------------------- QUAD_QDEC_CTRL_REG ----------------------------- */ -#define QUAD_QDEC_CTRL_REG_QD_IRQ_MASK_Pos (0UL) /*!< QUAD QDEC_CTRL_REG: QD_IRQ_MASK (Bit 0) */ -#define QUAD_QDEC_CTRL_REG_QD_IRQ_MASK_Msk (0x1UL) /*!< QUAD QDEC_CTRL_REG: QD_IRQ_MASK (Bitfield-Mask: 0x01) */ -#define QUAD_QDEC_CTRL_REG_QD_IRQ_CLR_Pos (1UL) /*!< QUAD QDEC_CTRL_REG: QD_IRQ_CLR (Bit 1) */ -#define QUAD_QDEC_CTRL_REG_QD_IRQ_CLR_Msk (0x2UL) /*!< QUAD QDEC_CTRL_REG: QD_IRQ_CLR (Bitfield-Mask: 0x01) */ -#define QUAD_QDEC_CTRL_REG_QD_IRQ_STATUS_Pos (2UL) /*!< QUAD QDEC_CTRL_REG: QD_IRQ_STATUS (Bit 2) */ -#define QUAD_QDEC_CTRL_REG_QD_IRQ_STATUS_Msk (0x4UL) /*!< QUAD QDEC_CTRL_REG: QD_IRQ_STATUS (Bitfield-Mask: 0x01) */ -#define QUAD_QDEC_CTRL_REG_QD_IRQ_THRES_Pos (3UL) /*!< QUAD QDEC_CTRL_REG: QD_IRQ_THRES (Bit 3) */ -#define QUAD_QDEC_CTRL_REG_QD_IRQ_THRES_Msk (0x3f8UL) /*!< QUAD QDEC_CTRL_REG: QD_IRQ_THRES (Bitfield-Mask: 0x7f) */ -#define QUAD_QDEC_CTRL_REG_CHX_PORT_EN_Pos (10UL) /*!< QUAD QDEC_CTRL_REG: CHX_PORT_EN (Bit 10) */ -#define QUAD_QDEC_CTRL_REG_CHX_PORT_EN_Msk (0x400UL) /*!< QUAD QDEC_CTRL_REG: CHX_PORT_EN (Bitfield-Mask: 0x01) */ -#define QUAD_QDEC_CTRL_REG_CHY_PORT_EN_Pos (11UL) /*!< QUAD QDEC_CTRL_REG: CHY_PORT_EN (Bit 11) */ -#define QUAD_QDEC_CTRL_REG_CHY_PORT_EN_Msk (0x800UL) /*!< QUAD QDEC_CTRL_REG: CHY_PORT_EN (Bitfield-Mask: 0x01) */ -#define QUAD_QDEC_CTRL_REG_CHZ_PORT_EN_Pos (12UL) /*!< QUAD QDEC_CTRL_REG: CHZ_PORT_EN (Bit 12) */ -#define QUAD_QDEC_CTRL_REG_CHZ_PORT_EN_Msk (0x1000UL) /*!< QUAD QDEC_CTRL_REG: CHZ_PORT_EN (Bitfield-Mask: 0x01) */ - -/* ----------------------------- QUAD_QDEC_XCNT_REG ----------------------------- */ -#define QUAD_QDEC_XCNT_REG_X_counter_Pos (0UL) /*!< QUAD QDEC_XCNT_REG: X_counter (Bit 0) */ -#define QUAD_QDEC_XCNT_REG_X_counter_Msk (0xffffUL) /*!< QUAD QDEC_XCNT_REG: X_counter (Bitfield-Mask: 0xffff) */ - -/* ----------------------------- QUAD_QDEC_YCNT_REG ----------------------------- */ -#define QUAD_QDEC_YCNT_REG_Y_counter_Pos (0UL) /*!< QUAD QDEC_YCNT_REG: Y_counter (Bit 0) */ -#define QUAD_QDEC_YCNT_REG_Y_counter_Msk (0xffffUL) /*!< QUAD QDEC_YCNT_REG: Y_counter (Bitfield-Mask: 0xffff) */ - -/* ----------------------------- QUAD_QDEC_ZCNT_REG ----------------------------- */ -#define QUAD_QDEC_ZCNT_REG_Z_counter_Pos (0UL) /*!< QUAD QDEC_ZCNT_REG: Z_counter (Bit 0) */ -#define QUAD_QDEC_ZCNT_REG_Z_counter_Msk (0xffffUL) /*!< QUAD QDEC_ZCNT_REG: Z_counter (Bitfield-Mask: 0xffff) */ - -/* --------------------------- QUAD_QDEC_CLOCKDIV_REG --------------------------- */ -#define QUAD_QDEC_CLOCKDIV_REG_clock_divider_Pos (0UL) /*!< QUAD QDEC_CLOCKDIV_REG: clock_divider (Bit 0) */ -#define QUAD_QDEC_CLOCKDIV_REG_clock_divider_Msk (0x3ffUL) /*!< QUAD QDEC_CLOCKDIV_REG: clock_divider (Bitfield-Mask: 0x3ff) */ - - -/* ================================================================================ */ -/* ================ struct 'RFCU' Position & Mask ================ */ -/* ================================================================================ */ - - -/* ---------------------------- RFCU_RF_OVERRULE_REG ---------------------------- */ -#define RFCU_RF_OVERRULE_REG_TX_EN_OVR_Pos (0UL) /*!< RFCU RF_OVERRULE_REG: TX_EN_OVR (Bit 0) */ -#define RFCU_RF_OVERRULE_REG_TX_EN_OVR_Msk (0x3UL) /*!< RFCU RF_OVERRULE_REG: TX_EN_OVR (Bitfield-Mask: 0x03) */ -#define RFCU_RF_OVERRULE_REG_RX_EN_OVR_Pos (2UL) /*!< RFCU RF_OVERRULE_REG: RX_EN_OVR (Bit 2) */ -#define RFCU_RF_OVERRULE_REG_RX_EN_OVR_Msk (0xcUL) /*!< RFCU RF_OVERRULE_REG: RX_EN_OVR (Bitfield-Mask: 0x03) */ -#define RFCU_RF_OVERRULE_REG_RF_MODE_OVR_Pos (4UL) /*!< RFCU RF_OVERRULE_REG: RF_MODE_OVR (Bit 4) */ -#define RFCU_RF_OVERRULE_REG_RF_MODE_OVR_Msk (0x30UL) /*!< RFCU RF_OVERRULE_REG: RF_MODE_OVR (Bitfield-Mask: 0x03) */ -#define RFCU_RF_OVERRULE_REG_IFF_FTDF_OVR_Pos (6UL) /*!< RFCU RF_OVERRULE_REG: IFF_FTDF_OVR (Bit 6) */ -#define RFCU_RF_OVERRULE_REG_IFF_FTDF_OVR_Msk (0xc0UL) /*!< RFCU RF_OVERRULE_REG: IFF_FTDF_OVR (Bitfield-Mask: 0x03) */ -#define RFCU_RF_OVERRULE_REG_MIX_FTDF_OVR_Pos (8UL) /*!< RFCU RF_OVERRULE_REG: MIX_FTDF_OVR (Bit 8) */ -#define RFCU_RF_OVERRULE_REG_MIX_FTDF_OVR_Msk (0x300UL) /*!< RFCU RF_OVERRULE_REG: MIX_FTDF_OVR (Bitfield-Mask: 0x03) */ -#define RFCU_RF_OVERRULE_REG_TXDAC_SEL_Pos (10UL) /*!< RFCU RF_OVERRULE_REG: TXDAC_SEL (Bit 10) */ -#define RFCU_RF_OVERRULE_REG_TXDAC_SEL_Msk (0xc00UL) /*!< RFCU RF_OVERRULE_REG: TXDAC_SEL (Bitfield-Mask: 0x03) */ -#define RFCU_RF_OVERRULE_REG_GAUSS_DAC_SEL_Pos (12UL) /*!< RFCU RF_OVERRULE_REG: GAUSS_DAC_SEL (Bit 12) */ -#define RFCU_RF_OVERRULE_REG_GAUSS_DAC_SEL_Msk (0x3000UL) /*!< RFCU RF_OVERRULE_REG: GAUSS_DAC_SEL (Bitfield-Mask: 0x03) */ -#define RFCU_RF_OVERRULE_REG_CN_FTDF_TIMES2_Pos (14UL) /*!< RFCU RF_OVERRULE_REG: CN_FTDF_TIMES2 (Bit 14) */ -#define RFCU_RF_OVERRULE_REG_CN_FTDF_TIMES2_Msk (0x4000UL) /*!< RFCU RF_OVERRULE_REG: CN_FTDF_TIMES2 (Bitfield-Mask: 0x01) */ - -/* ---------------------------- RFCU_RF_DIAGIRQ01_REG --------------------------- */ -#define RFCU_RF_DIAGIRQ01_REG_DIAGIRQ_MASK_0_Pos (0UL) /*!< RFCU RF_DIAGIRQ01_REG: DIAGIRQ_MASK_0 (Bit 0) */ -#define RFCU_RF_DIAGIRQ01_REG_DIAGIRQ_MASK_0_Msk (0x1UL) /*!< RFCU RF_DIAGIRQ01_REG: DIAGIRQ_MASK_0 (Bitfield-Mask: 0x01) */ -#define RFCU_RF_DIAGIRQ01_REG_DIAGIRQ_WSEL_0_Pos (1UL) /*!< RFCU RF_DIAGIRQ01_REG: DIAGIRQ_WSEL_0 (Bit 1) */ -#define RFCU_RF_DIAGIRQ01_REG_DIAGIRQ_WSEL_0_Msk (0x6UL) /*!< RFCU RF_DIAGIRQ01_REG: DIAGIRQ_WSEL_0 (Bitfield-Mask: 0x03) */ -#define RFCU_RF_DIAGIRQ01_REG_DIAGIRQ_BSEL_0_Pos (3UL) /*!< RFCU RF_DIAGIRQ01_REG: DIAGIRQ_BSEL_0 (Bit 3) */ -#define RFCU_RF_DIAGIRQ01_REG_DIAGIRQ_BSEL_0_Msk (0x38UL) /*!< RFCU RF_DIAGIRQ01_REG: DIAGIRQ_BSEL_0 (Bitfield-Mask: 0x07) */ -#define RFCU_RF_DIAGIRQ01_REG_DIAGIRQ_EDGE_0_Pos (6UL) /*!< RFCU RF_DIAGIRQ01_REG: DIAGIRQ_EDGE_0 (Bit 6) */ -#define RFCU_RF_DIAGIRQ01_REG_DIAGIRQ_EDGE_0_Msk (0x40UL) /*!< RFCU RF_DIAGIRQ01_REG: DIAGIRQ_EDGE_0 (Bitfield-Mask: 0x01) */ -#define RFCU_RF_DIAGIRQ01_REG_DIAGIRQ_MASK_1_Pos (8UL) /*!< RFCU RF_DIAGIRQ01_REG: DIAGIRQ_MASK_1 (Bit 8) */ -#define RFCU_RF_DIAGIRQ01_REG_DIAGIRQ_MASK_1_Msk (0x100UL) /*!< RFCU RF_DIAGIRQ01_REG: DIAGIRQ_MASK_1 (Bitfield-Mask: 0x01) */ -#define RFCU_RF_DIAGIRQ01_REG_DIAGIRQ_WSEL_1_Pos (9UL) /*!< RFCU RF_DIAGIRQ01_REG: DIAGIRQ_WSEL_1 (Bit 9) */ -#define RFCU_RF_DIAGIRQ01_REG_DIAGIRQ_WSEL_1_Msk (0x600UL) /*!< RFCU RF_DIAGIRQ01_REG: DIAGIRQ_WSEL_1 (Bitfield-Mask: 0x03) */ -#define RFCU_RF_DIAGIRQ01_REG_DIAGIRQ_BSEL_1_Pos (11UL) /*!< RFCU RF_DIAGIRQ01_REG: DIAGIRQ_BSEL_1 (Bit 11) */ -#define RFCU_RF_DIAGIRQ01_REG_DIAGIRQ_BSEL_1_Msk (0x3800UL) /*!< RFCU RF_DIAGIRQ01_REG: DIAGIRQ_BSEL_1 (Bitfield-Mask: 0x07) */ -#define RFCU_RF_DIAGIRQ01_REG_DIAGIRQ_EDGE_1_Pos (14UL) /*!< RFCU RF_DIAGIRQ01_REG: DIAGIRQ_EDGE_1 (Bit 14) */ -#define RFCU_RF_DIAGIRQ01_REG_DIAGIRQ_EDGE_1_Msk (0x4000UL) /*!< RFCU RF_DIAGIRQ01_REG: DIAGIRQ_EDGE_1 (Bitfield-Mask: 0x01) */ - -/* ---------------------------- RFCU_RF_DIAGIRQ23_REG --------------------------- */ -#define RFCU_RF_DIAGIRQ23_REG_DIAGIRQ_MASK_2_Pos (0UL) /*!< RFCU RF_DIAGIRQ23_REG: DIAGIRQ_MASK_2 (Bit 0) */ -#define RFCU_RF_DIAGIRQ23_REG_DIAGIRQ_MASK_2_Msk (0x1UL) /*!< RFCU RF_DIAGIRQ23_REG: DIAGIRQ_MASK_2 (Bitfield-Mask: 0x01) */ -#define RFCU_RF_DIAGIRQ23_REG_DIAGIRQ_WSEL_2_Pos (1UL) /*!< RFCU RF_DIAGIRQ23_REG: DIAGIRQ_WSEL_2 (Bit 1) */ -#define RFCU_RF_DIAGIRQ23_REG_DIAGIRQ_WSEL_2_Msk (0x6UL) /*!< RFCU RF_DIAGIRQ23_REG: DIAGIRQ_WSEL_2 (Bitfield-Mask: 0x03) */ -#define RFCU_RF_DIAGIRQ23_REG_DIAGIRQ_BSEL_2_Pos (3UL) /*!< RFCU RF_DIAGIRQ23_REG: DIAGIRQ_BSEL_2 (Bit 3) */ -#define RFCU_RF_DIAGIRQ23_REG_DIAGIRQ_BSEL_2_Msk (0x38UL) /*!< RFCU RF_DIAGIRQ23_REG: DIAGIRQ_BSEL_2 (Bitfield-Mask: 0x07) */ -#define RFCU_RF_DIAGIRQ23_REG_DIAGIRQ_EDGE_2_Pos (6UL) /*!< RFCU RF_DIAGIRQ23_REG: DIAGIRQ_EDGE_2 (Bit 6) */ -#define RFCU_RF_DIAGIRQ23_REG_DIAGIRQ_EDGE_2_Msk (0x40UL) /*!< RFCU RF_DIAGIRQ23_REG: DIAGIRQ_EDGE_2 (Bitfield-Mask: 0x01) */ -#define RFCU_RF_DIAGIRQ23_REG_DIAGIRQ_MASK_3_Pos (8UL) /*!< RFCU RF_DIAGIRQ23_REG: DIAGIRQ_MASK_3 (Bit 8) */ -#define RFCU_RF_DIAGIRQ23_REG_DIAGIRQ_MASK_3_Msk (0x100UL) /*!< RFCU RF_DIAGIRQ23_REG: DIAGIRQ_MASK_3 (Bitfield-Mask: 0x01) */ -#define RFCU_RF_DIAGIRQ23_REG_DIAGIRQ_WSEL_3_Pos (9UL) /*!< RFCU RF_DIAGIRQ23_REG: DIAGIRQ_WSEL_3 (Bit 9) */ -#define RFCU_RF_DIAGIRQ23_REG_DIAGIRQ_WSEL_3_Msk (0x600UL) /*!< RFCU RF_DIAGIRQ23_REG: DIAGIRQ_WSEL_3 (Bitfield-Mask: 0x03) */ -#define RFCU_RF_DIAGIRQ23_REG_DIAGIRQ_BSEL_3_Pos (11UL) /*!< RFCU RF_DIAGIRQ23_REG: DIAGIRQ_BSEL_3 (Bit 11) */ -#define RFCU_RF_DIAGIRQ23_REG_DIAGIRQ_BSEL_3_Msk (0x3800UL) /*!< RFCU RF_DIAGIRQ23_REG: DIAGIRQ_BSEL_3 (Bitfield-Mask: 0x07) */ -#define RFCU_RF_DIAGIRQ23_REG_DIAGIRQ_EDGE_3_Pos (14UL) /*!< RFCU RF_DIAGIRQ23_REG: DIAGIRQ_EDGE_3 (Bit 14) */ -#define RFCU_RF_DIAGIRQ23_REG_DIAGIRQ_EDGE_3_Msk (0x4000UL) /*!< RFCU RF_DIAGIRQ23_REG: DIAGIRQ_EDGE_3 (Bitfield-Mask: 0x01) */ - -/* -------------------------- RFCU_RF_DIAGIRQ_STAT_REG -------------------------- */ -#define RFCU_RF_DIAGIRQ_STAT_REG_DIAGIRQ_STAT_0_Pos (0UL) /*!< RFCU RF_DIAGIRQ_STAT_REG: DIAGIRQ_STAT_0 (Bit 0) */ -#define RFCU_RF_DIAGIRQ_STAT_REG_DIAGIRQ_STAT_0_Msk (0x1UL) /*!< RFCU RF_DIAGIRQ_STAT_REG: DIAGIRQ_STAT_0 (Bitfield-Mask: 0x01) */ -#define RFCU_RF_DIAGIRQ_STAT_REG_DIAGIRQ_STAT_1_Pos (1UL) /*!< RFCU RF_DIAGIRQ_STAT_REG: DIAGIRQ_STAT_1 (Bit 1) */ -#define RFCU_RF_DIAGIRQ_STAT_REG_DIAGIRQ_STAT_1_Msk (0x2UL) /*!< RFCU RF_DIAGIRQ_STAT_REG: DIAGIRQ_STAT_1 (Bitfield-Mask: 0x01) */ -#define RFCU_RF_DIAGIRQ_STAT_REG_DIAGIRQ_STAT_2_Pos (2UL) /*!< RFCU RF_DIAGIRQ_STAT_REG: DIAGIRQ_STAT_2 (Bit 2) */ -#define RFCU_RF_DIAGIRQ_STAT_REG_DIAGIRQ_STAT_2_Msk (0x4UL) /*!< RFCU RF_DIAGIRQ_STAT_REG: DIAGIRQ_STAT_2 (Bitfield-Mask: 0x01) */ -#define RFCU_RF_DIAGIRQ_STAT_REG_DIAGIRQ_STAT_3_Pos (3UL) /*!< RFCU RF_DIAGIRQ_STAT_REG: DIAGIRQ_STAT_3 (Bit 3) */ -#define RFCU_RF_DIAGIRQ_STAT_REG_DIAGIRQ_STAT_3_Msk (0x8UL) /*!< RFCU RF_DIAGIRQ_STAT_REG: DIAGIRQ_STAT_3 (Bitfield-Mask: 0x01) */ - -/* -------------------------- RFCU_RF_AGC_EXT1_LUT_REG -------------------------- */ -#define RFCU_RF_AGC_EXT1_LUT_REG_AGC_EXT_LUT_Pos (0UL) /*!< RFCU RF_AGC_EXT1_LUT_REG: AGC_EXT_LUT (Bit 0) */ -#define RFCU_RF_AGC_EXT1_LUT_REG_AGC_EXT_LUT_Msk (0x3ffUL) /*!< RFCU RF_AGC_EXT1_LUT_REG: AGC_EXT_LUT (Bitfield-Mask: 0x3ff) */ - -/* ---------------------------- RFCU_RF_CALSTATE_REG ---------------------------- */ -#define RFCU_RF_CALSTATE_REG_CALSTATE_Pos (0UL) /*!< RFCU RF_CALSTATE_REG: CALSTATE (Bit 0) */ -#define RFCU_RF_CALSTATE_REG_CALSTATE_Msk (0xfUL) /*!< RFCU RF_CALSTATE_REG: CALSTATE (Bitfield-Mask: 0x0f) */ - -/* -------------------------- RFCU_RF_SCAN_FEEDBACK_REG ------------------------- */ -#define RFCU_RF_SCAN_FEEDBACK_REG_LF_RES_Pos (0UL) /*!< RFCU RF_SCAN_FEEDBACK_REG: LF_RES (Bit 0) */ -#define RFCU_RF_SCAN_FEEDBACK_REG_LF_RES_Msk (0xfUL) /*!< RFCU RF_SCAN_FEEDBACK_REG: LF_RES (Bitfield-Mask: 0x0f) */ -#define RFCU_RF_SCAN_FEEDBACK_REG_CP_CUR_Pos (4UL) /*!< RFCU RF_SCAN_FEEDBACK_REG: CP_CUR (Bit 4) */ -#define RFCU_RF_SCAN_FEEDBACK_REG_CP_CUR_Msk (0xf0UL) /*!< RFCU RF_SCAN_FEEDBACK_REG: CP_CUR (Bitfield-Mask: 0x0f) */ - -/* --------------------------- RFCU_RF_REF_OSC_BLE_REG -------------------------- */ -#define RFCU_RF_REF_OSC_BLE_REG_CNT_RO_Pos (0UL) /*!< RFCU RF_REF_OSC_BLE_REG: CNT_RO (Bit 0) */ -#define RFCU_RF_REF_OSC_BLE_REG_CNT_RO_Msk (0x3fUL) /*!< RFCU RF_REF_OSC_BLE_REG: CNT_RO (Bitfield-Mask: 0x3f) */ -#define RFCU_RF_REF_OSC_BLE_REG_CNT_CLK_Pos (6UL) /*!< RFCU RF_REF_OSC_BLE_REG: CNT_CLK (Bit 6) */ -#define RFCU_RF_REF_OSC_BLE_REG_CNT_CLK_Msk (0x7fc0UL) /*!< RFCU RF_REF_OSC_BLE_REG: CNT_CLK (Bitfield-Mask: 0x1ff) */ - -/* -------------------------- RFCU_RF_REF_OSC_FTDF_REG -------------------------- */ -#define RFCU_RF_REF_OSC_FTDF_REG_CNT_RO_Pos (0UL) /*!< RFCU RF_REF_OSC_FTDF_REG: CNT_RO (Bit 0) */ -#define RFCU_RF_REF_OSC_FTDF_REG_CNT_RO_Msk (0x3fUL) /*!< RFCU RF_REF_OSC_FTDF_REG: CNT_RO (Bitfield-Mask: 0x3f) */ -#define RFCU_RF_REF_OSC_FTDF_REG_CNT_CLK_Pos (6UL) /*!< RFCU RF_REF_OSC_FTDF_REG: CNT_CLK (Bit 6) */ -#define RFCU_RF_REF_OSC_FTDF_REG_CNT_CLK_Msk (0x7fc0UL) /*!< RFCU RF_REF_OSC_FTDF_REG: CNT_CLK (Bitfield-Mask: 0x1ff) */ - -/* ---------------------------- RFCU_RF_CAL_CTRL_REG ---------------------------- */ -#define RFCU_RF_CAL_CTRL_REG_SO_CAL_Pos (0UL) /*!< RFCU RF_CAL_CTRL_REG: SO_CAL (Bit 0) */ -#define RFCU_RF_CAL_CTRL_REG_SO_CAL_Msk (0x1UL) /*!< RFCU RF_CAL_CTRL_REG: SO_CAL (Bitfield-Mask: 0x01) */ -#define RFCU_RF_CAL_CTRL_REG_EO_CAL_Pos (1UL) /*!< RFCU RF_CAL_CTRL_REG: EO_CAL (Bit 1) */ -#define RFCU_RF_CAL_CTRL_REG_EO_CAL_Msk (0x2UL) /*!< RFCU RF_CAL_CTRL_REG: EO_CAL (Bitfield-Mask: 0x01) */ -#define RFCU_RF_CAL_CTRL_REG_MGAIN_CAL_DIS_Pos (2UL) /*!< RFCU RF_CAL_CTRL_REG: MGAIN_CAL_DIS (Bit 2) */ -#define RFCU_RF_CAL_CTRL_REG_MGAIN_CAL_DIS_Msk (0x4UL) /*!< RFCU RF_CAL_CTRL_REG: MGAIN_CAL_DIS (Bitfield-Mask: 0x01) */ -#define RFCU_RF_CAL_CTRL_REG_IFF_CAL_DIS_Pos (3UL) /*!< RFCU RF_CAL_CTRL_REG: IFF_CAL_DIS (Bit 3) */ -#define RFCU_RF_CAL_CTRL_REG_IFF_CAL_DIS_Msk (0x8UL) /*!< RFCU RF_CAL_CTRL_REG: IFF_CAL_DIS (Bitfield-Mask: 0x01) */ -#define RFCU_RF_CAL_CTRL_REG_DC_OFFSET_CAL_DIS_Pos (4UL) /*!< RFCU RF_CAL_CTRL_REG: DC_OFFSET_CAL_DIS (Bit 4) */ -#define RFCU_RF_CAL_CTRL_REG_DC_OFFSET_CAL_DIS_Msk (0x10UL) /*!< RFCU RF_CAL_CTRL_REG: DC_OFFSET_CAL_DIS (Bitfield-Mask: 0x01) */ -#define RFCU_RF_CAL_CTRL_REG_VCO_CAL_DIS_Pos (5UL) /*!< RFCU RF_CAL_CTRL_REG: VCO_CAL_DIS (Bit 5) */ -#define RFCU_RF_CAL_CTRL_REG_VCO_CAL_DIS_Msk (0x20UL) /*!< RFCU RF_CAL_CTRL_REG: VCO_CAL_DIS (Bitfield-Mask: 0x01) */ - -/* ---------------------------- RFCU_RF_IRQ_CTRL_REG ---------------------------- */ -#define RFCU_RF_IRQ_CTRL_REG_EO_CAL_CLEAR_Pos (0UL) /*!< RFCU RF_IRQ_CTRL_REG: EO_CAL_CLEAR (Bit 0) */ -#define RFCU_RF_IRQ_CTRL_REG_EO_CAL_CLEAR_Msk (0x1UL) /*!< RFCU RF_IRQ_CTRL_REG: EO_CAL_CLEAR (Bitfield-Mask: 0x01) */ - -/* ------------------------- RFCU_RF_ADCI_DC_OFFSET_REG ------------------------- */ -#define RFCU_RF_ADCI_DC_OFFSET_REG_ADC_OFFP_I_RD_Pos (0UL) /*!< RFCU RF_ADCI_DC_OFFSET_REG: ADC_OFFP_I_RD (Bit 0) */ -#define RFCU_RF_ADCI_DC_OFFSET_REG_ADC_OFFP_I_RD_Msk (0xffUL) /*!< RFCU RF_ADCI_DC_OFFSET_REG: ADC_OFFP_I_RD (Bitfield-Mask: 0xff) */ -#define RFCU_RF_ADCI_DC_OFFSET_REG_ADC_OFFN_I_RD_Pos (8UL) /*!< RFCU RF_ADCI_DC_OFFSET_REG: ADC_OFFN_I_RD (Bit 8) */ -#define RFCU_RF_ADCI_DC_OFFSET_REG_ADC_OFFN_I_RD_Msk (0xff00UL) /*!< RFCU RF_ADCI_DC_OFFSET_REG: ADC_OFFN_I_RD (Bitfield-Mask: 0xff) */ - -/* ------------------------- RFCU_RF_ADCQ_DC_OFFSET_REG ------------------------- */ -#define RFCU_RF_ADCQ_DC_OFFSET_REG_ADC_OFFP_Q_RD_Pos (0UL) /*!< RFCU RF_ADCQ_DC_OFFSET_REG: ADC_OFFP_Q_RD (Bit 0) */ -#define RFCU_RF_ADCQ_DC_OFFSET_REG_ADC_OFFP_Q_RD_Msk (0xffUL) /*!< RFCU RF_ADCQ_DC_OFFSET_REG: ADC_OFFP_Q_RD (Bitfield-Mask: 0xff) */ -#define RFCU_RF_ADCQ_DC_OFFSET_REG_ADC_OFFN_Q_RD_Pos (8UL) /*!< RFCU RF_ADCQ_DC_OFFSET_REG: ADC_OFFN_Q_RD (Bit 8) */ -#define RFCU_RF_ADCQ_DC_OFFSET_REG_ADC_OFFN_Q_RD_Msk (0xff00UL) /*!< RFCU RF_ADCQ_DC_OFFSET_REG: ADC_OFFN_Q_RD (Bitfield-Mask: 0xff) */ - -/* --------------------------- RFCU_RF_SPARE1_BLE_REG --------------------------- */ -#define RFCU_RF_SPARE1_BLE_REG_RF_XTAL_RFCLK_TEST_Pos (0UL) /*!< RFCU RF_SPARE1_BLE_REG: RF_XTAL_RFCLK_TEST (Bit 0) */ -#define RFCU_RF_SPARE1_BLE_REG_RF_XTAL_RFCLK_TEST_Msk (0x1UL) /*!< RFCU RF_SPARE1_BLE_REG: RF_XTAL_RFCLK_TEST (Bitfield-Mask: 0x01) */ -#define RFCU_RF_SPARE1_BLE_REG_RF_XTAL_PLL_DXTAL16_TEST_Pos (1UL) /*!< RFCU RF_SPARE1_BLE_REG: RF_XTAL_PLL_DXTAL16_TEST (Bit 1) */ -#define RFCU_RF_SPARE1_BLE_REG_RF_XTAL_PLL_DXTAL16_TEST_Msk (0x2UL) /*!< RFCU RF_SPARE1_BLE_REG: RF_XTAL_PLL_DXTAL16_TEST (Bitfield-Mask: 0x01) */ -#define RFCU_RF_SPARE1_BLE_REG_RF_VTUNE_TO_ADC_TEST_EN_Pos (2UL) /*!< RFCU RF_SPARE1_BLE_REG: RF_VTUNE_TO_ADC_TEST_EN (Bit 2) */ -#define RFCU_RF_SPARE1_BLE_REG_RF_VTUNE_TO_ADC_TEST_EN_Msk (0x4UL) /*!< RFCU RF_SPARE1_BLE_REG: RF_VTUNE_TO_ADC_TEST_EN (Bitfield-Mask: 0x01) */ -#define RFCU_RF_SPARE1_BLE_REG_RF_TXDAC_CLK_POL_SEL_Pos (3UL) /*!< RFCU RF_SPARE1_BLE_REG: RF_TXDAC_CLK_POL_SEL (Bit 3) */ -#define RFCU_RF_SPARE1_BLE_REG_RF_TXDAC_CLK_POL_SEL_Msk (0x8UL) /*!< RFCU RF_SPARE1_BLE_REG: RF_TXDAC_CLK_POL_SEL (Bitfield-Mask: 0x01) */ -#define RFCU_RF_SPARE1_BLE_REG_RF_GDAC_CUR_SET_Pos (4UL) /*!< RFCU RF_SPARE1_BLE_REG: RF_GDAC_CUR_SET (Bit 4) */ -#define RFCU_RF_SPARE1_BLE_REG_RF_GDAC_CUR_SET_Msk (0x30UL) /*!< RFCU RF_SPARE1_BLE_REG: RF_GDAC_CUR_SET (Bitfield-Mask: 0x03) */ -#define RFCU_RF_SPARE1_BLE_REG_RF_SPARE_REG_Pos (6UL) /*!< RFCU RF_SPARE1_BLE_REG: RF_SPARE_REG (Bit 6) */ -#define RFCU_RF_SPARE1_BLE_REG_RF_SPARE_REG_Msk (0xffc0UL) /*!< RFCU RF_SPARE1_BLE_REG: RF_SPARE_REG (Bitfield-Mask: 0x3ff) */ - -/* --------------------------- RFCU_RF_SPARE1_FTDF_REG -------------------------- */ -#define RFCU_RF_SPARE1_FTDF_REG_RF_XTAL_RFCLK_TEST_Pos (0UL) /*!< RFCU RF_SPARE1_FTDF_REG: RF_XTAL_RFCLK_TEST (Bit 0) */ -#define RFCU_RF_SPARE1_FTDF_REG_RF_XTAL_RFCLK_TEST_Msk (0x1UL) /*!< RFCU RF_SPARE1_FTDF_REG: RF_XTAL_RFCLK_TEST (Bitfield-Mask: 0x01) */ -#define RFCU_RF_SPARE1_FTDF_REG_RF_XTAL_PLL_DXTAL16_TEST_Pos (1UL) /*!< RFCU RF_SPARE1_FTDF_REG: RF_XTAL_PLL_DXTAL16_TEST (Bit 1) */ -#define RFCU_RF_SPARE1_FTDF_REG_RF_XTAL_PLL_DXTAL16_TEST_Msk (0x2UL) /*!< RFCU RF_SPARE1_FTDF_REG: RF_XTAL_PLL_DXTAL16_TEST (Bitfield-Mask: 0x01) */ -#define RFCU_RF_SPARE1_FTDF_REG_RF_VTUNE_TO_ADC_TEST_EN_Pos (2UL) /*!< RFCU RF_SPARE1_FTDF_REG: RF_VTUNE_TO_ADC_TEST_EN (Bit 2) */ -#define RFCU_RF_SPARE1_FTDF_REG_RF_VTUNE_TO_ADC_TEST_EN_Msk (0x4UL) /*!< RFCU RF_SPARE1_FTDF_REG: RF_VTUNE_TO_ADC_TEST_EN (Bitfield-Mask: 0x01) */ -#define RFCU_RF_SPARE1_FTDF_REG_RF_TXDAC_CLK_POL_SEL_Pos (3UL) /*!< RFCU RF_SPARE1_FTDF_REG: RF_TXDAC_CLK_POL_SEL (Bit 3) */ -#define RFCU_RF_SPARE1_FTDF_REG_RF_TXDAC_CLK_POL_SEL_Msk (0x8UL) /*!< RFCU RF_SPARE1_FTDF_REG: RF_TXDAC_CLK_POL_SEL (Bitfield-Mask: 0x01) */ -#define RFCU_RF_SPARE1_FTDF_REG_RF_GDAC_CUR_SET_Pos (4UL) /*!< RFCU RF_SPARE1_FTDF_REG: RF_GDAC_CUR_SET (Bit 4) */ -#define RFCU_RF_SPARE1_FTDF_REG_RF_GDAC_CUR_SET_Msk (0x30UL) /*!< RFCU RF_SPARE1_FTDF_REG: RF_GDAC_CUR_SET (Bitfield-Mask: 0x03) */ -#define RFCU_RF_SPARE1_FTDF_REG_RF_SPARE_REG_Pos (6UL) /*!< RFCU RF_SPARE1_FTDF_REG: RF_SPARE_REG (Bit 6) */ -#define RFCU_RF_SPARE1_FTDF_REG_RF_SPARE_REG_Msk (0xffc0UL) /*!< RFCU RF_SPARE1_FTDF_REG: RF_SPARE_REG (Bitfield-Mask: 0x3ff) */ - -/* ------------------------- RFCU_RF_BIAS_CTRL1_BLE_REG ------------------------- */ -#define RFCU_RF_BIAS_CTRL1_BLE_REG_MIX_BIAS_BLE_SET_Pos (0UL) /*!< RFCU RF_BIAS_CTRL1_BLE_REG: MIX_BIAS_BLE_SET (Bit 0) */ -#define RFCU_RF_BIAS_CTRL1_BLE_REG_MIX_BIAS_BLE_SET_Msk (0xfUL) /*!< RFCU RF_BIAS_CTRL1_BLE_REG: MIX_BIAS_BLE_SET (Bitfield-Mask: 0x0f) */ -#define RFCU_RF_BIAS_CTRL1_BLE_REG_CP_BIAS_BLE_SET_Pos (4UL) /*!< RFCU RF_BIAS_CTRL1_BLE_REG: CP_BIAS_BLE_SET (Bit 4) */ -#define RFCU_RF_BIAS_CTRL1_BLE_REG_CP_BIAS_BLE_SET_Msk (0xf0UL) /*!< RFCU RF_BIAS_CTRL1_BLE_REG: CP_BIAS_BLE_SET (Bitfield-Mask: 0x0f) */ -#define RFCU_RF_BIAS_CTRL1_BLE_REG_VCO_BIAS_BLE_SET_Pos (8UL) /*!< RFCU RF_BIAS_CTRL1_BLE_REG: VCO_BIAS_BLE_SET (Bit 8) */ -#define RFCU_RF_BIAS_CTRL1_BLE_REG_VCO_BIAS_BLE_SET_Msk (0xf00UL) /*!< RFCU RF_BIAS_CTRL1_BLE_REG: VCO_BIAS_BLE_SET (Bitfield-Mask: 0x0f) */ -#define RFCU_RF_BIAS_CTRL1_BLE_REG_IFF_BIAS_BLE_SET_Pos (12UL) /*!< RFCU RF_BIAS_CTRL1_BLE_REG: IFF_BIAS_BLE_SET (Bit 12) */ -#define RFCU_RF_BIAS_CTRL1_BLE_REG_IFF_BIAS_BLE_SET_Msk (0xf000UL) /*!< RFCU RF_BIAS_CTRL1_BLE_REG: IFF_BIAS_BLE_SET (Bitfield-Mask: 0x0f) */ - -/* ------------------------- RFCU_RF_BIAS_CTRL1_FTDF_REG ------------------------ */ -#define RFCU_RF_BIAS_CTRL1_FTDF_REG_MIX_BIAS_FTDF_SET_Pos (0UL) /*!< RFCU RF_BIAS_CTRL1_FTDF_REG: MIX_BIAS_FTDF_SET (Bit 0) */ -#define RFCU_RF_BIAS_CTRL1_FTDF_REG_MIX_BIAS_FTDF_SET_Msk (0xfUL) /*!< RFCU RF_BIAS_CTRL1_FTDF_REG: MIX_BIAS_FTDF_SET (Bitfield-Mask: 0x0f) */ -#define RFCU_RF_BIAS_CTRL1_FTDF_REG_CP_BIAS_FTDF_SET_Pos (4UL) /*!< RFCU RF_BIAS_CTRL1_FTDF_REG: CP_BIAS_FTDF_SET (Bit 4) */ -#define RFCU_RF_BIAS_CTRL1_FTDF_REG_CP_BIAS_FTDF_SET_Msk (0xf0UL) /*!< RFCU RF_BIAS_CTRL1_FTDF_REG: CP_BIAS_FTDF_SET (Bitfield-Mask: 0x0f) */ -#define RFCU_RF_BIAS_CTRL1_FTDF_REG_VCO_BIAS_FTDF_SET_Pos (8UL) /*!< RFCU RF_BIAS_CTRL1_FTDF_REG: VCO_BIAS_FTDF_SET (Bit 8) */ -#define RFCU_RF_BIAS_CTRL1_FTDF_REG_VCO_BIAS_FTDF_SET_Msk (0xf00UL) /*!< RFCU RF_BIAS_CTRL1_FTDF_REG: VCO_BIAS_FTDF_SET (Bitfield-Mask: 0x0f) */ -#define RFCU_RF_BIAS_CTRL1_FTDF_REG_IFF_BIAS_FTDF_SET_Pos (12UL) /*!< RFCU RF_BIAS_CTRL1_FTDF_REG: IFF_BIAS_FTDF_SET (Bit 12) */ -#define RFCU_RF_BIAS_CTRL1_FTDF_REG_IFF_BIAS_FTDF_SET_Msk (0xf000UL) /*!< RFCU RF_BIAS_CTRL1_FTDF_REG: IFF_BIAS_FTDF_SET (Bitfield-Mask: 0x0f) */ - -/* ---------------------------- RFCU_RF_IFF_CTRL1_REG --------------------------- */ -#define RFCU_RF_IFF_CTRL1_REG_IF_CAL_CAP_Pos (0UL) /*!< RFCU RF_IFF_CTRL1_REG: IF_CAL_CAP (Bit 0) */ -#define RFCU_RF_IFF_CTRL1_REG_IF_CAL_CAP_Msk (0x1fUL) /*!< RFCU RF_IFF_CTRL1_REG: IF_CAL_CAP (Bitfield-Mask: 0x1f) */ -#define RFCU_RF_IFF_CTRL1_REG_IF_MUTE_Pos (5UL) /*!< RFCU RF_IFF_CTRL1_REG: IF_MUTE (Bit 5) */ -#define RFCU_RF_IFF_CTRL1_REG_IF_MUTE_Msk (0x20UL) /*!< RFCU RF_IFF_CTRL1_REG: IF_MUTE (Bitfield-Mask: 0x01) */ -#define RFCU_RF_IFF_CTRL1_REG_IFF_DCOC_DAC_DIS_Pos (6UL) /*!< RFCU RF_IFF_CTRL1_REG: IFF_DCOC_DAC_DIS (Bit 6) */ -#define RFCU_RF_IFF_CTRL1_REG_IFF_DCOC_DAC_DIS_Msk (0x40UL) /*!< RFCU RF_IFF_CTRL1_REG: IFF_DCOC_DAC_DIS (Bitfield-Mask: 0x01) */ -#define RFCU_RF_IFF_CTRL1_REG_RO_TO_PINS_Pos (7UL) /*!< RFCU RF_IFF_CTRL1_REG: RO_TO_PINS (Bit 7) */ -#define RFCU_RF_IFF_CTRL1_REG_RO_TO_PINS_Msk (0x80UL) /*!< RFCU RF_IFF_CTRL1_REG: RO_TO_PINS (Bitfield-Mask: 0x01) */ -#define RFCU_RF_IFF_CTRL1_REG_IF_SEL_SET2_GT_Pos (8UL) /*!< RFCU RF_IFF_CTRL1_REG: IF_SEL_SET2_GT (Bit 8) */ -#define RFCU_RF_IFF_CTRL1_REG_IF_SEL_SET2_GT_Msk (0xf00UL) /*!< RFCU RF_IFF_CTRL1_REG: IF_SEL_SET2_GT (Bitfield-Mask: 0x0f) */ -#define RFCU_RF_IFF_CTRL1_REG_IF_SELECT_FSM_Pos (12UL) /*!< RFCU RF_IFF_CTRL1_REG: IF_SELECT_FSM (Bit 12) */ -#define RFCU_RF_IFF_CTRL1_REG_IF_SELECT_FSM_Msk (0x1000UL) /*!< RFCU RF_IFF_CTRL1_REG: IF_SELECT_FSM (Bitfield-Mask: 0x01) */ -#define RFCU_RF_IFF_CTRL1_REG_IFF_COMPLEX_DIS_Pos (13UL) /*!< RFCU RF_IFF_CTRL1_REG: IFF_COMPLEX_DIS (Bit 13) */ -#define RFCU_RF_IFF_CTRL1_REG_IFF_COMPLEX_DIS_Msk (0x2000UL) /*!< RFCU RF_IFF_CTRL1_REG: IFF_COMPLEX_DIS (Bitfield-Mask: 0x01) */ - -/* ---------------------------- RFCU_RF_ADC_CTRL1_REG --------------------------- */ -#define RFCU_RF_ADC_CTRL1_REG_ADC_DC_OFFSET_SEL_Pos (0UL) /*!< RFCU RF_ADC_CTRL1_REG: ADC_DC_OFFSET_SEL (Bit 0) */ -#define RFCU_RF_ADC_CTRL1_REG_ADC_DC_OFFSET_SEL_Msk (0x1UL) /*!< RFCU RF_ADC_CTRL1_REG: ADC_DC_OFFSET_SEL (Bitfield-Mask: 0x01) */ -#define RFCU_RF_ADC_CTRL1_REG_ADC_MUTE_Pos (13UL) /*!< RFCU RF_ADC_CTRL1_REG: ADC_MUTE (Bit 13) */ -#define RFCU_RF_ADC_CTRL1_REG_ADC_MUTE_Msk (0x2000UL) /*!< RFCU RF_ADC_CTRL1_REG: ADC_MUTE (Bitfield-Mask: 0x01) */ -#define RFCU_RF_ADC_CTRL1_REG_ADC_SIGN_Pos (14UL) /*!< RFCU RF_ADC_CTRL1_REG: ADC_SIGN (Bit 14) */ -#define RFCU_RF_ADC_CTRL1_REG_ADC_SIGN_Msk (0x4000UL) /*!< RFCU RF_ADC_CTRL1_REG: ADC_SIGN (Bitfield-Mask: 0x01) */ - -/* ---------------------------- RFCU_RF_ADC_CTRL2_REG --------------------------- */ -#define RFCU_RF_ADC_CTRL2_REG_ADC_OFFP_I_WR_Pos (0UL) /*!< RFCU RF_ADC_CTRL2_REG: ADC_OFFP_I_WR (Bit 0) */ -#define RFCU_RF_ADC_CTRL2_REG_ADC_OFFP_I_WR_Msk (0xffUL) /*!< RFCU RF_ADC_CTRL2_REG: ADC_OFFP_I_WR (Bitfield-Mask: 0xff) */ -#define RFCU_RF_ADC_CTRL2_REG_ADC_OFFN_I_WR_Pos (8UL) /*!< RFCU RF_ADC_CTRL2_REG: ADC_OFFN_I_WR (Bit 8) */ -#define RFCU_RF_ADC_CTRL2_REG_ADC_OFFN_I_WR_Msk (0xff00UL) /*!< RFCU RF_ADC_CTRL2_REG: ADC_OFFN_I_WR (Bitfield-Mask: 0xff) */ - -/* ---------------------------- RFCU_RF_ADC_CTRL3_REG --------------------------- */ -#define RFCU_RF_ADC_CTRL3_REG_ADC_OFFP_Q_WR_Pos (0UL) /*!< RFCU RF_ADC_CTRL3_REG: ADC_OFFP_Q_WR (Bit 0) */ -#define RFCU_RF_ADC_CTRL3_REG_ADC_OFFP_Q_WR_Msk (0xffUL) /*!< RFCU RF_ADC_CTRL3_REG: ADC_OFFP_Q_WR (Bitfield-Mask: 0xff) */ -#define RFCU_RF_ADC_CTRL3_REG_ADC_OFFN_Q_WR_Pos (8UL) /*!< RFCU RF_ADC_CTRL3_REG: ADC_OFFN_Q_WR (Bit 8) */ -#define RFCU_RF_ADC_CTRL3_REG_ADC_OFFN_Q_WR_Msk (0xff00UL) /*!< RFCU RF_ADC_CTRL3_REG: ADC_OFFN_Q_WR (Bitfield-Mask: 0xff) */ - -/* ----------------------------- RFCU_RF_PA_CTRL_REG ---------------------------- */ -#define RFCU_RF_PA_CTRL_REG_PA_RAMPSPEED_DOWN_Pos (5UL) /*!< RFCU RF_PA_CTRL_REG: PA_RAMPSPEED_DOWN (Bit 5) */ -#define RFCU_RF_PA_CTRL_REG_PA_RAMPSPEED_DOWN_Msk (0x60UL) /*!< RFCU RF_PA_CTRL_REG: PA_RAMPSPEED_DOWN (Bitfield-Mask: 0x03) */ -#define RFCU_RF_PA_CTRL_REG_PA_RAMPSPEED_UP_Pos (7UL) /*!< RFCU RF_PA_CTRL_REG: PA_RAMPSPEED_UP (Bit 7) */ -#define RFCU_RF_PA_CTRL_REG_PA_RAMPSPEED_UP_Msk (0x180UL) /*!< RFCU RF_PA_CTRL_REG: PA_RAMPSPEED_UP (Bitfield-Mask: 0x03) */ -#define RFCU_RF_PA_CTRL_REG_PA_FAST_DISCHARGE_EN_Pos (9UL) /*!< RFCU RF_PA_CTRL_REG: PA_FAST_DISCHARGE_EN (Bit 9) */ -#define RFCU_RF_PA_CTRL_REG_PA_FAST_DISCHARGE_EN_Msk (0x200UL) /*!< RFCU RF_PA_CTRL_REG: PA_FAST_DISCHARGE_EN (Bitfield-Mask: 0x01) */ -#define RFCU_RF_PA_CTRL_REG_LEVEL_LDO_RFPA_Pos (11UL) /*!< RFCU RF_PA_CTRL_REG: LEVEL_LDO_RFPA (Bit 11) */ -#define RFCU_RF_PA_CTRL_REG_LEVEL_LDO_RFPA_Msk (0x7800UL) /*!< RFCU RF_PA_CTRL_REG: LEVEL_LDO_RFPA (Bitfield-Mask: 0x0f) */ - -/* ---------------------------- RFCU_RF_MGC_CTRL_REG ---------------------------- */ -#define RFCU_RF_MGC_CTRL_REG_MGC_GAIN_SET_Pos (0UL) /*!< RFCU RF_MGC_CTRL_REG: MGC_GAIN_SET (Bit 0) */ -#define RFCU_RF_MGC_CTRL_REG_MGC_GAIN_SET_Msk (0x1UL) /*!< RFCU RF_MGC_CTRL_REG: MGC_GAIN_SET (Bitfield-Mask: 0x01) */ -#define RFCU_RF_MGC_CTRL_REG_MGC_POLE_SW_Pos (1UL) /*!< RFCU RF_MGC_CTRL_REG: MGC_POLE_SW (Bit 1) */ -#define RFCU_RF_MGC_CTRL_REG_MGC_POLE_SW_Msk (0x2UL) /*!< RFCU RF_MGC_CTRL_REG: MGC_POLE_SW (Bitfield-Mask: 0x01) */ -#define RFCU_RF_MGC_CTRL_REG_GAUSS_DAC_CTRL_Pos (2UL) /*!< RFCU RF_MGC_CTRL_REG: GAUSS_DAC_CTRL (Bit 2) */ -#define RFCU_RF_MGC_CTRL_REG_GAUSS_DAC_CTRL_Msk (0xcUL) /*!< RFCU RF_MGC_CTRL_REG: GAUSS_DAC_CTRL (Bitfield-Mask: 0x03) */ - -/* --------------------------- RFCU_RF_VCOVAR_CTRL_REG -------------------------- */ -#define RFCU_RF_VCOVAR_CTRL_REG_TUNE_VAR_V0_Pos (0UL) /*!< RFCU RF_VCOVAR_CTRL_REG: TUNE_VAR_V0 (Bit 0) */ -#define RFCU_RF_VCOVAR_CTRL_REG_TUNE_VAR_V0_Msk (0x7UL) /*!< RFCU RF_VCOVAR_CTRL_REG: TUNE_VAR_V0 (Bitfield-Mask: 0x07) */ -#define RFCU_RF_VCOVAR_CTRL_REG_TUNE_VAR_V1_Pos (3UL) /*!< RFCU RF_VCOVAR_CTRL_REG: TUNE_VAR_V1 (Bit 3) */ -#define RFCU_RF_VCOVAR_CTRL_REG_TUNE_VAR_V1_Msk (0x38UL) /*!< RFCU RF_VCOVAR_CTRL_REG: TUNE_VAR_V1 (Bitfield-Mask: 0x07) */ -#define RFCU_RF_VCOVAR_CTRL_REG_TUNE_VAR_V2_Pos (6UL) /*!< RFCU RF_VCOVAR_CTRL_REG: TUNE_VAR_V2 (Bit 6) */ -#define RFCU_RF_VCOVAR_CTRL_REG_TUNE_VAR_V2_Msk (0x1c0UL) /*!< RFCU RF_VCOVAR_CTRL_REG: TUNE_VAR_V2 (Bitfield-Mask: 0x07) */ -#define RFCU_RF_VCOVAR_CTRL_REG_TUNE_VAR_V3_Pos (9UL) /*!< RFCU RF_VCOVAR_CTRL_REG: TUNE_VAR_V3 (Bit 9) */ -#define RFCU_RF_VCOVAR_CTRL_REG_TUNE_VAR_V3_Msk (0xe00UL) /*!< RFCU RF_VCOVAR_CTRL_REG: TUNE_VAR_V3 (Bitfield-Mask: 0x07) */ -#define RFCU_RF_VCOVAR_CTRL_REG_MOD_VAR_V0_Pos (12UL) /*!< RFCU RF_VCOVAR_CTRL_REG: MOD_VAR_V0 (Bit 12) */ -#define RFCU_RF_VCOVAR_CTRL_REG_MOD_VAR_V0_Msk (0x3000UL) /*!< RFCU RF_VCOVAR_CTRL_REG: MOD_VAR_V0 (Bitfield-Mask: 0x03) */ -#define RFCU_RF_VCOVAR_CTRL_REG_MOD_VAR_V1_Pos (14UL) /*!< RFCU RF_VCOVAR_CTRL_REG: MOD_VAR_V1 (Bit 14) */ -#define RFCU_RF_VCOVAR_CTRL_REG_MOD_VAR_V1_Msk (0xc000UL) /*!< RFCU RF_VCOVAR_CTRL_REG: MOD_VAR_V1 (Bitfield-Mask: 0x03) */ - -/* ---------------------------- RFCU_RF_PFD_CTRL_REG ---------------------------- */ -#define RFCU_RF_PFD_CTRL_REG_FIXED_CUR_SET_Pos (0UL) /*!< RFCU RF_PFD_CTRL_REG: FIXED_CUR_SET (Bit 0) */ -#define RFCU_RF_PFD_CTRL_REG_FIXED_CUR_SET_Msk (0x3UL) /*!< RFCU RF_PFD_CTRL_REG: FIXED_CUR_SET (Bitfield-Mask: 0x03) */ -#define RFCU_RF_PFD_CTRL_REG_FIXED_CUR_EN_Pos (2UL) /*!< RFCU RF_PFD_CTRL_REG: FIXED_CUR_EN (Bit 2) */ -#define RFCU_RF_PFD_CTRL_REG_FIXED_CUR_EN_Msk (0x4UL) /*!< RFCU RF_PFD_CTRL_REG: FIXED_CUR_EN (Bitfield-Mask: 0x01) */ -#define RFCU_RF_PFD_CTRL_REG_PFD_POLARITY_Pos (3UL) /*!< RFCU RF_PFD_CTRL_REG: PFD_POLARITY (Bit 3) */ -#define RFCU_RF_PFD_CTRL_REG_PFD_POLARITY_Msk (0x8UL) /*!< RFCU RF_PFD_CTRL_REG: PFD_POLARITY (Bitfield-Mask: 0x01) */ - -/* --------------------------- RFCU_RF_CP_CTRL_BLE_REG -------------------------- */ -#define RFCU_RF_CP_CTRL_BLE_REG_CP_CUR_SET_BLE_RX_Pos (0UL) /*!< RFCU RF_CP_CTRL_BLE_REG: CP_CUR_SET_BLE_RX (Bit 0) */ -#define RFCU_RF_CP_CTRL_BLE_REG_CP_CUR_SET_BLE_RX_Msk (0xfUL) /*!< RFCU RF_CP_CTRL_BLE_REG: CP_CUR_SET_BLE_RX (Bitfield-Mask: 0x0f) */ -#define RFCU_RF_CP_CTRL_BLE_REG_CP_CUR_SET_BLE_TX_Pos (4UL) /*!< RFCU RF_CP_CTRL_BLE_REG: CP_CUR_SET_BLE_TX (Bit 4) */ -#define RFCU_RF_CP_CTRL_BLE_REG_CP_CUR_SET_BLE_TX_Msk (0xf0UL) /*!< RFCU RF_CP_CTRL_BLE_REG: CP_CUR_SET_BLE_TX (Bitfield-Mask: 0x0f) */ -#define RFCU_RF_CP_CTRL_BLE_REG_CP_CUR_BLE_RX_Pos (8UL) /*!< RFCU RF_CP_CTRL_BLE_REG: CP_CUR_BLE_RX (Bit 8) */ -#define RFCU_RF_CP_CTRL_BLE_REG_CP_CUR_BLE_RX_Msk (0xf00UL) /*!< RFCU RF_CP_CTRL_BLE_REG: CP_CUR_BLE_RX (Bitfield-Mask: 0x0f) */ -#define RFCU_RF_CP_CTRL_BLE_REG_CP_CUR_BLE_TX_Pos (12UL) /*!< RFCU RF_CP_CTRL_BLE_REG: CP_CUR_BLE_TX (Bit 12) */ -#define RFCU_RF_CP_CTRL_BLE_REG_CP_CUR_BLE_TX_Msk (0xf000UL) /*!< RFCU RF_CP_CTRL_BLE_REG: CP_CUR_BLE_TX (Bitfield-Mask: 0x0f) */ - -/* -------------------------- RFCU_RF_CP_CTRL_FTDF_REG -------------------------- */ -#define RFCU_RF_CP_CTRL_FTDF_REG_CP_CUR_SET_FTDF_RX_Pos (0UL) /*!< RFCU RF_CP_CTRL_FTDF_REG: CP_CUR_SET_FTDF_RX (Bit 0) */ -#define RFCU_RF_CP_CTRL_FTDF_REG_CP_CUR_SET_FTDF_RX_Msk (0xfUL) /*!< RFCU RF_CP_CTRL_FTDF_REG: CP_CUR_SET_FTDF_RX (Bitfield-Mask: 0x0f) */ -#define RFCU_RF_CP_CTRL_FTDF_REG_CP_CUR_SET_FTDF_TX_Pos (4UL) /*!< RFCU RF_CP_CTRL_FTDF_REG: CP_CUR_SET_FTDF_TX (Bit 4) */ -#define RFCU_RF_CP_CTRL_FTDF_REG_CP_CUR_SET_FTDF_TX_Msk (0xf0UL) /*!< RFCU RF_CP_CTRL_FTDF_REG: CP_CUR_SET_FTDF_TX (Bitfield-Mask: 0x0f) */ -#define RFCU_RF_CP_CTRL_FTDF_REG_CP_CUR_FTDF_RX_Pos (8UL) /*!< RFCU RF_CP_CTRL_FTDF_REG: CP_CUR_FTDF_RX (Bit 8) */ -#define RFCU_RF_CP_CTRL_FTDF_REG_CP_CUR_FTDF_RX_Msk (0xf00UL) /*!< RFCU RF_CP_CTRL_FTDF_REG: CP_CUR_FTDF_RX (Bitfield-Mask: 0x0f) */ -#define RFCU_RF_CP_CTRL_FTDF_REG_CP_CUR_FTDF_TX_Pos (12UL) /*!< RFCU RF_CP_CTRL_FTDF_REG: CP_CUR_FTDF_TX (Bit 12) */ -#define RFCU_RF_CP_CTRL_FTDF_REG_CP_CUR_FTDF_TX_Msk (0xf000UL) /*!< RFCU RF_CP_CTRL_FTDF_REG: CP_CUR_FTDF_TX (Bitfield-Mask: 0x0f) */ - -/* ------------------------- RFCU_RF_LF_RES_CTRL_BLE_REG ------------------------ */ -#define RFCU_RF_LF_RES_CTRL_BLE_REG_LF_RES_SET_BLE_RX_Pos (0UL) /*!< RFCU RF_LF_RES_CTRL_BLE_REG: LF_RES_SET_BLE_RX (Bit 0) */ -#define RFCU_RF_LF_RES_CTRL_BLE_REG_LF_RES_SET_BLE_RX_Msk (0xfUL) /*!< RFCU RF_LF_RES_CTRL_BLE_REG: LF_RES_SET_BLE_RX (Bitfield-Mask: 0x0f) */ -#define RFCU_RF_LF_RES_CTRL_BLE_REG_LF_RES_SET_BLE_TX_Pos (4UL) /*!< RFCU RF_LF_RES_CTRL_BLE_REG: LF_RES_SET_BLE_TX (Bit 4) */ -#define RFCU_RF_LF_RES_CTRL_BLE_REG_LF_RES_SET_BLE_TX_Msk (0xf0UL) /*!< RFCU RF_LF_RES_CTRL_BLE_REG: LF_RES_SET_BLE_TX (Bitfield-Mask: 0x0f) */ -#define RFCU_RF_LF_RES_CTRL_BLE_REG_LF_RES_BLE_RX_Pos (8UL) /*!< RFCU RF_LF_RES_CTRL_BLE_REG: LF_RES_BLE_RX (Bit 8) */ -#define RFCU_RF_LF_RES_CTRL_BLE_REG_LF_RES_BLE_RX_Msk (0xf00UL) /*!< RFCU RF_LF_RES_CTRL_BLE_REG: LF_RES_BLE_RX (Bitfield-Mask: 0x0f) */ -#define RFCU_RF_LF_RES_CTRL_BLE_REG_LF_RES_BLE_TX_Pos (12UL) /*!< RFCU RF_LF_RES_CTRL_BLE_REG: LF_RES_BLE_TX (Bit 12) */ -#define RFCU_RF_LF_RES_CTRL_BLE_REG_LF_RES_BLE_TX_Msk (0xf000UL) /*!< RFCU RF_LF_RES_CTRL_BLE_REG: LF_RES_BLE_TX (Bitfield-Mask: 0x0f) */ - -/* ------------------------ RFCU_RF_LF_RES_CTRL_FTDF_REG ------------------------ */ -#define RFCU_RF_LF_RES_CTRL_FTDF_REG_LF_RES_SET_FTDF_RX_Pos (0UL) /*!< RFCU RF_LF_RES_CTRL_FTDF_REG: LF_RES_SET_FTDF_RX (Bit 0) */ -#define RFCU_RF_LF_RES_CTRL_FTDF_REG_LF_RES_SET_FTDF_RX_Msk (0xfUL) /*!< RFCU RF_LF_RES_CTRL_FTDF_REG: LF_RES_SET_FTDF_RX (Bitfield-Mask: 0x0f) */ -#define RFCU_RF_LF_RES_CTRL_FTDF_REG_LF_RES_SET_FTDF_TX_Pos (4UL) /*!< RFCU RF_LF_RES_CTRL_FTDF_REG: LF_RES_SET_FTDF_TX (Bit 4) */ -#define RFCU_RF_LF_RES_CTRL_FTDF_REG_LF_RES_SET_FTDF_TX_Msk (0xf0UL) /*!< RFCU RF_LF_RES_CTRL_FTDF_REG: LF_RES_SET_FTDF_TX (Bitfield-Mask: 0x0f) */ -#define RFCU_RF_LF_RES_CTRL_FTDF_REG_LF_RES_FTDF_RX_Pos (8UL) /*!< RFCU RF_LF_RES_CTRL_FTDF_REG: LF_RES_FTDF_RX (Bit 8) */ -#define RFCU_RF_LF_RES_CTRL_FTDF_REG_LF_RES_FTDF_RX_Msk (0xf00UL) /*!< RFCU RF_LF_RES_CTRL_FTDF_REG: LF_RES_FTDF_RX (Bitfield-Mask: 0x0f) */ -#define RFCU_RF_LF_RES_CTRL_FTDF_REG_LF_RES_FTDF_TX_Pos (12UL) /*!< RFCU RF_LF_RES_CTRL_FTDF_REG: LF_RES_FTDF_TX (Bit 12) */ -#define RFCU_RF_LF_RES_CTRL_FTDF_REG_LF_RES_FTDF_TX_Msk (0xf000UL) /*!< RFCU RF_LF_RES_CTRL_FTDF_REG: LF_RES_FTDF_TX (Bitfield-Mask: 0x0f) */ - -/* ------------------------- RFCU_RF_MIXER_CTRL1_BLE_REG ------------------------ */ -#define RFCU_RF_MIXER_CTRL1_BLE_REG_MIX_TRIM_GMBIAS_BLE_Pos (0UL) /*!< RFCU RF_MIXER_CTRL1_BLE_REG: MIX_TRIM_GMBIAS_BLE (Bit 0) */ -#define RFCU_RF_MIXER_CTRL1_BLE_REG_MIX_TRIM_GMBIAS_BLE_Msk (0xfUL) /*!< RFCU RF_MIXER_CTRL1_BLE_REG: MIX_TRIM_GMBIAS_BLE (Bitfield-Mask: 0x0f) */ -#define RFCU_RF_MIXER_CTRL1_BLE_REG_MIX_TRIM_IBIAS_BLE_Pos (4UL) /*!< RFCU RF_MIXER_CTRL1_BLE_REG: MIX_TRIM_IBIAS_BLE (Bit 4) */ -#define RFCU_RF_MIXER_CTRL1_BLE_REG_MIX_TRIM_IBIAS_BLE_Msk (0xf0UL) /*!< RFCU RF_MIXER_CTRL1_BLE_REG: MIX_TRIM_IBIAS_BLE (Bitfield-Mask: 0x0f) */ -#define RFCU_RF_MIXER_CTRL1_BLE_REG_MIX_TRIM_VCM_BLE_Pos (8UL) /*!< RFCU RF_MIXER_CTRL1_BLE_REG: MIX_TRIM_VCM_BLE (Bit 8) */ -#define RFCU_RF_MIXER_CTRL1_BLE_REG_MIX_TRIM_VCM_BLE_Msk (0xf00UL) /*!< RFCU RF_MIXER_CTRL1_BLE_REG: MIX_TRIM_VCM_BLE (Bitfield-Mask: 0x0f) */ -#define RFCU_RF_MIXER_CTRL1_BLE_REG_MIX_SPARE_BLE_Pos (12UL) /*!< RFCU RF_MIXER_CTRL1_BLE_REG: MIX_SPARE_BLE (Bit 12) */ -#define RFCU_RF_MIXER_CTRL1_BLE_REG_MIX_SPARE_BLE_Msk (0xf000UL) /*!< RFCU RF_MIXER_CTRL1_BLE_REG: MIX_SPARE_BLE (Bitfield-Mask: 0x0f) */ - -/* ------------------------ RFCU_RF_MIXER_CTRL1_FTDF_REG ------------------------ */ -#define RFCU_RF_MIXER_CTRL1_FTDF_REG_MIX_TRIM_GMBIAS_FTDF_Pos (0UL) /*!< RFCU RF_MIXER_CTRL1_FTDF_REG: MIX_TRIM_GMBIAS_FTDF (Bit 0) */ -#define RFCU_RF_MIXER_CTRL1_FTDF_REG_MIX_TRIM_GMBIAS_FTDF_Msk (0xfUL) /*!< RFCU RF_MIXER_CTRL1_FTDF_REG: MIX_TRIM_GMBIAS_FTDF (Bitfield-Mask: 0x0f) */ -#define RFCU_RF_MIXER_CTRL1_FTDF_REG_MIX_TRIM_IBIAS_FTDF_Pos (4UL) /*!< RFCU RF_MIXER_CTRL1_FTDF_REG: MIX_TRIM_IBIAS_FTDF (Bit 4) */ -#define RFCU_RF_MIXER_CTRL1_FTDF_REG_MIX_TRIM_IBIAS_FTDF_Msk (0xf0UL) /*!< RFCU RF_MIXER_CTRL1_FTDF_REG: MIX_TRIM_IBIAS_FTDF (Bitfield-Mask: 0x0f) */ -#define RFCU_RF_MIXER_CTRL1_FTDF_REG_MIX_TRIM_VCM_FTDF_Pos (8UL) /*!< RFCU RF_MIXER_CTRL1_FTDF_REG: MIX_TRIM_VCM_FTDF (Bit 8) */ -#define RFCU_RF_MIXER_CTRL1_FTDF_REG_MIX_TRIM_VCM_FTDF_Msk (0xf00UL) /*!< RFCU RF_MIXER_CTRL1_FTDF_REG: MIX_TRIM_VCM_FTDF (Bitfield-Mask: 0x0f) */ -#define RFCU_RF_MIXER_CTRL1_FTDF_REG_MIX_SPARE_Pos (12UL) /*!< RFCU RF_MIXER_CTRL1_FTDF_REG: MIX_SPARE (Bit 12) */ -#define RFCU_RF_MIXER_CTRL1_FTDF_REG_MIX_SPARE_Msk (0xf000UL) /*!< RFCU RF_MIXER_CTRL1_FTDF_REG: MIX_SPARE (Bitfield-Mask: 0x0f) */ - -/* --------------------------- RFCU_RF_MIXER_CTRL2_REG -------------------------- */ -#define RFCU_RF_MIXER_CTRL2_REG_MIX_CAL_CAP_WR_BLE_Pos (0UL) /*!< RFCU RF_MIXER_CTRL2_REG: MIX_CAL_CAP_WR_BLE (Bit 0) */ -#define RFCU_RF_MIXER_CTRL2_REG_MIX_CAL_CAP_WR_BLE_Msk (0x1fUL) /*!< RFCU RF_MIXER_CTRL2_REG: MIX_CAL_CAP_WR_BLE (Bitfield-Mask: 0x1f) */ -#define RFCU_RF_MIXER_CTRL2_REG_MIX_CAL_SELECT_Pos (5UL) /*!< RFCU RF_MIXER_CTRL2_REG: MIX_CAL_SELECT (Bit 5) */ -#define RFCU_RF_MIXER_CTRL2_REG_MIX_CAL_SELECT_Msk (0x20UL) /*!< RFCU RF_MIXER_CTRL2_REG: MIX_CAL_SELECT (Bitfield-Mask: 0x01) */ -#define RFCU_RF_MIXER_CTRL2_REG_MIX_CAL_CAP_WR_FTDF_Pos (6UL) /*!< RFCU RF_MIXER_CTRL2_REG: MIX_CAL_CAP_WR_FTDF (Bit 6) */ -#define RFCU_RF_MIXER_CTRL2_REG_MIX_CAL_CAP_WR_FTDF_Msk (0x7c0UL) /*!< RFCU RF_MIXER_CTRL2_REG: MIX_CAL_CAP_WR_FTDF (Bitfield-Mask: 0x1f) */ - -/* ----------------------------- RFCU_RF_LF_CTRL_REG ---------------------------- */ -#define RFCU_RF_LF_CTRL_REG_LF_CAL_CAP_WR_BLE_Pos (0UL) /*!< RFCU RF_LF_CTRL_REG: LF_CAL_CAP_WR_BLE (Bit 0) */ -#define RFCU_RF_LF_CTRL_REG_LF_CAL_CAP_WR_BLE_Msk (0x1fUL) /*!< RFCU RF_LF_CTRL_REG: LF_CAL_CAP_WR_BLE (Bitfield-Mask: 0x1f) */ -#define RFCU_RF_LF_CTRL_REG_LF_CAL_CAP_SEL_Pos (5UL) /*!< RFCU RF_LF_CTRL_REG: LF_CAL_CAP_SEL (Bit 5) */ -#define RFCU_RF_LF_CTRL_REG_LF_CAL_CAP_SEL_Msk (0x20UL) /*!< RFCU RF_LF_CTRL_REG: LF_CAL_CAP_SEL (Bitfield-Mask: 0x01) */ -#define RFCU_RF_LF_CTRL_REG_LF_SHORT_R4_BLE_Pos (6UL) /*!< RFCU RF_LF_CTRL_REG: LF_SHORT_R4_BLE (Bit 6) */ -#define RFCU_RF_LF_CTRL_REG_LF_SHORT_R4_BLE_Msk (0x40UL) /*!< RFCU RF_LF_CTRL_REG: LF_SHORT_R4_BLE (Bitfield-Mask: 0x01) */ -#define RFCU_RF_LF_CTRL_REG_LF_SHORT_R4_FTDF_Pos (7UL) /*!< RFCU RF_LF_CTRL_REG: LF_SHORT_R4_FTDF (Bit 7) */ -#define RFCU_RF_LF_CTRL_REG_LF_SHORT_R4_FTDF_Msk (0x80UL) /*!< RFCU RF_LF_CTRL_REG: LF_SHORT_R4_FTDF (Bitfield-Mask: 0x01) */ -#define RFCU_RF_LF_CTRL_REG_LF_CAL_CAP_WR_FTDF_Pos (8UL) /*!< RFCU RF_LF_CTRL_REG: LF_CAL_CAP_WR_FTDF (Bit 8) */ -#define RFCU_RF_LF_CTRL_REG_LF_CAL_CAP_WR_FTDF_Msk (0x1f00UL) /*!< RFCU RF_LF_CTRL_REG: LF_CAL_CAP_WR_FTDF (Bitfield-Mask: 0x1f) */ - -/* ---------------------------- RFCU_RF_TDC_CTRL_REG ---------------------------- */ -#define RFCU_RF_TDC_CTRL_REG_CTRL_FAST_Pos (0UL) /*!< RFCU RF_TDC_CTRL_REG: CTRL_FAST (Bit 0) */ -#define RFCU_RF_TDC_CTRL_REG_CTRL_FAST_Msk (0xfUL) /*!< RFCU RF_TDC_CTRL_REG: CTRL_FAST (Bitfield-Mask: 0x0f) */ -#define RFCU_RF_TDC_CTRL_REG_CTRL_SLOW_Pos (4UL) /*!< RFCU RF_TDC_CTRL_REG: CTRL_SLOW (Bit 4) */ -#define RFCU_RF_TDC_CTRL_REG_CTRL_SLOW_Msk (0xf0UL) /*!< RFCU RF_TDC_CTRL_REG: CTRL_SLOW (Bitfield-Mask: 0x0f) */ -#define RFCU_RF_TDC_CTRL_REG_CAL_PH_1_Pos (8UL) /*!< RFCU RF_TDC_CTRL_REG: CAL_PH_1 (Bit 8) */ -#define RFCU_RF_TDC_CTRL_REG_CAL_PH_1_Msk (0x100UL) /*!< RFCU RF_TDC_CTRL_REG: CAL_PH_1 (Bitfield-Mask: 0x01) */ -#define RFCU_RF_TDC_CTRL_REG_CAL_PH_2_Pos (9UL) /*!< RFCU RF_TDC_CTRL_REG: CAL_PH_2 (Bit 9) */ -#define RFCU_RF_TDC_CTRL_REG_CAL_PH_2_Msk (0x200UL) /*!< RFCU RF_TDC_CTRL_REG: CAL_PH_2 (Bitfield-Mask: 0x01) */ -#define RFCU_RF_TDC_CTRL_REG_REF_CTRL_Pos (10UL) /*!< RFCU RF_TDC_CTRL_REG: REF_CTRL (Bit 10) */ -#define RFCU_RF_TDC_CTRL_REG_REF_CTRL_Msk (0xc00UL) /*!< RFCU RF_TDC_CTRL_REG: REF_CTRL (Bitfield-Mask: 0x03) */ -#define RFCU_RF_TDC_CTRL_REG_TDC_CONNECT_Pos (12UL) /*!< RFCU RF_TDC_CTRL_REG: TDC_CONNECT (Bit 12) */ -#define RFCU_RF_TDC_CTRL_REG_TDC_CONNECT_Msk (0x1000UL) /*!< RFCU RF_TDC_CTRL_REG: TDC_CONNECT (Bitfield-Mask: 0x01) */ - -/* ---------------------------- RFCU_RF_IO_CTRL1_REG ---------------------------- */ -#define RFCU_RF_IO_CTRL1_REG_RFIO_TRIM1_CAP_Pos (0UL) /*!< RFCU RF_IO_CTRL1_REG: RFIO_TRIM1_CAP (Bit 0) */ -#define RFCU_RF_IO_CTRL1_REG_RFIO_TRIM1_CAP_Msk (0xffUL) /*!< RFCU RF_IO_CTRL1_REG: RFIO_TRIM1_CAP (Bitfield-Mask: 0xff) */ - -/* ---------------------------- RFCU_RF_LNA_CTRL1_REG --------------------------- */ -#define RFCU_RF_LNA_CTRL1_REG_LNA_TRIM_CD_LF_Pos (0UL) /*!< RFCU RF_LNA_CTRL1_REG: LNA_TRIM_CD_LF (Bit 0) */ -#define RFCU_RF_LNA_CTRL1_REG_LNA_TRIM_CD_LF_Msk (0x3fUL) /*!< RFCU RF_LNA_CTRL1_REG: LNA_TRIM_CD_LF (Bitfield-Mask: 0x3f) */ -#define RFCU_RF_LNA_CTRL1_REG_LNA_TRIM_CD_HF_Pos (6UL) /*!< RFCU RF_LNA_CTRL1_REG: LNA_TRIM_CD_HF (Bit 6) */ -#define RFCU_RF_LNA_CTRL1_REG_LNA_TRIM_CD_HF_Msk (0xfc0UL) /*!< RFCU RF_LNA_CTRL1_REG: LNA_TRIM_CD_HF (Bitfield-Mask: 0x3f) */ - -/* ---------------------------- RFCU_RF_LNA_CTRL2_REG --------------------------- */ -#define RFCU_RF_LNA_CTRL2_REG_LNA_TRIM_GM_HI_Pos (0UL) /*!< RFCU RF_LNA_CTRL2_REG: LNA_TRIM_GM_HI (Bit 0) */ -#define RFCU_RF_LNA_CTRL2_REG_LNA_TRIM_GM_HI_Msk (0x3fUL) /*!< RFCU RF_LNA_CTRL2_REG: LNA_TRIM_GM_HI (Bitfield-Mask: 0x3f) */ -#define RFCU_RF_LNA_CTRL2_REG_LNA_TRIM_GM_LO_Pos (6UL) /*!< RFCU RF_LNA_CTRL2_REG: LNA_TRIM_GM_LO (Bit 6) */ -#define RFCU_RF_LNA_CTRL2_REG_LNA_TRIM_GM_LO_Msk (0xfc0UL) /*!< RFCU RF_LNA_CTRL2_REG: LNA_TRIM_GM_LO (Bitfield-Mask: 0x3f) */ - -/* ---------------------------- RFCU_RF_LNA_CTRL3_REG --------------------------- */ -#define RFCU_RF_LNA_CTRL3_REG_LNA_TRIM_CGS_Pos (0UL) /*!< RFCU RF_LNA_CTRL3_REG: LNA_TRIM_CGS (Bit 0) */ -#define RFCU_RF_LNA_CTRL3_REG_LNA_TRIM_CGS_Msk (0x1fUL) /*!< RFCU RF_LNA_CTRL3_REG: LNA_TRIM_CGS (Bitfield-Mask: 0x1f) */ - -/* -------------------------- RFCU_RF_VCO_AMP_CTRL1_REG ------------------------- */ -#define RFCU_RF_VCO_AMP_CTRL1_REG_VCO_AMPL_MODE_Pos (0UL) /*!< RFCU RF_VCO_AMP_CTRL1_REG: VCO_AMPL_MODE (Bit 0) */ -#define RFCU_RF_VCO_AMP_CTRL1_REG_VCO_AMPL_MODE_Msk (0x7fUL) /*!< RFCU RF_VCO_AMP_CTRL1_REG: VCO_AMPL_MODE (Bitfield-Mask: 0x7f) */ - -/* -------------------------- RFCU_RF_VCO_AMP_CTRL2_REG ------------------------- */ -#define RFCU_RF_VCO_AMP_CTRL2_REG_VCO_AMPL_SET_TX_Pos (0UL) /*!< RFCU RF_VCO_AMP_CTRL2_REG: VCO_AMPL_SET_TX (Bit 0) */ -#define RFCU_RF_VCO_AMP_CTRL2_REG_VCO_AMPL_SET_TX_Msk (0xffUL) /*!< RFCU RF_VCO_AMP_CTRL2_REG: VCO_AMPL_SET_TX (Bitfield-Mask: 0xff) */ -#define RFCU_RF_VCO_AMP_CTRL2_REG_VCO_AMPL_SET_RX_Pos (8UL) /*!< RFCU RF_VCO_AMP_CTRL2_REG: VCO_AMPL_SET_RX (Bit 8) */ -#define RFCU_RF_VCO_AMP_CTRL2_REG_VCO_AMPL_SET_RX_Msk (0xff00UL) /*!< RFCU RF_VCO_AMP_CTRL2_REG: VCO_AMPL_SET_RX (Bitfield-Mask: 0xff) */ - -/* --------------------------- RFCU_RF_TX_PWR_BLE_REG --------------------------- */ -#define RFCU_RF_TX_PWR_BLE_REG_TX_POWER_SET_Pos (0UL) /*!< RFCU RF_TX_PWR_BLE_REG: TX_POWER_SET (Bit 0) */ -#define RFCU_RF_TX_PWR_BLE_REG_TX_POWER_SET_Msk (0x7UL) /*!< RFCU RF_TX_PWR_BLE_REG: TX_POWER_SET (Bitfield-Mask: 0x07) */ - -/* -------------------------- RFCU_RF_TX_PWR_LUT_1_REG -------------------------- */ -#define RFCU_RF_TX_PWR_LUT_1_REG_TX_PWR_RF_IO_CTRL1_REG_Pos (0UL) /*!< RFCU RF_TX_PWR_LUT_1_REG: TX_PWR_RF_IO_CTRL1_REG (Bit 0) */ -#define RFCU_RF_TX_PWR_LUT_1_REG_TX_PWR_RF_IO_CTRL1_REG_Msk (0x3UL) /*!< RFCU RF_TX_PWR_LUT_1_REG: TX_PWR_RF_IO_CTRL1_REG (Bitfield-Mask: 0x03) */ -#define RFCU_RF_TX_PWR_LUT_1_REG_TX_PWR_RF_PA_CTRL_REG_Pos (2UL) /*!< RFCU RF_TX_PWR_LUT_1_REG: TX_PWR_RF_PA_CTRL_REG (Bit 2) */ -#define RFCU_RF_TX_PWR_LUT_1_REG_TX_PWR_RF_PA_CTRL_REG_Msk (0x3cUL) /*!< RFCU RF_TX_PWR_LUT_1_REG: TX_PWR_RF_PA_CTRL_REG (Bitfield-Mask: 0x0f) */ -#define RFCU_RF_TX_PWR_LUT_1_REG_TX_PWR_RF_LNA_CTRL3_REG_Pos (6UL) /*!< RFCU RF_TX_PWR_LUT_1_REG: TX_PWR_RF_LNA_CTRL3_REG (Bit 6) */ -#define RFCU_RF_TX_PWR_LUT_1_REG_TX_PWR_RF_LNA_CTRL3_REG_Msk (0x7c0UL) /*!< RFCU RF_TX_PWR_LUT_1_REG: TX_PWR_RF_LNA_CTRL3_REG (Bitfield-Mask: 0x1f) */ -#define RFCU_RF_TX_PWR_LUT_1_REG_TX_PWR_RFIO_TXRX_DCF_DIS_Pos (11UL) /*!< RFCU RF_TX_PWR_LUT_1_REG: TX_PWR_RFIO_TXRX_DCF_DIS (Bit 11) */ -#define RFCU_RF_TX_PWR_LUT_1_REG_TX_PWR_RFIO_TXRX_DCF_DIS_Msk (0x800UL) /*!< RFCU RF_TX_PWR_LUT_1_REG: TX_PWR_RFIO_TXRX_DCF_DIS (Bitfield-Mask: 0x01) */ - -/* -------------------------- RFCU_RF_TX_PWR_LUT_2_REG -------------------------- */ -#define RFCU_RF_TX_PWR_LUT_2_REG_TX_PWR_RF_IO_CTRL1_REG_Pos (0UL) /*!< RFCU RF_TX_PWR_LUT_2_REG: TX_PWR_RF_IO_CTRL1_REG (Bit 0) */ -#define RFCU_RF_TX_PWR_LUT_2_REG_TX_PWR_RF_IO_CTRL1_REG_Msk (0x3UL) /*!< RFCU RF_TX_PWR_LUT_2_REG: TX_PWR_RF_IO_CTRL1_REG (Bitfield-Mask: 0x03) */ -#define RFCU_RF_TX_PWR_LUT_2_REG_TX_PWR_RF_PA_CTRL_REG_Pos (2UL) /*!< RFCU RF_TX_PWR_LUT_2_REG: TX_PWR_RF_PA_CTRL_REG (Bit 2) */ -#define RFCU_RF_TX_PWR_LUT_2_REG_TX_PWR_RF_PA_CTRL_REG_Msk (0x3cUL) /*!< RFCU RF_TX_PWR_LUT_2_REG: TX_PWR_RF_PA_CTRL_REG (Bitfield-Mask: 0x0f) */ -#define RFCU_RF_TX_PWR_LUT_2_REG_TX_PWR_RF_LNA_CTRL3_REG_Pos (6UL) /*!< RFCU RF_TX_PWR_LUT_2_REG: TX_PWR_RF_LNA_CTRL3_REG (Bit 6) */ -#define RFCU_RF_TX_PWR_LUT_2_REG_TX_PWR_RF_LNA_CTRL3_REG_Msk (0x7c0UL) /*!< RFCU RF_TX_PWR_LUT_2_REG: TX_PWR_RF_LNA_CTRL3_REG (Bitfield-Mask: 0x1f) */ -#define RFCU_RF_TX_PWR_LUT_2_REG_TX_PWR_RFIO_TXRX_DCF_DIS_Pos (11UL) /*!< RFCU RF_TX_PWR_LUT_2_REG: TX_PWR_RFIO_TXRX_DCF_DIS (Bit 11) */ -#define RFCU_RF_TX_PWR_LUT_2_REG_TX_PWR_RFIO_TXRX_DCF_DIS_Msk (0x800UL) /*!< RFCU RF_TX_PWR_LUT_2_REG: TX_PWR_RFIO_TXRX_DCF_DIS (Bitfield-Mask: 0x01) */ - -/* -------------------------- RFCU_RF_TX_PWR_LUT_3_REG -------------------------- */ -#define RFCU_RF_TX_PWR_LUT_3_REG_TX_PWR_RF_IO_CTRL1_REG_Pos (0UL) /*!< RFCU RF_TX_PWR_LUT_3_REG: TX_PWR_RF_IO_CTRL1_REG (Bit 0) */ -#define RFCU_RF_TX_PWR_LUT_3_REG_TX_PWR_RF_IO_CTRL1_REG_Msk (0x3UL) /*!< RFCU RF_TX_PWR_LUT_3_REG: TX_PWR_RF_IO_CTRL1_REG (Bitfield-Mask: 0x03) */ -#define RFCU_RF_TX_PWR_LUT_3_REG_TX_PWR_RF_PA_CTRL_REG_Pos (2UL) /*!< RFCU RF_TX_PWR_LUT_3_REG: TX_PWR_RF_PA_CTRL_REG (Bit 2) */ -#define RFCU_RF_TX_PWR_LUT_3_REG_TX_PWR_RF_PA_CTRL_REG_Msk (0x3cUL) /*!< RFCU RF_TX_PWR_LUT_3_REG: TX_PWR_RF_PA_CTRL_REG (Bitfield-Mask: 0x0f) */ -#define RFCU_RF_TX_PWR_LUT_3_REG_TX_PWR_RF_LNA_CTRL3_REG_Pos (6UL) /*!< RFCU RF_TX_PWR_LUT_3_REG: TX_PWR_RF_LNA_CTRL3_REG (Bit 6) */ -#define RFCU_RF_TX_PWR_LUT_3_REG_TX_PWR_RF_LNA_CTRL3_REG_Msk (0x7c0UL) /*!< RFCU RF_TX_PWR_LUT_3_REG: TX_PWR_RF_LNA_CTRL3_REG (Bitfield-Mask: 0x1f) */ -#define RFCU_RF_TX_PWR_LUT_3_REG_TX_PWR_RFIO_TXRX_DCF_DIS_Pos (11UL) /*!< RFCU RF_TX_PWR_LUT_3_REG: TX_PWR_RFIO_TXRX_DCF_DIS (Bit 11) */ -#define RFCU_RF_TX_PWR_LUT_3_REG_TX_PWR_RFIO_TXRX_DCF_DIS_Msk (0x800UL) /*!< RFCU RF_TX_PWR_LUT_3_REG: TX_PWR_RFIO_TXRX_DCF_DIS (Bitfield-Mask: 0x01) */ - -/* -------------------------- RFCU_RF_TX_PWR_LUT_4_REG -------------------------- */ -#define RFCU_RF_TX_PWR_LUT_4_REG_TX_PWR_RF_IO_CTRL1_REG_Pos (0UL) /*!< RFCU RF_TX_PWR_LUT_4_REG: TX_PWR_RF_IO_CTRL1_REG (Bit 0) */ -#define RFCU_RF_TX_PWR_LUT_4_REG_TX_PWR_RF_IO_CTRL1_REG_Msk (0x3UL) /*!< RFCU RF_TX_PWR_LUT_4_REG: TX_PWR_RF_IO_CTRL1_REG (Bitfield-Mask: 0x03) */ -#define RFCU_RF_TX_PWR_LUT_4_REG_TX_PWR_RF_PA_CTRL_REG_Pos (2UL) /*!< RFCU RF_TX_PWR_LUT_4_REG: TX_PWR_RF_PA_CTRL_REG (Bit 2) */ -#define RFCU_RF_TX_PWR_LUT_4_REG_TX_PWR_RF_PA_CTRL_REG_Msk (0x3cUL) /*!< RFCU RF_TX_PWR_LUT_4_REG: TX_PWR_RF_PA_CTRL_REG (Bitfield-Mask: 0x0f) */ -#define RFCU_RF_TX_PWR_LUT_4_REG_TX_PWR_RF_LNA_CTRL3_REG_Pos (6UL) /*!< RFCU RF_TX_PWR_LUT_4_REG: TX_PWR_RF_LNA_CTRL3_REG (Bit 6) */ -#define RFCU_RF_TX_PWR_LUT_4_REG_TX_PWR_RF_LNA_CTRL3_REG_Msk (0x7c0UL) /*!< RFCU RF_TX_PWR_LUT_4_REG: TX_PWR_RF_LNA_CTRL3_REG (Bitfield-Mask: 0x1f) */ -#define RFCU_RF_TX_PWR_LUT_4_REG_TX_PWR_RFIO_TXRX_DCF_DIS_Pos (11UL) /*!< RFCU RF_TX_PWR_LUT_4_REG: TX_PWR_RFIO_TXRX_DCF_DIS (Bit 11) */ -#define RFCU_RF_TX_PWR_LUT_4_REG_TX_PWR_RFIO_TXRX_DCF_DIS_Msk (0x800UL) /*!< RFCU RF_TX_PWR_LUT_4_REG: TX_PWR_RFIO_TXRX_DCF_DIS (Bitfield-Mask: 0x01) */ - -/* -------------------------- RFCU_RF_TX_PWR_LUT_5_REG -------------------------- */ -#define RFCU_RF_TX_PWR_LUT_5_REG_TX_PWR_RF_IO_CTRL1_REG_Pos (0UL) /*!< RFCU RF_TX_PWR_LUT_5_REG: TX_PWR_RF_IO_CTRL1_REG (Bit 0) */ -#define RFCU_RF_TX_PWR_LUT_5_REG_TX_PWR_RF_IO_CTRL1_REG_Msk (0x3UL) /*!< RFCU RF_TX_PWR_LUT_5_REG: TX_PWR_RF_IO_CTRL1_REG (Bitfield-Mask: 0x03) */ -#define RFCU_RF_TX_PWR_LUT_5_REG_TX_PWR_RF_PA_CTRL_REG_Pos (2UL) /*!< RFCU RF_TX_PWR_LUT_5_REG: TX_PWR_RF_PA_CTRL_REG (Bit 2) */ -#define RFCU_RF_TX_PWR_LUT_5_REG_TX_PWR_RF_PA_CTRL_REG_Msk (0x3cUL) /*!< RFCU RF_TX_PWR_LUT_5_REG: TX_PWR_RF_PA_CTRL_REG (Bitfield-Mask: 0x0f) */ -#define RFCU_RF_TX_PWR_LUT_5_REG_TX_PWR_RF_LNA_CTRL3_REG_Pos (6UL) /*!< RFCU RF_TX_PWR_LUT_5_REG: TX_PWR_RF_LNA_CTRL3_REG (Bit 6) */ -#define RFCU_RF_TX_PWR_LUT_5_REG_TX_PWR_RF_LNA_CTRL3_REG_Msk (0x7c0UL) /*!< RFCU RF_TX_PWR_LUT_5_REG: TX_PWR_RF_LNA_CTRL3_REG (Bitfield-Mask: 0x1f) */ -#define RFCU_RF_TX_PWR_LUT_5_REG_TX_PWR_RFIO_TXRX_DCF_DIS_Pos (11UL) /*!< RFCU RF_TX_PWR_LUT_5_REG: TX_PWR_RFIO_TXRX_DCF_DIS (Bit 11) */ -#define RFCU_RF_TX_PWR_LUT_5_REG_TX_PWR_RFIO_TXRX_DCF_DIS_Msk (0x800UL) /*!< RFCU RF_TX_PWR_LUT_5_REG: TX_PWR_RFIO_TXRX_DCF_DIS (Bitfield-Mask: 0x01) */ - -/* -------------------------- RFCU_RF_TX_PWR_LUT_6_REG -------------------------- */ -#define RFCU_RF_TX_PWR_LUT_6_REG_TX_PWR_RF_IO_CTRL1_REG_Pos (0UL) /*!< RFCU RF_TX_PWR_LUT_6_REG: TX_PWR_RF_IO_CTRL1_REG (Bit 0) */ -#define RFCU_RF_TX_PWR_LUT_6_REG_TX_PWR_RF_IO_CTRL1_REG_Msk (0x3UL) /*!< RFCU RF_TX_PWR_LUT_6_REG: TX_PWR_RF_IO_CTRL1_REG (Bitfield-Mask: 0x03) */ -#define RFCU_RF_TX_PWR_LUT_6_REG_TX_PWR_RF_PA_CTRL_REG_Pos (2UL) /*!< RFCU RF_TX_PWR_LUT_6_REG: TX_PWR_RF_PA_CTRL_REG (Bit 2) */ -#define RFCU_RF_TX_PWR_LUT_6_REG_TX_PWR_RF_PA_CTRL_REG_Msk (0x3cUL) /*!< RFCU RF_TX_PWR_LUT_6_REG: TX_PWR_RF_PA_CTRL_REG (Bitfield-Mask: 0x0f) */ -#define RFCU_RF_TX_PWR_LUT_6_REG_TX_PWR_RF_LNA_CTRL3_REG_Pos (6UL) /*!< RFCU RF_TX_PWR_LUT_6_REG: TX_PWR_RF_LNA_CTRL3_REG (Bit 6) */ -#define RFCU_RF_TX_PWR_LUT_6_REG_TX_PWR_RF_LNA_CTRL3_REG_Msk (0x7c0UL) /*!< RFCU RF_TX_PWR_LUT_6_REG: TX_PWR_RF_LNA_CTRL3_REG (Bitfield-Mask: 0x1f) */ -#define RFCU_RF_TX_PWR_LUT_6_REG_TX_PWR_RFIO_TXRX_DCF_DIS_Pos (11UL) /*!< RFCU RF_TX_PWR_LUT_6_REG: TX_PWR_RFIO_TXRX_DCF_DIS (Bit 11) */ -#define RFCU_RF_TX_PWR_LUT_6_REG_TX_PWR_RFIO_TXRX_DCF_DIS_Msk (0x800UL) /*!< RFCU RF_TX_PWR_LUT_6_REG: TX_PWR_RFIO_TXRX_DCF_DIS (Bitfield-Mask: 0x01) */ - -/* -------------------------- RFCU_RF_TX_PWR_LUT_7_REG -------------------------- */ -#define RFCU_RF_TX_PWR_LUT_7_REG_TX_PWR_RF_IO_CTRL1_REG_Pos (0UL) /*!< RFCU RF_TX_PWR_LUT_7_REG: TX_PWR_RF_IO_CTRL1_REG (Bit 0) */ -#define RFCU_RF_TX_PWR_LUT_7_REG_TX_PWR_RF_IO_CTRL1_REG_Msk (0x3UL) /*!< RFCU RF_TX_PWR_LUT_7_REG: TX_PWR_RF_IO_CTRL1_REG (Bitfield-Mask: 0x03) */ -#define RFCU_RF_TX_PWR_LUT_7_REG_TX_PWR_RF_PA_CTRL_REG_Pos (2UL) /*!< RFCU RF_TX_PWR_LUT_7_REG: TX_PWR_RF_PA_CTRL_REG (Bit 2) */ -#define RFCU_RF_TX_PWR_LUT_7_REG_TX_PWR_RF_PA_CTRL_REG_Msk (0x3cUL) /*!< RFCU RF_TX_PWR_LUT_7_REG: TX_PWR_RF_PA_CTRL_REG (Bitfield-Mask: 0x0f) */ -#define RFCU_RF_TX_PWR_LUT_7_REG_TX_PWR_RF_LNA_CTRL3_REG_Pos (6UL) /*!< RFCU RF_TX_PWR_LUT_7_REG: TX_PWR_RF_LNA_CTRL3_REG (Bit 6) */ -#define RFCU_RF_TX_PWR_LUT_7_REG_TX_PWR_RF_LNA_CTRL3_REG_Msk (0x7c0UL) /*!< RFCU RF_TX_PWR_LUT_7_REG: TX_PWR_RF_LNA_CTRL3_REG (Bitfield-Mask: 0x1f) */ -#define RFCU_RF_TX_PWR_LUT_7_REG_TX_PWR_RFIO_TXRX_DCF_DIS_Pos (11UL) /*!< RFCU RF_TX_PWR_LUT_7_REG: TX_PWR_RFIO_TXRX_DCF_DIS (Bit 11) */ -#define RFCU_RF_TX_PWR_LUT_7_REG_TX_PWR_RFIO_TXRX_DCF_DIS_Msk (0x800UL) /*!< RFCU RF_TX_PWR_LUT_7_REG: TX_PWR_RFIO_TXRX_DCF_DIS (Bitfield-Mask: 0x01) */ - -/* --------------------------- RFCU_RF_TX_PWR_FTDF_REG -------------------------- */ -#define RFCU_RF_TX_PWR_FTDF_REG_TX_POWER_SET_Pos (0UL) /*!< RFCU RF_TX_PWR_FTDF_REG: TX_POWER_SET (Bit 0) */ -#define RFCU_RF_TX_PWR_FTDF_REG_TX_POWER_SET_Msk (0x7UL) /*!< RFCU RF_TX_PWR_FTDF_REG: TX_POWER_SET (Bitfield-Mask: 0x07) */ - -/* -------------------------- RFCU_RF_TX_PWR_LUT_RD_REG ------------------------- */ -#define RFCU_RF_TX_PWR_LUT_RD_REG_RF_TX_PWR_LUT_RD_Pos (0UL) /*!< RFCU RF_TX_PWR_LUT_RD_REG: RF_TX_PWR_LUT_RD (Bit 0) */ -#define RFCU_RF_TX_PWR_LUT_RD_REG_RF_TX_PWR_LUT_RD_Msk (0xfffUL) /*!< RFCU RF_TX_PWR_LUT_RD_REG: RF_TX_PWR_LUT_RD (Bitfield-Mask: 0xfff) */ - -/* ---------------------------- RFCU_RF_DIV_IQ_RX_REG --------------------------- */ -#define RFCU_RF_DIV_IQ_RX_REG_DIV2_OFFN_TRIM_RX_Pos (0UL) /*!< RFCU RF_DIV_IQ_RX_REG: DIV2_OFFN_TRIM_RX (Bit 0) */ -#define RFCU_RF_DIV_IQ_RX_REG_DIV2_OFFN_TRIM_RX_Msk (0xfUL) /*!< RFCU RF_DIV_IQ_RX_REG: DIV2_OFFN_TRIM_RX (Bitfield-Mask: 0x0f) */ -#define RFCU_RF_DIV_IQ_RX_REG_DIV2_OFFP_TRIM_RX_Pos (4UL) /*!< RFCU RF_DIV_IQ_RX_REG: DIV2_OFFP_TRIM_RX (Bit 4) */ -#define RFCU_RF_DIV_IQ_RX_REG_DIV2_OFFP_TRIM_RX_Msk (0xf0UL) /*!< RFCU RF_DIV_IQ_RX_REG: DIV2_OFFP_TRIM_RX (Bitfield-Mask: 0x0f) */ -#define RFCU_RF_DIV_IQ_RX_REG_DIV2_IQ_TRIM_RX_SPARE_Pos (8UL) /*!< RFCU RF_DIV_IQ_RX_REG: DIV2_IQ_TRIM_RX_SPARE (Bit 8) */ -#define RFCU_RF_DIV_IQ_RX_REG_DIV2_IQ_TRIM_RX_SPARE_Msk (0x100UL) /*!< RFCU RF_DIV_IQ_RX_REG: DIV2_IQ_TRIM_RX_SPARE (Bitfield-Mask: 0x01) */ - -/* ---------------------------- RFCU_RF_DIV_IQ_TX_REG --------------------------- */ -#define RFCU_RF_DIV_IQ_TX_REG_DIV2_OFFN_TRIM_TX_Pos (0UL) /*!< RFCU RF_DIV_IQ_TX_REG: DIV2_OFFN_TRIM_TX (Bit 0) */ -#define RFCU_RF_DIV_IQ_TX_REG_DIV2_OFFN_TRIM_TX_Msk (0xfUL) /*!< RFCU RF_DIV_IQ_TX_REG: DIV2_OFFN_TRIM_TX (Bitfield-Mask: 0x0f) */ -#define RFCU_RF_DIV_IQ_TX_REG_DIV2_OFFP_TRIM_TX_Pos (4UL) /*!< RFCU RF_DIV_IQ_TX_REG: DIV2_OFFP_TRIM_TX (Bit 4) */ -#define RFCU_RF_DIV_IQ_TX_REG_DIV2_OFFP_TRIM_TX_Msk (0xf0UL) /*!< RFCU RF_DIV_IQ_TX_REG: DIV2_OFFP_TRIM_TX (Bitfield-Mask: 0x0f) */ -#define RFCU_RF_DIV_IQ_TX_REG_DIV2_IQ_TRIM_TX_SPARE_Pos (8UL) /*!< RFCU RF_DIV_IQ_TX_REG: DIV2_IQ_TRIM_TX_SPARE (Bit 8) */ -#define RFCU_RF_DIV_IQ_TX_REG_DIV2_IQ_TRIM_TX_SPARE_Msk (0x100UL) /*!< RFCU RF_DIV_IQ_TX_REG: DIV2_IQ_TRIM_TX_SPARE (Bitfield-Mask: 0x01) */ - -/* --------------------------- RFCU_RF_LO_IQ_TRIM_REG --------------------------- */ -#define RFCU_RF_LO_IQ_TRIM_REG_RF_LO_IQ_TRIM_Pos (0UL) /*!< RFCU RF_LO_IQ_TRIM_REG: RF_LO_IQ_TRIM (Bit 0) */ -#define RFCU_RF_LO_IQ_TRIM_REG_RF_LO_IQ_TRIM_Msk (0xffffUL) /*!< RFCU RF_LO_IQ_TRIM_REG: RF_LO_IQ_TRIM (Bitfield-Mask: 0xffff) */ - -/* --------------------------- RFCU_RF_TXDAC_CTRL_REG --------------------------- */ -#define RFCU_RF_TXDAC_CTRL_REG_TXDAC_CAL_CAP_WR_BLE_Pos (0UL) /*!< RFCU RF_TXDAC_CTRL_REG: TXDAC_CAL_CAP_WR_BLE (Bit 0) */ -#define RFCU_RF_TXDAC_CTRL_REG_TXDAC_CAL_CAP_WR_BLE_Msk (0x1fUL) /*!< RFCU RF_TXDAC_CTRL_REG: TXDAC_CAL_CAP_WR_BLE (Bitfield-Mask: 0x1f) */ -#define RFCU_RF_TXDAC_CTRL_REG_TXDAC_CAL_CAP_SEL_Pos (5UL) /*!< RFCU RF_TXDAC_CTRL_REG: TXDAC_CAL_CAP_SEL (Bit 5) */ -#define RFCU_RF_TXDAC_CTRL_REG_TXDAC_CAL_CAP_SEL_Msk (0x20UL) /*!< RFCU RF_TXDAC_CTRL_REG: TXDAC_CAL_CAP_SEL (Bitfield-Mask: 0x01) */ -#define RFCU_RF_TXDAC_CTRL_REG_TXDAC_FIXED_CAP_ON_Pos (6UL) /*!< RFCU RF_TXDAC_CTRL_REG: TXDAC_FIXED_CAP_ON (Bit 6) */ -#define RFCU_RF_TXDAC_CTRL_REG_TXDAC_FIXED_CAP_ON_Msk (0x40UL) /*!< RFCU RF_TXDAC_CTRL_REG: TXDAC_FIXED_CAP_ON (Bitfield-Mask: 0x01) */ -#define RFCU_RF_TXDAC_CTRL_REG_TXDAC_CAL_CAP_WR_FTDF_Pos (7UL) /*!< RFCU RF_TXDAC_CTRL_REG: TXDAC_CAL_CAP_WR_FTDF (Bit 7) */ -#define RFCU_RF_TXDAC_CTRL_REG_TXDAC_CAL_CAP_WR_FTDF_Msk (0xf80UL) /*!< RFCU RF_TXDAC_CTRL_REG: TXDAC_CAL_CAP_WR_FTDF (Bitfield-Mask: 0x1f) */ - -/* ----------------------- RFCU_RF_TXDAC_CAL_CAP_STAT_REG ----------------------- */ -#define RFCU_RF_TXDAC_CAL_CAP_STAT_REG_TXDAC_CAL_CAP_RD_Pos (0UL) /*!< RFCU RF_TXDAC_CAL_CAP_STAT_REG: TXDAC_CAL_CAP_RD (Bit 0) */ -#define RFCU_RF_TXDAC_CAL_CAP_STAT_REG_TXDAC_CAL_CAP_RD_Msk (0x1fUL) /*!< RFCU RF_TXDAC_CAL_CAP_STAT_REG: TXDAC_CAL_CAP_RD (Bitfield-Mask: 0x1f) */ -#define RFCU_RF_TXDAC_CAL_CAP_STAT_REG_TXDAC_FIXED_CAP_ON_RD_Pos (5UL) /*!< RFCU RF_TXDAC_CAL_CAP_STAT_REG: TXDAC_FIXED_CAP_ON_RD (Bit 5) */ -#define RFCU_RF_TXDAC_CAL_CAP_STAT_REG_TXDAC_FIXED_CAP_ON_RD_Msk (0x20UL) /*!< RFCU RF_TXDAC_CAL_CAP_STAT_REG: TXDAC_FIXED_CAP_ON_RD (Bitfield-Mask: 0x01) */ - -/* --------------------------- RFCU_RF_IFF_RESULT_REG --------------------------- */ -#define RFCU_RF_IFF_RESULT_REG_IF_CAL_CAP_RD_Pos (0UL) /*!< RFCU RF_IFF_RESULT_REG: IF_CAL_CAP_RD (Bit 0) */ -#define RFCU_RF_IFF_RESULT_REG_IF_CAL_CAP_RD_Msk (0x1fUL) /*!< RFCU RF_IFF_RESULT_REG: IF_CAL_CAP_RD (Bitfield-Mask: 0x1f) */ - -/* ------------------------- RFCU_RF_IFF_CC_BLE_SET1_REG ------------------------ */ -#define RFCU_RF_IFF_CC_BLE_SET1_REG_IF_CAL_CAP_WR_Pos (0UL) /*!< RFCU RF_IFF_CC_BLE_SET1_REG: IF_CAL_CAP_WR (Bit 0) */ -#define RFCU_RF_IFF_CC_BLE_SET1_REG_IF_CAL_CAP_WR_Msk (0x1fUL) /*!< RFCU RF_IFF_CC_BLE_SET1_REG: IF_CAL_CAP_WR (Bitfield-Mask: 0x1f) */ - -/* ------------------------- RFCU_RF_IFF_CC_BLE_SET2_REG ------------------------ */ -#define RFCU_RF_IFF_CC_BLE_SET2_REG_IF_CAL_CAP_WR_Pos (0UL) /*!< RFCU RF_IFF_CC_BLE_SET2_REG: IF_CAL_CAP_WR (Bit 0) */ -#define RFCU_RF_IFF_CC_BLE_SET2_REG_IF_CAL_CAP_WR_Msk (0x1fUL) /*!< RFCU RF_IFF_CC_BLE_SET2_REG: IF_CAL_CAP_WR (Bitfield-Mask: 0x1f) */ - -/* ------------------------ RFCU_RF_IFF_CC_FTDF_SET1_REG ------------------------ */ -#define RFCU_RF_IFF_CC_FTDF_SET1_REG_IF_CAL_CAP_WR_Pos (0UL) /*!< RFCU RF_IFF_CC_FTDF_SET1_REG: IF_CAL_CAP_WR (Bit 0) */ -#define RFCU_RF_IFF_CC_FTDF_SET1_REG_IF_CAL_CAP_WR_Msk (0x1fUL) /*!< RFCU RF_IFF_CC_FTDF_SET1_REG: IF_CAL_CAP_WR (Bitfield-Mask: 0x1f) */ - -/* ------------------------ RFCU_RF_IFF_CC_FTDF_SET2_REG ------------------------ */ -#define RFCU_RF_IFF_CC_FTDF_SET2_REG_IF_CAL_CAP_WR_Pos (0UL) /*!< RFCU RF_IFF_CC_FTDF_SET2_REG: IF_CAL_CAP_WR (Bit 0) */ -#define RFCU_RF_IFF_CC_FTDF_SET2_REG_IF_CAL_CAP_WR_Msk (0x1fUL) /*!< RFCU RF_IFF_CC_FTDF_SET2_REG: IF_CAL_CAP_WR (Bitfield-Mask: 0x1f) */ - -/* ------------------------ RFCU_RF_IFF_CAL_CAP_STAT_REG ------------------------ */ -#define RFCU_RF_IFF_CAL_CAP_STAT_REG_IF_CAL_CAP_RD_Pos (0UL) /*!< RFCU RF_IFF_CAL_CAP_STAT_REG: IF_CAL_CAP_RD (Bit 0) */ -#define RFCU_RF_IFF_CAL_CAP_STAT_REG_IF_CAL_CAP_RD_Msk (0x1fUL) /*!< RFCU RF_IFF_CAL_CAP_STAT_REG: IF_CAL_CAP_RD (Bitfield-Mask: 0x1f) */ - -/* ------------------------ RFCU_RF_MIX_CAL_CAP_STAT_REG ------------------------ */ -#define RFCU_RF_MIX_CAL_CAP_STAT_REG_MIX_CAL_CAP_RD_Pos (0UL) /*!< RFCU RF_MIX_CAL_CAP_STAT_REG: MIX_CAL_CAP_RD (Bit 0) */ -#define RFCU_RF_MIX_CAL_CAP_STAT_REG_MIX_CAL_CAP_RD_Msk (0x1fUL) /*!< RFCU RF_MIX_CAL_CAP_STAT_REG: MIX_CAL_CAP_RD (Bitfield-Mask: 0x1f) */ - -/* ------------------------- RFCU_RF_LF_CAL_CAP_STAT_REG ------------------------ */ -#define RFCU_RF_LF_CAL_CAP_STAT_REG_LF_CAL_CAP_RD_Pos (0UL) /*!< RFCU RF_LF_CAL_CAP_STAT_REG: LF_CAL_CAP_RD (Bit 0) */ -#define RFCU_RF_LF_CAL_CAP_STAT_REG_LF_CAL_CAP_RD_Msk (0x1fUL) /*!< RFCU RF_LF_CAL_CAP_STAT_REG: LF_CAL_CAP_RD (Bitfield-Mask: 0x1f) */ -#define RFCU_RF_LF_CAL_CAP_STAT_REG_LF_SHORT_R4_RD_Pos (5UL) /*!< RFCU RF_LF_CAL_CAP_STAT_REG: LF_SHORT_R4_RD (Bit 5) */ -#define RFCU_RF_LF_CAL_CAP_STAT_REG_LF_SHORT_R4_RD_Msk (0x20UL) /*!< RFCU RF_LF_CAL_CAP_STAT_REG: LF_SHORT_R4_RD (Bitfield-Mask: 0x01) */ - - -/* ================================================================================ */ -/* ================ struct 'RFCU_POWER' Position & Mask ================ */ -/* ================================================================================ */ - - -/* ---------------------- RFCU_POWER_RF_ENABLE_CONFIG0_REG ---------------------- */ -#define RFCU_POWER_RF_ENABLE_CONFIG0_REG_lna_ldo_en_dcf_rx_Pos (0UL) /*!< RFCU_POWER RF_ENABLE_CONFIG0_REG: lna_ldo_en_dcf_rx (Bit 0) */ -#define RFCU_POWER_RF_ENABLE_CONFIG0_REG_lna_ldo_en_dcf_rx_Msk (0x1fUL) /*!< RFCU_POWER RF_ENABLE_CONFIG0_REG: lna_ldo_en_dcf_rx (Bitfield-Mask: 0x1f) */ -#define RFCU_POWER_RF_ENABLE_CONFIG0_REG_lna_ldo_en_dcf_tx_Pos (5UL) /*!< RFCU_POWER RF_ENABLE_CONFIG0_REG: lna_ldo_en_dcf_tx (Bit 5) */ -#define RFCU_POWER_RF_ENABLE_CONFIG0_REG_lna_ldo_en_dcf_tx_Msk (0x3e0UL) /*!< RFCU_POWER RF_ENABLE_CONFIG0_REG: lna_ldo_en_dcf_tx (Bitfield-Mask: 0x1f) */ - -/* ---------------------- RFCU_POWER_RF_ENABLE_CONFIG1_REG ---------------------- */ -#define RFCU_POWER_RF_ENABLE_CONFIG1_REG_lna_core_en_dcf_rx_Pos (0UL) /*!< RFCU_POWER RF_ENABLE_CONFIG1_REG: lna_core_en_dcf_rx (Bit 0) */ -#define RFCU_POWER_RF_ENABLE_CONFIG1_REG_lna_core_en_dcf_rx_Msk (0x1fUL) /*!< RFCU_POWER RF_ENABLE_CONFIG1_REG: lna_core_en_dcf_rx (Bitfield-Mask: 0x1f) */ -#define RFCU_POWER_RF_ENABLE_CONFIG1_REG_lna_core_en_dcf_tx_Pos (5UL) /*!< RFCU_POWER RF_ENABLE_CONFIG1_REG: lna_core_en_dcf_tx (Bit 5) */ -#define RFCU_POWER_RF_ENABLE_CONFIG1_REG_lna_core_en_dcf_tx_Msk (0x3e0UL) /*!< RFCU_POWER RF_ENABLE_CONFIG1_REG: lna_core_en_dcf_tx (Bitfield-Mask: 0x1f) */ - -/* ---------------------- RFCU_POWER_RF_ENABLE_CONFIG2_REG ---------------------- */ -#define RFCU_POWER_RF_ENABLE_CONFIG2_REG_lna_cgm_en_dcf_rx_Pos (0UL) /*!< RFCU_POWER RF_ENABLE_CONFIG2_REG: lna_cgm_en_dcf_rx (Bit 0) */ -#define RFCU_POWER_RF_ENABLE_CONFIG2_REG_lna_cgm_en_dcf_rx_Msk (0x1fUL) /*!< RFCU_POWER RF_ENABLE_CONFIG2_REG: lna_cgm_en_dcf_rx (Bitfield-Mask: 0x1f) */ -#define RFCU_POWER_RF_ENABLE_CONFIG2_REG_lna_cgm_en_dcf_tx_Pos (5UL) /*!< RFCU_POWER RF_ENABLE_CONFIG2_REG: lna_cgm_en_dcf_tx (Bit 5) */ -#define RFCU_POWER_RF_ENABLE_CONFIG2_REG_lna_cgm_en_dcf_tx_Msk (0x3e0UL) /*!< RFCU_POWER RF_ENABLE_CONFIG2_REG: lna_cgm_en_dcf_tx (Bitfield-Mask: 0x1f) */ - -/* ---------------------- RFCU_POWER_RF_ENABLE_CONFIG3_REG ---------------------- */ -#define RFCU_POWER_RF_ENABLE_CONFIG3_REG_mix_ldo_en_dcf_rx_Pos (0UL) /*!< RFCU_POWER RF_ENABLE_CONFIG3_REG: mix_ldo_en_dcf_rx (Bit 0) */ -#define RFCU_POWER_RF_ENABLE_CONFIG3_REG_mix_ldo_en_dcf_rx_Msk (0x1fUL) /*!< RFCU_POWER RF_ENABLE_CONFIG3_REG: mix_ldo_en_dcf_rx (Bitfield-Mask: 0x1f) */ -#define RFCU_POWER_RF_ENABLE_CONFIG3_REG_mix_ldo_en_dcf_tx_Pos (5UL) /*!< RFCU_POWER RF_ENABLE_CONFIG3_REG: mix_ldo_en_dcf_tx (Bit 5) */ -#define RFCU_POWER_RF_ENABLE_CONFIG3_REG_mix_ldo_en_dcf_tx_Msk (0x3e0UL) /*!< RFCU_POWER RF_ENABLE_CONFIG3_REG: mix_ldo_en_dcf_tx (Bitfield-Mask: 0x1f) */ - -/* ---------------------- RFCU_POWER_RF_ENABLE_CONFIG4_REG ---------------------- */ -#define RFCU_POWER_RF_ENABLE_CONFIG4_REG_iff_ldo_en_dcf_rx_Pos (0UL) /*!< RFCU_POWER RF_ENABLE_CONFIG4_REG: iff_ldo_en_dcf_rx (Bit 0) */ -#define RFCU_POWER_RF_ENABLE_CONFIG4_REG_iff_ldo_en_dcf_rx_Msk (0x1fUL) /*!< RFCU_POWER RF_ENABLE_CONFIG4_REG: iff_ldo_en_dcf_rx (Bitfield-Mask: 0x1f) */ -#define RFCU_POWER_RF_ENABLE_CONFIG4_REG_iff_ldo_en_dcf_tx_Pos (5UL) /*!< RFCU_POWER RF_ENABLE_CONFIG4_REG: iff_ldo_en_dcf_tx (Bit 5) */ -#define RFCU_POWER_RF_ENABLE_CONFIG4_REG_iff_ldo_en_dcf_tx_Msk (0x3e0UL) /*!< RFCU_POWER RF_ENABLE_CONFIG4_REG: iff_ldo_en_dcf_tx (Bitfield-Mask: 0x1f) */ - -/* ---------------------- RFCU_POWER_RF_ENABLE_CONFIG5_REG ---------------------- */ -#define RFCU_POWER_RF_ENABLE_CONFIG5_REG_iffadc_ldo_en_dcf_rx_Pos (0UL) /*!< RFCU_POWER RF_ENABLE_CONFIG5_REG: iffadc_ldo_en_dcf_rx (Bit 0) */ -#define RFCU_POWER_RF_ENABLE_CONFIG5_REG_iffadc_ldo_en_dcf_rx_Msk (0x1fUL) /*!< RFCU_POWER RF_ENABLE_CONFIG5_REG: iffadc_ldo_en_dcf_rx (Bitfield-Mask: 0x1f) */ -#define RFCU_POWER_RF_ENABLE_CONFIG5_REG_iffadc_ldo_en_dcf_tx_Pos (5UL) /*!< RFCU_POWER RF_ENABLE_CONFIG5_REG: iffadc_ldo_en_dcf_tx (Bit 5) */ -#define RFCU_POWER_RF_ENABLE_CONFIG5_REG_iffadc_ldo_en_dcf_tx_Msk (0x3e0UL) /*!< RFCU_POWER RF_ENABLE_CONFIG5_REG: iffadc_ldo_en_dcf_tx (Bitfield-Mask: 0x1f) */ - -/* ---------------------- RFCU_POWER_RF_ENABLE_CONFIG6_REG ---------------------- */ -#define RFCU_POWER_RF_ENABLE_CONFIG6_REG_vco_ldo_en_dcf_rx_Pos (0UL) /*!< RFCU_POWER RF_ENABLE_CONFIG6_REG: vco_ldo_en_dcf_rx (Bit 0) */ -#define RFCU_POWER_RF_ENABLE_CONFIG6_REG_vco_ldo_en_dcf_rx_Msk (0x1fUL) /*!< RFCU_POWER RF_ENABLE_CONFIG6_REG: vco_ldo_en_dcf_rx (Bitfield-Mask: 0x1f) */ -#define RFCU_POWER_RF_ENABLE_CONFIG6_REG_vco_ldo_en_dcf_tx_Pos (5UL) /*!< RFCU_POWER RF_ENABLE_CONFIG6_REG: vco_ldo_en_dcf_tx (Bit 5) */ -#define RFCU_POWER_RF_ENABLE_CONFIG6_REG_vco_ldo_en_dcf_tx_Msk (0x3e0UL) /*!< RFCU_POWER RF_ENABLE_CONFIG6_REG: vco_ldo_en_dcf_tx (Bitfield-Mask: 0x1f) */ - -/* ---------------------- RFCU_POWER_RF_ENABLE_CONFIG7_REG ---------------------- */ -#define RFCU_POWER_RF_ENABLE_CONFIG7_REG_md_ldo_en_dcf_rx_Pos (0UL) /*!< RFCU_POWER RF_ENABLE_CONFIG7_REG: md_ldo_en_dcf_rx (Bit 0) */ -#define RFCU_POWER_RF_ENABLE_CONFIG7_REG_md_ldo_en_dcf_rx_Msk (0x1fUL) /*!< RFCU_POWER RF_ENABLE_CONFIG7_REG: md_ldo_en_dcf_rx (Bitfield-Mask: 0x1f) */ -#define RFCU_POWER_RF_ENABLE_CONFIG7_REG_md_ldo_en_dcf_tx_Pos (5UL) /*!< RFCU_POWER RF_ENABLE_CONFIG7_REG: md_ldo_en_dcf_tx (Bit 5) */ -#define RFCU_POWER_RF_ENABLE_CONFIG7_REG_md_ldo_en_dcf_tx_Msk (0x3e0UL) /*!< RFCU_POWER RF_ENABLE_CONFIG7_REG: md_ldo_en_dcf_tx (Bitfield-Mask: 0x1f) */ - -/* ---------------------- RFCU_POWER_RF_ENABLE_CONFIG8_REG ---------------------- */ -#define RFCU_POWER_RF_ENABLE_CONFIG8_REG_pfd_ldo_en_dcf_rx_Pos (0UL) /*!< RFCU_POWER RF_ENABLE_CONFIG8_REG: pfd_ldo_en_dcf_rx (Bit 0) */ -#define RFCU_POWER_RF_ENABLE_CONFIG8_REG_pfd_ldo_en_dcf_rx_Msk (0x1fUL) /*!< RFCU_POWER RF_ENABLE_CONFIG8_REG: pfd_ldo_en_dcf_rx (Bitfield-Mask: 0x1f) */ -#define RFCU_POWER_RF_ENABLE_CONFIG8_REG_pfd_ldo_en_dcf_tx_Pos (5UL) /*!< RFCU_POWER RF_ENABLE_CONFIG8_REG: pfd_ldo_en_dcf_tx (Bit 5) */ -#define RFCU_POWER_RF_ENABLE_CONFIG8_REG_pfd_ldo_en_dcf_tx_Msk (0x3e0UL) /*!< RFCU_POWER RF_ENABLE_CONFIG8_REG: pfd_ldo_en_dcf_tx (Bitfield-Mask: 0x1f) */ - -/* ---------------------- RFCU_POWER_RF_ENABLE_CONFIG9_REG ---------------------- */ -#define RFCU_POWER_RF_ENABLE_CONFIG9_REG_pa_ldo_en_dcf_rx_Pos (0UL) /*!< RFCU_POWER RF_ENABLE_CONFIG9_REG: pa_ldo_en_dcf_rx (Bit 0) */ -#define RFCU_POWER_RF_ENABLE_CONFIG9_REG_pa_ldo_en_dcf_rx_Msk (0x1fUL) /*!< RFCU_POWER RF_ENABLE_CONFIG9_REG: pa_ldo_en_dcf_rx (Bitfield-Mask: 0x1f) */ -#define RFCU_POWER_RF_ENABLE_CONFIG9_REG_pa_ldo_en_dcf_tx_Pos (5UL) /*!< RFCU_POWER RF_ENABLE_CONFIG9_REG: pa_ldo_en_dcf_tx (Bit 5) */ -#define RFCU_POWER_RF_ENABLE_CONFIG9_REG_pa_ldo_en_dcf_tx_Msk (0x3e0UL) /*!< RFCU_POWER RF_ENABLE_CONFIG9_REG: pa_ldo_en_dcf_tx (Bitfield-Mask: 0x1f) */ - -/* ---------------------- RFCU_POWER_RF_ENABLE_CONFIG10_REG --------------------- */ -#define RFCU_POWER_RF_ENABLE_CONFIG10_REG_cp_switch_en_dcf_rx_Pos (0UL) /*!< RFCU_POWER RF_ENABLE_CONFIG10_REG: cp_switch_en_dcf_rx (Bit 0) */ -#define RFCU_POWER_RF_ENABLE_CONFIG10_REG_cp_switch_en_dcf_rx_Msk (0x1fUL) /*!< RFCU_POWER RF_ENABLE_CONFIG10_REG: cp_switch_en_dcf_rx (Bitfield-Mask: 0x1f) */ -#define RFCU_POWER_RF_ENABLE_CONFIG10_REG_cp_switch_en_dcf_tx_Pos (5UL) /*!< RFCU_POWER RF_ENABLE_CONFIG10_REG: cp_switch_en_dcf_tx (Bit 5) */ -#define RFCU_POWER_RF_ENABLE_CONFIG10_REG_cp_switch_en_dcf_tx_Msk (0x3e0UL) /*!< RFCU_POWER RF_ENABLE_CONFIG10_REG: cp_switch_en_dcf_tx (Bitfield-Mask: 0x1f) */ - -/* ---------------------- RFCU_POWER_RF_ENABLE_CONFIG11_REG --------------------- */ -#define RFCU_POWER_RF_ENABLE_CONFIG11_REG_vco_bias_en_dcf_rx_Pos (0UL) /*!< RFCU_POWER RF_ENABLE_CONFIG11_REG: vco_bias_en_dcf_rx (Bit 0) */ -#define RFCU_POWER_RF_ENABLE_CONFIG11_REG_vco_bias_en_dcf_rx_Msk (0x1fUL) /*!< RFCU_POWER RF_ENABLE_CONFIG11_REG: vco_bias_en_dcf_rx (Bitfield-Mask: 0x1f) */ -#define RFCU_POWER_RF_ENABLE_CONFIG11_REG_vco_bias_en_dcf_tx_Pos (5UL) /*!< RFCU_POWER RF_ENABLE_CONFIG11_REG: vco_bias_en_dcf_tx (Bit 5) */ -#define RFCU_POWER_RF_ENABLE_CONFIG11_REG_vco_bias_en_dcf_tx_Msk (0x3e0UL) /*!< RFCU_POWER RF_ENABLE_CONFIG11_REG: vco_bias_en_dcf_tx (Bitfield-Mask: 0x1f) */ - -/* ---------------------- RFCU_POWER_RF_ENABLE_CONFIG12_REG --------------------- */ -#define RFCU_POWER_RF_ENABLE_CONFIG12_REG_cp_bias_en_dcf_rx_Pos (0UL) /*!< RFCU_POWER RF_ENABLE_CONFIG12_REG: cp_bias_en_dcf_rx (Bit 0) */ -#define RFCU_POWER_RF_ENABLE_CONFIG12_REG_cp_bias_en_dcf_rx_Msk (0x1fUL) /*!< RFCU_POWER RF_ENABLE_CONFIG12_REG: cp_bias_en_dcf_rx (Bitfield-Mask: 0x1f) */ -#define RFCU_POWER_RF_ENABLE_CONFIG12_REG_cp_bias_en_dcf_tx_Pos (5UL) /*!< RFCU_POWER RF_ENABLE_CONFIG12_REG: cp_bias_en_dcf_tx (Bit 5) */ -#define RFCU_POWER_RF_ENABLE_CONFIG12_REG_cp_bias_en_dcf_tx_Msk (0x3e0UL) /*!< RFCU_POWER RF_ENABLE_CONFIG12_REG: cp_bias_en_dcf_tx (Bitfield-Mask: 0x1f) */ - -/* ---------------------- RFCU_POWER_RF_ENABLE_CONFIG13_REG --------------------- */ -#define RFCU_POWER_RF_ENABLE_CONFIG13_REG_lna_ldo_zero_dcf_rx_Pos (0UL) /*!< RFCU_POWER RF_ENABLE_CONFIG13_REG: lna_ldo_zero_dcf_rx (Bit 0) */ -#define RFCU_POWER_RF_ENABLE_CONFIG13_REG_lna_ldo_zero_dcf_rx_Msk (0x1fUL) /*!< RFCU_POWER RF_ENABLE_CONFIG13_REG: lna_ldo_zero_dcf_rx (Bitfield-Mask: 0x1f) */ -#define RFCU_POWER_RF_ENABLE_CONFIG13_REG_lna_ldo_zero_dcf_tx_Pos (5UL) /*!< RFCU_POWER RF_ENABLE_CONFIG13_REG: lna_ldo_zero_dcf_tx (Bit 5) */ -#define RFCU_POWER_RF_ENABLE_CONFIG13_REG_lna_ldo_zero_dcf_tx_Msk (0x3e0UL) /*!< RFCU_POWER RF_ENABLE_CONFIG13_REG: lna_ldo_zero_dcf_tx (Bitfield-Mask: 0x1f) */ - -/* ---------------------- RFCU_POWER_RF_ENABLE_CONFIG14_REG --------------------- */ -#define RFCU_POWER_RF_ENABLE_CONFIG14_REG_pa_ramp_en_dcf_rx_Pos (0UL) /*!< RFCU_POWER RF_ENABLE_CONFIG14_REG: pa_ramp_en_dcf_rx (Bit 0) */ -#define RFCU_POWER_RF_ENABLE_CONFIG14_REG_pa_ramp_en_dcf_rx_Msk (0x1fUL) /*!< RFCU_POWER RF_ENABLE_CONFIG14_REG: pa_ramp_en_dcf_rx (Bitfield-Mask: 0x1f) */ -#define RFCU_POWER_RF_ENABLE_CONFIG14_REG_pa_ramp_en_dcf_tx_Pos (5UL) /*!< RFCU_POWER RF_ENABLE_CONFIG14_REG: pa_ramp_en_dcf_tx (Bit 5) */ -#define RFCU_POWER_RF_ENABLE_CONFIG14_REG_pa_ramp_en_dcf_tx_Msk (0x3e0UL) /*!< RFCU_POWER RF_ENABLE_CONFIG14_REG: pa_ramp_en_dcf_tx (Bitfield-Mask: 0x1f) */ - -/* ---------------------- RFCU_POWER_RF_ENABLE_CONFIG15_REG --------------------- */ -#define RFCU_POWER_RF_ENABLE_CONFIG15_REG_pa_en_dcf_rx_Pos (0UL) /*!< RFCU_POWER RF_ENABLE_CONFIG15_REG: pa_en_dcf_rx (Bit 0) */ -#define RFCU_POWER_RF_ENABLE_CONFIG15_REG_pa_en_dcf_rx_Msk (0x1fUL) /*!< RFCU_POWER RF_ENABLE_CONFIG15_REG: pa_en_dcf_rx (Bitfield-Mask: 0x1f) */ -#define RFCU_POWER_RF_ENABLE_CONFIG15_REG_pa_en_dcf_tx_Pos (5UL) /*!< RFCU_POWER RF_ENABLE_CONFIG15_REG: pa_en_dcf_tx (Bit 5) */ -#define RFCU_POWER_RF_ENABLE_CONFIG15_REG_pa_en_dcf_tx_Msk (0x3e0UL) /*!< RFCU_POWER RF_ENABLE_CONFIG15_REG: pa_en_dcf_tx (Bitfield-Mask: 0x1f) */ - -/* ---------------------- RFCU_POWER_RF_ENABLE_CONFIG16_REG --------------------- */ -#define RFCU_POWER_RF_ENABLE_CONFIG16_REG_mix_en_dcf_rx_Pos (0UL) /*!< RFCU_POWER RF_ENABLE_CONFIG16_REG: mix_en_dcf_rx (Bit 0) */ -#define RFCU_POWER_RF_ENABLE_CONFIG16_REG_mix_en_dcf_rx_Msk (0x1fUL) /*!< RFCU_POWER RF_ENABLE_CONFIG16_REG: mix_en_dcf_rx (Bitfield-Mask: 0x1f) */ -#define RFCU_POWER_RF_ENABLE_CONFIG16_REG_mix_en_dcf_tx_Pos (5UL) /*!< RFCU_POWER RF_ENABLE_CONFIG16_REG: mix_en_dcf_tx (Bit 5) */ -#define RFCU_POWER_RF_ENABLE_CONFIG16_REG_mix_en_dcf_tx_Msk (0x3e0UL) /*!< RFCU_POWER RF_ENABLE_CONFIG16_REG: mix_en_dcf_tx (Bitfield-Mask: 0x1f) */ - -/* ---------------------- RFCU_POWER_RF_ENABLE_CONFIG17_REG --------------------- */ -#define RFCU_POWER_RF_ENABLE_CONFIG17_REG_iff_en_dcf_rx_Pos (0UL) /*!< RFCU_POWER RF_ENABLE_CONFIG17_REG: iff_en_dcf_rx (Bit 0) */ -#define RFCU_POWER_RF_ENABLE_CONFIG17_REG_iff_en_dcf_rx_Msk (0x1fUL) /*!< RFCU_POWER RF_ENABLE_CONFIG17_REG: iff_en_dcf_rx (Bitfield-Mask: 0x1f) */ -#define RFCU_POWER_RF_ENABLE_CONFIG17_REG_iff_en_dcf_tx_Pos (5UL) /*!< RFCU_POWER RF_ENABLE_CONFIG17_REG: iff_en_dcf_tx (Bit 5) */ -#define RFCU_POWER_RF_ENABLE_CONFIG17_REG_iff_en_dcf_tx_Msk (0x3e0UL) /*!< RFCU_POWER RF_ENABLE_CONFIG17_REG: iff_en_dcf_tx (Bitfield-Mask: 0x1f) */ - -/* ---------------------- RFCU_POWER_RF_ENABLE_CONFIG18_REG --------------------- */ -#define RFCU_POWER_RF_ENABLE_CONFIG18_REG_adc_en_dcf_rx_Pos (0UL) /*!< RFCU_POWER RF_ENABLE_CONFIG18_REG: adc_en_dcf_rx (Bit 0) */ -#define RFCU_POWER_RF_ENABLE_CONFIG18_REG_adc_en_dcf_rx_Msk (0x1fUL) /*!< RFCU_POWER RF_ENABLE_CONFIG18_REG: adc_en_dcf_rx (Bitfield-Mask: 0x1f) */ -#define RFCU_POWER_RF_ENABLE_CONFIG18_REG_adc_en_dcf_tx_Pos (5UL) /*!< RFCU_POWER RF_ENABLE_CONFIG18_REG: adc_en_dcf_tx (Bit 5) */ -#define RFCU_POWER_RF_ENABLE_CONFIG18_REG_adc_en_dcf_tx_Msk (0x3e0UL) /*!< RFCU_POWER RF_ENABLE_CONFIG18_REG: adc_en_dcf_tx (Bitfield-Mask: 0x1f) */ - -/* ---------------------- RFCU_POWER_RF_ENABLE_CONFIG19_REG --------------------- */ -#define RFCU_POWER_RF_ENABLE_CONFIG19_REG_vco_en_dcf_rx_Pos (0UL) /*!< RFCU_POWER RF_ENABLE_CONFIG19_REG: vco_en_dcf_rx (Bit 0) */ -#define RFCU_POWER_RF_ENABLE_CONFIG19_REG_vco_en_dcf_rx_Msk (0x1fUL) /*!< RFCU_POWER RF_ENABLE_CONFIG19_REG: vco_en_dcf_rx (Bitfield-Mask: 0x1f) */ -#define RFCU_POWER_RF_ENABLE_CONFIG19_REG_vco_en_dcf_tx_Pos (5UL) /*!< RFCU_POWER RF_ENABLE_CONFIG19_REG: vco_en_dcf_tx (Bit 5) */ -#define RFCU_POWER_RF_ENABLE_CONFIG19_REG_vco_en_dcf_tx_Msk (0x3e0UL) /*!< RFCU_POWER RF_ENABLE_CONFIG19_REG: vco_en_dcf_tx (Bitfield-Mask: 0x1f) */ - -/* ---------------------- RFCU_POWER_RF_ENABLE_CONFIG20_REG --------------------- */ -#define RFCU_POWER_RF_ENABLE_CONFIG20_REG_lobuf_md_en_dcf_rx_Pos (0UL) /*!< RFCU_POWER RF_ENABLE_CONFIG20_REG: lobuf_md_en_dcf_rx (Bit 0) */ -#define RFCU_POWER_RF_ENABLE_CONFIG20_REG_lobuf_md_en_dcf_rx_Msk (0x1fUL) /*!< RFCU_POWER RF_ENABLE_CONFIG20_REG: lobuf_md_en_dcf_rx (Bitfield-Mask: 0x1f) */ -#define RFCU_POWER_RF_ENABLE_CONFIG20_REG_lobuf_md_en_dcf_tx_Pos (5UL) /*!< RFCU_POWER RF_ENABLE_CONFIG20_REG: lobuf_md_en_dcf_tx (Bit 5) */ -#define RFCU_POWER_RF_ENABLE_CONFIG20_REG_lobuf_md_en_dcf_tx_Msk (0x3e0UL) /*!< RFCU_POWER RF_ENABLE_CONFIG20_REG: lobuf_md_en_dcf_tx (Bitfield-Mask: 0x1f) */ - -/* ---------------------- RFCU_POWER_RF_ENABLE_CONFIG21_REG --------------------- */ -#define RFCU_POWER_RF_ENABLE_CONFIG21_REG_cp_en_dcf_rx_Pos (0UL) /*!< RFCU_POWER RF_ENABLE_CONFIG21_REG: cp_en_dcf_rx (Bit 0) */ -#define RFCU_POWER_RF_ENABLE_CONFIG21_REG_cp_en_dcf_rx_Msk (0x1fUL) /*!< RFCU_POWER RF_ENABLE_CONFIG21_REG: cp_en_dcf_rx (Bitfield-Mask: 0x1f) */ -#define RFCU_POWER_RF_ENABLE_CONFIG21_REG_cp_en_dcf_tx_Pos (5UL) /*!< RFCU_POWER RF_ENABLE_CONFIG21_REG: cp_en_dcf_tx (Bit 5) */ -#define RFCU_POWER_RF_ENABLE_CONFIG21_REG_cp_en_dcf_tx_Msk (0x3e0UL) /*!< RFCU_POWER RF_ENABLE_CONFIG21_REG: cp_en_dcf_tx (Bitfield-Mask: 0x1f) */ - -/* ---------------------- RFCU_POWER_RF_ENABLE_CONFIG22_REG --------------------- */ -#define RFCU_POWER_RF_ENABLE_CONFIG22_REG_pfd_en_dcf_rx_Pos (0UL) /*!< RFCU_POWER RF_ENABLE_CONFIG22_REG: pfd_en_dcf_rx (Bit 0) */ -#define RFCU_POWER_RF_ENABLE_CONFIG22_REG_pfd_en_dcf_rx_Msk (0x1fUL) /*!< RFCU_POWER RF_ENABLE_CONFIG22_REG: pfd_en_dcf_rx (Bitfield-Mask: 0x1f) */ -#define RFCU_POWER_RF_ENABLE_CONFIG22_REG_pfd_en_dcf_tx_Pos (5UL) /*!< RFCU_POWER RF_ENABLE_CONFIG22_REG: pfd_en_dcf_tx (Bit 5) */ -#define RFCU_POWER_RF_ENABLE_CONFIG22_REG_pfd_en_dcf_tx_Msk (0x3e0UL) /*!< RFCU_POWER RF_ENABLE_CONFIG22_REG: pfd_en_dcf_tx (Bitfield-Mask: 0x1f) */ - -/* -------------------- RFCU_POWER_RF_ENABLE_CONFIG23_BLE_REG ------------------- */ -#define RFCU_POWER_RF_ENABLE_CONFIG23_BLE_REG_gauss_en_ble_dcf_rx_Pos (0UL) /*!< RFCU_POWER RF_ENABLE_CONFIG23_BLE_REG: gauss_en_ble_dcf_rx (Bit 0) */ -#define RFCU_POWER_RF_ENABLE_CONFIG23_BLE_REG_gauss_en_ble_dcf_rx_Msk (0x1fUL) /*!< RFCU_POWER RF_ENABLE_CONFIG23_BLE_REG: gauss_en_ble_dcf_rx (Bitfield-Mask: 0x1f) */ -#define RFCU_POWER_RF_ENABLE_CONFIG23_BLE_REG_gauss_en_ble_dcf_tx_Pos (5UL) /*!< RFCU_POWER RF_ENABLE_CONFIG23_BLE_REG: gauss_en_ble_dcf_tx (Bit 5) */ -#define RFCU_POWER_RF_ENABLE_CONFIG23_BLE_REG_gauss_en_ble_dcf_tx_Msk (0x3e0UL) /*!< RFCU_POWER RF_ENABLE_CONFIG23_BLE_REG: gauss_en_ble_dcf_tx (Bitfield-Mask: 0x1f) */ - -/* -------------------- RFCU_POWER_RF_ENABLE_CONFIG24_BLE_REG ------------------- */ -#define RFCU_POWER_RF_ENABLE_CONFIG24_BLE_REG_rfio_txrx_ble_dcf_rx_Pos (0UL) /*!< RFCU_POWER RF_ENABLE_CONFIG24_BLE_REG: rfio_txrx_ble_dcf_rx (Bit 0) */ -#define RFCU_POWER_RF_ENABLE_CONFIG24_BLE_REG_rfio_txrx_ble_dcf_rx_Msk (0x1fUL) /*!< RFCU_POWER RF_ENABLE_CONFIG24_BLE_REG: rfio_txrx_ble_dcf_rx (Bitfield-Mask: 0x1f) */ -#define RFCU_POWER_RF_ENABLE_CONFIG24_BLE_REG_rfio_txrx_ble_dcf_tx_Pos (5UL) /*!< RFCU_POWER RF_ENABLE_CONFIG24_BLE_REG: rfio_txrx_ble_dcf_tx (Bit 5) */ -#define RFCU_POWER_RF_ENABLE_CONFIG24_BLE_REG_rfio_txrx_ble_dcf_tx_Msk (0x3e0UL) /*!< RFCU_POWER RF_ENABLE_CONFIG24_BLE_REG: rfio_txrx_ble_dcf_tx (Bitfield-Mask: 0x1f) */ - -/* ---------------------- RFCU_POWER_RF_ENABLE_CONFIG25_REG --------------------- */ -#define RFCU_POWER_RF_ENABLE_CONFIG25_REG_lobuf_pa_en_dcf_rx_Pos (0UL) /*!< RFCU_POWER RF_ENABLE_CONFIG25_REG: lobuf_pa_en_dcf_rx (Bit 0) */ -#define RFCU_POWER_RF_ENABLE_CONFIG25_REG_lobuf_pa_en_dcf_rx_Msk (0x1fUL) /*!< RFCU_POWER RF_ENABLE_CONFIG25_REG: lobuf_pa_en_dcf_rx (Bitfield-Mask: 0x1f) */ -#define RFCU_POWER_RF_ENABLE_CONFIG25_REG_lobuf_pa_en_dcf_tx_Pos (5UL) /*!< RFCU_POWER RF_ENABLE_CONFIG25_REG: lobuf_pa_en_dcf_tx (Bit 5) */ -#define RFCU_POWER_RF_ENABLE_CONFIG25_REG_lobuf_pa_en_dcf_tx_Msk (0x3e0UL) /*!< RFCU_POWER RF_ENABLE_CONFIG25_REG: lobuf_pa_en_dcf_tx (Bitfield-Mask: 0x1f) */ - -/* ---------------------- RFCU_POWER_RF_ENABLE_CONFIG26_REG --------------------- */ -#define RFCU_POWER_RF_ENABLE_CONFIG26_REG_lobuf_rxiq_en_dcf_rx_Pos (0UL) /*!< RFCU_POWER RF_ENABLE_CONFIG26_REG: lobuf_rxiq_en_dcf_rx (Bit 0) */ -#define RFCU_POWER_RF_ENABLE_CONFIG26_REG_lobuf_rxiq_en_dcf_rx_Msk (0x1fUL) /*!< RFCU_POWER RF_ENABLE_CONFIG26_REG: lobuf_rxiq_en_dcf_rx (Bitfield-Mask: 0x1f) */ -#define RFCU_POWER_RF_ENABLE_CONFIG26_REG_lobuf_rxiq_en_dcf_tx_Pos (5UL) /*!< RFCU_POWER RF_ENABLE_CONFIG26_REG: lobuf_rxiq_en_dcf_tx (Bit 5) */ -#define RFCU_POWER_RF_ENABLE_CONFIG26_REG_lobuf_rxiq_en_dcf_tx_Msk (0x3e0UL) /*!< RFCU_POWER RF_ENABLE_CONFIG26_REG: lobuf_rxiq_en_dcf_tx (Bitfield-Mask: 0x1f) */ - -/* ---------------------- RFCU_POWER_RF_ENABLE_CONFIG27_REG --------------------- */ -#define RFCU_POWER_RF_ENABLE_CONFIG27_REG_div2_en_dcf_rx_Pos (0UL) /*!< RFCU_POWER RF_ENABLE_CONFIG27_REG: div2_en_dcf_rx (Bit 0) */ -#define RFCU_POWER_RF_ENABLE_CONFIG27_REG_div2_en_dcf_rx_Msk (0x1fUL) /*!< RFCU_POWER RF_ENABLE_CONFIG27_REG: div2_en_dcf_rx (Bitfield-Mask: 0x1f) */ -#define RFCU_POWER_RF_ENABLE_CONFIG27_REG_div2_en_dcf_tx_Pos (5UL) /*!< RFCU_POWER RF_ENABLE_CONFIG27_REG: div2_en_dcf_tx (Bit 5) */ -#define RFCU_POWER_RF_ENABLE_CONFIG27_REG_div2_en_dcf_tx_Msk (0x3e0UL) /*!< RFCU_POWER RF_ENABLE_CONFIG27_REG: div2_en_dcf_tx (Bitfield-Mask: 0x1f) */ - -/* ---------------------- RFCU_POWER_RF_ENABLE_CONFIG28_REG --------------------- */ -#define RFCU_POWER_RF_ENABLE_CONFIG28_REG_cp_bias_sh_open_dcf_rx_Pos (0UL) /*!< RFCU_POWER RF_ENABLE_CONFIG28_REG: cp_bias_sh_open_dcf_rx (Bit 0) */ -#define RFCU_POWER_RF_ENABLE_CONFIG28_REG_cp_bias_sh_open_dcf_rx_Msk (0x1fUL) /*!< RFCU_POWER RF_ENABLE_CONFIG28_REG: cp_bias_sh_open_dcf_rx (Bitfield-Mask: 0x1f) */ -#define RFCU_POWER_RF_ENABLE_CONFIG28_REG_cp_bias_sh_open_dcf_tx_Pos (5UL) /*!< RFCU_POWER RF_ENABLE_CONFIG28_REG: cp_bias_sh_open_dcf_tx (Bit 5) */ -#define RFCU_POWER_RF_ENABLE_CONFIG28_REG_cp_bias_sh_open_dcf_tx_Msk (0x3e0UL) /*!< RFCU_POWER RF_ENABLE_CONFIG28_REG: cp_bias_sh_open_dcf_tx (Bitfield-Mask: 0x1f) */ - -/* ---------------------- RFCU_POWER_RF_ENABLE_CONFIG29_REG --------------------- */ -#define RFCU_POWER_RF_ENABLE_CONFIG29_REG_vco_bias_sh_open_dcf_rx_Pos (0UL) /*!< RFCU_POWER RF_ENABLE_CONFIG29_REG: vco_bias_sh_open_dcf_rx (Bit 0) */ -#define RFCU_POWER_RF_ENABLE_CONFIG29_REG_vco_bias_sh_open_dcf_rx_Msk (0x1fUL) /*!< RFCU_POWER RF_ENABLE_CONFIG29_REG: vco_bias_sh_open_dcf_rx (Bitfield-Mask: 0x1f) */ -#define RFCU_POWER_RF_ENABLE_CONFIG29_REG_vco_bias_sh_open_dcf_tx_Pos (5UL) /*!< RFCU_POWER RF_ENABLE_CONFIG29_REG: vco_bias_sh_open_dcf_tx (Bit 5) */ -#define RFCU_POWER_RF_ENABLE_CONFIG29_REG_vco_bias_sh_open_dcf_tx_Msk (0x3e0UL) /*!< RFCU_POWER RF_ENABLE_CONFIG29_REG: vco_bias_sh_open_dcf_tx (Bitfield-Mask: 0x1f) */ - -/* ---------------------- RFCU_POWER_RF_ENABLE_CONFIG30_REG --------------------- */ -#define RFCU_POWER_RF_ENABLE_CONFIG30_REG_iffmix_bias_sh_open_dcf_rx_Pos (0UL) /*!< RFCU_POWER RF_ENABLE_CONFIG30_REG: iffmix_bias_sh_open_dcf_rx (Bit 0) */ -#define RFCU_POWER_RF_ENABLE_CONFIG30_REG_iffmix_bias_sh_open_dcf_rx_Msk (0x1fUL) /*!< RFCU_POWER RF_ENABLE_CONFIG30_REG: iffmix_bias_sh_open_dcf_rx (Bitfield-Mask: 0x1f) */ -#define RFCU_POWER_RF_ENABLE_CONFIG30_REG_iffmix_bias_sh_open_dcf_tx_Pos (5UL) /*!< RFCU_POWER RF_ENABLE_CONFIG30_REG: iffmix_bias_sh_open_dcf_tx (Bit 5) */ -#define RFCU_POWER_RF_ENABLE_CONFIG30_REG_iffmix_bias_sh_open_dcf_tx_Msk (0x3e0UL) /*!< RFCU_POWER RF_ENABLE_CONFIG30_REG: iffmix_bias_sh_open_dcf_tx (Bitfield-Mask: 0x1f) */ - -/* -------------------- RFCU_POWER_RF_ENABLE_CONFIG31_BLE_REG ------------------- */ -#define RFCU_POWER_RF_ENABLE_CONFIG31_BLE_REG_gauss_bias_sh_ble_dcf_rx_Pos (0UL) /*!< RFCU_POWER RF_ENABLE_CONFIG31_BLE_REG: gauss_bias_sh_ble_dcf_rx (Bit 0) */ -#define RFCU_POWER_RF_ENABLE_CONFIG31_BLE_REG_gauss_bias_sh_ble_dcf_rx_Msk (0x1fUL) /*!< RFCU_POWER RF_ENABLE_CONFIG31_BLE_REG: gauss_bias_sh_ble_dcf_rx (Bitfield-Mask: 0x1f) */ -#define RFCU_POWER_RF_ENABLE_CONFIG31_BLE_REG_gauss_bias_sh_ble_dcf_tx_Pos (5UL) /*!< RFCU_POWER RF_ENABLE_CONFIG31_BLE_REG: gauss_bias_sh_ble_dcf_tx (Bit 5) */ -#define RFCU_POWER_RF_ENABLE_CONFIG31_BLE_REG_gauss_bias_sh_ble_dcf_tx_Msk (0x3e0UL) /*!< RFCU_POWER RF_ENABLE_CONFIG31_BLE_REG: gauss_bias_sh_ble_dcf_tx (Bitfield-Mask: 0x1f) */ - -/* ---------------------- RFCU_POWER_RF_ENABLE_CONFIG32_REG --------------------- */ -#define RFCU_POWER_RF_ENABLE_CONFIG32_REG_mix_bias_sh_dcf_rx_Pos (0UL) /*!< RFCU_POWER RF_ENABLE_CONFIG32_REG: mix_bias_sh_dcf_rx (Bit 0) */ -#define RFCU_POWER_RF_ENABLE_CONFIG32_REG_mix_bias_sh_dcf_rx_Msk (0x1fUL) /*!< RFCU_POWER RF_ENABLE_CONFIG32_REG: mix_bias_sh_dcf_rx (Bitfield-Mask: 0x1f) */ -#define RFCU_POWER_RF_ENABLE_CONFIG32_REG_mix_bias_sh_dcf_tx_Pos (5UL) /*!< RFCU_POWER RF_ENABLE_CONFIG32_REG: mix_bias_sh_dcf_tx (Bit 5) */ -#define RFCU_POWER_RF_ENABLE_CONFIG32_REG_mix_bias_sh_dcf_tx_Msk (0x3e0UL) /*!< RFCU_POWER RF_ENABLE_CONFIG32_REG: mix_bias_sh_dcf_tx (Bitfield-Mask: 0x1f) */ - -/* ---------------------- RFCU_POWER_RF_ENABLE_CONFIG33_REG --------------------- */ -#define RFCU_POWER_RF_ENABLE_CONFIG33_REG_pll_dig_en_dcf_rx_Pos (0UL) /*!< RFCU_POWER RF_ENABLE_CONFIG33_REG: pll_dig_en_dcf_rx (Bit 0) */ -#define RFCU_POWER_RF_ENABLE_CONFIG33_REG_pll_dig_en_dcf_rx_Msk (0x1fUL) /*!< RFCU_POWER RF_ENABLE_CONFIG33_REG: pll_dig_en_dcf_rx (Bitfield-Mask: 0x1f) */ -#define RFCU_POWER_RF_ENABLE_CONFIG33_REG_pll_dig_en_dcf_tx_Pos (5UL) /*!< RFCU_POWER RF_ENABLE_CONFIG33_REG: pll_dig_en_dcf_tx (Bit 5) */ -#define RFCU_POWER_RF_ENABLE_CONFIG33_REG_pll_dig_en_dcf_tx_Msk (0x3e0UL) /*!< RFCU_POWER RF_ENABLE_CONFIG33_REG: pll_dig_en_dcf_tx (Bitfield-Mask: 0x1f) */ - -/* ---------------------- RFCU_POWER_RF_ENABLE_CONFIG34_REG --------------------- */ -#define RFCU_POWER_RF_ENABLE_CONFIG34_REG_pllclosed_en_dcf_rx_Pos (0UL) /*!< RFCU_POWER RF_ENABLE_CONFIG34_REG: pllclosed_en_dcf_rx (Bit 0) */ -#define RFCU_POWER_RF_ENABLE_CONFIG34_REG_pllclosed_en_dcf_rx_Msk (0x1fUL) /*!< RFCU_POWER RF_ENABLE_CONFIG34_REG: pllclosed_en_dcf_rx (Bitfield-Mask: 0x1f) */ -#define RFCU_POWER_RF_ENABLE_CONFIG34_REG_pllclosed_en_dcf_tx_Pos (5UL) /*!< RFCU_POWER RF_ENABLE_CONFIG34_REG: pllclosed_en_dcf_tx (Bit 5) */ -#define RFCU_POWER_RF_ENABLE_CONFIG34_REG_pllclosed_en_dcf_tx_Msk (0x3e0UL) /*!< RFCU_POWER RF_ENABLE_CONFIG34_REG: pllclosed_en_dcf_tx (Bitfield-Mask: 0x1f) */ - -/* -------------------- RFCU_POWER_RF_ENABLE_CONFIG35_BLE_REG ------------------- */ -#define RFCU_POWER_RF_ENABLE_CONFIG35_BLE_REG_dem_en_ble_dcf_rx_Pos (0UL) /*!< RFCU_POWER RF_ENABLE_CONFIG35_BLE_REG: dem_en_ble_dcf_rx (Bit 0) */ -#define RFCU_POWER_RF_ENABLE_CONFIG35_BLE_REG_dem_en_ble_dcf_rx_Msk (0x1fUL) /*!< RFCU_POWER RF_ENABLE_CONFIG35_BLE_REG: dem_en_ble_dcf_rx (Bitfield-Mask: 0x1f) */ -#define RFCU_POWER_RF_ENABLE_CONFIG35_BLE_REG_dem_en_ble_dcf_tx_Pos (5UL) /*!< RFCU_POWER RF_ENABLE_CONFIG35_BLE_REG: dem_en_ble_dcf_tx (Bit 5) */ -#define RFCU_POWER_RF_ENABLE_CONFIG35_BLE_REG_dem_en_ble_dcf_tx_Msk (0x3e0UL) /*!< RFCU_POWER RF_ENABLE_CONFIG35_BLE_REG: dem_en_ble_dcf_tx (Bitfield-Mask: 0x1f) */ - -/* ---------------------- RFCU_POWER_RF_ENABLE_CONFIG36_REG --------------------- */ -#define RFCU_POWER_RF_ENABLE_CONFIG36_REG_ldo_zero_en_dcf_rx_Pos (0UL) /*!< RFCU_POWER RF_ENABLE_CONFIG36_REG: ldo_zero_en_dcf_rx (Bit 0) */ -#define RFCU_POWER_RF_ENABLE_CONFIG36_REG_ldo_zero_en_dcf_rx_Msk (0x1fUL) /*!< RFCU_POWER RF_ENABLE_CONFIG36_REG: ldo_zero_en_dcf_rx (Bitfield-Mask: 0x1f) */ -#define RFCU_POWER_RF_ENABLE_CONFIG36_REG_ldo_zero_en_dcf_tx_Pos (5UL) /*!< RFCU_POWER RF_ENABLE_CONFIG36_REG: ldo_zero_en_dcf_tx (Bit 5) */ -#define RFCU_POWER_RF_ENABLE_CONFIG36_REG_ldo_zero_en_dcf_tx_Msk (0x3e0UL) /*!< RFCU_POWER RF_ENABLE_CONFIG36_REG: ldo_zero_en_dcf_tx (Bitfield-Mask: 0x1f) */ - -/* -------------------- RFCU_POWER_RF_ENABLE_CONFIG37_BLE_REG ------------------- */ -#define RFCU_POWER_RF_ENABLE_CONFIG37_BLE_REG_cal_en_ble_dcf_rx_Pos (0UL) /*!< RFCU_POWER RF_ENABLE_CONFIG37_BLE_REG: cal_en_ble_dcf_rx (Bit 0) */ -#define RFCU_POWER_RF_ENABLE_CONFIG37_BLE_REG_cal_en_ble_dcf_rx_Msk (0x1fUL) /*!< RFCU_POWER RF_ENABLE_CONFIG37_BLE_REG: cal_en_ble_dcf_rx (Bitfield-Mask: 0x1f) */ -#define RFCU_POWER_RF_ENABLE_CONFIG37_BLE_REG_cal_en_ble_dcf_tx_Pos (5UL) /*!< RFCU_POWER RF_ENABLE_CONFIG37_BLE_REG: cal_en_ble_dcf_tx (Bit 5) */ -#define RFCU_POWER_RF_ENABLE_CONFIG37_BLE_REG_cal_en_ble_dcf_tx_Msk (0x3e0UL) /*!< RFCU_POWER RF_ENABLE_CONFIG37_BLE_REG: cal_en_ble_dcf_tx (Bitfield-Mask: 0x1f) */ - -/* -------------------- RFCU_POWER_RF_ENABLE_CONFIG38_BLE_REG ------------------- */ -#define RFCU_POWER_RF_ENABLE_CONFIG38_BLE_REG_tdc_en_ble_dcf_rx_Pos (0UL) /*!< RFCU_POWER RF_ENABLE_CONFIG38_BLE_REG: tdc_en_ble_dcf_rx (Bit 0) */ -#define RFCU_POWER_RF_ENABLE_CONFIG38_BLE_REG_tdc_en_ble_dcf_rx_Msk (0x1fUL) /*!< RFCU_POWER RF_ENABLE_CONFIG38_BLE_REG: tdc_en_ble_dcf_rx (Bitfield-Mask: 0x1f) */ -#define RFCU_POWER_RF_ENABLE_CONFIG38_BLE_REG_tdc_en_ble_dcf_tx_Pos (5UL) /*!< RFCU_POWER RF_ENABLE_CONFIG38_BLE_REG: tdc_en_ble_dcf_tx (Bit 5) */ -#define RFCU_POWER_RF_ENABLE_CONFIG38_BLE_REG_tdc_en_ble_dcf_tx_Msk (0x3e0UL) /*!< RFCU_POWER RF_ENABLE_CONFIG38_BLE_REG: tdc_en_ble_dcf_tx (Bitfield-Mask: 0x1f) */ - -/* ---------------------- RFCU_POWER_RF_ENABLE_CONFIG39_REG --------------------- */ -#define RFCU_POWER_RF_ENABLE_CONFIG39_REG_ldo_rfio_en_dcf_rx_Pos (0UL) /*!< RFCU_POWER RF_ENABLE_CONFIG39_REG: ldo_rfio_en_dcf_rx (Bit 0) */ -#define RFCU_POWER_RF_ENABLE_CONFIG39_REG_ldo_rfio_en_dcf_rx_Msk (0x1fUL) /*!< RFCU_POWER RF_ENABLE_CONFIG39_REG: ldo_rfio_en_dcf_rx (Bitfield-Mask: 0x1f) */ -#define RFCU_POWER_RF_ENABLE_CONFIG39_REG_ldo_rfio_en_dcf_tx_Pos (5UL) /*!< RFCU_POWER RF_ENABLE_CONFIG39_REG: ldo_rfio_en_dcf_tx (Bit 5) */ -#define RFCU_POWER_RF_ENABLE_CONFIG39_REG_ldo_rfio_en_dcf_tx_Msk (0x3e0UL) /*!< RFCU_POWER RF_ENABLE_CONFIG39_REG: ldo_rfio_en_dcf_tx (Bitfield-Mask: 0x1f) */ - -/* ---------------------- RFCU_POWER_RF_ENABLE_CONFIG40_REG --------------------- */ -#define RFCU_POWER_RF_ENABLE_CONFIG40_REG_rfio_bias_en_dcf_rx_Pos (0UL) /*!< RFCU_POWER RF_ENABLE_CONFIG40_REG: rfio_bias_en_dcf_rx (Bit 0) */ -#define RFCU_POWER_RF_ENABLE_CONFIG40_REG_rfio_bias_en_dcf_rx_Msk (0x1fUL) /*!< RFCU_POWER RF_ENABLE_CONFIG40_REG: rfio_bias_en_dcf_rx (Bitfield-Mask: 0x1f) */ -#define RFCU_POWER_RF_ENABLE_CONFIG40_REG_rfio_bias_en_dcf_tx_Pos (5UL) /*!< RFCU_POWER RF_ENABLE_CONFIG40_REG: rfio_bias_en_dcf_tx (Bit 5) */ -#define RFCU_POWER_RF_ENABLE_CONFIG40_REG_rfio_bias_en_dcf_tx_Msk (0x3e0UL) /*!< RFCU_POWER RF_ENABLE_CONFIG40_REG: rfio_bias_en_dcf_tx (Bitfield-Mask: 0x1f) */ - -/* ---------------------- RFCU_POWER_RF_ENABLE_CONFIG41_REG --------------------- */ -#define RFCU_POWER_RF_ENABLE_CONFIG41_REG_rfio_bias_sh_dcf_rx_Pos (0UL) /*!< RFCU_POWER RF_ENABLE_CONFIG41_REG: rfio_bias_sh_dcf_rx (Bit 0) */ -#define RFCU_POWER_RF_ENABLE_CONFIG41_REG_rfio_bias_sh_dcf_rx_Msk (0x1fUL) /*!< RFCU_POWER RF_ENABLE_CONFIG41_REG: rfio_bias_sh_dcf_rx (Bitfield-Mask: 0x1f) */ -#define RFCU_POWER_RF_ENABLE_CONFIG41_REG_rfio_bias_sh_dcf_tx_Pos (5UL) /*!< RFCU_POWER RF_ENABLE_CONFIG41_REG: rfio_bias_sh_dcf_tx (Bit 5) */ -#define RFCU_POWER_RF_ENABLE_CONFIG41_REG_rfio_bias_sh_dcf_tx_Msk (0x3e0UL) /*!< RFCU_POWER RF_ENABLE_CONFIG41_REG: rfio_bias_sh_dcf_tx (Bitfield-Mask: 0x1f) */ - -/* ---------------------- RFCU_POWER_RF_ENABLE_CONFIG42_REG --------------------- */ -#define RFCU_POWER_RF_ENABLE_CONFIG42_REG_ldo_radio_en_dcf_rx_Pos (0UL) /*!< RFCU_POWER RF_ENABLE_CONFIG42_REG: ldo_radio_en_dcf_rx (Bit 0) */ -#define RFCU_POWER_RF_ENABLE_CONFIG42_REG_ldo_radio_en_dcf_rx_Msk (0x1fUL) /*!< RFCU_POWER RF_ENABLE_CONFIG42_REG: ldo_radio_en_dcf_rx (Bitfield-Mask: 0x1f) */ -#define RFCU_POWER_RF_ENABLE_CONFIG42_REG_ldo_radio_en_dcf_tx_Pos (5UL) /*!< RFCU_POWER RF_ENABLE_CONFIG42_REG: ldo_radio_en_dcf_tx (Bit 5) */ -#define RFCU_POWER_RF_ENABLE_CONFIG42_REG_ldo_radio_en_dcf_tx_Msk (0x3e0UL) /*!< RFCU_POWER RF_ENABLE_CONFIG42_REG: ldo_radio_en_dcf_tx (Bitfield-Mask: 0x1f) */ - -/* ---------------------- RFCU_POWER_RF_ENABLE_CONFIG43_REG --------------------- */ -#define RFCU_POWER_RF_ENABLE_CONFIG43_REG_adc_clk_en_dcf_rx_Pos (0UL) /*!< RFCU_POWER RF_ENABLE_CONFIG43_REG: adc_clk_en_dcf_rx (Bit 0) */ -#define RFCU_POWER_RF_ENABLE_CONFIG43_REG_adc_clk_en_dcf_rx_Msk (0x1fUL) /*!< RFCU_POWER RF_ENABLE_CONFIG43_REG: adc_clk_en_dcf_rx (Bitfield-Mask: 0x1f) */ -#define RFCU_POWER_RF_ENABLE_CONFIG43_REG_adc_clk_en_dcf_tx_Pos (5UL) /*!< RFCU_POWER RF_ENABLE_CONFIG43_REG: adc_clk_en_dcf_tx (Bit 5) */ -#define RFCU_POWER_RF_ENABLE_CONFIG43_REG_adc_clk_en_dcf_tx_Msk (0x3e0UL) /*!< RFCU_POWER RF_ENABLE_CONFIG43_REG: adc_clk_en_dcf_tx (Bitfield-Mask: 0x1f) */ - -/* -------------------- RFCU_POWER_RF_ENABLE_CONFIG44_BLE_REG ------------------- */ -#define RFCU_POWER_RF_ENABLE_CONFIG44_BLE_REG_tr_pwm_off_en_ble_dcf_rx_Pos (0UL) /*!< RFCU_POWER RF_ENABLE_CONFIG44_BLE_REG: tr_pwm_off_en_ble_dcf_rx (Bit 0) */ -#define RFCU_POWER_RF_ENABLE_CONFIG44_BLE_REG_tr_pwm_off_en_ble_dcf_rx_Msk (0x1fUL) /*!< RFCU_POWER RF_ENABLE_CONFIG44_BLE_REG: tr_pwm_off_en_ble_dcf_rx (Bitfield-Mask: 0x1f) */ -#define RFCU_POWER_RF_ENABLE_CONFIG44_BLE_REG_tr_pwm_off_en_ble_dcf_tx_Pos (5UL) /*!< RFCU_POWER RF_ENABLE_CONFIG44_BLE_REG: tr_pwm_off_en_ble_dcf_tx (Bit 5) */ -#define RFCU_POWER_RF_ENABLE_CONFIG44_BLE_REG_tr_pwm_off_en_ble_dcf_tx_Msk (0x3e0UL) /*!< RFCU_POWER RF_ENABLE_CONFIG44_BLE_REG: tr_pwm_off_en_ble_dcf_tx (Bitfield-Mask: 0x1f) */ - -/* -------------------- RFCU_POWER_RF_ENABLE_CONFIG45_BLE_REG ------------------- */ -#define RFCU_POWER_RF_ENABLE_CONFIG45_BLE_REG_txdac_en_ble_dcf_rx_Pos (0UL) /*!< RFCU_POWER RF_ENABLE_CONFIG45_BLE_REG: txdac_en_ble_dcf_rx (Bit 0) */ -#define RFCU_POWER_RF_ENABLE_CONFIG45_BLE_REG_txdac_en_ble_dcf_rx_Msk (0x1fUL) /*!< RFCU_POWER RF_ENABLE_CONFIG45_BLE_REG: txdac_en_ble_dcf_rx (Bitfield-Mask: 0x1f) */ -#define RFCU_POWER_RF_ENABLE_CONFIG45_BLE_REG_txdac_en_ble_dcf_tx_Pos (5UL) /*!< RFCU_POWER RF_ENABLE_CONFIG45_BLE_REG: txdac_en_ble_dcf_tx (Bit 5) */ -#define RFCU_POWER_RF_ENABLE_CONFIG45_BLE_REG_txdac_en_ble_dcf_tx_Msk (0x3e0UL) /*!< RFCU_POWER RF_ENABLE_CONFIG45_BLE_REG: txdac_en_ble_dcf_tx (Bitfield-Mask: 0x1f) */ - -/* -------------------- RFCU_POWER_RF_ENABLE_CONFIG46_BLE_REG ------------------- */ -#define RFCU_POWER_RF_ENABLE_CONFIG46_BLE_REG_dem_dcparcal_en_ble_dcf_rx_Pos (0UL) /*!< RFCU_POWER RF_ENABLE_CONFIG46_BLE_REG: dem_dcparcal_en_ble_dcf_rx (Bit 0) */ -#define RFCU_POWER_RF_ENABLE_CONFIG46_BLE_REG_dem_dcparcal_en_ble_dcf_rx_Msk (0x1fUL) /*!< RFCU_POWER RF_ENABLE_CONFIG46_BLE_REG: dem_dcparcal_en_ble_dcf_rx (Bitfield-Mask: 0x1f) */ -#define RFCU_POWER_RF_ENABLE_CONFIG46_BLE_REG_spare2_en_ble_dcf_tx_Pos (5UL) /*!< RFCU_POWER RF_ENABLE_CONFIG46_BLE_REG: spare2_en_ble_dcf_tx (Bit 5) */ -#define RFCU_POWER_RF_ENABLE_CONFIG46_BLE_REG_spare2_en_ble_dcf_tx_Msk (0x3e0UL) /*!< RFCU_POWER RF_ENABLE_CONFIG46_BLE_REG: spare2_en_ble_dcf_tx (Bitfield-Mask: 0x1f) */ - -/* -------------------- RFCU_POWER_RF_ENABLE_CONFIG47_BLE_REG ------------------- */ -#define RFCU_POWER_RF_ENABLE_CONFIG47_BLE_REG_dem_agcunfreeze_en_ble_dcf_rx_Pos (0UL) /*!< RFCU_POWER RF_ENABLE_CONFIG47_BLE_REG: dem_agcunfreeze_en_ble_dcf_rx (Bit 0) */ -#define RFCU_POWER_RF_ENABLE_CONFIG47_BLE_REG_dem_agcunfreeze_en_ble_dcf_rx_Msk (0x1fUL) /*!< RFCU_POWER RF_ENABLE_CONFIG47_BLE_REG: dem_agcunfreeze_en_ble_dcf_rx (Bitfield-Mask: 0x1f) */ -#define RFCU_POWER_RF_ENABLE_CONFIG47_BLE_REG_spare3_en_ble_dcf_tx_Pos (5UL) /*!< RFCU_POWER RF_ENABLE_CONFIG47_BLE_REG: spare3_en_ble_dcf_tx (Bit 5) */ -#define RFCU_POWER_RF_ENABLE_CONFIG47_BLE_REG_spare3_en_ble_dcf_tx_Msk (0x3e0UL) /*!< RFCU_POWER RF_ENABLE_CONFIG47_BLE_REG: spare3_en_ble_dcf_tx (Bitfield-Mask: 0x1f) */ - -/* -------------------- RFCU_POWER_RF_ENABLE_CONFIG48_BLE_REG ------------------- */ -#define RFCU_POWER_RF_ENABLE_CONFIG48_BLE_REG_dem_sigdetect_en_ble_dcf_rx_Pos (0UL) /*!< RFCU_POWER RF_ENABLE_CONFIG48_BLE_REG: dem_sigdetect_en_ble_dcf_rx (Bit 0) */ -#define RFCU_POWER_RF_ENABLE_CONFIG48_BLE_REG_dem_sigdetect_en_ble_dcf_rx_Msk (0x1fUL) /*!< RFCU_POWER RF_ENABLE_CONFIG48_BLE_REG: dem_sigdetect_en_ble_dcf_rx (Bitfield-Mask: 0x1f) */ -#define RFCU_POWER_RF_ENABLE_CONFIG48_BLE_REG_spare4_en_ble_dcf_tx_Pos (5UL) /*!< RFCU_POWER RF_ENABLE_CONFIG48_BLE_REG: spare4_en_ble_dcf_tx (Bit 5) */ -#define RFCU_POWER_RF_ENABLE_CONFIG48_BLE_REG_spare4_en_ble_dcf_tx_Msk (0x3e0UL) /*!< RFCU_POWER RF_ENABLE_CONFIG48_BLE_REG: spare4_en_ble_dcf_tx (Bitfield-Mask: 0x1f) */ - -/* -------------------- RFCU_POWER_RF_ENABLE_CONFIG49_BLE_REG ------------------- */ -#define RFCU_POWER_RF_ENABLE_CONFIG49_BLE_REG_dem_ftdf_en_ble_dcf_rx_Pos (0UL) /*!< RFCU_POWER RF_ENABLE_CONFIG49_BLE_REG: dem_ftdf_en_ble_dcf_rx (Bit 0) */ -#define RFCU_POWER_RF_ENABLE_CONFIG49_BLE_REG_dem_ftdf_en_ble_dcf_rx_Msk (0x1fUL) /*!< RFCU_POWER RF_ENABLE_CONFIG49_BLE_REG: dem_ftdf_en_ble_dcf_rx (Bitfield-Mask: 0x1f) */ -#define RFCU_POWER_RF_ENABLE_CONFIG49_BLE_REG_dem_ftdf_en_ble_dcf_tx_Pos (5UL) /*!< RFCU_POWER RF_ENABLE_CONFIG49_BLE_REG: dem_ftdf_en_ble_dcf_tx (Bit 5) */ -#define RFCU_POWER_RF_ENABLE_CONFIG49_BLE_REG_dem_ftdf_en_ble_dcf_tx_Msk (0x3e0UL) /*!< RFCU_POWER RF_ENABLE_CONFIG49_BLE_REG: dem_ftdf_en_ble_dcf_tx (Bitfield-Mask: 0x1f) */ - -/* ------------------- RFCU_POWER_RF_ENABLE_CONFIG23_FTDF_REG ------------------- */ -#define RFCU_POWER_RF_ENABLE_CONFIG23_FTDF_REG_gauss_en_ftdf_dcf_rx_Pos (0UL) /*!< RFCU_POWER RF_ENABLE_CONFIG23_FTDF_REG: gauss_en_ftdf_dcf_rx (Bit 0) */ -#define RFCU_POWER_RF_ENABLE_CONFIG23_FTDF_REG_gauss_en_ftdf_dcf_rx_Msk (0x1fUL) /*!< RFCU_POWER RF_ENABLE_CONFIG23_FTDF_REG: gauss_en_ftdf_dcf_rx (Bitfield-Mask: 0x1f) */ -#define RFCU_POWER_RF_ENABLE_CONFIG23_FTDF_REG_gauss_en_ftdf_dcf_tx_Pos (5UL) /*!< RFCU_POWER RF_ENABLE_CONFIG23_FTDF_REG: gauss_en_ftdf_dcf_tx (Bit 5) */ -#define RFCU_POWER_RF_ENABLE_CONFIG23_FTDF_REG_gauss_en_ftdf_dcf_tx_Msk (0x3e0UL) /*!< RFCU_POWER RF_ENABLE_CONFIG23_FTDF_REG: gauss_en_ftdf_dcf_tx (Bitfield-Mask: 0x1f) */ - -/* ------------------- RFCU_POWER_RF_ENABLE_CONFIG24_FTDF_REG ------------------- */ -#define RFCU_POWER_RF_ENABLE_CONFIG24_FTDF_REG_rfio_txrx_ftdf_dcf_rx_Pos (0UL) /*!< RFCU_POWER RF_ENABLE_CONFIG24_FTDF_REG: rfio_txrx_ftdf_dcf_rx (Bit 0) */ -#define RFCU_POWER_RF_ENABLE_CONFIG24_FTDF_REG_rfio_txrx_ftdf_dcf_rx_Msk (0x1fUL) /*!< RFCU_POWER RF_ENABLE_CONFIG24_FTDF_REG: rfio_txrx_ftdf_dcf_rx (Bitfield-Mask: 0x1f) */ -#define RFCU_POWER_RF_ENABLE_CONFIG24_FTDF_REG_rfio_txrx_ftdf_dcf_tx_Pos (5UL) /*!< RFCU_POWER RF_ENABLE_CONFIG24_FTDF_REG: rfio_txrx_ftdf_dcf_tx (Bit 5) */ -#define RFCU_POWER_RF_ENABLE_CONFIG24_FTDF_REG_rfio_txrx_ftdf_dcf_tx_Msk (0x3e0UL) /*!< RFCU_POWER RF_ENABLE_CONFIG24_FTDF_REG: rfio_txrx_ftdf_dcf_tx (Bitfield-Mask: 0x1f) */ - -/* ------------------- RFCU_POWER_RF_ENABLE_CONFIG31_FTDF_REG ------------------- */ -#define RFCU_POWER_RF_ENABLE_CONFIG31_FTDF_REG_gauss_bias_sh_ftdf_dcf_rx_Pos (0UL) /*!< RFCU_POWER RF_ENABLE_CONFIG31_FTDF_REG: gauss_bias_sh_ftdf_dcf_rx (Bit 0) */ -#define RFCU_POWER_RF_ENABLE_CONFIG31_FTDF_REG_gauss_bias_sh_ftdf_dcf_rx_Msk (0x1fUL) /*!< RFCU_POWER RF_ENABLE_CONFIG31_FTDF_REG: gauss_bias_sh_ftdf_dcf_rx (Bitfield-Mask: 0x1f) */ -#define RFCU_POWER_RF_ENABLE_CONFIG31_FTDF_REG_gauss_bias_sh_ftdf_dcf_tx_Pos (5UL) /*!< RFCU_POWER RF_ENABLE_CONFIG31_FTDF_REG: gauss_bias_sh_ftdf_dcf_tx (Bit 5) */ -#define RFCU_POWER_RF_ENABLE_CONFIG31_FTDF_REG_gauss_bias_sh_ftdf_dcf_tx_Msk (0x3e0UL) /*!< RFCU_POWER RF_ENABLE_CONFIG31_FTDF_REG: gauss_bias_sh_ftdf_dcf_tx (Bitfield-Mask: 0x1f) */ - -/* ------------------- RFCU_POWER_RF_ENABLE_CONFIG35_FTDF_REG ------------------- */ -#define RFCU_POWER_RF_ENABLE_CONFIG35_FTDF_REG_dem_en_ftdf_dcf_rx_Pos (0UL) /*!< RFCU_POWER RF_ENABLE_CONFIG35_FTDF_REG: dem_en_ftdf_dcf_rx (Bit 0) */ -#define RFCU_POWER_RF_ENABLE_CONFIG35_FTDF_REG_dem_en_ftdf_dcf_rx_Msk (0x1fUL) /*!< RFCU_POWER RF_ENABLE_CONFIG35_FTDF_REG: dem_en_ftdf_dcf_rx (Bitfield-Mask: 0x1f) */ -#define RFCU_POWER_RF_ENABLE_CONFIG35_FTDF_REG_dem_en_ftdf_dcf_tx_Pos (5UL) /*!< RFCU_POWER RF_ENABLE_CONFIG35_FTDF_REG: dem_en_ftdf_dcf_tx (Bit 5) */ -#define RFCU_POWER_RF_ENABLE_CONFIG35_FTDF_REG_dem_en_ftdf_dcf_tx_Msk (0x3e0UL) /*!< RFCU_POWER RF_ENABLE_CONFIG35_FTDF_REG: dem_en_ftdf_dcf_tx (Bitfield-Mask: 0x1f) */ - -/* ------------------- RFCU_POWER_RF_ENABLE_CONFIG37_FTDF_REG ------------------- */ -#define RFCU_POWER_RF_ENABLE_CONFIG37_FTDF_REG_cal_en_ftdf_dcf_rx_Pos (0UL) /*!< RFCU_POWER RF_ENABLE_CONFIG37_FTDF_REG: cal_en_ftdf_dcf_rx (Bit 0) */ -#define RFCU_POWER_RF_ENABLE_CONFIG37_FTDF_REG_cal_en_ftdf_dcf_rx_Msk (0x1fUL) /*!< RFCU_POWER RF_ENABLE_CONFIG37_FTDF_REG: cal_en_ftdf_dcf_rx (Bitfield-Mask: 0x1f) */ -#define RFCU_POWER_RF_ENABLE_CONFIG37_FTDF_REG_cal_en_ftdf_dcf_tx_Pos (5UL) /*!< RFCU_POWER RF_ENABLE_CONFIG37_FTDF_REG: cal_en_ftdf_dcf_tx (Bit 5) */ -#define RFCU_POWER_RF_ENABLE_CONFIG37_FTDF_REG_cal_en_ftdf_dcf_tx_Msk (0x3e0UL) /*!< RFCU_POWER RF_ENABLE_CONFIG37_FTDF_REG: cal_en_ftdf_dcf_tx (Bitfield-Mask: 0x1f) */ - -/* ------------------- RFCU_POWER_RF_ENABLE_CONFIG38_FTDF_REG ------------------- */ -#define RFCU_POWER_RF_ENABLE_CONFIG38_FTDF_REG_tdc_en_ftdf_dcf_rx_Pos (0UL) /*!< RFCU_POWER RF_ENABLE_CONFIG38_FTDF_REG: tdc_en_ftdf_dcf_rx (Bit 0) */ -#define RFCU_POWER_RF_ENABLE_CONFIG38_FTDF_REG_tdc_en_ftdf_dcf_rx_Msk (0x1fUL) /*!< RFCU_POWER RF_ENABLE_CONFIG38_FTDF_REG: tdc_en_ftdf_dcf_rx (Bitfield-Mask: 0x1f) */ -#define RFCU_POWER_RF_ENABLE_CONFIG38_FTDF_REG_tdc_en_ftdf_dcf_tx_Pos (5UL) /*!< RFCU_POWER RF_ENABLE_CONFIG38_FTDF_REG: tdc_en_ftdf_dcf_tx (Bit 5) */ -#define RFCU_POWER_RF_ENABLE_CONFIG38_FTDF_REG_tdc_en_ftdf_dcf_tx_Msk (0x3e0UL) /*!< RFCU_POWER RF_ENABLE_CONFIG38_FTDF_REG: tdc_en_ftdf_dcf_tx (Bitfield-Mask: 0x1f) */ - -/* ------------------- RFCU_POWER_RF_ENABLE_CONFIG44_FTDF_REG ------------------- */ -#define RFCU_POWER_RF_ENABLE_CONFIG44_FTDF_REG_tr_pwm_off_en_ftdf_dcf_rx_Pos (0UL) /*!< RFCU_POWER RF_ENABLE_CONFIG44_FTDF_REG: tr_pwm_off_en_ftdf_dcf_rx (Bit 0) */ -#define RFCU_POWER_RF_ENABLE_CONFIG44_FTDF_REG_tr_pwm_off_en_ftdf_dcf_rx_Msk (0x1fUL) /*!< RFCU_POWER RF_ENABLE_CONFIG44_FTDF_REG: tr_pwm_off_en_ftdf_dcf_rx (Bitfield-Mask: 0x1f) */ -#define RFCU_POWER_RF_ENABLE_CONFIG44_FTDF_REG_tr_pwm_off_en_ftdf_dcf_tx_Pos (5UL) /*!< RFCU_POWER RF_ENABLE_CONFIG44_FTDF_REG: tr_pwm_off_en_ftdf_dcf_tx (Bit 5) */ -#define RFCU_POWER_RF_ENABLE_CONFIG44_FTDF_REG_tr_pwm_off_en_ftdf_dcf_tx_Msk (0x3e0UL) /*!< RFCU_POWER RF_ENABLE_CONFIG44_FTDF_REG: tr_pwm_off_en_ftdf_dcf_tx (Bitfield-Mask: 0x1f) */ - -/* ------------------- RFCU_POWER_RF_ENABLE_CONFIG45_FTDF_REG ------------------- */ -#define RFCU_POWER_RF_ENABLE_CONFIG45_FTDF_REG_txdac_en_ftdf_dcf_rx_Pos (0UL) /*!< RFCU_POWER RF_ENABLE_CONFIG45_FTDF_REG: txdac_en_ftdf_dcf_rx (Bit 0) */ -#define RFCU_POWER_RF_ENABLE_CONFIG45_FTDF_REG_txdac_en_ftdf_dcf_rx_Msk (0x1fUL) /*!< RFCU_POWER RF_ENABLE_CONFIG45_FTDF_REG: txdac_en_ftdf_dcf_rx (Bitfield-Mask: 0x1f) */ -#define RFCU_POWER_RF_ENABLE_CONFIG45_FTDF_REG_txdac_en_ftdf_dcf_tx_Pos (5UL) /*!< RFCU_POWER RF_ENABLE_CONFIG45_FTDF_REG: txdac_en_ftdf_dcf_tx (Bit 5) */ -#define RFCU_POWER_RF_ENABLE_CONFIG45_FTDF_REG_txdac_en_ftdf_dcf_tx_Msk (0x3e0UL) /*!< RFCU_POWER RF_ENABLE_CONFIG45_FTDF_REG: txdac_en_ftdf_dcf_tx (Bitfield-Mask: 0x1f) */ - -/* ------------------- RFCU_POWER_RF_ENABLE_CONFIG46_FTDF_REG ------------------- */ -#define RFCU_POWER_RF_ENABLE_CONFIG46_FTDF_REG_dem_dcparcal_en_ftdf_dcf_rx_Pos (0UL) /*!< RFCU_POWER RF_ENABLE_CONFIG46_FTDF_REG: dem_dcparcal_en_ftdf_dcf_rx (Bit 0) */ -#define RFCU_POWER_RF_ENABLE_CONFIG46_FTDF_REG_dem_dcparcal_en_ftdf_dcf_rx_Msk (0x1fUL) /*!< RFCU_POWER RF_ENABLE_CONFIG46_FTDF_REG: dem_dcparcal_en_ftdf_dcf_rx (Bitfield-Mask: 0x1f) */ -#define RFCU_POWER_RF_ENABLE_CONFIG46_FTDF_REG_spare2_en_ftdf_dcf_tx_Pos (5UL) /*!< RFCU_POWER RF_ENABLE_CONFIG46_FTDF_REG: spare2_en_ftdf_dcf_tx (Bit 5) */ -#define RFCU_POWER_RF_ENABLE_CONFIG46_FTDF_REG_spare2_en_ftdf_dcf_tx_Msk (0x3e0UL) /*!< RFCU_POWER RF_ENABLE_CONFIG46_FTDF_REG: spare2_en_ftdf_dcf_tx (Bitfield-Mask: 0x1f) */ - -/* ------------------- RFCU_POWER_RF_ENABLE_CONFIG47_FTDF_REG ------------------- */ -#define RFCU_POWER_RF_ENABLE_CONFIG47_FTDF_REG_dem_agcunfreeze_en_ftdf_dcf_rx_Pos (0UL) /*!< RFCU_POWER RF_ENABLE_CONFIG47_FTDF_REG: dem_agcunfreeze_en_ftdf_dcf_rx (Bit 0) */ -#define RFCU_POWER_RF_ENABLE_CONFIG47_FTDF_REG_dem_agcunfreeze_en_ftdf_dcf_rx_Msk (0x1fUL) /*!< RFCU_POWER RF_ENABLE_CONFIG47_FTDF_REG: dem_agcunfreeze_en_ftdf_dcf_rx (Bitfield-Mask: 0x1f) */ -#define RFCU_POWER_RF_ENABLE_CONFIG47_FTDF_REG_spare3_en_ftdf_dcf_tx_Pos (5UL) /*!< RFCU_POWER RF_ENABLE_CONFIG47_FTDF_REG: spare3_en_ftdf_dcf_tx (Bit 5) */ -#define RFCU_POWER_RF_ENABLE_CONFIG47_FTDF_REG_spare3_en_ftdf_dcf_tx_Msk (0x3e0UL) /*!< RFCU_POWER RF_ENABLE_CONFIG47_FTDF_REG: spare3_en_ftdf_dcf_tx (Bitfield-Mask: 0x1f) */ - -/* ------------------- RFCU_POWER_RF_ENABLE_CONFIG48_FTDF_REG ------------------- */ -#define RFCU_POWER_RF_ENABLE_CONFIG48_FTDF_REG_dem_sigdetect_en_ftdf_dcf_rx_Pos (0UL) /*!< RFCU_POWER RF_ENABLE_CONFIG48_FTDF_REG: dem_sigdetect_en_ftdf_dcf_rx (Bit 0) */ -#define RFCU_POWER_RF_ENABLE_CONFIG48_FTDF_REG_dem_sigdetect_en_ftdf_dcf_rx_Msk (0x1fUL) /*!< RFCU_POWER RF_ENABLE_CONFIG48_FTDF_REG: dem_sigdetect_en_ftdf_dcf_rx (Bitfield-Mask: 0x1f) */ -#define RFCU_POWER_RF_ENABLE_CONFIG48_FTDF_REG_spare4_en_ftdf_dcf_tx_Pos (5UL) /*!< RFCU_POWER RF_ENABLE_CONFIG48_FTDF_REG: spare4_en_ftdf_dcf_tx (Bit 5) */ -#define RFCU_POWER_RF_ENABLE_CONFIG48_FTDF_REG_spare4_en_ftdf_dcf_tx_Msk (0x3e0UL) /*!< RFCU_POWER RF_ENABLE_CONFIG48_FTDF_REG: spare4_en_ftdf_dcf_tx (Bitfield-Mask: 0x1f) */ - -/* ------------------- RFCU_POWER_RF_ENABLE_CONFIG49_FTDF_REG ------------------- */ -#define RFCU_POWER_RF_ENABLE_CONFIG49_FTDF_REG_dem_ftdf_en_ftdf_dcf_rx_Pos (0UL) /*!< RFCU_POWER RF_ENABLE_CONFIG49_FTDF_REG: dem_ftdf_en_ftdf_dcf_rx (Bit 0) */ -#define RFCU_POWER_RF_ENABLE_CONFIG49_FTDF_REG_dem_ftdf_en_ftdf_dcf_rx_Msk (0x1fUL) /*!< RFCU_POWER RF_ENABLE_CONFIG49_FTDF_REG: dem_ftdf_en_ftdf_dcf_rx (Bitfield-Mask: 0x1f) */ -#define RFCU_POWER_RF_ENABLE_CONFIG49_FTDF_REG_dem_ftdf_en_ftdf_dcf_tx_Pos (5UL) /*!< RFCU_POWER RF_ENABLE_CONFIG49_FTDF_REG: dem_ftdf_en_ftdf_dcf_tx (Bit 5) */ -#define RFCU_POWER_RF_ENABLE_CONFIG49_FTDF_REG_dem_ftdf_en_ftdf_dcf_tx_Msk (0x3e0UL) /*!< RFCU_POWER RF_ENABLE_CONFIG49_FTDF_REG: dem_ftdf_en_ftdf_dcf_tx (Bitfield-Mask: 0x1f) */ - -/* ----------------------- RFCU_POWER_RF_CNTRL_TIMER_1_REG ---------------------- */ -#define RFCU_POWER_RF_CNTRL_TIMER_1_REG_SET_OFFSET_Pos (0UL) /*!< RFCU_POWER RF_CNTRL_TIMER_1_REG: SET_OFFSET (Bit 0) */ -#define RFCU_POWER_RF_CNTRL_TIMER_1_REG_SET_OFFSET_Msk (0xffUL) /*!< RFCU_POWER RF_CNTRL_TIMER_1_REG: SET_OFFSET (Bitfield-Mask: 0xff) */ -#define RFCU_POWER_RF_CNTRL_TIMER_1_REG_RESET_OFFSET_Pos (8UL) /*!< RFCU_POWER RF_CNTRL_TIMER_1_REG: RESET_OFFSET (Bit 8) */ -#define RFCU_POWER_RF_CNTRL_TIMER_1_REG_RESET_OFFSET_Msk (0xff00UL) /*!< RFCU_POWER RF_CNTRL_TIMER_1_REG: RESET_OFFSET (Bitfield-Mask: 0xff) */ - -/* ----------------------- RFCU_POWER_RF_CNTRL_TIMER_2_REG ---------------------- */ -#define RFCU_POWER_RF_CNTRL_TIMER_2_REG_SET_OFFSET_Pos (0UL) /*!< RFCU_POWER RF_CNTRL_TIMER_2_REG: SET_OFFSET (Bit 0) */ -#define RFCU_POWER_RF_CNTRL_TIMER_2_REG_SET_OFFSET_Msk (0xffUL) /*!< RFCU_POWER RF_CNTRL_TIMER_2_REG: SET_OFFSET (Bitfield-Mask: 0xff) */ -#define RFCU_POWER_RF_CNTRL_TIMER_2_REG_RESET_OFFSET_Pos (8UL) /*!< RFCU_POWER RF_CNTRL_TIMER_2_REG: RESET_OFFSET (Bit 8) */ -#define RFCU_POWER_RF_CNTRL_TIMER_2_REG_RESET_OFFSET_Msk (0xff00UL) /*!< RFCU_POWER RF_CNTRL_TIMER_2_REG: RESET_OFFSET (Bitfield-Mask: 0xff) */ - -/* ----------------------- RFCU_POWER_RF_CNTRL_TIMER_3_REG ---------------------- */ -#define RFCU_POWER_RF_CNTRL_TIMER_3_REG_SET_OFFSET_Pos (0UL) /*!< RFCU_POWER RF_CNTRL_TIMER_3_REG: SET_OFFSET (Bit 0) */ -#define RFCU_POWER_RF_CNTRL_TIMER_3_REG_SET_OFFSET_Msk (0xffUL) /*!< RFCU_POWER RF_CNTRL_TIMER_3_REG: SET_OFFSET (Bitfield-Mask: 0xff) */ -#define RFCU_POWER_RF_CNTRL_TIMER_3_REG_RESET_OFFSET_Pos (8UL) /*!< RFCU_POWER RF_CNTRL_TIMER_3_REG: RESET_OFFSET (Bit 8) */ -#define RFCU_POWER_RF_CNTRL_TIMER_3_REG_RESET_OFFSET_Msk (0xff00UL) /*!< RFCU_POWER RF_CNTRL_TIMER_3_REG: RESET_OFFSET (Bitfield-Mask: 0xff) */ - -/* ----------------------- RFCU_POWER_RF_CNTRL_TIMER_4_REG ---------------------- */ -#define RFCU_POWER_RF_CNTRL_TIMER_4_REG_SET_OFFSET_Pos (0UL) /*!< RFCU_POWER RF_CNTRL_TIMER_4_REG: SET_OFFSET (Bit 0) */ -#define RFCU_POWER_RF_CNTRL_TIMER_4_REG_SET_OFFSET_Msk (0xffUL) /*!< RFCU_POWER RF_CNTRL_TIMER_4_REG: SET_OFFSET (Bitfield-Mask: 0xff) */ -#define RFCU_POWER_RF_CNTRL_TIMER_4_REG_RESET_OFFSET_Pos (8UL) /*!< RFCU_POWER RF_CNTRL_TIMER_4_REG: RESET_OFFSET (Bit 8) */ -#define RFCU_POWER_RF_CNTRL_TIMER_4_REG_RESET_OFFSET_Msk (0xff00UL) /*!< RFCU_POWER RF_CNTRL_TIMER_4_REG: RESET_OFFSET (Bitfield-Mask: 0xff) */ - -/* ----------------------- RFCU_POWER_RF_CNTRL_TIMER_5_REG ---------------------- */ -#define RFCU_POWER_RF_CNTRL_TIMER_5_REG_SET_OFFSET_Pos (0UL) /*!< RFCU_POWER RF_CNTRL_TIMER_5_REG: SET_OFFSET (Bit 0) */ -#define RFCU_POWER_RF_CNTRL_TIMER_5_REG_SET_OFFSET_Msk (0xffUL) /*!< RFCU_POWER RF_CNTRL_TIMER_5_REG: SET_OFFSET (Bitfield-Mask: 0xff) */ -#define RFCU_POWER_RF_CNTRL_TIMER_5_REG_RESET_OFFSET_Pos (8UL) /*!< RFCU_POWER RF_CNTRL_TIMER_5_REG: RESET_OFFSET (Bit 8) */ -#define RFCU_POWER_RF_CNTRL_TIMER_5_REG_RESET_OFFSET_Msk (0xff00UL) /*!< RFCU_POWER RF_CNTRL_TIMER_5_REG: RESET_OFFSET (Bitfield-Mask: 0xff) */ - -/* ----------------------- RFCU_POWER_RF_CNTRL_TIMER_6_REG ---------------------- */ -#define RFCU_POWER_RF_CNTRL_TIMER_6_REG_SET_OFFSET_Pos (0UL) /*!< RFCU_POWER RF_CNTRL_TIMER_6_REG: SET_OFFSET (Bit 0) */ -#define RFCU_POWER_RF_CNTRL_TIMER_6_REG_SET_OFFSET_Msk (0xffUL) /*!< RFCU_POWER RF_CNTRL_TIMER_6_REG: SET_OFFSET (Bitfield-Mask: 0xff) */ -#define RFCU_POWER_RF_CNTRL_TIMER_6_REG_RESET_OFFSET_Pos (8UL) /*!< RFCU_POWER RF_CNTRL_TIMER_6_REG: RESET_OFFSET (Bit 8) */ -#define RFCU_POWER_RF_CNTRL_TIMER_6_REG_RESET_OFFSET_Msk (0xff00UL) /*!< RFCU_POWER RF_CNTRL_TIMER_6_REG: RESET_OFFSET (Bitfield-Mask: 0xff) */ - -/* ----------------------- RFCU_POWER_RF_CNTRL_TIMER_7_REG ---------------------- */ -#define RFCU_POWER_RF_CNTRL_TIMER_7_REG_SET_OFFSET_Pos (0UL) /*!< RFCU_POWER RF_CNTRL_TIMER_7_REG: SET_OFFSET (Bit 0) */ -#define RFCU_POWER_RF_CNTRL_TIMER_7_REG_SET_OFFSET_Msk (0xffUL) /*!< RFCU_POWER RF_CNTRL_TIMER_7_REG: SET_OFFSET (Bitfield-Mask: 0xff) */ -#define RFCU_POWER_RF_CNTRL_TIMER_7_REG_RESET_OFFSET_Pos (8UL) /*!< RFCU_POWER RF_CNTRL_TIMER_7_REG: RESET_OFFSET (Bit 8) */ -#define RFCU_POWER_RF_CNTRL_TIMER_7_REG_RESET_OFFSET_Msk (0xff00UL) /*!< RFCU_POWER RF_CNTRL_TIMER_7_REG: RESET_OFFSET (Bitfield-Mask: 0xff) */ - -/* ----------------------- RFCU_POWER_RF_CNTRL_TIMER_8_REG ---------------------- */ -#define RFCU_POWER_RF_CNTRL_TIMER_8_REG_SET_OFFSET_Pos (0UL) /*!< RFCU_POWER RF_CNTRL_TIMER_8_REG: SET_OFFSET (Bit 0) */ -#define RFCU_POWER_RF_CNTRL_TIMER_8_REG_SET_OFFSET_Msk (0xffUL) /*!< RFCU_POWER RF_CNTRL_TIMER_8_REG: SET_OFFSET (Bitfield-Mask: 0xff) */ -#define RFCU_POWER_RF_CNTRL_TIMER_8_REG_RESET_OFFSET_Pos (8UL) /*!< RFCU_POWER RF_CNTRL_TIMER_8_REG: RESET_OFFSET (Bit 8) */ -#define RFCU_POWER_RF_CNTRL_TIMER_8_REG_RESET_OFFSET_Msk (0xff00UL) /*!< RFCU_POWER RF_CNTRL_TIMER_8_REG: RESET_OFFSET (Bitfield-Mask: 0xff) */ - -/* ----------------------- RFCU_POWER_RF_CNTRL_TIMER_9_REG ---------------------- */ -#define RFCU_POWER_RF_CNTRL_TIMER_9_REG_SET_OFFSET_Pos (0UL) /*!< RFCU_POWER RF_CNTRL_TIMER_9_REG: SET_OFFSET (Bit 0) */ -#define RFCU_POWER_RF_CNTRL_TIMER_9_REG_SET_OFFSET_Msk (0xffUL) /*!< RFCU_POWER RF_CNTRL_TIMER_9_REG: SET_OFFSET (Bitfield-Mask: 0xff) */ -#define RFCU_POWER_RF_CNTRL_TIMER_9_REG_RESET_OFFSET_Pos (8UL) /*!< RFCU_POWER RF_CNTRL_TIMER_9_REG: RESET_OFFSET (Bit 8) */ -#define RFCU_POWER_RF_CNTRL_TIMER_9_REG_RESET_OFFSET_Msk (0xff00UL) /*!< RFCU_POWER RF_CNTRL_TIMER_9_REG: RESET_OFFSET (Bitfield-Mask: 0xff) */ - -/* ---------------------- RFCU_POWER_RF_CNTRL_TIMER_10_REG ---------------------- */ -#define RFCU_POWER_RF_CNTRL_TIMER_10_REG_SET_OFFSET_Pos (0UL) /*!< RFCU_POWER RF_CNTRL_TIMER_10_REG: SET_OFFSET (Bit 0) */ -#define RFCU_POWER_RF_CNTRL_TIMER_10_REG_SET_OFFSET_Msk (0xffUL) /*!< RFCU_POWER RF_CNTRL_TIMER_10_REG: SET_OFFSET (Bitfield-Mask: 0xff) */ -#define RFCU_POWER_RF_CNTRL_TIMER_10_REG_RESET_OFFSET_Pos (8UL) /*!< RFCU_POWER RF_CNTRL_TIMER_10_REG: RESET_OFFSET (Bit 8) */ -#define RFCU_POWER_RF_CNTRL_TIMER_10_REG_RESET_OFFSET_Msk (0xff00UL) /*!< RFCU_POWER RF_CNTRL_TIMER_10_REG: RESET_OFFSET (Bitfield-Mask: 0xff) */ - -/* ---------------------- RFCU_POWER_RF_CNTRL_TIMER_11_REG ---------------------- */ -#define RFCU_POWER_RF_CNTRL_TIMER_11_REG_SET_OFFSET_Pos (0UL) /*!< RFCU_POWER RF_CNTRL_TIMER_11_REG: SET_OFFSET (Bit 0) */ -#define RFCU_POWER_RF_CNTRL_TIMER_11_REG_SET_OFFSET_Msk (0xffUL) /*!< RFCU_POWER RF_CNTRL_TIMER_11_REG: SET_OFFSET (Bitfield-Mask: 0xff) */ -#define RFCU_POWER_RF_CNTRL_TIMER_11_REG_RESET_OFFSET_Pos (8UL) /*!< RFCU_POWER RF_CNTRL_TIMER_11_REG: RESET_OFFSET (Bit 8) */ -#define RFCU_POWER_RF_CNTRL_TIMER_11_REG_RESET_OFFSET_Msk (0xff00UL) /*!< RFCU_POWER RF_CNTRL_TIMER_11_REG: RESET_OFFSET (Bitfield-Mask: 0xff) */ - -/* ---------------------- RFCU_POWER_RF_CNTRL_TIMER_12_REG ---------------------- */ -#define RFCU_POWER_RF_CNTRL_TIMER_12_REG_SET_OFFSET_Pos (0UL) /*!< RFCU_POWER RF_CNTRL_TIMER_12_REG: SET_OFFSET (Bit 0) */ -#define RFCU_POWER_RF_CNTRL_TIMER_12_REG_SET_OFFSET_Msk (0xffUL) /*!< RFCU_POWER RF_CNTRL_TIMER_12_REG: SET_OFFSET (Bitfield-Mask: 0xff) */ -#define RFCU_POWER_RF_CNTRL_TIMER_12_REG_RESET_OFFSET_Pos (8UL) /*!< RFCU_POWER RF_CNTRL_TIMER_12_REG: RESET_OFFSET (Bit 8) */ -#define RFCU_POWER_RF_CNTRL_TIMER_12_REG_RESET_OFFSET_Msk (0xff00UL) /*!< RFCU_POWER RF_CNTRL_TIMER_12_REG: RESET_OFFSET (Bitfield-Mask: 0xff) */ - -/* ---------------------- RFCU_POWER_RF_CNTRL_TIMER_13_REG ---------------------- */ -#define RFCU_POWER_RF_CNTRL_TIMER_13_REG_SET_OFFSET_Pos (0UL) /*!< RFCU_POWER RF_CNTRL_TIMER_13_REG: SET_OFFSET (Bit 0) */ -#define RFCU_POWER_RF_CNTRL_TIMER_13_REG_SET_OFFSET_Msk (0xffUL) /*!< RFCU_POWER RF_CNTRL_TIMER_13_REG: SET_OFFSET (Bitfield-Mask: 0xff) */ -#define RFCU_POWER_RF_CNTRL_TIMER_13_REG_RESET_OFFSET_Pos (8UL) /*!< RFCU_POWER RF_CNTRL_TIMER_13_REG: RESET_OFFSET (Bit 8) */ -#define RFCU_POWER_RF_CNTRL_TIMER_13_REG_RESET_OFFSET_Msk (0xff00UL) /*!< RFCU_POWER RF_CNTRL_TIMER_13_REG: RESET_OFFSET (Bitfield-Mask: 0xff) */ - -/* ---------------------- RFCU_POWER_RF_CNTRL_TIMER_14_REG ---------------------- */ -#define RFCU_POWER_RF_CNTRL_TIMER_14_REG_SET_OFFSET_Pos (0UL) /*!< RFCU_POWER RF_CNTRL_TIMER_14_REG: SET_OFFSET (Bit 0) */ -#define RFCU_POWER_RF_CNTRL_TIMER_14_REG_SET_OFFSET_Msk (0xffUL) /*!< RFCU_POWER RF_CNTRL_TIMER_14_REG: SET_OFFSET (Bitfield-Mask: 0xff) */ -#define RFCU_POWER_RF_CNTRL_TIMER_14_REG_RESET_OFFSET_Pos (8UL) /*!< RFCU_POWER RF_CNTRL_TIMER_14_REG: RESET_OFFSET (Bit 8) */ -#define RFCU_POWER_RF_CNTRL_TIMER_14_REG_RESET_OFFSET_Msk (0xff00UL) /*!< RFCU_POWER RF_CNTRL_TIMER_14_REG: RESET_OFFSET (Bitfield-Mask: 0xff) */ - -/* ---------------------- RFCU_POWER_RF_CNTRL_TIMER_15_REG ---------------------- */ -#define RFCU_POWER_RF_CNTRL_TIMER_15_REG_SET_OFFSET_Pos (0UL) /*!< RFCU_POWER RF_CNTRL_TIMER_15_REG: SET_OFFSET (Bit 0) */ -#define RFCU_POWER_RF_CNTRL_TIMER_15_REG_SET_OFFSET_Msk (0xffUL) /*!< RFCU_POWER RF_CNTRL_TIMER_15_REG: SET_OFFSET (Bitfield-Mask: 0xff) */ -#define RFCU_POWER_RF_CNTRL_TIMER_15_REG_RESET_OFFSET_Pos (8UL) /*!< RFCU_POWER RF_CNTRL_TIMER_15_REG: RESET_OFFSET (Bit 8) */ -#define RFCU_POWER_RF_CNTRL_TIMER_15_REG_RESET_OFFSET_Msk (0xff00UL) /*!< RFCU_POWER RF_CNTRL_TIMER_15_REG: RESET_OFFSET (Bitfield-Mask: 0xff) */ - -/* ---------------------- RFCU_POWER_RF_CNTRL_TIMER_16_REG ---------------------- */ -#define RFCU_POWER_RF_CNTRL_TIMER_16_REG_SET_OFFSET_Pos (0UL) /*!< RFCU_POWER RF_CNTRL_TIMER_16_REG: SET_OFFSET (Bit 0) */ -#define RFCU_POWER_RF_CNTRL_TIMER_16_REG_SET_OFFSET_Msk (0xffUL) /*!< RFCU_POWER RF_CNTRL_TIMER_16_REG: SET_OFFSET (Bitfield-Mask: 0xff) */ -#define RFCU_POWER_RF_CNTRL_TIMER_16_REG_RESET_OFFSET_Pos (8UL) /*!< RFCU_POWER RF_CNTRL_TIMER_16_REG: RESET_OFFSET (Bit 8) */ -#define RFCU_POWER_RF_CNTRL_TIMER_16_REG_RESET_OFFSET_Msk (0xff00UL) /*!< RFCU_POWER RF_CNTRL_TIMER_16_REG: RESET_OFFSET (Bitfield-Mask: 0xff) */ - -/* ---------------------- RFCU_POWER_RF_CNTRL_TIMER_17_REG ---------------------- */ -#define RFCU_POWER_RF_CNTRL_TIMER_17_REG_SET_OFFSET_Pos (0UL) /*!< RFCU_POWER RF_CNTRL_TIMER_17_REG: SET_OFFSET (Bit 0) */ -#define RFCU_POWER_RF_CNTRL_TIMER_17_REG_SET_OFFSET_Msk (0xffUL) /*!< RFCU_POWER RF_CNTRL_TIMER_17_REG: SET_OFFSET (Bitfield-Mask: 0xff) */ -#define RFCU_POWER_RF_CNTRL_TIMER_17_REG_RESET_OFFSET_Pos (8UL) /*!< RFCU_POWER RF_CNTRL_TIMER_17_REG: RESET_OFFSET (Bit 8) */ -#define RFCU_POWER_RF_CNTRL_TIMER_17_REG_RESET_OFFSET_Msk (0xff00UL) /*!< RFCU_POWER RF_CNTRL_TIMER_17_REG: RESET_OFFSET (Bitfield-Mask: 0xff) */ - -/* ---------------------- RFCU_POWER_RF_CNTRL_TIMER_18_REG ---------------------- */ -#define RFCU_POWER_RF_CNTRL_TIMER_18_REG_SET_OFFSET_Pos (0UL) /*!< RFCU_POWER RF_CNTRL_TIMER_18_REG: SET_OFFSET (Bit 0) */ -#define RFCU_POWER_RF_CNTRL_TIMER_18_REG_SET_OFFSET_Msk (0xffUL) /*!< RFCU_POWER RF_CNTRL_TIMER_18_REG: SET_OFFSET (Bitfield-Mask: 0xff) */ -#define RFCU_POWER_RF_CNTRL_TIMER_18_REG_RESET_OFFSET_Pos (8UL) /*!< RFCU_POWER RF_CNTRL_TIMER_18_REG: RESET_OFFSET (Bit 8) */ -#define RFCU_POWER_RF_CNTRL_TIMER_18_REG_RESET_OFFSET_Msk (0xff00UL) /*!< RFCU_POWER RF_CNTRL_TIMER_18_REG: RESET_OFFSET (Bitfield-Mask: 0xff) */ - -/* ---------------------- RFCU_POWER_RF_CNTRL_TIMER_19_REG ---------------------- */ -#define RFCU_POWER_RF_CNTRL_TIMER_19_REG_SET_OFFSET_Pos (0UL) /*!< RFCU_POWER RF_CNTRL_TIMER_19_REG: SET_OFFSET (Bit 0) */ -#define RFCU_POWER_RF_CNTRL_TIMER_19_REG_SET_OFFSET_Msk (0xffUL) /*!< RFCU_POWER RF_CNTRL_TIMER_19_REG: SET_OFFSET (Bitfield-Mask: 0xff) */ -#define RFCU_POWER_RF_CNTRL_TIMER_19_REG_RESET_OFFSET_Pos (8UL) /*!< RFCU_POWER RF_CNTRL_TIMER_19_REG: RESET_OFFSET (Bit 8) */ -#define RFCU_POWER_RF_CNTRL_TIMER_19_REG_RESET_OFFSET_Msk (0xff00UL) /*!< RFCU_POWER RF_CNTRL_TIMER_19_REG: RESET_OFFSET (Bitfield-Mask: 0xff) */ - -/* ---------------------- RFCU_POWER_RF_CNTRL_TIMER_20_REG ---------------------- */ -#define RFCU_POWER_RF_CNTRL_TIMER_20_REG_SET_OFFSET_Pos (0UL) /*!< RFCU_POWER RF_CNTRL_TIMER_20_REG: SET_OFFSET (Bit 0) */ -#define RFCU_POWER_RF_CNTRL_TIMER_20_REG_SET_OFFSET_Msk (0xffUL) /*!< RFCU_POWER RF_CNTRL_TIMER_20_REG: SET_OFFSET (Bitfield-Mask: 0xff) */ -#define RFCU_POWER_RF_CNTRL_TIMER_20_REG_RESET_OFFSET_Pos (8UL) /*!< RFCU_POWER RF_CNTRL_TIMER_20_REG: RESET_OFFSET (Bit 8) */ -#define RFCU_POWER_RF_CNTRL_TIMER_20_REG_RESET_OFFSET_Msk (0xff00UL) /*!< RFCU_POWER RF_CNTRL_TIMER_20_REG: RESET_OFFSET (Bitfield-Mask: 0xff) */ - -/* ---------------------- RFCU_POWER_RF_CNTRL_TIMER_21_REG ---------------------- */ -#define RFCU_POWER_RF_CNTRL_TIMER_21_REG_SET_OFFSET_Pos (0UL) /*!< RFCU_POWER RF_CNTRL_TIMER_21_REG: SET_OFFSET (Bit 0) */ -#define RFCU_POWER_RF_CNTRL_TIMER_21_REG_SET_OFFSET_Msk (0xffUL) /*!< RFCU_POWER RF_CNTRL_TIMER_21_REG: SET_OFFSET (Bitfield-Mask: 0xff) */ -#define RFCU_POWER_RF_CNTRL_TIMER_21_REG_RESET_OFFSET_Pos (8UL) /*!< RFCU_POWER RF_CNTRL_TIMER_21_REG: RESET_OFFSET (Bit 8) */ -#define RFCU_POWER_RF_CNTRL_TIMER_21_REG_RESET_OFFSET_Msk (0xff00UL) /*!< RFCU_POWER RF_CNTRL_TIMER_21_REG: RESET_OFFSET (Bitfield-Mask: 0xff) */ - -/* ---------------------- RFCU_POWER_RF_CNTRL_TIMER_22_REG ---------------------- */ -#define RFCU_POWER_RF_CNTRL_TIMER_22_REG_SET_OFFSET_Pos (0UL) /*!< RFCU_POWER RF_CNTRL_TIMER_22_REG: SET_OFFSET (Bit 0) */ -#define RFCU_POWER_RF_CNTRL_TIMER_22_REG_SET_OFFSET_Msk (0xffUL) /*!< RFCU_POWER RF_CNTRL_TIMER_22_REG: SET_OFFSET (Bitfield-Mask: 0xff) */ -#define RFCU_POWER_RF_CNTRL_TIMER_22_REG_RESET_OFFSET_Pos (8UL) /*!< RFCU_POWER RF_CNTRL_TIMER_22_REG: RESET_OFFSET (Bit 8) */ -#define RFCU_POWER_RF_CNTRL_TIMER_22_REG_RESET_OFFSET_Msk (0xff00UL) /*!< RFCU_POWER RF_CNTRL_TIMER_22_REG: RESET_OFFSET (Bitfield-Mask: 0xff) */ - -/* ---------------------- RFCU_POWER_RF_CNTRL_TIMER_23_REG ---------------------- */ -#define RFCU_POWER_RF_CNTRL_TIMER_23_REG_SET_OFFSET_Pos (0UL) /*!< RFCU_POWER RF_CNTRL_TIMER_23_REG: SET_OFFSET (Bit 0) */ -#define RFCU_POWER_RF_CNTRL_TIMER_23_REG_SET_OFFSET_Msk (0xffUL) /*!< RFCU_POWER RF_CNTRL_TIMER_23_REG: SET_OFFSET (Bitfield-Mask: 0xff) */ -#define RFCU_POWER_RF_CNTRL_TIMER_23_REG_RESET_OFFSET_Pos (8UL) /*!< RFCU_POWER RF_CNTRL_TIMER_23_REG: RESET_OFFSET (Bit 8) */ -#define RFCU_POWER_RF_CNTRL_TIMER_23_REG_RESET_OFFSET_Msk (0xff00UL) /*!< RFCU_POWER RF_CNTRL_TIMER_23_REG: RESET_OFFSET (Bitfield-Mask: 0xff) */ - -/* ---------------------- RFCU_POWER_RF_CNTRL_TIMER_24_REG ---------------------- */ -#define RFCU_POWER_RF_CNTRL_TIMER_24_REG_SET_OFFSET_Pos (0UL) /*!< RFCU_POWER RF_CNTRL_TIMER_24_REG: SET_OFFSET (Bit 0) */ -#define RFCU_POWER_RF_CNTRL_TIMER_24_REG_SET_OFFSET_Msk (0xffUL) /*!< RFCU_POWER RF_CNTRL_TIMER_24_REG: SET_OFFSET (Bitfield-Mask: 0xff) */ -#define RFCU_POWER_RF_CNTRL_TIMER_24_REG_RESET_OFFSET_Pos (8UL) /*!< RFCU_POWER RF_CNTRL_TIMER_24_REG: RESET_OFFSET (Bit 8) */ -#define RFCU_POWER_RF_CNTRL_TIMER_24_REG_RESET_OFFSET_Msk (0xff00UL) /*!< RFCU_POWER RF_CNTRL_TIMER_24_REG: RESET_OFFSET (Bitfield-Mask: 0xff) */ - -/* ---------------------- RFCU_POWER_RF_CNTRL_TIMER_25_REG ---------------------- */ -#define RFCU_POWER_RF_CNTRL_TIMER_25_REG_SET_OFFSET_Pos (0UL) /*!< RFCU_POWER RF_CNTRL_TIMER_25_REG: SET_OFFSET (Bit 0) */ -#define RFCU_POWER_RF_CNTRL_TIMER_25_REG_SET_OFFSET_Msk (0xffUL) /*!< RFCU_POWER RF_CNTRL_TIMER_25_REG: SET_OFFSET (Bitfield-Mask: 0xff) */ -#define RFCU_POWER_RF_CNTRL_TIMER_25_REG_RESET_OFFSET_Pos (8UL) /*!< RFCU_POWER RF_CNTRL_TIMER_25_REG: RESET_OFFSET (Bit 8) */ -#define RFCU_POWER_RF_CNTRL_TIMER_25_REG_RESET_OFFSET_Msk (0xff00UL) /*!< RFCU_POWER RF_CNTRL_TIMER_25_REG: RESET_OFFSET (Bitfield-Mask: 0xff) */ - -/* ---------------------- RFCU_POWER_RF_CNTRL_TIMER_26_REG ---------------------- */ -#define RFCU_POWER_RF_CNTRL_TIMER_26_REG_SET_OFFSET_Pos (0UL) /*!< RFCU_POWER RF_CNTRL_TIMER_26_REG: SET_OFFSET (Bit 0) */ -#define RFCU_POWER_RF_CNTRL_TIMER_26_REG_SET_OFFSET_Msk (0xffUL) /*!< RFCU_POWER RF_CNTRL_TIMER_26_REG: SET_OFFSET (Bitfield-Mask: 0xff) */ -#define RFCU_POWER_RF_CNTRL_TIMER_26_REG_RESET_OFFSET_Pos (8UL) /*!< RFCU_POWER RF_CNTRL_TIMER_26_REG: RESET_OFFSET (Bit 8) */ -#define RFCU_POWER_RF_CNTRL_TIMER_26_REG_RESET_OFFSET_Msk (0xff00UL) /*!< RFCU_POWER RF_CNTRL_TIMER_26_REG: RESET_OFFSET (Bitfield-Mask: 0xff) */ - -/* ---------------------- RFCU_POWER_RF_CNTRL_TIMER_27_REG ---------------------- */ -#define RFCU_POWER_RF_CNTRL_TIMER_27_REG_SET_OFFSET_Pos (0UL) /*!< RFCU_POWER RF_CNTRL_TIMER_27_REG: SET_OFFSET (Bit 0) */ -#define RFCU_POWER_RF_CNTRL_TIMER_27_REG_SET_OFFSET_Msk (0xffUL) /*!< RFCU_POWER RF_CNTRL_TIMER_27_REG: SET_OFFSET (Bitfield-Mask: 0xff) */ -#define RFCU_POWER_RF_CNTRL_TIMER_27_REG_RESET_OFFSET_Pos (8UL) /*!< RFCU_POWER RF_CNTRL_TIMER_27_REG: RESET_OFFSET (Bit 8) */ -#define RFCU_POWER_RF_CNTRL_TIMER_27_REG_RESET_OFFSET_Msk (0xff00UL) /*!< RFCU_POWER RF_CNTRL_TIMER_27_REG: RESET_OFFSET (Bitfield-Mask: 0xff) */ - -/* ---------------------- RFCU_POWER_RF_CNTRL_TIMER_28_REG ---------------------- */ -#define RFCU_POWER_RF_CNTRL_TIMER_28_REG_SET_OFFSET_Pos (0UL) /*!< RFCU_POWER RF_CNTRL_TIMER_28_REG: SET_OFFSET (Bit 0) */ -#define RFCU_POWER_RF_CNTRL_TIMER_28_REG_SET_OFFSET_Msk (0xffUL) /*!< RFCU_POWER RF_CNTRL_TIMER_28_REG: SET_OFFSET (Bitfield-Mask: 0xff) */ -#define RFCU_POWER_RF_CNTRL_TIMER_28_REG_RESET_OFFSET_Pos (8UL) /*!< RFCU_POWER RF_CNTRL_TIMER_28_REG: RESET_OFFSET (Bit 8) */ -#define RFCU_POWER_RF_CNTRL_TIMER_28_REG_RESET_OFFSET_Msk (0xff00UL) /*!< RFCU_POWER RF_CNTRL_TIMER_28_REG: RESET_OFFSET (Bitfield-Mask: 0xff) */ - -/* ---------------------- RFCU_POWER_RF_CNTRL_TIMER_29_REG ---------------------- */ -#define RFCU_POWER_RF_CNTRL_TIMER_29_REG_SET_OFFSET_Pos (0UL) /*!< RFCU_POWER RF_CNTRL_TIMER_29_REG: SET_OFFSET (Bit 0) */ -#define RFCU_POWER_RF_CNTRL_TIMER_29_REG_SET_OFFSET_Msk (0xffUL) /*!< RFCU_POWER RF_CNTRL_TIMER_29_REG: SET_OFFSET (Bitfield-Mask: 0xff) */ -#define RFCU_POWER_RF_CNTRL_TIMER_29_REG_RESET_OFFSET_Pos (8UL) /*!< RFCU_POWER RF_CNTRL_TIMER_29_REG: RESET_OFFSET (Bit 8) */ -#define RFCU_POWER_RF_CNTRL_TIMER_29_REG_RESET_OFFSET_Msk (0xff00UL) /*!< RFCU_POWER RF_CNTRL_TIMER_29_REG: RESET_OFFSET (Bitfield-Mask: 0xff) */ - -/* ---------------------- RFCU_POWER_RF_CNTRL_TIMER_30_REG ---------------------- */ -#define RFCU_POWER_RF_CNTRL_TIMER_30_REG_SET_OFFSET_Pos (0UL) /*!< RFCU_POWER RF_CNTRL_TIMER_30_REG: SET_OFFSET (Bit 0) */ -#define RFCU_POWER_RF_CNTRL_TIMER_30_REG_SET_OFFSET_Msk (0xffUL) /*!< RFCU_POWER RF_CNTRL_TIMER_30_REG: SET_OFFSET (Bitfield-Mask: 0xff) */ -#define RFCU_POWER_RF_CNTRL_TIMER_30_REG_RESET_OFFSET_Pos (8UL) /*!< RFCU_POWER RF_CNTRL_TIMER_30_REG: RESET_OFFSET (Bit 8) */ -#define RFCU_POWER_RF_CNTRL_TIMER_30_REG_RESET_OFFSET_Msk (0xff00UL) /*!< RFCU_POWER RF_CNTRL_TIMER_30_REG: RESET_OFFSET (Bitfield-Mask: 0xff) */ - -/* ---------------------- RFCU_POWER_RF_CNTRL_TIMER_31_REG ---------------------- */ -#define RFCU_POWER_RF_CNTRL_TIMER_31_REG_SET_OFFSET_Pos (0UL) /*!< RFCU_POWER RF_CNTRL_TIMER_31_REG: SET_OFFSET (Bit 0) */ -#define RFCU_POWER_RF_CNTRL_TIMER_31_REG_SET_OFFSET_Msk (0xffUL) /*!< RFCU_POWER RF_CNTRL_TIMER_31_REG: SET_OFFSET (Bitfield-Mask: 0xff) */ -#define RFCU_POWER_RF_CNTRL_TIMER_31_REG_RESET_OFFSET_Pos (8UL) /*!< RFCU_POWER RF_CNTRL_TIMER_31_REG: RESET_OFFSET (Bit 8) */ -#define RFCU_POWER_RF_CNTRL_TIMER_31_REG_RESET_OFFSET_Msk (0xff00UL) /*!< RFCU_POWER RF_CNTRL_TIMER_31_REG: RESET_OFFSET (Bitfield-Mask: 0xff) */ - -/* ------------------------ RFCU_POWER_RF_ALWAYS_EN1_REG ------------------------ */ -#define RFCU_POWER_RF_ALWAYS_EN1_REG_ALW_EN_LNA_LDO_EN_Pos (0UL) /*!< RFCU_POWER RF_ALWAYS_EN1_REG: ALW_EN_LNA_LDO_EN (Bit 0) */ -#define RFCU_POWER_RF_ALWAYS_EN1_REG_ALW_EN_LNA_LDO_EN_Msk (0x1UL) /*!< RFCU_POWER RF_ALWAYS_EN1_REG: ALW_EN_LNA_LDO_EN (Bitfield-Mask: 0x01) */ -#define RFCU_POWER_RF_ALWAYS_EN1_REG_ALW_EN_LNA_CORE_EN_Pos (1UL) /*!< RFCU_POWER RF_ALWAYS_EN1_REG: ALW_EN_LNA_CORE_EN (Bit 1) */ -#define RFCU_POWER_RF_ALWAYS_EN1_REG_ALW_EN_LNA_CORE_EN_Msk (0x2UL) /*!< RFCU_POWER RF_ALWAYS_EN1_REG: ALW_EN_LNA_CORE_EN (Bitfield-Mask: 0x01) */ -#define RFCU_POWER_RF_ALWAYS_EN1_REG_ALW_EN_LNA_CGM_EN_Pos (2UL) /*!< RFCU_POWER RF_ALWAYS_EN1_REG: ALW_EN_LNA_CGM_EN (Bit 2) */ -#define RFCU_POWER_RF_ALWAYS_EN1_REG_ALW_EN_LNA_CGM_EN_Msk (0x4UL) /*!< RFCU_POWER RF_ALWAYS_EN1_REG: ALW_EN_LNA_CGM_EN (Bitfield-Mask: 0x01) */ -#define RFCU_POWER_RF_ALWAYS_EN1_REG_ALW_EN_MIX_LDO_EN_Pos (3UL) /*!< RFCU_POWER RF_ALWAYS_EN1_REG: ALW_EN_MIX_LDO_EN (Bit 3) */ -#define RFCU_POWER_RF_ALWAYS_EN1_REG_ALW_EN_MIX_LDO_EN_Msk (0x8UL) /*!< RFCU_POWER RF_ALWAYS_EN1_REG: ALW_EN_MIX_LDO_EN (Bitfield-Mask: 0x01) */ -#define RFCU_POWER_RF_ALWAYS_EN1_REG_ALW_EN_IFF_LDO_EN_Pos (4UL) /*!< RFCU_POWER RF_ALWAYS_EN1_REG: ALW_EN_IFF_LDO_EN (Bit 4) */ -#define RFCU_POWER_RF_ALWAYS_EN1_REG_ALW_EN_IFF_LDO_EN_Msk (0x10UL) /*!< RFCU_POWER RF_ALWAYS_EN1_REG: ALW_EN_IFF_LDO_EN (Bitfield-Mask: 0x01) */ -#define RFCU_POWER_RF_ALWAYS_EN1_REG_ALW_EN_IFFADC_LDO_EN_Pos (5UL) /*!< RFCU_POWER RF_ALWAYS_EN1_REG: ALW_EN_IFFADC_LDO_EN (Bit 5) */ -#define RFCU_POWER_RF_ALWAYS_EN1_REG_ALW_EN_IFFADC_LDO_EN_Msk (0x20UL) /*!< RFCU_POWER RF_ALWAYS_EN1_REG: ALW_EN_IFFADC_LDO_EN (Bitfield-Mask: 0x01) */ -#define RFCU_POWER_RF_ALWAYS_EN1_REG_ALW_EN_VCO_LDO_EN_Pos (6UL) /*!< RFCU_POWER RF_ALWAYS_EN1_REG: ALW_EN_VCO_LDO_EN (Bit 6) */ -#define RFCU_POWER_RF_ALWAYS_EN1_REG_ALW_EN_VCO_LDO_EN_Msk (0x40UL) /*!< RFCU_POWER RF_ALWAYS_EN1_REG: ALW_EN_VCO_LDO_EN (Bitfield-Mask: 0x01) */ -#define RFCU_POWER_RF_ALWAYS_EN1_REG_ALW_EN_MD_LDO_EN_Pos (7UL) /*!< RFCU_POWER RF_ALWAYS_EN1_REG: ALW_EN_MD_LDO_EN (Bit 7) */ -#define RFCU_POWER_RF_ALWAYS_EN1_REG_ALW_EN_MD_LDO_EN_Msk (0x80UL) /*!< RFCU_POWER RF_ALWAYS_EN1_REG: ALW_EN_MD_LDO_EN (Bitfield-Mask: 0x01) */ -#define RFCU_POWER_RF_ALWAYS_EN1_REG_ALW_EN_PFD_LDO_EN_Pos (8UL) /*!< RFCU_POWER RF_ALWAYS_EN1_REG: ALW_EN_PFD_LDO_EN (Bit 8) */ -#define RFCU_POWER_RF_ALWAYS_EN1_REG_ALW_EN_PFD_LDO_EN_Msk (0x100UL) /*!< RFCU_POWER RF_ALWAYS_EN1_REG: ALW_EN_PFD_LDO_EN (Bitfield-Mask: 0x01) */ -#define RFCU_POWER_RF_ALWAYS_EN1_REG_ALW_EN_PA_LDO_EN_Pos (9UL) /*!< RFCU_POWER RF_ALWAYS_EN1_REG: ALW_EN_PA_LDO_EN (Bit 9) */ -#define RFCU_POWER_RF_ALWAYS_EN1_REG_ALW_EN_PA_LDO_EN_Msk (0x200UL) /*!< RFCU_POWER RF_ALWAYS_EN1_REG: ALW_EN_PA_LDO_EN (Bitfield-Mask: 0x01) */ -#define RFCU_POWER_RF_ALWAYS_EN1_REG_ALW_EN_CP_SWITCH_EN_Pos (10UL) /*!< RFCU_POWER RF_ALWAYS_EN1_REG: ALW_EN_CP_SWITCH_EN (Bit 10) */ -#define RFCU_POWER_RF_ALWAYS_EN1_REG_ALW_EN_CP_SWITCH_EN_Msk (0x400UL) /*!< RFCU_POWER RF_ALWAYS_EN1_REG: ALW_EN_CP_SWITCH_EN (Bitfield-Mask: 0x01) */ -#define RFCU_POWER_RF_ALWAYS_EN1_REG_ALW_EN_VCO_BIAS_EN_Pos (11UL) /*!< RFCU_POWER RF_ALWAYS_EN1_REG: ALW_EN_VCO_BIAS_EN (Bit 11) */ -#define RFCU_POWER_RF_ALWAYS_EN1_REG_ALW_EN_VCO_BIAS_EN_Msk (0x800UL) /*!< RFCU_POWER RF_ALWAYS_EN1_REG: ALW_EN_VCO_BIAS_EN (Bitfield-Mask: 0x01) */ -#define RFCU_POWER_RF_ALWAYS_EN1_REG_ALW_EN_CP_BIAS_EN_Pos (12UL) /*!< RFCU_POWER RF_ALWAYS_EN1_REG: ALW_EN_CP_BIAS_EN (Bit 12) */ -#define RFCU_POWER_RF_ALWAYS_EN1_REG_ALW_EN_CP_BIAS_EN_Msk (0x1000UL) /*!< RFCU_POWER RF_ALWAYS_EN1_REG: ALW_EN_CP_BIAS_EN (Bitfield-Mask: 0x01) */ -#define RFCU_POWER_RF_ALWAYS_EN1_REG_ALW_EN_LNA_LDO_ZERO_Pos (13UL) /*!< RFCU_POWER RF_ALWAYS_EN1_REG: ALW_EN_LNA_LDO_ZERO (Bit 13) */ -#define RFCU_POWER_RF_ALWAYS_EN1_REG_ALW_EN_LNA_LDO_ZERO_Msk (0x2000UL) /*!< RFCU_POWER RF_ALWAYS_EN1_REG: ALW_EN_LNA_LDO_ZERO (Bitfield-Mask: 0x01) */ -#define RFCU_POWER_RF_ALWAYS_EN1_REG_ALW_EN_PA_RAMP_EN_Pos (14UL) /*!< RFCU_POWER RF_ALWAYS_EN1_REG: ALW_EN_PA_RAMP_EN (Bit 14) */ -#define RFCU_POWER_RF_ALWAYS_EN1_REG_ALW_EN_PA_RAMP_EN_Msk (0x4000UL) /*!< RFCU_POWER RF_ALWAYS_EN1_REG: ALW_EN_PA_RAMP_EN (Bitfield-Mask: 0x01) */ -#define RFCU_POWER_RF_ALWAYS_EN1_REG_ALW_EN_PA_EN_Pos (15UL) /*!< RFCU_POWER RF_ALWAYS_EN1_REG: ALW_EN_PA_EN (Bit 15) */ -#define RFCU_POWER_RF_ALWAYS_EN1_REG_ALW_EN_PA_EN_Msk (0x8000UL) /*!< RFCU_POWER RF_ALWAYS_EN1_REG: ALW_EN_PA_EN (Bitfield-Mask: 0x01) */ - -/* ------------------------ RFCU_POWER_RF_ALWAYS_EN2_REG ------------------------ */ -#define RFCU_POWER_RF_ALWAYS_EN2_REG_ALW_EN_MIX_EN_Pos (0UL) /*!< RFCU_POWER RF_ALWAYS_EN2_REG: ALW_EN_MIX_EN (Bit 0) */ -#define RFCU_POWER_RF_ALWAYS_EN2_REG_ALW_EN_MIX_EN_Msk (0x1UL) /*!< RFCU_POWER RF_ALWAYS_EN2_REG: ALW_EN_MIX_EN (Bitfield-Mask: 0x01) */ -#define RFCU_POWER_RF_ALWAYS_EN2_REG_ALW_EN_IFF_EN_Pos (1UL) /*!< RFCU_POWER RF_ALWAYS_EN2_REG: ALW_EN_IFF_EN (Bit 1) */ -#define RFCU_POWER_RF_ALWAYS_EN2_REG_ALW_EN_IFF_EN_Msk (0x2UL) /*!< RFCU_POWER RF_ALWAYS_EN2_REG: ALW_EN_IFF_EN (Bitfield-Mask: 0x01) */ -#define RFCU_POWER_RF_ALWAYS_EN2_REG_ALW_EN_ADC_EN_Pos (2UL) /*!< RFCU_POWER RF_ALWAYS_EN2_REG: ALW_EN_ADC_EN (Bit 2) */ -#define RFCU_POWER_RF_ALWAYS_EN2_REG_ALW_EN_ADC_EN_Msk (0x4UL) /*!< RFCU_POWER RF_ALWAYS_EN2_REG: ALW_EN_ADC_EN (Bitfield-Mask: 0x01) */ -#define RFCU_POWER_RF_ALWAYS_EN2_REG_ALW_EN_VCO_EN_Pos (3UL) /*!< RFCU_POWER RF_ALWAYS_EN2_REG: ALW_EN_VCO_EN (Bit 3) */ -#define RFCU_POWER_RF_ALWAYS_EN2_REG_ALW_EN_VCO_EN_Msk (0x8UL) /*!< RFCU_POWER RF_ALWAYS_EN2_REG: ALW_EN_VCO_EN (Bitfield-Mask: 0x01) */ -#define RFCU_POWER_RF_ALWAYS_EN2_REG_ALW_EN_LOBUF_MD_EN_Pos (4UL) /*!< RFCU_POWER RF_ALWAYS_EN2_REG: ALW_EN_LOBUF_MD_EN (Bit 4) */ -#define RFCU_POWER_RF_ALWAYS_EN2_REG_ALW_EN_LOBUF_MD_EN_Msk (0x10UL) /*!< RFCU_POWER RF_ALWAYS_EN2_REG: ALW_EN_LOBUF_MD_EN (Bitfield-Mask: 0x01) */ -#define RFCU_POWER_RF_ALWAYS_EN2_REG_ALW_EN_CP_EN_Pos (5UL) /*!< RFCU_POWER RF_ALWAYS_EN2_REG: ALW_EN_CP_EN (Bit 5) */ -#define RFCU_POWER_RF_ALWAYS_EN2_REG_ALW_EN_CP_EN_Msk (0x20UL) /*!< RFCU_POWER RF_ALWAYS_EN2_REG: ALW_EN_CP_EN (Bitfield-Mask: 0x01) */ -#define RFCU_POWER_RF_ALWAYS_EN2_REG_ALW_EN_PDF_EN_Pos (6UL) /*!< RFCU_POWER RF_ALWAYS_EN2_REG: ALW_EN_PDF_EN (Bit 6) */ -#define RFCU_POWER_RF_ALWAYS_EN2_REG_ALW_EN_PDF_EN_Msk (0x40UL) /*!< RFCU_POWER RF_ALWAYS_EN2_REG: ALW_EN_PDF_EN (Bitfield-Mask: 0x01) */ -#define RFCU_POWER_RF_ALWAYS_EN2_REG_ALW_EN_GAUSS_EN_Pos (7UL) /*!< RFCU_POWER RF_ALWAYS_EN2_REG: ALW_EN_GAUSS_EN (Bit 7) */ -#define RFCU_POWER_RF_ALWAYS_EN2_REG_ALW_EN_GAUSS_EN_Msk (0x80UL) /*!< RFCU_POWER RF_ALWAYS_EN2_REG: ALW_EN_GAUSS_EN (Bitfield-Mask: 0x01) */ -#define RFCU_POWER_RF_ALWAYS_EN2_REG_ALW_EN_RFIO_TXRX_Pos (8UL) /*!< RFCU_POWER RF_ALWAYS_EN2_REG: ALW_EN_RFIO_TXRX (Bit 8) */ -#define RFCU_POWER_RF_ALWAYS_EN2_REG_ALW_EN_RFIO_TXRX_Msk (0x100UL) /*!< RFCU_POWER RF_ALWAYS_EN2_REG: ALW_EN_RFIO_TXRX (Bitfield-Mask: 0x01) */ -#define RFCU_POWER_RF_ALWAYS_EN2_REG_ALW_EN_LOBUF_PA_EN_Pos (9UL) /*!< RFCU_POWER RF_ALWAYS_EN2_REG: ALW_EN_LOBUF_PA_EN (Bit 9) */ -#define RFCU_POWER_RF_ALWAYS_EN2_REG_ALW_EN_LOBUF_PA_EN_Msk (0x200UL) /*!< RFCU_POWER RF_ALWAYS_EN2_REG: ALW_EN_LOBUF_PA_EN (Bitfield-Mask: 0x01) */ -#define RFCU_POWER_RF_ALWAYS_EN2_REG_ALW_EN_RXIQ_EN_Pos (10UL) /*!< RFCU_POWER RF_ALWAYS_EN2_REG: ALW_EN_RXIQ_EN (Bit 10) */ -#define RFCU_POWER_RF_ALWAYS_EN2_REG_ALW_EN_RXIQ_EN_Msk (0x400UL) /*!< RFCU_POWER RF_ALWAYS_EN2_REG: ALW_EN_RXIQ_EN (Bitfield-Mask: 0x01) */ -#define RFCU_POWER_RF_ALWAYS_EN2_REG_ALW_EN_DIV2_EN_Pos (11UL) /*!< RFCU_POWER RF_ALWAYS_EN2_REG: ALW_EN_DIV2_EN (Bit 11) */ -#define RFCU_POWER_RF_ALWAYS_EN2_REG_ALW_EN_DIV2_EN_Msk (0x800UL) /*!< RFCU_POWER RF_ALWAYS_EN2_REG: ALW_EN_DIV2_EN (Bitfield-Mask: 0x01) */ -#define RFCU_POWER_RF_ALWAYS_EN2_REG_ALW_EN_CP_BIAS_SH_OPEN_Pos (12UL) /*!< RFCU_POWER RF_ALWAYS_EN2_REG: ALW_EN_CP_BIAS_SH_OPEN (Bit 12) */ -#define RFCU_POWER_RF_ALWAYS_EN2_REG_ALW_EN_CP_BIAS_SH_OPEN_Msk (0x1000UL) /*!< RFCU_POWER RF_ALWAYS_EN2_REG: ALW_EN_CP_BIAS_SH_OPEN (Bitfield-Mask: 0x01) */ -#define RFCU_POWER_RF_ALWAYS_EN2_REG_ALW_EN_VCO_BIAS_SH_OPEN_Pos (13UL) /*!< RFCU_POWER RF_ALWAYS_EN2_REG: ALW_EN_VCO_BIAS_SH_OPEN (Bit 13) */ -#define RFCU_POWER_RF_ALWAYS_EN2_REG_ALW_EN_VCO_BIAS_SH_OPEN_Msk (0x2000UL) /*!< RFCU_POWER RF_ALWAYS_EN2_REG: ALW_EN_VCO_BIAS_SH_OPEN (Bitfield-Mask: 0x01) */ -#define RFCU_POWER_RF_ALWAYS_EN2_REG_ALW_EN_IFFMIX_BIAS_SH_OPEN_Pos (14UL) /*!< RFCU_POWER RF_ALWAYS_EN2_REG: ALW_EN_IFFMIX_BIAS_SH_OPEN (Bit 14) */ -#define RFCU_POWER_RF_ALWAYS_EN2_REG_ALW_EN_IFFMIX_BIAS_SH_OPEN_Msk (0x4000UL) /*!< RFCU_POWER RF_ALWAYS_EN2_REG: ALW_EN_IFFMIX_BIAS_SH_OPEN (Bitfield-Mask: 0x01) */ -#define RFCU_POWER_RF_ALWAYS_EN2_REG_ALW_EN_GAUSS_BIAS_SH_Pos (15UL) /*!< RFCU_POWER RF_ALWAYS_EN2_REG: ALW_EN_GAUSS_BIAS_SH (Bit 15) */ -#define RFCU_POWER_RF_ALWAYS_EN2_REG_ALW_EN_GAUSS_BIAS_SH_Msk (0x8000UL) /*!< RFCU_POWER RF_ALWAYS_EN2_REG: ALW_EN_GAUSS_BIAS_SH (Bitfield-Mask: 0x01) */ - -/* ------------------------ RFCU_POWER_RF_ALWAYS_EN3_REG ------------------------ */ -#define RFCU_POWER_RF_ALWAYS_EN3_REG_ALW_EN_MIX_BIAS_SH_Pos (0UL) /*!< RFCU_POWER RF_ALWAYS_EN3_REG: ALW_EN_MIX_BIAS_SH (Bit 0) */ -#define RFCU_POWER_RF_ALWAYS_EN3_REG_ALW_EN_MIX_BIAS_SH_Msk (0x1UL) /*!< RFCU_POWER RF_ALWAYS_EN3_REG: ALW_EN_MIX_BIAS_SH (Bitfield-Mask: 0x01) */ -#define RFCU_POWER_RF_ALWAYS_EN3_REG_ALW_EN_PLL_DIG_EN_Pos (1UL) /*!< RFCU_POWER RF_ALWAYS_EN3_REG: ALW_EN_PLL_DIG_EN (Bit 1) */ -#define RFCU_POWER_RF_ALWAYS_EN3_REG_ALW_EN_PLL_DIG_EN_Msk (0x2UL) /*!< RFCU_POWER RF_ALWAYS_EN3_REG: ALW_EN_PLL_DIG_EN (Bitfield-Mask: 0x01) */ -#define RFCU_POWER_RF_ALWAYS_EN3_REG_ALW_EN_PLLCLOSED_EN_Pos (2UL) /*!< RFCU_POWER RF_ALWAYS_EN3_REG: ALW_EN_PLLCLOSED_EN (Bit 2) */ -#define RFCU_POWER_RF_ALWAYS_EN3_REG_ALW_EN_PLLCLOSED_EN_Msk (0x4UL) /*!< RFCU_POWER RF_ALWAYS_EN3_REG: ALW_EN_PLLCLOSED_EN (Bitfield-Mask: 0x01) */ -#define RFCU_POWER_RF_ALWAYS_EN3_REG_ALW_EN_DEM_EN_Pos (3UL) /*!< RFCU_POWER RF_ALWAYS_EN3_REG: ALW_EN_DEM_EN (Bit 3) */ -#define RFCU_POWER_RF_ALWAYS_EN3_REG_ALW_EN_DEM_EN_Msk (0x8UL) /*!< RFCU_POWER RF_ALWAYS_EN3_REG: ALW_EN_DEM_EN (Bitfield-Mask: 0x01) */ -#define RFCU_POWER_RF_ALWAYS_EN3_REG_ALW_EN_LDO_ZERO_EN_Pos (4UL) /*!< RFCU_POWER RF_ALWAYS_EN3_REG: ALW_EN_LDO_ZERO_EN (Bit 4) */ -#define RFCU_POWER_RF_ALWAYS_EN3_REG_ALW_EN_LDO_ZERO_EN_Msk (0x10UL) /*!< RFCU_POWER RF_ALWAYS_EN3_REG: ALW_EN_LDO_ZERO_EN (Bitfield-Mask: 0x01) */ -#define RFCU_POWER_RF_ALWAYS_EN3_REG_ALW_EN_CAL_EN_Pos (5UL) /*!< RFCU_POWER RF_ALWAYS_EN3_REG: ALW_EN_CAL_EN (Bit 5) */ -#define RFCU_POWER_RF_ALWAYS_EN3_REG_ALW_EN_CAL_EN_Msk (0x20UL) /*!< RFCU_POWER RF_ALWAYS_EN3_REG: ALW_EN_CAL_EN (Bitfield-Mask: 0x01) */ -#define RFCU_POWER_RF_ALWAYS_EN3_REG_ALW_EN_TDC_EN_Pos (6UL) /*!< RFCU_POWER RF_ALWAYS_EN3_REG: ALW_EN_TDC_EN (Bit 6) */ -#define RFCU_POWER_RF_ALWAYS_EN3_REG_ALW_EN_TDC_EN_Msk (0x40UL) /*!< RFCU_POWER RF_ALWAYS_EN3_REG: ALW_EN_TDC_EN (Bitfield-Mask: 0x01) */ -#define RFCU_POWER_RF_ALWAYS_EN3_REG_ALW_EN_LDO_RFIO_EN_Pos (7UL) /*!< RFCU_POWER RF_ALWAYS_EN3_REG: ALW_EN_LDO_RFIO_EN (Bit 7) */ -#define RFCU_POWER_RF_ALWAYS_EN3_REG_ALW_EN_LDO_RFIO_EN_Msk (0x80UL) /*!< RFCU_POWER RF_ALWAYS_EN3_REG: ALW_EN_LDO_RFIO_EN (Bitfield-Mask: 0x01) */ -#define RFCU_POWER_RF_ALWAYS_EN3_REG_ALW_EN_RFIO_BIAS_EN_Pos (8UL) /*!< RFCU_POWER RF_ALWAYS_EN3_REG: ALW_EN_RFIO_BIAS_EN (Bit 8) */ -#define RFCU_POWER_RF_ALWAYS_EN3_REG_ALW_EN_RFIO_BIAS_EN_Msk (0x100UL) /*!< RFCU_POWER RF_ALWAYS_EN3_REG: ALW_EN_RFIO_BIAS_EN (Bitfield-Mask: 0x01) */ -#define RFCU_POWER_RF_ALWAYS_EN3_REG_ALW_EN_RFIO_BIAS_SH_Pos (9UL) /*!< RFCU_POWER RF_ALWAYS_EN3_REG: ALW_EN_RFIO_BIAS_SH (Bit 9) */ -#define RFCU_POWER_RF_ALWAYS_EN3_REG_ALW_EN_RFIO_BIAS_SH_Msk (0x200UL) /*!< RFCU_POWER RF_ALWAYS_EN3_REG: ALW_EN_RFIO_BIAS_SH (Bitfield-Mask: 0x01) */ -#define RFCU_POWER_RF_ALWAYS_EN3_REG_ALW_EN_LDO_RADIO_EN_Pos (10UL) /*!< RFCU_POWER RF_ALWAYS_EN3_REG: ALW_EN_LDO_RADIO_EN (Bit 10) */ -#define RFCU_POWER_RF_ALWAYS_EN3_REG_ALW_EN_LDO_RADIO_EN_Msk (0x400UL) /*!< RFCU_POWER RF_ALWAYS_EN3_REG: ALW_EN_LDO_RADIO_EN (Bitfield-Mask: 0x01) */ -#define RFCU_POWER_RF_ALWAYS_EN3_REG_ALW_EN_ADC_CLK_EN_Pos (11UL) /*!< RFCU_POWER RF_ALWAYS_EN3_REG: ALW_EN_ADC_CLK_EN (Bit 11) */ -#define RFCU_POWER_RF_ALWAYS_EN3_REG_ALW_EN_ADC_CLK_EN_Msk (0x800UL) /*!< RFCU_POWER RF_ALWAYS_EN3_REG: ALW_EN_ADC_CLK_EN (Bitfield-Mask: 0x01) */ -#define RFCU_POWER_RF_ALWAYS_EN3_REG_ALW_EN_TR_PWRM_OFF_EN_Pos (12UL) /*!< RFCU_POWER RF_ALWAYS_EN3_REG: ALW_EN_TR_PWRM_OFF_EN (Bit 12) */ -#define RFCU_POWER_RF_ALWAYS_EN3_REG_ALW_EN_TR_PWRM_OFF_EN_Msk (0x1000UL) /*!< RFCU_POWER RF_ALWAYS_EN3_REG: ALW_EN_TR_PWRM_OFF_EN (Bitfield-Mask: 0x01) */ -#define RFCU_POWER_RF_ALWAYS_EN3_REG_ALW_EN_TXDAC_EN_Pos (13UL) /*!< RFCU_POWER RF_ALWAYS_EN3_REG: ALW_EN_TXDAC_EN (Bit 13) */ -#define RFCU_POWER_RF_ALWAYS_EN3_REG_ALW_EN_TXDAC_EN_Msk (0x2000UL) /*!< RFCU_POWER RF_ALWAYS_EN3_REG: ALW_EN_TXDAC_EN (Bitfield-Mask: 0x01) */ -#define RFCU_POWER_RF_ALWAYS_EN3_REG_ALW_EN_SPARE2_EN_Pos (14UL) /*!< RFCU_POWER RF_ALWAYS_EN3_REG: ALW_EN_SPARE2_EN (Bit 14) */ -#define RFCU_POWER_RF_ALWAYS_EN3_REG_ALW_EN_SPARE2_EN_Msk (0x4000UL) /*!< RFCU_POWER RF_ALWAYS_EN3_REG: ALW_EN_SPARE2_EN (Bitfield-Mask: 0x01) */ -#define RFCU_POWER_RF_ALWAYS_EN3_REG_ALW_EN_SPARE3_EN_Pos (15UL) /*!< RFCU_POWER RF_ALWAYS_EN3_REG: ALW_EN_SPARE3_EN (Bit 15) */ -#define RFCU_POWER_RF_ALWAYS_EN3_REG_ALW_EN_SPARE3_EN_Msk (0x8000UL) /*!< RFCU_POWER RF_ALWAYS_EN3_REG: ALW_EN_SPARE3_EN (Bitfield-Mask: 0x01) */ - -/* ------------------------ RFCU_POWER_RF_ALWAYS_EN4_REG ------------------------ */ -#define RFCU_POWER_RF_ALWAYS_EN4_REG_ALW_EN_SPARE4_EN_Pos (0UL) /*!< RFCU_POWER RF_ALWAYS_EN4_REG: ALW_EN_SPARE4_EN (Bit 0) */ -#define RFCU_POWER_RF_ALWAYS_EN4_REG_ALW_EN_SPARE4_EN_Msk (0x1UL) /*!< RFCU_POWER RF_ALWAYS_EN4_REG: ALW_EN_SPARE4_EN (Bitfield-Mask: 0x01) */ -#define RFCU_POWER_RF_ALWAYS_EN4_REG_ALW_EN_DEM_FTDF_EN_Pos (1UL) /*!< RFCU_POWER RF_ALWAYS_EN4_REG: ALW_EN_DEM_FTDF_EN (Bit 1) */ -#define RFCU_POWER_RF_ALWAYS_EN4_REG_ALW_EN_DEM_FTDF_EN_Msk (0x2UL) /*!< RFCU_POWER RF_ALWAYS_EN4_REG: ALW_EN_DEM_FTDF_EN (Bitfield-Mask: 0x01) */ - -/* ------------------------ RFCU_POWER_RF_PORT_EN_BLE_REG ----------------------- */ -#define RFCU_POWER_RF_PORT_EN_BLE_REG_RF_PORT0_RX_Pos (0UL) /*!< RFCU_POWER RF_PORT_EN_BLE_REG: RF_PORT0_RX (Bit 0) */ -#define RFCU_POWER_RF_PORT_EN_BLE_REG_RF_PORT0_RX_Msk (0x1UL) /*!< RFCU_POWER RF_PORT_EN_BLE_REG: RF_PORT0_RX (Bitfield-Mask: 0x01) */ -#define RFCU_POWER_RF_PORT_EN_BLE_REG_RF_PORT0_TX_Pos (1UL) /*!< RFCU_POWER RF_PORT_EN_BLE_REG: RF_PORT0_TX (Bit 1) */ -#define RFCU_POWER_RF_PORT_EN_BLE_REG_RF_PORT0_TX_Msk (0x2UL) /*!< RFCU_POWER RF_PORT_EN_BLE_REG: RF_PORT0_TX (Bitfield-Mask: 0x01) */ -#define RFCU_POWER_RF_PORT_EN_BLE_REG_RF_PORT1_RX_Pos (2UL) /*!< RFCU_POWER RF_PORT_EN_BLE_REG: RF_PORT1_RX (Bit 2) */ -#define RFCU_POWER_RF_PORT_EN_BLE_REG_RF_PORT1_RX_Msk (0x4UL) /*!< RFCU_POWER RF_PORT_EN_BLE_REG: RF_PORT1_RX (Bitfield-Mask: 0x01) */ -#define RFCU_POWER_RF_PORT_EN_BLE_REG_RF_PORT1_TX_Pos (3UL) /*!< RFCU_POWER RF_PORT_EN_BLE_REG: RF_PORT1_TX (Bit 3) */ -#define RFCU_POWER_RF_PORT_EN_BLE_REG_RF_PORT1_TX_Msk (0x8UL) /*!< RFCU_POWER RF_PORT_EN_BLE_REG: RF_PORT1_TX (Bitfield-Mask: 0x01) */ -#define RFCU_POWER_RF_PORT_EN_BLE_REG_RF_PORT2_RX_Pos (4UL) /*!< RFCU_POWER RF_PORT_EN_BLE_REG: RF_PORT2_RX (Bit 4) */ -#define RFCU_POWER_RF_PORT_EN_BLE_REG_RF_PORT2_RX_Msk (0x10UL) /*!< RFCU_POWER RF_PORT_EN_BLE_REG: RF_PORT2_RX (Bitfield-Mask: 0x01) */ -#define RFCU_POWER_RF_PORT_EN_BLE_REG_RF_PORT2_TX_Pos (5UL) /*!< RFCU_POWER RF_PORT_EN_BLE_REG: RF_PORT2_TX (Bit 5) */ -#define RFCU_POWER_RF_PORT_EN_BLE_REG_RF_PORT2_TX_Msk (0x20UL) /*!< RFCU_POWER RF_PORT_EN_BLE_REG: RF_PORT2_TX (Bitfield-Mask: 0x01) */ -#define RFCU_POWER_RF_PORT_EN_BLE_REG_RF_PORT3_RX_Pos (6UL) /*!< RFCU_POWER RF_PORT_EN_BLE_REG: RF_PORT3_RX (Bit 6) */ -#define RFCU_POWER_RF_PORT_EN_BLE_REG_RF_PORT3_RX_Msk (0x40UL) /*!< RFCU_POWER RF_PORT_EN_BLE_REG: RF_PORT3_RX (Bitfield-Mask: 0x01) */ -#define RFCU_POWER_RF_PORT_EN_BLE_REG_RF_PORT3_TX_Pos (7UL) /*!< RFCU_POWER RF_PORT_EN_BLE_REG: RF_PORT3_TX (Bit 7) */ -#define RFCU_POWER_RF_PORT_EN_BLE_REG_RF_PORT3_TX_Msk (0x80UL) /*!< RFCU_POWER RF_PORT_EN_BLE_REG: RF_PORT3_TX (Bitfield-Mask: 0x01) */ -#define RFCU_POWER_RF_PORT_EN_BLE_REG_RF_PORT4_RX_Pos (8UL) /*!< RFCU_POWER RF_PORT_EN_BLE_REG: RF_PORT4_RX (Bit 8) */ -#define RFCU_POWER_RF_PORT_EN_BLE_REG_RF_PORT4_RX_Msk (0x100UL) /*!< RFCU_POWER RF_PORT_EN_BLE_REG: RF_PORT4_RX (Bitfield-Mask: 0x01) */ -#define RFCU_POWER_RF_PORT_EN_BLE_REG_RF_PORT4_TX_Pos (9UL) /*!< RFCU_POWER RF_PORT_EN_BLE_REG: RF_PORT4_TX (Bit 9) */ -#define RFCU_POWER_RF_PORT_EN_BLE_REG_RF_PORT4_TX_Msk (0x200UL) /*!< RFCU_POWER RF_PORT_EN_BLE_REG: RF_PORT4_TX (Bitfield-Mask: 0x01) */ - -/* ----------------------- RFCU_POWER_RF_PORT_EN_FTDF_REG ----------------------- */ -#define RFCU_POWER_RF_PORT_EN_FTDF_REG_RF_PORT0_RX_Pos (0UL) /*!< RFCU_POWER RF_PORT_EN_FTDF_REG: RF_PORT0_RX (Bit 0) */ -#define RFCU_POWER_RF_PORT_EN_FTDF_REG_RF_PORT0_RX_Msk (0x1UL) /*!< RFCU_POWER RF_PORT_EN_FTDF_REG: RF_PORT0_RX (Bitfield-Mask: 0x01) */ -#define RFCU_POWER_RF_PORT_EN_FTDF_REG_RF_PORT0_TX_Pos (1UL) /*!< RFCU_POWER RF_PORT_EN_FTDF_REG: RF_PORT0_TX (Bit 1) */ -#define RFCU_POWER_RF_PORT_EN_FTDF_REG_RF_PORT0_TX_Msk (0x2UL) /*!< RFCU_POWER RF_PORT_EN_FTDF_REG: RF_PORT0_TX (Bitfield-Mask: 0x01) */ -#define RFCU_POWER_RF_PORT_EN_FTDF_REG_RF_PORT1_RX_Pos (2UL) /*!< RFCU_POWER RF_PORT_EN_FTDF_REG: RF_PORT1_RX (Bit 2) */ -#define RFCU_POWER_RF_PORT_EN_FTDF_REG_RF_PORT1_RX_Msk (0x4UL) /*!< RFCU_POWER RF_PORT_EN_FTDF_REG: RF_PORT1_RX (Bitfield-Mask: 0x01) */ -#define RFCU_POWER_RF_PORT_EN_FTDF_REG_RF_PORT1_TX_Pos (3UL) /*!< RFCU_POWER RF_PORT_EN_FTDF_REG: RF_PORT1_TX (Bit 3) */ -#define RFCU_POWER_RF_PORT_EN_FTDF_REG_RF_PORT1_TX_Msk (0x8UL) /*!< RFCU_POWER RF_PORT_EN_FTDF_REG: RF_PORT1_TX (Bitfield-Mask: 0x01) */ -#define RFCU_POWER_RF_PORT_EN_FTDF_REG_RF_PORT2_RX_Pos (4UL) /*!< RFCU_POWER RF_PORT_EN_FTDF_REG: RF_PORT2_RX (Bit 4) */ -#define RFCU_POWER_RF_PORT_EN_FTDF_REG_RF_PORT2_RX_Msk (0x10UL) /*!< RFCU_POWER RF_PORT_EN_FTDF_REG: RF_PORT2_RX (Bitfield-Mask: 0x01) */ -#define RFCU_POWER_RF_PORT_EN_FTDF_REG_RF_PORT2_TX_Pos (5UL) /*!< RFCU_POWER RF_PORT_EN_FTDF_REG: RF_PORT2_TX (Bit 5) */ -#define RFCU_POWER_RF_PORT_EN_FTDF_REG_RF_PORT2_TX_Msk (0x20UL) /*!< RFCU_POWER RF_PORT_EN_FTDF_REG: RF_PORT2_TX (Bitfield-Mask: 0x01) */ -#define RFCU_POWER_RF_PORT_EN_FTDF_REG_RF_PORT3_RX_Pos (6UL) /*!< RFCU_POWER RF_PORT_EN_FTDF_REG: RF_PORT3_RX (Bit 6) */ -#define RFCU_POWER_RF_PORT_EN_FTDF_REG_RF_PORT3_RX_Msk (0x40UL) /*!< RFCU_POWER RF_PORT_EN_FTDF_REG: RF_PORT3_RX (Bitfield-Mask: 0x01) */ -#define RFCU_POWER_RF_PORT_EN_FTDF_REG_RF_PORT3_TX_Pos (7UL) /*!< RFCU_POWER RF_PORT_EN_FTDF_REG: RF_PORT3_TX (Bit 7) */ -#define RFCU_POWER_RF_PORT_EN_FTDF_REG_RF_PORT3_TX_Msk (0x80UL) /*!< RFCU_POWER RF_PORT_EN_FTDF_REG: RF_PORT3_TX (Bitfield-Mask: 0x01) */ -#define RFCU_POWER_RF_PORT_EN_FTDF_REG_RF_PORT4_RX_Pos (8UL) /*!< RFCU_POWER RF_PORT_EN_FTDF_REG: RF_PORT4_RX (Bit 8) */ -#define RFCU_POWER_RF_PORT_EN_FTDF_REG_RF_PORT4_RX_Msk (0x100UL) /*!< RFCU_POWER RF_PORT_EN_FTDF_REG: RF_PORT4_RX (Bitfield-Mask: 0x01) */ -#define RFCU_POWER_RF_PORT_EN_FTDF_REG_RF_PORT4_TX_Pos (9UL) /*!< RFCU_POWER RF_PORT_EN_FTDF_REG: RF_PORT4_TX (Bit 9) */ -#define RFCU_POWER_RF_PORT_EN_FTDF_REG_RF_PORT4_TX_Msk (0x200UL) /*!< RFCU_POWER RF_PORT_EN_FTDF_REG: RF_PORT4_TX (Bitfield-Mask: 0x01) */ - -/* ------------------------- RFCU_POWER_RF_PORT_POL_REG ------------------------- */ -#define RFCU_POWER_RF_PORT_POL_REG_RF_PORT0_POL_Pos (0UL) /*!< RFCU_POWER RF_PORT_POL_REG: RF_PORT0_POL (Bit 0) */ -#define RFCU_POWER_RF_PORT_POL_REG_RF_PORT0_POL_Msk (0x1UL) /*!< RFCU_POWER RF_PORT_POL_REG: RF_PORT0_POL (Bitfield-Mask: 0x01) */ -#define RFCU_POWER_RF_PORT_POL_REG_RF_PORT1_POL_Pos (1UL) /*!< RFCU_POWER RF_PORT_POL_REG: RF_PORT1_POL (Bit 1) */ -#define RFCU_POWER_RF_PORT_POL_REG_RF_PORT1_POL_Msk (0x2UL) /*!< RFCU_POWER RF_PORT_POL_REG: RF_PORT1_POL (Bitfield-Mask: 0x01) */ -#define RFCU_POWER_RF_PORT_POL_REG_RF_PORT2_POL_Pos (2UL) /*!< RFCU_POWER RF_PORT_POL_REG: RF_PORT2_POL (Bit 2) */ -#define RFCU_POWER_RF_PORT_POL_REG_RF_PORT2_POL_Msk (0x4UL) /*!< RFCU_POWER RF_PORT_POL_REG: RF_PORT2_POL (Bitfield-Mask: 0x01) */ -#define RFCU_POWER_RF_PORT_POL_REG_RF_PORT3_POL_Pos (3UL) /*!< RFCU_POWER RF_PORT_POL_REG: RF_PORT3_POL (Bit 3) */ -#define RFCU_POWER_RF_PORT_POL_REG_RF_PORT3_POL_Msk (0x8UL) /*!< RFCU_POWER RF_PORT_POL_REG: RF_PORT3_POL (Bitfield-Mask: 0x01) */ -#define RFCU_POWER_RF_PORT_POL_REG_RF_PORT4_POL_Pos (4UL) /*!< RFCU_POWER RF_PORT_POL_REG: RF_PORT4_POL (Bit 4) */ -#define RFCU_POWER_RF_PORT_POL_REG_RF_PORT4_POL_Msk (0x10UL) /*!< RFCU_POWER RF_PORT_POL_REG: RF_PORT4_POL (Bitfield-Mask: 0x01) */ - - -/* ================================================================================ */ -/* ================ struct 'RFPT' Position & Mask ================ */ -/* ================================================================================ */ - - -/* ----------------------------- RFPT_RFPT_CTRL_REG ----------------------------- */ -#define RFPT_RFPT_CTRL_REG_RFPT_PACK_EN_Pos (0UL) /*!< RFPT RFPT_CTRL_REG: RFPT_PACK_EN (Bit 0) */ -#define RFPT_RFPT_CTRL_REG_RFPT_PACK_EN_Msk (0x1UL) /*!< RFPT RFPT_CTRL_REG: RFPT_PACK_EN (Bitfield-Mask: 0x01) */ -#define RFPT_RFPT_CTRL_REG_RFPT_PACK_SEL_Pos (1UL) /*!< RFPT RFPT_CTRL_REG: RFPT_PACK_SEL (Bit 1) */ -#define RFPT_RFPT_CTRL_REG_RFPT_PACK_SEL_Msk (0x6UL) /*!< RFPT RFPT_CTRL_REG: RFPT_PACK_SEL (Bitfield-Mask: 0x03) */ -#define RFPT_RFPT_CTRL_REG_RFPT_PACK_ADC_TYPE_Pos (3UL) /*!< RFPT RFPT_CTRL_REG: RFPT_PACK_ADC_TYPE (Bit 3) */ -#define RFPT_RFPT_CTRL_REG_RFPT_PACK_ADC_TYPE_Msk (0x8UL) /*!< RFPT RFPT_CTRL_REG: RFPT_PACK_ADC_TYPE (Bitfield-Mask: 0x01) */ -#define RFPT_RFPT_CTRL_REG_RFPT_CIRC_EN_Pos (4UL) /*!< RFPT RFPT_CTRL_REG: RFPT_CIRC_EN (Bit 4) */ -#define RFPT_RFPT_CTRL_REG_RFPT_CIRC_EN_Msk (0x10UL) /*!< RFPT RFPT_CTRL_REG: RFPT_CIRC_EN (Bitfield-Mask: 0x01) */ -#define RFPT_RFPT_CTRL_REG_RFPT_BREQ_FORCE_Pos (5UL) /*!< RFPT RFPT_CTRL_REG: RFPT_BREQ_FORCE (Bit 5) */ -#define RFPT_RFPT_CTRL_REG_RFPT_BREQ_FORCE_Msk (0x20UL) /*!< RFPT RFPT_CTRL_REG: RFPT_BREQ_FORCE (Bitfield-Mask: 0x01) */ - -/* ----------------------------- RFPT_RFPT_ADDRL_REG ---------------------------- */ -#define RFPT_RFPT_ADDRL_REG_RFPT_ADDRL_Pos (2UL) /*!< RFPT RFPT_ADDRL_REG: RFPT_ADDRL (Bit 2) */ -#define RFPT_RFPT_ADDRL_REG_RFPT_ADDRL_Msk (0xfffcUL) /*!< RFPT RFPT_ADDRL_REG: RFPT_ADDRL (Bitfield-Mask: 0x3fff) */ - -/* ----------------------------- RFPT_RFPT_ADDRH_REG ---------------------------- */ -#define RFPT_RFPT_ADDRH_REG_RFPT_ADDRH_Pos (0UL) /*!< RFPT RFPT_ADDRH_REG: RFPT_ADDRH (Bit 0) */ -#define RFPT_RFPT_ADDRH_REG_RFPT_ADDRH_Msk (0x3UL) /*!< RFPT RFPT_ADDRH_REG: RFPT_ADDRH (Bitfield-Mask: 0x03) */ - -/* ------------------------------ RFPT_RFPT_LEN_REG ----------------------------- */ -#define RFPT_RFPT_LEN_REG_RFPT_LEN_Pos (0UL) /*!< RFPT RFPT_LEN_REG: RFPT_LEN (Bit 0) */ -#define RFPT_RFPT_LEN_REG_RFPT_LEN_Msk (0x7fffUL) /*!< RFPT RFPT_LEN_REG: RFPT_LEN (Bitfield-Mask: 0x7fff) */ - -/* ----------------------------- RFPT_RFPT_STAT_REG ----------------------------- */ -#define RFPT_RFPT_STAT_REG_RFPT_ACTIVE_Pos (0UL) /*!< RFPT RFPT_STAT_REG: RFPT_ACTIVE (Bit 0) */ -#define RFPT_RFPT_STAT_REG_RFPT_ACTIVE_Msk (0x1UL) /*!< RFPT RFPT_STAT_REG: RFPT_ACTIVE (Bitfield-Mask: 0x01) */ -#define RFPT_RFPT_STAT_REG_RFPT_OFLOW_STK_Pos (1UL) /*!< RFPT RFPT_STAT_REG: RFPT_OFLOW_STK (Bit 1) */ -#define RFPT_RFPT_STAT_REG_RFPT_OFLOW_STK_Msk (0x2UL) /*!< RFPT RFPT_STAT_REG: RFPT_OFLOW_STK (Bitfield-Mask: 0x01) */ - -/* --------------------------- RFPT_RFPT_CRV_ADDRL_REG -------------------------- */ -#define RFPT_RFPT_CRV_ADDRL_REG_RFPT_CRV_ADDRL_Pos (2UL) /*!< RFPT RFPT_CRV_ADDRL_REG: RFPT_CRV_ADDRL (Bit 2) */ -#define RFPT_RFPT_CRV_ADDRL_REG_RFPT_CRV_ADDRL_Msk (0xfffcUL) /*!< RFPT RFPT_CRV_ADDRL_REG: RFPT_CRV_ADDRL (Bitfield-Mask: 0x3fff) */ - -/* --------------------------- RFPT_RFPT_CRV_ADDRH_REG -------------------------- */ -#define RFPT_RFPT_CRV_ADDRH_REG_RFPT_CRV_ADDRH_Pos (0UL) /*!< RFPT RFPT_CRV_ADDRH_REG: RFPT_CRV_ADDRH (Bit 0) */ -#define RFPT_RFPT_CRV_ADDRH_REG_RFPT_CRV_ADDRH_Msk (0x3UL) /*!< RFPT RFPT_CRV_ADDRH_REG: RFPT_CRV_ADDRH (Bitfield-Mask: 0x03) */ - -/* ---------------------------- RFPT_RFPT_CRV_LEN_REG --------------------------- */ -#define RFPT_RFPT_CRV_LEN_REG_RFPT_CRV_LEN_Pos (0UL) /*!< RFPT RFPT_CRV_LEN_REG: RFPT_CRV_LEN (Bit 0) */ -#define RFPT_RFPT_CRV_LEN_REG_RFPT_CRV_LEN_Msk (0x7fffUL) /*!< RFPT RFPT_CRV_LEN_REG: RFPT_CRV_LEN (Bitfield-Mask: 0x7fff) */ - - -/* ================================================================================ */ -/* ================ struct 'SPI' Position & Mask ================ */ -/* ================================================================================ */ - - -/* ------------------------------ SPI_SPI_CTRL_REG ------------------------------ */ -#define SPI_SPI_CTRL_REG_SPI_ON_Pos (0UL) /*!< SPI SPI_CTRL_REG: SPI_ON (Bit 0) */ -#define SPI_SPI_CTRL_REG_SPI_ON_Msk (0x1UL) /*!< SPI SPI_CTRL_REG: SPI_ON (Bitfield-Mask: 0x01) */ -#define SPI_SPI_CTRL_REG_SPI_PHA_Pos (1UL) /*!< SPI SPI_CTRL_REG: SPI_PHA (Bit 1) */ -#define SPI_SPI_CTRL_REG_SPI_PHA_Msk (0x2UL) /*!< SPI SPI_CTRL_REG: SPI_PHA (Bitfield-Mask: 0x01) */ -#define SPI_SPI_CTRL_REG_SPI_POL_Pos (2UL) /*!< SPI SPI_CTRL_REG: SPI_POL (Bit 2) */ -#define SPI_SPI_CTRL_REG_SPI_POL_Msk (0x4UL) /*!< SPI SPI_CTRL_REG: SPI_POL (Bitfield-Mask: 0x01) */ -#define SPI_SPI_CTRL_REG_SPI_CLK_Pos (3UL) /*!< SPI SPI_CTRL_REG: SPI_CLK (Bit 3) */ -#define SPI_SPI_CTRL_REG_SPI_CLK_Msk (0x18UL) /*!< SPI SPI_CTRL_REG: SPI_CLK (Bitfield-Mask: 0x03) */ -#define SPI_SPI_CTRL_REG_SPI_DO_Pos (5UL) /*!< SPI SPI_CTRL_REG: SPI_DO (Bit 5) */ -#define SPI_SPI_CTRL_REG_SPI_DO_Msk (0x20UL) /*!< SPI SPI_CTRL_REG: SPI_DO (Bitfield-Mask: 0x01) */ -#define SPI_SPI_CTRL_REG_SPI_SMN_Pos (6UL) /*!< SPI SPI_CTRL_REG: SPI_SMN (Bit 6) */ -#define SPI_SPI_CTRL_REG_SPI_SMN_Msk (0x40UL) /*!< SPI SPI_CTRL_REG: SPI_SMN (Bitfield-Mask: 0x01) */ -#define SPI_SPI_CTRL_REG_SPI_WORD_Pos (7UL) /*!< SPI SPI_CTRL_REG: SPI_WORD (Bit 7) */ -#define SPI_SPI_CTRL_REG_SPI_WORD_Msk (0x180UL) /*!< SPI SPI_CTRL_REG: SPI_WORD (Bitfield-Mask: 0x03) */ -#define SPI_SPI_CTRL_REG_SPI_RST_Pos (9UL) /*!< SPI SPI_CTRL_REG: SPI_RST (Bit 9) */ -#define SPI_SPI_CTRL_REG_SPI_RST_Msk (0x200UL) /*!< SPI SPI_CTRL_REG: SPI_RST (Bitfield-Mask: 0x01) */ -#define SPI_SPI_CTRL_REG_SPI_FORCE_DO_Pos (10UL) /*!< SPI SPI_CTRL_REG: SPI_FORCE_DO (Bit 10) */ -#define SPI_SPI_CTRL_REG_SPI_FORCE_DO_Msk (0x400UL) /*!< SPI SPI_CTRL_REG: SPI_FORCE_DO (Bitfield-Mask: 0x01) */ -#define SPI_SPI_CTRL_REG_SPI_TXH_Pos (11UL) /*!< SPI SPI_CTRL_REG: SPI_TXH (Bit 11) */ -#define SPI_SPI_CTRL_REG_SPI_TXH_Msk (0x800UL) /*!< SPI SPI_CTRL_REG: SPI_TXH (Bitfield-Mask: 0x01) */ -#define SPI_SPI_CTRL_REG_SPI_DI_Pos (12UL) /*!< SPI SPI_CTRL_REG: SPI_DI (Bit 12) */ -#define SPI_SPI_CTRL_REG_SPI_DI_Msk (0x1000UL) /*!< SPI SPI_CTRL_REG: SPI_DI (Bitfield-Mask: 0x01) */ -#define SPI_SPI_CTRL_REG_SPI_INT_BIT_Pos (13UL) /*!< SPI SPI_CTRL_REG: SPI_INT_BIT (Bit 13) */ -#define SPI_SPI_CTRL_REG_SPI_INT_BIT_Msk (0x2000UL) /*!< SPI SPI_CTRL_REG: SPI_INT_BIT (Bitfield-Mask: 0x01) */ -#define SPI_SPI_CTRL_REG_SPI_MINT_Pos (14UL) /*!< SPI SPI_CTRL_REG: SPI_MINT (Bit 14) */ -#define SPI_SPI_CTRL_REG_SPI_MINT_Msk (0x4000UL) /*!< SPI SPI_CTRL_REG: SPI_MINT (Bitfield-Mask: 0x01) */ -#define SPI_SPI_CTRL_REG_SPI_EN_CTRL_Pos (15UL) /*!< SPI SPI_CTRL_REG: SPI_EN_CTRL (Bit 15) */ -#define SPI_SPI_CTRL_REG_SPI_EN_CTRL_Msk (0x8000UL) /*!< SPI SPI_CTRL_REG: SPI_EN_CTRL (Bitfield-Mask: 0x01) */ - -/* ----------------------------- SPI_SPI_RX_TX_REG0 ----------------------------- */ -#define SPI_SPI_RX_TX_REG0_SPI_DATA0_Pos (0UL) /*!< SPI SPI_RX_TX_REG0: SPI_DATA0 (Bit 0) */ -#define SPI_SPI_RX_TX_REG0_SPI_DATA0_Msk (0xffffUL) /*!< SPI SPI_RX_TX_REG0: SPI_DATA0 (Bitfield-Mask: 0xffff) */ - -/* ----------------------------- SPI_SPI_RX_TX_REG1 ----------------------------- */ -#define SPI_SPI_RX_TX_REG1_SPI_DATA1_Pos (0UL) /*!< SPI SPI_RX_TX_REG1: SPI_DATA1 (Bit 0) */ -#define SPI_SPI_RX_TX_REG1_SPI_DATA1_Msk (0xffffUL) /*!< SPI SPI_RX_TX_REG1: SPI_DATA1 (Bitfield-Mask: 0xffff) */ - -/* ---------------------------- SPI_SPI_CLEAR_INT_REG --------------------------- */ -#define SPI_SPI_CLEAR_INT_REG_SPI_CLEAR_INT_Pos (0UL) /*!< SPI SPI_CLEAR_INT_REG: SPI_CLEAR_INT (Bit 0) */ -#define SPI_SPI_CLEAR_INT_REG_SPI_CLEAR_INT_Msk (0xffffUL) /*!< SPI SPI_CLEAR_INT_REG: SPI_CLEAR_INT (Bitfield-Mask: 0xffff) */ - -/* ------------------------------ SPI_SPI_CTRL_REG1 ----------------------------- */ -#define SPI_SPI_CTRL_REG1_SPI_FIFO_MODE_Pos (0UL) /*!< SPI SPI_CTRL_REG1: SPI_FIFO_MODE (Bit 0) */ -#define SPI_SPI_CTRL_REG1_SPI_FIFO_MODE_Msk (0x3UL) /*!< SPI SPI_CTRL_REG1: SPI_FIFO_MODE (Bitfield-Mask: 0x03) */ -#define SPI_SPI_CTRL_REG1_SPI_PRIORITY_Pos (2UL) /*!< SPI SPI_CTRL_REG1: SPI_PRIORITY (Bit 2) */ -#define SPI_SPI_CTRL_REG1_SPI_PRIORITY_Msk (0x4UL) /*!< SPI SPI_CTRL_REG1: SPI_PRIORITY (Bitfield-Mask: 0x01) */ -#define SPI_SPI_CTRL_REG1_SPI_BUSY_Pos (3UL) /*!< SPI SPI_CTRL_REG1: SPI_BUSY (Bit 3) */ -#define SPI_SPI_CTRL_REG1_SPI_BUSY_Msk (0x8UL) /*!< SPI SPI_CTRL_REG1: SPI_BUSY (Bitfield-Mask: 0x01) */ -#define SPI_SPI_CTRL_REG1_SPI_9BIT_VAL_Pos (4UL) /*!< SPI SPI_CTRL_REG1: SPI_9BIT_VAL (Bit 4) */ -#define SPI_SPI_CTRL_REG1_SPI_9BIT_VAL_Msk (0x10UL) /*!< SPI SPI_CTRL_REG1: SPI_9BIT_VAL (Bitfield-Mask: 0x01) */ - - -/* ================================================================================ */ -/* ================ struct 'SPI2' Position & Mask ================ */ -/* ================================================================================ */ - - -/* ----------------------------- SPI2_SPI2_CTRL_REG ----------------------------- */ -#define SPI2_SPI2_CTRL_REG_SPI_ON_Pos (0UL) /*!< SPI2 SPI2_CTRL_REG: SPI_ON (Bit 0) */ -#define SPI2_SPI2_CTRL_REG_SPI_ON_Msk (0x1UL) /*!< SPI2 SPI2_CTRL_REG: SPI_ON (Bitfield-Mask: 0x01) */ -#define SPI2_SPI2_CTRL_REG_SPI_PHA_Pos (1UL) /*!< SPI2 SPI2_CTRL_REG: SPI_PHA (Bit 1) */ -#define SPI2_SPI2_CTRL_REG_SPI_PHA_Msk (0x2UL) /*!< SPI2 SPI2_CTRL_REG: SPI_PHA (Bitfield-Mask: 0x01) */ -#define SPI2_SPI2_CTRL_REG_SPI_POL_Pos (2UL) /*!< SPI2 SPI2_CTRL_REG: SPI_POL (Bit 2) */ -#define SPI2_SPI2_CTRL_REG_SPI_POL_Msk (0x4UL) /*!< SPI2 SPI2_CTRL_REG: SPI_POL (Bitfield-Mask: 0x01) */ -#define SPI2_SPI2_CTRL_REG_SPI_CLK_Pos (3UL) /*!< SPI2 SPI2_CTRL_REG: SPI_CLK (Bit 3) */ -#define SPI2_SPI2_CTRL_REG_SPI_CLK_Msk (0x18UL) /*!< SPI2 SPI2_CTRL_REG: SPI_CLK (Bitfield-Mask: 0x03) */ -#define SPI2_SPI2_CTRL_REG_SPI_DO_Pos (5UL) /*!< SPI2 SPI2_CTRL_REG: SPI_DO (Bit 5) */ -#define SPI2_SPI2_CTRL_REG_SPI_DO_Msk (0x20UL) /*!< SPI2 SPI2_CTRL_REG: SPI_DO (Bitfield-Mask: 0x01) */ -#define SPI2_SPI2_CTRL_REG_SPI_SMN_Pos (6UL) /*!< SPI2 SPI2_CTRL_REG: SPI_SMN (Bit 6) */ -#define SPI2_SPI2_CTRL_REG_SPI_SMN_Msk (0x40UL) /*!< SPI2 SPI2_CTRL_REG: SPI_SMN (Bitfield-Mask: 0x01) */ -#define SPI2_SPI2_CTRL_REG_SPI_WORD_Pos (7UL) /*!< SPI2 SPI2_CTRL_REG: SPI_WORD (Bit 7) */ -#define SPI2_SPI2_CTRL_REG_SPI_WORD_Msk (0x180UL) /*!< SPI2 SPI2_CTRL_REG: SPI_WORD (Bitfield-Mask: 0x03) */ -#define SPI2_SPI2_CTRL_REG_SPI_RST_Pos (9UL) /*!< SPI2 SPI2_CTRL_REG: SPI_RST (Bit 9) */ -#define SPI2_SPI2_CTRL_REG_SPI_RST_Msk (0x200UL) /*!< SPI2 SPI2_CTRL_REG: SPI_RST (Bitfield-Mask: 0x01) */ -#define SPI2_SPI2_CTRL_REG_SPI_FORCE_DO_Pos (10UL) /*!< SPI2 SPI2_CTRL_REG: SPI_FORCE_DO (Bit 10) */ -#define SPI2_SPI2_CTRL_REG_SPI_FORCE_DO_Msk (0x400UL) /*!< SPI2 SPI2_CTRL_REG: SPI_FORCE_DO (Bitfield-Mask: 0x01) */ -#define SPI2_SPI2_CTRL_REG_SPI_TXH_Pos (11UL) /*!< SPI2 SPI2_CTRL_REG: SPI_TXH (Bit 11) */ -#define SPI2_SPI2_CTRL_REG_SPI_TXH_Msk (0x800UL) /*!< SPI2 SPI2_CTRL_REG: SPI_TXH (Bitfield-Mask: 0x01) */ -#define SPI2_SPI2_CTRL_REG_SPI_DI_Pos (12UL) /*!< SPI2 SPI2_CTRL_REG: SPI_DI (Bit 12) */ -#define SPI2_SPI2_CTRL_REG_SPI_DI_Msk (0x1000UL) /*!< SPI2 SPI2_CTRL_REG: SPI_DI (Bitfield-Mask: 0x01) */ -#define SPI2_SPI2_CTRL_REG_SPI_INT_BIT_Pos (13UL) /*!< SPI2 SPI2_CTRL_REG: SPI_INT_BIT (Bit 13) */ -#define SPI2_SPI2_CTRL_REG_SPI_INT_BIT_Msk (0x2000UL) /*!< SPI2 SPI2_CTRL_REG: SPI_INT_BIT (Bitfield-Mask: 0x01) */ -#define SPI2_SPI2_CTRL_REG_SPI_MINT_Pos (14UL) /*!< SPI2 SPI2_CTRL_REG: SPI_MINT (Bit 14) */ -#define SPI2_SPI2_CTRL_REG_SPI_MINT_Msk (0x4000UL) /*!< SPI2 SPI2_CTRL_REG: SPI_MINT (Bitfield-Mask: 0x01) */ -#define SPI2_SPI2_CTRL_REG_SPI_EN_CTRL_Pos (15UL) /*!< SPI2 SPI2_CTRL_REG: SPI_EN_CTRL (Bit 15) */ -#define SPI2_SPI2_CTRL_REG_SPI_EN_CTRL_Msk (0x8000UL) /*!< SPI2 SPI2_CTRL_REG: SPI_EN_CTRL (Bitfield-Mask: 0x01) */ - -/* ---------------------------- SPI2_SPI2_RX_TX_REG0 ---------------------------- */ -#define SPI2_SPI2_RX_TX_REG0_SPI_DATA0_Pos (0UL) /*!< SPI2 SPI2_RX_TX_REG0: SPI_DATA0 (Bit 0) */ -#define SPI2_SPI2_RX_TX_REG0_SPI_DATA0_Msk (0xffffUL) /*!< SPI2 SPI2_RX_TX_REG0: SPI_DATA0 (Bitfield-Mask: 0xffff) */ - -/* ---------------------------- SPI2_SPI2_RX_TX_REG1 ---------------------------- */ -#define SPI2_SPI2_RX_TX_REG1_SPI_DATA1_Pos (0UL) /*!< SPI2 SPI2_RX_TX_REG1: SPI_DATA1 (Bit 0) */ -#define SPI2_SPI2_RX_TX_REG1_SPI_DATA1_Msk (0xffffUL) /*!< SPI2 SPI2_RX_TX_REG1: SPI_DATA1 (Bitfield-Mask: 0xffff) */ - -/* --------------------------- SPI2_SPI2_CLEAR_INT_REG -------------------------- */ -#define SPI2_SPI2_CLEAR_INT_REG_SPI_CLEAR_INT_Pos (0UL) /*!< SPI2 SPI2_CLEAR_INT_REG: SPI_CLEAR_INT (Bit 0) */ -#define SPI2_SPI2_CLEAR_INT_REG_SPI_CLEAR_INT_Msk (0xffffUL) /*!< SPI2 SPI2_CLEAR_INT_REG: SPI_CLEAR_INT (Bitfield-Mask: 0xffff) */ - -/* ----------------------------- SPI2_SPI2_CTRL_REG1 ---------------------------- */ -#define SPI2_SPI2_CTRL_REG1_SPI_FIFO_MODE_Pos (0UL) /*!< SPI2 SPI2_CTRL_REG1: SPI_FIFO_MODE (Bit 0) */ -#define SPI2_SPI2_CTRL_REG1_SPI_FIFO_MODE_Msk (0x3UL) /*!< SPI2 SPI2_CTRL_REG1: SPI_FIFO_MODE (Bitfield-Mask: 0x03) */ -#define SPI2_SPI2_CTRL_REG1_SPI_PRIORITY_Pos (2UL) /*!< SPI2 SPI2_CTRL_REG1: SPI_PRIORITY (Bit 2) */ -#define SPI2_SPI2_CTRL_REG1_SPI_PRIORITY_Msk (0x4UL) /*!< SPI2 SPI2_CTRL_REG1: SPI_PRIORITY (Bitfield-Mask: 0x01) */ -#define SPI2_SPI2_CTRL_REG1_SPI_BUSY_Pos (3UL) /*!< SPI2 SPI2_CTRL_REG1: SPI_BUSY (Bit 3) */ -#define SPI2_SPI2_CTRL_REG1_SPI_BUSY_Msk (0x8UL) /*!< SPI2 SPI2_CTRL_REG1: SPI_BUSY (Bitfield-Mask: 0x01) */ -#define SPI2_SPI2_CTRL_REG1_SPI_9BIT_VAL_Pos (4UL) /*!< SPI2 SPI2_CTRL_REG1: SPI_9BIT_VAL (Bit 4) */ -#define SPI2_SPI2_CTRL_REG1_SPI_9BIT_VAL_Msk (0x10UL) /*!< SPI2 SPI2_CTRL_REG1: SPI_9BIT_VAL (Bitfield-Mask: 0x01) */ - - -/* ================================================================================ */ -/* ================ struct 'TIMER1' Position & Mask ================ */ -/* ================================================================================ */ - - -/* --------------------------- TIMER1_CAPTIM_CTRL_REG --------------------------- */ -#define TIMER1_CAPTIM_CTRL_REG_CAPTIM_EN_Pos (0UL) /*!< TIMER1 CAPTIM_CTRL_REG: CAPTIM_EN (Bit 0) */ -#define TIMER1_CAPTIM_CTRL_REG_CAPTIM_EN_Msk (0x1UL) /*!< TIMER1 CAPTIM_CTRL_REG: CAPTIM_EN (Bitfield-Mask: 0x01) */ -#define TIMER1_CAPTIM_CTRL_REG_CAPTIM_ONESHOT_MODE_EN_Pos (1UL) /*!< TIMER1 CAPTIM_CTRL_REG: CAPTIM_ONESHOT_MODE_EN (Bit 1) */ -#define TIMER1_CAPTIM_CTRL_REG_CAPTIM_ONESHOT_MODE_EN_Msk (0x2UL) /*!< TIMER1 CAPTIM_CTRL_REG: CAPTIM_ONESHOT_MODE_EN (Bitfield-Mask: 0x01) */ -#define TIMER1_CAPTIM_CTRL_REG_CAPTIM_COUNT_DOWN_EN_Pos (2UL) /*!< TIMER1 CAPTIM_CTRL_REG: CAPTIM_COUNT_DOWN_EN (Bit 2) */ -#define TIMER1_CAPTIM_CTRL_REG_CAPTIM_COUNT_DOWN_EN_Msk (0x4UL) /*!< TIMER1 CAPTIM_CTRL_REG: CAPTIM_COUNT_DOWN_EN (Bitfield-Mask: 0x01) */ -#define TIMER1_CAPTIM_CTRL_REG_CAPTIM_IN1_EVENT_FALL_EN_Pos (3UL) /*!< TIMER1 CAPTIM_CTRL_REG: CAPTIM_IN1_EVENT_FALL_EN (Bit 3) */ -#define TIMER1_CAPTIM_CTRL_REG_CAPTIM_IN1_EVENT_FALL_EN_Msk (0x8UL) /*!< TIMER1 CAPTIM_CTRL_REG: CAPTIM_IN1_EVENT_FALL_EN (Bitfield-Mask: 0x01) */ -#define TIMER1_CAPTIM_CTRL_REG_CAPTIM_IN2_EVENT_FALL_EN_Pos (4UL) /*!< TIMER1 CAPTIM_CTRL_REG: CAPTIM_IN2_EVENT_FALL_EN (Bit 4) */ -#define TIMER1_CAPTIM_CTRL_REG_CAPTIM_IN2_EVENT_FALL_EN_Msk (0x10UL) /*!< TIMER1 CAPTIM_CTRL_REG: CAPTIM_IN2_EVENT_FALL_EN (Bitfield-Mask: 0x01) */ -#define TIMER1_CAPTIM_CTRL_REG_CAPTIM_IRQ_EN_Pos (5UL) /*!< TIMER1 CAPTIM_CTRL_REG: CAPTIM_IRQ_EN (Bit 5) */ -#define TIMER1_CAPTIM_CTRL_REG_CAPTIM_IRQ_EN_Msk (0x20UL) /*!< TIMER1 CAPTIM_CTRL_REG: CAPTIM_IRQ_EN (Bitfield-Mask: 0x01) */ -#define TIMER1_CAPTIM_CTRL_REG_CAPTIM_FREE_RUN_MODE_EN_Pos (6UL) /*!< TIMER1 CAPTIM_CTRL_REG: CAPTIM_FREE_RUN_MODE_EN (Bit 6) */ -#define TIMER1_CAPTIM_CTRL_REG_CAPTIM_FREE_RUN_MODE_EN_Msk (0x40UL) /*!< TIMER1 CAPTIM_CTRL_REG: CAPTIM_FREE_RUN_MODE_EN (Bitfield-Mask: 0x01) */ -#define TIMER1_CAPTIM_CTRL_REG_CAPTIM_SYS_CLK_EN_Pos (7UL) /*!< TIMER1 CAPTIM_CTRL_REG: CAPTIM_SYS_CLK_EN (Bit 7) */ -#define TIMER1_CAPTIM_CTRL_REG_CAPTIM_SYS_CLK_EN_Msk (0x80UL) /*!< TIMER1 CAPTIM_CTRL_REG: CAPTIM_SYS_CLK_EN (Bitfield-Mask: 0x01) */ - -/* ------------------------- TIMER1_CAPTIM_TIMER_VAL_REG ------------------------ */ -#define TIMER1_CAPTIM_TIMER_VAL_REG_CAPTIM_TIMER_VALUE_Pos (0UL) /*!< TIMER1 CAPTIM_TIMER_VAL_REG: CAPTIM_TIMER_VALUE (Bit 0) */ -#define TIMER1_CAPTIM_TIMER_VAL_REG_CAPTIM_TIMER_VALUE_Msk (0xffffUL) /*!< TIMER1 CAPTIM_TIMER_VAL_REG: CAPTIM_TIMER_VALUE (Bitfield-Mask: 0xffff) */ - -/* -------------------------- TIMER1_CAPTIM_STATUS_REG -------------------------- */ -#define TIMER1_CAPTIM_STATUS_REG_CAPTIM_IN1_STATE_Pos (0UL) /*!< TIMER1 CAPTIM_STATUS_REG: CAPTIM_IN1_STATE (Bit 0) */ -#define TIMER1_CAPTIM_STATUS_REG_CAPTIM_IN1_STATE_Msk (0x1UL) /*!< TIMER1 CAPTIM_STATUS_REG: CAPTIM_IN1_STATE (Bitfield-Mask: 0x01) */ -#define TIMER1_CAPTIM_STATUS_REG_CAPTIM_IN2_STATE_Pos (1UL) /*!< TIMER1 CAPTIM_STATUS_REG: CAPTIM_IN2_STATE (Bit 1) */ -#define TIMER1_CAPTIM_STATUS_REG_CAPTIM_IN2_STATE_Msk (0x2UL) /*!< TIMER1 CAPTIM_STATUS_REG: CAPTIM_IN2_STATE (Bitfield-Mask: 0x01) */ -#define TIMER1_CAPTIM_STATUS_REG_CAPTIM_ONESHOT_PHASE_Pos (2UL) /*!< TIMER1 CAPTIM_STATUS_REG: CAPTIM_ONESHOT_PHASE (Bit 2) */ -#define TIMER1_CAPTIM_STATUS_REG_CAPTIM_ONESHOT_PHASE_Msk (0xcUL) /*!< TIMER1 CAPTIM_STATUS_REG: CAPTIM_ONESHOT_PHASE (Bitfield-Mask: 0x03) */ - -/* ------------------------ TIMER1_CAPTIM_GPIO1_CONF_REG ------------------------ */ -#define TIMER1_CAPTIM_GPIO1_CONF_REG_CAPTIM_GPIO1_CONF_Pos (0UL) /*!< TIMER1 CAPTIM_GPIO1_CONF_REG: CAPTIM_GPIO1_CONF (Bit 0) */ -#define TIMER1_CAPTIM_GPIO1_CONF_REG_CAPTIM_GPIO1_CONF_Msk (0x3fUL) /*!< TIMER1 CAPTIM_GPIO1_CONF_REG: CAPTIM_GPIO1_CONF (Bitfield-Mask: 0x3f) */ - -/* ------------------------ TIMER1_CAPTIM_GPIO2_CONF_REG ------------------------ */ -#define TIMER1_CAPTIM_GPIO2_CONF_REG_CAPTIM_GPIO2_CONF_Pos (0UL) /*!< TIMER1 CAPTIM_GPIO2_CONF_REG: CAPTIM_GPIO2_CONF (Bit 0) */ -#define TIMER1_CAPTIM_GPIO2_CONF_REG_CAPTIM_GPIO2_CONF_Msk (0x3fUL) /*!< TIMER1 CAPTIM_GPIO2_CONF_REG: CAPTIM_GPIO2_CONF (Bitfield-Mask: 0x3f) */ - -/* -------------------------- TIMER1_CAPTIM_RELOAD_REG -------------------------- */ -#define TIMER1_CAPTIM_RELOAD_REG_CAPTIM_RELOAD_Pos (0UL) /*!< TIMER1 CAPTIM_RELOAD_REG: CAPTIM_RELOAD (Bit 0) */ -#define TIMER1_CAPTIM_RELOAD_REG_CAPTIM_RELOAD_Msk (0xffffUL) /*!< TIMER1 CAPTIM_RELOAD_REG: CAPTIM_RELOAD (Bitfield-Mask: 0xffff) */ - -/* ------------------------- TIMER1_CAPTIM_SHOTWIDTH_REG ------------------------ */ -#define TIMER1_CAPTIM_SHOTWIDTH_REG_CAPTIM_SHOTWIDTH_Pos (0UL) /*!< TIMER1 CAPTIM_SHOTWIDTH_REG: CAPTIM_SHOTWIDTH (Bit 0) */ -#define TIMER1_CAPTIM_SHOTWIDTH_REG_CAPTIM_SHOTWIDTH_Msk (0xffffUL) /*!< TIMER1 CAPTIM_SHOTWIDTH_REG: CAPTIM_SHOTWIDTH (Bitfield-Mask: 0xffff) */ - -/* ------------------------- TIMER1_CAPTIM_PRESCALER_REG ------------------------ */ -#define TIMER1_CAPTIM_PRESCALER_REG_CAPTIM_PRESCALER_Pos (0UL) /*!< TIMER1 CAPTIM_PRESCALER_REG: CAPTIM_PRESCALER (Bit 0) */ -#define TIMER1_CAPTIM_PRESCALER_REG_CAPTIM_PRESCALER_Msk (0xffffUL) /*!< TIMER1 CAPTIM_PRESCALER_REG: CAPTIM_PRESCALER (Bitfield-Mask: 0xffff) */ - -/* ----------------------- TIMER1_CAPTIM_CAPTURE_GPIO1_REG ---------------------- */ -#define TIMER1_CAPTIM_CAPTURE_GPIO1_REG_CAPTIM_CAPTURE_GPIO1_Pos (0UL) /*!< TIMER1 CAPTIM_CAPTURE_GPIO1_REG: CAPTIM_CAPTURE_GPIO1 (Bit 0) */ -#define TIMER1_CAPTIM_CAPTURE_GPIO1_REG_CAPTIM_CAPTURE_GPIO1_Msk (0xffffUL) /*!< TIMER1 CAPTIM_CAPTURE_GPIO1_REG: CAPTIM_CAPTURE_GPIO1 (Bitfield-Mask: 0xffff) */ - -/* ----------------------- TIMER1_CAPTIM_CAPTURE_GPIO2_REG ---------------------- */ -#define TIMER1_CAPTIM_CAPTURE_GPIO2_REG_CAPTIM_CAPTURE_GPIO2_Pos (0UL) /*!< TIMER1 CAPTIM_CAPTURE_GPIO2_REG: CAPTIM_CAPTURE_GPIO2 (Bit 0) */ -#define TIMER1_CAPTIM_CAPTURE_GPIO2_REG_CAPTIM_CAPTURE_GPIO2_Msk (0xffffUL) /*!< TIMER1 CAPTIM_CAPTURE_GPIO2_REG: CAPTIM_CAPTURE_GPIO2 (Bitfield-Mask: 0xffff) */ - -/* ----------------------- TIMER1_CAPTIM_PRESCALER_VAL_REG ---------------------- */ -#define TIMER1_CAPTIM_PRESCALER_VAL_REG_CAPTIM_PRESCALER_VAL_Pos (0UL) /*!< TIMER1 CAPTIM_PRESCALER_VAL_REG: CAPTIM_PRESCALER_VAL (Bit 0) */ -#define TIMER1_CAPTIM_PRESCALER_VAL_REG_CAPTIM_PRESCALER_VAL_Msk (0xffffUL) /*!< TIMER1 CAPTIM_PRESCALER_VAL_REG: CAPTIM_PRESCALER_VAL (Bitfield-Mask: 0xffff) */ - -/* ------------------------- TIMER1_CAPTIM_PWM_FREQ_REG ------------------------- */ -#define TIMER1_CAPTIM_PWM_FREQ_REG_CAPTIM_PWM_FREQ_Pos (0UL) /*!< TIMER1 CAPTIM_PWM_FREQ_REG: CAPTIM_PWM_FREQ (Bit 0) */ -#define TIMER1_CAPTIM_PWM_FREQ_REG_CAPTIM_PWM_FREQ_Msk (0xffffUL) /*!< TIMER1 CAPTIM_PWM_FREQ_REG: CAPTIM_PWM_FREQ (Bitfield-Mask: 0xffff) */ - -/* -------------------------- TIMER1_CAPTIM_PWM_DC_REG -------------------------- */ -#define TIMER1_CAPTIM_PWM_DC_REG_CAPTIM_PWM_DC_Pos (0UL) /*!< TIMER1 CAPTIM_PWM_DC_REG: CAPTIM_PWM_DC (Bit 0) */ -#define TIMER1_CAPTIM_PWM_DC_REG_CAPTIM_PWM_DC_Msk (0xffffUL) /*!< TIMER1 CAPTIM_PWM_DC_REG: CAPTIM_PWM_DC (Bitfield-Mask: 0xffff) */ - -/* ------------------------ TIMER1_CAPTIM_TIMER_HVAL_REG ------------------------ */ -#define TIMER1_CAPTIM_TIMER_HVAL_REG_CAPTIM_TIMER_HVALUE_Pos (0UL) /*!< TIMER1 CAPTIM_TIMER_HVAL_REG: CAPTIM_TIMER_HVALUE (Bit 0) */ -#define TIMER1_CAPTIM_TIMER_HVAL_REG_CAPTIM_TIMER_HVALUE_Msk (0xffffUL) /*!< TIMER1 CAPTIM_TIMER_HVAL_REG: CAPTIM_TIMER_HVALUE (Bitfield-Mask: 0xffff) */ - -/* ------------------------ TIMER1_CAPTIM_RELOAD_HIGH_REG ----------------------- */ -#define TIMER1_CAPTIM_RELOAD_HIGH_REG_CAPTIM_RELOAD_HIGH_Pos (0UL) /*!< TIMER1 CAPTIM_RELOAD_HIGH_REG: CAPTIM_RELOAD_HIGH (Bit 0) */ -#define TIMER1_CAPTIM_RELOAD_HIGH_REG_CAPTIM_RELOAD_HIGH_Msk (0xffffUL) /*!< TIMER1 CAPTIM_RELOAD_HIGH_REG: CAPTIM_RELOAD_HIGH (Bitfield-Mask: 0xffff) */ - -/* -------------------- TIMER1_CAPTIM_CAPTURE_HIGH_GPIO1_REG -------------------- */ -#define TIMER1_CAPTIM_CAPTURE_HIGH_GPIO1_REG_CAPTIM_CAPTURE_HIGH_GPIO1_Pos (0UL) /*!< TIMER1 CAPTIM_CAPTURE_HIGH_GPIO1_REG: CAPTIM_CAPTURE_HIGH_GPIO1 (Bit 0) */ -#define TIMER1_CAPTIM_CAPTURE_HIGH_GPIO1_REG_CAPTIM_CAPTURE_HIGH_GPIO1_Msk (0xffffUL) /*!< TIMER1 CAPTIM_CAPTURE_HIGH_GPIO1_REG: CAPTIM_CAPTURE_HIGH_GPIO1 (Bitfield-Mask: 0xffff) */ - -/* -------------------- TIMER1_CAPTIM_CAPTURE_HIGH_GPIO2_REG -------------------- */ -#define TIMER1_CAPTIM_CAPTURE_HIGH_GPIO2_REG_CAPTIM_CAPTURE_HIGH_GPIO2_Pos (0UL) /*!< TIMER1 CAPTIM_CAPTURE_HIGH_GPIO2_REG: CAPTIM_CAPTURE_HIGH_GPIO2 (Bit 0) */ -#define TIMER1_CAPTIM_CAPTURE_HIGH_GPIO2_REG_CAPTIM_CAPTURE_HIGH_GPIO2_Msk (0xffffUL) /*!< TIMER1 CAPTIM_CAPTURE_HIGH_GPIO2_REG: CAPTIM_CAPTURE_HIGH_GPIO2 (Bitfield-Mask: 0xffff) */ - -/* ---------------------- TIMER1_CAPTIM_SHOTWIDTH_HIGH_REG ---------------------- */ -#define TIMER1_CAPTIM_SHOTWIDTH_HIGH_REG_CAPTIM_SHOTWIDTH_HIGH_Pos (0UL) /*!< TIMER1 CAPTIM_SHOTWIDTH_HIGH_REG: CAPTIM_SHOTWIDTH_HIGH (Bit 0) */ -#define TIMER1_CAPTIM_SHOTWIDTH_HIGH_REG_CAPTIM_SHOTWIDTH_HIGH_Msk (0xffffUL) /*!< TIMER1 CAPTIM_SHOTWIDTH_HIGH_REG: CAPTIM_SHOTWIDTH_HIGH (Bitfield-Mask: 0xffff) */ - - -/* ================================================================================ */ -/* ================ struct 'TRNG' Position & Mask ================ */ -/* ================================================================================ */ - - -/* ----------------------------- TRNG_TRNG_CTRL_REG ----------------------------- */ -#define TRNG_TRNG_CTRL_REG_TRNG_ENABLE_Pos (0UL) /*!< TRNG TRNG_CTRL_REG: TRNG_ENABLE (Bit 0) */ -#define TRNG_TRNG_CTRL_REG_TRNG_ENABLE_Msk (0x1UL) /*!< TRNG TRNG_CTRL_REG: TRNG_ENABLE (Bitfield-Mask: 0x01) */ -#define TRNG_TRNG_CTRL_REG_TRNG_MODE_Pos (1UL) /*!< TRNG TRNG_CTRL_REG: TRNG_MODE (Bit 1) */ -#define TRNG_TRNG_CTRL_REG_TRNG_MODE_Msk (0x2UL) /*!< TRNG TRNG_CTRL_REG: TRNG_MODE (Bitfield-Mask: 0x01) */ - -/* ---------------------------- TRNG_TRNG_FIFOLVL_REG --------------------------- */ -#define TRNG_TRNG_FIFOLVL_REG_TRNG_FIFOLVL_Pos (0UL) /*!< TRNG TRNG_FIFOLVL_REG: TRNG_FIFOLVL (Bit 0) */ -#define TRNG_TRNG_FIFOLVL_REG_TRNG_FIFOLVL_Msk (0x1fUL) /*!< TRNG TRNG_FIFOLVL_REG: TRNG_FIFOLVL (Bitfield-Mask: 0x1f) */ -#define TRNG_TRNG_FIFOLVL_REG_TRNG_FIFOFULL_Pos (5UL) /*!< TRNG TRNG_FIFOLVL_REG: TRNG_FIFOFULL (Bit 5) */ -#define TRNG_TRNG_FIFOLVL_REG_TRNG_FIFOFULL_Msk (0x20UL) /*!< TRNG TRNG_FIFOLVL_REG: TRNG_FIFOFULL (Bitfield-Mask: 0x01) */ - -/* ------------------------------ TRNG_TRNG_VER_REG ----------------------------- */ -#define TRNG_TRNG_VER_REG_TRNG_SVN_Pos (0UL) /*!< TRNG TRNG_VER_REG: TRNG_SVN (Bit 0) */ -#define TRNG_TRNG_VER_REG_TRNG_SVN_Msk (0xffffUL) /*!< TRNG TRNG_VER_REG: TRNG_SVN (Bitfield-Mask: 0xffff) */ -#define TRNG_TRNG_VER_REG_TRNG_MIN_Pos (16UL) /*!< TRNG TRNG_VER_REG: TRNG_MIN (Bit 16) */ -#define TRNG_TRNG_VER_REG_TRNG_MIN_Msk (0xff0000UL) /*!< TRNG TRNG_VER_REG: TRNG_MIN (Bitfield-Mask: 0xff) */ -#define TRNG_TRNG_VER_REG_TRNG_MAJ_Pos (24UL) /*!< TRNG TRNG_VER_REG: TRNG_MAJ (Bit 24) */ -#define TRNG_TRNG_VER_REG_TRNG_MAJ_Msk (0xff000000UL) /*!< TRNG TRNG_VER_REG: TRNG_MAJ (Bitfield-Mask: 0xff) */ - - -/* ================================================================================ */ -/* ================ struct 'UART' Position & Mask ================ */ -/* ================================================================================ */ - - -/* -------------------------- UART_UART_RBR_THR_DLL_REG ------------------------- */ -#define UART_UART_RBR_THR_DLL_REG_RBR_THR_DLL_Pos (0UL) /*!< UART UART_RBR_THR_DLL_REG: RBR_THR_DLL (Bit 0) */ -#define UART_UART_RBR_THR_DLL_REG_RBR_THR_DLL_Msk (0xffUL) /*!< UART UART_RBR_THR_DLL_REG: RBR_THR_DLL (Bitfield-Mask: 0xff) */ - -/* ---------------------------- UART_UART_IER_DLH_REG --------------------------- */ -#define UART_UART_IER_DLH_REG_ERBFI_dlh0_Pos (0UL) /*!< UART UART_IER_DLH_REG: ERBFI_dlh0 (Bit 0) */ -#define UART_UART_IER_DLH_REG_ERBFI_dlh0_Msk (0x1UL) /*!< UART UART_IER_DLH_REG: ERBFI_dlh0 (Bitfield-Mask: 0x01) */ -#define UART_UART_IER_DLH_REG_ETBEI_dlh1_Pos (1UL) /*!< UART UART_IER_DLH_REG: ETBEI_dlh1 (Bit 1) */ -#define UART_UART_IER_DLH_REG_ETBEI_dlh1_Msk (0x2UL) /*!< UART UART_IER_DLH_REG: ETBEI_dlh1 (Bitfield-Mask: 0x01) */ -#define UART_UART_IER_DLH_REG_ELSI_dhl2_Pos (2UL) /*!< UART UART_IER_DLH_REG: ELSI_dhl2 (Bit 2) */ -#define UART_UART_IER_DLH_REG_ELSI_dhl2_Msk (0x4UL) /*!< UART UART_IER_DLH_REG: ELSI_dhl2 (Bitfield-Mask: 0x01) */ -#define UART_UART_IER_DLH_REG_EDSSI_dlh3_Pos (3UL) /*!< UART UART_IER_DLH_REG: EDSSI_dlh3 (Bit 3) */ -#define UART_UART_IER_DLH_REG_EDSSI_dlh3_Msk (0x8UL) /*!< UART UART_IER_DLH_REG: EDSSI_dlh3 (Bitfield-Mask: 0x01) */ -#define UART_UART_IER_DLH_REG_dlh6_4_Pos (4UL) /*!< UART UART_IER_DLH_REG: dlh6_4 (Bit 4) */ -#define UART_UART_IER_DLH_REG_dlh6_4_Msk (0x70UL) /*!< UART UART_IER_DLH_REG: dlh6_4 (Bitfield-Mask: 0x07) */ -#define UART_UART_IER_DLH_REG_PTIME_dlh7_Pos (7UL) /*!< UART UART_IER_DLH_REG: PTIME_dlh7 (Bit 7) */ -#define UART_UART_IER_DLH_REG_PTIME_dlh7_Msk (0x80UL) /*!< UART UART_IER_DLH_REG: PTIME_dlh7 (Bitfield-Mask: 0x01) */ - -/* ---------------------------- UART_UART_IIR_FCR_REG --------------------------- */ -#define UART_UART_IIR_FCR_REG_IIR_FCR_Pos (0UL) /*!< UART UART_IIR_FCR_REG: IIR_FCR (Bit 0) */ -#define UART_UART_IIR_FCR_REG_IIR_FCR_Msk (0xffffUL) /*!< UART UART_IIR_FCR_REG: IIR_FCR (Bitfield-Mask: 0xffff) */ - -/* ------------------------------ UART_UART_LCR_REG ----------------------------- */ -#define UART_UART_LCR_REG_UART_DLS_Pos (0UL) /*!< UART UART_LCR_REG: UART_DLS (Bit 0) */ -#define UART_UART_LCR_REG_UART_DLS_Msk (0x3UL) /*!< UART UART_LCR_REG: UART_DLS (Bitfield-Mask: 0x03) */ -#define UART_UART_LCR_REG_UART_STOP_Pos (2UL) /*!< UART UART_LCR_REG: UART_STOP (Bit 2) */ -#define UART_UART_LCR_REG_UART_STOP_Msk (0x4UL) /*!< UART UART_LCR_REG: UART_STOP (Bitfield-Mask: 0x01) */ -#define UART_UART_LCR_REG_UART_PEN_Pos (3UL) /*!< UART UART_LCR_REG: UART_PEN (Bit 3) */ -#define UART_UART_LCR_REG_UART_PEN_Msk (0x8UL) /*!< UART UART_LCR_REG: UART_PEN (Bitfield-Mask: 0x01) */ -#define UART_UART_LCR_REG_UART_EPS_Pos (4UL) /*!< UART UART_LCR_REG: UART_EPS (Bit 4) */ -#define UART_UART_LCR_REG_UART_EPS_Msk (0x10UL) /*!< UART UART_LCR_REG: UART_EPS (Bitfield-Mask: 0x01) */ -#define UART_UART_LCR_REG_UART_BC_Pos (6UL) /*!< UART UART_LCR_REG: UART_BC (Bit 6) */ -#define UART_UART_LCR_REG_UART_BC_Msk (0x40UL) /*!< UART UART_LCR_REG: UART_BC (Bitfield-Mask: 0x01) */ -#define UART_UART_LCR_REG_UART_DLAB_Pos (7UL) /*!< UART UART_LCR_REG: UART_DLAB (Bit 7) */ -#define UART_UART_LCR_REG_UART_DLAB_Msk (0x80UL) /*!< UART UART_LCR_REG: UART_DLAB (Bitfield-Mask: 0x01) */ - -/* ------------------------------ UART_UART_MCR_REG ----------------------------- */ -#define UART_UART_MCR_REG_UART_OUT1_Pos (2UL) /*!< UART UART_MCR_REG: UART_OUT1 (Bit 2) */ -#define UART_UART_MCR_REG_UART_OUT1_Msk (0x4UL) /*!< UART UART_MCR_REG: UART_OUT1 (Bitfield-Mask: 0x01) */ -#define UART_UART_MCR_REG_UART_OUT2_Pos (3UL) /*!< UART UART_MCR_REG: UART_OUT2 (Bit 3) */ -#define UART_UART_MCR_REG_UART_OUT2_Msk (0x8UL) /*!< UART UART_MCR_REG: UART_OUT2 (Bitfield-Mask: 0x01) */ -#define UART_UART_MCR_REG_UART_LB_Pos (4UL) /*!< UART UART_MCR_REG: UART_LB (Bit 4) */ -#define UART_UART_MCR_REG_UART_LB_Msk (0x10UL) /*!< UART UART_MCR_REG: UART_LB (Bitfield-Mask: 0x01) */ -#define UART_UART_MCR_REG_UART_SIRE_Pos (6UL) /*!< UART UART_MCR_REG: UART_SIRE (Bit 6) */ -#define UART_UART_MCR_REG_UART_SIRE_Msk (0x40UL) /*!< UART UART_MCR_REG: UART_SIRE (Bitfield-Mask: 0x01) */ - -/* ------------------------------ UART_UART_LSR_REG ----------------------------- */ -#define UART_UART_LSR_REG_UART_DR_Pos (0UL) /*!< UART UART_LSR_REG: UART_DR (Bit 0) */ -#define UART_UART_LSR_REG_UART_DR_Msk (0x1UL) /*!< UART UART_LSR_REG: UART_DR (Bitfield-Mask: 0x01) */ -#define UART_UART_LSR_REG_UART_OE_Pos (1UL) /*!< UART UART_LSR_REG: UART_OE (Bit 1) */ -#define UART_UART_LSR_REG_UART_OE_Msk (0x2UL) /*!< UART UART_LSR_REG: UART_OE (Bitfield-Mask: 0x01) */ -#define UART_UART_LSR_REG_UART_PE_Pos (2UL) /*!< UART UART_LSR_REG: UART_PE (Bit 2) */ -#define UART_UART_LSR_REG_UART_PE_Msk (0x4UL) /*!< UART UART_LSR_REG: UART_PE (Bitfield-Mask: 0x01) */ -#define UART_UART_LSR_REG_UART_FE_Pos (3UL) /*!< UART UART_LSR_REG: UART_FE (Bit 3) */ -#define UART_UART_LSR_REG_UART_FE_Msk (0x8UL) /*!< UART UART_LSR_REG: UART_FE (Bitfield-Mask: 0x01) */ -#define UART_UART_LSR_REG_UART_BI_Pos (4UL) /*!< UART UART_LSR_REG: UART_BI (Bit 4) */ -#define UART_UART_LSR_REG_UART_BI_Msk (0x10UL) /*!< UART UART_LSR_REG: UART_BI (Bitfield-Mask: 0x01) */ -#define UART_UART_LSR_REG_UART_THRE_Pos (5UL) /*!< UART UART_LSR_REG: UART_THRE (Bit 5) */ -#define UART_UART_LSR_REG_UART_THRE_Msk (0x20UL) /*!< UART UART_LSR_REG: UART_THRE (Bitfield-Mask: 0x01) */ -#define UART_UART_LSR_REG_UART_TEMT_Pos (6UL) /*!< UART UART_LSR_REG: UART_TEMT (Bit 6) */ -#define UART_UART_LSR_REG_UART_TEMT_Msk (0x40UL) /*!< UART UART_LSR_REG: UART_TEMT (Bitfield-Mask: 0x01) */ - -/* ------------------------------ UART_UART_SCR_REG ----------------------------- */ -#define UART_UART_SCR_REG_UART_SCRATCH_PAD_Pos (0UL) /*!< UART UART_SCR_REG: UART_SCRATCH_PAD (Bit 0) */ -#define UART_UART_SCR_REG_UART_SCRATCH_PAD_Msk (0xffUL) /*!< UART UART_SCR_REG: UART_SCRATCH_PAD (Bitfield-Mask: 0xff) */ - -/* ------------------------------ UART_UART_USR_REG ----------------------------- */ -#define UART_UART_USR_REG_UART_BUSY_Pos (0UL) /*!< UART UART_USR_REG: UART_BUSY (Bit 0) */ -#define UART_UART_USR_REG_UART_BUSY_Msk (0x1UL) /*!< UART UART_USR_REG: UART_BUSY (Bitfield-Mask: 0x01) */ - -/* ------------------------------ UART_UART_SRR_REG ----------------------------- */ -#define UART_UART_SRR_REG_UART_UR_Pos (0UL) /*!< UART UART_SRR_REG: UART_UR (Bit 0) */ -#define UART_UART_SRR_REG_UART_UR_Msk (0x1UL) /*!< UART UART_SRR_REG: UART_UR (Bitfield-Mask: 0x01) */ - -/* ----------------------------- UART_UART_SBCR_REG ----------------------------- */ -#define UART_UART_SBCR_REG_UART_SHADOW_BREAK_CONTROL_Pos (0UL) /*!< UART UART_SBCR_REG: UART_SHADOW_BREAK_CONTROL (Bit 0) */ -#define UART_UART_SBCR_REG_UART_SHADOW_BREAK_CONTROL_Msk (0x1UL) /*!< UART UART_SBCR_REG: UART_SHADOW_BREAK_CONTROL (Bitfield-Mask: 0x01) */ - -/* ----------------------------- UART_UART_DMASA_REG ---------------------------- */ -#define UART_UART_DMASA_REG_DMASA_Pos (0UL) /*!< UART UART_DMASA_REG: DMASA (Bit 0) */ -#define UART_UART_DMASA_REG_DMASA_Msk (0x1UL) /*!< UART UART_DMASA_REG: DMASA (Bitfield-Mask: 0x01) */ - -/* ------------------------------ UART_UART_DLF_REG ----------------------------- */ -#define UART_UART_DLF_REG_UART_DLF_Pos (0UL) /*!< UART UART_DLF_REG: UART_DLF (Bit 0) */ -#define UART_UART_DLF_REG_UART_DLF_Msk (0xfUL) /*!< UART UART_DLF_REG: UART_DLF (Bitfield-Mask: 0x0f) */ - -/* ------------------------------ UART_UART_CPR_REG ----------------------------- */ -#define UART_UART_CPR_REG_CPR_Pos (0UL) /*!< UART UART_CPR_REG: CPR (Bit 0) */ -#define UART_UART_CPR_REG_CPR_Msk (0xffffUL) /*!< UART UART_CPR_REG: CPR (Bitfield-Mask: 0xffff) */ - -/* ------------------------------ UART_UART_UCV_REG ----------------------------- */ -#define UART_UART_UCV_REG_UCV_Pos (0UL) /*!< UART UART_UCV_REG: UCV (Bit 0) */ -#define UART_UART_UCV_REG_UCV_Msk (0xffffUL) /*!< UART UART_UCV_REG: UCV (Bitfield-Mask: 0xffff) */ - -/* ------------------------------ UART_UART_CTR_REG ----------------------------- */ -#define UART_UART_CTR_REG_CTR_Pos (0UL) /*!< UART UART_CTR_REG: CTR (Bit 0) */ -#define UART_UART_CTR_REG_CTR_Msk (0xffffUL) /*!< UART UART_CTR_REG: CTR (Bitfield-Mask: 0xffff) */ - - -/* ================================================================================ */ -/* ================ struct 'UART2' Position & Mask ================ */ -/* ================================================================================ */ - - -/* ------------------------- UART2_UART2_RBR_THR_DLL_REG ------------------------ */ -#define UART2_UART2_RBR_THR_DLL_REG_RBR_THR_DLL_Pos (0UL) /*!< UART2 UART2_RBR_THR_DLL_REG: RBR_THR_DLL (Bit 0) */ -#define UART2_UART2_RBR_THR_DLL_REG_RBR_THR_DLL_Msk (0xffUL) /*!< UART2 UART2_RBR_THR_DLL_REG: RBR_THR_DLL (Bitfield-Mask: 0xff) */ - -/* --------------------------- UART2_UART2_IER_DLH_REG -------------------------- */ -#define UART2_UART2_IER_DLH_REG_ERBFI_dlh0_Pos (0UL) /*!< UART2 UART2_IER_DLH_REG: ERBFI_dlh0 (Bit 0) */ -#define UART2_UART2_IER_DLH_REG_ERBFI_dlh0_Msk (0x1UL) /*!< UART2 UART2_IER_DLH_REG: ERBFI_dlh0 (Bitfield-Mask: 0x01) */ -#define UART2_UART2_IER_DLH_REG_ETBEI_dlh1_Pos (1UL) /*!< UART2 UART2_IER_DLH_REG: ETBEI_dlh1 (Bit 1) */ -#define UART2_UART2_IER_DLH_REG_ETBEI_dlh1_Msk (0x2UL) /*!< UART2 UART2_IER_DLH_REG: ETBEI_dlh1 (Bitfield-Mask: 0x01) */ -#define UART2_UART2_IER_DLH_REG_ELSI_dhl2_Pos (2UL) /*!< UART2 UART2_IER_DLH_REG: ELSI_dhl2 (Bit 2) */ -#define UART2_UART2_IER_DLH_REG_ELSI_dhl2_Msk (0x4UL) /*!< UART2 UART2_IER_DLH_REG: ELSI_dhl2 (Bitfield-Mask: 0x01) */ -#define UART2_UART2_IER_DLH_REG_EDSSI_dlh3_Pos (3UL) /*!< UART2 UART2_IER_DLH_REG: EDSSI_dlh3 (Bit 3) */ -#define UART2_UART2_IER_DLH_REG_EDSSI_dlh3_Msk (0x8UL) /*!< UART2 UART2_IER_DLH_REG: EDSSI_dlh3 (Bitfield-Mask: 0x01) */ -#define UART2_UART2_IER_DLH_REG_dlh6_4_Pos (4UL) /*!< UART2 UART2_IER_DLH_REG: dlh6_4 (Bit 4) */ -#define UART2_UART2_IER_DLH_REG_dlh6_4_Msk (0x70UL) /*!< UART2 UART2_IER_DLH_REG: dlh6_4 (Bitfield-Mask: 0x07) */ -#define UART2_UART2_IER_DLH_REG_PTIME_dlh7_Pos (7UL) /*!< UART2 UART2_IER_DLH_REG: PTIME_dlh7 (Bit 7) */ -#define UART2_UART2_IER_DLH_REG_PTIME_dlh7_Msk (0x80UL) /*!< UART2 UART2_IER_DLH_REG: PTIME_dlh7 (Bitfield-Mask: 0x01) */ - -/* --------------------------- UART2_UART2_IIR_FCR_REG -------------------------- */ -#define UART2_UART2_IIR_FCR_REG_IIR_FCR_Pos (0UL) /*!< UART2 UART2_IIR_FCR_REG: IIR_FCR (Bit 0) */ -#define UART2_UART2_IIR_FCR_REG_IIR_FCR_Msk (0xffffUL) /*!< UART2 UART2_IIR_FCR_REG: IIR_FCR (Bitfield-Mask: 0xffff) */ - -/* ----------------------------- UART2_UART2_LCR_REG ---------------------------- */ -#define UART2_UART2_LCR_REG_UART_DLS_Pos (0UL) /*!< UART2 UART2_LCR_REG: UART_DLS (Bit 0) */ -#define UART2_UART2_LCR_REG_UART_DLS_Msk (0x3UL) /*!< UART2 UART2_LCR_REG: UART_DLS (Bitfield-Mask: 0x03) */ -#define UART2_UART2_LCR_REG_UART_STOP_Pos (2UL) /*!< UART2 UART2_LCR_REG: UART_STOP (Bit 2) */ -#define UART2_UART2_LCR_REG_UART_STOP_Msk (0x4UL) /*!< UART2 UART2_LCR_REG: UART_STOP (Bitfield-Mask: 0x01) */ -#define UART2_UART2_LCR_REG_UART_PEN_Pos (3UL) /*!< UART2 UART2_LCR_REG: UART_PEN (Bit 3) */ -#define UART2_UART2_LCR_REG_UART_PEN_Msk (0x8UL) /*!< UART2 UART2_LCR_REG: UART_PEN (Bitfield-Mask: 0x01) */ -#define UART2_UART2_LCR_REG_UART_EPS_Pos (4UL) /*!< UART2 UART2_LCR_REG: UART_EPS (Bit 4) */ -#define UART2_UART2_LCR_REG_UART_EPS_Msk (0x10UL) /*!< UART2 UART2_LCR_REG: UART_EPS (Bitfield-Mask: 0x01) */ -#define UART2_UART2_LCR_REG_UART_BC_Pos (6UL) /*!< UART2 UART2_LCR_REG: UART_BC (Bit 6) */ -#define UART2_UART2_LCR_REG_UART_BC_Msk (0x40UL) /*!< UART2 UART2_LCR_REG: UART_BC (Bitfield-Mask: 0x01) */ -#define UART2_UART2_LCR_REG_UART_DLAB_Pos (7UL) /*!< UART2 UART2_LCR_REG: UART_DLAB (Bit 7) */ -#define UART2_UART2_LCR_REG_UART_DLAB_Msk (0x80UL) /*!< UART2 UART2_LCR_REG: UART_DLAB (Bitfield-Mask: 0x01) */ - -/* ----------------------------- UART2_UART2_MCR_REG ---------------------------- */ -#define UART2_UART2_MCR_REG_UART_RTS_Pos (1UL) /*!< UART2 UART2_MCR_REG: UART_RTS (Bit 1) */ -#define UART2_UART2_MCR_REG_UART_RTS_Msk (0x2UL) /*!< UART2 UART2_MCR_REG: UART_RTS (Bitfield-Mask: 0x01) */ -#define UART2_UART2_MCR_REG_UART_OUT1_Pos (2UL) /*!< UART2 UART2_MCR_REG: UART_OUT1 (Bit 2) */ -#define UART2_UART2_MCR_REG_UART_OUT1_Msk (0x4UL) /*!< UART2 UART2_MCR_REG: UART_OUT1 (Bitfield-Mask: 0x01) */ -#define UART2_UART2_MCR_REG_UART_OUT2_Pos (3UL) /*!< UART2 UART2_MCR_REG: UART_OUT2 (Bit 3) */ -#define UART2_UART2_MCR_REG_UART_OUT2_Msk (0x8UL) /*!< UART2 UART2_MCR_REG: UART_OUT2 (Bitfield-Mask: 0x01) */ -#define UART2_UART2_MCR_REG_UART_LB_Pos (4UL) /*!< UART2 UART2_MCR_REG: UART_LB (Bit 4) */ -#define UART2_UART2_MCR_REG_UART_LB_Msk (0x10UL) /*!< UART2 UART2_MCR_REG: UART_LB (Bitfield-Mask: 0x01) */ -#define UART2_UART2_MCR_REG_UART_AFCE_Pos (5UL) /*!< UART2 UART2_MCR_REG: UART_AFCE (Bit 5) */ -#define UART2_UART2_MCR_REG_UART_AFCE_Msk (0x20UL) /*!< UART2 UART2_MCR_REG: UART_AFCE (Bitfield-Mask: 0x01) */ -#define UART2_UART2_MCR_REG_UART_SIRE_Pos (6UL) /*!< UART2 UART2_MCR_REG: UART_SIRE (Bit 6) */ -#define UART2_UART2_MCR_REG_UART_SIRE_Msk (0x40UL) /*!< UART2 UART2_MCR_REG: UART_SIRE (Bitfield-Mask: 0x01) */ - -/* ----------------------------- UART2_UART2_LSR_REG ---------------------------- */ -#define UART2_UART2_LSR_REG_UART_DR_Pos (0UL) /*!< UART2 UART2_LSR_REG: UART_DR (Bit 0) */ -#define UART2_UART2_LSR_REG_UART_DR_Msk (0x1UL) /*!< UART2 UART2_LSR_REG: UART_DR (Bitfield-Mask: 0x01) */ -#define UART2_UART2_LSR_REG_UART_OE_Pos (1UL) /*!< UART2 UART2_LSR_REG: UART_OE (Bit 1) */ -#define UART2_UART2_LSR_REG_UART_OE_Msk (0x2UL) /*!< UART2 UART2_LSR_REG: UART_OE (Bitfield-Mask: 0x01) */ -#define UART2_UART2_LSR_REG_UART_PE_Pos (2UL) /*!< UART2 UART2_LSR_REG: UART_PE (Bit 2) */ -#define UART2_UART2_LSR_REG_UART_PE_Msk (0x4UL) /*!< UART2 UART2_LSR_REG: UART_PE (Bitfield-Mask: 0x01) */ -#define UART2_UART2_LSR_REG_UART_FE_Pos (3UL) /*!< UART2 UART2_LSR_REG: UART_FE (Bit 3) */ -#define UART2_UART2_LSR_REG_UART_FE_Msk (0x8UL) /*!< UART2 UART2_LSR_REG: UART_FE (Bitfield-Mask: 0x01) */ -#define UART2_UART2_LSR_REG_UART_BI_Pos (4UL) /*!< UART2 UART2_LSR_REG: UART_BI (Bit 4) */ -#define UART2_UART2_LSR_REG_UART_BI_Msk (0x10UL) /*!< UART2 UART2_LSR_REG: UART_BI (Bitfield-Mask: 0x01) */ -#define UART2_UART2_LSR_REG_UART_THRE_Pos (5UL) /*!< UART2 UART2_LSR_REG: UART_THRE (Bit 5) */ -#define UART2_UART2_LSR_REG_UART_THRE_Msk (0x20UL) /*!< UART2 UART2_LSR_REG: UART_THRE (Bitfield-Mask: 0x01) */ -#define UART2_UART2_LSR_REG_UART_TEMT_Pos (6UL) /*!< UART2 UART2_LSR_REG: UART_TEMT (Bit 6) */ -#define UART2_UART2_LSR_REG_UART_TEMT_Msk (0x40UL) /*!< UART2 UART2_LSR_REG: UART_TEMT (Bitfield-Mask: 0x01) */ -#define UART2_UART2_LSR_REG_UART_RFE_Pos (7UL) /*!< UART2 UART2_LSR_REG: UART_RFE (Bit 7) */ -#define UART2_UART2_LSR_REG_UART_RFE_Msk (0x80UL) /*!< UART2 UART2_LSR_REG: UART_RFE (Bitfield-Mask: 0x01) */ - -/* ----------------------------- UART2_UART2_MSR_REG ---------------------------- */ -#define UART2_UART2_MSR_REG_UART_DCTS_Pos (0UL) /*!< UART2 UART2_MSR_REG: UART_DCTS (Bit 0) */ -#define UART2_UART2_MSR_REG_UART_DCTS_Msk (0x1UL) /*!< UART2 UART2_MSR_REG: UART_DCTS (Bitfield-Mask: 0x01) */ -#define UART2_UART2_MSR_REG_UART_CTS_Pos (4UL) /*!< UART2 UART2_MSR_REG: UART_CTS (Bit 4) */ -#define UART2_UART2_MSR_REG_UART_CTS_Msk (0x10UL) /*!< UART2 UART2_MSR_REG: UART_CTS (Bitfield-Mask: 0x01) */ - -/* ----------------------------- UART2_UART2_SCR_REG ---------------------------- */ -#define UART2_UART2_SCR_REG_UART_SCRATCH_PAD_Pos (0UL) /*!< UART2 UART2_SCR_REG: UART_SCRATCH_PAD (Bit 0) */ -#define UART2_UART2_SCR_REG_UART_SCRATCH_PAD_Msk (0xffUL) /*!< UART2 UART2_SCR_REG: UART_SCRATCH_PAD (Bitfield-Mask: 0xff) */ - -/* ------------------------- UART2_UART2_SRBR_STHR0_REG ------------------------- */ -#define UART2_UART2_SRBR_STHR0_REG_SRBR_STHRx_Pos (0UL) /*!< UART2 UART2_SRBR_STHR0_REG: SRBR_STHRx (Bit 0) */ -#define UART2_UART2_SRBR_STHR0_REG_SRBR_STHRx_Msk (0xffUL) /*!< UART2 UART2_SRBR_STHR0_REG: SRBR_STHRx (Bitfield-Mask: 0xff) */ - -/* ------------------------- UART2_UART2_SRBR_STHR1_REG ------------------------- */ -#define UART2_UART2_SRBR_STHR1_REG_SRBR_STHRx_Pos (0UL) /*!< UART2 UART2_SRBR_STHR1_REG: SRBR_STHRx (Bit 0) */ -#define UART2_UART2_SRBR_STHR1_REG_SRBR_STHRx_Msk (0xffUL) /*!< UART2 UART2_SRBR_STHR1_REG: SRBR_STHRx (Bitfield-Mask: 0xff) */ - -/* ------------------------- UART2_UART2_SRBR_STHR2_REG ------------------------- */ -#define UART2_UART2_SRBR_STHR2_REG_SRBR_STHRx_Pos (0UL) /*!< UART2 UART2_SRBR_STHR2_REG: SRBR_STHRx (Bit 0) */ -#define UART2_UART2_SRBR_STHR2_REG_SRBR_STHRx_Msk (0xffUL) /*!< UART2 UART2_SRBR_STHR2_REG: SRBR_STHRx (Bitfield-Mask: 0xff) */ - -/* ------------------------- UART2_UART2_SRBR_STHR3_REG ------------------------- */ -#define UART2_UART2_SRBR_STHR3_REG_SRBR_STHRx_Pos (0UL) /*!< UART2 UART2_SRBR_STHR3_REG: SRBR_STHRx (Bit 0) */ -#define UART2_UART2_SRBR_STHR3_REG_SRBR_STHRx_Msk (0xffUL) /*!< UART2 UART2_SRBR_STHR3_REG: SRBR_STHRx (Bitfield-Mask: 0xff) */ - -/* ------------------------- UART2_UART2_SRBR_STHR4_REG ------------------------- */ -#define UART2_UART2_SRBR_STHR4_REG_SRBR_STHRx_Pos (0UL) /*!< UART2 UART2_SRBR_STHR4_REG: SRBR_STHRx (Bit 0) */ -#define UART2_UART2_SRBR_STHR4_REG_SRBR_STHRx_Msk (0xffUL) /*!< UART2 UART2_SRBR_STHR4_REG: SRBR_STHRx (Bitfield-Mask: 0xff) */ - -/* ------------------------- UART2_UART2_SRBR_STHR5_REG ------------------------- */ -#define UART2_UART2_SRBR_STHR5_REG_SRBR_STHRx_Pos (0UL) /*!< UART2 UART2_SRBR_STHR5_REG: SRBR_STHRx (Bit 0) */ -#define UART2_UART2_SRBR_STHR5_REG_SRBR_STHRx_Msk (0xffUL) /*!< UART2 UART2_SRBR_STHR5_REG: SRBR_STHRx (Bitfield-Mask: 0xff) */ - -/* ------------------------- UART2_UART2_SRBR_STHR6_REG ------------------------- */ -#define UART2_UART2_SRBR_STHR6_REG_SRBR_STHRx_Pos (0UL) /*!< UART2 UART2_SRBR_STHR6_REG: SRBR_STHRx (Bit 0) */ -#define UART2_UART2_SRBR_STHR6_REG_SRBR_STHRx_Msk (0xffUL) /*!< UART2 UART2_SRBR_STHR6_REG: SRBR_STHRx (Bitfield-Mask: 0xff) */ - -/* ------------------------- UART2_UART2_SRBR_STHR7_REG ------------------------- */ -#define UART2_UART2_SRBR_STHR7_REG_SRBR_STHRx_Pos (0UL) /*!< UART2 UART2_SRBR_STHR7_REG: SRBR_STHRx (Bit 0) */ -#define UART2_UART2_SRBR_STHR7_REG_SRBR_STHRx_Msk (0xffUL) /*!< UART2 UART2_SRBR_STHR7_REG: SRBR_STHRx (Bitfield-Mask: 0xff) */ - -/* ------------------------- UART2_UART2_SRBR_STHR8_REG ------------------------- */ -#define UART2_UART2_SRBR_STHR8_REG_SRBR_STHRx_Pos (0UL) /*!< UART2 UART2_SRBR_STHR8_REG: SRBR_STHRx (Bit 0) */ -#define UART2_UART2_SRBR_STHR8_REG_SRBR_STHRx_Msk (0xffUL) /*!< UART2 UART2_SRBR_STHR8_REG: SRBR_STHRx (Bitfield-Mask: 0xff) */ - -/* ------------------------- UART2_UART2_SRBR_STHR9_REG ------------------------- */ -#define UART2_UART2_SRBR_STHR9_REG_SRBR_STHRx_Pos (0UL) /*!< UART2 UART2_SRBR_STHR9_REG: SRBR_STHRx (Bit 0) */ -#define UART2_UART2_SRBR_STHR9_REG_SRBR_STHRx_Msk (0xffUL) /*!< UART2 UART2_SRBR_STHR9_REG: SRBR_STHRx (Bitfield-Mask: 0xff) */ - -/* ------------------------- UART2_UART2_SRBR_STHR10_REG ------------------------ */ -#define UART2_UART2_SRBR_STHR10_REG_SRBR_STHRx_Pos (0UL) /*!< UART2 UART2_SRBR_STHR10_REG: SRBR_STHRx (Bit 0) */ -#define UART2_UART2_SRBR_STHR10_REG_SRBR_STHRx_Msk (0xffUL) /*!< UART2 UART2_SRBR_STHR10_REG: SRBR_STHRx (Bitfield-Mask: 0xff) */ - -/* ------------------------- UART2_UART2_SRBR_STHR11_REG ------------------------ */ -#define UART2_UART2_SRBR_STHR11_REG_SRBR_STHRx_Pos (0UL) /*!< UART2 UART2_SRBR_STHR11_REG: SRBR_STHRx (Bit 0) */ -#define UART2_UART2_SRBR_STHR11_REG_SRBR_STHRx_Msk (0xffUL) /*!< UART2 UART2_SRBR_STHR11_REG: SRBR_STHRx (Bitfield-Mask: 0xff) */ - -/* ------------------------- UART2_UART2_SRBR_STHR12_REG ------------------------ */ -#define UART2_UART2_SRBR_STHR12_REG_SRBR_STHRx_Pos (0UL) /*!< UART2 UART2_SRBR_STHR12_REG: SRBR_STHRx (Bit 0) */ -#define UART2_UART2_SRBR_STHR12_REG_SRBR_STHRx_Msk (0xffUL) /*!< UART2 UART2_SRBR_STHR12_REG: SRBR_STHRx (Bitfield-Mask: 0xff) */ - -/* ------------------------- UART2_UART2_SRBR_STHR13_REG ------------------------ */ -#define UART2_UART2_SRBR_STHR13_REG_SRBR_STHRx_Pos (0UL) /*!< UART2 UART2_SRBR_STHR13_REG: SRBR_STHRx (Bit 0) */ -#define UART2_UART2_SRBR_STHR13_REG_SRBR_STHRx_Msk (0xffUL) /*!< UART2 UART2_SRBR_STHR13_REG: SRBR_STHRx (Bitfield-Mask: 0xff) */ - -/* ------------------------- UART2_UART2_SRBR_STHR14_REG ------------------------ */ -#define UART2_UART2_SRBR_STHR14_REG_SRBR_STHRx_Pos (0UL) /*!< UART2 UART2_SRBR_STHR14_REG: SRBR_STHRx (Bit 0) */ -#define UART2_UART2_SRBR_STHR14_REG_SRBR_STHRx_Msk (0xffUL) /*!< UART2 UART2_SRBR_STHR14_REG: SRBR_STHRx (Bitfield-Mask: 0xff) */ - -/* ------------------------- UART2_UART2_SRBR_STHR15_REG ------------------------ */ -#define UART2_UART2_SRBR_STHR15_REG_SRBR_STHRx_Pos (0UL) /*!< UART2 UART2_SRBR_STHR15_REG: SRBR_STHRx (Bit 0) */ -#define UART2_UART2_SRBR_STHR15_REG_SRBR_STHRx_Msk (0xffUL) /*!< UART2 UART2_SRBR_STHR15_REG: SRBR_STHRx (Bitfield-Mask: 0xff) */ - -/* ----------------------------- UART2_UART2_FAR_REG ---------------------------- */ -#define UART2_UART2_FAR_REG_UART_FAR_Pos (0UL) /*!< UART2 UART2_FAR_REG: UART_FAR (Bit 0) */ -#define UART2_UART2_FAR_REG_UART_FAR_Msk (0x1UL) /*!< UART2 UART2_FAR_REG: UART_FAR (Bitfield-Mask: 0x01) */ - -/* ----------------------------- UART2_UART2_USR_REG ---------------------------- */ -#define UART2_UART2_USR_REG_UART_BUSY_Pos (0UL) /*!< UART2 UART2_USR_REG: UART_BUSY (Bit 0) */ -#define UART2_UART2_USR_REG_UART_BUSY_Msk (0x1UL) /*!< UART2 UART2_USR_REG: UART_BUSY (Bitfield-Mask: 0x01) */ -#define UART2_UART2_USR_REG_UART_TFNF_Pos (1UL) /*!< UART2 UART2_USR_REG: UART_TFNF (Bit 1) */ -#define UART2_UART2_USR_REG_UART_TFNF_Msk (0x2UL) /*!< UART2 UART2_USR_REG: UART_TFNF (Bitfield-Mask: 0x01) */ -#define UART2_UART2_USR_REG_UART_TFE_Pos (2UL) /*!< UART2 UART2_USR_REG: UART_TFE (Bit 2) */ -#define UART2_UART2_USR_REG_UART_TFE_Msk (0x4UL) /*!< UART2 UART2_USR_REG: UART_TFE (Bitfield-Mask: 0x01) */ -#define UART2_UART2_USR_REG_UART_RFNE_Pos (3UL) /*!< UART2 UART2_USR_REG: UART_RFNE (Bit 3) */ -#define UART2_UART2_USR_REG_UART_RFNE_Msk (0x8UL) /*!< UART2 UART2_USR_REG: UART_RFNE (Bitfield-Mask: 0x01) */ -#define UART2_UART2_USR_REG_UART_RFF_Pos (4UL) /*!< UART2 UART2_USR_REG: UART_RFF (Bit 4) */ -#define UART2_UART2_USR_REG_UART_RFF_Msk (0x10UL) /*!< UART2 UART2_USR_REG: UART_RFF (Bitfield-Mask: 0x01) */ - -/* ----------------------------- UART2_UART2_TFL_REG ---------------------------- */ -#define UART2_UART2_TFL_REG_UART_TRANSMIT_FIFO_LEVEL_Pos (0UL) /*!< UART2 UART2_TFL_REG: UART_TRANSMIT_FIFO_LEVEL (Bit 0) */ -#define UART2_UART2_TFL_REG_UART_TRANSMIT_FIFO_LEVEL_Msk (0xffffUL) /*!< UART2 UART2_TFL_REG: UART_TRANSMIT_FIFO_LEVEL (Bitfield-Mask: 0xffff) */ - -/* ----------------------------- UART2_UART2_RFL_REG ---------------------------- */ -#define UART2_UART2_RFL_REG_UART_RECEIVE_FIFO_LEVEL_Pos (0UL) /*!< UART2 UART2_RFL_REG: UART_RECEIVE_FIFO_LEVEL (Bit 0) */ -#define UART2_UART2_RFL_REG_UART_RECEIVE_FIFO_LEVEL_Msk (0xffffUL) /*!< UART2 UART2_RFL_REG: UART_RECEIVE_FIFO_LEVEL (Bitfield-Mask: 0xffff) */ - -/* ----------------------------- UART2_UART2_SRR_REG ---------------------------- */ -#define UART2_UART2_SRR_REG_UART_UR_Pos (0UL) /*!< UART2 UART2_SRR_REG: UART_UR (Bit 0) */ -#define UART2_UART2_SRR_REG_UART_UR_Msk (0x1UL) /*!< UART2 UART2_SRR_REG: UART_UR (Bitfield-Mask: 0x01) */ -#define UART2_UART2_SRR_REG_UART_RFR_Pos (1UL) /*!< UART2 UART2_SRR_REG: UART_RFR (Bit 1) */ -#define UART2_UART2_SRR_REG_UART_RFR_Msk (0x2UL) /*!< UART2 UART2_SRR_REG: UART_RFR (Bitfield-Mask: 0x01) */ -#define UART2_UART2_SRR_REG_UART_XFR_Pos (2UL) /*!< UART2 UART2_SRR_REG: UART_XFR (Bit 2) */ -#define UART2_UART2_SRR_REG_UART_XFR_Msk (0x4UL) /*!< UART2 UART2_SRR_REG: UART_XFR (Bitfield-Mask: 0x01) */ - -/* ---------------------------- UART2_UART2_SRTS_REG ---------------------------- */ -#define UART2_UART2_SRTS_REG_UART_SHADOW_REQUEST_TO_SEND_Pos (0UL) /*!< UART2 UART2_SRTS_REG: UART_SHADOW_REQUEST_TO_SEND (Bit 0) */ -#define UART2_UART2_SRTS_REG_UART_SHADOW_REQUEST_TO_SEND_Msk (0x1UL) /*!< UART2 UART2_SRTS_REG: UART_SHADOW_REQUEST_TO_SEND (Bitfield-Mask: 0x01) */ - -/* ---------------------------- UART2_UART2_SBCR_REG ---------------------------- */ -#define UART2_UART2_SBCR_REG_UART_SHADOW_BREAK_CONTROL_Pos (0UL) /*!< UART2 UART2_SBCR_REG: UART_SHADOW_BREAK_CONTROL (Bit 0) */ -#define UART2_UART2_SBCR_REG_UART_SHADOW_BREAK_CONTROL_Msk (0x1UL) /*!< UART2 UART2_SBCR_REG: UART_SHADOW_BREAK_CONTROL (Bitfield-Mask: 0x01) */ - -/* ---------------------------- UART2_UART2_SDMAM_REG --------------------------- */ -#define UART2_UART2_SDMAM_REG_UART_SHADOW_DMA_MODE_Pos (0UL) /*!< UART2 UART2_SDMAM_REG: UART_SHADOW_DMA_MODE (Bit 0) */ -#define UART2_UART2_SDMAM_REG_UART_SHADOW_DMA_MODE_Msk (0x1UL) /*!< UART2 UART2_SDMAM_REG: UART_SHADOW_DMA_MODE (Bitfield-Mask: 0x01) */ - -/* ----------------------------- UART2_UART2_SFE_REG ---------------------------- */ -#define UART2_UART2_SFE_REG_UART_SHADOW_FIFO_ENABLE_Pos (0UL) /*!< UART2 UART2_SFE_REG: UART_SHADOW_FIFO_ENABLE (Bit 0) */ -#define UART2_UART2_SFE_REG_UART_SHADOW_FIFO_ENABLE_Msk (0x1UL) /*!< UART2 UART2_SFE_REG: UART_SHADOW_FIFO_ENABLE (Bitfield-Mask: 0x01) */ - -/* ----------------------------- UART2_UART2_SRT_REG ---------------------------- */ -#define UART2_UART2_SRT_REG_UART_SHADOW_RCVR_TRIGGER_Pos (0UL) /*!< UART2 UART2_SRT_REG: UART_SHADOW_RCVR_TRIGGER (Bit 0) */ -#define UART2_UART2_SRT_REG_UART_SHADOW_RCVR_TRIGGER_Msk (0x3UL) /*!< UART2 UART2_SRT_REG: UART_SHADOW_RCVR_TRIGGER (Bitfield-Mask: 0x03) */ - -/* ---------------------------- UART2_UART2_STET_REG ---------------------------- */ -#define UART2_UART2_STET_REG_UART_SHADOW_TX_EMPTY_TRIGGER_Pos (0UL) /*!< UART2 UART2_STET_REG: UART_SHADOW_TX_EMPTY_TRIGGER (Bit 0) */ -#define UART2_UART2_STET_REG_UART_SHADOW_TX_EMPTY_TRIGGER_Msk (0x3UL) /*!< UART2 UART2_STET_REG: UART_SHADOW_TX_EMPTY_TRIGGER (Bitfield-Mask: 0x03) */ - -/* ----------------------------- UART2_UART2_HTX_REG ---------------------------- */ -#define UART2_UART2_HTX_REG_UART_HALT_TX_Pos (0UL) /*!< UART2 UART2_HTX_REG: UART_HALT_TX (Bit 0) */ -#define UART2_UART2_HTX_REG_UART_HALT_TX_Msk (0x1UL) /*!< UART2 UART2_HTX_REG: UART_HALT_TX (Bitfield-Mask: 0x01) */ - -/* ---------------------------- UART2_UART2_DMASA_REG --------------------------- */ -#define UART2_UART2_DMASA_REG_DMASA_Pos (0UL) /*!< UART2 UART2_DMASA_REG: DMASA (Bit 0) */ -#define UART2_UART2_DMASA_REG_DMASA_Msk (0x1UL) /*!< UART2 UART2_DMASA_REG: DMASA (Bitfield-Mask: 0x01) */ - -/* ----------------------------- UART2_UART2_DLF_REG ---------------------------- */ -#define UART2_UART2_DLF_REG_UART_DLF_Pos (0UL) /*!< UART2 UART2_DLF_REG: UART_DLF (Bit 0) */ -#define UART2_UART2_DLF_REG_UART_DLF_Msk (0xfUL) /*!< UART2 UART2_DLF_REG: UART_DLF (Bitfield-Mask: 0x0f) */ - -/* ----------------------------- UART2_UART2_CPR_REG ---------------------------- */ -#define UART2_UART2_CPR_REG_CPR_Pos (0UL) /*!< UART2 UART2_CPR_REG: CPR (Bit 0) */ -#define UART2_UART2_CPR_REG_CPR_Msk (0xffffUL) /*!< UART2 UART2_CPR_REG: CPR (Bitfield-Mask: 0xffff) */ - -/* ----------------------------- UART2_UART2_UCV_REG ---------------------------- */ -#define UART2_UART2_UCV_REG_UCV_Pos (0UL) /*!< UART2 UART2_UCV_REG: UCV (Bit 0) */ -#define UART2_UART2_UCV_REG_UCV_Msk (0xffffUL) /*!< UART2 UART2_UCV_REG: UCV (Bitfield-Mask: 0xffff) */ - -/* ----------------------------- UART2_UART2_CTR_REG ---------------------------- */ -#define UART2_UART2_CTR_REG_CTR_Pos (0UL) /*!< UART2 UART2_CTR_REG: CTR (Bit 0) */ -#define UART2_UART2_CTR_REG_CTR_Msk (0xffffUL) /*!< UART2 UART2_CTR_REG: CTR (Bitfield-Mask: 0xffff) */ - - -/* ================================================================================ */ -/* ================ struct 'USB' Position & Mask ================ */ -/* ================================================================================ */ - - -/* ------------------------------ USB_USB_MCTRL_REG ----------------------------- */ -#define USB_USB_MCTRL_REG_USBEN_Pos (0UL) /*!< USB USB_MCTRL_REG: USBEN (Bit 0) */ -#define USB_USB_MCTRL_REG_USBEN_Msk (0x1UL) /*!< USB USB_MCTRL_REG: USBEN (Bitfield-Mask: 0x01) */ -#define USB_USB_MCTRL_REG_USB_DBG_Pos (1UL) /*!< USB USB_MCTRL_REG: USB_DBG (Bit 1) */ -#define USB_USB_MCTRL_REG_USB_DBG_Msk (0x2UL) /*!< USB USB_MCTRL_REG: USB_DBG (Bitfield-Mask: 0x01) */ -#define USB_USB_MCTRL_REG_USB_NAT_Pos (3UL) /*!< USB USB_MCTRL_REG: USB_NAT (Bit 3) */ -#define USB_USB_MCTRL_REG_USB_NAT_Msk (0x8UL) /*!< USB USB_MCTRL_REG: USB_NAT (Bitfield-Mask: 0x01) */ -#define USB_USB_MCTRL_REG_LSMODE_Pos (4UL) /*!< USB USB_MCTRL_REG: LSMODE (Bit 4) */ -#define USB_USB_MCTRL_REG_LSMODE_Msk (0x10UL) /*!< USB USB_MCTRL_REG: LSMODE (Bitfield-Mask: 0x01) */ - -/* ----------------------------- USB_USB_XCVDIAG_REG ---------------------------- */ -#define USB_USB_XCVDIAG_REG_USB_XCV_TEST_Pos (0UL) /*!< USB USB_XCVDIAG_REG: USB_XCV_TEST (Bit 0) */ -#define USB_USB_XCVDIAG_REG_USB_XCV_TEST_Msk (0x1UL) /*!< USB USB_XCVDIAG_REG: USB_XCV_TEST (Bitfield-Mask: 0x01) */ -#define USB_USB_XCVDIAG_REG_USB_XCV_TXp_Pos (1UL) /*!< USB USB_XCVDIAG_REG: USB_XCV_TXp (Bit 1) */ -#define USB_USB_XCVDIAG_REG_USB_XCV_TXp_Msk (0x2UL) /*!< USB USB_XCVDIAG_REG: USB_XCV_TXp (Bitfield-Mask: 0x01) */ -#define USB_USB_XCVDIAG_REG_USB_XCV_TXn_Pos (2UL) /*!< USB USB_XCVDIAG_REG: USB_XCV_TXn (Bit 2) */ -#define USB_USB_XCVDIAG_REG_USB_XCV_TXn_Msk (0x4UL) /*!< USB USB_XCVDIAG_REG: USB_XCV_TXn (Bitfield-Mask: 0x01) */ -#define USB_USB_XCVDIAG_REG_USB_XCV_TXEN_Pos (3UL) /*!< USB USB_XCVDIAG_REG: USB_XCV_TXEN (Bit 3) */ -#define USB_USB_XCVDIAG_REG_USB_XCV_TXEN_Msk (0x8UL) /*!< USB USB_XCVDIAG_REG: USB_XCV_TXEN (Bitfield-Mask: 0x01) */ -#define USB_USB_XCVDIAG_REG_USB_RCV_Pos (5UL) /*!< USB USB_XCVDIAG_REG: USB_RCV (Bit 5) */ -#define USB_USB_XCVDIAG_REG_USB_RCV_Msk (0x20UL) /*!< USB USB_XCVDIAG_REG: USB_RCV (Bitfield-Mask: 0x01) */ -#define USB_USB_XCVDIAG_REG_USB_VMIN_Pos (6UL) /*!< USB USB_XCVDIAG_REG: USB_VMIN (Bit 6) */ -#define USB_USB_XCVDIAG_REG_USB_VMIN_Msk (0x40UL) /*!< USB USB_XCVDIAG_REG: USB_VMIN (Bitfield-Mask: 0x01) */ -#define USB_USB_XCVDIAG_REG_USB_VPIN_Pos (7UL) /*!< USB USB_XCVDIAG_REG: USB_VPIN (Bit 7) */ -#define USB_USB_XCVDIAG_REG_USB_VPIN_Msk (0x80UL) /*!< USB USB_XCVDIAG_REG: USB_VPIN (Bitfield-Mask: 0x01) */ - -/* ------------------------------- USB_USB_TCR_REG ------------------------------ */ -#define USB_USB_TCR_REG_USB_CADJ_Pos (0UL) /*!< USB USB_TCR_REG: USB_CADJ (Bit 0) */ -#define USB_USB_TCR_REG_USB_CADJ_Msk (0x1fUL) /*!< USB USB_TCR_REG: USB_CADJ (Bitfield-Mask: 0x1f) */ -#define USB_USB_TCR_REG_USB_VADJ_Pos (5UL) /*!< USB USB_TCR_REG: USB_VADJ (Bit 5) */ -#define USB_USB_TCR_REG_USB_VADJ_Msk (0xe0UL) /*!< USB USB_TCR_REG: USB_VADJ (Bitfield-Mask: 0x07) */ - -/* ------------------------------- USB_USB_UTR_REG ------------------------------ */ -#define USB_USB_UTR_REG_USB_UTR_RES_Pos (0UL) /*!< USB USB_UTR_REG: USB_UTR_RES (Bit 0) */ -#define USB_USB_UTR_REG_USB_UTR_RES_Msk (0x1fUL) /*!< USB USB_UTR_REG: USB_UTR_RES (Bitfield-Mask: 0x1f) */ -#define USB_USB_UTR_REG_USB_SF_Pos (5UL) /*!< USB USB_UTR_REG: USB_SF (Bit 5) */ -#define USB_USB_UTR_REG_USB_SF_Msk (0x20UL) /*!< USB USB_UTR_REG: USB_SF (Bitfield-Mask: 0x01) */ -#define USB_USB_UTR_REG_USB_NCRC_Pos (6UL) /*!< USB USB_UTR_REG: USB_NCRC (Bit 6) */ -#define USB_USB_UTR_REG_USB_NCRC_Msk (0x40UL) /*!< USB USB_UTR_REG: USB_NCRC (Bitfield-Mask: 0x01) */ -#define USB_USB_UTR_REG_USB_DIAG_Pos (7UL) /*!< USB USB_UTR_REG: USB_DIAG (Bit 7) */ -#define USB_USB_UTR_REG_USB_DIAG_Msk (0x80UL) /*!< USB USB_UTR_REG: USB_DIAG (Bitfield-Mask: 0x01) */ - -/* ------------------------------- USB_USB_FAR_REG ------------------------------ */ -#define USB_USB_FAR_REG_USB_AD_Pos (0UL) /*!< USB USB_FAR_REG: USB_AD (Bit 0) */ -#define USB_USB_FAR_REG_USB_AD_Msk (0x7fUL) /*!< USB USB_FAR_REG: USB_AD (Bitfield-Mask: 0x7f) */ -#define USB_USB_FAR_REG_USB_AD_EN_Pos (7UL) /*!< USB USB_FAR_REG: USB_AD_EN (Bit 7) */ -#define USB_USB_FAR_REG_USB_AD_EN_Msk (0x80UL) /*!< USB USB_FAR_REG: USB_AD_EN (Bitfield-Mask: 0x01) */ - -/* ------------------------------ USB_USB_NFSR_REG ------------------------------ */ -#define USB_USB_NFSR_REG_USB_NFS_Pos (0UL) /*!< USB USB_NFSR_REG: USB_NFS (Bit 0) */ -#define USB_USB_NFSR_REG_USB_NFS_Msk (0x3UL) /*!< USB USB_NFSR_REG: USB_NFS (Bitfield-Mask: 0x03) */ - -/* ------------------------------ USB_USB_MAEV_REG ------------------------------ */ -#define USB_USB_MAEV_REG_USB_WARN_Pos (0UL) /*!< USB USB_MAEV_REG: USB_WARN (Bit 0) */ -#define USB_USB_MAEV_REG_USB_WARN_Msk (0x1UL) /*!< USB USB_MAEV_REG: USB_WARN (Bitfield-Mask: 0x01) */ -#define USB_USB_MAEV_REG_USB_ALT_Pos (1UL) /*!< USB USB_MAEV_REG: USB_ALT (Bit 1) */ -#define USB_USB_MAEV_REG_USB_ALT_Msk (0x2UL) /*!< USB USB_MAEV_REG: USB_ALT (Bitfield-Mask: 0x01) */ -#define USB_USB_MAEV_REG_USB_TX_EV_Pos (2UL) /*!< USB USB_MAEV_REG: USB_TX_EV (Bit 2) */ -#define USB_USB_MAEV_REG_USB_TX_EV_Msk (0x4UL) /*!< USB USB_MAEV_REG: USB_TX_EV (Bitfield-Mask: 0x01) */ -#define USB_USB_MAEV_REG_USB_FRAME_Pos (3UL) /*!< USB USB_MAEV_REG: USB_FRAME (Bit 3) */ -#define USB_USB_MAEV_REG_USB_FRAME_Msk (0x8UL) /*!< USB USB_MAEV_REG: USB_FRAME (Bitfield-Mask: 0x01) */ -#define USB_USB_MAEV_REG_USB_NAK_Pos (4UL) /*!< USB USB_MAEV_REG: USB_NAK (Bit 4) */ -#define USB_USB_MAEV_REG_USB_NAK_Msk (0x10UL) /*!< USB USB_MAEV_REG: USB_NAK (Bitfield-Mask: 0x01) */ -#define USB_USB_MAEV_REG_USB_ULD_Pos (5UL) /*!< USB USB_MAEV_REG: USB_ULD (Bit 5) */ -#define USB_USB_MAEV_REG_USB_ULD_Msk (0x20UL) /*!< USB USB_MAEV_REG: USB_ULD (Bitfield-Mask: 0x01) */ -#define USB_USB_MAEV_REG_USB_RX_EV_Pos (6UL) /*!< USB USB_MAEV_REG: USB_RX_EV (Bit 6) */ -#define USB_USB_MAEV_REG_USB_RX_EV_Msk (0x40UL) /*!< USB USB_MAEV_REG: USB_RX_EV (Bitfield-Mask: 0x01) */ -#define USB_USB_MAEV_REG_USB_INTR_Pos (7UL) /*!< USB USB_MAEV_REG: USB_INTR (Bit 7) */ -#define USB_USB_MAEV_REG_USB_INTR_Msk (0x80UL) /*!< USB USB_MAEV_REG: USB_INTR (Bitfield-Mask: 0x01) */ -#define USB_USB_MAEV_REG_USB_EP0_TX_Pos (8UL) /*!< USB USB_MAEV_REG: USB_EP0_TX (Bit 8) */ -#define USB_USB_MAEV_REG_USB_EP0_TX_Msk (0x100UL) /*!< USB USB_MAEV_REG: USB_EP0_TX (Bitfield-Mask: 0x01) */ -#define USB_USB_MAEV_REG_USB_EP0_RX_Pos (9UL) /*!< USB USB_MAEV_REG: USB_EP0_RX (Bit 9) */ -#define USB_USB_MAEV_REG_USB_EP0_RX_Msk (0x200UL) /*!< USB USB_MAEV_REG: USB_EP0_RX (Bitfield-Mask: 0x01) */ -#define USB_USB_MAEV_REG_USB_EP0_NAK_Pos (10UL) /*!< USB USB_MAEV_REG: USB_EP0_NAK (Bit 10) */ -#define USB_USB_MAEV_REG_USB_EP0_NAK_Msk (0x400UL) /*!< USB USB_MAEV_REG: USB_EP0_NAK (Bitfield-Mask: 0x01) */ -#define USB_USB_MAEV_REG_USB_CH_EV_Pos (11UL) /*!< USB USB_MAEV_REG: USB_CH_EV (Bit 11) */ -#define USB_USB_MAEV_REG_USB_CH_EV_Msk (0x800UL) /*!< USB USB_MAEV_REG: USB_CH_EV (Bitfield-Mask: 0x01) */ - -/* ------------------------------ USB_USB_MAMSK_REG ----------------------------- */ -#define USB_USB_MAMSK_REG_USB_M_WARN_Pos (0UL) /*!< USB USB_MAMSK_REG: USB_M_WARN (Bit 0) */ -#define USB_USB_MAMSK_REG_USB_M_WARN_Msk (0x1UL) /*!< USB USB_MAMSK_REG: USB_M_WARN (Bitfield-Mask: 0x01) */ -#define USB_USB_MAMSK_REG_USB_M_ALT_Pos (1UL) /*!< USB USB_MAMSK_REG: USB_M_ALT (Bit 1) */ -#define USB_USB_MAMSK_REG_USB_M_ALT_Msk (0x2UL) /*!< USB USB_MAMSK_REG: USB_M_ALT (Bitfield-Mask: 0x01) */ -#define USB_USB_MAMSK_REG_USB_M_TX_EV_Pos (2UL) /*!< USB USB_MAMSK_REG: USB_M_TX_EV (Bit 2) */ -#define USB_USB_MAMSK_REG_USB_M_TX_EV_Msk (0x4UL) /*!< USB USB_MAMSK_REG: USB_M_TX_EV (Bitfield-Mask: 0x01) */ -#define USB_USB_MAMSK_REG_USB_M_FRAME_Pos (3UL) /*!< USB USB_MAMSK_REG: USB_M_FRAME (Bit 3) */ -#define USB_USB_MAMSK_REG_USB_M_FRAME_Msk (0x8UL) /*!< USB USB_MAMSK_REG: USB_M_FRAME (Bitfield-Mask: 0x01) */ -#define USB_USB_MAMSK_REG_USB_M_NAK_Pos (4UL) /*!< USB USB_MAMSK_REG: USB_M_NAK (Bit 4) */ -#define USB_USB_MAMSK_REG_USB_M_NAK_Msk (0x10UL) /*!< USB USB_MAMSK_REG: USB_M_NAK (Bitfield-Mask: 0x01) */ -#define USB_USB_MAMSK_REG_USB_M_ULD_Pos (5UL) /*!< USB USB_MAMSK_REG: USB_M_ULD (Bit 5) */ -#define USB_USB_MAMSK_REG_USB_M_ULD_Msk (0x20UL) /*!< USB USB_MAMSK_REG: USB_M_ULD (Bitfield-Mask: 0x01) */ -#define USB_USB_MAMSK_REG_USB_M_RX_EV_Pos (6UL) /*!< USB USB_MAMSK_REG: USB_M_RX_EV (Bit 6) */ -#define USB_USB_MAMSK_REG_USB_M_RX_EV_Msk (0x40UL) /*!< USB USB_MAMSK_REG: USB_M_RX_EV (Bitfield-Mask: 0x01) */ -#define USB_USB_MAMSK_REG_USB_M_INTR_Pos (7UL) /*!< USB USB_MAMSK_REG: USB_M_INTR (Bit 7) */ -#define USB_USB_MAMSK_REG_USB_M_INTR_Msk (0x80UL) /*!< USB USB_MAMSK_REG: USB_M_INTR (Bitfield-Mask: 0x01) */ -#define USB_USB_MAMSK_REG_USB_M_EP0_TX_Pos (8UL) /*!< USB USB_MAMSK_REG: USB_M_EP0_TX (Bit 8) */ -#define USB_USB_MAMSK_REG_USB_M_EP0_TX_Msk (0x100UL) /*!< USB USB_MAMSK_REG: USB_M_EP0_TX (Bitfield-Mask: 0x01) */ -#define USB_USB_MAMSK_REG_USB_M_EP0_RX_Pos (9UL) /*!< USB USB_MAMSK_REG: USB_M_EP0_RX (Bit 9) */ -#define USB_USB_MAMSK_REG_USB_M_EP0_RX_Msk (0x200UL) /*!< USB USB_MAMSK_REG: USB_M_EP0_RX (Bitfield-Mask: 0x01) */ -#define USB_USB_MAMSK_REG_USB_M_EP0_NAK_Pos (10UL) /*!< USB USB_MAMSK_REG: USB_M_EP0_NAK (Bit 10) */ -#define USB_USB_MAMSK_REG_USB_M_EP0_NAK_Msk (0x400UL) /*!< USB USB_MAMSK_REG: USB_M_EP0_NAK (Bitfield-Mask: 0x01) */ -#define USB_USB_MAMSK_REG_USB_M_CH_EV_Pos (11UL) /*!< USB USB_MAMSK_REG: USB_M_CH_EV (Bit 11) */ -#define USB_USB_MAMSK_REG_USB_M_CH_EV_Msk (0x800UL) /*!< USB USB_MAMSK_REG: USB_M_CH_EV (Bitfield-Mask: 0x01) */ - -/* ------------------------------ USB_USB_ALTEV_REG ----------------------------- */ -#define USB_USB_ALTEV_REG_USB_EOP_Pos (3UL) /*!< USB USB_ALTEV_REG: USB_EOP (Bit 3) */ -#define USB_USB_ALTEV_REG_USB_EOP_Msk (0x8UL) /*!< USB USB_ALTEV_REG: USB_EOP (Bitfield-Mask: 0x01) */ -#define USB_USB_ALTEV_REG_USB_SD3_Pos (4UL) /*!< USB USB_ALTEV_REG: USB_SD3 (Bit 4) */ -#define USB_USB_ALTEV_REG_USB_SD3_Msk (0x10UL) /*!< USB USB_ALTEV_REG: USB_SD3 (Bitfield-Mask: 0x01) */ -#define USB_USB_ALTEV_REG_USB_SD5_Pos (5UL) /*!< USB USB_ALTEV_REG: USB_SD5 (Bit 5) */ -#define USB_USB_ALTEV_REG_USB_SD5_Msk (0x20UL) /*!< USB USB_ALTEV_REG: USB_SD5 (Bitfield-Mask: 0x01) */ -#define USB_USB_ALTEV_REG_USB_RESET_Pos (6UL) /*!< USB USB_ALTEV_REG: USB_RESET (Bit 6) */ -#define USB_USB_ALTEV_REG_USB_RESET_Msk (0x40UL) /*!< USB USB_ALTEV_REG: USB_RESET (Bitfield-Mask: 0x01) */ -#define USB_USB_ALTEV_REG_USB_RESUME_Pos (7UL) /*!< USB USB_ALTEV_REG: USB_RESUME (Bit 7) */ -#define USB_USB_ALTEV_REG_USB_RESUME_Msk (0x80UL) /*!< USB USB_ALTEV_REG: USB_RESUME (Bitfield-Mask: 0x01) */ - -/* ----------------------------- USB_USB_ALTMSK_REG ----------------------------- */ -#define USB_USB_ALTMSK_REG_USB_M_EOP_Pos (3UL) /*!< USB USB_ALTMSK_REG: USB_M_EOP (Bit 3) */ -#define USB_USB_ALTMSK_REG_USB_M_EOP_Msk (0x8UL) /*!< USB USB_ALTMSK_REG: USB_M_EOP (Bitfield-Mask: 0x01) */ -#define USB_USB_ALTMSK_REG_USB_M_SD3_Pos (4UL) /*!< USB USB_ALTMSK_REG: USB_M_SD3 (Bit 4) */ -#define USB_USB_ALTMSK_REG_USB_M_SD3_Msk (0x10UL) /*!< USB USB_ALTMSK_REG: USB_M_SD3 (Bitfield-Mask: 0x01) */ -#define USB_USB_ALTMSK_REG_USB_M_SD5_Pos (5UL) /*!< USB USB_ALTMSK_REG: USB_M_SD5 (Bit 5) */ -#define USB_USB_ALTMSK_REG_USB_M_SD5_Msk (0x20UL) /*!< USB USB_ALTMSK_REG: USB_M_SD5 (Bitfield-Mask: 0x01) */ -#define USB_USB_ALTMSK_REG_USB_M_RESET_Pos (6UL) /*!< USB USB_ALTMSK_REG: USB_M_RESET (Bit 6) */ -#define USB_USB_ALTMSK_REG_USB_M_RESET_Msk (0x40UL) /*!< USB USB_ALTMSK_REG: USB_M_RESET (Bitfield-Mask: 0x01) */ -#define USB_USB_ALTMSK_REG_USB_M_RESUME_Pos (7UL) /*!< USB USB_ALTMSK_REG: USB_M_RESUME (Bit 7) */ -#define USB_USB_ALTMSK_REG_USB_M_RESUME_Msk (0x80UL) /*!< USB USB_ALTMSK_REG: USB_M_RESUME (Bitfield-Mask: 0x01) */ - -/* ------------------------------ USB_USB_TXEV_REG ------------------------------ */ -#define USB_USB_TXEV_REG_USB_TXFIFO31_Pos (0UL) /*!< USB USB_TXEV_REG: USB_TXFIFO31 (Bit 0) */ -#define USB_USB_TXEV_REG_USB_TXFIFO31_Msk (0x7UL) /*!< USB USB_TXEV_REG: USB_TXFIFO31 (Bitfield-Mask: 0x07) */ -#define USB_USB_TXEV_REG_USB_TXUDRRN31_Pos (4UL) /*!< USB USB_TXEV_REG: USB_TXUDRRN31 (Bit 4) */ -#define USB_USB_TXEV_REG_USB_TXUDRRN31_Msk (0x70UL) /*!< USB USB_TXEV_REG: USB_TXUDRRN31 (Bitfield-Mask: 0x07) */ - -/* ------------------------------ USB_USB_TXMSK_REG ----------------------------- */ -#define USB_USB_TXMSK_REG_USB_M_TXFIFO31_Pos (0UL) /*!< USB USB_TXMSK_REG: USB_M_TXFIFO31 (Bit 0) */ -#define USB_USB_TXMSK_REG_USB_M_TXFIFO31_Msk (0x7UL) /*!< USB USB_TXMSK_REG: USB_M_TXFIFO31 (Bitfield-Mask: 0x07) */ -#define USB_USB_TXMSK_REG_USB_M_TXUDRRN31_Pos (4UL) /*!< USB USB_TXMSK_REG: USB_M_TXUDRRN31 (Bit 4) */ -#define USB_USB_TXMSK_REG_USB_M_TXUDRRN31_Msk (0x70UL) /*!< USB USB_TXMSK_REG: USB_M_TXUDRRN31 (Bitfield-Mask: 0x07) */ - -/* ------------------------------ USB_USB_RXEV_REG ------------------------------ */ -#define USB_USB_RXEV_REG_USB_RXFIFO31_Pos (0UL) /*!< USB USB_RXEV_REG: USB_RXFIFO31 (Bit 0) */ -#define USB_USB_RXEV_REG_USB_RXFIFO31_Msk (0x7UL) /*!< USB USB_RXEV_REG: USB_RXFIFO31 (Bitfield-Mask: 0x07) */ -#define USB_USB_RXEV_REG_USB_RXOVRRN31_Pos (4UL) /*!< USB USB_RXEV_REG: USB_RXOVRRN31 (Bit 4) */ -#define USB_USB_RXEV_REG_USB_RXOVRRN31_Msk (0x70UL) /*!< USB USB_RXEV_REG: USB_RXOVRRN31 (Bitfield-Mask: 0x07) */ - -/* ------------------------------ USB_USB_RXMSK_REG ----------------------------- */ -#define USB_USB_RXMSK_REG_USB_M_RXFIFO31_Pos (0UL) /*!< USB USB_RXMSK_REG: USB_M_RXFIFO31 (Bit 0) */ -#define USB_USB_RXMSK_REG_USB_M_RXFIFO31_Msk (0x7UL) /*!< USB USB_RXMSK_REG: USB_M_RXFIFO31 (Bitfield-Mask: 0x07) */ -#define USB_USB_RXMSK_REG_USB_M_RXOVRRN31_Pos (4UL) /*!< USB USB_RXMSK_REG: USB_M_RXOVRRN31 (Bit 4) */ -#define USB_USB_RXMSK_REG_USB_M_RXOVRRN31_Msk (0x70UL) /*!< USB USB_RXMSK_REG: USB_M_RXOVRRN31 (Bitfield-Mask: 0x07) */ - -/* ------------------------------ USB_USB_NAKEV_REG ----------------------------- */ -#define USB_USB_NAKEV_REG_USB_IN31_Pos (0UL) /*!< USB USB_NAKEV_REG: USB_IN31 (Bit 0) */ -#define USB_USB_NAKEV_REG_USB_IN31_Msk (0x7UL) /*!< USB USB_NAKEV_REG: USB_IN31 (Bitfield-Mask: 0x07) */ -#define USB_USB_NAKEV_REG_USB_OUT31_Pos (4UL) /*!< USB USB_NAKEV_REG: USB_OUT31 (Bit 4) */ -#define USB_USB_NAKEV_REG_USB_OUT31_Msk (0x70UL) /*!< USB USB_NAKEV_REG: USB_OUT31 (Bitfield-Mask: 0x07) */ - -/* ----------------------------- USB_USB_NAKMSK_REG ----------------------------- */ -#define USB_USB_NAKMSK_REG_USB_M_IN31_Pos (0UL) /*!< USB USB_NAKMSK_REG: USB_M_IN31 (Bit 0) */ -#define USB_USB_NAKMSK_REG_USB_M_IN31_Msk (0x7UL) /*!< USB USB_NAKMSK_REG: USB_M_IN31 (Bitfield-Mask: 0x07) */ -#define USB_USB_NAKMSK_REG_USB_M_OUT31_Pos (4UL) /*!< USB USB_NAKMSK_REG: USB_M_OUT31 (Bit 4) */ -#define USB_USB_NAKMSK_REG_USB_M_OUT31_Msk (0x70UL) /*!< USB USB_NAKMSK_REG: USB_M_OUT31 (Bitfield-Mask: 0x07) */ - -/* ------------------------------ USB_USB_FWEV_REG ------------------------------ */ -#define USB_USB_FWEV_REG_USB_TXWARN31_Pos (0UL) /*!< USB USB_FWEV_REG: USB_TXWARN31 (Bit 0) */ -#define USB_USB_FWEV_REG_USB_TXWARN31_Msk (0x7UL) /*!< USB USB_FWEV_REG: USB_TXWARN31 (Bitfield-Mask: 0x07) */ -#define USB_USB_FWEV_REG_USB_RXWARN31_Pos (4UL) /*!< USB USB_FWEV_REG: USB_RXWARN31 (Bit 4) */ -#define USB_USB_FWEV_REG_USB_RXWARN31_Msk (0x70UL) /*!< USB USB_FWEV_REG: USB_RXWARN31 (Bitfield-Mask: 0x07) */ - -/* ------------------------------ USB_USB_FWMSK_REG ----------------------------- */ -#define USB_USB_FWMSK_REG_USB_M_TXWARN31_Pos (0UL) /*!< USB USB_FWMSK_REG: USB_M_TXWARN31 (Bit 0) */ -#define USB_USB_FWMSK_REG_USB_M_TXWARN31_Msk (0x7UL) /*!< USB USB_FWMSK_REG: USB_M_TXWARN31 (Bitfield-Mask: 0x07) */ -#define USB_USB_FWMSK_REG_USB_M_RXWARN31_Pos (4UL) /*!< USB USB_FWMSK_REG: USB_M_RXWARN31 (Bit 4) */ -#define USB_USB_FWMSK_REG_USB_M_RXWARN31_Msk (0x70UL) /*!< USB USB_FWMSK_REG: USB_M_RXWARN31 (Bitfield-Mask: 0x07) */ - -/* ------------------------------- USB_USB_FNH_REG ------------------------------ */ -#define USB_USB_FNH_REG_USB_FN_10_8_Pos (0UL) /*!< USB USB_FNH_REG: USB_FN_10_8 (Bit 0) */ -#define USB_USB_FNH_REG_USB_FN_10_8_Msk (0x7UL) /*!< USB USB_FNH_REG: USB_FN_10_8 (Bitfield-Mask: 0x07) */ -#define USB_USB_FNH_REG_USB_RFC_Pos (5UL) /*!< USB USB_FNH_REG: USB_RFC (Bit 5) */ -#define USB_USB_FNH_REG_USB_RFC_Msk (0x20UL) /*!< USB USB_FNH_REG: USB_RFC (Bitfield-Mask: 0x01) */ -#define USB_USB_FNH_REG_USB_UL_Pos (6UL) /*!< USB USB_FNH_REG: USB_UL (Bit 6) */ -#define USB_USB_FNH_REG_USB_UL_Msk (0x40UL) /*!< USB USB_FNH_REG: USB_UL (Bitfield-Mask: 0x01) */ -#define USB_USB_FNH_REG_USB_MF_Pos (7UL) /*!< USB USB_FNH_REG: USB_MF (Bit 7) */ -#define USB_USB_FNH_REG_USB_MF_Msk (0x80UL) /*!< USB USB_FNH_REG: USB_MF (Bitfield-Mask: 0x01) */ - -/* ------------------------------- USB_USB_FNL_REG ------------------------------ */ -#define USB_USB_FNL_REG_USB_FN_Pos (0UL) /*!< USB USB_FNL_REG: USB_FN (Bit 0) */ -#define USB_USB_FNL_REG_USB_FN_Msk (0xffUL) /*!< USB USB_FNL_REG: USB_FN (Bitfield-Mask: 0xff) */ - -/* ----------------------------- USB_USB_UX20CDR_REG ---------------------------- */ -#define USB_USB_UX20CDR_REG_RPU_SSPROTEN_Pos (0UL) /*!< USB USB_UX20CDR_REG: RPU_SSPROTEN (Bit 0) */ -#define USB_USB_UX20CDR_REG_RPU_SSPROTEN_Msk (0x1UL) /*!< USB USB_UX20CDR_REG: RPU_SSPROTEN (Bitfield-Mask: 0x01) */ -#define USB_USB_UX20CDR_REG_RPU_RCDELAY_Pos (1UL) /*!< USB USB_UX20CDR_REG: RPU_RCDELAY (Bit 1) */ -#define USB_USB_UX20CDR_REG_RPU_RCDELAY_Msk (0x2UL) /*!< USB USB_UX20CDR_REG: RPU_RCDELAY (Bitfield-Mask: 0x01) */ -#define USB_USB_UX20CDR_REG_RPU_TEST_SW1DM_Pos (2UL) /*!< USB USB_UX20CDR_REG: RPU_TEST_SW1DM (Bit 2) */ -#define USB_USB_UX20CDR_REG_RPU_TEST_SW1DM_Msk (0x4UL) /*!< USB USB_UX20CDR_REG: RPU_TEST_SW1DM (Bitfield-Mask: 0x01) */ -#define USB_USB_UX20CDR_REG_RPU_TEST_EN_Pos (4UL) /*!< USB USB_UX20CDR_REG: RPU_TEST_EN (Bit 4) */ -#define USB_USB_UX20CDR_REG_RPU_TEST_EN_Msk (0x10UL) /*!< USB USB_UX20CDR_REG: RPU_TEST_EN (Bitfield-Mask: 0x01) */ -#define USB_USB_UX20CDR_REG_RPU_TEST_SW1_Pos (5UL) /*!< USB USB_UX20CDR_REG: RPU_TEST_SW1 (Bit 5) */ -#define USB_USB_UX20CDR_REG_RPU_TEST_SW1_Msk (0x20UL) /*!< USB USB_UX20CDR_REG: RPU_TEST_SW1 (Bitfield-Mask: 0x01) */ -#define USB_USB_UX20CDR_REG_RPU_TEST_SW2_Pos (6UL) /*!< USB USB_UX20CDR_REG: RPU_TEST_SW2 (Bit 6) */ -#define USB_USB_UX20CDR_REG_RPU_TEST_SW2_Msk (0x40UL) /*!< USB USB_UX20CDR_REG: RPU_TEST_SW2 (Bitfield-Mask: 0x01) */ -#define USB_USB_UX20CDR_REG_RPU_TEST7_Pos (7UL) /*!< USB USB_UX20CDR_REG: RPU_TEST7 (Bit 7) */ -#define USB_USB_UX20CDR_REG_RPU_TEST7_Msk (0x80UL) /*!< USB USB_UX20CDR_REG: RPU_TEST7 (Bitfield-Mask: 0x01) */ - -/* ------------------------------ USB_USB_EPC0_REG ------------------------------ */ -#define USB_USB_EPC0_REG_USB_EP_Pos (0UL) /*!< USB USB_EPC0_REG: USB_EP (Bit 0) */ -#define USB_USB_EPC0_REG_USB_EP_Msk (0xfUL) /*!< USB USB_EPC0_REG: USB_EP (Bitfield-Mask: 0x0f) */ -#define USB_USB_EPC0_REG_USB_DEF_Pos (6UL) /*!< USB USB_EPC0_REG: USB_DEF (Bit 6) */ -#define USB_USB_EPC0_REG_USB_DEF_Msk (0x40UL) /*!< USB USB_EPC0_REG: USB_DEF (Bitfield-Mask: 0x01) */ -#define USB_USB_EPC0_REG_USB_STALL_Pos (7UL) /*!< USB USB_EPC0_REG: USB_STALL (Bit 7) */ -#define USB_USB_EPC0_REG_USB_STALL_Msk (0x80UL) /*!< USB USB_EPC0_REG: USB_STALL (Bitfield-Mask: 0x01) */ - -/* ------------------------------ USB_USB_TXD0_REG ------------------------------ */ -#define USB_USB_TXD0_REG_USB_TXFD_Pos (0UL) /*!< USB USB_TXD0_REG: USB_TXFD (Bit 0) */ -#define USB_USB_TXD0_REG_USB_TXFD_Msk (0xffUL) /*!< USB USB_TXD0_REG: USB_TXFD (Bitfield-Mask: 0xff) */ - -/* ------------------------------ USB_USB_TXS0_REG ------------------------------ */ -#define USB_USB_TXS0_REG_USB_TCOUNT_Pos (0UL) /*!< USB USB_TXS0_REG: USB_TCOUNT (Bit 0) */ -#define USB_USB_TXS0_REG_USB_TCOUNT_Msk (0x1fUL) /*!< USB USB_TXS0_REG: USB_TCOUNT (Bitfield-Mask: 0x1f) */ -#define USB_USB_TXS0_REG_USB_TX_DONE_Pos (5UL) /*!< USB USB_TXS0_REG: USB_TX_DONE (Bit 5) */ -#define USB_USB_TXS0_REG_USB_TX_DONE_Msk (0x20UL) /*!< USB USB_TXS0_REG: USB_TX_DONE (Bitfield-Mask: 0x01) */ -#define USB_USB_TXS0_REG_USB_ACK_STAT_Pos (6UL) /*!< USB USB_TXS0_REG: USB_ACK_STAT (Bit 6) */ -#define USB_USB_TXS0_REG_USB_ACK_STAT_Msk (0x40UL) /*!< USB USB_TXS0_REG: USB_ACK_STAT (Bitfield-Mask: 0x01) */ - -/* ------------------------------ USB_USB_TXC0_REG ------------------------------ */ -#define USB_USB_TXC0_REG_USB_TX_EN_Pos (0UL) /*!< USB USB_TXC0_REG: USB_TX_EN (Bit 0) */ -#define USB_USB_TXC0_REG_USB_TX_EN_Msk (0x1UL) /*!< USB USB_TXC0_REG: USB_TX_EN (Bitfield-Mask: 0x01) */ -#define USB_USB_TXC0_REG_USB_TOGGLE_TX0_Pos (2UL) /*!< USB USB_TXC0_REG: USB_TOGGLE_TX0 (Bit 2) */ -#define USB_USB_TXC0_REG_USB_TOGGLE_TX0_Msk (0x4UL) /*!< USB USB_TXC0_REG: USB_TOGGLE_TX0 (Bitfield-Mask: 0x01) */ -#define USB_USB_TXC0_REG_USB_FLUSH_Pos (3UL) /*!< USB USB_TXC0_REG: USB_FLUSH (Bit 3) */ -#define USB_USB_TXC0_REG_USB_FLUSH_Msk (0x8UL) /*!< USB USB_TXC0_REG: USB_FLUSH (Bitfield-Mask: 0x01) */ -#define USB_USB_TXC0_REG_USB_IGN_IN_Pos (4UL) /*!< USB USB_TXC0_REG: USB_IGN_IN (Bit 4) */ -#define USB_USB_TXC0_REG_USB_IGN_IN_Msk (0x10UL) /*!< USB USB_TXC0_REG: USB_IGN_IN (Bitfield-Mask: 0x01) */ - -/* ----------------------------- USB_USB_EP0_NAK_REG ---------------------------- */ -#define USB_USB_EP0_NAK_REG_USB_EP0_INNAK_Pos (0UL) /*!< USB USB_EP0_NAK_REG: USB_EP0_INNAK (Bit 0) */ -#define USB_USB_EP0_NAK_REG_USB_EP0_INNAK_Msk (0x1UL) /*!< USB USB_EP0_NAK_REG: USB_EP0_INNAK (Bitfield-Mask: 0x01) */ -#define USB_USB_EP0_NAK_REG_USB_EP0_OUTNAK_Pos (1UL) /*!< USB USB_EP0_NAK_REG: USB_EP0_OUTNAK (Bit 1) */ -#define USB_USB_EP0_NAK_REG_USB_EP0_OUTNAK_Msk (0x2UL) /*!< USB USB_EP0_NAK_REG: USB_EP0_OUTNAK (Bitfield-Mask: 0x01) */ - -/* ------------------------------ USB_USB_RXD0_REG ------------------------------ */ -#define USB_USB_RXD0_REG_USB_RXFD_Pos (0UL) /*!< USB USB_RXD0_REG: USB_RXFD (Bit 0) */ -#define USB_USB_RXD0_REG_USB_RXFD_Msk (0xffUL) /*!< USB USB_RXD0_REG: USB_RXFD (Bitfield-Mask: 0xff) */ - -/* ------------------------------ USB_USB_RXS0_REG ------------------------------ */ -#define USB_USB_RXS0_REG_USB_RCOUNT_Pos (0UL) /*!< USB USB_RXS0_REG: USB_RCOUNT (Bit 0) */ -#define USB_USB_RXS0_REG_USB_RCOUNT_Msk (0xfUL) /*!< USB USB_RXS0_REG: USB_RCOUNT (Bitfield-Mask: 0x0f) */ -#define USB_USB_RXS0_REG_USB_RX_LAST_Pos (4UL) /*!< USB USB_RXS0_REG: USB_RX_LAST (Bit 4) */ -#define USB_USB_RXS0_REG_USB_RX_LAST_Msk (0x10UL) /*!< USB USB_RXS0_REG: USB_RX_LAST (Bitfield-Mask: 0x01) */ -#define USB_USB_RXS0_REG_USB_TOGGLE_RX0_Pos (5UL) /*!< USB USB_RXS0_REG: USB_TOGGLE_RX0 (Bit 5) */ -#define USB_USB_RXS0_REG_USB_TOGGLE_RX0_Msk (0x20UL) /*!< USB USB_RXS0_REG: USB_TOGGLE_RX0 (Bitfield-Mask: 0x01) */ -#define USB_USB_RXS0_REG_USB_SETUP_Pos (6UL) /*!< USB USB_RXS0_REG: USB_SETUP (Bit 6) */ -#define USB_USB_RXS0_REG_USB_SETUP_Msk (0x40UL) /*!< USB USB_RXS0_REG: USB_SETUP (Bitfield-Mask: 0x01) */ - -/* ------------------------------ USB_USB_RXC0_REG ------------------------------ */ -#define USB_USB_RXC0_REG_USB_RX_EN_Pos (0UL) /*!< USB USB_RXC0_REG: USB_RX_EN (Bit 0) */ -#define USB_USB_RXC0_REG_USB_RX_EN_Msk (0x1UL) /*!< USB USB_RXC0_REG: USB_RX_EN (Bitfield-Mask: 0x01) */ -#define USB_USB_RXC0_REG_USB_IGN_OUT_Pos (1UL) /*!< USB USB_RXC0_REG: USB_IGN_OUT (Bit 1) */ -#define USB_USB_RXC0_REG_USB_IGN_OUT_Msk (0x2UL) /*!< USB USB_RXC0_REG: USB_IGN_OUT (Bitfield-Mask: 0x01) */ -#define USB_USB_RXC0_REG_USB_IGN_SETUP_Pos (2UL) /*!< USB USB_RXC0_REG: USB_IGN_SETUP (Bit 2) */ -#define USB_USB_RXC0_REG_USB_IGN_SETUP_Msk (0x4UL) /*!< USB USB_RXC0_REG: USB_IGN_SETUP (Bitfield-Mask: 0x01) */ -#define USB_USB_RXC0_REG_USB_FLUSH_Pos (3UL) /*!< USB USB_RXC0_REG: USB_FLUSH (Bit 3) */ -#define USB_USB_RXC0_REG_USB_FLUSH_Msk (0x8UL) /*!< USB USB_RXC0_REG: USB_FLUSH (Bitfield-Mask: 0x01) */ - -/* ------------------------------ USB_USB_EPC1_REG ------------------------------ */ -#define USB_USB_EPC1_REG_USB_EP_Pos (0UL) /*!< USB USB_EPC1_REG: USB_EP (Bit 0) */ -#define USB_USB_EPC1_REG_USB_EP_Msk (0xfUL) /*!< USB USB_EPC1_REG: USB_EP (Bitfield-Mask: 0x0f) */ -#define USB_USB_EPC1_REG_USB_EP_EN_Pos (4UL) /*!< USB USB_EPC1_REG: USB_EP_EN (Bit 4) */ -#define USB_USB_EPC1_REG_USB_EP_EN_Msk (0x10UL) /*!< USB USB_EPC1_REG: USB_EP_EN (Bitfield-Mask: 0x01) */ -#define USB_USB_EPC1_REG_USB_ISO_Pos (5UL) /*!< USB USB_EPC1_REG: USB_ISO (Bit 5) */ -#define USB_USB_EPC1_REG_USB_ISO_Msk (0x20UL) /*!< USB USB_EPC1_REG: USB_ISO (Bitfield-Mask: 0x01) */ -#define USB_USB_EPC1_REG_USB_STALL_Pos (7UL) /*!< USB USB_EPC1_REG: USB_STALL (Bit 7) */ -#define USB_USB_EPC1_REG_USB_STALL_Msk (0x80UL) /*!< USB USB_EPC1_REG: USB_STALL (Bitfield-Mask: 0x01) */ - -/* ------------------------------ USB_USB_TXD1_REG ------------------------------ */ -#define USB_USB_TXD1_REG_USB_TXFD_Pos (0UL) /*!< USB USB_TXD1_REG: USB_TXFD (Bit 0) */ -#define USB_USB_TXD1_REG_USB_TXFD_Msk (0xffUL) /*!< USB USB_TXD1_REG: USB_TXFD (Bitfield-Mask: 0xff) */ - -/* ------------------------------ USB_USB_TXS1_REG ------------------------------ */ -#define USB_USB_TXS1_REG_USB_TCOUNT_Pos (0UL) /*!< USB USB_TXS1_REG: USB_TCOUNT (Bit 0) */ -#define USB_USB_TXS1_REG_USB_TCOUNT_Msk (0x1fUL) /*!< USB USB_TXS1_REG: USB_TCOUNT (Bitfield-Mask: 0x1f) */ -#define USB_USB_TXS1_REG_USB_TX_DONE_Pos (5UL) /*!< USB USB_TXS1_REG: USB_TX_DONE (Bit 5) */ -#define USB_USB_TXS1_REG_USB_TX_DONE_Msk (0x20UL) /*!< USB USB_TXS1_REG: USB_TX_DONE (Bitfield-Mask: 0x01) */ -#define USB_USB_TXS1_REG_USB_ACK_STAT_Pos (6UL) /*!< USB USB_TXS1_REG: USB_ACK_STAT (Bit 6) */ -#define USB_USB_TXS1_REG_USB_ACK_STAT_Msk (0x40UL) /*!< USB USB_TXS1_REG: USB_ACK_STAT (Bitfield-Mask: 0x01) */ -#define USB_USB_TXS1_REG_USB_TX_URUN_Pos (7UL) /*!< USB USB_TXS1_REG: USB_TX_URUN (Bit 7) */ -#define USB_USB_TXS1_REG_USB_TX_URUN_Msk (0x80UL) /*!< USB USB_TXS1_REG: USB_TX_URUN (Bitfield-Mask: 0x01) */ - -/* ------------------------------ USB_USB_TXC1_REG ------------------------------ */ -#define USB_USB_TXC1_REG_USB_TX_EN_Pos (0UL) /*!< USB USB_TXC1_REG: USB_TX_EN (Bit 0) */ -#define USB_USB_TXC1_REG_USB_TX_EN_Msk (0x1UL) /*!< USB USB_TXC1_REG: USB_TX_EN (Bitfield-Mask: 0x01) */ -#define USB_USB_TXC1_REG_USB_LAST_Pos (1UL) /*!< USB USB_TXC1_REG: USB_LAST (Bit 1) */ -#define USB_USB_TXC1_REG_USB_LAST_Msk (0x2UL) /*!< USB USB_TXC1_REG: USB_LAST (Bitfield-Mask: 0x01) */ -#define USB_USB_TXC1_REG_USB_TOGGLE_TX_Pos (2UL) /*!< USB USB_TXC1_REG: USB_TOGGLE_TX (Bit 2) */ -#define USB_USB_TXC1_REG_USB_TOGGLE_TX_Msk (0x4UL) /*!< USB USB_TXC1_REG: USB_TOGGLE_TX (Bitfield-Mask: 0x01) */ -#define USB_USB_TXC1_REG_USB_FLUSH_Pos (3UL) /*!< USB USB_TXC1_REG: USB_FLUSH (Bit 3) */ -#define USB_USB_TXC1_REG_USB_FLUSH_Msk (0x8UL) /*!< USB USB_TXC1_REG: USB_FLUSH (Bitfield-Mask: 0x01) */ -#define USB_USB_TXC1_REG_USB_RFF_Pos (4UL) /*!< USB USB_TXC1_REG: USB_RFF (Bit 4) */ -#define USB_USB_TXC1_REG_USB_RFF_Msk (0x10UL) /*!< USB USB_TXC1_REG: USB_RFF (Bitfield-Mask: 0x01) */ -#define USB_USB_TXC1_REG_USB_TFWL_Pos (5UL) /*!< USB USB_TXC1_REG: USB_TFWL (Bit 5) */ -#define USB_USB_TXC1_REG_USB_TFWL_Msk (0x60UL) /*!< USB USB_TXC1_REG: USB_TFWL (Bitfield-Mask: 0x03) */ -#define USB_USB_TXC1_REG_USB_IGN_ISOMSK_Pos (7UL) /*!< USB USB_TXC1_REG: USB_IGN_ISOMSK (Bit 7) */ -#define USB_USB_TXC1_REG_USB_IGN_ISOMSK_Msk (0x80UL) /*!< USB USB_TXC1_REG: USB_IGN_ISOMSK (Bitfield-Mask: 0x01) */ - -/* ------------------------------ USB_USB_EPC2_REG ------------------------------ */ -#define USB_USB_EPC2_REG_USB_EP_Pos (0UL) /*!< USB USB_EPC2_REG: USB_EP (Bit 0) */ -#define USB_USB_EPC2_REG_USB_EP_Msk (0xfUL) /*!< USB USB_EPC2_REG: USB_EP (Bitfield-Mask: 0x0f) */ -#define USB_USB_EPC2_REG_USB_EP_EN_Pos (4UL) /*!< USB USB_EPC2_REG: USB_EP_EN (Bit 4) */ -#define USB_USB_EPC2_REG_USB_EP_EN_Msk (0x10UL) /*!< USB USB_EPC2_REG: USB_EP_EN (Bitfield-Mask: 0x01) */ -#define USB_USB_EPC2_REG_USB_ISO_Pos (5UL) /*!< USB USB_EPC2_REG: USB_ISO (Bit 5) */ -#define USB_USB_EPC2_REG_USB_ISO_Msk (0x20UL) /*!< USB USB_EPC2_REG: USB_ISO (Bitfield-Mask: 0x01) */ -#define USB_USB_EPC2_REG_USB_STALL_Pos (7UL) /*!< USB USB_EPC2_REG: USB_STALL (Bit 7) */ -#define USB_USB_EPC2_REG_USB_STALL_Msk (0x80UL) /*!< USB USB_EPC2_REG: USB_STALL (Bitfield-Mask: 0x01) */ - -/* ------------------------------ USB_USB_RXD1_REG ------------------------------ */ -#define USB_USB_RXD1_REG_USB_RXFD_Pos (0UL) /*!< USB USB_RXD1_REG: USB_RXFD (Bit 0) */ -#define USB_USB_RXD1_REG_USB_RXFD_Msk (0xffUL) /*!< USB USB_RXD1_REG: USB_RXFD (Bitfield-Mask: 0xff) */ - -/* ------------------------------ USB_USB_RXS1_REG ------------------------------ */ -#define USB_USB_RXS1_REG_USB_RCOUNT_Pos (0UL) /*!< USB USB_RXS1_REG: USB_RCOUNT (Bit 0) */ -#define USB_USB_RXS1_REG_USB_RCOUNT_Msk (0xfUL) /*!< USB USB_RXS1_REG: USB_RCOUNT (Bitfield-Mask: 0x0f) */ -#define USB_USB_RXS1_REG_USB_RX_LAST_Pos (4UL) /*!< USB USB_RXS1_REG: USB_RX_LAST (Bit 4) */ -#define USB_USB_RXS1_REG_USB_RX_LAST_Msk (0x10UL) /*!< USB USB_RXS1_REG: USB_RX_LAST (Bitfield-Mask: 0x01) */ -#define USB_USB_RXS1_REG_USB_TOGGLE_RX_Pos (5UL) /*!< USB USB_RXS1_REG: USB_TOGGLE_RX (Bit 5) */ -#define USB_USB_RXS1_REG_USB_TOGGLE_RX_Msk (0x20UL) /*!< USB USB_RXS1_REG: USB_TOGGLE_RX (Bitfield-Mask: 0x01) */ -#define USB_USB_RXS1_REG_USB_SETUP_Pos (6UL) /*!< USB USB_RXS1_REG: USB_SETUP (Bit 6) */ -#define USB_USB_RXS1_REG_USB_SETUP_Msk (0x40UL) /*!< USB USB_RXS1_REG: USB_SETUP (Bitfield-Mask: 0x01) */ -#define USB_USB_RXS1_REG_USB_RX_ERR_Pos (7UL) /*!< USB USB_RXS1_REG: USB_RX_ERR (Bit 7) */ -#define USB_USB_RXS1_REG_USB_RX_ERR_Msk (0x80UL) /*!< USB USB_RXS1_REG: USB_RX_ERR (Bitfield-Mask: 0x01) */ - -/* ------------------------------ USB_USB_RXC1_REG ------------------------------ */ -#define USB_USB_RXC1_REG_USB_RX_EN_Pos (0UL) /*!< USB USB_RXC1_REG: USB_RX_EN (Bit 0) */ -#define USB_USB_RXC1_REG_USB_RX_EN_Msk (0x1UL) /*!< USB USB_RXC1_REG: USB_RX_EN (Bitfield-Mask: 0x01) */ -#define USB_USB_RXC1_REG_USB_IGN_SETUP_Pos (2UL) /*!< USB USB_RXC1_REG: USB_IGN_SETUP (Bit 2) */ -#define USB_USB_RXC1_REG_USB_IGN_SETUP_Msk (0x4UL) /*!< USB USB_RXC1_REG: USB_IGN_SETUP (Bitfield-Mask: 0x01) */ -#define USB_USB_RXC1_REG_USB_FLUSH_Pos (3UL) /*!< USB USB_RXC1_REG: USB_FLUSH (Bit 3) */ -#define USB_USB_RXC1_REG_USB_FLUSH_Msk (0x8UL) /*!< USB USB_RXC1_REG: USB_FLUSH (Bitfield-Mask: 0x01) */ -#define USB_USB_RXC1_REG_USB_RFWL_Pos (5UL) /*!< USB USB_RXC1_REG: USB_RFWL (Bit 5) */ -#define USB_USB_RXC1_REG_USB_RFWL_Msk (0x60UL) /*!< USB USB_RXC1_REG: USB_RFWL (Bitfield-Mask: 0x03) */ - -/* ------------------------------ USB_USB_EPC3_REG ------------------------------ */ -#define USB_USB_EPC3_REG_USB_EP_Pos (0UL) /*!< USB USB_EPC3_REG: USB_EP (Bit 0) */ -#define USB_USB_EPC3_REG_USB_EP_Msk (0xfUL) /*!< USB USB_EPC3_REG: USB_EP (Bitfield-Mask: 0x0f) */ -#define USB_USB_EPC3_REG_USB_EP_EN_Pos (4UL) /*!< USB USB_EPC3_REG: USB_EP_EN (Bit 4) */ -#define USB_USB_EPC3_REG_USB_EP_EN_Msk (0x10UL) /*!< USB USB_EPC3_REG: USB_EP_EN (Bitfield-Mask: 0x01) */ -#define USB_USB_EPC3_REG_USB_ISO_Pos (5UL) /*!< USB USB_EPC3_REG: USB_ISO (Bit 5) */ -#define USB_USB_EPC3_REG_USB_ISO_Msk (0x20UL) /*!< USB USB_EPC3_REG: USB_ISO (Bitfield-Mask: 0x01) */ -#define USB_USB_EPC3_REG_USB_STALL_Pos (7UL) /*!< USB USB_EPC3_REG: USB_STALL (Bit 7) */ -#define USB_USB_EPC3_REG_USB_STALL_Msk (0x80UL) /*!< USB USB_EPC3_REG: USB_STALL (Bitfield-Mask: 0x01) */ - -/* ------------------------------ USB_USB_TXD2_REG ------------------------------ */ -#define USB_USB_TXD2_REG_USB_TXFD_Pos (0UL) /*!< USB USB_TXD2_REG: USB_TXFD (Bit 0) */ -#define USB_USB_TXD2_REG_USB_TXFD_Msk (0xffUL) /*!< USB USB_TXD2_REG: USB_TXFD (Bitfield-Mask: 0xff) */ - -/* ------------------------------ USB_USB_TXS2_REG ------------------------------ */ -#define USB_USB_TXS2_REG_USB_TCOUNT_Pos (0UL) /*!< USB USB_TXS2_REG: USB_TCOUNT (Bit 0) */ -#define USB_USB_TXS2_REG_USB_TCOUNT_Msk (0x1fUL) /*!< USB USB_TXS2_REG: USB_TCOUNT (Bitfield-Mask: 0x1f) */ -#define USB_USB_TXS2_REG_USB_TX_DONE_Pos (5UL) /*!< USB USB_TXS2_REG: USB_TX_DONE (Bit 5) */ -#define USB_USB_TXS2_REG_USB_TX_DONE_Msk (0x20UL) /*!< USB USB_TXS2_REG: USB_TX_DONE (Bitfield-Mask: 0x01) */ -#define USB_USB_TXS2_REG_USB_ACK_STAT_Pos (6UL) /*!< USB USB_TXS2_REG: USB_ACK_STAT (Bit 6) */ -#define USB_USB_TXS2_REG_USB_ACK_STAT_Msk (0x40UL) /*!< USB USB_TXS2_REG: USB_ACK_STAT (Bitfield-Mask: 0x01) */ -#define USB_USB_TXS2_REG_USB_TX_URUN_Pos (7UL) /*!< USB USB_TXS2_REG: USB_TX_URUN (Bit 7) */ -#define USB_USB_TXS2_REG_USB_TX_URUN_Msk (0x80UL) /*!< USB USB_TXS2_REG: USB_TX_URUN (Bitfield-Mask: 0x01) */ - -/* ------------------------------ USB_USB_TXC2_REG ------------------------------ */ -#define USB_USB_TXC2_REG_USB_TX_EN_Pos (0UL) /*!< USB USB_TXC2_REG: USB_TX_EN (Bit 0) */ -#define USB_USB_TXC2_REG_USB_TX_EN_Msk (0x1UL) /*!< USB USB_TXC2_REG: USB_TX_EN (Bitfield-Mask: 0x01) */ -#define USB_USB_TXC2_REG_USB_LAST_Pos (1UL) /*!< USB USB_TXC2_REG: USB_LAST (Bit 1) */ -#define USB_USB_TXC2_REG_USB_LAST_Msk (0x2UL) /*!< USB USB_TXC2_REG: USB_LAST (Bitfield-Mask: 0x01) */ -#define USB_USB_TXC2_REG_USB_TOGGLE_TX_Pos (2UL) /*!< USB USB_TXC2_REG: USB_TOGGLE_TX (Bit 2) */ -#define USB_USB_TXC2_REG_USB_TOGGLE_TX_Msk (0x4UL) /*!< USB USB_TXC2_REG: USB_TOGGLE_TX (Bitfield-Mask: 0x01) */ -#define USB_USB_TXC2_REG_USB_FLUSH_Pos (3UL) /*!< USB USB_TXC2_REG: USB_FLUSH (Bit 3) */ -#define USB_USB_TXC2_REG_USB_FLUSH_Msk (0x8UL) /*!< USB USB_TXC2_REG: USB_FLUSH (Bitfield-Mask: 0x01) */ -#define USB_USB_TXC2_REG_USB_RFF_Pos (4UL) /*!< USB USB_TXC2_REG: USB_RFF (Bit 4) */ -#define USB_USB_TXC2_REG_USB_RFF_Msk (0x10UL) /*!< USB USB_TXC2_REG: USB_RFF (Bitfield-Mask: 0x01) */ -#define USB_USB_TXC2_REG_USB_TFWL_Pos (5UL) /*!< USB USB_TXC2_REG: USB_TFWL (Bit 5) */ -#define USB_USB_TXC2_REG_USB_TFWL_Msk (0x60UL) /*!< USB USB_TXC2_REG: USB_TFWL (Bitfield-Mask: 0x03) */ -#define USB_USB_TXC2_REG_USB_IGN_ISOMSK_Pos (7UL) /*!< USB USB_TXC2_REG: USB_IGN_ISOMSK (Bit 7) */ -#define USB_USB_TXC2_REG_USB_IGN_ISOMSK_Msk (0x80UL) /*!< USB USB_TXC2_REG: USB_IGN_ISOMSK (Bitfield-Mask: 0x01) */ - -/* ------------------------------ USB_USB_EPC4_REG ------------------------------ */ -#define USB_USB_EPC4_REG_USB_EP_Pos (0UL) /*!< USB USB_EPC4_REG: USB_EP (Bit 0) */ -#define USB_USB_EPC4_REG_USB_EP_Msk (0xfUL) /*!< USB USB_EPC4_REG: USB_EP (Bitfield-Mask: 0x0f) */ -#define USB_USB_EPC4_REG_USB_EP_EN_Pos (4UL) /*!< USB USB_EPC4_REG: USB_EP_EN (Bit 4) */ -#define USB_USB_EPC4_REG_USB_EP_EN_Msk (0x10UL) /*!< USB USB_EPC4_REG: USB_EP_EN (Bitfield-Mask: 0x01) */ -#define USB_USB_EPC4_REG_USB_ISO_Pos (5UL) /*!< USB USB_EPC4_REG: USB_ISO (Bit 5) */ -#define USB_USB_EPC4_REG_USB_ISO_Msk (0x20UL) /*!< USB USB_EPC4_REG: USB_ISO (Bitfield-Mask: 0x01) */ -#define USB_USB_EPC4_REG_USB_STALL_Pos (7UL) /*!< USB USB_EPC4_REG: USB_STALL (Bit 7) */ -#define USB_USB_EPC4_REG_USB_STALL_Msk (0x80UL) /*!< USB USB_EPC4_REG: USB_STALL (Bitfield-Mask: 0x01) */ - -/* ------------------------------ USB_USB_RXD2_REG ------------------------------ */ -#define USB_USB_RXD2_REG_USB_RXFD_Pos (0UL) /*!< USB USB_RXD2_REG: USB_RXFD (Bit 0) */ -#define USB_USB_RXD2_REG_USB_RXFD_Msk (0xffUL) /*!< USB USB_RXD2_REG: USB_RXFD (Bitfield-Mask: 0xff) */ - -/* ------------------------------ USB_USB_RXS2_REG ------------------------------ */ -#define USB_USB_RXS2_REG_USB_RCOUNT_Pos (0UL) /*!< USB USB_RXS2_REG: USB_RCOUNT (Bit 0) */ -#define USB_USB_RXS2_REG_USB_RCOUNT_Msk (0xfUL) /*!< USB USB_RXS2_REG: USB_RCOUNT (Bitfield-Mask: 0x0f) */ -#define USB_USB_RXS2_REG_USB_RX_LAST_Pos (4UL) /*!< USB USB_RXS2_REG: USB_RX_LAST (Bit 4) */ -#define USB_USB_RXS2_REG_USB_RX_LAST_Msk (0x10UL) /*!< USB USB_RXS2_REG: USB_RX_LAST (Bitfield-Mask: 0x01) */ -#define USB_USB_RXS2_REG_USB_TOGGLE_RX_Pos (5UL) /*!< USB USB_RXS2_REG: USB_TOGGLE_RX (Bit 5) */ -#define USB_USB_RXS2_REG_USB_TOGGLE_RX_Msk (0x20UL) /*!< USB USB_RXS2_REG: USB_TOGGLE_RX (Bitfield-Mask: 0x01) */ -#define USB_USB_RXS2_REG_USB_SETUP_Pos (6UL) /*!< USB USB_RXS2_REG: USB_SETUP (Bit 6) */ -#define USB_USB_RXS2_REG_USB_SETUP_Msk (0x40UL) /*!< USB USB_RXS2_REG: USB_SETUP (Bitfield-Mask: 0x01) */ -#define USB_USB_RXS2_REG_USB_RX_ERR_Pos (7UL) /*!< USB USB_RXS2_REG: USB_RX_ERR (Bit 7) */ -#define USB_USB_RXS2_REG_USB_RX_ERR_Msk (0x80UL) /*!< USB USB_RXS2_REG: USB_RX_ERR (Bitfield-Mask: 0x01) */ - -/* ------------------------------ USB_USB_RXC2_REG ------------------------------ */ -#define USB_USB_RXC2_REG_USB_RX_EN_Pos (0UL) /*!< USB USB_RXC2_REG: USB_RX_EN (Bit 0) */ -#define USB_USB_RXC2_REG_USB_RX_EN_Msk (0x1UL) /*!< USB USB_RXC2_REG: USB_RX_EN (Bitfield-Mask: 0x01) */ -#define USB_USB_RXC2_REG_USB_IGN_SETUP_Pos (2UL) /*!< USB USB_RXC2_REG: USB_IGN_SETUP (Bit 2) */ -#define USB_USB_RXC2_REG_USB_IGN_SETUP_Msk (0x4UL) /*!< USB USB_RXC2_REG: USB_IGN_SETUP (Bitfield-Mask: 0x01) */ -#define USB_USB_RXC2_REG_USB_FLUSH_Pos (3UL) /*!< USB USB_RXC2_REG: USB_FLUSH (Bit 3) */ -#define USB_USB_RXC2_REG_USB_FLUSH_Msk (0x8UL) /*!< USB USB_RXC2_REG: USB_FLUSH (Bitfield-Mask: 0x01) */ -#define USB_USB_RXC2_REG_USB_RFWL_Pos (5UL) /*!< USB USB_RXC2_REG: USB_RFWL (Bit 5) */ -#define USB_USB_RXC2_REG_USB_RFWL_Msk (0x60UL) /*!< USB USB_RXC2_REG: USB_RFWL (Bitfield-Mask: 0x03) */ - -/* ------------------------------ USB_USB_EPC5_REG ------------------------------ */ -#define USB_USB_EPC5_REG_USB_EP_Pos (0UL) /*!< USB USB_EPC5_REG: USB_EP (Bit 0) */ -#define USB_USB_EPC5_REG_USB_EP_Msk (0xfUL) /*!< USB USB_EPC5_REG: USB_EP (Bitfield-Mask: 0x0f) */ -#define USB_USB_EPC5_REG_USB_EP_EN_Pos (4UL) /*!< USB USB_EPC5_REG: USB_EP_EN (Bit 4) */ -#define USB_USB_EPC5_REG_USB_EP_EN_Msk (0x10UL) /*!< USB USB_EPC5_REG: USB_EP_EN (Bitfield-Mask: 0x01) */ -#define USB_USB_EPC5_REG_USB_ISO_Pos (5UL) /*!< USB USB_EPC5_REG: USB_ISO (Bit 5) */ -#define USB_USB_EPC5_REG_USB_ISO_Msk (0x20UL) /*!< USB USB_EPC5_REG: USB_ISO (Bitfield-Mask: 0x01) */ -#define USB_USB_EPC5_REG_USB_STALL_Pos (7UL) /*!< USB USB_EPC5_REG: USB_STALL (Bit 7) */ -#define USB_USB_EPC5_REG_USB_STALL_Msk (0x80UL) /*!< USB USB_EPC5_REG: USB_STALL (Bitfield-Mask: 0x01) */ - -/* ------------------------------ USB_USB_TXD3_REG ------------------------------ */ -#define USB_USB_TXD3_REG_USB_TXFD_Pos (0UL) /*!< USB USB_TXD3_REG: USB_TXFD (Bit 0) */ -#define USB_USB_TXD3_REG_USB_TXFD_Msk (0xffUL) /*!< USB USB_TXD3_REG: USB_TXFD (Bitfield-Mask: 0xff) */ - -/* ------------------------------ USB_USB_TXS3_REG ------------------------------ */ -#define USB_USB_TXS3_REG_USB_TCOUNT_Pos (0UL) /*!< USB USB_TXS3_REG: USB_TCOUNT (Bit 0) */ -#define USB_USB_TXS3_REG_USB_TCOUNT_Msk (0x1fUL) /*!< USB USB_TXS3_REG: USB_TCOUNT (Bitfield-Mask: 0x1f) */ -#define USB_USB_TXS3_REG_USB_TX_DONE_Pos (5UL) /*!< USB USB_TXS3_REG: USB_TX_DONE (Bit 5) */ -#define USB_USB_TXS3_REG_USB_TX_DONE_Msk (0x20UL) /*!< USB USB_TXS3_REG: USB_TX_DONE (Bitfield-Mask: 0x01) */ -#define USB_USB_TXS3_REG_USB_ACK_STAT_Pos (6UL) /*!< USB USB_TXS3_REG: USB_ACK_STAT (Bit 6) */ -#define USB_USB_TXS3_REG_USB_ACK_STAT_Msk (0x40UL) /*!< USB USB_TXS3_REG: USB_ACK_STAT (Bitfield-Mask: 0x01) */ -#define USB_USB_TXS3_REG_USB_TX_URUN_Pos (7UL) /*!< USB USB_TXS3_REG: USB_TX_URUN (Bit 7) */ -#define USB_USB_TXS3_REG_USB_TX_URUN_Msk (0x80UL) /*!< USB USB_TXS3_REG: USB_TX_URUN (Bitfield-Mask: 0x01) */ - -/* ------------------------------ USB_USB_TXC3_REG ------------------------------ */ -#define USB_USB_TXC3_REG_USB_TX_EN_Pos (0UL) /*!< USB USB_TXC3_REG: USB_TX_EN (Bit 0) */ -#define USB_USB_TXC3_REG_USB_TX_EN_Msk (0x1UL) /*!< USB USB_TXC3_REG: USB_TX_EN (Bitfield-Mask: 0x01) */ -#define USB_USB_TXC3_REG_USB_LAST_Pos (1UL) /*!< USB USB_TXC3_REG: USB_LAST (Bit 1) */ -#define USB_USB_TXC3_REG_USB_LAST_Msk (0x2UL) /*!< USB USB_TXC3_REG: USB_LAST (Bitfield-Mask: 0x01) */ -#define USB_USB_TXC3_REG_USB_TOGGLE_TX_Pos (2UL) /*!< USB USB_TXC3_REG: USB_TOGGLE_TX (Bit 2) */ -#define USB_USB_TXC3_REG_USB_TOGGLE_TX_Msk (0x4UL) /*!< USB USB_TXC3_REG: USB_TOGGLE_TX (Bitfield-Mask: 0x01) */ -#define USB_USB_TXC3_REG_USB_FLUSH_Pos (3UL) /*!< USB USB_TXC3_REG: USB_FLUSH (Bit 3) */ -#define USB_USB_TXC3_REG_USB_FLUSH_Msk (0x8UL) /*!< USB USB_TXC3_REG: USB_FLUSH (Bitfield-Mask: 0x01) */ -#define USB_USB_TXC3_REG_USB_RFF_Pos (4UL) /*!< USB USB_TXC3_REG: USB_RFF (Bit 4) */ -#define USB_USB_TXC3_REG_USB_RFF_Msk (0x10UL) /*!< USB USB_TXC3_REG: USB_RFF (Bitfield-Mask: 0x01) */ -#define USB_USB_TXC3_REG_USB_TFWL_Pos (5UL) /*!< USB USB_TXC3_REG: USB_TFWL (Bit 5) */ -#define USB_USB_TXC3_REG_USB_TFWL_Msk (0x60UL) /*!< USB USB_TXC3_REG: USB_TFWL (Bitfield-Mask: 0x03) */ -#define USB_USB_TXC3_REG_USB_IGN_ISOMSK_Pos (7UL) /*!< USB USB_TXC3_REG: USB_IGN_ISOMSK (Bit 7) */ -#define USB_USB_TXC3_REG_USB_IGN_ISOMSK_Msk (0x80UL) /*!< USB USB_TXC3_REG: USB_IGN_ISOMSK (Bitfield-Mask: 0x01) */ - -/* ------------------------------ USB_USB_EPC6_REG ------------------------------ */ -#define USB_USB_EPC6_REG_USB_EP_Pos (0UL) /*!< USB USB_EPC6_REG: USB_EP (Bit 0) */ -#define USB_USB_EPC6_REG_USB_EP_Msk (0xfUL) /*!< USB USB_EPC6_REG: USB_EP (Bitfield-Mask: 0x0f) */ -#define USB_USB_EPC6_REG_USB_EP_EN_Pos (4UL) /*!< USB USB_EPC6_REG: USB_EP_EN (Bit 4) */ -#define USB_USB_EPC6_REG_USB_EP_EN_Msk (0x10UL) /*!< USB USB_EPC6_REG: USB_EP_EN (Bitfield-Mask: 0x01) */ -#define USB_USB_EPC6_REG_USB_ISO_Pos (5UL) /*!< USB USB_EPC6_REG: USB_ISO (Bit 5) */ -#define USB_USB_EPC6_REG_USB_ISO_Msk (0x20UL) /*!< USB USB_EPC6_REG: USB_ISO (Bitfield-Mask: 0x01) */ -#define USB_USB_EPC6_REG_USB_STALL_Pos (7UL) /*!< USB USB_EPC6_REG: USB_STALL (Bit 7) */ -#define USB_USB_EPC6_REG_USB_STALL_Msk (0x80UL) /*!< USB USB_EPC6_REG: USB_STALL (Bitfield-Mask: 0x01) */ - -/* ------------------------------ USB_USB_RXD3_REG ------------------------------ */ -#define USB_USB_RXD3_REG_USB_RXFD_Pos (0UL) /*!< USB USB_RXD3_REG: USB_RXFD (Bit 0) */ -#define USB_USB_RXD3_REG_USB_RXFD_Msk (0xffUL) /*!< USB USB_RXD3_REG: USB_RXFD (Bitfield-Mask: 0xff) */ - -/* ------------------------------ USB_USB_RXS3_REG ------------------------------ */ -#define USB_USB_RXS3_REG_USB_RCOUNT_Pos (0UL) /*!< USB USB_RXS3_REG: USB_RCOUNT (Bit 0) */ -#define USB_USB_RXS3_REG_USB_RCOUNT_Msk (0xfUL) /*!< USB USB_RXS3_REG: USB_RCOUNT (Bitfield-Mask: 0x0f) */ -#define USB_USB_RXS3_REG_USB_RX_LAST_Pos (4UL) /*!< USB USB_RXS3_REG: USB_RX_LAST (Bit 4) */ -#define USB_USB_RXS3_REG_USB_RX_LAST_Msk (0x10UL) /*!< USB USB_RXS3_REG: USB_RX_LAST (Bitfield-Mask: 0x01) */ -#define USB_USB_RXS3_REG_USB_TOGGLE_RX_Pos (5UL) /*!< USB USB_RXS3_REG: USB_TOGGLE_RX (Bit 5) */ -#define USB_USB_RXS3_REG_USB_TOGGLE_RX_Msk (0x20UL) /*!< USB USB_RXS3_REG: USB_TOGGLE_RX (Bitfield-Mask: 0x01) */ -#define USB_USB_RXS3_REG_USB_SETUP_Pos (6UL) /*!< USB USB_RXS3_REG: USB_SETUP (Bit 6) */ -#define USB_USB_RXS3_REG_USB_SETUP_Msk (0x40UL) /*!< USB USB_RXS3_REG: USB_SETUP (Bitfield-Mask: 0x01) */ -#define USB_USB_RXS3_REG_USB_RX_ERR_Pos (7UL) /*!< USB USB_RXS3_REG: USB_RX_ERR (Bit 7) */ -#define USB_USB_RXS3_REG_USB_RX_ERR_Msk (0x80UL) /*!< USB USB_RXS3_REG: USB_RX_ERR (Bitfield-Mask: 0x01) */ - -/* ------------------------------ USB_USB_RXC3_REG ------------------------------ */ -#define USB_USB_RXC3_REG_USB_RX_EN_Pos (0UL) /*!< USB USB_RXC3_REG: USB_RX_EN (Bit 0) */ -#define USB_USB_RXC3_REG_USB_RX_EN_Msk (0x1UL) /*!< USB USB_RXC3_REG: USB_RX_EN (Bitfield-Mask: 0x01) */ -#define USB_USB_RXC3_REG_USB_IGN_SETUP_Pos (2UL) /*!< USB USB_RXC3_REG: USB_IGN_SETUP (Bit 2) */ -#define USB_USB_RXC3_REG_USB_IGN_SETUP_Msk (0x4UL) /*!< USB USB_RXC3_REG: USB_IGN_SETUP (Bitfield-Mask: 0x01) */ -#define USB_USB_RXC3_REG_USB_FLUSH_Pos (3UL) /*!< USB USB_RXC3_REG: USB_FLUSH (Bit 3) */ -#define USB_USB_RXC3_REG_USB_FLUSH_Msk (0x8UL) /*!< USB USB_RXC3_REG: USB_FLUSH (Bitfield-Mask: 0x01) */ -#define USB_USB_RXC3_REG_USB_RFWL_Pos (5UL) /*!< USB USB_RXC3_REG: USB_RFWL (Bit 5) */ -#define USB_USB_RXC3_REG_USB_RFWL_Msk (0x60UL) /*!< USB USB_RXC3_REG: USB_RFWL (Bitfield-Mask: 0x03) */ - -/* ---------------------------- USB_USB_DMA_CTRL_REG ---------------------------- */ -#define USB_USB_DMA_CTRL_REG_USB_DMA_RX_Pos (0UL) /*!< USB USB_DMA_CTRL_REG: USB_DMA_RX (Bit 0) */ -#define USB_USB_DMA_CTRL_REG_USB_DMA_RX_Msk (0x7UL) /*!< USB USB_DMA_CTRL_REG: USB_DMA_RX (Bitfield-Mask: 0x07) */ -#define USB_USB_DMA_CTRL_REG_USB_DMA_TX_Pos (3UL) /*!< USB USB_DMA_CTRL_REG: USB_DMA_TX (Bit 3) */ -#define USB_USB_DMA_CTRL_REG_USB_DMA_TX_Msk (0x38UL) /*!< USB USB_DMA_CTRL_REG: USB_DMA_TX (Bitfield-Mask: 0x07) */ -#define USB_USB_DMA_CTRL_REG_USB_DMA_EN_Pos (6UL) /*!< USB USB_DMA_CTRL_REG: USB_DMA_EN (Bit 6) */ -#define USB_USB_DMA_CTRL_REG_USB_DMA_EN_Msk (0x40UL) /*!< USB USB_DMA_CTRL_REG: USB_DMA_EN (Bitfield-Mask: 0x01) */ - -/* -------------------------- USB_USB_CHARGER_CTRL_REG -------------------------- */ -#define USB_USB_CHARGER_CTRL_REG_USB_CHARGE_ON_Pos (0UL) /*!< USB USB_CHARGER_CTRL_REG: USB_CHARGE_ON (Bit 0) */ -#define USB_USB_CHARGER_CTRL_REG_USB_CHARGE_ON_Msk (0x1UL) /*!< USB USB_CHARGER_CTRL_REG: USB_CHARGE_ON (Bitfield-Mask: 0x01) */ -#define USB_USB_CHARGER_CTRL_REG_IDP_SRC_ON_Pos (1UL) /*!< USB USB_CHARGER_CTRL_REG: IDP_SRC_ON (Bit 1) */ -#define USB_USB_CHARGER_CTRL_REG_IDP_SRC_ON_Msk (0x2UL) /*!< USB USB_CHARGER_CTRL_REG: IDP_SRC_ON (Bitfield-Mask: 0x01) */ -#define USB_USB_CHARGER_CTRL_REG_VDP_SRC_ON_Pos (2UL) /*!< USB USB_CHARGER_CTRL_REG: VDP_SRC_ON (Bit 2) */ -#define USB_USB_CHARGER_CTRL_REG_VDP_SRC_ON_Msk (0x4UL) /*!< USB USB_CHARGER_CTRL_REG: VDP_SRC_ON (Bitfield-Mask: 0x01) */ -#define USB_USB_CHARGER_CTRL_REG_VDM_SRC_ON_Pos (3UL) /*!< USB USB_CHARGER_CTRL_REG: VDM_SRC_ON (Bit 3) */ -#define USB_USB_CHARGER_CTRL_REG_VDM_SRC_ON_Msk (0x8UL) /*!< USB USB_CHARGER_CTRL_REG: VDM_SRC_ON (Bitfield-Mask: 0x01) */ -#define USB_USB_CHARGER_CTRL_REG_IDP_SINK_ON_Pos (4UL) /*!< USB USB_CHARGER_CTRL_REG: IDP_SINK_ON (Bit 4) */ -#define USB_USB_CHARGER_CTRL_REG_IDP_SINK_ON_Msk (0x10UL) /*!< USB USB_CHARGER_CTRL_REG: IDP_SINK_ON (Bitfield-Mask: 0x01) */ -#define USB_USB_CHARGER_CTRL_REG_IDM_SINK_ON_Pos (5UL) /*!< USB USB_CHARGER_CTRL_REG: IDM_SINK_ON (Bit 5) */ -#define USB_USB_CHARGER_CTRL_REG_IDM_SINK_ON_Msk (0x20UL) /*!< USB USB_CHARGER_CTRL_REG: IDM_SINK_ON (Bitfield-Mask: 0x01) */ - -/* -------------------------- USB_USB_CHARGER_STAT_REG -------------------------- */ -#define USB_USB_CHARGER_STAT_REG_USB_DCP_DET_Pos (0UL) /*!< USB USB_CHARGER_STAT_REG: USB_DCP_DET (Bit 0) */ -#define USB_USB_CHARGER_STAT_REG_USB_DCP_DET_Msk (0x1UL) /*!< USB USB_CHARGER_STAT_REG: USB_DCP_DET (Bitfield-Mask: 0x01) */ -#define USB_USB_CHARGER_STAT_REG_USB_CHG_DET_Pos (1UL) /*!< USB USB_CHARGER_STAT_REG: USB_CHG_DET (Bit 1) */ -#define USB_USB_CHARGER_STAT_REG_USB_CHG_DET_Msk (0x2UL) /*!< USB USB_CHARGER_STAT_REG: USB_CHG_DET (Bitfield-Mask: 0x01) */ -#define USB_USB_CHARGER_STAT_REG_USB_DP_VAL_Pos (2UL) /*!< USB USB_CHARGER_STAT_REG: USB_DP_VAL (Bit 2) */ -#define USB_USB_CHARGER_STAT_REG_USB_DP_VAL_Msk (0x4UL) /*!< USB USB_CHARGER_STAT_REG: USB_DP_VAL (Bitfield-Mask: 0x01) */ -#define USB_USB_CHARGER_STAT_REG_USB_DM_VAL_Pos (3UL) /*!< USB USB_CHARGER_STAT_REG: USB_DM_VAL (Bit 3) */ -#define USB_USB_CHARGER_STAT_REG_USB_DM_VAL_Msk (0x8UL) /*!< USB USB_CHARGER_STAT_REG: USB_DM_VAL (Bitfield-Mask: 0x01) */ -#define USB_USB_CHARGER_STAT_REG_USB_DP_VAL2_Pos (4UL) /*!< USB USB_CHARGER_STAT_REG: USB_DP_VAL2 (Bit 4) */ -#define USB_USB_CHARGER_STAT_REG_USB_DP_VAL2_Msk (0x10UL) /*!< USB USB_CHARGER_STAT_REG: USB_DP_VAL2 (Bitfield-Mask: 0x01) */ -#define USB_USB_CHARGER_STAT_REG_USB_DM_VAL2_Pos (5UL) /*!< USB USB_CHARGER_STAT_REG: USB_DM_VAL2 (Bit 5) */ -#define USB_USB_CHARGER_STAT_REG_USB_DM_VAL2_Msk (0x20UL) /*!< USB USB_CHARGER_STAT_REG: USB_DM_VAL2 (Bitfield-Mask: 0x01) */ - - -/* ================================================================================ */ -/* ================ struct 'WAKEUP' Position & Mask ================ */ -/* ================================================================================ */ - - -/* ---------------------------- WAKEUP_WKUP_CTRL_REG ---------------------------- */ -#define WAKEUP_WKUP_CTRL_REG_WKUP_DEB_VALUE_Pos (0UL) /*!< WAKEUP WKUP_CTRL_REG: WKUP_DEB_VALUE (Bit 0) */ -#define WAKEUP_WKUP_CTRL_REG_WKUP_DEB_VALUE_Msk (0x3fUL) /*!< WAKEUP WKUP_CTRL_REG: WKUP_DEB_VALUE (Bitfield-Mask: 0x3f) */ -#define WAKEUP_WKUP_CTRL_REG_WKUP_SFT_KEYHIT_Pos (6UL) /*!< WAKEUP WKUP_CTRL_REG: WKUP_SFT_KEYHIT (Bit 6) */ -#define WAKEUP_WKUP_CTRL_REG_WKUP_SFT_KEYHIT_Msk (0x40UL) /*!< WAKEUP WKUP_CTRL_REG: WKUP_SFT_KEYHIT (Bitfield-Mask: 0x01) */ -#define WAKEUP_WKUP_CTRL_REG_WKUP_ENABLE_IRQ_Pos (7UL) /*!< WAKEUP WKUP_CTRL_REG: WKUP_ENABLE_IRQ (Bit 7) */ -#define WAKEUP_WKUP_CTRL_REG_WKUP_ENABLE_IRQ_Msk (0x80UL) /*!< WAKEUP WKUP_CTRL_REG: WKUP_ENABLE_IRQ (Bitfield-Mask: 0x01) */ - -/* -------------------------- WAKEUP_WKUP_RESET_IRQ_REG ------------------------- */ -#define WAKEUP_WKUP_RESET_IRQ_REG_WKUP_IRQ_RST_Pos (0UL) /*!< WAKEUP WKUP_RESET_IRQ_REG: WKUP_IRQ_RST (Bit 0) */ -#define WAKEUP_WKUP_RESET_IRQ_REG_WKUP_IRQ_RST_Msk (0xffffUL) /*!< WAKEUP WKUP_RESET_IRQ_REG: WKUP_IRQ_RST (Bitfield-Mask: 0xffff) */ - -/* -------------------------- WAKEUP_WKUP_SELECT_P0_REG ------------------------- */ -#define WAKEUP_WKUP_SELECT_P0_REG_WKUP_SELECT_P0_Pos (0UL) /*!< WAKEUP WKUP_SELECT_P0_REG: WKUP_SELECT_P0 (Bit 0) */ -#define WAKEUP_WKUP_SELECT_P0_REG_WKUP_SELECT_P0_Msk (0xffUL) /*!< WAKEUP WKUP_SELECT_P0_REG: WKUP_SELECT_P0 (Bitfield-Mask: 0xff) */ - -/* -------------------------- WAKEUP_WKUP_SELECT_P1_REG ------------------------- */ -#define WAKEUP_WKUP_SELECT_P1_REG_WKUP_SELECT_P1_Pos (0UL) /*!< WAKEUP WKUP_SELECT_P1_REG: WKUP_SELECT_P1 (Bit 0) */ -#define WAKEUP_WKUP_SELECT_P1_REG_WKUP_SELECT_P1_Msk (0xffUL) /*!< WAKEUP WKUP_SELECT_P1_REG: WKUP_SELECT_P1 (Bitfield-Mask: 0xff) */ - -/* -------------------------- WAKEUP_WKUP_SELECT_P2_REG ------------------------- */ -#define WAKEUP_WKUP_SELECT_P2_REG_WKUP_SELECT_P2_Pos (0UL) /*!< WAKEUP WKUP_SELECT_P2_REG: WKUP_SELECT_P2 (Bit 0) */ -#define WAKEUP_WKUP_SELECT_P2_REG_WKUP_SELECT_P2_Msk (0x1fUL) /*!< WAKEUP WKUP_SELECT_P2_REG: WKUP_SELECT_P2 (Bitfield-Mask: 0x1f) */ - -/* -------------------------- WAKEUP_WKUP_SELECT_P3_REG ------------------------- */ -#define WAKEUP_WKUP_SELECT_P3_REG_WKUP_SELECT_P3_Pos (0UL) /*!< WAKEUP WKUP_SELECT_P3_REG: WKUP_SELECT_P3 (Bit 0) */ -#define WAKEUP_WKUP_SELECT_P3_REG_WKUP_SELECT_P3_Msk (0xffUL) /*!< WAKEUP WKUP_SELECT_P3_REG: WKUP_SELECT_P3 (Bitfield-Mask: 0xff) */ - -/* -------------------------- WAKEUP_WKUP_SELECT_P4_REG ------------------------- */ -#define WAKEUP_WKUP_SELECT_P4_REG_WKUP_SELECT_P4_Pos (0UL) /*!< WAKEUP WKUP_SELECT_P4_REG: WKUP_SELECT_P4 (Bit 0) */ -#define WAKEUP_WKUP_SELECT_P4_REG_WKUP_SELECT_P4_Msk (0xffUL) /*!< WAKEUP WKUP_SELECT_P4_REG: WKUP_SELECT_P4 (Bitfield-Mask: 0xff) */ - -/* --------------------------- WAKEUP_WKUP_POL_P0_REG --------------------------- */ -#define WAKEUP_WKUP_POL_P0_REG_WKUP_POL_P0_Pos (0UL) /*!< WAKEUP WKUP_POL_P0_REG: WKUP_POL_P0 (Bit 0) */ -#define WAKEUP_WKUP_POL_P0_REG_WKUP_POL_P0_Msk (0xffUL) /*!< WAKEUP WKUP_POL_P0_REG: WKUP_POL_P0 (Bitfield-Mask: 0xff) */ - -/* --------------------------- WAKEUP_WKUP_POL_P1_REG --------------------------- */ -#define WAKEUP_WKUP_POL_P1_REG_WKUP_POL_P1_Pos (0UL) /*!< WAKEUP WKUP_POL_P1_REG: WKUP_POL_P1 (Bit 0) */ -#define WAKEUP_WKUP_POL_P1_REG_WKUP_POL_P1_Msk (0xffUL) /*!< WAKEUP WKUP_POL_P1_REG: WKUP_POL_P1 (Bitfield-Mask: 0xff) */ - -/* --------------------------- WAKEUP_WKUP_POL_P2_REG --------------------------- */ -#define WAKEUP_WKUP_POL_P2_REG_WKUP_POL_P2_Pos (0UL) /*!< WAKEUP WKUP_POL_P2_REG: WKUP_POL_P2 (Bit 0) */ -#define WAKEUP_WKUP_POL_P2_REG_WKUP_POL_P2_Msk (0x1fUL) /*!< WAKEUP WKUP_POL_P2_REG: WKUP_POL_P2 (Bitfield-Mask: 0x1f) */ - -/* --------------------------- WAKEUP_WKUP_POL_P3_REG --------------------------- */ -#define WAKEUP_WKUP_POL_P3_REG_WKUP_POL_P3_Pos (0UL) /*!< WAKEUP WKUP_POL_P3_REG: WKUP_POL_P3 (Bit 0) */ -#define WAKEUP_WKUP_POL_P3_REG_WKUP_POL_P3_Msk (0xffUL) /*!< WAKEUP WKUP_POL_P3_REG: WKUP_POL_P3 (Bitfield-Mask: 0xff) */ - -/* --------------------------- WAKEUP_WKUP_POL_P4_REG --------------------------- */ -#define WAKEUP_WKUP_POL_P4_REG_WKUP_POL_P4_Pos (0UL) /*!< WAKEUP WKUP_POL_P4_REG: WKUP_POL_P4 (Bit 0) */ -#define WAKEUP_WKUP_POL_P4_REG_WKUP_POL_P4_Msk (0xffUL) /*!< WAKEUP WKUP_POL_P4_REG: WKUP_POL_P4 (Bitfield-Mask: 0xff) */ - -/* -------------------------- WAKEUP_WKUP_STATUS_0_REG -------------------------- */ -#define WAKEUP_WKUP_STATUS_0_REG_WKUP_STAT_P0_Pos (0UL) /*!< WAKEUP WKUP_STATUS_0_REG: WKUP_STAT_P0 (Bit 0) */ -#define WAKEUP_WKUP_STATUS_0_REG_WKUP_STAT_P0_Msk (0xffUL) /*!< WAKEUP WKUP_STATUS_0_REG: WKUP_STAT_P0 (Bitfield-Mask: 0xff) */ -#define WAKEUP_WKUP_STATUS_0_REG_WKUP_STAT_P1_Pos (8UL) /*!< WAKEUP WKUP_STATUS_0_REG: WKUP_STAT_P1 (Bit 8) */ -#define WAKEUP_WKUP_STATUS_0_REG_WKUP_STAT_P1_Msk (0xff00UL) /*!< WAKEUP WKUP_STATUS_0_REG: WKUP_STAT_P1 (Bitfield-Mask: 0xff) */ - -/* -------------------------- WAKEUP_WKUP_STATUS_1_REG -------------------------- */ -#define WAKEUP_WKUP_STATUS_1_REG_WKUP_STAT_P2_Pos (0UL) /*!< WAKEUP WKUP_STATUS_1_REG: WKUP_STAT_P2 (Bit 0) */ -#define WAKEUP_WKUP_STATUS_1_REG_WKUP_STAT_P2_Msk (0x1fUL) /*!< WAKEUP WKUP_STATUS_1_REG: WKUP_STAT_P2 (Bitfield-Mask: 0x1f) */ - -/* -------------------------- WAKEUP_WKUP_STATUS_2_REG -------------------------- */ -#define WAKEUP_WKUP_STATUS_2_REG_WKUP_STAT_P3_Pos (0UL) /*!< WAKEUP WKUP_STATUS_2_REG: WKUP_STAT_P3 (Bit 0) */ -#define WAKEUP_WKUP_STATUS_2_REG_WKUP_STAT_P3_Msk (0xffUL) /*!< WAKEUP WKUP_STATUS_2_REG: WKUP_STAT_P3 (Bitfield-Mask: 0xff) */ -#define WAKEUP_WKUP_STATUS_2_REG_WKUP_STAT_P4_Pos (8UL) /*!< WAKEUP WKUP_STATUS_2_REG: WKUP_STAT_P4 (Bit 8) */ -#define WAKEUP_WKUP_STATUS_2_REG_WKUP_STAT_P4_Msk (0xff00UL) /*!< WAKEUP WKUP_STATUS_2_REG: WKUP_STAT_P4 (Bitfield-Mask: 0xff) */ - -/* --------------------------- WAKEUP_WKUP_CLEAR_0_REG -------------------------- */ -#define WAKEUP_WKUP_CLEAR_0_REG_WKUP_CLEAR_P0_Pos (0UL) /*!< WAKEUP WKUP_CLEAR_0_REG: WKUP_CLEAR_P0 (Bit 0) */ -#define WAKEUP_WKUP_CLEAR_0_REG_WKUP_CLEAR_P0_Msk (0xffUL) /*!< WAKEUP WKUP_CLEAR_0_REG: WKUP_CLEAR_P0 (Bitfield-Mask: 0xff) */ -#define WAKEUP_WKUP_CLEAR_0_REG_WKUP_CLEAR_P1_Pos (8UL) /*!< WAKEUP WKUP_CLEAR_0_REG: WKUP_CLEAR_P1 (Bit 8) */ -#define WAKEUP_WKUP_CLEAR_0_REG_WKUP_CLEAR_P1_Msk (0xff00UL) /*!< WAKEUP WKUP_CLEAR_0_REG: WKUP_CLEAR_P1 (Bitfield-Mask: 0xff) */ - -/* --------------------------- WAKEUP_WKUP_CLEAR_1_REG -------------------------- */ -#define WAKEUP_WKUP_CLEAR_1_REG_WKUP_CLEAR_P2_Pos (0UL) /*!< WAKEUP WKUP_CLEAR_1_REG: WKUP_CLEAR_P2 (Bit 0) */ -#define WAKEUP_WKUP_CLEAR_1_REG_WKUP_CLEAR_P2_Msk (0x1fUL) /*!< WAKEUP WKUP_CLEAR_1_REG: WKUP_CLEAR_P2 (Bitfield-Mask: 0x1f) */ - -/* --------------------------- WAKEUP_WKUP_CLEAR_2_REG -------------------------- */ -#define WAKEUP_WKUP_CLEAR_2_REG_WKUP_CLEAR_P3_Pos (0UL) /*!< WAKEUP WKUP_CLEAR_2_REG: WKUP_CLEAR_P3 (Bit 0) */ -#define WAKEUP_WKUP_CLEAR_2_REG_WKUP_CLEAR_P3_Msk (0xffUL) /*!< WAKEUP WKUP_CLEAR_2_REG: WKUP_CLEAR_P3 (Bitfield-Mask: 0xff) */ -#define WAKEUP_WKUP_CLEAR_2_REG_WKUP_CLEAR_P4_Pos (8UL) /*!< WAKEUP WKUP_CLEAR_2_REG: WKUP_CLEAR_P4 (Bit 8) */ -#define WAKEUP_WKUP_CLEAR_2_REG_WKUP_CLEAR_P4_Msk (0xff00UL) /*!< WAKEUP WKUP_CLEAR_2_REG: WKUP_CLEAR_P4 (Bitfield-Mask: 0xff) */ - -/* ------------------------- WAKEUP_WKUP_SEL_GPIO_P0_REG ------------------------ */ -#define WAKEUP_WKUP_SEL_GPIO_P0_REG_WKUP_SEL_GPIO_P0_Pos (0UL) /*!< WAKEUP WKUP_SEL_GPIO_P0_REG: WKUP_SEL_GPIO_P0 (Bit 0) */ -#define WAKEUP_WKUP_SEL_GPIO_P0_REG_WKUP_SEL_GPIO_P0_Msk (0xffUL) /*!< WAKEUP WKUP_SEL_GPIO_P0_REG: WKUP_SEL_GPIO_P0 (Bitfield-Mask: 0xff) */ - -/* ------------------------- WAKEUP_WKUP_SEL_GPIO_P1_REG ------------------------ */ -#define WAKEUP_WKUP_SEL_GPIO_P1_REG_WKUP_SEL_GPIO_P1_Pos (0UL) /*!< WAKEUP WKUP_SEL_GPIO_P1_REG: WKUP_SEL_GPIO_P1 (Bit 0) */ -#define WAKEUP_WKUP_SEL_GPIO_P1_REG_WKUP_SEL_GPIO_P1_Msk (0xffUL) /*!< WAKEUP WKUP_SEL_GPIO_P1_REG: WKUP_SEL_GPIO_P1 (Bitfield-Mask: 0xff) */ - -/* ------------------------- WAKEUP_WKUP_SEL_GPIO_P2_REG ------------------------ */ -#define WAKEUP_WKUP_SEL_GPIO_P2_REG_WKUP_SEL_GPIO_P2_Pos (0UL) /*!< WAKEUP WKUP_SEL_GPIO_P2_REG: WKUP_SEL_GPIO_P2 (Bit 0) */ -#define WAKEUP_WKUP_SEL_GPIO_P2_REG_WKUP_SEL_GPIO_P2_Msk (0x1fUL) /*!< WAKEUP WKUP_SEL_GPIO_P2_REG: WKUP_SEL_GPIO_P2 (Bitfield-Mask: 0x1f) */ - -/* ------------------------- WAKEUP_WKUP_SEL_GPIO_P3_REG ------------------------ */ -#define WAKEUP_WKUP_SEL_GPIO_P3_REG_WKUP_SEL_GPIO_P3_Pos (0UL) /*!< WAKEUP WKUP_SEL_GPIO_P3_REG: WKUP_SEL_GPIO_P3 (Bit 0) */ -#define WAKEUP_WKUP_SEL_GPIO_P3_REG_WKUP_SEL_GPIO_P3_Msk (0xffUL) /*!< WAKEUP WKUP_SEL_GPIO_P3_REG: WKUP_SEL_GPIO_P3 (Bitfield-Mask: 0xff) */ - -/* ------------------------- WAKEUP_WKUP_SEL_GPIO_P4_REG ------------------------ */ -#define WAKEUP_WKUP_SEL_GPIO_P4_REG_WKUP_SEL_GPIO_P4_Pos (0UL) /*!< WAKEUP WKUP_SEL_GPIO_P4_REG: WKUP_SEL_GPIO_P4 (Bit 0) */ -#define WAKEUP_WKUP_SEL_GPIO_P4_REG_WKUP_SEL_GPIO_P4_Msk (0xffUL) /*!< WAKEUP WKUP_SEL_GPIO_P4_REG: WKUP_SEL_GPIO_P4 (Bitfield-Mask: 0xff) */ - - -/* ================================================================================ */ -/* ================ struct 'WDOG' Position & Mask ================ */ -/* ================================================================================ */ - - -/* ------------------------------ WDOG_WATCHDOG_REG ----------------------------- */ -#define WDOG_WATCHDOG_REG_WDOG_VAL_Pos (0UL) /*!< WDOG WATCHDOG_REG: WDOG_VAL (Bit 0) */ -#define WDOG_WATCHDOG_REG_WDOG_VAL_Msk (0xffUL) /*!< WDOG WATCHDOG_REG: WDOG_VAL (Bitfield-Mask: 0xff) */ -#define WDOG_WATCHDOG_REG_WDOG_VAL_NEG_Pos (8UL) /*!< WDOG WATCHDOG_REG: WDOG_VAL_NEG (Bit 8) */ -#define WDOG_WATCHDOG_REG_WDOG_VAL_NEG_Msk (0x100UL) /*!< WDOG WATCHDOG_REG: WDOG_VAL_NEG (Bitfield-Mask: 0x01) */ -#define WDOG_WATCHDOG_REG_WDOG_WEN_Pos (9UL) /*!< WDOG WATCHDOG_REG: WDOG_WEN (Bit 9) */ -#define WDOG_WATCHDOG_REG_WDOG_WEN_Msk (0xfe00UL) /*!< WDOG WATCHDOG_REG: WDOG_WEN (Bitfield-Mask: 0x7f) */ - -/* --------------------------- WDOG_WATCHDOG_CTRL_REG --------------------------- */ -#define WDOG_WATCHDOG_CTRL_REG_NMI_RST_Pos (0UL) /*!< WDOG WATCHDOG_CTRL_REG: NMI_RST (Bit 0) */ -#define WDOG_WATCHDOG_CTRL_REG_NMI_RST_Msk (0x1UL) /*!< WDOG WATCHDOG_CTRL_REG: NMI_RST (Bitfield-Mask: 0x01) */ - - - -/* ================================================================================ */ -/* ================ Peripheral memory map ================ */ -/* ================================================================================ */ - -#define AES_HASH_BASE 0x40020000UL -#define ANAMISC_BASE 0x50001B00UL -#define APU_BASE 0x50004000UL -#define BLE_BASE 0x40000000UL -#define CACHE_BASE 0x400C3000UL -#define CHIP_VERSION_BASE 0x50003200UL -#define COEX_BASE 0x50002F00UL -#define CRG_PER_BASE 0x50001C00UL -#define CRG_TOP_BASE 0x50000000UL -#define DCDC_BASE 0x50000080UL -#define DEM_BASE 0x50002E00UL -#define DMA_BASE 0x50003500UL -#define ECC_BASE 0x50006000UL -#define FTDF_BASE 0x40080000UL -#define GP_TIMERS_BASE 0x50003400UL -#define GPADC_BASE 0x50001900UL -#define GPIO_BASE 0x50003000UL -#define GPREG_BASE 0x50003300UL -#define I2C_BASE 0x50001400UL -#define I2C2_BASE 0x50001500UL -#define IR_BASE 0x50001700UL -#define KBSCAN_BASE 0x50001600UL -#define OTPC_BASE 0x07F40000UL -#define PATCH_BASE 0x40050000UL -#define PLLDIG_BASE 0x50002D00UL -#define QSPIC_BASE 0x0C000000UL -#define QUAD_BASE 0x50001A00UL -#define RFCU_BASE 0x50002000UL -#define RFCU_POWER_BASE 0x50002200UL -#define RFPT_BASE 0x50003600UL -#define SPI_BASE 0x50001200UL -#define SPI2_BASE 0x50001300UL -#define TIMER1_BASE 0x50000200UL -#define TRNG_BASE 0x50005000UL -#define UART_BASE 0x50001000UL -#define UART2_BASE 0x50001100UL -#define USB_BASE 0x50001800UL -#define WAKEUP_BASE 0x50000100UL -#define WDOG_BASE 0x50003100UL - - -/* ================================================================================ */ -/* ================ Peripheral declaration ================ */ -/* ================================================================================ */ - -#define AES_HASH ((AES_HASH_Type *) AES_HASH_BASE) -#define ANAMISC ((ANAMISC_Type *) ANAMISC_BASE) -#define APU ((APU_Type *) APU_BASE) -#define BLE ((BLE_Type *) BLE_BASE) -#define CACHE ((CACHE_Type *) CACHE_BASE) -#define CHIP_VERSION ((CHIP_VERSION_Type *) CHIP_VERSION_BASE) -#define COEX ((COEX_Type *) COEX_BASE) -#define CRG_PER ((CRG_PER_Type *) CRG_PER_BASE) -#define CRG_TOP ((CRG_TOP_Type *) CRG_TOP_BASE) -#define DCDC ((DCDC_Type *) DCDC_BASE) -#define DEM ((DEM_Type *) DEM_BASE) -#define DMA ((DMA_Type *) DMA_BASE) -#define ECC ((ECC_Type *) ECC_BASE) -#define FTDF ((FTDF_Type *) FTDF_BASE) -#define GP_TIMERS ((GP_TIMERS_Type *) GP_TIMERS_BASE) -#define GPADC ((GPADC_Type *) GPADC_BASE) -#define GPIO ((GPIO_Type *) GPIO_BASE) -#define GPREG ((GPREG_Type *) GPREG_BASE) -#define I2C ((I2C_Type *) I2C_BASE) -#define I2C2 ((I2C2_Type *) I2C2_BASE) -#define IR ((IR_Type *) IR_BASE) -#define KBSCAN ((KBSCAN_Type *) KBSCAN_BASE) -#define OTPC ((OTPC_Type *) OTPC_BASE) -#define PATCH ((PATCH_Type *) PATCH_BASE) -#define PLLDIG ((PLLDIG_Type *) PLLDIG_BASE) -#define QSPIC ((QSPIC_Type *) QSPIC_BASE) -#define QUAD ((QUAD_Type *) QUAD_BASE) -#define RFCU ((RFCU_Type *) RFCU_BASE) -#define RFCU_POWER ((RFCU_POWER_Type *) RFCU_POWER_BASE) -#define RFPT ((RFPT_Type *) RFPT_BASE) -#define SPI ((SPI_Type *) SPI_BASE) -#define SPI2 ((SPI2_Type *) SPI2_BASE) -#define TIMER1 ((TIMER1_Type *) TIMER1_BASE) -#define TRNG ((TRNG_Type *) TRNG_BASE) -#define UART ((UART_Type *) UART_BASE) -#define UART2 ((UART2_Type *) UART2_BASE) -#define USB ((USB_Type *) USB_BASE) -#define WAKEUP ((WAKEUP_Type *) WAKEUP_BASE) -#define WDOG ((WDOG_Type *) WDOG_BASE) - - -/** @} */ /* End of group Device_Peripheral_Registers */ -/** @} */ /* End of group DA14680BB */ -/** @} */ /* End of group Dialog */ - -#ifdef __cplusplus -} -#endif - - -#endif /* DA14680BB_H */ - diff --git a/third_party/dialog/DialogSDK/bsp/include/cmsis_gcc.h b/third_party/dialog/DialogSDK/bsp/include/cmsis_gcc.h deleted file mode 100644 index bb89fbba9..000000000 --- a/third_party/dialog/DialogSDK/bsp/include/cmsis_gcc.h +++ /dev/null @@ -1,1373 +0,0 @@ -/**************************************************************************//** - * @file cmsis_gcc.h - * @brief CMSIS Cortex-M Core Function/Instruction Header File - * @version V4.30 - * @date 20. October 2015 - ******************************************************************************/ -/* Copyright (c) 2009 - 2015 ARM LIMITED - - All rights reserved. - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of ARM nor the names of its contributors may be used - to endorse or promote products derived from this software without - specific prior written permission. - * - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDERS AND CONTRIBUTORS BE - LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - POSSIBILITY OF SUCH DAMAGE. - ---------------------------------------------------------------------------*/ - - -#ifndef __CMSIS_GCC_H -#define __CMSIS_GCC_H - -/* ignore some GCC warnings */ -#if defined ( __GNUC__ ) -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wsign-conversion" -#pragma GCC diagnostic ignored "-Wconversion" -#pragma GCC diagnostic ignored "-Wunused-parameter" -#endif - - -/* ########################### Core Function Access ########################### */ -/** \ingroup CMSIS_Core_FunctionInterface - \defgroup CMSIS_Core_RegAccFunctions CMSIS Core Register Access Functions - @{ - */ - -/** - \brief Enable IRQ Interrupts - \details Enables IRQ interrupts by clearing the I-bit in the CPSR. - Can only be executed in Privileged modes. - */ -__attribute__( ( always_inline ) ) __STATIC_INLINE void __enable_irq(void) -{ - __ASM volatile ("cpsie i" : : : "memory"); -} - - -/** - \brief Disable IRQ Interrupts - \details Disables IRQ interrupts by setting the I-bit in the CPSR. - Can only be executed in Privileged modes. - */ -__attribute__( ( always_inline ) ) __STATIC_INLINE void __disable_irq(void) -{ - __ASM volatile ("cpsid i" : : : "memory"); -} - - -/** - \brief Get Control Register - \details Returns the content of the Control Register. - \return Control Register value - */ -__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __get_CONTROL(void) -{ - uint32_t result; - - __ASM volatile ("MRS %0, control" : "=r" (result) ); - return(result); -} - - -/** - \brief Set Control Register - \details Writes the given value to the Control Register. - \param [in] control Control Register value to set - */ -__attribute__( ( always_inline ) ) __STATIC_INLINE void __set_CONTROL(uint32_t control) -{ - __ASM volatile ("MSR control, %0" : : "r" (control) : "memory"); -} - - -/** - \brief Get IPSR Register - \details Returns the content of the IPSR Register. - \return IPSR Register value - */ -__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __get_IPSR(void) -{ - uint32_t result; - - __ASM volatile ("MRS %0, ipsr" : "=r" (result) ); - return(result); -} - - -/** - \brief Get APSR Register - \details Returns the content of the APSR Register. - \return APSR Register value - */ -__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __get_APSR(void) -{ - uint32_t result; - - __ASM volatile ("MRS %0, apsr" : "=r" (result) ); - return(result); -} - - -/** - \brief Get xPSR Register - \details Returns the content of the xPSR Register. - - \return xPSR Register value - */ -__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __get_xPSR(void) -{ - uint32_t result; - - __ASM volatile ("MRS %0, xpsr" : "=r" (result) ); - return(result); -} - - -/** - \brief Get Process Stack Pointer - \details Returns the current value of the Process Stack Pointer (PSP). - \return PSP Register value - */ -__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __get_PSP(void) -{ - register uint32_t result; - - __ASM volatile ("MRS %0, psp\n" : "=r" (result) ); - return(result); -} - - -/** - \brief Set Process Stack Pointer - \details Assigns the given value to the Process Stack Pointer (PSP). - \param [in] topOfProcStack Process Stack Pointer value to set - */ -__attribute__( ( always_inline ) ) __STATIC_INLINE void __set_PSP(uint32_t topOfProcStack) -{ - __ASM volatile ("MSR psp, %0\n" : : "r" (topOfProcStack) : "sp"); -} - - -/** - \brief Get Main Stack Pointer - \details Returns the current value of the Main Stack Pointer (MSP). - \return MSP Register value - */ -__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __get_MSP(void) -{ - register uint32_t result; - - __ASM volatile ("MRS %0, msp\n" : "=r" (result) ); - return(result); -} - - -/** - \brief Set Main Stack Pointer - \details Assigns the given value to the Main Stack Pointer (MSP). - - \param [in] topOfMainStack Main Stack Pointer value to set - */ -__attribute__( ( always_inline ) ) __STATIC_INLINE void __set_MSP(uint32_t topOfMainStack) -{ - __ASM volatile ("MSR msp, %0\n" : : "r" (topOfMainStack) : "sp"); -} - - -/** - \brief Get Priority Mask - \details Returns the current state of the priority mask bit from the Priority Mask Register. - \return Priority Mask value - */ -__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __get_PRIMASK(void) -{ - uint32_t result; - - __ASM volatile ("MRS %0, primask" : "=r" (result) ); - return(result); -} - - -/** - \brief Set Priority Mask - \details Assigns the given value to the Priority Mask Register. - \param [in] priMask Priority Mask - */ -__attribute__( ( always_inline ) ) __STATIC_INLINE void __set_PRIMASK(uint32_t priMask) -{ - __ASM volatile ("MSR primask, %0" : : "r" (priMask) : "memory"); -} - - -#if (__CORTEX_M >= 0x03U) - -/** - \brief Enable FIQ - \details Enables FIQ interrupts by clearing the F-bit in the CPSR. - Can only be executed in Privileged modes. - */ -__attribute__( ( always_inline ) ) __STATIC_INLINE void __enable_fault_irq(void) -{ - __ASM volatile ("cpsie f" : : : "memory"); -} - - -/** - \brief Disable FIQ - \details Disables FIQ interrupts by setting the F-bit in the CPSR. - Can only be executed in Privileged modes. - */ -__attribute__( ( always_inline ) ) __STATIC_INLINE void __disable_fault_irq(void) -{ - __ASM volatile ("cpsid f" : : : "memory"); -} - - -/** - \brief Get Base Priority - \details Returns the current value of the Base Priority register. - \return Base Priority register value - */ -__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __get_BASEPRI(void) -{ - uint32_t result; - - __ASM volatile ("MRS %0, basepri" : "=r" (result) ); - return(result); -} - - -/** - \brief Set Base Priority - \details Assigns the given value to the Base Priority register. - \param [in] basePri Base Priority value to set - */ -__attribute__( ( always_inline ) ) __STATIC_INLINE void __set_BASEPRI(uint32_t value) -{ - __ASM volatile ("MSR basepri, %0" : : "r" (value) : "memory"); -} - - -/** - \brief Set Base Priority with condition - \details Assigns the given value to the Base Priority register only if BASEPRI masking is disabled, - or the new value increases the BASEPRI priority level. - \param [in] basePri Base Priority value to set - */ -__attribute__( ( always_inline ) ) __STATIC_INLINE void __set_BASEPRI_MAX(uint32_t value) -{ - __ASM volatile ("MSR basepri_max, %0" : : "r" (value) : "memory"); -} - - -/** - \brief Get Fault Mask - \details Returns the current value of the Fault Mask register. - \return Fault Mask register value - */ -__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __get_FAULTMASK(void) -{ - uint32_t result; - - __ASM volatile ("MRS %0, faultmask" : "=r" (result) ); - return(result); -} - - -/** - \brief Set Fault Mask - \details Assigns the given value to the Fault Mask register. - \param [in] faultMask Fault Mask value to set - */ -__attribute__( ( always_inline ) ) __STATIC_INLINE void __set_FAULTMASK(uint32_t faultMask) -{ - __ASM volatile ("MSR faultmask, %0" : : "r" (faultMask) : "memory"); -} - -#endif /* (__CORTEX_M >= 0x03U) */ - - -#if (__CORTEX_M == 0x04U) || (__CORTEX_M == 0x07U) - -/** - \brief Get FPSCR - \details Returns the current value of the Floating Point Status/Control register. - \return Floating Point Status/Control register value - */ -__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __get_FPSCR(void) -{ -#if (__FPU_PRESENT == 1U) && (__FPU_USED == 1U) - uint32_t result; - - /* Empty asm statement works as a scheduling barrier */ - __ASM volatile (""); - __ASM volatile ("VMRS %0, fpscr" : "=r" (result) ); - __ASM volatile (""); - return(result); -#else - return(0); -#endif -} - - -/** - \brief Set FPSCR - \details Assigns the given value to the Floating Point Status/Control register. - \param [in] fpscr Floating Point Status/Control value to set - */ -__attribute__( ( always_inline ) ) __STATIC_INLINE void __set_FPSCR(uint32_t fpscr) -{ -#if (__FPU_PRESENT == 1U) && (__FPU_USED == 1U) - /* Empty asm statement works as a scheduling barrier */ - __ASM volatile (""); - __ASM volatile ("VMSR fpscr, %0" : : "r" (fpscr) : "vfpcc"); - __ASM volatile (""); -#endif -} - -#endif /* (__CORTEX_M == 0x04U) || (__CORTEX_M == 0x07U) */ - - - -/*@} end of CMSIS_Core_RegAccFunctions */ - - -/* ########################## Core Instruction Access ######################### */ -/** \defgroup CMSIS_Core_InstructionInterface CMSIS Core Instruction Interface - Access to dedicated instructions - @{ -*/ - -/* Define macros for porting to both thumb1 and thumb2. - * For thumb1, use low register (r0-r7), specified by constraint "l" - * Otherwise, use general registers, specified by constraint "r" */ -#if defined (__thumb__) && !defined (__thumb2__) -#define __CMSIS_GCC_OUT_REG(r) "=l" (r) -#define __CMSIS_GCC_USE_REG(r) "l" (r) -#else -#define __CMSIS_GCC_OUT_REG(r) "=r" (r) -#define __CMSIS_GCC_USE_REG(r) "r" (r) -#endif - -/** - \brief No Operation - \details No Operation does nothing. This instruction can be used for code alignment purposes. - */ -__attribute__((always_inline)) __STATIC_INLINE void __NOP(void) -{ - __ASM volatile ("nop"); -} - - -/** - \brief Wait For Interrupt - \details Wait For Interrupt is a hint instruction that suspends execution until one of a number of events occurs. - */ -__attribute__((always_inline)) __STATIC_INLINE void __WFI(void) -{ - __ASM volatile ("wfi"); -} - - -/** - \brief Wait For Event - \details Wait For Event is a hint instruction that permits the processor to enter - a low-power state until one of a number of events occurs. - */ -__attribute__((always_inline)) __STATIC_INLINE void __WFE(void) -{ - __ASM volatile ("wfe"); -} - - -/** - \brief Send Event - \details Send Event is a hint instruction. It causes an event to be signaled to the CPU. - */ -__attribute__((always_inline)) __STATIC_INLINE void __SEV(void) -{ - __ASM volatile ("sev"); -} - - -/** - \brief Instruction Synchronization Barrier - \details Instruction Synchronization Barrier flushes the pipeline in the processor, - so that all instructions following the ISB are fetched from cache or memory, - after the instruction has been completed. - */ -__attribute__((always_inline)) __STATIC_INLINE void __ISB(void) -{ - __ASM volatile ("isb 0xF":::"memory"); -} - - -/** - \brief Data Synchronization Barrier - \details Acts as a special kind of Data Memory Barrier. - It completes when all explicit memory accesses before this instruction complete. - */ -__attribute__((always_inline)) __STATIC_INLINE void __DSB(void) -{ - __ASM volatile ("dsb 0xF":::"memory"); -} - - -/** - \brief Data Memory Barrier - \details Ensures the apparent order of the explicit memory operations before - and after the instruction, without ensuring their completion. - */ -__attribute__((always_inline)) __STATIC_INLINE void __DMB(void) -{ - __ASM volatile ("dmb 0xF":::"memory"); -} - - -/** - \brief Reverse byte order (32 bit) - \details Reverses the byte order in integer value. - \param [in] value Value to reverse - \return Reversed value - */ -__attribute__((always_inline)) __STATIC_INLINE uint32_t __REV(uint32_t value) -{ -#if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 5) - return __builtin_bswap32(value); -#else - uint32_t result; - - __ASM volatile ("rev %0, %1" : __CMSIS_GCC_OUT_REG (result) : __CMSIS_GCC_USE_REG (value) ); - return(result); -#endif -} - - -/** - \brief Reverse byte order (16 bit) - \details Reverses the byte order in two unsigned short values. - \param [in] value Value to reverse - \return Reversed value - */ -__attribute__((always_inline)) __STATIC_INLINE uint32_t __REV16(uint32_t value) -{ - uint32_t result; - - __ASM volatile ("rev16 %0, %1" : __CMSIS_GCC_OUT_REG (result) : __CMSIS_GCC_USE_REG (value) ); - return(result); -} - - -/** - \brief Reverse byte order in signed short value - \details Reverses the byte order in a signed short value with sign extension to integer. - \param [in] value Value to reverse - \return Reversed value - */ -__attribute__((always_inline)) __STATIC_INLINE int32_t __REVSH(int32_t value) -{ -#if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8) - return (short)__builtin_bswap16(value); -#else - int32_t result; - - __ASM volatile ("revsh %0, %1" : __CMSIS_GCC_OUT_REG (result) : __CMSIS_GCC_USE_REG (value) ); - return(result); -#endif -} - - -/** - \brief Rotate Right in unsigned value (32 bit) - \details Rotate Right (immediate) provides the value of the contents of a register rotated by a variable number of bits. - \param [in] value Value to rotate - \param [in] value Number of Bits to rotate - \return Rotated value - */ -__attribute__((always_inline)) __STATIC_INLINE uint32_t __ROR(uint32_t op1, uint32_t op2) -{ - return (op1 >> op2) | (op1 << (32U - op2)); -} - - -/** - \brief Breakpoint - \details Causes the processor to enter Debug state. - Debug tools can use this to investigate system state when the instruction at a particular address is reached. - \param [in] value is ignored by the processor. - If required, a debugger can use it to store additional information about the breakpoint. - */ -#define __BKPT(value) __ASM volatile ("bkpt "#value) - - -/** - \brief Reverse bit order of value - \details Reverses the bit order of the given value. - \param [in] value Value to reverse - \return Reversed value - */ -__attribute__((always_inline)) __STATIC_INLINE uint32_t __RBIT(uint32_t value) -{ - uint32_t result; - -#if (__CORTEX_M >= 0x03U) || (__CORTEX_SC >= 300U) - __ASM volatile ("rbit %0, %1" : "=r" (result) : "r" (value) ); -#else - int32_t s = 4 /*sizeof(v)*/ * 8 - 1; /* extra shift needed at end */ - - result = value; /* r will be reversed bits of v; first get LSB of v */ - for (value >>= 1U; value; value >>= 1U) - { - result <<= 1U; - result |= value & 1U; - s--; - } - result <<= s; /* shift when v's highest bits are zero */ -#endif - return(result); -} - - -/** - \brief Count leading zeros - \details Counts the number of leading zeros of a data value. - \param [in] value Value to count the leading zeros - \return number of leading zeros in value - */ -#define __CLZ __builtin_clz - - -#if (__CORTEX_M >= 0x03U) || (__CORTEX_SC >= 300U) - -/** - \brief LDR Exclusive (8 bit) - \details Executes a exclusive LDR instruction for 8 bit value. - \param [in] ptr Pointer to data - \return value of type uint8_t at (*ptr) - */ -__attribute__((always_inline)) __STATIC_INLINE uint8_t __LDREXB(volatile uint8_t *addr) -{ - uint32_t result; - -#if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8) - __ASM volatile ("ldrexb %0, %1" : "=r" (result) : "Q" (*addr) ); -#else - /* Prior to GCC 4.8, "Q" will be expanded to [rx, #0] which is not - accepted by assembler. So has to use following less efficient pattern. - */ - __ASM volatile ("ldrexb %0, [%1]" : "=r" (result) : "r" (addr) : "memory" ); -#endif - return ((uint8_t) result); /* Add explicit type cast here */ -} - - -/** - \brief LDR Exclusive (16 bit) - \details Executes a exclusive LDR instruction for 16 bit values. - \param [in] ptr Pointer to data - \return value of type uint16_t at (*ptr) - */ -__attribute__((always_inline)) __STATIC_INLINE uint16_t __LDREXH(volatile uint16_t *addr) -{ - uint32_t result; - -#if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8) - __ASM volatile ("ldrexh %0, %1" : "=r" (result) : "Q" (*addr) ); -#else - /* Prior to GCC 4.8, "Q" will be expanded to [rx, #0] which is not - accepted by assembler. So has to use following less efficient pattern. - */ - __ASM volatile ("ldrexh %0, [%1]" : "=r" (result) : "r" (addr) : "memory" ); -#endif - return ((uint16_t) result); /* Add explicit type cast here */ -} - - -/** - \brief LDR Exclusive (32 bit) - \details Executes a exclusive LDR instruction for 32 bit values. - \param [in] ptr Pointer to data - \return value of type uint32_t at (*ptr) - */ -__attribute__((always_inline)) __STATIC_INLINE uint32_t __LDREXW(volatile uint32_t *addr) -{ - uint32_t result; - - __ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) ); - return(result); -} - - -/** - \brief STR Exclusive (8 bit) - \details Executes a exclusive STR instruction for 8 bit values. - \param [in] value Value to store - \param [in] ptr Pointer to location - \return 0 Function succeeded - \return 1 Function failed - */ -__attribute__((always_inline)) __STATIC_INLINE uint32_t __STREXB(uint8_t value, volatile uint8_t *addr) -{ - uint32_t result; - - __ASM volatile ("strexb %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" ((uint32_t)value) ); - return(result); -} - - -/** - \brief STR Exclusive (16 bit) - \details Executes a exclusive STR instruction for 16 bit values. - \param [in] value Value to store - \param [in] ptr Pointer to location - \return 0 Function succeeded - \return 1 Function failed - */ -__attribute__((always_inline)) __STATIC_INLINE uint32_t __STREXH(uint16_t value, volatile uint16_t *addr) -{ - uint32_t result; - - __ASM volatile ("strexh %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" ((uint32_t)value) ); - return(result); -} - - -/** - \brief STR Exclusive (32 bit) - \details Executes a exclusive STR instruction for 32 bit values. - \param [in] value Value to store - \param [in] ptr Pointer to location - \return 0 Function succeeded - \return 1 Function failed - */ -__attribute__((always_inline)) __STATIC_INLINE uint32_t __STREXW(uint32_t value, volatile uint32_t *addr) -{ - uint32_t result; - - __ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) ); - return(result); -} - - -/** - \brief Remove the exclusive lock - \details Removes the exclusive lock which is created by LDREX. - */ -__attribute__((always_inline)) __STATIC_INLINE void __CLREX(void) -{ - __ASM volatile ("clrex" ::: "memory"); -} - - -/** - \brief Signed Saturate - \details Saturates a signed value. - \param [in] value Value to be saturated - \param [in] sat Bit position to saturate to (1..32) - \return Saturated value - */ -#define __SSAT(ARG1,ARG2) \ -({ \ - uint32_t __RES, __ARG1 = (ARG1); \ - __ASM ("ssat %0, %1, %2" : "=r" (__RES) : "I" (ARG2), "r" (__ARG1) ); \ - __RES; \ - }) - - -/** - \brief Unsigned Saturate - \details Saturates an unsigned value. - \param [in] value Value to be saturated - \param [in] sat Bit position to saturate to (0..31) - \return Saturated value - */ -#define __USAT(ARG1,ARG2) \ -({ \ - uint32_t __RES, __ARG1 = (ARG1); \ - __ASM ("usat %0, %1, %2" : "=r" (__RES) : "I" (ARG2), "r" (__ARG1) ); \ - __RES; \ - }) - - -/** - \brief Rotate Right with Extend (32 bit) - \details Moves each bit of a bitstring right by one bit. - The carry input is shifted in at the left end of the bitstring. - \param [in] value Value to rotate - \return Rotated value - */ -__attribute__((always_inline)) __STATIC_INLINE uint32_t __RRX(uint32_t value) -{ - uint32_t result; - - __ASM volatile ("rrx %0, %1" : __CMSIS_GCC_OUT_REG (result) : __CMSIS_GCC_USE_REG (value) ); - return(result); -} - - -/** - \brief LDRT Unprivileged (8 bit) - \details Executes a Unprivileged LDRT instruction for 8 bit value. - \param [in] ptr Pointer to data - \return value of type uint8_t at (*ptr) - */ -__attribute__((always_inline)) __STATIC_INLINE uint8_t __LDRBT(volatile uint8_t *addr) -{ - uint32_t result; - -#if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8) - __ASM volatile ("ldrbt %0, %1" : "=r" (result) : "Q" (*addr) ); -#else - /* Prior to GCC 4.8, "Q" will be expanded to [rx, #0] which is not - accepted by assembler. So has to use following less efficient pattern. - */ - __ASM volatile ("ldrbt %0, [%1]" : "=r" (result) : "r" (addr) : "memory" ); -#endif - return ((uint8_t) result); /* Add explicit type cast here */ -} - - -/** - \brief LDRT Unprivileged (16 bit) - \details Executes a Unprivileged LDRT instruction for 16 bit values. - \param [in] ptr Pointer to data - \return value of type uint16_t at (*ptr) - */ -__attribute__((always_inline)) __STATIC_INLINE uint16_t __LDRHT(volatile uint16_t *addr) -{ - uint32_t result; - -#if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8) - __ASM volatile ("ldrht %0, %1" : "=r" (result) : "Q" (*addr) ); -#else - /* Prior to GCC 4.8, "Q" will be expanded to [rx, #0] which is not - accepted by assembler. So has to use following less efficient pattern. - */ - __ASM volatile ("ldrht %0, [%1]" : "=r" (result) : "r" (addr) : "memory" ); -#endif - return ((uint16_t) result); /* Add explicit type cast here */ -} - - -/** - \brief LDRT Unprivileged (32 bit) - \details Executes a Unprivileged LDRT instruction for 32 bit values. - \param [in] ptr Pointer to data - \return value of type uint32_t at (*ptr) - */ -__attribute__((always_inline)) __STATIC_INLINE uint32_t __LDRT(volatile uint32_t *addr) -{ - uint32_t result; - - __ASM volatile ("ldrt %0, %1" : "=r" (result) : "Q" (*addr) ); - return(result); -} - - -/** - \brief STRT Unprivileged (8 bit) - \details Executes a Unprivileged STRT instruction for 8 bit values. - \param [in] value Value to store - \param [in] ptr Pointer to location - */ -__attribute__((always_inline)) __STATIC_INLINE void __STRBT(uint8_t value, volatile uint8_t *addr) -{ - __ASM volatile ("strbt %1, %0" : "=Q" (*addr) : "r" ((uint32_t)value) ); -} - - -/** - \brief STRT Unprivileged (16 bit) - \details Executes a Unprivileged STRT instruction for 16 bit values. - \param [in] value Value to store - \param [in] ptr Pointer to location - */ -__attribute__((always_inline)) __STATIC_INLINE void __STRHT(uint16_t value, volatile uint16_t *addr) -{ - __ASM volatile ("strht %1, %0" : "=Q" (*addr) : "r" ((uint32_t)value) ); -} - - -/** - \brief STRT Unprivileged (32 bit) - \details Executes a Unprivileged STRT instruction for 32 bit values. - \param [in] value Value to store - \param [in] ptr Pointer to location - */ -__attribute__((always_inline)) __STATIC_INLINE void __STRT(uint32_t value, volatile uint32_t *addr) -{ - __ASM volatile ("strt %1, %0" : "=Q" (*addr) : "r" (value) ); -} - -#endif /* (__CORTEX_M >= 0x03U) || (__CORTEX_SC >= 300U) */ - -/*@}*/ /* end of group CMSIS_Core_InstructionInterface */ - - -/* ################### Compiler specific Intrinsics ########################### */ -/** \defgroup CMSIS_SIMD_intrinsics CMSIS SIMD Intrinsics - Access to dedicated SIMD instructions - @{ -*/ - -#if (__CORTEX_M >= 0x04U) /* only for Cortex-M4 and above */ - -__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SADD8(uint32_t op1, uint32_t op2) -{ - uint32_t result; - - __ASM volatile ("sadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); - return(result); -} - -__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __QADD8(uint32_t op1, uint32_t op2) -{ - uint32_t result; - - __ASM volatile ("qadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); - return(result); -} - -__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SHADD8(uint32_t op1, uint32_t op2) -{ - uint32_t result; - - __ASM volatile ("shadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); - return(result); -} - -__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UADD8(uint32_t op1, uint32_t op2) -{ - uint32_t result; - - __ASM volatile ("uadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); - return(result); -} - -__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UQADD8(uint32_t op1, uint32_t op2) -{ - uint32_t result; - - __ASM volatile ("uqadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); - return(result); -} - -__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UHADD8(uint32_t op1, uint32_t op2) -{ - uint32_t result; - - __ASM volatile ("uhadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); - return(result); -} - - -__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SSUB8(uint32_t op1, uint32_t op2) -{ - uint32_t result; - - __ASM volatile ("ssub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); - return(result); -} - -__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __QSUB8(uint32_t op1, uint32_t op2) -{ - uint32_t result; - - __ASM volatile ("qsub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); - return(result); -} - -__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SHSUB8(uint32_t op1, uint32_t op2) -{ - uint32_t result; - - __ASM volatile ("shsub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); - return(result); -} - -__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __USUB8(uint32_t op1, uint32_t op2) -{ - uint32_t result; - - __ASM volatile ("usub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); - return(result); -} - -__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UQSUB8(uint32_t op1, uint32_t op2) -{ - uint32_t result; - - __ASM volatile ("uqsub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); - return(result); -} - -__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UHSUB8(uint32_t op1, uint32_t op2) -{ - uint32_t result; - - __ASM volatile ("uhsub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); - return(result); -} - - -__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SADD16(uint32_t op1, uint32_t op2) -{ - uint32_t result; - - __ASM volatile ("sadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); - return(result); -} - -__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __QADD16(uint32_t op1, uint32_t op2) -{ - uint32_t result; - - __ASM volatile ("qadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); - return(result); -} - -__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SHADD16(uint32_t op1, uint32_t op2) -{ - uint32_t result; - - __ASM volatile ("shadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); - return(result); -} - -__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UADD16(uint32_t op1, uint32_t op2) -{ - uint32_t result; - - __ASM volatile ("uadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); - return(result); -} - -__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UQADD16(uint32_t op1, uint32_t op2) -{ - uint32_t result; - - __ASM volatile ("uqadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); - return(result); -} - -__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UHADD16(uint32_t op1, uint32_t op2) -{ - uint32_t result; - - __ASM volatile ("uhadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); - return(result); -} - -__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SSUB16(uint32_t op1, uint32_t op2) -{ - uint32_t result; - - __ASM volatile ("ssub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); - return(result); -} - -__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __QSUB16(uint32_t op1, uint32_t op2) -{ - uint32_t result; - - __ASM volatile ("qsub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); - return(result); -} - -__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SHSUB16(uint32_t op1, uint32_t op2) -{ - uint32_t result; - - __ASM volatile ("shsub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); - return(result); -} - -__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __USUB16(uint32_t op1, uint32_t op2) -{ - uint32_t result; - - __ASM volatile ("usub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); - return(result); -} - -__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UQSUB16(uint32_t op1, uint32_t op2) -{ - uint32_t result; - - __ASM volatile ("uqsub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); - return(result); -} - -__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UHSUB16(uint32_t op1, uint32_t op2) -{ - uint32_t result; - - __ASM volatile ("uhsub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); - return(result); -} - -__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SASX(uint32_t op1, uint32_t op2) -{ - uint32_t result; - - __ASM volatile ("sasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); - return(result); -} - -__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __QASX(uint32_t op1, uint32_t op2) -{ - uint32_t result; - - __ASM volatile ("qasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); - return(result); -} - -__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SHASX(uint32_t op1, uint32_t op2) -{ - uint32_t result; - - __ASM volatile ("shasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); - return(result); -} - -__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UASX(uint32_t op1, uint32_t op2) -{ - uint32_t result; - - __ASM volatile ("uasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); - return(result); -} - -__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UQASX(uint32_t op1, uint32_t op2) -{ - uint32_t result; - - __ASM volatile ("uqasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); - return(result); -} - -__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UHASX(uint32_t op1, uint32_t op2) -{ - uint32_t result; - - __ASM volatile ("uhasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); - return(result); -} - -__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SSAX(uint32_t op1, uint32_t op2) -{ - uint32_t result; - - __ASM volatile ("ssax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); - return(result); -} - -__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __QSAX(uint32_t op1, uint32_t op2) -{ - uint32_t result; - - __ASM volatile ("qsax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); - return(result); -} - -__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SHSAX(uint32_t op1, uint32_t op2) -{ - uint32_t result; - - __ASM volatile ("shsax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); - return(result); -} - -__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __USAX(uint32_t op1, uint32_t op2) -{ - uint32_t result; - - __ASM volatile ("usax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); - return(result); -} - -__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UQSAX(uint32_t op1, uint32_t op2) -{ - uint32_t result; - - __ASM volatile ("uqsax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); - return(result); -} - -__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UHSAX(uint32_t op1, uint32_t op2) -{ - uint32_t result; - - __ASM volatile ("uhsax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); - return(result); -} - -__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __USAD8(uint32_t op1, uint32_t op2) -{ - uint32_t result; - - __ASM volatile ("usad8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); - return(result); -} - -__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __USADA8(uint32_t op1, uint32_t op2, uint32_t op3) -{ - uint32_t result; - - __ASM volatile ("usada8 %0, %1, %2, %3" : "=r" (result) : "r" (op1), "r" (op2), "r" (op3) ); - return(result); -} - -#define __SSAT16(ARG1,ARG2) \ -({ \ - int32_t __RES, __ARG1 = (ARG1); \ - __ASM ("ssat16 %0, %1, %2" : "=r" (__RES) : "I" (ARG2), "r" (__ARG1) ); \ - __RES; \ - }) - -#define __USAT16(ARG1,ARG2) \ -({ \ - uint32_t __RES, __ARG1 = (ARG1); \ - __ASM ("usat16 %0, %1, %2" : "=r" (__RES) : "I" (ARG2), "r" (__ARG1) ); \ - __RES; \ - }) - -__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UXTB16(uint32_t op1) -{ - uint32_t result; - - __ASM volatile ("uxtb16 %0, %1" : "=r" (result) : "r" (op1)); - return(result); -} - -__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UXTAB16(uint32_t op1, uint32_t op2) -{ - uint32_t result; - - __ASM volatile ("uxtab16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); - return(result); -} - -__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SXTB16(uint32_t op1) -{ - uint32_t result; - - __ASM volatile ("sxtb16 %0, %1" : "=r" (result) : "r" (op1)); - return(result); -} - -__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SXTAB16(uint32_t op1, uint32_t op2) -{ - uint32_t result; - - __ASM volatile ("sxtab16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); - return(result); -} - -__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SMUAD (uint32_t op1, uint32_t op2) -{ - uint32_t result; - - __ASM volatile ("smuad %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); - return(result); -} - -__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SMUADX (uint32_t op1, uint32_t op2) -{ - uint32_t result; - - __ASM volatile ("smuadx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); - return(result); -} - -__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SMLAD (uint32_t op1, uint32_t op2, uint32_t op3) -{ - uint32_t result; - - __ASM volatile ("smlad %0, %1, %2, %3" : "=r" (result) : "r" (op1), "r" (op2), "r" (op3) ); - return(result); -} - -__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SMLADX (uint32_t op1, uint32_t op2, uint32_t op3) -{ - uint32_t result; - - __ASM volatile ("smladx %0, %1, %2, %3" : "=r" (result) : "r" (op1), "r" (op2), "r" (op3) ); - return(result); -} - -__attribute__( ( always_inline ) ) __STATIC_INLINE uint64_t __SMLALD (uint32_t op1, uint32_t op2, uint64_t acc) -{ - union llreg_u{ - uint32_t w32[2]; - uint64_t w64; - } llr; - llr.w64 = acc; - -#ifndef __ARMEB__ /* Little endian */ - __ASM volatile ("smlald %0, %1, %2, %3" : "=r" (llr.w32[0]), "=r" (llr.w32[1]): "r" (op1), "r" (op2) , "0" (llr.w32[0]), "1" (llr.w32[1]) ); -#else /* Big endian */ - __ASM volatile ("smlald %0, %1, %2, %3" : "=r" (llr.w32[1]), "=r" (llr.w32[0]): "r" (op1), "r" (op2) , "0" (llr.w32[1]), "1" (llr.w32[0]) ); -#endif - - return(llr.w64); -} - -__attribute__( ( always_inline ) ) __STATIC_INLINE uint64_t __SMLALDX (uint32_t op1, uint32_t op2, uint64_t acc) -{ - union llreg_u{ - uint32_t w32[2]; - uint64_t w64; - } llr; - llr.w64 = acc; - -#ifndef __ARMEB__ /* Little endian */ - __ASM volatile ("smlaldx %0, %1, %2, %3" : "=r" (llr.w32[0]), "=r" (llr.w32[1]): "r" (op1), "r" (op2) , "0" (llr.w32[0]), "1" (llr.w32[1]) ); -#else /* Big endian */ - __ASM volatile ("smlaldx %0, %1, %2, %3" : "=r" (llr.w32[1]), "=r" (llr.w32[0]): "r" (op1), "r" (op2) , "0" (llr.w32[1]), "1" (llr.w32[0]) ); -#endif - - return(llr.w64); -} - -__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SMUSD (uint32_t op1, uint32_t op2) -{ - uint32_t result; - - __ASM volatile ("smusd %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); - return(result); -} - -__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SMUSDX (uint32_t op1, uint32_t op2) -{ - uint32_t result; - - __ASM volatile ("smusdx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); - return(result); -} - -__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SMLSD (uint32_t op1, uint32_t op2, uint32_t op3) -{ - uint32_t result; - - __ASM volatile ("smlsd %0, %1, %2, %3" : "=r" (result) : "r" (op1), "r" (op2), "r" (op3) ); - return(result); -} - -__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SMLSDX (uint32_t op1, uint32_t op2, uint32_t op3) -{ - uint32_t result; - - __ASM volatile ("smlsdx %0, %1, %2, %3" : "=r" (result) : "r" (op1), "r" (op2), "r" (op3) ); - return(result); -} - -__attribute__( ( always_inline ) ) __STATIC_INLINE uint64_t __SMLSLD (uint32_t op1, uint32_t op2, uint64_t acc) -{ - union llreg_u{ - uint32_t w32[2]; - uint64_t w64; - } llr; - llr.w64 = acc; - -#ifndef __ARMEB__ /* Little endian */ - __ASM volatile ("smlsld %0, %1, %2, %3" : "=r" (llr.w32[0]), "=r" (llr.w32[1]): "r" (op1), "r" (op2) , "0" (llr.w32[0]), "1" (llr.w32[1]) ); -#else /* Big endian */ - __ASM volatile ("smlsld %0, %1, %2, %3" : "=r" (llr.w32[1]), "=r" (llr.w32[0]): "r" (op1), "r" (op2) , "0" (llr.w32[1]), "1" (llr.w32[0]) ); -#endif - - return(llr.w64); -} - -__attribute__( ( always_inline ) ) __STATIC_INLINE uint64_t __SMLSLDX (uint32_t op1, uint32_t op2, uint64_t acc) -{ - union llreg_u{ - uint32_t w32[2]; - uint64_t w64; - } llr; - llr.w64 = acc; - -#ifndef __ARMEB__ /* Little endian */ - __ASM volatile ("smlsldx %0, %1, %2, %3" : "=r" (llr.w32[0]), "=r" (llr.w32[1]): "r" (op1), "r" (op2) , "0" (llr.w32[0]), "1" (llr.w32[1]) ); -#else /* Big endian */ - __ASM volatile ("smlsldx %0, %1, %2, %3" : "=r" (llr.w32[1]), "=r" (llr.w32[0]): "r" (op1), "r" (op2) , "0" (llr.w32[1]), "1" (llr.w32[0]) ); -#endif - - return(llr.w64); -} - -__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SEL (uint32_t op1, uint32_t op2) -{ - uint32_t result; - - __ASM volatile ("sel %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); - return(result); -} - -__attribute__( ( always_inline ) ) __STATIC_INLINE int32_t __QADD( int32_t op1, int32_t op2) -{ - int32_t result; - - __ASM volatile ("qadd %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); - return(result); -} - -__attribute__( ( always_inline ) ) __STATIC_INLINE int32_t __QSUB( int32_t op1, int32_t op2) -{ - int32_t result; - - __ASM volatile ("qsub %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); - return(result); -} - -#define __PKHBT(ARG1,ARG2,ARG3) \ -({ \ - uint32_t __RES, __ARG1 = (ARG1), __ARG2 = (ARG2); \ - __ASM ("pkhbt %0, %1, %2, lsl %3" : "=r" (__RES) : "r" (__ARG1), "r" (__ARG2), "I" (ARG3) ); \ - __RES; \ - }) - -#define __PKHTB(ARG1,ARG2,ARG3) \ -({ \ - uint32_t __RES, __ARG1 = (ARG1), __ARG2 = (ARG2); \ - if (ARG3 == 0) \ - __ASM ("pkhtb %0, %1, %2" : "=r" (__RES) : "r" (__ARG1), "r" (__ARG2) ); \ - else \ - __ASM ("pkhtb %0, %1, %2, asr %3" : "=r" (__RES) : "r" (__ARG1), "r" (__ARG2), "I" (ARG3) ); \ - __RES; \ - }) - -__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SMMLA (int32_t op1, int32_t op2, int32_t op3) -{ - int32_t result; - - __ASM volatile ("smmla %0, %1, %2, %3" : "=r" (result): "r" (op1), "r" (op2), "r" (op3) ); - return(result); -} - -#endif /* (__CORTEX_M >= 0x04) */ -/*@} end of group CMSIS_SIMD_intrinsics */ - - -#if defined ( __GNUC__ ) -#pragma GCC diagnostic pop -#endif - -#endif /* __CMSIS_GCC_H */ diff --git a/third_party/dialog/DialogSDK/bsp/include/core_cm0.h b/third_party/dialog/DialogSDK/bsp/include/core_cm0.h deleted file mode 100644 index 21ae4f9ba..000000000 --- a/third_party/dialog/DialogSDK/bsp/include/core_cm0.h +++ /dev/null @@ -1,798 +0,0 @@ -/**************************************************************************//** - * @file core_cm0.h - * @brief CMSIS Cortex-M0 Core Peripheral Access Layer Header File - * @version V4.30 - * @date 20. October 2015 - ******************************************************************************/ -/* Copyright (c) 2009 - 2015 ARM LIMITED - - All rights reserved. - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of ARM nor the names of its contributors may be used - to endorse or promote products derived from this software without - specific prior written permission. - * - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDERS AND CONTRIBUTORS BE - LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - POSSIBILITY OF SUCH DAMAGE. - ---------------------------------------------------------------------------*/ - - -#if defined ( __ICCARM__ ) - #pragma system_include /* treat file as system include file for MISRA check */ -#elif defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) - #pragma clang system_header /* treat file as system include file */ -#endif - -#ifndef __CORE_CM0_H_GENERIC -#define __CORE_CM0_H_GENERIC - -#include - -#ifdef __cplusplus - extern "C" { -#endif - -/** - \page CMSIS_MISRA_Exceptions MISRA-C:2004 Compliance Exceptions - CMSIS violates the following MISRA-C:2004 rules: - - \li Required Rule 8.5, object/function definition in header file.
- Function definitions in header files are used to allow 'inlining'. - - \li Required Rule 18.4, declaration of union type or object of union type: '{...}'.
- Unions are used for effective representation of core registers. - - \li Advisory Rule 19.7, Function-like macro defined.
- Function-like macros are used to allow more efficient code. - */ - - -/******************************************************************************* - * CMSIS definitions - ******************************************************************************/ -/** - \ingroup Cortex_M0 - @{ - */ - -/* CMSIS CM0 definitions */ -#define __CM0_CMSIS_VERSION_MAIN (0x04U) /*!< [31:16] CMSIS HAL main version */ -#define __CM0_CMSIS_VERSION_SUB (0x1EU) /*!< [15:0] CMSIS HAL sub version */ -#define __CM0_CMSIS_VERSION ((__CM0_CMSIS_VERSION_MAIN << 16U) | \ - __CM0_CMSIS_VERSION_SUB ) /*!< CMSIS HAL version number */ - -#define __CORTEX_M (0x00U) /*!< Cortex-M Core */ - - -#if defined ( __CC_ARM ) - #define __ASM __asm /*!< asm keyword for ARM Compiler */ - #define __INLINE __inline /*!< inline keyword for ARM Compiler */ - #define __STATIC_INLINE static __inline - -#elif defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) - #define __ASM __asm /*!< asm keyword for ARM Compiler */ - #define __INLINE __inline /*!< inline keyword for ARM Compiler */ - #define __STATIC_INLINE static __inline - -#elif defined ( __GNUC__ ) - #define __ASM __asm /*!< asm keyword for GNU Compiler */ - #define __INLINE inline /*!< inline keyword for GNU Compiler */ - #define __STATIC_INLINE static inline - -#elif defined ( __ICCARM__ ) - #define __ASM __asm /*!< asm keyword for IAR Compiler */ - #define __INLINE inline /*!< inline keyword for IAR Compiler. Only available in High optimization mode! */ - #define __STATIC_INLINE static inline - -#elif defined ( __TMS470__ ) - #define __ASM __asm /*!< asm keyword for TI CCS Compiler */ - #define __STATIC_INLINE static inline - -#elif defined ( __TASKING__ ) - #define __ASM __asm /*!< asm keyword for TASKING Compiler */ - #define __INLINE inline /*!< inline keyword for TASKING Compiler */ - #define __STATIC_INLINE static inline - -#elif defined ( __CSMC__ ) - #define __packed - #define __ASM _asm /*!< asm keyword for COSMIC Compiler */ - #define __INLINE inline /*!< inline keyword for COSMIC Compiler. Use -pc99 on compile line */ - #define __STATIC_INLINE static inline - -#else - #error Unknown compiler -#endif - -/** __FPU_USED indicates whether an FPU is used or not. - This core does not support an FPU at all -*/ -#define __FPU_USED 0U - -#if defined ( __CC_ARM ) - #if defined __TARGET_FPU_VFP - #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" - #endif - -#elif defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) - #if defined __ARM_PCS_VFP - #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" - #endif - -#elif defined ( __GNUC__ ) - #if defined (__VFP_FP__) && !defined(__SOFTFP__) - #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" - #endif - -#elif defined ( __ICCARM__ ) - #if defined __ARMVFP__ - #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" - #endif - -#elif defined ( __TMS470__ ) - #if defined __TI_VFP_SUPPORT__ - #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" - #endif - -#elif defined ( __TASKING__ ) - #if defined __FPU_VFP__ - #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" - #endif - -#elif defined ( __CSMC__ ) - #if ( __CSMC__ & 0x400U) - #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" - #endif - -#endif - -#include "core_cmInstr.h" /* Core Instruction Access */ -#include "core_cmFunc.h" /* Core Function Access */ - -#ifdef __cplusplus -} -#endif - -#endif /* __CORE_CM0_H_GENERIC */ - -#ifndef __CMSIS_GENERIC - -#ifndef __CORE_CM0_H_DEPENDANT -#define __CORE_CM0_H_DEPENDANT - -#ifdef __cplusplus - extern "C" { -#endif - -/* check device defines and use defaults */ -#if defined __CHECK_DEVICE_DEFINES - #ifndef __CM0_REV - #define __CM0_REV 0x0000U - #warning "__CM0_REV not defined in device header file; using default!" - #endif - - #ifndef __NVIC_PRIO_BITS - #define __NVIC_PRIO_BITS 2U - #warning "__NVIC_PRIO_BITS not defined in device header file; using default!" - #endif - - #ifndef __Vendor_SysTickConfig - #define __Vendor_SysTickConfig 0U - #warning "__Vendor_SysTickConfig not defined in device header file; using default!" - #endif -#endif - -/* IO definitions (access restrictions to peripheral registers) */ -/** - \defgroup CMSIS_glob_defs CMSIS Global Defines - - IO Type Qualifiers are used - \li to specify the access to peripheral variables. - \li for automatic generation of peripheral register debug information. -*/ -#ifdef __cplusplus - #define __I volatile /*!< Defines 'read only' permissions */ -#else - #define __I volatile const /*!< Defines 'read only' permissions */ -#endif -#define __O volatile /*!< Defines 'write only' permissions */ -#define __IO volatile /*!< Defines 'read / write' permissions */ - -/* following defines should be used for structure members */ -#define __IM volatile const /*! Defines 'read only' structure member permissions */ -#define __OM volatile /*! Defines 'write only' structure member permissions */ -#define __IOM volatile /*! Defines 'read / write' structure member permissions */ - -/*@} end of group Cortex_M0 */ - - - -/******************************************************************************* - * Register Abstraction - Core Register contain: - - Core Register - - Core NVIC Register - - Core SCB Register - - Core SysTick Register - ******************************************************************************/ -/** - \defgroup CMSIS_core_register Defines and Type Definitions - \brief Type definitions and defines for Cortex-M processor based devices. -*/ - -/** - \ingroup CMSIS_core_register - \defgroup CMSIS_CORE Status and Control Registers - \brief Core Register type definitions. - @{ - */ - -/** - \brief Union type to access the Application Program Status Register (APSR). - */ -typedef union -{ - struct - { - uint32_t _reserved0:28; /*!< bit: 0..27 Reserved */ - uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ - uint32_t C:1; /*!< bit: 29 Carry condition code flag */ - uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ - uint32_t N:1; /*!< bit: 31 Negative condition code flag */ - } b; /*!< Structure used for bit access */ - uint32_t w; /*!< Type used for word access */ -} APSR_Type; - -/* APSR Register Definitions */ -#define APSR_N_Pos 31U /*!< APSR: N Position */ -#define APSR_N_Msk (1UL << APSR_N_Pos) /*!< APSR: N Mask */ - -#define APSR_Z_Pos 30U /*!< APSR: Z Position */ -#define APSR_Z_Msk (1UL << APSR_Z_Pos) /*!< APSR: Z Mask */ - -#define APSR_C_Pos 29U /*!< APSR: C Position */ -#define APSR_C_Msk (1UL << APSR_C_Pos) /*!< APSR: C Mask */ - -#define APSR_V_Pos 28U /*!< APSR: V Position */ -#define APSR_V_Msk (1UL << APSR_V_Pos) /*!< APSR: V Mask */ - - -/** - \brief Union type to access the Interrupt Program Status Register (IPSR). - */ -typedef union -{ - struct - { - uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ - uint32_t _reserved0:23; /*!< bit: 9..31 Reserved */ - } b; /*!< Structure used for bit access */ - uint32_t w; /*!< Type used for word access */ -} IPSR_Type; - -/* IPSR Register Definitions */ -#define IPSR_ISR_Pos 0U /*!< IPSR: ISR Position */ -#define IPSR_ISR_Msk (0x1FFUL /*<< IPSR_ISR_Pos*/) /*!< IPSR: ISR Mask */ - - -/** - \brief Union type to access the Special-Purpose Program Status Registers (xPSR). - */ -typedef union -{ - struct - { - uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ - uint32_t _reserved0:15; /*!< bit: 9..23 Reserved */ - uint32_t T:1; /*!< bit: 24 Thumb bit (read 0) */ - uint32_t _reserved1:3; /*!< bit: 25..27 Reserved */ - uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ - uint32_t C:1; /*!< bit: 29 Carry condition code flag */ - uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ - uint32_t N:1; /*!< bit: 31 Negative condition code flag */ - } b; /*!< Structure used for bit access */ - uint32_t w; /*!< Type used for word access */ -} xPSR_Type; - -/* xPSR Register Definitions */ -#define xPSR_N_Pos 31U /*!< xPSR: N Position */ -#define xPSR_N_Msk (1UL << xPSR_N_Pos) /*!< xPSR: N Mask */ - -#define xPSR_Z_Pos 30U /*!< xPSR: Z Position */ -#define xPSR_Z_Msk (1UL << xPSR_Z_Pos) /*!< xPSR: Z Mask */ - -#define xPSR_C_Pos 29U /*!< xPSR: C Position */ -#define xPSR_C_Msk (1UL << xPSR_C_Pos) /*!< xPSR: C Mask */ - -#define xPSR_V_Pos 28U /*!< xPSR: V Position */ -#define xPSR_V_Msk (1UL << xPSR_V_Pos) /*!< xPSR: V Mask */ - -#define xPSR_T_Pos 24U /*!< xPSR: T Position */ -#define xPSR_T_Msk (1UL << xPSR_T_Pos) /*!< xPSR: T Mask */ - -#define xPSR_ISR_Pos 0U /*!< xPSR: ISR Position */ -#define xPSR_ISR_Msk (0x1FFUL /*<< xPSR_ISR_Pos*/) /*!< xPSR: ISR Mask */ - - -/** - \brief Union type to access the Control Registers (CONTROL). - */ -typedef union -{ - struct - { - uint32_t _reserved0:1; /*!< bit: 0 Reserved */ - uint32_t SPSEL:1; /*!< bit: 1 Stack to be used */ - uint32_t _reserved1:30; /*!< bit: 2..31 Reserved */ - } b; /*!< Structure used for bit access */ - uint32_t w; /*!< Type used for word access */ -} CONTROL_Type; - -/* CONTROL Register Definitions */ -#define CONTROL_SPSEL_Pos 1U /*!< CONTROL: SPSEL Position */ -#define CONTROL_SPSEL_Msk (1UL << CONTROL_SPSEL_Pos) /*!< CONTROL: SPSEL Mask */ - -/*@} end of group CMSIS_CORE */ - - -/** - \ingroup CMSIS_core_register - \defgroup CMSIS_NVIC Nested Vectored Interrupt Controller (NVIC) - \brief Type definitions for the NVIC Registers - @{ - */ - -/** - \brief Structure type to access the Nested Vectored Interrupt Controller (NVIC). - */ -typedef struct -{ - __IOM uint32_t ISER[1U]; /*!< Offset: 0x000 (R/W) Interrupt Set Enable Register */ - uint32_t RESERVED0[31U]; - __IOM uint32_t ICER[1U]; /*!< Offset: 0x080 (R/W) Interrupt Clear Enable Register */ - uint32_t RSERVED1[31U]; - __IOM uint32_t ISPR[1U]; /*!< Offset: 0x100 (R/W) Interrupt Set Pending Register */ - uint32_t RESERVED2[31U]; - __IOM uint32_t ICPR[1U]; /*!< Offset: 0x180 (R/W) Interrupt Clear Pending Register */ - uint32_t RESERVED3[31U]; - uint32_t RESERVED4[64U]; - __IOM uint32_t IP[8U]; /*!< Offset: 0x300 (R/W) Interrupt Priority Register */ -} NVIC_Type; - -/*@} end of group CMSIS_NVIC */ - - -/** - \ingroup CMSIS_core_register - \defgroup CMSIS_SCB System Control Block (SCB) - \brief Type definitions for the System Control Block Registers - @{ - */ - -/** - \brief Structure type to access the System Control Block (SCB). - */ -typedef struct -{ - __IM uint32_t CPUID; /*!< Offset: 0x000 (R/ ) CPUID Base Register */ - __IOM uint32_t ICSR; /*!< Offset: 0x004 (R/W) Interrupt Control and State Register */ - uint32_t RESERVED0; - __IOM uint32_t AIRCR; /*!< Offset: 0x00C (R/W) Application Interrupt and Reset Control Register */ - __IOM uint32_t SCR; /*!< Offset: 0x010 (R/W) System Control Register */ - __IOM uint32_t CCR; /*!< Offset: 0x014 (R/W) Configuration Control Register */ - uint32_t RESERVED1; - __IOM uint32_t SHP[2U]; /*!< Offset: 0x01C (R/W) System Handlers Priority Registers. [0] is RESERVED */ - __IOM uint32_t SHCSR; /*!< Offset: 0x024 (R/W) System Handler Control and State Register */ -} SCB_Type; - -/* SCB CPUID Register Definitions */ -#define SCB_CPUID_IMPLEMENTER_Pos 24U /*!< SCB CPUID: IMPLEMENTER Position */ -#define SCB_CPUID_IMPLEMENTER_Msk (0xFFUL << SCB_CPUID_IMPLEMENTER_Pos) /*!< SCB CPUID: IMPLEMENTER Mask */ - -#define SCB_CPUID_VARIANT_Pos 20U /*!< SCB CPUID: VARIANT Position */ -#define SCB_CPUID_VARIANT_Msk (0xFUL << SCB_CPUID_VARIANT_Pos) /*!< SCB CPUID: VARIANT Mask */ - -#define SCB_CPUID_ARCHITECTURE_Pos 16U /*!< SCB CPUID: ARCHITECTURE Position */ -#define SCB_CPUID_ARCHITECTURE_Msk (0xFUL << SCB_CPUID_ARCHITECTURE_Pos) /*!< SCB CPUID: ARCHITECTURE Mask */ - -#define SCB_CPUID_PARTNO_Pos 4U /*!< SCB CPUID: PARTNO Position */ -#define SCB_CPUID_PARTNO_Msk (0xFFFUL << SCB_CPUID_PARTNO_Pos) /*!< SCB CPUID: PARTNO Mask */ - -#define SCB_CPUID_REVISION_Pos 0U /*!< SCB CPUID: REVISION Position */ -#define SCB_CPUID_REVISION_Msk (0xFUL /*<< SCB_CPUID_REVISION_Pos*/) /*!< SCB CPUID: REVISION Mask */ - -/* SCB Interrupt Control State Register Definitions */ -#define SCB_ICSR_NMIPENDSET_Pos 31U /*!< SCB ICSR: NMIPENDSET Position */ -#define SCB_ICSR_NMIPENDSET_Msk (1UL << SCB_ICSR_NMIPENDSET_Pos) /*!< SCB ICSR: NMIPENDSET Mask */ - -#define SCB_ICSR_PENDSVSET_Pos 28U /*!< SCB ICSR: PENDSVSET Position */ -#define SCB_ICSR_PENDSVSET_Msk (1UL << SCB_ICSR_PENDSVSET_Pos) /*!< SCB ICSR: PENDSVSET Mask */ - -#define SCB_ICSR_PENDSVCLR_Pos 27U /*!< SCB ICSR: PENDSVCLR Position */ -#define SCB_ICSR_PENDSVCLR_Msk (1UL << SCB_ICSR_PENDSVCLR_Pos) /*!< SCB ICSR: PENDSVCLR Mask */ - -#define SCB_ICSR_PENDSTSET_Pos 26U /*!< SCB ICSR: PENDSTSET Position */ -#define SCB_ICSR_PENDSTSET_Msk (1UL << SCB_ICSR_PENDSTSET_Pos) /*!< SCB ICSR: PENDSTSET Mask */ - -#define SCB_ICSR_PENDSTCLR_Pos 25U /*!< SCB ICSR: PENDSTCLR Position */ -#define SCB_ICSR_PENDSTCLR_Msk (1UL << SCB_ICSR_PENDSTCLR_Pos) /*!< SCB ICSR: PENDSTCLR Mask */ - -#define SCB_ICSR_ISRPREEMPT_Pos 23U /*!< SCB ICSR: ISRPREEMPT Position */ -#define SCB_ICSR_ISRPREEMPT_Msk (1UL << SCB_ICSR_ISRPREEMPT_Pos) /*!< SCB ICSR: ISRPREEMPT Mask */ - -#define SCB_ICSR_ISRPENDING_Pos 22U /*!< SCB ICSR: ISRPENDING Position */ -#define SCB_ICSR_ISRPENDING_Msk (1UL << SCB_ICSR_ISRPENDING_Pos) /*!< SCB ICSR: ISRPENDING Mask */ - -#define SCB_ICSR_VECTPENDING_Pos 12U /*!< SCB ICSR: VECTPENDING Position */ -#define SCB_ICSR_VECTPENDING_Msk (0x1FFUL << SCB_ICSR_VECTPENDING_Pos) /*!< SCB ICSR: VECTPENDING Mask */ - -#define SCB_ICSR_VECTACTIVE_Pos 0U /*!< SCB ICSR: VECTACTIVE Position */ -#define SCB_ICSR_VECTACTIVE_Msk (0x1FFUL /*<< SCB_ICSR_VECTACTIVE_Pos*/) /*!< SCB ICSR: VECTACTIVE Mask */ - -/* SCB Application Interrupt and Reset Control Register Definitions */ -#define SCB_AIRCR_VECTKEY_Pos 16U /*!< SCB AIRCR: VECTKEY Position */ -#define SCB_AIRCR_VECTKEY_Msk (0xFFFFUL << SCB_AIRCR_VECTKEY_Pos) /*!< SCB AIRCR: VECTKEY Mask */ - -#define SCB_AIRCR_VECTKEYSTAT_Pos 16U /*!< SCB AIRCR: VECTKEYSTAT Position */ -#define SCB_AIRCR_VECTKEYSTAT_Msk (0xFFFFUL << SCB_AIRCR_VECTKEYSTAT_Pos) /*!< SCB AIRCR: VECTKEYSTAT Mask */ - -#define SCB_AIRCR_ENDIANESS_Pos 15U /*!< SCB AIRCR: ENDIANESS Position */ -#define SCB_AIRCR_ENDIANESS_Msk (1UL << SCB_AIRCR_ENDIANESS_Pos) /*!< SCB AIRCR: ENDIANESS Mask */ - -#define SCB_AIRCR_SYSRESETREQ_Pos 2U /*!< SCB AIRCR: SYSRESETREQ Position */ -#define SCB_AIRCR_SYSRESETREQ_Msk (1UL << SCB_AIRCR_SYSRESETREQ_Pos) /*!< SCB AIRCR: SYSRESETREQ Mask */ - -#define SCB_AIRCR_VECTCLRACTIVE_Pos 1U /*!< SCB AIRCR: VECTCLRACTIVE Position */ -#define SCB_AIRCR_VECTCLRACTIVE_Msk (1UL << SCB_AIRCR_VECTCLRACTIVE_Pos) /*!< SCB AIRCR: VECTCLRACTIVE Mask */ - -/* SCB System Control Register Definitions */ -#define SCB_SCR_SEVONPEND_Pos 4U /*!< SCB SCR: SEVONPEND Position */ -#define SCB_SCR_SEVONPEND_Msk (1UL << SCB_SCR_SEVONPEND_Pos) /*!< SCB SCR: SEVONPEND Mask */ - -#define SCB_SCR_SLEEPDEEP_Pos 2U /*!< SCB SCR: SLEEPDEEP Position */ -#define SCB_SCR_SLEEPDEEP_Msk (1UL << SCB_SCR_SLEEPDEEP_Pos) /*!< SCB SCR: SLEEPDEEP Mask */ - -#define SCB_SCR_SLEEPONEXIT_Pos 1U /*!< SCB SCR: SLEEPONEXIT Position */ -#define SCB_SCR_SLEEPONEXIT_Msk (1UL << SCB_SCR_SLEEPONEXIT_Pos) /*!< SCB SCR: SLEEPONEXIT Mask */ - -/* SCB Configuration Control Register Definitions */ -#define SCB_CCR_STKALIGN_Pos 9U /*!< SCB CCR: STKALIGN Position */ -#define SCB_CCR_STKALIGN_Msk (1UL << SCB_CCR_STKALIGN_Pos) /*!< SCB CCR: STKALIGN Mask */ - -#define SCB_CCR_UNALIGN_TRP_Pos 3U /*!< SCB CCR: UNALIGN_TRP Position */ -#define SCB_CCR_UNALIGN_TRP_Msk (1UL << SCB_CCR_UNALIGN_TRP_Pos) /*!< SCB CCR: UNALIGN_TRP Mask */ - -/* SCB System Handler Control and State Register Definitions */ -#define SCB_SHCSR_SVCALLPENDED_Pos 15U /*!< SCB SHCSR: SVCALLPENDED Position */ -#define SCB_SHCSR_SVCALLPENDED_Msk (1UL << SCB_SHCSR_SVCALLPENDED_Pos) /*!< SCB SHCSR: SVCALLPENDED Mask */ - -/*@} end of group CMSIS_SCB */ - - -/** - \ingroup CMSIS_core_register - \defgroup CMSIS_SysTick System Tick Timer (SysTick) - \brief Type definitions for the System Timer Registers. - @{ - */ - -/** - \brief Structure type to access the System Timer (SysTick). - */ -typedef struct -{ - __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) SysTick Control and Status Register */ - __IOM uint32_t LOAD; /*!< Offset: 0x004 (R/W) SysTick Reload Value Register */ - __IOM uint32_t VAL; /*!< Offset: 0x008 (R/W) SysTick Current Value Register */ - __IM uint32_t CALIB; /*!< Offset: 0x00C (R/ ) SysTick Calibration Register */ -} SysTick_Type; - -/* SysTick Control / Status Register Definitions */ -#define SysTick_CTRL_COUNTFLAG_Pos 16U /*!< SysTick CTRL: COUNTFLAG Position */ -#define SysTick_CTRL_COUNTFLAG_Msk (1UL << SysTick_CTRL_COUNTFLAG_Pos) /*!< SysTick CTRL: COUNTFLAG Mask */ - -#define SysTick_CTRL_CLKSOURCE_Pos 2U /*!< SysTick CTRL: CLKSOURCE Position */ -#define SysTick_CTRL_CLKSOURCE_Msk (1UL << SysTick_CTRL_CLKSOURCE_Pos) /*!< SysTick CTRL: CLKSOURCE Mask */ - -#define SysTick_CTRL_TICKINT_Pos 1U /*!< SysTick CTRL: TICKINT Position */ -#define SysTick_CTRL_TICKINT_Msk (1UL << SysTick_CTRL_TICKINT_Pos) /*!< SysTick CTRL: TICKINT Mask */ - -#define SysTick_CTRL_ENABLE_Pos 0U /*!< SysTick CTRL: ENABLE Position */ -#define SysTick_CTRL_ENABLE_Msk (1UL /*<< SysTick_CTRL_ENABLE_Pos*/) /*!< SysTick CTRL: ENABLE Mask */ - -/* SysTick Reload Register Definitions */ -#define SysTick_LOAD_RELOAD_Pos 0U /*!< SysTick LOAD: RELOAD Position */ -#define SysTick_LOAD_RELOAD_Msk (0xFFFFFFUL /*<< SysTick_LOAD_RELOAD_Pos*/) /*!< SysTick LOAD: RELOAD Mask */ - -/* SysTick Current Register Definitions */ -#define SysTick_VAL_CURRENT_Pos 0U /*!< SysTick VAL: CURRENT Position */ -#define SysTick_VAL_CURRENT_Msk (0xFFFFFFUL /*<< SysTick_VAL_CURRENT_Pos*/) /*!< SysTick VAL: CURRENT Mask */ - -/* SysTick Calibration Register Definitions */ -#define SysTick_CALIB_NOREF_Pos 31U /*!< SysTick CALIB: NOREF Position */ -#define SysTick_CALIB_NOREF_Msk (1UL << SysTick_CALIB_NOREF_Pos) /*!< SysTick CALIB: NOREF Mask */ - -#define SysTick_CALIB_SKEW_Pos 30U /*!< SysTick CALIB: SKEW Position */ -#define SysTick_CALIB_SKEW_Msk (1UL << SysTick_CALIB_SKEW_Pos) /*!< SysTick CALIB: SKEW Mask */ - -#define SysTick_CALIB_TENMS_Pos 0U /*!< SysTick CALIB: TENMS Position */ -#define SysTick_CALIB_TENMS_Msk (0xFFFFFFUL /*<< SysTick_CALIB_TENMS_Pos*/) /*!< SysTick CALIB: TENMS Mask */ - -/*@} end of group CMSIS_SysTick */ - - -/** - \ingroup CMSIS_core_register - \defgroup CMSIS_CoreDebug Core Debug Registers (CoreDebug) - \brief Cortex-M0 Core Debug Registers (DCB registers, SHCSR, and DFSR) are only accessible over DAP and not via processor. - Therefore they are not covered by the Cortex-M0 header file. - @{ - */ -/*@} end of group CMSIS_CoreDebug */ - - -/** - \ingroup CMSIS_core_register - \defgroup CMSIS_core_bitfield Core register bit field macros - \brief Macros for use with bit field definitions (xxx_Pos, xxx_Msk). - @{ - */ - -/** - \brief Mask and shift a bit field value for use in a register bit range. - \param[in] field Name of the register bit field. - \param[in] value Value of the bit field. - \return Masked and shifted value. -*/ -#define _VAL2FLD(field, value) ((value << field ## _Pos) & field ## _Msk) - -/** - \brief Mask and shift a register value to extract a bit filed value. - \param[in] field Name of the register bit field. - \param[in] value Value of register. - \return Masked and shifted bit field value. -*/ -#define _FLD2VAL(field, value) ((value & field ## _Msk) >> field ## _Pos) - -/*@} end of group CMSIS_core_bitfield */ - - -/** - \ingroup CMSIS_core_register - \defgroup CMSIS_core_base Core Definitions - \brief Definitions for base addresses, unions, and structures. - @{ - */ - -/* Memory mapping of Cortex-M0 Hardware */ -#define SCS_BASE (0xE000E000UL) /*!< System Control Space Base Address */ -#define SysTick_BASE (SCS_BASE + 0x0010UL) /*!< SysTick Base Address */ -#define NVIC_BASE (SCS_BASE + 0x0100UL) /*!< NVIC Base Address */ -#define SCB_BASE (SCS_BASE + 0x0D00UL) /*!< System Control Block Base Address */ - -#define SCB ((SCB_Type *) SCB_BASE ) /*!< SCB configuration struct */ -#define SysTick ((SysTick_Type *) SysTick_BASE ) /*!< SysTick configuration struct */ -#define NVIC ((NVIC_Type *) NVIC_BASE ) /*!< NVIC configuration struct */ - - -/*@} */ - - - -/******************************************************************************* - * Hardware Abstraction Layer - Core Function Interface contains: - - Core NVIC Functions - - Core SysTick Functions - - Core Register Access Functions - ******************************************************************************/ -/** - \defgroup CMSIS_Core_FunctionInterface Functions and Instructions Reference -*/ - - - -/* ########################## NVIC functions #################################### */ -/** - \ingroup CMSIS_Core_FunctionInterface - \defgroup CMSIS_Core_NVICFunctions NVIC Functions - \brief Functions that manage interrupts and exceptions via the NVIC. - @{ - */ -#include "sdk_defs.h" /* Declares IRQn_Type */ -/* Interrupt Priorities are WORD accessible only under ARMv6M */ -/* The following MACROS handle generation of the register offset and byte masks */ -#define _BIT_SHIFT(IRQn) ( ((((uint32_t)(int32_t)(IRQn)) ) & 0x03UL) * 8UL) -#define _SHP_IDX(IRQn) ( (((((uint32_t)(int32_t)(IRQn)) & 0x0FUL)-8UL) >> 2UL) ) -#define _IP_IDX(IRQn) ( (((uint32_t)(int32_t)(IRQn)) >> 2UL) ) - - -/** - \brief Enable External Interrupt - \details Enables a device-specific interrupt in the NVIC interrupt controller. - \param [in] IRQn External interrupt number. Value cannot be negative. - */ -__STATIC_INLINE void NVIC_EnableIRQ(IRQn_Type IRQn) -{ - NVIC->ISER[0U] = (uint32_t)(1UL << (((uint32_t)(int32_t)IRQn) & 0x1FUL)); -} - - -/** - \brief Disable External Interrupt - \details Disables a device-specific interrupt in the NVIC interrupt controller. - \param [in] IRQn External interrupt number. Value cannot be negative. - */ -__STATIC_INLINE void NVIC_DisableIRQ(IRQn_Type IRQn) -{ - NVIC->ICER[0U] = (uint32_t)(1UL << (((uint32_t)(int32_t)IRQn) & 0x1FUL)); -} - - -/** - \brief Get Pending Interrupt - \details Reads the pending register in the NVIC and returns the pending bit for the specified interrupt. - \param [in] IRQn Interrupt number. - \return 0 Interrupt status is not pending. - \return 1 Interrupt status is pending. - */ -__STATIC_INLINE uint32_t NVIC_GetPendingIRQ(IRQn_Type IRQn) -{ - return((uint32_t)(((NVIC->ISPR[0U] & (1UL << (((uint32_t)(int32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); -} - - -/** - \brief Set Pending Interrupt - \details Sets the pending bit of an external interrupt. - \param [in] IRQn Interrupt number. Value cannot be negative. - */ -__STATIC_INLINE void NVIC_SetPendingIRQ(IRQn_Type IRQn) -{ - NVIC->ISPR[0U] = (uint32_t)(1UL << (((uint32_t)(int32_t)IRQn) & 0x1FUL)); -} - - -/** - \brief Clear Pending Interrupt - \details Clears the pending bit of an external interrupt. - \param [in] IRQn External interrupt number. Value cannot be negative. - */ -__STATIC_INLINE void NVIC_ClearPendingIRQ(IRQn_Type IRQn) -{ - NVIC->ICPR[0U] = (uint32_t)(1UL << (((uint32_t)(int32_t)IRQn) & 0x1FUL)); -} - - -/** - \brief Set Interrupt Priority - \details Sets the priority of an interrupt. - \note The priority cannot be set for every core interrupt. - \param [in] IRQn Interrupt number. - \param [in] priority Priority to set. - */ -__STATIC_INLINE void NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority) -{ - if ((int32_t)(IRQn) < 0) - { - SCB->SHP[_SHP_IDX(IRQn)] = ((uint32_t)(SCB->SHP[_SHP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) | - (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn))); - } - else - { - NVIC->IP[_IP_IDX(IRQn)] = ((uint32_t)(NVIC->IP[_IP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) | - (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn))); - } -} - - -/** - \brief Get Interrupt Priority - \details Reads the priority of an interrupt. - The interrupt number can be positive to specify an external (device specific) interrupt, - or negative to specify an internal (core) interrupt. - \param [in] IRQn Interrupt number. - \return Interrupt Priority. - Value is aligned automatically to the implemented priority bits of the microcontroller. - */ -__STATIC_INLINE uint32_t NVIC_GetPriority(IRQn_Type IRQn) -{ - - if ((int32_t)(IRQn) < 0) - { - return((uint32_t)(((SCB->SHP[_SHP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS))); - } - else - { - return((uint32_t)(((NVIC->IP[ _IP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS))); - } -} - - -/** - \brief System Reset - \details Initiates a system reset request to reset the MCU. - */ -__STATIC_INLINE void NVIC_SystemReset(void) -{ - __DSB(); /* Ensure all outstanding memory accesses included - buffered write are completed before reset */ - SCB->AIRCR = ((0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | - SCB_AIRCR_SYSRESETREQ_Msk); - __DSB(); /* Ensure completion of memory access */ - - for(;;) /* wait until reset */ - { - __NOP(); - } -} - -/*@} end of CMSIS_Core_NVICFunctions */ - - - -/* ################################## SysTick function ############################################ */ -/** - \ingroup CMSIS_Core_FunctionInterface - \defgroup CMSIS_Core_SysTickFunctions SysTick Functions - \brief Functions that configure the System. - @{ - */ - -#if (__Vendor_SysTickConfig == 0U) - -/** - \brief System Tick Configuration - \details Initializes the System Timer and its interrupt, and starts the System Tick Timer. - Counter is in free running mode to generate periodic interrupts. - \param [in] ticks Number of ticks between two interrupts. - \return 0 Function succeeded. - \return 1 Function failed. - \note When the variable __Vendor_SysTickConfig is set to 1, then the - function SysTick_Config is not included. In this case, the file device.h - must contain a vendor-specific implementation of this function. - */ -__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks) -{ - if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk) - { - return (1UL); /* Reload value impossible */ - } - - SysTick->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */ - NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */ - SysTick->VAL = 0UL; /* Load the SysTick Counter Value */ - SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk | - SysTick_CTRL_TICKINT_Msk | - SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */ - return (0UL); /* Function successful */ -} - -#endif - -/*@} end of CMSIS_Core_SysTickFunctions */ - - - - -#ifdef __cplusplus -} -#endif - -#endif /* __CORE_CM0_H_DEPENDANT */ - -#endif /* __CMSIS_GENERIC */ diff --git a/third_party/dialog/DialogSDK/bsp/include/core_cmFunc.h b/third_party/dialog/DialogSDK/bsp/include/core_cmFunc.h deleted file mode 100644 index 652a48af0..000000000 --- a/third_party/dialog/DialogSDK/bsp/include/core_cmFunc.h +++ /dev/null @@ -1,87 +0,0 @@ -/**************************************************************************//** - * @file core_cmFunc.h - * @brief CMSIS Cortex-M Core Function Access Header File - * @version V4.30 - * @date 20. October 2015 - ******************************************************************************/ -/* Copyright (c) 2009 - 2015 ARM LIMITED - - All rights reserved. - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of ARM nor the names of its contributors may be used - to endorse or promote products derived from this software without - specific prior written permission. - * - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDERS AND CONTRIBUTORS BE - LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - POSSIBILITY OF SUCH DAMAGE. - ---------------------------------------------------------------------------*/ - - -#if defined ( __ICCARM__ ) - #pragma system_include /* treat file as system include file for MISRA check */ -#elif defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) - #pragma clang system_header /* treat file as system include file */ -#endif - -#ifndef __CORE_CMFUNC_H -#define __CORE_CMFUNC_H - - -/* ########################### Core Function Access ########################### */ -/** \ingroup CMSIS_Core_FunctionInterface - \defgroup CMSIS_Core_RegAccFunctions CMSIS Core Register Access Functions - @{ -*/ - -/*------------------ RealView Compiler -----------------*/ -#if defined ( __CC_ARM ) - #include "cmsis_armcc.h" - -/*------------------ ARM Compiler V6 -------------------*/ -#elif defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) - #include "cmsis_armcc_V6.h" - -/*------------------ GNU Compiler ----------------------*/ -#elif defined ( __GNUC__ ) - #include "cmsis_gcc.h" - -/*------------------ ICC Compiler ----------------------*/ -#elif defined ( __ICCARM__ ) - #include - -/*------------------ TI CCS Compiler -------------------*/ -#elif defined ( __TMS470__ ) - #include - -/*------------------ TASKING Compiler ------------------*/ -#elif defined ( __TASKING__ ) - /* - * The CMSIS functions have been implemented as intrinsics in the compiler. - * Please use "carm -?i" to get an up to date list of all intrinsics, - * Including the CMSIS ones. - */ - -/*------------------ COSMIC Compiler -------------------*/ -#elif defined ( __CSMC__ ) - #include - -#endif - -/*@} end of CMSIS_Core_RegAccFunctions */ - -#endif /* __CORE_CMFUNC_H */ diff --git a/third_party/dialog/DialogSDK/bsp/include/core_cmInstr.h b/third_party/dialog/DialogSDK/bsp/include/core_cmInstr.h deleted file mode 100644 index f474b0e6f..000000000 --- a/third_party/dialog/DialogSDK/bsp/include/core_cmInstr.h +++ /dev/null @@ -1,87 +0,0 @@ -/**************************************************************************//** - * @file core_cmInstr.h - * @brief CMSIS Cortex-M Core Instruction Access Header File - * @version V4.30 - * @date 20. October 2015 - ******************************************************************************/ -/* Copyright (c) 2009 - 2015 ARM LIMITED - - All rights reserved. - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of ARM nor the names of its contributors may be used - to endorse or promote products derived from this software without - specific prior written permission. - * - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDERS AND CONTRIBUTORS BE - LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - POSSIBILITY OF SUCH DAMAGE. - ---------------------------------------------------------------------------*/ - - -#if defined ( __ICCARM__ ) - #pragma system_include /* treat file as system include file for MISRA check */ -#elif defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) - #pragma clang system_header /* treat file as system include file */ -#endif - -#ifndef __CORE_CMINSTR_H -#define __CORE_CMINSTR_H - - -/* ########################## Core Instruction Access ######################### */ -/** \defgroup CMSIS_Core_InstructionInterface CMSIS Core Instruction Interface - Access to dedicated instructions - @{ -*/ - -/*------------------ RealView Compiler -----------------*/ -#if defined ( __CC_ARM ) - #include "cmsis_armcc.h" - -/*------------------ ARM Compiler V6 -------------------*/ -#elif defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) - #include "cmsis_armcc_V6.h" - -/*------------------ GNU Compiler ----------------------*/ -#elif defined ( __GNUC__ ) - #include "cmsis_gcc.h" - -/*------------------ ICC Compiler ----------------------*/ -#elif defined ( __ICCARM__ ) - #include - -/*------------------ TI CCS Compiler -------------------*/ -#elif defined ( __TMS470__ ) - #include - -/*------------------ TASKING Compiler ------------------*/ -#elif defined ( __TASKING__ ) - /* - * The CMSIS functions have been implemented as intrinsics in the compiler. - * Please use "carm -?i" to get an up to date list of all intrinsics, - * Including the CMSIS ones. - */ - -/*------------------ COSMIC Compiler -------------------*/ -#elif defined ( __CSMC__ ) - #include - -#endif - -/*@}*/ /* end of group CMSIS_Core_InstructionInterface */ - -#endif /* __CORE_CMINSTR_H */ diff --git a/third_party/dialog/DialogSDK/bsp/include/interrupts.h b/third_party/dialog/DialogSDK/bsp/include/interrupts.h deleted file mode 100644 index af902cce2..000000000 --- a/third_party/dialog/DialogSDK/bsp/include/interrupts.h +++ /dev/null @@ -1,151 +0,0 @@ -/** - * \addtogroup BSP - * \{ - * \addtogroup SYSTEM - * \{ - * \addtogroup INTERRUPTS - * - * \brief Interrupt priority configuration - * - * \{ - */ - -/** - ***************************************************************************************** - * - * @file interrupts.h - * - * @brief Interrupt priority configuration - * - * Copyright (c) 2016, Dialog Semiconductor - * All rights reserved. - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. Neither the name of the copyright holder nor the names of its contributors - * may be used to endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, - * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, - * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED - * OF THE POSSIBILITY OF SUCH DAMAGE. - * - * - ***************************************************************************************** - */ - -#ifndef INTERRUPTS_H_ -#define INTERRUPTS_H_ - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/** - * \brief Setup interrupt priorities - * - * When CPU is reset all interrupts have some priority setup. - * Reset -3 - * NMI -2 - * HardFault -1 - * All other interrupts have configurable priority that is set to 0. - * If some interrupts should have priority other then default, this function should be called. - * Argument \p prios can specify only those interrupts that need to have value other than default. - * For memory efficiency table with priorities for each interrupt consist of interrupt priority - * tag PRIORITY_x followed by interrupts that should have this priority, interrupts names are from - * enum IRQn_Type. - * - * \note If interrupt priorities do not need to be changed dynamically at runtime, best way to - * specify static configuration is to create table named __dialog_interrupt_priorities that will - * be used automatically at startup. - * - * Most convenient way to prepare such table is to use macros like in example below: - * - * \code{.c} - * INTERRUPT_PRIORITY_CONFIG_START(__dialog_interrupt_priorities) - * PRIORITY_0, // Start interrupts with priority 0 (highest) - * SVCall_IRQn, - * PendSV_IRQn, - * SysTick_IRQn, - * PRIORITY_1, // Start interrupts with priority 1 - * BLE_WAKEUP_LP_IRQn, - * BLE_GEN_IRQn, - * FTDF_WAKEUP_IRQn, - * FTDF_GEN_IRQn, - * PRIORITY_2, - * SRC_IN_IRQn, - * SRC_OUT_IRQn, - * PRIORITY_3, - * UART_IRQn, - * UART2_IRQn, - * INTERRUPT_PRIORITY_CONFIG_END - * \endcode - * - * Table __dialog_interrupt_priorities can now be used to call this function. - * Table can specify all interrupts or only those that need to be changed. - * - * \param [in] prios table with interrupts and priorities to setup - * - */ -void set_interrupt_priorities(const int8_t prios[]); - -/** - * \brief Check whether running in interrupt context. - * - * \return true if the CPU is serving an interrupt. - */ -static inline bool in_interrupt(void) -{ - return (SCB->ICSR & SCB_ICSR_VECTACTIVE_Msk) != 0; -} - - -/** - * \brief Default interrupt priorities table. - * - */ -extern const int8_t __dialog_interrupt_priorities[]; - - -#if (dg_configBLACK_ORCA_IC_REV != BLACK_ORCA_IC_REV_A) && (dg_configUSE_AUTO_CHIP_DETECTION != 1) - #define LAST_IRQn PLL_LOCK_IRQn -#else - #define LAST_IRQn RESERVED31_IRQn -#endif - -/* - * Following macros allow easy way to build table with interrupt priorities. - * See example in set_interrupt_priorities function description. - */ -#define INTERRUPT_PRIORITY_CONFIG_START(name) const int8_t name[] = { -#define PRIORITY_0 (LAST_IRQn + 1) -#define PRIORITY_1 (LAST_IRQn + 2) -#define PRIORITY_2 (LAST_IRQn + 3) -#define PRIORITY_3 (LAST_IRQn + 4) -#define PRIORITY_TABLE_END (LAST_IRQn + 5) -#define INTERRUPT_PRIORITY_CONFIG_END PRIORITY_TABLE_END }; - -#ifdef __cplusplus -} -#endif - -#endif /* INTERRUPTS_H_ */ - -/** - * \} - * \} - * \} - */ diff --git a/third_party/dialog/DialogSDK/bsp/include/sdk_defs.h b/third_party/dialog/DialogSDK/bsp/include/sdk_defs.h deleted file mode 100644 index 587ed989b..000000000 --- a/third_party/dialog/DialogSDK/bsp/include/sdk_defs.h +++ /dev/null @@ -1,812 +0,0 @@ -/** - * \addtogroup BSP - * \{ - * \addtogroup SYSTEM - * \{ - * \addtogroup PLATFORM - * - * \brief Platform definitions - * - * \{ - */ - -/** - ***************************************************************************************** - * - * @file sdk_defs.h - * - * @brief Central include header file with platform definitions. - * - * Copyright (c) 2016, Dialog Semiconductor - * All rights reserved. - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. Neither the name of the copyright holder nor the names of its contributors - * may be used to endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, - * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, - * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED - * OF THE POSSIBILITY OF SUCH DAMAGE. - * - * - ***************************************************************************************** - */ - -#ifndef __SDK_DEFS_H__ -#define __SDK_DEFS_H__ - -#include - -#ifdef __cplusplus - extern "C" { -#endif - -#ifdef __GNUC__ -# define GCC_VERSION (__GNUC__ * 10000 \ - + __GNUC_MINOR__ * 100 \ - + __GNUC_PATCHLEVEL__) -/* assert gcc version is at least 4.9.3 */ -# if GCC_VERSION < 40903 -# error "Please use gcc version 4.9.3 or newer!" -# endif -#endif - -#if (dg_configUSE_AUTO_CHIP_DETECTION == 1) - - /* use a register description that is generic enough for our needs */ -# include "DA14680AE.h" - -#else - -#if dg_configBLACK_ORCA_IC_REV == BLACK_ORCA_IC_REV_A -# if dg_configBLACK_ORCA_IC_STEP == BLACK_ORCA_IC_STEP_E -# include "DA14680AE.h" -# else -# error "Unknown chip stepping for revision A -- check the value of dg_configBLACK_ORCA_IC_STEP" -# endif -#elif dg_configBLACK_ORCA_IC_REV == BLACK_ORCA_IC_REV_B -# if dg_configBLACK_ORCA_IC_STEP == BLACK_ORCA_IC_STEP_B -# include "DA14680BB.h" -# else -# error "Unknown chip stepping for revision B -- check the value of dg_configBLACK_ORCA_IC_STEP" -# endif -#else -# error "Unknown chip revision -- check the value of dg_configBLACK_ORCA_IC_REV" -#endif - -#endif - -#include "core_cm0.h" /* Cortex-M0 processor and core peripherals */ -#include "system_DA14680.h" /* DA14680AA System */ - -/************************ - * Memory map - ************************/ - -/** - * \brief Remapped device base address. - */ -#define MEMORY_REMAPPED_BASE 0x00000000UL -#define MEMORY_REMAPPED_END 0x04000000UL - -/** - * \brief Remapped device memory size (64MiB). - */ -#define MEMORY_REMAPPED_SIZE (MEMORY_REMAPPED_END - MEMORY_REMAPPED_BASE) - -/** - * \brief ROM base address. - */ -#define MEMORY_ROM_BASE 0x07F00000UL -#define MEMORY_ROM_END 0x07F40000UL - -/** - * \brief ROM memory size (256KiB). - */ -#define MEMORY_ROM_SIZE (MEMORY_ROM_END - MEMORY_ROM_BASE) - -/** - * \brief OTP Controller base address. - */ -#define MEMORY_OTPC_BASE 0x07F40000UL -#define MEMORY_OTPC_END 0x07F80000UL - -/** - * \brief OTP memory base address. - */ -#define MEMORY_OTP_BASE 0x07F80000UL -#define MEMORY_OTP_END 0x07FC0000UL - -/** - * \brief OTP memory size (256KiB). - */ -#define MEMORY_OTP_SIZE (MEMORY_OTP_END - MEMORY_OTP_BASE) - -/** - * \brief SYSTEM RAM base address. - */ -#define MEMORY_SYSRAM_BASE 0x07FC0000UL -#define MEMORY_SYSRAM_END 0x07FE0000UL - -/** - * \brief SYSTEM RAM size (128KiB). - */ -#define MEMORY_SYSRAM_SIZE (MEMORY_SYSRAM_END - MEMORY_SYSRAM_BASE) - -/** - * \brief CACHE RAM base address. - */ -#define MEMORY_CACHERAM_BASE 0x07FE0000UL -#define MEMORY_CACHERAM_END 0x08000000UL - -/** - * \brief CACHE RAM size (128KiB). - */ -#define MEMORY_CACHERAM_SIZE (MEMORY_CACHERAM_END - MEMORY_CACHERAM_BASE) - -/** - * \brief QSPI Flash base address. - */ -#define MEMORY_QSPIF_BASE 0x08000000UL -#define MEMORY_QSPIF_END 0x0BF00000UL - -/** - * \brief QSPI Flash memory size (63MiB). - */ -#define MEMORY_QSPIF_SIZE (MEMORY_QSPIF_END - MEMORY_QSPIF_BASE) - -/** - * \brief QSPI Controller base address. - */ -#define MEMORY_QSPIC_BASE 0x0C000000UL -#define MEMORY_QSPIC_END 0x0C100000UL - -/** - * \brief ECC engine microcode base address. - */ -#define MEMORY_ECC_UCODE_BASE 0x40030000UL - -/** - * \brief TRNG FIFO address - */ -#define MEMORY_TRNG_FIFO 0x40040000UL - -#define WITHIN_RANGE(_a, _s, _e) (((uint32_t)(_a) >= (uint32_t)(_s)) && ((uint32_t)(_a) < (uint32_t)(_e))) - -/** - * \brief Address is in the remapped memory region - */ -#define IS_REMAPPED_ADDRESS(_a) WITHIN_RANGE((_a), MEMORY_REMAPPED_BASE, MEMORY_REMAPPED_END) - -/** - * \brief Address is in the ROM region - */ -#define IS_ROM_ADDRESS(_a) WITHIN_RANGE((_a), MEMORY_ROM_BASE, MEMORY_ROM_END) - -/** - * \brief Address is in the OTP memory region - */ -#define IS_OTP_ADDRESS(_a) WITHIN_RANGE((_a), MEMORY_OTP_BASE, MEMORY_OTP_END) - -/** - * \brief Address is in the OTP Controller memory region - */ -#define IS_OTPC_ADDRESS(_a) WITHIN_RANGE((_a), MEMORY_OTPC_BASE, MEMORY_OTPC_END) - -/** - * \brief Address is in the SYSTEM RAM region - */ -#define IS_SYSRAM_ADDRESS(_a) WITHIN_RANGE((_a), MEMORY_SYSRAM_BASE, MEMORY_SYSRAM_END) - -/** - * \brief Address is in the CACHE RAM region - */ -#define IS_CACHERAM_ADDRESS(_a) WITHIN_RANGE((_a), MEMORY_CACHERAM_BASE, MEMORY_CACHERAM_END) - -/** - * \brief Address is in the QSPI Flash memory region - */ -#define IS_QSPIF_ADDRESS(_a) WITHIN_RANGE((_a), MEMORY_QSPIF_BASE, MEMORY_QSPIF_END) - -/** - * \brief Address is in the QSPI Controller memory region - */ -#define IS_QSPIC_ADDRESS(_a) WITHIN_RANGE((_a), MEMORY_QSPIC_BASE, MEMORY_QSPIC_END) - -#define _BLACK_ORCA_IC_VERSION(revision, stepping) \ - (((revision) << 8) | (stepping)) - -/** - * \brief Convenience macro to create the full chip version from revision and stepping. - * It takes letters as arguments. - */ -#define BLACK_ORCA_IC_VERSION(revision, stepping) \ - _BLACK_ORCA_IC_VERSION(BLACK_ORCA_IC_REV_##revision, \ - BLACK_ORCA_IC_STEP_##stepping) - -/** - * \brief The chip version that we compile for. - */ -#define BLACK_ORCA_TARGET_IC \ - _BLACK_ORCA_IC_VERSION(dg_configBLACK_ORCA_IC_REV, dg_configBLACK_ORCA_IC_STEP) - - -/** - * \brief Zero-initialized data retained memory attribute - */ -#define __RETAINED __attribute__((section("retention_mem_zi"))) // RetRAM0 -#define __RETAINED_1 __attribute__((section("retention_mem_1_zi"))) // RetRAM1 - -/** - * \brief Initialized data retained memory attribute - */ -#define __RETAINED_RW __attribute__((section("retention_mem_init"))) - -/** - * \brief Uninitialized data retained memory attribute - */ -#define __RETAINED_UNINIT __attribute__((section("retention_mem_uninit"))) - - /** - * \brief Constant data retained memory attribute - */ - #define __RETAINED_CONST_INIT __attribute__((section("retention_mem_const"))) - -/** - * \brief Text retained memory attribute - */ -#if ((dg_configCODE_LOCATION == NON_VOLATILE_IS_FLASH) && (dg_configEXEC_MODE == MODE_IS_CACHED)) -#define __RETAINED_CODE __attribute__((section("text_retained"))) __attribute__((noinline)) __attribute__((optimize ("no-tree-switch-conversion"))) -#else -#define __RETAINED_CODE -#endif - -/** - * \brief Attribute to tell the compiler to consider a symbol as used - */ -#define __USED __attribute__((used)) - -/** - * \brief Attribute to tell the compiler to consider a symbol as externally visible (for LTO) - */ -#define __LTO_EXT __attribute__((externally_visible)) - -extern uint32_t black_orca_chip_version; - -#define CHIP_IS_AE (black_orca_chip_version == BLACK_ORCA_IC_VERSION(A, E)) -#define CHIP_IS_BB (black_orca_chip_version == BLACK_ORCA_IC_VERSION(B, B)) - -/** - * \brief Get the chip version of the system, at runtime. - */ -__STATIC_INLINE uint32_t black_orca_get_chip_version(void) -{ - uint32_t rev = CHIP_VERSION->CHIP_REVISION_REG - 'A'; - uint32_t step = CHIP_VERSION->CHIP_TEST1_REG; - - return _BLACK_ORCA_IC_VERSION(rev, step); -} - -// Forward declaration -__RETAINED_CODE void hw_cpm_assert_trigger_gpio(void); - -/** - * \brief Assert as warning macro - * - * \note Active only while in development mode - */ -#define ASSERT_WARNING(a) \ - { \ - if (!(a)) { \ - if (dg_configIMAGE_SETUP == DEVELOPMENT_MODE) { \ - __asm volatile ( " cpsid i " ); \ - GPREG->SET_FREEZE_REG = GPREG_SET_FREEZE_REG_FRZ_WDOG_Msk; \ - hw_cpm_assert_trigger_gpio(); \ - do {} while(1); \ - } \ - } \ - } - -/** - * \brief Assert as error macro - * - */ -#define ASSERT_ERROR(a) \ - { \ - if (dg_configIMAGE_SETUP == DEVELOPMENT_MODE) { \ - if (!(a)) { \ - __asm volatile ( " cpsid i " ); \ - GPREG->SET_FREEZE_REG = GPREG_SET_FREEZE_REG_FRZ_WDOG_Msk; \ - hw_cpm_assert_trigger_gpio(); \ - do {} while(1); \ - } \ - } \ - else { \ - if (!(a)) { \ - __asm volatile ( " cpsid i " ); \ - __asm volatile ( " bkpt 2 " ); \ - } \ - } \ - } - -/** - * \brief Assert as warning macro when the system is still uninitialized - * - * \note Active only while in development mode. The SW cursor is not activated. - */ -#define ASSERT_WARNING_UNINIT(a) \ - { \ - if (!(a)) { \ - if (dg_configIMAGE_SETUP == DEVELOPMENT_MODE) { \ - __asm volatile ( " cpsid i " ); \ - GPREG->SET_FREEZE_REG = GPREG_SET_FREEZE_REG_FRZ_WDOG_Msk; \ - do {} while(1); \ - } \ - } \ - } - -/** - * \brief Assert as error macro when the system is still uninitialized - * - * \note The SW cursor is not activated. - */ -#define ASSERT_ERROR_UNINIT(a) \ - { \ - if (dg_configIMAGE_SETUP == DEVELOPMENT_MODE) { \ - if (!(a)) { \ - __asm volatile ( " cpsid i " ); \ - GPREG->SET_FREEZE_REG = GPREG_SET_FREEZE_REG_FRZ_WDOG_Msk; \ - do {} while(1); \ - } \ - } \ - else { \ - if (!(a)) { \ - __asm volatile ( " cpsid i " ); \ - __asm volatile ( " bkpt 2 " ); \ - } \ - } \ - } - -/** - * \brief Macro to disable all interrupts - * - * This macro must always be used with GLOBAL_INT_RESTORE(). E.g. - * - * \code{.c} - * GLOBAL_INT_DISABLE(); - * ... code to be executed with interrupts disabled ... - * GLOBAL_INT_RESTORE(); - * \endcode - * - * \sa GLOBAL_INT_RESTORE - */ -#define GLOBAL_INT_DISABLE() \ - do { \ - unsigned int __l_irq_rest; \ - __asm volatile ("mrs %0, primask \n\t" \ - "mov r1, $1 \n\t" \ - "msr primask, r1 \n\t" \ - : "=r" (__l_irq_rest) \ - : \ - : "r1" \ - ); \ - DBG_CONFIGURE_HIGH(CMN_TIMING_DEBUG, CMNDBG_CRITICAL_SECTION); - -/** - * \brief Macro to restore all interrupts - * - * This macro must always be used after GLOBAL_INT_DISABLE(). E.g. - * - * \code{.c} - * GLOBAL_INT_DISABLE(); - * ... code to be executed with interrupts disabled ... - * GLOBAL_INT_RESTORE(); - * \endcode - * - * \sa GLOBAL_INT_DISABLE - */ -#define GLOBAL_INT_RESTORE() \ - if (__l_irq_rest == 0) { \ - DBG_CONFIGURE_LOW(CMN_TIMING_DEBUG, CMNDBG_CRITICAL_SECTION); \ - } \ - __asm volatile ("msr primask, %0 \n\t" \ - : \ - : "r" (__l_irq_rest) \ - : \ - ); \ - } while(0) - -#define containingoffset(address, type, field) ((type*)((uint8*)(address)-(size_t)(&((type*)0)->field))) - -/** - * \brief Macro the minimum of two values - * - * \param[in] a First value - * \param[in] b Second value - */ -#define MIN(a, b) (((a) < (b)) ? (a) : (b)) - -/** - * \brief Macro the maximum of two values - * - * \param[in] a First value - * \param[in] b Second value - */ -#define MAX(a, b) (((a) > (b)) ? (a) : (b)) - -/** - * \brief Macro to swap the bytes of a 16-bit variable - * - * \param[in] a The 16-bit variable - */ -#if defined(__GNUC__) -#define SWAP16(a) __builtin_bswap16(a) -#else -#define SWAP16(a) ((a<<8) | (a>>8)) -#endif - -/** - * \brief Macro to swap the bytes of a 32-bit variable - * - * \param[in] a The 32-bit variable - */ -#if defined(__GNUC__) -#define SWAP32(a) __builtin_bswap32(a) -#else -#define SWAP32(a) ((a>>24 & 0xff) | (a>>8 & 0xff00) | (a<<8 & 0xff0000) | (a<<24 & 0xff000000)) -#endif - -#if defined(__GNUC__) -#define DEPRECATED __attribute__ ((deprecated)) -#else -#warning Deprecated macro must be implemented for this compiler -#define DEPRECATED -#endif - -#if defined(__GNUC__) -#define DEPRECATED_MSG(msg) __attribute__ ((deprecated(msg))) -#else -#warning Deprecated macro must be implemented for this compiler -#define DEPRECATED_MSG(msg) -#endif - -/* The following exist in ROM code */ -void __aeabi_memcpy(void *dest, const void *src, size_t n); -void __aeabi_memmove(void *dest, const void *src, size_t n); -void __aeabi_memset(void *dest, size_t n, int c); - -/** - * \brief Optimized memcpy - */ -#define OPT_MEMCPY __aeabi_memcpy - -/** - * \brief Optimized memmove - */ -#define OPT_MEMMOVE __aeabi_memmove - -/** - * \brief Optimized memset - */ -#define OPT_MEMSET(s, c, n) __aeabi_memset(s, n, c) - -/** - * \brief Access register field mask. - * - * Returns a register field mask (aimed to be used with local variables). - * e.g. - * \code - * uint16_t tmp; - * - * tmp = CRG_TOP->SYS_STAT_REG; - * - * if (tmp & REG_MSK(CRG_TOP, SYS_STAT_REG, XTAL16_TRIM_READY)) { - * ... - * \endcode - */ -#define REG_MSK(base, reg, field) \ - (base ## _ ## reg ## _ ## field ## _Msk) - -/** - * \brief Access register field position. - * - * Returns a register field position (aimed to be used with local variables). - */ -#define REG_POS(base, reg, field) \ - (base ## _ ## reg ## _ ## field ## _Pos) - -/** - * \brief Access register field value. - * - * Returns a register field value (aimed to be used with local variables). - * e.g. - * \code - * uint16_t tmp; - * int counter; - * tmp = CRG_TOP->TRIM_CTRL_REG; - * counter = REG_GET_FIELD(CRG_TOP, TRIM_CTRL_REG, XTAL_COUNT_N, tmp); - * ... - * \endcode - */ -#define REG_GET_FIELD(base, reg, field, var) \ - ((var & (base ## _ ## reg ## _ ## field ## _Msk)) >> \ - (base ## _ ## reg ## _ ## field ## _Pos)) - -/** - * \brief Set register field value. - * - * Sets a register field value (aimed to be used with local variables). - * e.g. - * \code - * uint16_t tmp; - * - * tmp = CRG_TOP->TRIM_CTRL_REG; - * REG_SET_FIELD(CRG_TOP, TRIM_CTRL_REG, XTAL_COUNT_N, tmp, 10); - * REG_SET_FIELD(CRG_TOP, TRIM_CTRL_REG, XTAL_TRIM_SELECT, tmp, 2); - * CRG_TOP->TRIM_CTRL_REG = tmp; - * ... - * \endcode - */ -#define REG_SET_FIELD(base, reg, field, var, val) \ - var = ((var & ~((base ## _ ## reg ## _ ## field ## _Msk))) | \ - (((val) << (base ## _ ## reg ## _ ## field ## _Pos)) & \ - (base ## _ ## reg ## _ ## field ## _Msk))) - -/** - * \brief Clear register field value. - * - * Clears a register field value (aimed to be used with local variables). - * e.g. - * \code - * uint16_t tmp; - * - * tmp = CRG_TOP->TRIM_CTRL_REG; - * REG_CLR_FIELD(CRG_TOP, TRIM_CTRL_REG, XTAL_COUNT_N, tmp); - * REG_CLR_FIELD(CRG_TOP, TRIM_CTRL_REG, XTAL_TRIM_SELECT, tmp); - * CRG_TOP->TRIM_CTRL_REG = tmp; - * ... - * \endcode - */ -#define REG_CLR_FIELD(base, reg, field, var) \ - var &= ~(base ## _ ## reg ## _ ## field ## _Msk) - -/** - * \brief Get the address of a register value by index (provided a register interval) - * - * \note The register interval should be an exact multiple of the register's base size. For example, - * if the register size is 32-bit, then the interval should be 0x4, 0x8, etc. Otherwise, the result - * will be undefined. The interval value must be in bytes. The index value (0,1,2...) is multiplied by - * the interval value (in bytes) to find the actual offset of the register. - * - * Returns a register address value by index - */ -#define REG_GET_ADDR_INDEXED(base, reg, interval, index) \ - ((&base->reg) + (((intptr_t) index) * ((interval) / sizeof(base->reg)))) - -/** - * \brief Return the value of a register field by index (provided a register interval). - * - * e.g. - * \code - * uint16_t val; - * uint16_t index = 2 - * - * val = REG_GETF_INDEXED(FTDF, FTDF_LONG_ADDR_0_0_REG, REG_EXP_SA_L, 0x10, index) - * - * ... - * \endcode - * - * \note The register interval should be an exact multiple of the register's base size. For example, - * if the register size is 32-bit, then the interval should be 0x4, 0x8, etc. Otherwise, the result - * will be undefined. The interval value must be in bytes. The index value (0,1,2...) is multiplied by - * the interval value (in bytes) to find the actual offset of the register. - * - */ -#define REG_GETF_INDEXED(base, reg, field, interval, index) \ - (((*REG_GET_ADDR_INDEXED(base, reg, interval, index)) & \ - (base ## _ ## reg ## _ ## field ## _Msk)) >> (base ## _ ## reg ## _ ## field ## _Pos)) - -/** - * \brief Return the value of a register field. - * - * e.g. - * \code - * uint16_t val; - * - * val = REG_GETF(CRG_TOP, TRIM_CTRL_REG, XTAL_COUNT_N); - * ... - * \endcode - */ -#define REG_GETF(base, reg, field) \ - (((base->reg) & (base##_##reg##_##field##_Msk)) >> (base##_##reg##_##field##_Pos)) - -/** - * \brief Set the value of a register field. - * - * e.g. - * \code - * - * REG_SETF(CRG_TOP, TRIM_CTRL_REG, XTAL_COUNT_N, new_value); - * ... - * \endcode - */ -#define REG_SETF(base, reg, field, new_val) \ - base->reg = ((base->reg & ~(base##_##reg##_##field##_Msk)) | \ - ((base##_##reg##_##field##_Msk) & ((new_val) << (base##_##reg##_##field##_Pos)))) - -/** - * \brief Set a bit of a register. - * - * e.g. - * \code - * - * REG_SET_BIT(CRG_TOP, CLK_TMR_REG, TMR1_ENABLE); - * ... - * \endcode - */ -#define REG_SET_BIT(base, reg, field) \ - do { \ - base->reg |= (1 << (base##_##reg##_##field##_Pos)); \ - } while (0) - -/** - * \brief Clear a bit of a register. - * - * e.g. - * \code - * - * REG_CLR_BIT(CRG_TOP, CLK_TMR_REG, TMR1_ENABLE); - * ... - * \endcode - */ -#define REG_CLR_BIT(base, reg, field) \ - do { \ - base->reg &= ~(base##_##reg##_##field##_Msk); \ - } while (0) - -/** - * \brief Sets register bits, indicated by the mask, to a value. - * - * e.g. - * \code - * REG_SET_MASKED(RFCU_POWER, RF_CNTRL_TIMER_5_REG, 0xFF00, 0x1818); - * \endcode - */ -#define REG_SET_MASKED(base, reg, mask, value) \ - do { \ - base->reg = (base->reg & ~(mask)) | ((value) & (mask)); \ - } while (0) - -/** - * \brief Sets 16-bit wide register bits, indicated by the field, to a value v. - */ -#define BITS16(base, reg, field, v) \ - ((uint16) (((uint16) (v) << (base ## _ ## reg ## _ ## field ## _Pos)) & \ - (base ## _ ## reg ## _ ## field ## _Msk))) - -/** - * \brief Sets 32-bit wide register bits, indicated by the field, to a value v. - */ -#define BITS32(base, reg, field, v) \ - ((uint32) (((uint32) (v) << (base ## _ ## reg ## _ ## field ## _Pos)) & \ - (base ## _ ## reg ## _ ## field ## _Msk))) - -/** - * \brief Reads 16-bit wide register bits, indicated by the field, to a variable v. - */ -#define GETBITS16(base, reg, v, field) \ - ((uint16) (((uint16) (v)) & (base ## _ ## reg ## _ ## field ## _Msk)) >> \ - (base ## _ ## reg ## _ ## field ## _Pos)) - -/** - * \brief Reads 32-bit wide register bits, indicated by the field, to a variable v. - */ -#define GETBITS32(base, reg, v, field) \ - ((uint32) (((uint32) (v)) & (base ## _ ## reg ## _ ## field ## _Msk)) >> \ - (base ## _ ## reg ## _ ## field ## _Pos)) - -/** - * \brief Macro to enable the debugger - * - */ -#define ENABLE_DEBUGGER \ - do { \ - REG_SET_BIT(CRG_TOP, SYS_CTRL_REG, DEBUGGER_ENABLE); \ - } while(0) - -/** - * \brief Macro to disable the debugger - * - */ -#define DISABLE_DEBUGGER \ - do { \ - REG_CLR_BIT(CRG_TOP, SYS_CTRL_REG, DEBUGGER_ENABLE); \ - } while(0) - - -/** - * \brief Macro to cause a software reset - * - */ -#define SWRESET \ - do { \ - REG_SET_BIT(GPREG, DEBUG_REG, SW_RESET); \ - } while (0) - -#define BIT0 0x01 -#define BIT1 0x02 -#define BIT2 0x04 -#define BIT3 0x08 -#define BIT4 0x10 -#define BIT5 0x20 -#define BIT6 0x40 -#define BIT7 0x80 - -#define BIT8 0x0100 -#define BIT9 0x0200 -#define BIT10 0x0400 -#define BIT11 0x0800 -#define BIT12 0x1000 -#define BIT13 0x2000 -#define BIT14 0x4000 -#define BIT15 0x8000 - -#define BIT16 0x00010000 -#define BIT17 0x00020000 -#define BIT18 0x00040000 -#define BIT19 0x00080000 -#define BIT20 0x00100000 -#define BIT21 0x00200000 -#define BIT22 0x00400000 -#define BIT23 0x00800000 - -#define BIT24 0x01000000 -#define BIT25 0x02000000 -#define BIT26 0x04000000 -#define BIT27 0x08000000 -#define BIT28 0x10000000 -#define BIT29 0x20000000 -#define BIT30 0x40000000 -#define BIT31 0x80000000 - -typedef unsigned char uint8; // 8 bits -typedef char int8; // 8 bits -typedef unsigned short uint16; // 16 bits -typedef short int16; // 16 bits -typedef unsigned long uint32; // 32 bits -typedef long int32; // 32 bits -typedef unsigned long long uint64; // 64 bits -typedef long long int64; // 64 bits - -/* See also "Data Types" on pag. 21 of the (Doulos) Cortex-M0 / SoC 1.0 training documentation. */ -typedef unsigned char BYTE; // 8 bits = Byte -typedef unsigned short HWORD; // 16 bits = Halfword -typedef unsigned long WORD; // 32 bits = Word -typedef long long DWORD; // 64 bits = Doubleword - - -#ifdef __cplusplus -} -#endif - -#endif /* __SDK_DEFS_H__ */ - -/** - * \} - * \} - * \} - */ - diff --git a/third_party/dialog/DialogSDK/bsp/include/suota.h b/third_party/dialog/DialogSDK/bsp/include/suota.h deleted file mode 100644 index 7862f4229..000000000 --- a/third_party/dialog/DialogSDK/bsp/include/suota.h +++ /dev/null @@ -1,118 +0,0 @@ -/** - * \addtogroup BSP - * \{ - * \addtogroup SYSTEM - * \{ - * \addtogroup SUOTA - * - * \brief SUOTA structure definitions - * - * \{ - */ - -/** - ***************************************************************************************** - * - * @file suota.h - * - * @brief SUOTA structure definitions - * - * Copyright (c) 2016, Dialog Semiconductor - * All rights reserved. - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. Neither the name of the copyright holder nor the names of its contributors - * may be used to endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, - * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, - * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED - * OF THE POSSIBILITY OF SUCH DAMAGE. - * - * - ***************************************************************************************** - */ - -#ifndef SUOTA_H_ -#define SUOTA_H_ - -#include - -#define SUOTA_VERSION_1_1 11 -#define SUOTA_VERSION_1_2 12 -#define SUOTA_VERSION_1_3 13 - -#ifndef SUOTA_VERSION -#define SUOTA_VERSION SUOTA_VERSION_1_3 -#endif - -#if SUOTA_PSM && (SUOTA_VERSION < SUOTA_VERSION_1_2) -# error "SUOTA_PSM is only applicable to SUOTA_VERSION >= 1.2" -#endif - -/** - * \struct suota_1_1_product_header_t; - * - * \brief SUOTA 1.1 product header as defined by Dialog SUOTA specification. - * - * \note the same header is used for any SUOTA version newer than 1.1 - * - */ -typedef struct { - uint8_t signature[2]; - uint16_t flags; - uint32_t current_image_location; - uint32_t update_image_location; - uint8_t reserved[8]; -} __attribute__((packed)) suota_1_1_product_header_t; - -#define SUOTA_1_1_PRODUCT_HEADER_SIGNATURE_B1 0x70 -#define SUOTA_1_1_PRODUCT_HEADER_SIGNATURE_B2 0x62 - -/** - * \struct suota_1_1_image_header_t - * - * \brief SUOTA 1.1 image header as defined by Dialog SUOTA specification. - * - * \note the same header is used for any SUOTA version newer than 1.1 - * - */ -typedef struct { - uint8_t signature[2]; - uint16_t flags; - uint32_t code_size; - uint32_t crc; - uint8_t version[16]; - uint32_t timestamp; - uint32_t exec_location; -} __attribute__((packed)) suota_1_1_image_header_t; - -#define SUOTA_1_1_IMAGE_HEADER_SIGNATURE_B1 0x70 -#define SUOTA_1_1_IMAGE_HEADER_SIGNATURE_B2 0x61 - -#define SUOTA_1_1_IMAGE_FLAG_FORCE_CRC 0x01 -#define SUOTA_1_1_IMAGE_FLAG_VALID 0x02 -#define SUOTA_1_1_IMAGE_FLAG_RETRY1 0x04 -#define SUOTA_1_1_IMAGE_FLAG_RETRY2 0x08 - -typedef suota_1_1_image_header_t suota_image_header_t; - -#endif /* SUOTA_H_ */ - -/** - * \} - * \} - * \} - */ diff --git a/third_party/dialog/DialogSDK/bsp/include/system_ARMCM0.h b/third_party/dialog/DialogSDK/bsp/include/system_ARMCM0.h deleted file mode 100755 index 9b8d11ba1..000000000 --- a/third_party/dialog/DialogSDK/bsp/include/system_ARMCM0.h +++ /dev/null @@ -1,64 +0,0 @@ -/**************************************************************************//** - * @file system_ARMCM0.h - * @brief CMSIS Device System Header File for - * ARMCM0 Device Series - * @version V2.00 - * @date 18. August 2015 - ******************************************************************************/ -/* Copyright (c) 2011 - 2015 ARM LIMITED - - All rights reserved. - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of ARM nor the names of its contributors may be used - to endorse or promote products derived from this software without - specific prior written permission. - * - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDERS AND CONTRIBUTORS BE - LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - POSSIBILITY OF SUCH DAMAGE. - ---------------------------------------------------------------------------*/ - - -#ifndef SYSTEM_ARMCM0_H -#define SYSTEM_ARMCM0_H - -#ifdef __cplusplus -extern "C" { -#endif - -extern uint32_t SystemCoreClock; /*!< System Clock Frequency (Core Clock) */ - - -/** @brief Setup the microcontroller system. - - Initialize the System and update the SystemCoreClock variable. - */ -extern void SystemInit (void); - - -/** \brief Update SystemCoreClock variable. - - Updates the SystemCoreClock with current core Clock - retrieved from cpu registers. - */ -extern void SystemCoreClockUpdate (void); - -#ifdef __cplusplus -} -#endif - -#endif /* SYSTEM_ARMCM0_H */ diff --git a/third_party/dialog/DialogSDK/bsp/include/system_DA14680.h b/third_party/dialog/DialogSDK/bsp/include/system_DA14680.h deleted file mode 100755 index 1d2e4dbf4..000000000 --- a/third_party/dialog/DialogSDK/bsp/include/system_DA14680.h +++ /dev/null @@ -1,91 +0,0 @@ -/**************************************************************************//** - * @file system_DA14680.h - * @brief CMSIS Cortex-M0 Device Peripheral Access Layer Header File for - * Device DA14680 - * @version V3.10 - * @date 23. November 2012 - * - * @note - * - ******************************************************************************/ -/* Copyright (c) 2012 ARM LIMITED - - All rights reserved. - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of ARM nor the names of its contributors may be used - to endorse or promote products derived from this software without - specific prior written permission. - * - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDERS AND CONTRIBUTORS BE - LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - POSSIBILITY OF SUCH DAMAGE. - ---------------------------------------------------------------------------*/ - - -#ifndef SYSTEM_DA14680_H -#define SYSTEM_DA14680_H - -#ifdef __cplusplus -extern "C" { -#endif - -#include -#include - -extern uint32_t SystemCoreClock; /*!< System Clock Frequency (Core Clock) */ - - -/** - * Initialize the system - * - * @return none - * - * @brief Setup the microcontroller system. - * Initialize the System and update the SystemCoreClock variable. - */ -extern void SystemInit (void); - -/** - * Update SystemCoreClock variable - * - * @return none - * - * @brief Updates the SystemCoreClock with current core Clock - * retrieved from cpu registers. - */ -extern void SystemCoreClockUpdate (void); - - -/** - * \brief Convert a CPU address to a physical address - * - * To calculate the physical address, the current remapping (SYS_CTRL_REG.REMAP_ADR0) - * is used. - * - * \param [in] addr address seen by CPU - * - * \return physical address (for DMA, AES/HASH etc.) -- can be same or different as addr - * - */ -extern uint32_t DA15000_phy_addr(uint32_t addr); - - -#ifdef __cplusplus -} -#endif - -#endif /* SYSTEM_DA14680_H */ diff --git a/third_party/dialog/DialogSDK/bsp/ldfile/da15000.ld b/third_party/dialog/DialogSDK/bsp/ldfile/da15000.ld deleted file mode 100755 index a8105d7c1..000000000 --- a/third_party/dialog/DialogSDK/bsp/ldfile/da15000.ld +++ /dev/null @@ -1,237 +0,0 @@ -/** - **************************************************************************************** - * - * Copyright (c) 2016, Dialog Semiconductor - * All rights reserved. - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. Neither the name of the copyright holder nor the names of its contributors - * may be used to endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, - * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, - * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED - * OF THE POSSIBILITY OF SUCH DAMAGE. - * - * - **************************************************************************************** - */ - -MEMORY -{ - ROM (rx) : ORIGIN = (0x8000000 + (0)), LENGTH = (512 * 1024) - RetRAM0 (rwx): ORIGIN = (0x7FC0000) + (( 64 * 1024) + ( 0 * 1024)), LENGTH = (( 24 * 1024)) - RetRAM1 (rwx): ORIGIN = (0), LENGTH = 0 - RAM (rw) : ORIGIN = (0x7FC0000) + ((0x200)), LENGTH = (( 64 * 1024) - (0x200)) -} - -ENTRY(Reset_Handler) -SECTIONS -{ - .init_text : - { - KEEP(*(.isr_vector)) - . = 0xC0; - KEEP(*(.patch_table)) - . = 0x100; - KEEP(*(.patch_table_flash)) - . = 0x130; - KEEP(*(.default_patch_code_handler_section)) - . = 0x200; - *(text_reset*) - } > ROM - .copy.table : - { - . = ALIGN(4); - __copy_table_start__ = .; - LONG (__etext + (__data_end__ - __data_start__)) - LONG (__RetRAM0_code_start__) - LONG (__RetRAM0_code_end__ - __RetRAM0_code_start__) - LONG (__etext) - LONG (__data_start__) - LONG (__data_end__ - __data_start__) - __copy_table_end__ = .; - . = ALIGN(16); - } > ROM - .zero.table : - { - . = ALIGN(4); - __zero_table_start__ = .; - LONG (__bss_start__) - LONG (__bss_end__ - __bss_start__) - LONG (__RetRAM0_data_start) - LONG (__RetRAM0_size) - LONG (__RetRAM1_start__) - LONG (__RetRAM1_end__ - __RetRAM1_start__) - __zero_table_end__ = .; - . = ALIGN(16); - } > ROM - PROVIDE_HIDDEN (__stext = .); - .text : - { - *(EXCLUDE_FILE(*libnosys.a:sbrk.o - *libgcc.a:_aeabi_uldivmod.o - *libgcc.a:_muldi3.o - *libgcc.a:_dvmd_tls.o - *libgcc.a:bpabi.o - *libgcc.a:_udivdi3.o - *libgcc.a:_clzdi2.o - *libgcc.a:_clzsi2.o) .text*) - . = ALIGN(4); - __start_adapter_init_section = .; - *(adapter_init_section) - __stop_adapter_init_section = .; - __start_bus_init_section = .; - *(bus_init_section) - __stop_bus_init_section = .; - __start_device_init_section = .; - *(device_init_section) - __stop_device_init_section = .; - KEEP(*(.init)) - KEEP(*(.fini)) - *crtbegin.o(.ctors) - *crtbegin?.o(.ctors) - *(EXCLUDE_FILE(*crtend?.o *crtend.o) .ctors) - *(SORT(.ctors.*)) - *(.ctors) - *crtbegin.o(.dtors) - *crtbegin?.o(.dtors) - *(EXCLUDE_FILE(*crtend?.o *crtend.o) .dtors) - *(SORT(.dtors.*)) - *(.dtors) - . = ALIGN(4); - PROVIDE_HIDDEN (__preinit_array_start = .); - KEEP(*(.preinit_array)) - PROVIDE_HIDDEN (__preinit_array_end = .); - . = ALIGN(4); - PROVIDE_HIDDEN (__init_array_start = .); - KEEP(*(SORT(.init_array.*))) - KEEP(*(.init_array)) - PROVIDE_HIDDEN (__init_array_end = .); - . = ALIGN(4); - PROVIDE_HIDDEN (__fini_array_start = .); - KEEP(*(SORT(.fini_array.*))) - KEEP(*(.fini_array)) - PROVIDE_HIDDEN (__fini_array_end = .); - *(.rodata*) - KEEP(*(.eh_frame*)) - } > ROM - .ARM.extab : - { - *(.ARM.extab* .gnu.linkonce.armextab.*) - } > ROM - __exidx_start = .; - .ARM.exidx : - { - *(.ARM.exidx* .gnu.linkonce.armexidx.*) - } > ROM - __exidx_end = .; - .align_s : - { - . = ALIGN(16); - } > ROM - __etext = .; - .data : AT (__etext) - { - . = ALIGN(16); - __data_start__ = .; - *(vtable) - *(EXCLUDE_FILE(*\libg_nano.a:* *\libnosys.a:*) .data*) - . = ALIGN(4); - KEEP(*(.jcr*)) - . = ALIGN(16); - __data_end__ = .; - } > RAM - .bss : - { - . = ALIGN(32); - __bss_start__ = .; - *(.bss.ecc_buffer) - *(EXCLUDE_FILE(*\libg_nano.a:* *\libnosys.a:*) .bss*) - *(COMMON) - . = ALIGN(32); - __bss_end__ = .; - } > RAM - .heap (COPY): - { - __end__ = .; - PROVIDE(end = .); - *(.heap*) - __HeapLimit = .; - } > RAM - .stack_dummy (COPY): - { - *(.stack*) - } > RAM - __StackTop = ORIGIN(RAM) + LENGTH(RAM); - __StackLimit = __StackTop - SIZEOF(.stack_dummy); - PROVIDE(__stack = __StackTop); - ASSERT(__StackLimit >= __HeapLimit, "region RAM overflowed with stack") - RETENTION_INIT0 : AT (__etext + (__data_end__ - __data_start__)) - { - . = ALIGN(16); - __RetRAM0_code_start__ = .; - *(text_retained) - *libgcc.a:_aeabi_uldivmod.o (.text*) - *libgcc.a:_muldi3.o (.text*) - *libgcc.a:_dvmd_tls.o (.text*) - *libgcc.a:bpabi.o (.text*) - *libgcc.a:_udivdi3.o (.text*) - *libgcc.a:_clzdi2.o (.text*) - *libgcc.a:_clzsi2.o (.text*) - . = ALIGN(4); - *(retention_mem_init) - *(retention_mem_const) - *(privileged_data_init) - *(.retention) - *\libg_nano.a:* (.data*) - *\libnosys.a:* (.data*) - . = ALIGN(16); - __RetRAM0_code_end__ = .; - . = ALIGN(4); - } > RetRAM0 - RETENTION_RAM0 (COPY) : - { - . = ALIGN(4); - __RetRAM0_start = .; - *(nmi_info) - *(hard_fault_info) - *(retention_mem_uninit) - . = ALIGN(32); - __RetRAM0_data_start = .; - *\libg_nano.a:* (.bss*) - *\libnosys.a:* (.bss*) - *(privileged_data_zi) - *(retention_mem_zi) - *(os_heap) - . = ALIGN(32); - __RetRAM0_data_end__ = .; - } > RetRAM0 - RETENTION_RAM1 (COPY) : - { - . = ALIGN(32); - __RetRAM1_start__ = .; - *(privileged_data_1_zi) - *(retention_mem_1_zi) - . = ALIGN(32); - __RetRAM1_end__ = .; - } > RetRAM1 - __RetRAM0_size = (__RetRAM0_data_end__ - __RetRAM0_data_start); - __image_size = __etext + (__data_end__ - __data_start__) - + (__RetRAM0_code_end__ - __RetRAM0_code_start__) - - ORIGIN(ROM); - __mirrored_image_size = __etext + (__data_end__ - __data_start__) - ORIGIN(ROM); -} - diff --git a/third_party/dialog/DialogSDK/bsp/memory/include/qspi_automode.h b/third_party/dialog/DialogSDK/bsp/memory/include/qspi_automode.h deleted file mode 100644 index c6d21aaf1..000000000 --- a/third_party/dialog/DialogSDK/bsp/memory/include/qspi_automode.h +++ /dev/null @@ -1,305 +0,0 @@ -/** - * \addtogroup BSP - * \{ - * \addtogroup SYSTEM - * \{ - * \addtogroup MEMORY - * - * \{ - */ - -/** - **************************************************************************************** - * - * @file qspi_automode.h - * - * @brief Access QSPI flash when running in auto mode - * - * Copyright (c) 2016, Dialog Semiconductor - * All rights reserved. - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. Neither the name of the copyright holder nor the names of its contributors - * may be used to endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, - * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, - * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED - * OF THE POSSIBILITY OF SUCH DAMAGE. - * - * - **************************************************************************************** - */ - -#ifndef QSPI_AUTOMODE_H_ -#define QSPI_AUTOMODE_H_ - -#include -#include -#include -#include -#include -#include "hw_cpm.h" -/* - * Debug options - */ -#if __DBG_QSPI_ENABLED -#define __DBG_QSPI_VOLATILE__ volatile -#pragma message "Automode: Debugging is on!" -#else -#define __DBG_QSPI_VOLATILE__ -#endif - -/* - * Defines (generic) - */ - -/* Macros to put functions that need to be copied to ram in one section (retained) */ -typedef struct qspi_ucode_s { - const uint32_t *code; - uint8_t size; -} qspi_ucode_t; - -/* - * Flash specific defines - */ - -/** - * \brief SUS bit delay after SUSPEND command (in μsec) - * - */ -#define FLASH_SUS_DELAY (20) - - -/** - * \brief Get size of RAM buffer needed for code to modify QSPI flash. - * - * Called must allocate buffer at least of this size and pass it qspi_set_code_buffer() to allow - * flash modification. - * - * \return size of buffer needed - * - */ -DEPRECATED -uint32_t qspi_automode_get_code_buffer_size(void); - -/** - * \brief Set buffer that will be used for code that modifies flash. - * - * This function should be called with buffer allocated for flash manipulation code. - * Size of this buffer should be at least the value returned from qspi_get_code_buffer_size(). - * If function is called with NULL all further calls to qspi_write_flash_page() or - * qspi_erase_flash_sector() will crash. - * To preserve memory it is quite wise to allocate buffer before erase/write, update flash and - * then call this function with NULL and free memory. - * - * \param [in] ram buffer for code that will be used for erase and write. - * - */ -DEPRECATED_MSG("Function does not need to be called") -void qspi_automode_set_code_buffer(void *ram); - -/** - * \brief Write flash memory - * - * This function allows to write up to page size of data to flash. - * If size is greater than page size, flash can wrap data and overwrite content of page. - * It's possible to write less then page size. - * Memory should be erased before. - * - * \note: Do not pass buf pointing to QSPI mapped memory. - * - * \param [in] addr offset in flash to write data to - * \param [in] buf pointer to data to write - * \param [in] size number of bytes to write - * - * return number of bytes written - * - */ -size_t qspi_automode_write_flash_page(uint32_t addr, const uint8_t *buf, size_t size); - -/** - * \brief Erase flash sector - * - * \param [in] addr starting offset of sector - */ -void qspi_automode_erase_flash_sector(uint32_t addr); - -/** - * \brief Erase whole chip - */ -void qspi_automode_erase_chip(void); - -/** - * \brief Read flash memory - * - * \param [in] addr starting offset - * \param [out] buf buffer to read data to - * \param [in] len number of bytes to read - * - * \returns number of bytes read - */ -size_t qspi_automode_read(uint32_t addr, uint8_t *buf, size_t len); - -/** - * \brief Get address of flash - * - * \param [in] addr starting offset - * - * \returns address in CPU address space where data is located - */ -static inline const void *qspi_automode_addr(uint32_t addr) __attribute__((always_inline)); - -static inline const void *qspi_automode_addr(uint32_t addr) -{ - return (const void *) (MEMORY_QSPIF_BASE + addr); -} - -/** - * \brief Power up flash - */ -__RETAINED_CODE void qspi_automode_flash_power_up(void); - -/** - * \brief Set QSPI Flash into power down mode - */ -__RETAINED_CODE void qspi_automode_flash_power_down(void); - -/** - * \brief Init QSPI controller - */ -__RETAINED_CODE bool qspi_automode_init(void); - -#if (dg_configDISABLE_BACKGROUND_FLASH_OPS == 0) -/** - * \brief Check if a program or sector erase operation is in progress - * - * \return bool True if the BUSY bit is set else false. - * - * \warning This function checks the value of the BUSY bit in the Status Register 1 of the Flash. It - * is the responsibility of the caller to call the function in the right context. The - * function must be called with interrupts disabled. - * - */ -__RETAINED_CODE bool qspi_check_program_erase_in_progress(void); - -/** - * \brief Suspend a Flash program or erase operation - * - * \details This function will try to suspend an ongoing program or erase procedure. The SUS bit is - * checked and the actual status is returned to the caller. Note that the program or erase - * procedure may have been completed before the suspend command is processed by the Flash. In - * this case the SUS bit will be left to 0. - * - * \return bool True if the procedure has been suspended. False if the procedure was not suspended - * successfully or had finished before the suspend command was processed by the Flash. - * - * \warning After the call to this function, the QSPI controller is set to auto mode and the Flash - * access to quad mode (if QUAD_MODE is 1). The function must be called with interrupts - * disabled. - * - */ -__RETAINED_CODE bool qspi_check_and_suspend(void); - -/** - * \brief Resume a Flash program or sector erase operation - * - * \warning After the call to this function, the QSPI controller is set to manual mode and the Flash - * access to single mode. The function must be called with interrupts disabled. - * - */ -__RETAINED_CODE void qspi_resume(void); - -/** - * \brief Erase a sector of the Flash in manual mode - * - * \param[in] addr The address of the sector to be erased. - * - * \warning This function does not block until the Flash has processed the command! The QSPI - * controller is left to manual mode after the call to this function. The function must be - * called with interrupts disabled. - * - */ -__RETAINED_CODE void flash_erase_sector_manual_mode(uint32_t addr); - -/** - * \brief Program data into a page of the Flash in manual mode - * - * \param[in] addr The address of the Flash where the data will be written. It may be anywhere in a - * page. - * \param[in] buf Pointer to the beginning of the buffer that contains the data to be written. - * \param[in] len The number of bytes to be written. - * - * \return size_t The number of bytes written. - * - * \warning The boundary of the page where addr belongs to, will not be crossed! The caller should - * issue another flash_program_page_manual_mode() call in order to write the remaining data - * to the next page. The QSPI controller is left to manual mode after the call to this - * function. The function must be called with interrupts disabled. - * - */ -__RETAINED_CODE size_t flash_program_page_manual_mode(uint32_t addr, const uint8_t *buf, - uint16_t len); -#endif - -/** - * \brief Activate Flash command entry mode - * - * \note After the call to this function, the QSPI controller is set to manual mode and the Flash - * access to single mode. - * - * \warning The function must be called with interrupts disabled. - * - */ -__RETAINED_CODE void flash_activate_command_entry_mode(void); - -/** - * \brief Deactivate Flash command entry mode - * - * \note After the call to this function, the QSPI controller is set to auto mode and the Flash - * access to quad mode (if QUAD_MODE is 1). - * - * \warning The function must be called with interrupts disabled. - * - */ -__RETAINED_CODE void flash_deactivate_command_entry_mode(void); - -/** - * \brief Configure Flash and QSPI controller for system clock frequency - * - * This function is used to change the Flash configuration of the QSPI controller - * to work with the system clock frequency defined in sys_clk. Dummy clock - * cycles could be changed here to support higher clock frequencies. - * QSPI controller clock divider could also be changed if the Flash - * maximum frequency is smaller than the system clock frequency. - * This function must be called before changing system clock frequency. - * - * \param [in] sys_clk System clock frequency - * - */ -__RETAINED_CODE void qspi_automode_sys_clock_cfg(sys_clk_t sys_clk); - -/** - * \brief Get ucode required for wake-up sequence - * \return qspi_ucode_t Pointer to the structure containing the ucode and ucode size - */ -const qspi_ucode_t *qspi_automode_get_ucode(void); - -#endif /* QSPI_AUTOMODE_H_ */ -/** - * \} - * \} - * \} - */ diff --git a/third_party/dialog/DialogSDK/bsp/memory/include/qspi_common.h b/third_party/dialog/DialogSDK/bsp/memory/include/qspi_common.h deleted file mode 100644 index e964e5027..000000000 --- a/third_party/dialog/DialogSDK/bsp/memory/include/qspi_common.h +++ /dev/null @@ -1,174 +0,0 @@ -/** - * \addtogroup BSP - * \{ - * \addtogroup SYSTEM - * \{ - * \addtogroup MEMORY - * - * \brief QSPI flash driver framework - * \{ - */ - -/** - **************************************************************************************** - * - * @file qspi_common.h - * - * @brief QSPI flash driver common definitions - * - * Copyright (c) 2016, Dialog Semiconductor - * All rights reserved. - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. Neither the name of the copyright holder nor the names of its contributors - * may be used to endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, - * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, - * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED - * OF THE POSSIBILITY OF SUCH DAMAGE. - * - * - **************************************************************************************** - */ - -#ifndef _QSPI_COMMON_H_ -#define _QSPI_COMMON_H_ - -#include "qspi_automode.h" - -/* - * Flash Commands - * - * Note: Default command issuing mode is single mode! If commands specific to other modes have to be - * issued then the mode must be changed! - */ -#define CMD_WRITE_STATUS_REGISTER 0x01 -#define CMD_WRITE_DISABLE 0x04 -#define CMD_READ_STATUS_REGISTER 0x05 -#define CMD_WRITE_ENABLE 0x06 -#define CMD_SECTOR_ERASE 0x20 -#define CMD_QUAD_PAGE_PROGRAM 0x32 -#define CMD_QUAD_IO_PAGE_PROGRAM 0x38 -#define CMD_BLOCK_ERASE 0x52 -#define CMD_CHIP_ERASE 0xC7 -#define CMD_FAST_READ_QUAD 0xEB -#define CMD_READ_JEDEC_ID 0x9F -#define CMD_EXIT_CONTINUOUS_MODE 0xFF -#define CMD_RELEASE_POWER_DOWN 0xAB -#define CMD_ENTER_POWER_DOWN 0xB9 - -#define CMD_FAST_READ_QUAD_4B 0xEC -#define CMD_SECTOR_ERASE_4B 0x21 -#define CMD_QUAD_PAGE_PROGRAM_4B 0x34 -#define CMD_QUAD_IO_PAGE_PROGRAM_4B 0x3E - -/* Erase/Write in progress */ -#define FLASH_STATUS_BUSY_BIT 0 -#define FLASH_STATUS_BUSY_MASK (1 << FLASH_STATUS_BUSY_BIT) - -/* WE Latch bit */ -#define FLASH_STATUS_WEL_BIT 1 -#define FLASH_STATUS_WEL_MASK (1 << FLASH_STATUS_WEL_BIT) - -typedef bool (*is_suspended_cb_t)(void); -typedef void (*initialize_cb_t)(uint8_t device_type, uint8_t device_density); -typedef void (*deactivate_command_entry_mode_cb_t)(void); -typedef void (*sys_clk_cfg_cb_t)(sys_clk_t type); -typedef uint8_t (*get_dummy_bytes_cb_t)(void); - -/** - * \brief QSPI Flash configuration structure - * - * This struct is used to define a driver for a specific QSPI flash. - * - * \note The struct instance must be declared as static const for this to work - */ -typedef struct qspi_flash_config { - // Function pointers - initialize_cb_t initialize; /**< Flash-specific initialization */ - is_suspended_cb_t is_suspended; /**< Check if flash is in erase/program - suspend state */ - deactivate_command_entry_mode_cb_t - deactivate_command_entry_mode; /**< Perform extra steps needed when command - entry mode is deactivated */ - sys_clk_cfg_cb_t sys_clk_cfg; /**< Perform Flash configuration when system clock - is changed (e.g. change dummy bytes or QSPIC - clock divider */ - get_dummy_bytes_cb_t get_dummy_bytes; /**< Return the number of dummy bytes currently - needed (they may e.g. change when the clock - changes) */ - uint8_t manufacturer_id; /**< The Flash JEDEC vendor ID (Cmd 0x9F, 1st byte) - This (and the device_type/device_density) - are needed for flash autodetection */ - uint8_t device_type; /**< The Flash JEDEC device type (Cmd 0x9F, 2nd byte) */ - uint8_t device_density; /**< The Flash JEDEC device type (Cmd 0x9F, 3rd byte) */ - uint8_t erase_opcode; /**< The Flash erase opcode to use */ - uint8_t erase_suspend_opcode; /**< The Flash erase suspend opcode to use */ - uint8_t erase_resume_opcode; /**< The Flash erase resume opcode to use */ - uint8_t page_program_opcode; /**< The Flash page program opcode to use */ - bool quad_page_program_address; /**< If true, the address will be transmitted in - QUAD mode when writing a page. Otherwise, it - will be transmitted in single mode */ - uint8_t read_erase_progress_opcode; /**< The opcode to use to check if erase is in progress - (Usually the Read Status Reg opcode (0x5)) */ - - uint8_t erase_in_progress_bit; /**< The bit to check when reading the erase progress */ - bool erase_in_progress_bit_high_level; /**< The active state (true: high, false: low) of the bit - above */ - uint8_t send_once; /**< If set to 1, the "Performance mode" (or burst, or - continuous; differs per vendor) will be used for read - accesses. In this mode, the read opcode is only sent - once, and subsequent accesses only transfer the address */ - uint8_t extra_byte; /**< The extra byte to transmit, when in "Performance mode" - (send once is 1), that tells the flash that it should - stay in this continuous, performance mode */ - HW_QSPI_ADDR_SIZE address_size; /**< Whether the flash works in 24- or 32-bit addressing mode */ - HW_QSPI_BREAK_SEQ_SIZE break_seq_size; /**< Whether the break sequence, that puts flash out of the - continuous mode, is one or two bytes long (the break byte is - 0xFF) */ - qspi_ucode_t ucode_wakeup; /**< The QSPIC microcode to use to setup the flash on wakeup. This - is automatically used by the QSPI Controller after wakeup, and - before CPU starts code execution. This is different based on - whether flash was active, in deep power down or completely off - while the system was sleeping */ - uint16_t power_down_delay; /**< This is the time, in usec, needed for the flash to go to power - down, after the Power Down command is issued */ - uint16_t release_power_down_delay; /**< This is the time, in usec, needed for the flash to exit the power - down mode, after the Release Power Down command is issued */ -} qspi_flash_config_t; - -extern const qspi_flash_config_t* flash_config_init; -#if (FLASH_AUTODETECT == 1) -extern qspi_flash_config_t *flash_config; -#else -extern const qspi_flash_config_t * const flash_config; -#endif - -static void qspi_write(const uint8_t *wbuf, size_t wlen); -static void qspi_transact(const uint8_t *wbuf, size_t wlen, uint8_t *rbuf, size_t rlen); -static uint8_t flash_read_status_register(void); -static void flash_write_status_register(uint8_t value); -static void flash_write_enable(void); -static void qspi_automode_set_dummy_bytes_count(uint8_t count); -static inline bool flash_erase_program_in_progress(void) __attribute__((always_inline)); -static inline bool flash_is_busy(void) __attribute__((always_inline)); - -#endif /* _QSPI_COMMON_H_ */ -/** - * \} - * \} - * \} - */ diff --git a/third_party/dialog/DialogSDK/bsp/memory/include/qspi_w25q80ew.h b/third_party/dialog/DialogSDK/bsp/memory/include/qspi_w25q80ew.h deleted file mode 100644 index 774da1618..000000000 --- a/third_party/dialog/DialogSDK/bsp/memory/include/qspi_w25q80ew.h +++ /dev/null @@ -1,115 +0,0 @@ -/** - * \addtogroup BSP - * \{ - * \addtogroup SYSTEM - * \{ - * \addtogroup MEMORY - * - * \{ - */ - -/** - **************************************************************************************** - * - * @file qspi_w25q80ew.h - * - * @brief QSPI flash driver for the Winbond W25Q80EW - * - * Copyright (c) 2016, Dialog Semiconductor - * All rights reserved. - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. Neither the name of the copyright holder nor the names of its contributors - * may be used to endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, - * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, - * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED - * OF THE POSSIBILITY OF SUCH DAMAGE. - * - **************************************************************************************** - */ - -#ifndef _QSPI_W32Q80EW_H_ -#define _QSPI_W32Q80EW_H_ - -#ifndef WINBOND_ID -#define WINBOND_ID 0xEF -#endif - -// Device type using command 0x9F -#define W25Q80EW 0x60 - -#ifndef W25Q_8Mb_SIZE -#define W25Q_8Mb_SIZE 0x14 -#endif - -#if (FLASH_AUTODETECT == 1) || (dg_configFLASH_MANUFACTURER_ID == WINBOND_ID && \ - dg_configFLASH_DEVICE_TYPE == W25Q80EW && dg_configFLASH_DENSITY == W25Q_8Mb_SIZE) - -#include "qspi_common.h" - -#include "qspi_winbond.h" - -static void flash_w25q80ew_sys_clock_cfg(sys_clk_t sys_clk); -static uint8_t flash_w25q80ew_get_dummy_bytes(void); - -static const qspi_flash_config_t flash_w25q80ew_config = { - .manufacturer_id = WINBOND_ID, - .device_type = W25Q80EW, - .device_density = W25Q_8Mb_SIZE, - .is_suspended = flash_w25q_is_suspended, - .initialize = flash_w25q_initialize, - .deactivate_command_entry_mode = flash_w25q_deactivate_command_entry_mode, - .sys_clk_cfg = flash_w25q80ew_sys_clock_cfg, - .get_dummy_bytes = flash_w25q80ew_get_dummy_bytes, - .break_seq_size = HW_QSPI_BREAK_SEQ_SIZE_1B, - .address_size = HW_QSPI_ADDR_SIZE_24, - .page_program_opcode = CMD_QUAD_PAGE_PROGRAM, - .quad_page_program_address = false, - .erase_opcode = CMD_SECTOR_ERASE, - .erase_suspend_opcode = W25Q_ERASE_PROGRAM_SUSPEND, - .erase_resume_opcode = W25Q_ERASE_PROGRAM_RESUME, - .read_erase_progress_opcode = CMD_READ_STATUS_REGISTER, - .erase_in_progress_bit = FLASH_STATUS_BUSY_BIT, - .erase_in_progress_bit_high_level = true, - .send_once = 1, - .extra_byte = 0xA0, - .ucode_wakeup = {w25q_ucode_wakeup, sizeof(w25q_ucode_wakeup)}, - .power_down_delay = W25Q_POWER_DOWN_DELAY_US, - .release_power_down_delay = W25Q_RELEASE_POWER_DOWN_DELAY_US, -}; - -#if (FLASH_AUTODETECT == 0) - const qspi_flash_config_t* const flash_config = &flash_w25q80ew_config; -#endif - -__RETAINED_CODE static void flash_w25q80ew_sys_clock_cfg(sys_clk_t sys_clk) -{ - -} - -__RETAINED_CODE static uint8_t flash_w25q80ew_get_dummy_bytes(void) -{ - return 2; -} -#endif - -#endif /* _QSPI_W32Q80EW_H_ */ -/** - * \} - * \} - * \} - */ diff --git a/third_party/dialog/DialogSDK/bsp/memory/include/qspi_winbond.h b/third_party/dialog/DialogSDK/bsp/memory/include/qspi_winbond.h deleted file mode 100644 index 0c183ac75..000000000 --- a/third_party/dialog/DialogSDK/bsp/memory/include/qspi_winbond.h +++ /dev/null @@ -1,241 +0,0 @@ -/** - * \addtogroup BSP - * \{ - * \addtogroup SYSTEM - * \{ - * \addtogroup MEMORY - * - * \{ - */ - -/** - **************************************************************************************** - * - * @file qspi_winbond.h - * - * @brief QSPI flash driver for Winbond flashes - common code - * - * Copyright (c) 2016, Dialog Semiconductor - * All rights reserved. - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. Neither the name of the copyright holder nor the names of its contributors - * may be used to endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, - * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, - * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED - * OF THE POSSIBILITY OF SUCH DAMAGE. - * - * - **************************************************************************************** - */ - -#ifndef _QSPI_WINBOND_H_ -#define _QSPI_WINBOND_H_ - -#define WINBOND_ID 0xEF - -#if (FLASH_AUTODETECT == 1) || (dg_configFLASH_MANUFACTURER_ID == WINBOND_ID) -#include "qspi_common.h" - -#define W25Q_ERASE_PROGRAM_SUSPEND 0x75 -#define W25Q_ERASE_PROGRAM_RESUME 0x7A - -#define W25Q_WRITE_STATUS_REGISTER2 0x31 -#define W25Q_PAGE_PROGRAM 0x02 -#define W25Q_WRITE_ENABLE_NON_VOL 0x50 -#define W25Q_READ_STATUS_REGISTER2 0x35 -#define W25Q_BLOCK_ERASE_64K 0xD8 -#define W25Q_FAST_READ_QPI 0x0B -#define W25Q_READ_DEVICE_ID_SINGLE 0x90 // Requires single mode for the command entry! -#define W25Q_READ_DEVICE_ID_DUAL 0x92 // Requires dual mode for the command entry! -#define W25Q_READ_DEVICE_ID_QUAD 0x94 -#define W25Q_READ_UNIQUE_ID 0x4B // Requires single mode for the command entry! -#define W25Q_READ_SFDP_REG 0x5A // Requires single mode for the command entry! -#define W25Q_ERASE_SECURITY_REGS 0x44 // Requires single mode for the command entry! -#define W25Q_PROGR_SECURITY_REGS 0x42 // Requires single mode for the command entry! -#define W25Q_READ_SECURITY_REGS 0x48 // Requires single mode for the command entry! -#define W25Q_ENTER_QPI_MODE 0x38 // Requires single mode for the command entry! -#define W25Q_EXIT_QPI_MODE 0xFF // Requires quad mode for the command entry! - -/* Suspend */ -#define W25Q_STATUS2_SUS_BIT 7 -#define W25Q_STATUS2_SUS_MASK (1 << W25Q_STATUS2_SUS_BIT) - -/* QPI Enable */ -#define W25Q_STATUS2_QE_BIT 1 -#define W25Q_STATUS2_QE_MASK (1 << W25Q_STATUS2_QE_BIT) - -// Flash power up/down timings -#define W25Q_POWER_DOWN_DELAY_US 3 -#define W25Q_RELEASE_POWER_DOWN_DELAY_US 3 -#define W25Q_POWER_UP_DELAY_US 10 - -#if (dg_configFLASH_POWER_OFF == 1) -/** - * \brief uCode for handling the QSPI FLASH activation from power off. - */ - /* - * Should work with all Winbond flashes -- verified with W25Q80EW. - * - * Delay 10usec - * 0x01 // CMD_NBYTES = 0, CMD_TX_MD = 0 (Single), CMD_VALID = 1 - * 0xA0 // CMD_WT_CNT_LS = 160 --> 10000 / 62.5 = 160 = 10usec - * 0x00 // CMD_WT_CNT_MS = 0 - * Exit from Fast Read mode - * 0x09 // CMD_NBYTES = 1, CMD_TX_MD = 0 (Single), CMD_VALID = 1 - * 0x00 // CMD_WT_CNT_LS = 0 - * 0x00 // CMD_WT_CNT_MS = 0 - * 0xFF // Enable Reset - * (up to 16 words) - */ - const uint32_t w25q_ucode_wakeup[] = { - 0x09000001 | (((uint16_t)(W25Q_POWER_UP_DELAY_US*1000/62.5) & 0xFFFF) << 8), - 0x00FF0000, - }; -#elif (dg_configFLASH_POWER_DOWN == 1) -/** - * \brief uCode for handling the QSPI FLASH release from power-down. - */ - /* - * Should work with all Winbond flashes -- verified with W25Q80EW. - * - * 0x09 // CMD_NBYTES = 1, CMD_TX_MD = 0 (Single), CMD_VALID = 1 - * 0x30 // CMD_WT_CNT_LS = 3000 / 62.5 = 48 // 3usec - * 0x00 // CMD_WT_CNT_MS = 0 - * 0xAB // Release Power Down - * (up to 16 words) - */ - const uint32_t w25q_ucode_wakeup[] = { - 0xAB000009 | (((uint16_t)(W25Q_RELEASE_POWER_DOWN_DELAY_US*1000/62.5) & 0xFFFF) << 8), - }; -#else -/** - * \brief uCode for handling the QSPI FLASH exit from the "Continuous Read Mode". - */ - /* - * Should work with all Winbond flashes -- verified with W25Q80EW. - * - * 0x25 // CMD_NBYTES = 4, CMD_TX_MD = 2 (Quad), CMD_VALID = 1 - * 0x00 // CMD_WT_CNT_LS = 0 - * 0x00 // CMD_WT_CNT_MS = 0 - * 0x55 // Clocks 0-1 (A23-16) - * 0x55 // Clocks 2-3 (A15-8) - * 0x55 // Clocks 4-5 (A7-0) - * 0x55 // Clocks 6-7 (M7-0) : M5-4 != '10' ==> Disable "Continuous Read Mode" - * (up to 16 words) - */ - const uint32_t w25q_ucode_wakeup[] = { - 0x55000025, - 0x00555555, - }; -#endif - -static bool flash_w25q_is_suspended(void); -static void flash_w25q_initialize(uint8_t device_type, uint8_t device_density); -static void flash_w25q_deactivate_command_entry_mode(void); - -/** - * \brief Enable volatile writes to Status Register bits - * \details When this command is issued, any writes to any of the Status Registers of the Flash are - * done as volatile writes. This command is valid only when the Write Status Register command - * follows. - * - * \note This function blocks until the Flash has processed the command. - */ -static inline void flash_w25q_wre_volatile(void) __attribute__((always_inline)) __attribute__((unused)); -static inline void flash_w25q_wre_volatile(void) -{ - uint8_t cmd[] = { W25Q_WRITE_ENABLE_NON_VOL }; - - qspi_write(cmd, 1); - - /* Verify */ - while (flash_is_busy()); -} - -static inline uint8_t flash_w25q_read_status_register_2(void) __attribute__((always_inline)); -static inline uint8_t flash_w25q_read_status_register_2(void) -{ - __DBG_QSPI_VOLATILE__ uint8_t status; - uint8_t cmd[] = { W25Q_READ_STATUS_REGISTER2 }; - - qspi_transact(cmd, 1, &status, 1); - - return status; -} - -/** - * \brief Write the Status Register 2 of the Flash - * - * \param[in] value The value to be written. - * - * \note This function blocks until the Flash has processed the command. No verification that the - * value has been actually written is done though. It is up to the caller to decide whether - * such verification is needed or not and execute it on its own. - */ -static inline void flash_w25q_write_status_register_2(uint8_t value) __attribute__((always_inline)); -static inline void flash_w25q_write_status_register_2(uint8_t value) -{ - uint8_t cmd[] = { W25Q_WRITE_STATUS_REGISTER2, value }; - - qspi_write(cmd, 2); - - /* Wait for the Flash to process the command */ - while (flash_is_busy()); -} - -static inline void flash_w25q_enable_quad_mode(void) __attribute__((always_inline)); -static inline void flash_w25q_enable_quad_mode(void) -{ - uint8_t status; - - status = flash_w25q_read_status_register_2(); - if (!(status & W25Q_STATUS2_QE_MASK)) { - flash_write_enable(); - flash_w25q_write_status_register_2(status | W25Q_STATUS2_QE_MASK); - } -} - -__RETAINED_CODE static bool flash_w25q_is_suspended(void) -{ - __DBG_QSPI_VOLATILE__ uint8_t status; - - status = flash_w25q_read_status_register_2(); - return (status & W25Q_STATUS2_SUS_MASK) != 0; -} - -__RETAINED_CODE static void flash_w25q_initialize(uint8_t device_type, uint8_t device_density) -{ - flash_activate_command_entry_mode(); - - flash_w25q_enable_quad_mode(); - - flash_deactivate_command_entry_mode(); -} - -__RETAINED_CODE static void flash_w25q_deactivate_command_entry_mode(void) -{ -} - -#endif - -#endif /* _QSPI_WINBOND_H_ */ -/** - * \} - * \} - * \} - */ diff --git a/third_party/dialog/DialogSDK/bsp/memory/src/qspi_automode.c b/third_party/dialog/DialogSDK/bsp/memory/src/qspi_automode.c deleted file mode 100644 index b0f2f2c8c..000000000 --- a/third_party/dialog/DialogSDK/bsp/memory/src/qspi_automode.c +++ /dev/null @@ -1,1179 +0,0 @@ -/** - **************************************************************************************** - * - * @file qspi_automode.c - * - * @brief Access QSPI flash when running in auto mode - * - * Copyright (c) 2016, Dialog Semiconductor - * All rights reserved. - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. Neither the name of the copyright holder nor the names of its contributors - * may be used to endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, - * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, - * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED - * OF THE POSSIBILITY OF SUCH DAMAGE. - * - * - **************************************************************************************** - */ - -#include -#include -#include -#include "sdk_defs.h" - -#if (dg_configDISABLE_BACKGROUND_FLASH_OPS == 0) -#include "osal.h" -#include "sys_power_mgr.h" -#endif - -#include "hw_cpm.h" - -#include "hw_qspi.h" -#include "qspi_automode.h" - -/* - * QSPI controller allows to execute code directly from QSPI flash. - * When code is executing from flash there is no possibility to reprogram it. - * To be able to modify flash memory while it is used for code execution it must me assured that - * during the time needed for erase/write no code is running from flash. - */ - -/* - * Flash specific defines - */ - -/* SUS bit delay after SUSPEND command */ -#define FLASH_SUS_DELAY (20) // in usec - -/* Flash page size */ -#define FLASH_MAX_WRITE_SIZE dg_configFLASH_MAX_WRITE_SIZE - -/* - * Use QUAD mode for page write. - * - * Note: If the flash does not support QUAD mode or it is not connected for QUAD mode set it to 0 - * (single mode). - */ -#ifndef QUAD_MODE -#define QUAD_MODE 1 -#endif - -#ifndef ERASE_IN_AUTOMODE -#define ERASE_IN_AUTOMODE 1 -#endif - -#ifndef FLASH_FORCE_24BIT_ADDRESSING -#define FLASH_FORCE_24BIT_ADDRESSING 0 // Force 24 bit addressing for devices > 128Mbits -#endif - -/* - * WARNING: The Autodetect mode will greatly increase both the code and the used RetRAM size!!!! - * Use with extreme caution!! - */ -#if dg_configFLASH_AUTODETECT == 1 - #define FLASH_AUTODETECT 1 // Enable Flash auto-detection -#else - #if !defined(dg_configFLASH_MANUFACTURER_ID) - #error Please define dg_configFLASH_MANUFACTURER_ID !!! - #endif - #if !defined(dg_configFLASH_DEVICE_TYPE) - #error Please define dg_configFLASH_DEVICE_TYPE !!! - #endif - #if !defined(dg_configFLASH_DENSITY) - #error Please define dg_configFLASH_DENSITY !!! - #endif - #define FLASH_AUTODETECT 0 -#endif - -#if FLASH_AUTODETECT == 1 -#include "qspi_w25q80ew.h" -#include "qspi_mx25u51245.h" -#include "qspi_gd25lq80b.h" -#else -#ifndef dg_configFLASH_HEADER_FILE -#error Please define macro dg_configFLASH_HEADER_FILE to the header file name that contains the respective implementation -#endif -#include dg_configFLASH_HEADER_FILE -#endif - -#if (FLASH_AUTODETECT == 1) - -static const qspi_flash_config_t* flash_config_table[] = { - &flash_w25q80ew_config, // This is the default one - &flash_mx25u51245_config, - &flash_gd25lq80b_config, -}; - -__RETAINED static qspi_flash_config_t flash_autodetect_config; - -__RETAINED qspi_flash_config_t * flash_config; - -#endif - - - -/* - * Function definitions - */ - -/** - * \brief Set bus mode to single or QUAD mode. - * - * \param[in] mode Can be single (HW_QSPI_BUS_MODE_SINGLE) or quad (HW_QSPI_BUS_MODE_QUAD) mode. - * - * \note DUAL mode page program so is not supported by this function. - */ -static inline void qspi_set_bus_mode(HW_QSPI_BUS_MODE mode) __attribute__((always_inline)); - -static inline void qspi_set_bus_mode(HW_QSPI_BUS_MODE mode) -{ - if (mode == HW_QSPI_BUS_MODE_SINGLE) { - QSPIC->QSPIC_CTRLBUS_REG = REG_MSK(QSPIC, QSPIC_CTRLBUS_REG, QSPIC_SET_SINGLE); - QSPIC->QSPIC_CTRLMODE_REG |= - BITS32(QSPIC, QSPIC_CTRLMODE_REG, QSPIC_IO2_OEN, 1) | - BITS32(QSPIC, QSPIC_CTRLMODE_REG, QSPIC_IO2_DAT, 1) | - BITS32(QSPIC, QSPIC_CTRLMODE_REG, QSPIC_IO3_OEN, 1) | - BITS32(QSPIC, QSPIC_CTRLMODE_REG, QSPIC_IO3_DAT, 1); - } else { -#if QUAD_MODE - QSPIC->QSPIC_CTRLBUS_REG = REG_MSK(QSPIC, QSPIC_CTRLBUS_REG, QSPIC_SET_QUAD); - QSPIC->QSPIC_CTRLMODE_REG &= - ~(BITS32(QSPIC, QSPIC_CTRLMODE_REG, QSPIC_IO2_OEN, 1) | - BITS32(QSPIC, QSPIC_CTRLMODE_REG, QSPIC_IO3_OEN, 1)); -#endif - } -} - -/** - * \brief Set the mode of the QSPI controller (manual or auto) - * - * \param[in] automode True for auto and false for manual mode setting. - */ -static inline void qspi_set_automode(bool automode) __attribute__((always_inline)); - -static inline void qspi_set_automode(bool automode) -{ - REG_SETF(QSPIC, QSPIC_CTRLMODE_REG, QSPIC_AUTO_MD, automode); -} - -/** - * \brief Write to the Flash the contents of a buffer - * - * \param[in] wbuf Pointer to the beginning of the buffer - * \param[in] wlen The number of bytes to be written - * - * \note The data are transferred as bytes (8 bits wide). No optimization is done in trying to use - * faster access methods (i.e. transfer words instead of bytes whenever it is possible). - */ -__RETAINED_CODE static void qspi_write(const uint8_t *wbuf, size_t wlen) -{ - size_t i; - - hw_qspi_cs_enable(); - - for (i = 0; i < wlen; ++i) { - hw_qspi_write8(wbuf[i]); - } - - hw_qspi_cs_disable(); -} - -/** - * \brief Write an arbitrary number of bytes to the Flash and then read an arbitrary number of bytes - * from the Flash in one transaction - * - * \param[in] wbuf Pointer to the beginning of the buffer that contains the data to be written - * \param[in] wlen The number of bytes to be written - * \param[in] rbuf Pointer to the beginning of the buffer than the read data are stored - * \param[in] rlen The number of bytes to be read - * - * \note The data are transferred as bytes (8 bits wide). No optimization is done in trying to use - * faster access methods (i.e. transfer words instead of bytes whenever it is possible). - */ -__RETAINED_CODE static void qspi_transact(const uint8_t *wbuf, size_t wlen, uint8_t *rbuf, size_t rlen) -{ - size_t i; - - hw_qspi_cs_enable(); - - for (i = 0; i < wlen; ++i) { - hw_qspi_write8(wbuf[i]); - } - - for (i = 0; i < rlen; ++i) { - rbuf[i] = hw_qspi_read8(); - } - - hw_qspi_cs_disable(); -} - - -static inline bool flash_erase_program_in_progress(void) -{ - __DBG_QSPI_VOLATILE__ uint8_t status; - uint8_t cmd[] = { flash_config->read_erase_progress_opcode }; - - qspi_transact(cmd, 1, &status, 1); - - return ((status & (1 << flash_config->erase_in_progress_bit)) != 0) == flash_config->erase_in_progress_bit_high_level; -} - - -static inline bool flash_is_busy(void) -{ - return (flash_read_status_register() & FLASH_STATUS_BUSY_MASK) != 0; -} - -/** - * \brief Exit from continuous mode. - */ -__RETAINED_CODE static void flash_reset_continuous_mode(HW_QSPI_BREAK_SEQ_SIZE break_seq_size) -{ - hw_qspi_cs_enable(); - hw_qspi_write8(CMD_EXIT_CONTINUOUS_MODE); - if (break_seq_size == HW_QSPI_BREAK_SEQ_SIZE_2B) { - hw_qspi_write8(CMD_EXIT_CONTINUOUS_MODE); - } - hw_qspi_cs_disable(); - - while (flash_is_busy()); -} - -/** - * \brief Get Device ID when Flash is not in Power Down mode - * - * \return uint8_t The Device ID of the Flash - * - * \note The function blocks until the Flash executes the command. - */ -__RETAINED_CODE __attribute__((unused)) static uint8_t flash_get_id(void) -{ - uint8_t id; - - hw_qspi_cs_enable(); - hw_qspi_write32(CMD_RELEASE_POWER_DOWN); - id = hw_qspi_read8(); - hw_qspi_cs_disable(); - - while (flash_is_busy()); - - return id; -} - -/** - * \brief Set WEL (Write Enable Latch) bit of the Status Register of the Flash - * \details The WEL bit must be set prior to every Page Program, Quad Page Program, Sector Erase, - * Block Erase, Chip Erase, Write Status Register and Erase/Program Security Registers - * instruction. In the case of Write Status Register command, any status bits will be written - * as non-volatile bits. - * - * \note This function blocks until the Flash has processed the command and it will be repeated if, - * for any reason, the command was not successfully executed by the Flash. - */ -__RETAINED_CODE static void flash_write_enable(void) -{ - __DBG_QSPI_VOLATILE__ uint8_t status; - uint8_t cmd[] = { CMD_WRITE_ENABLE }; - - do { - qspi_write(cmd, 1); - /* Verify */ - do { - status = flash_read_status_register(); - } while (status & FLASH_STATUS_BUSY_MASK); - } while (!(status & FLASH_STATUS_WEL_MASK)); -} - -/** - * \brief Read the Status Register 1 of the Flash - * - * \return uint8_t The value of the Status Register 1 of the Flash. - */ -__RETAINED_CODE static uint8_t flash_read_status_register(void) -{ - __DBG_QSPI_VOLATILE__ uint8_t status; - uint8_t cmd[] = { CMD_READ_STATUS_REGISTER }; - - qspi_transact(cmd, 1, &status, 1); - - return status; -} - -/** - * \brief Write the Status Register 1 of the Flash - * - * \param[in] value The value to be written. - * - * \note This function blocks until the Flash has processed the command. No verification that the - * value has been actually written is done though. It is up to the caller to decide whether - * such verification is needed or not and execute it on its own. - */ -__RETAINED_CODE __attribute__((unused)) static void flash_write_status_register(uint8_t value) -{ - uint8_t cmd[2] = { CMD_WRITE_STATUS_REGISTER, value }; - - qspi_write(cmd, 2); - - /* Wait for the Flash to process the command */ - while (flash_is_busy()); -} - -/** - * \brief Fast copy of a buffer to a FIFO - * \details Implementation of a fast copy of the contents of a buffer to a FIFO in assembly. All - * addresses are word aligned. - * - * \param[in] start Pointer to the beginning of the buffer - * \param[in] end Pointer to the end of the buffer - * \param[in] Pointer to the FIFO - * - * \warning No validity checks are made! It is the responsibility of the caller to make sure that - * sane values are passed to this function. - */ -static inline -void fast_write_to_fifo32(uint32_t start, uint32_t end, uint32_t dest) __attribute__((always_inline)); - -static inline void fast_write_to_fifo32(uint32_t start, uint32_t end, uint32_t dest) -{ - __asm volatile( "copy: \n" - " ldmia %[start]!, {r3} \n" - " str r3, [%[dest]] \n" - " cmp %[start], %[end] \n" - " blt copy \n" - : - : /* output */ - [start] "l" (start), [end] "r" (end), [dest] "l" (dest) : /* inputs (%0, %1, %2) */ - "r3"); /* registers that are destroyed */ -} - -/** - * \brief Write data (up to 1 page) to Flash - * - * \param[in] addr The address of the Flash where the data will be written. It may be anywhere in a - * page. - * \param[in] buf Pointer to the beginning of the buffer that contains the data to be written. - * \param[in] size The number of bytes to be written. - * - * \return size_t The number of bytes written. - * - * \warning The boundary of the page where addr belongs to, will not be crossed! The caller should - * issue another flash_write_page() call in order to write the remaining data to the next - * page. - */ -__RETAINED_CODE static size_t flash_write_page(uint32_t addr, const uint8_t *buf, uint16_t size) -{ - size_t i = 0; - size_t odd = ((uint32_t) buf) & 3; - size_t size_aligned32; - size_t tmp; - - DBG_SET_HIGH(FLASH_DEBUG, FLASHDBG_PAGE_PROG); - - flash_write_enable(); - - /* Reduce max write size, that can reduce interrupt latency time */ - if (size > FLASH_MAX_WRITE_SIZE) { - size = FLASH_MAX_WRITE_SIZE; - } - - /* Make sure write will not cross page boundary */ - tmp = 256 - (addr & 0xFF); - if (size > tmp) { - size = tmp; - } - - hw_qspi_cs_enable(); - - if (flash_config->address_size == HW_QSPI_ADDR_SIZE_32) { - hw_qspi_write8(flash_config->page_program_opcode); -#if QUAD_MODE - if (flash_config->quad_page_program_address == true) { - qspi_set_bus_mode(HW_QSPI_BUS_MODE_QUAD); - } -#endif - hw_qspi_write32((addr >> 24) | ((addr >> 8) & 0xFF00) | ((addr << 8) & 0xFF0000) | (addr << 24)); -#if QUAD_MODE - if (flash_config->quad_page_program_address == false) { - qspi_set_bus_mode(HW_QSPI_BUS_MODE_QUAD); - } -#endif - } - else { - if (flash_config->quad_page_program_address == true) { - hw_qspi_write8(flash_config->page_program_opcode); -#if QUAD_MODE - qspi_set_bus_mode(HW_QSPI_BUS_MODE_QUAD); -#endif - hw_qspi_write16(((addr >> 16) & 0xFF) | (addr & 0xFF00)); - hw_qspi_write8(addr & 0xFF); - } - else { - hw_qspi_write32(CMD_QUAD_PAGE_PROGRAM | ((addr >> 8) & 0xFF00) | ((addr << 8) & 0xFF0000) | (addr << 24)); -#if QUAD_MODE - qspi_set_bus_mode(HW_QSPI_BUS_MODE_QUAD); -#endif - } - } - - if (odd) { - odd = 4 - odd; - for (i = 0; i < odd && i < size; ++i) { - hw_qspi_write8(buf[i]); - } - } - - size_aligned32 = ((size - i) & ~0x3); - - if (size_aligned32) { - fast_write_to_fifo32((uint32_t)(buf + i), (uint32_t)(buf + i + size_aligned32), - (uint32_t)&(QSPIC->QSPIC_WRITEDATA_REG)); - i += size_aligned32; - } - - for (; i < size; i++) { - hw_qspi_write8(buf[i]); - } - - hw_qspi_cs_disable(); - - DBG_SET_LOW(FLASH_DEBUG, FLASHDBG_PAGE_PROG); - -#if QUAD_MODE - qspi_set_bus_mode(HW_QSPI_BUS_MODE_SINGLE); -#endif - - return i; -} - -/** - * \brief Erase a sector of the Flash - * - * \param[in] addr The address of the sector to be erased. - * - * \note This function blocks until the Flash has processed the command. - */ -__RETAINED_CODE __attribute__((unused)) static void flash_erase_sector(uint32_t addr) -{ - flash_write_enable(); - - if (flash_config->address_size == HW_QSPI_ADDR_SIZE_32) { - uint8_t cmd[5] = { flash_config->erase_opcode, addr >> 24, addr >> 16, addr >> 8, addr }; - qspi_write(cmd, 5); - } - else { - uint8_t cmd[4] = { flash_config->erase_opcode, addr >> 16, addr >> 8, addr }; - qspi_write(cmd, 4); - } - - - /* Wait for the Flash to process the command */ - while (flash_erase_program_in_progress()); -} - -/** - * \brief Check if the Flash can accept commands - * - * \return bool True if the Flash is not busy else false. - * - */ -__RETAINED_CODE static bool qspi_writable(void) -{ - bool writable; - - /* - * From now on QSPI may not be available, turn off interrupts. - */ - GLOBAL_INT_DISABLE(); - - /* - * Turn on command entry mode. - */ - flash_activate_command_entry_mode(); - - /* - * Check if flash is ready. - */ - writable = !(flash_is_busy()); - - /* - * Restore auto mode. - */ - flash_deactivate_command_entry_mode(); - - /* - * Let other code to be executed including QSPI one. - */ - GLOBAL_INT_RESTORE(); - - return writable; -} - -/** - * \brief Get the status of an Erase when it is done automatically by the QSPI controller - * - * \return uint8_t The status of the Erase - * 0: No Erase - * 1: Pending erase request - * 2: Erase procedure is running - * 3: Suspended Erase procedure - * 4: Finishing the Erase procedure - */ -__RETAINED_CODE __attribute__((unused)) static uint8_t qspi_get_erase_status(void) -{ - QSPIC->QSPIC_CHCKERASE_REG = 0; - - return HW_QSPIC_REG_GETF(ERASECTRL, ERS_STATE); -} - -/** - * \brief Get the address size used by the QSPI controller - * - * \return The address size used (HW_QSPI_ADDR_SIZE_24 or HW_QSPI_ADDR_SIZE_32). - */ -static inline HW_QSPI_ADDR_SIZE qspi_get_address_size(void) __attribute__((always_inline)); - -static inline HW_QSPI_ADDR_SIZE qspi_get_address_size(void) -{ - return (HW_QSPI_ADDR_SIZE)HW_QSPIC_REG_GETF(CTRLMODE, USE_32BA); -} - -__RETAINED_CODE void flash_activate_command_entry_mode(void) -{ - /* - * Turn off auto mode to allow write. - */ - qspi_set_automode(false); - - /* - * Switch to single mode for command entry. - */ - qspi_set_bus_mode(HW_QSPI_BUS_MODE_SINGLE); - - /* - * Exit continuous mode (QPI mode), after this the flash will interpret commands again. - */ - if (flash_config->send_once != 0) { - flash_reset_continuous_mode(flash_config->break_seq_size); - } -} - - -__RETAINED_CODE void flash_deactivate_command_entry_mode(void) -{ - flash_config->deactivate_command_entry_mode(); - -#if QUAD_MODE - qspi_set_bus_mode(HW_QSPI_BUS_MODE_QUAD); -#endif - qspi_set_automode(true); -} - -#if (dg_configDISABLE_BACKGROUND_FLASH_OPS == 0) -__RETAINED_CODE void flash_erase_sector_manual_mode(uint32_t addr) -{ - /* - * Turn on command entry mode. - */ - flash_activate_command_entry_mode(); - - /* - * Issue the erase sector command. - */ - flash_write_enable(); - - if (flash_config->address_size == HW_QSPI_ADDR_SIZE_32) { - uint8_t cmd[5] = { flash_config->erase_opcode, addr >> 24, addr >> 16, addr >> 8, addr }; - qspi_write(cmd, 5); - } - else { - uint8_t cmd[4] = { flash_config->erase_opcode, addr >> 16, addr >> 8, addr }; - qspi_write(cmd, 4); - } - - /* - * Flash stays in manual mode. - */ -} - -__RETAINED_CODE size_t flash_program_page_manual_mode(uint32_t addr, const uint8_t *buf, uint16_t size) -{ - size_t written = flash_write_page(addr, buf, size); - - /* - * Flash stays in manual mode. - */ - - return written; -} - -__RETAINED_CODE bool qspi_check_program_erase_in_progress(void) -{ - return flash_is_busy(); -} - -__RETAINED_CODE bool qspi_check_and_suspend(void) -{ - uint8_t cmd[] = { flash_config->erase_suspend_opcode }; - bool am = hw_qspi_get_automode(); - bool ret = true; - - if (am) { - /* - * Turn on command entry mode. - */ - flash_activate_command_entry_mode(); - } - - /* - * Suspend action. - */ - DBG_SET_HIGH(FLASH_DEBUG, FLASHDBG_SUSPEND_ACTION); - - /* - * Check if an operation is ongoing. - */ - while (flash_erase_program_in_progress()) { - qspi_write(cmd, 1); - } - - hw_cpm_delay_usec(FLASH_SUS_DELAY); // Wait for SUS bit to be updated - - DBG_SET_LOW(FLASH_DEBUG, FLASHDBG_SUSPEND_ACTION); - - if (flash_config->is_suspended() == false) { - ret = false; - } - - /* - * Restore auto mode. - */ - flash_deactivate_command_entry_mode(); - - return ret; -} - -__RETAINED_CODE void qspi_resume(void) -{ - uint8_t cmd[] = { flash_config->erase_resume_opcode }; - - do { - /* - * Turn on command entry mode. - */ - flash_activate_command_entry_mode(); - - /* - * Check if suspended. - */ - if (flash_config->is_suspended() == false) { - break; - } - - /* - * Wait for flash to become ready again. - */ - do { - /* - * Resume action. - */ - qspi_write(cmd, 1); - - /* - * Check if SUS bit is cleared. - */ - } while (flash_config->is_suspended()); - } while (0); - - /* - * Flash stays in manual mode. - */ -} -#endif - -#if (ERASE_IN_AUTOMODE == 1) -/** - * \brief Erase sector (via CPM background processing or using the QSPI controller) - * - * \details This function will execute a Flash sector erase operation. The operation will either be - * carried out immediately (dg_configDISABLE_BACKGROUND_FLASH_OPS is set to 1) or it will be - * deferred to be executed by the CPM when the system becomes idle (when - * dg_configDISABLE_BACKGROUND_FLASH_OPS is set to 0, default value). In the latter case, the - * caller will block until the CPM completes the registered erase operation. - * - * \param[in] addr The address of the sector to be erased. - */ -__RETAINED_CODE static void qspi_erase_sector(uint32_t addr) -{ -#if (dg_configDISABLE_BACKGROUND_FLASH_OPS == 0) - OS_TASK handle; - void *op; - - handle = OS_GET_CURRENT_TASK(); - - /* Instruct CPM to erase this sector */ - if (pm_register_qspi_operation(handle, addr, NULL, 0, &op)) { - /* Block until erase is completed */ - OS_TASK_SUSPEND(handle); - OS_FREE(op); - } - else { - /* The PM has not started yet... */ - -#endif - /* Wait for previous erase to end */ - while (qspi_get_erase_status() != 0) { - } - - if (qspi_get_address_size() == HW_QSPI_ADDR_SIZE_32) { - addr >>= 12; - } else { - addr >>= 4; - } - - /* Setup erase block page */ - HW_QSPIC_REG_SETF(ERASECTRL, ERS_ADDR, addr); - - /* Fire erase */ - HW_QSPIC_REG_SETF(ERASECTRL, ERASE_EN, 1); -#if (dg_configDISABLE_BACKGROUND_FLASH_OPS == 0) - } -#endif -} -#endif /* (ERASE_IN_AUTOMODE == 1) */ - -/** - * \brief Write data to a page in the Flash (via CPM background processing or using the QSPI - * controller) - * - * \details This function will execute a Flash program page operation. The operation will either be - * carried out immediately (dg_configDISABLE_BACKGROUND_FLASH_OPS is set to 1) or it will be - * deferred to be executed by the CPM when the system becomes idle (when - * dg_configDISABLE_BACKGROUND_FLASH_OPS is set to 0, default value). In the latter case, the - * caller will block until the CPM completes the registered page program operation. - * - * \param[in] addr The address of the Flash where the data will be written. It may be anywhere in a - * page. - * \param[in] buf Pointer to the beginning of the buffer that contains the data to be written. - * \param[in] size The number of bytes to be written. - * - * \return size_t The number of bytes written. - * - * \warning The caller should ensure that buf does not point to QSPI mapped memory. - */ -__RETAINED_CODE static size_t write_page(uint32_t addr, const uint8_t *buf, uint16_t size) -{ - size_t written; - -#if (dg_configDISABLE_BACKGROUND_FLASH_OPS == 0) - OS_TASK handle; - void *op; - - handle = OS_GET_CURRENT_TASK(); - - /* Instruct CPM to program this sector */ - if (pm_register_qspi_operation(handle, addr, buf, &size, &op)) { - /* Block until program is completed */ - OS_TASK_SUSPEND(handle); - OS_FREE(op); - written = size; - } - else { -#endif - /* - * From now on QSPI may not be available, turn of interrupts. - */ - GLOBAL_INT_DISABLE(); - - /* - * Turn on command entry mode. - */ - flash_activate_command_entry_mode(); - - /* - * Write data into the page of the Flash. - */ - written = flash_write_page(addr, buf, size); - - /* Wait for the Flash to process the command */ - while (flash_erase_program_in_progress()); - - /* - * Restore auto mode. - */ - flash_deactivate_command_entry_mode(); - - /* - * Let other code to be executed including QSPI one. - */ - GLOBAL_INT_RESTORE(); -#if (dg_configDISABLE_BACKGROUND_FLASH_OPS == 0) - } -#endif - - return written; -} - -/** - * \brief Erase a sector of the Flash - * - * \details The time and the way that the operation will be carried out depends on the following - * settings: - * ERASE_IN_AUTOMODE = 0: the command is issued immediately in manual mode - * ERASE_IN_AUTOMODE = 1: - * dg_configDISABLE_BACKGROUND_FLASH_OPS = 0: the operation is executed manually by the - * CPM when the system becomes idle - * dg_configDISABLE_BACKGROUND_FLASH_OPS = 1: the operation is executed automatically - * by the QSPI controller. - * - * \param[in] addr The address of the sector to be erased. - */ -__RETAINED_CODE static void erase_sector(uint32_t addr) -{ -#if ERASE_IN_AUTOMODE - /* - * Erase sector in automode - */ - qspi_erase_sector(addr); - - /* - * Wait for erase to finish - */ - while (qspi_get_erase_status()) { - } -#else - /* - * From now on QSPI may not be available, turn of interrupts. - */ - GLOBAL_INT_DISABLE(); - - /* - * Turn off auto mode to allow write. - */ - qspi_set_automode(false); - - qspi_set_bus_mode(HW_QSPI_BUS_MODE_SINGLE); - - /* - * Exit continuous mode, after this the flash will interpret commands again. - */ - flash_reset_continuous_mode(flash_config->break_seq_size); - - /* - * Execute erase command. - */ - flash_erase_sector(addr); - - /* - * Restore auto mode. - */ - flash_deactivate_command_entry_mode(); - - /* - * Let other code to be executed including QSPI one. - */ - GLOBAL_INT_RESTORE(); -#endif -} - -uint32_t qspi_automode_get_code_buffer_size(void) -{ - /* Return 1 in case some code will pass this value to memory allocation function */ - return 1; -} - -void qspi_automode_set_code_buffer(void *ram) -{ - (void) ram; /* Unused */ -} - -bool qspi_automode_writable(void) -{ - return qspi_writable(); -} - -size_t qspi_automode_write_flash_page(uint32_t addr, const uint8_t *buf, size_t size) -{ - while (!qspi_automode_writable()) { - } - - return write_page(addr, buf, size); -} - -void qspi_automode_erase_flash_sector(uint32_t addr) -{ - while (!qspi_automode_writable()) { - } - - erase_sector(addr); -} - -void qspi_automode_erase_chip(void) -{ - flash_activate_command_entry_mode(); - - hw_qspi_cs_enable(); - hw_qspi_write8(CMD_WRITE_ENABLE); - hw_qspi_cs_disable(); - - hw_qspi_cs_enable(); - hw_qspi_write8(CMD_CHIP_ERASE); - hw_qspi_cs_disable(); - - hw_qspi_cs_enable(); - hw_qspi_write8(CMD_READ_STATUS_REGISTER); - while (hw_qspi_read8() & FLASH_STATUS_BUSY_MASK); - hw_qspi_cs_disable(); - - flash_deactivate_command_entry_mode(); -} - -size_t qspi_automode_read(uint32_t addr, uint8_t *buf, size_t len) -{ - memcpy(buf, (void *)(MEMORY_QSPIF_BASE + addr), len); - - return len; -} - -__RETAINED_CODE void qspi_automode_flash_power_up(void) -{ - hw_cpm_delay_usec(flash_config->power_down_delay); - - /* Interrupts must be turned off since the flash goes in manual mode, and - * code (e.g. for an ISR) cannot be fetched from flash during this time - */ - GLOBAL_INT_DISABLE(); - - // Do not call flash_activate_command_entry_mode(). This function will call - // flash_reset_continuous_mode which will try to send break sequence to the QSPI Flash - // which is in power-down mode. - qspi_set_automode(false); - qspi_set_bus_mode(HW_QSPI_BUS_MODE_SINGLE); - - hw_qspi_cs_enable(); - hw_qspi_write8(CMD_RELEASE_POWER_DOWN); - hw_qspi_cs_disable(); - - flash_deactivate_command_entry_mode(); - - /* - * The flash is in auto mode again. Re-enable the interrupts - */ - GLOBAL_INT_RESTORE(); - - hw_cpm_delay_usec(flash_config->release_power_down_delay); -} - -__RETAINED_CODE void qspi_automode_flash_power_down(void) -{ - flash_activate_command_entry_mode(); - - hw_qspi_cs_enable(); - hw_qspi_write8(CMD_ENTER_POWER_DOWN); - hw_qspi_cs_disable(); - -// Do not call flash_deactivate_command_entry_mode(). This function will call -// flash_config->deactivate_command_entry_mode() which will try to send commands to the QSPI Flash -// which has already been set in power-down mode. - -// flash_deactivate_command_entry_mode(); - -#if QUAD_MODE - qspi_set_bus_mode(HW_QSPI_BUS_MODE_QUAD); -#endif - qspi_set_automode(true); -} - -static qspi_config qspi_cfg = { - HW_QSPI_ADDR_SIZE_24, HW_QSPI_POL_HIGH, HW_QSPI_SAMPLING_EDGE_NEGATIVE -}; - -/** - * \brief Read the JEDEC manufacturer ID, device type and device density using command 0x9F - * - * \param[in] manufacturer_id Pointer to the variable where the manufacturer ID will be returned - * \param[in] device_type Pointer to the variable where the device type will be returned - * \param[in] density Pointer to the variable where the device density will be returned - */ -#if FLASH_AUTODETECT -__RETAINED_CODE static void flash_read_jedec_id(uint8_t *manufacturer_id, uint8_t *device_type, uint8_t *density) -{ - uint8_t cmd[] = { CMD_READ_JEDEC_ID }; - uint8_t buffer[3]; - - qspi_set_automode(false); - qspi_set_bus_mode(HW_QSPI_BUS_MODE_SINGLE); - - // reset continuous mode using both one and two break bytes to cover all cases - flash_reset_continuous_mode(HW_QSPI_BREAK_SEQ_SIZE_2B); - flash_reset_continuous_mode(HW_QSPI_BREAK_SEQ_SIZE_1B); - - qspi_transact(cmd, 1, buffer, 3); - *manufacturer_id = buffer[0]; - *device_type = buffer[1]; - *density = buffer[2]; - -#if QUAD_MODE - qspi_set_bus_mode(HW_QSPI_BUS_MODE_QUAD); -#endif - qspi_set_automode(true); -} -#endif - -/** - * \brief Configure dummy bytes in QSPI controller - * - * \param[in] count Number of dummy bytes (not including extra byte) - */ -__RETAINED_CODE __attribute__((unused)) static void qspi_automode_set_dummy_bytes_count(uint8_t count) -{ - if (count == 3) { - HW_QSPIC_REG_SETF(BURSTCMDB, DMY_FORCE, 1); - } else { - QSPIC->QSPIC_BURSTCMDB_REG = - (QSPIC->QSPIC_BURSTCMDB_REG & - ~(REG_MSK(QSPIC, QSPIC_BURSTCMDB_REG, QSPIC_DMY_FORCE) | - REG_MSK(QSPIC, QSPIC_BURSTCMDB_REG, QSPIC_DMY_NUM))) | - BITS32(QSPIC, QSPIC_BURSTCMDB_REG, QSPIC_DMY_NUM, - dummy_num[count]); - } -} - -__RETAINED_CODE bool qspi_automode_init(void) -{ - uint8_t device_type; - uint8_t device_density; - - hw_qspi_enable_clock(); - - -#if __DBG_QSPI_ENABLED - REG_SETF(CRG_TOP, CLK_AMBA_REG, QSPI_DIV, 3); -#endif - -#if FLASH_AUTODETECT - uint8_t manufacturer_id; - uint8_t i; - - - flash_read_jedec_id(&manufacturer_id, &device_type, &device_density); - - const qspi_flash_config_t* flash_config_init = flash_config_table[0]; // default to first entry. - - for (i=0; i< sizeof(flash_config_table)/sizeof(qspi_flash_config_t*); i++) { - if ( (flash_config_table[i]->manufacturer_id == manufacturer_id) && - (flash_config_table[i]->device_type == device_type) && - (flash_config_table[i]->device_density == device_density)) { - flash_config_init = flash_config_table[i]; - break; - } - } - flash_autodetect_config = *flash_config_init; - flash_config = &flash_autodetect_config; -#else - device_type = dg_configFLASH_DEVICE_TYPE; - device_density = dg_configFLASH_DENSITY; -#endif - - /* - * Copy the selected flash struct from flash into retram - */ - flash_config->initialize(device_type, device_density); - - uint8_t read_opcode; - - if (flash_config->address_size == HW_QSPI_ADDR_SIZE_32) { - read_opcode = CMD_FAST_READ_QUAD_4B; - qspi_cfg.address_size = HW_QSPI_ADDR_SIZE_32; // It will be set when hw_qspi_init() is called - } - else { - read_opcode = CMD_FAST_READ_QUAD; - } - /* - * Setup erase instruction that will be sent by QSPI controller to erase sector in automode. - */ - hw_qspi_set_erase_instruction(flash_config->erase_opcode, HW_QSPI_BUS_MODE_SINGLE, - HW_QSPI_BUS_MODE_SINGLE, 15, 5); - /* - * Setup instruction pair that will temporarily suspend erase operation to allow read. - */ - hw_qspi_set_suspend_resume_instructions(flash_config->erase_suspend_opcode, HW_QSPI_BUS_MODE_SINGLE, - flash_config->erase_resume_opcode, HW_QSPI_BUS_MODE_SINGLE, 7); - - /* - * QSPI controller must send write enable before erase, this sets it up. - */ - hw_qspi_set_write_enable_instruction(CMD_WRITE_ENABLE, HW_QSPI_BUS_MODE_SINGLE); - - /* - * Setup instruction that will be used to periodically check erase operation status. - * Check LSB which is 1 when erase is in progress. - */ - hw_qspi_set_read_status_instruction(flash_config->read_erase_progress_opcode, HW_QSPI_BUS_MODE_SINGLE, - HW_QSPI_BUS_MODE_SINGLE, flash_config->erase_in_progress_bit, flash_config->erase_in_progress_bit_high_level?1:0, 20, 0); - - /* - * This sequence is necessary if flash is working in continuous read mode, when instruction - * is not sent on every read access just address. Sending 0xFFFF will exit this mode. - * This sequence is sent only when QSPI is working in automode and decides to send one of - * instructions above. - * If flash is working in DUAL bus mode sequence should be 0xFFFF and size should be - * HW_QSPI_BREAK_SEQ_SIZE_2B. - */ - hw_qspi_set_break_sequence(0xFFFF, HW_QSPI_BUS_MODE_SINGLE, flash_config->break_seq_size, 0); - - /* - * If application starts from FLASH then bootloader must have set read instruction. - */ - if (dg_configCODE_LOCATION != NON_VOLATILE_IS_FLASH) { - hw_qspi_init(&qspi_cfg); - hw_qspi_set_div(HW_QSPI_DIV_1); - } - flash_activate_command_entry_mode(); - - hw_qspi_set_read_instruction(read_opcode, flash_config->send_once, flash_config->get_dummy_bytes(), HW_QSPI_BUS_MODE_SINGLE, - HW_QSPI_BUS_MODE_QUAD, HW_QSPI_BUS_MODE_QUAD, - HW_QSPI_BUS_MODE_QUAD); - hw_qspi_set_extra_byte(flash_config->extra_byte, HW_QSPI_BUS_MODE_QUAD, 0); - hw_qspi_set_address_size(flash_config->address_size); - - flash_deactivate_command_entry_mode(); - - HW_QSPIC_REG_SETF(BURSTCMDB, CS_HIGH_MIN, 0); - - return true; -} - -__RETAINED_CODE void qspi_automode_sys_clock_cfg(sys_clk_t sys_clk) -{ - if ((CRG_TOP->CLK_AMBA_REG & (1 << REG_POS(CRG_TOP, CLK_AMBA_REG, QSPI_ENABLE))) != 0) { // If clock is enabled - /* Some of the sys_clk_cfg() implementations put the flash in command entry mode, where the flash is - * not available for code execution. We must make sure that no interrupt (that may cause a cache miss) - * hits during this time. - */ - GLOBAL_INT_DISABLE(); - flash_config->sys_clk_cfg(sys_clk); - GLOBAL_INT_RESTORE(); - } -} - -const qspi_ucode_t *qspi_automode_get_ucode(void) -{ - return &flash_config->ucode_wakeup; -} diff --git a/third_party/dialog/DialogSDK/bsp/osal/osal.h b/third_party/dialog/DialogSDK/bsp/osal/osal.h deleted file mode 100644 index 5a88a8ea1..000000000 --- a/third_party/dialog/DialogSDK/bsp/osal/osal.h +++ /dev/null @@ -1,95 +0,0 @@ -/** - * \addtogroup BSP - * \{ - * \addtogroup OSAL - * - * \brief OS Abstraction Layer - * - * \{ - */ - -/** - **************************************************************************************** - * - * @file osal.h - * - * @brief OS abstraction layer API - * - * @brief Access QSPI flash when running in auto mode - * - * Copyright (c) 2016, Dialog Semiconductor - * All rights reserved. - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. Neither the name of the copyright holder nor the names of its contributors - * may be used to endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, - * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, - * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED - * OF THE POSSIBILITY OF SUCH DAMAGE. - * - * - **************************************************************************************** - */ - -#ifndef OSAL_H_ -#define OSAL_H_ - -#if defined OS_BAREMETAL - -#include - -/* - * Basic set of macros that can be used in non OS environment. - */ -# define PRIVILEGED_DATA -# define OS_MALLOC malloc -# define OS_FREE free -# ifndef RELEASE_BUILD -# define OS_ASSERT(a) do { if (!(a)) {__BKPT(0);} } while (0) -# else -# define OS_ASSERT(a) ((void) (a)) -# endif - -#endif - -/** - * \brief Cast any pointer to unsigned int value - */ -#define OS_PTR_TO_UINT(p) ((unsigned) (void *) (p)) - -/** - * \brief Cast any pointer to signed int value - */ -#define OS_PTR_TO_INT(p) ((int) (void *) (p)) - -/** - * \brief Cast any unsigned int value to pointer - */ -#define OS_UINT_TO_PTR(u) ((void *) (unsigned) (u)) - -/** - * \brief Cast any signed int value to pointer - */ -#define OS_INT_TO_PTR(i) ((void *) (int) (i)) - -#endif /* OSAL_H_ */ - -/** - * \} - * \} - * \} - */ diff --git a/third_party/dialog/DialogSDK/bsp/peripherals/include/hw_aes_hash.h b/third_party/dialog/DialogSDK/bsp/peripherals/include/hw_aes_hash.h deleted file mode 100644 index e98faa2a2..000000000 --- a/third_party/dialog/DialogSDK/bsp/peripherals/include/hw_aes_hash.h +++ /dev/null @@ -1,767 +0,0 @@ -/** - * \addtogroup BSP - * \{ - * \addtogroup DEVICES - * \{ - * \addtogroup AES_HASH - * \{ - * \brief AES/Hash Engine - */ - -/** - **************************************************************************************** - * - * @file hw_aes_hash.h - * - * @brief Definition of API for the AES/HASH Engine Low Level Driver. - * - * Copyright (c) 2016, Dialog Semiconductor - * All rights reserved. - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. Neither the name of the copyright holder nor the names of its contributors - * may be used to endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, - * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, - * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED - * OF THE POSSIBILITY OF SUCH DAMAGE. - * - * - **************************************************************************************** - */ - -#ifndef HW_AES_HASH_H_ -#define HW_AES_HASH_H_ - -#if dg_configUSE_HW_AES_HASH - -#include -#include "sdk_defs.h" - -/** - * \brief AES/Hash callback - * - * This function is called by the AES/Hash driver when the interrupt is fired. - * - */ -typedef void (*hw_aes_hash_cb)(void); - -/** - * \brief AES key sizes. Possible values: HW_AES_128, HW_AES_192, HW_AES_256. - */ -typedef enum { - HW_AES_128 = 0, - HW_AES_192 = 1, - HW_AES_256 = 2 -} hw_aes_key_size; - -/** - * \brief AES direction. Possible values: HW_AES_DECRYPT, HW_AES_ENCRYPT. - */ -typedef enum { - HW_AES_DECRYPT = 0, - HW_AES_ENCRYPT = 1 -} hw_aes_direction; - -/** - * \brief AES/Hash modes. Possible values: HW_AES_ECB, HW_AES_CBC, HW_AES_CTR, HW_HASH_MD5, - * HW_AES_SHA_1, HW_AES_SHA_256_224, HW_AES_SHA_256, HW_AES_SHA_384, HW_AES_SHA_512, - * HW_AES_SHA_512_224, HW_AES_SHA_512_256. - */ -typedef enum { - HW_AES_ECB, - HW_AES_CBC, - HW_AES_CTR, - HW_HASH_MD5, - HW_HASH_SHA_1, - HW_HASH_SHA_256_224, - HW_HASH_SHA_256, - HW_HASH_SHA_384, - HW_HASH_SHA_512, - HW_HASH_SHA_512_224, - HW_HASH_SHA_512_256 -} hw_aes_hash_mode; - -/** - * \brief Key expansion modes. - * Possible values HW_AES_PERFORM_KEY_EXPANSION, HW_AES_DO_NOT_PERFORM_KEY_EXPANSION - */ -typedef enum { - HW_AES_PERFORM_KEY_EXPANSION = 0, /**< Key expansion is performed by the engine */ - HW_AES_DO_NOT_PERFORM_KEY_EXPANSION /**< Key expansion is performed by the software */ -} hw_aes_hash_key_exp_t; - -/** - \brief AES/Hash setup structure. - */ -typedef struct { - hw_aes_hash_mode mode; /**< AES/Hash mode. */ - hw_aes_direction aesDirection; /**< AES direction. Only used when the mode is an AES mode.*/ - hw_aes_key_size aesKeySize; /**< AES key size. Only used when the mode is an AES mode. */ - bool aesKeyExpand; /**< When true the key expansion process is execute. When false the key - expansion process is not executed. The user should write the AES keys in CRYPTO_RAM. - Only used when the mode is an AES mode. */ - uint32 aesKeys; /**< The start address of the buffer containing the AES key. */ - uint32 aesIvCtrblk_0_31; /**< In CBC mode IV[31:0] and in CTR mode the initial value of the - 32 bits counter. Only used when the mode is an AES CBC/CTR mode. */ - uint32 aesIvCtrblk_32_63; /**< In CBC mode IV[63:32] and in CTR[63:32]. - Only used when the mode is an AES CBC/CTR mode. */ - uint32 aesIvCtrblk_64_95; /**< In CBC mode IV[95:64] and in CTR[95:64]. - Only used when the mode is an AES CBC/CTR mode. */ - uint32 aesIvCtrblk_96_127; /**< In CBC mode IV[127:96] and in CTR[127:96]. - Only used when the mode is an AES CBC/CTR mode. */ - bool aesWriteBackAll; /**< When true all the AES resulting data is written to memory. - When false only the final block of the AES resulting data is written to memory. - Only used when the mode is an AES mode. */ - uint8 hashOutLength; /**< The number of bytes of the hash result to be saved to memory. - Only used when mode is a Hash mode. */ - bool moreDataToCome; /**< When false this is the last data block. When true more data is to - come. */ - uint32 sourceAddress; /**< The physical address of the input data that needs to be processed. */ - uint32 destinationAddress; /**< The physical address (RAM only) where the resulting data needs - to be written. If NULL the register is not written.*/ - uint32 dataSize; /**< The number of bytes that need to be processed. If this number is not - a multiple of a block size, the data is automatically extended with zeros. */ - bool enableInterrupt; /**< When true the callback function is called after the operation - has ended. */ - hw_aes_hash_cb callback; /**< The callback function that is called when enable interrupt - is true. */ -} hw_aes_hash_setup; - -/** - * \brief Enable AES/HASH engine clock - * - * This function enables the AES/HASH engine clock. - */ -__STATIC_INLINE void hw_aes_hash_enable_clock(void) -{ - GLOBAL_INT_DISABLE(); - REG_SET_BIT(CRG_TOP, CLK_AMBA_REG, AES_CLK_ENABLE); - GLOBAL_INT_RESTORE(); -} - -/** - * \brief Disable AES/HASH engine clock - * - * This function disables the AES/HASH engine clock. - */ -__STATIC_INLINE void hw_aes_hash_disable_clock(void) -{ - GLOBAL_INT_DISABLE(); - REG_CLR_BIT(CRG_TOP, CLK_AMBA_REG, AES_CLK_ENABLE); - GLOBAL_INT_RESTORE(); -} - -/** - * \brief Check if AES/HASH engine clock is enabled - * - * \return Non-zero value if enabled, 0 otherwise - */ -__STATIC_INLINE int hw_aes_hash_clock_is_enabled(void) -{ - return (CRG_TOP->CLK_AMBA_REG) & (CRG_TOP_CLK_AMBA_REG_AES_CLK_ENABLE_Msk); -} - -/** - * \brief AES/Hash enable. - * - * This function sets up and starts a AES/HASH engine operation. All the - * configuration details are included in the setup input structure. - * - * \param [in] setup The setup structure with setup values. - * - * \deprecated You can use hw_aes_hash_init with hw_aes_hash_start instead. - * - * \sa hw_aes_hash_init - * \sa hw_aes_hash_start - * - */ -void hw_aes_hash_enable(const hw_aes_hash_setup setup) DEPRECATED; - -/** - * \brief AES/Hash initialize. - * - * This function sets up a AES/HASH engine operation. All the configuration details - * are included in the setup input structure. The operation can then start by calling - * hw_aes_hash_start - * - * \param [in] setup The setup structure with setup values. - * - * \note There are some restrictions in the value of dataSize of the setup structure depending on - * the mode. This function will do appropriate checking using assertions. The following - * table shows what the value of dataSize should be: - * - * mode | moreDataToCome = true | moreDataToCome = false - * ------------------- | --------------------- | ---------------------- - * HW_AES_ECB | multiple of 16 | multiple of 16 - * HW_AES_CBC | multiple of 16 | no restrictions - * HW_AES_CTR | multiple of 16 | no restrictions - * HW_HASH_MD5 | multiple of 8 | no restrictions - * HW_HASH_SHA_1 | multiple of 8 | no restrictions - * HW_HASH_SHA_256_224 | multiple of 8 | no restrictions - * HW_HASH_SHA_256 | multiple of 8 | no restrictions - * HW_HASH_SHA_384 | multiple of 8 | no restrictions - * HW_HASH_SHA_512 | multiple of 8 | no restrictions - * HW_HASH_SHA_512_224 | multiple of 8 | no restrictions - * HW_HASH_SHA_512_256 | multiple of 8 | no restrictions - * - * \sa hw_aes_hash_start - * - */ -void hw_aes_hash_init(hw_aes_hash_setup *setup); - -/** - * \brief AES/Hash restart. - * - * This function restarts the AES/Hash engine. This function can be used when the engine waits for - * more input data. - * - * \param [in] sourceAddress The start address of the data that needs to be processed. - * \param [in] dataSize The number of bytes that need to be processed. If this number is not - * a multiple of a block size, the data is automatically extended with zeros. - * \param [in] moreDataToCome When false this is the last data block. When true more data is to - * come. - * - */ -void hw_aes_hash_restart(const uint32 sourceAddress, const uint32 dataSize, - const bool moreDataToCome); - -/** - * \brief AES/Hash is active. - * - * This function tells if the AES/Hash engine is active or not. - * - * \return True if the AES/Hash engine is active and false when it is inactive. - * - */ -bool hw_aes_hash_is_active(); - -/** - * \brief AES/Hash is waiting for more data. - * - * This function tells if the AES/Hash engine is waiting for more data or not. - * - * \return True if the AES/Hash engine is waiting more data and false when it is not. - * - */ -bool hw_aes_hash_wait_for_in(); - -/** - * \brief AES/Hash disable. - * - * This function disables the AES/HASH engine and its interrupt request signal. - * - * \param [in] waitTillInactive When true the AES/HASH engine is disabled after any pending operation - * finishes. When false the AES/Hash is disabled immediately. - * - */ -void hw_aes_hash_disable(const bool waitTillInactive); - -/** - * \brief Mark next input block as being last - * - * This function is used to configure the engine so as to consider the next input block - * as the last of the operation. When the operation finishes, the engine's status - * becomes "inactive". - */ -__STATIC_INLINE void hw_aes_hash_mark_input_block_as_last(void) -{ - REG_CLR_BIT(AES_HASH, CRYPTO_CTRL_REG, CRYPTO_MORE_IN); -} - -/** - * \brief Mark next input block as not being last - * - * This function is used to configure the engine so as to expect more input blocks - * after the operation. When the operation finishes, the engine's status - * becomes "waiting for input". - */ -__STATIC_INLINE void hw_aes_hash_mark_input_block_as_not_last(void) -{ - REG_SET_BIT(AES_HASH, CRYPTO_CTRL_REG, CRYPTO_MORE_IN); -} - -/** - * \brief Configure engine for AES ECB encryption/decryption - * - * This function configures the engine for AES ECB encryption/decryption - * - * \param[in] key_size The size of the key used in the encryption/decryption - * - * \warning AES ECB is not recommended for use in cryptographic protocols. - */ -__STATIC_INLINE void hw_aes_hash_cfg_aes_ecb(hw_aes_key_size key_size) -{ - uint32 crypto_ctrl_reg = AES_HASH->CRYPTO_CTRL_REG; - - REG_SET_FIELD(AES_HASH, CRYPTO_CTRL_REG, CRYPTO_HASH_SEL, crypto_ctrl_reg, 0); - REG_SET_FIELD(AES_HASH, CRYPTO_CTRL_REG, CRYPTO_ALG_MD, crypto_ctrl_reg, 0); - REG_SET_FIELD(AES_HASH, CRYPTO_CTRL_REG, CRYPTO_ALG, crypto_ctrl_reg, 0); - REG_SET_FIELD(AES_HASH, CRYPTO_CTRL_REG, CRYPTO_AES_KEY_SZ, crypto_ctrl_reg, key_size); - - AES_HASH->CRYPTO_CTRL_REG = crypto_ctrl_reg; -} - -/** - * \brief Configure engine for AES CTR encryption/decryption - * - * This function configures the engine for AES CTR encryption/decryption - * - * \param[in] key_size The size of the key used in the encryption/decryption - */ -__STATIC_INLINE void hw_aes_hash_cfg_aes_ctr(hw_aes_key_size key_size) -{ - uint32 crypto_ctrl_reg = AES_HASH->CRYPTO_CTRL_REG; - - REG_SET_FIELD(AES_HASH, CRYPTO_CTRL_REG, CRYPTO_HASH_SEL, crypto_ctrl_reg, 0); - REG_SET_FIELD(AES_HASH, CRYPTO_CTRL_REG, CRYPTO_ALG_MD, crypto_ctrl_reg, 2); - REG_SET_FIELD(AES_HASH, CRYPTO_CTRL_REG, CRYPTO_ALG, crypto_ctrl_reg, 0); - REG_SET_FIELD(AES_HASH, CRYPTO_CTRL_REG, CRYPTO_AES_KEY_SZ, crypto_ctrl_reg, key_size); - - AES_HASH->CRYPTO_CTRL_REG = crypto_ctrl_reg; -} - -/** - * \brief Configure engine for AES CBC encryption/decryption - * - * This function configures the engine for AES CBC encryption/decryption - * - * \param[in] key_size The size of the key used in the encryption/decryption - */ -__STATIC_INLINE void hw_aes_hash_cfg_aes_cbc(hw_aes_key_size key_size) -{ - uint32 crypto_ctrl_reg = AES_HASH->CRYPTO_CTRL_REG; - - REG_SET_FIELD(AES_HASH, CRYPTO_CTRL_REG, CRYPTO_HASH_SEL, crypto_ctrl_reg, 0); - REG_SET_FIELD(AES_HASH, CRYPTO_CTRL_REG, CRYPTO_ALG_MD, crypto_ctrl_reg, 3); - REG_SET_FIELD(AES_HASH, CRYPTO_CTRL_REG, CRYPTO_ALG, crypto_ctrl_reg, 0); - REG_SET_FIELD(AES_HASH, CRYPTO_CTRL_REG, CRYPTO_AES_KEY_SZ, crypto_ctrl_reg, key_size); - - AES_HASH->CRYPTO_CTRL_REG = crypto_ctrl_reg; -} - -/** - * \brief Configure engine for MD5 hash - * - * This function configures the engine to perform MD5 hashing - * - * \param[in] result_size The size in bytes of the result that the engine will write - * to the output memory. Accepted values are 1 to 16. Out of - * range values are adjusted to the closest limit. - */ -__STATIC_INLINE void hw_aes_hash_cfg_md5(unsigned int result_size) -{ - uint32_t crypto_ctrl_reg = AES_HASH->CRYPTO_CTRL_REG; - - REG_SET_FIELD(AES_HASH, CRYPTO_CTRL_REG, CRYPTO_HASH_OUT_LEN, crypto_ctrl_reg, - (result_size > 16)? 15: (result_size == 0)? 0 : (result_size - 1)); - REG_SET_FIELD(AES_HASH, CRYPTO_CTRL_REG, CRYPTO_HASH_SEL, crypto_ctrl_reg, 1); - REG_SET_FIELD(AES_HASH, CRYPTO_CTRL_REG, CRYPTO_ALG_MD, crypto_ctrl_reg, 0); - REG_SET_FIELD(AES_HASH, CRYPTO_CTRL_REG, CRYPTO_ALG, crypto_ctrl_reg, 0); - - AES_HASH->CRYPTO_CTRL_REG = crypto_ctrl_reg; -} - -/** - * \brief Configure engine for SHA1 hash - * - * This function configures the engine to perform SHA1 hashing - * - * \param[in] result_size The size in bytes of the result that the engine will write - * to the output memory. Accepted values are 1 to 20. Out of - * range values are adjusted to the closest limit. - */ -__STATIC_INLINE void hw_aes_hash_cfg_sha1(unsigned int result_size) -{ - uint32_t crypto_ctrl_reg = AES_HASH->CRYPTO_CTRL_REG; - - REG_SET_FIELD(AES_HASH, CRYPTO_CTRL_REG, CRYPTO_HASH_OUT_LEN, crypto_ctrl_reg, - (result_size > 20)? 19: (result_size == 0)? 0 : (result_size - 1)); - REG_SET_FIELD(AES_HASH, CRYPTO_CTRL_REG, CRYPTO_HASH_SEL, crypto_ctrl_reg, 1); - REG_SET_FIELD(AES_HASH, CRYPTO_CTRL_REG, CRYPTO_ALG_MD, crypto_ctrl_reg, 0); - REG_SET_FIELD(AES_HASH, CRYPTO_CTRL_REG, CRYPTO_ALG, crypto_ctrl_reg, 1); - - AES_HASH->CRYPTO_CTRL_REG = crypto_ctrl_reg; -} - -/** - * \brief Configure engine for SHA-224 hash - * - * This function configures the engine to perform SHA-224 hashing - * - * \param[in] result_size The size in bytes of the result that the engine will write - * to the output memory. Accepted values are 1 to 28. Out of - * range values are adjusted to the closest limit. - */ -__STATIC_INLINE void hw_aes_hash_cfg_sha_224(unsigned int result_size) -{ - uint32_t crypto_ctrl_reg = AES_HASH->CRYPTO_CTRL_REG; - - REG_SET_FIELD(AES_HASH, CRYPTO_CTRL_REG, CRYPTO_HASH_OUT_LEN, crypto_ctrl_reg, - (result_size > 28)? 27: (result_size == 0)? 0 : (result_size - 1)); - REG_SET_FIELD(AES_HASH, CRYPTO_CTRL_REG, CRYPTO_HASH_SEL, crypto_ctrl_reg, 1); - REG_SET_FIELD(AES_HASH, CRYPTO_CTRL_REG, CRYPTO_ALG_MD, crypto_ctrl_reg, 0); - REG_SET_FIELD(AES_HASH, CRYPTO_CTRL_REG, CRYPTO_ALG, crypto_ctrl_reg, 2); - - AES_HASH->CRYPTO_CTRL_REG = crypto_ctrl_reg; -} - -/** - * \brief Configure engine for SHA-256 hash - * - * This function configures the engine to perform SHA-256 hashing - * - * \param[in] result_size The size in bytes of the result that the engine will write - * to the output memory. Accepted values are 1 to 32. Out of - * range values are adjusted to the closest limit. - */ -__STATIC_INLINE void hw_aes_hash_cfg_sha_256(unsigned int result_size) -{ - uint32_t crypto_ctrl_reg = AES_HASH->CRYPTO_CTRL_REG; - - REG_SET_FIELD(AES_HASH, CRYPTO_CTRL_REG, CRYPTO_HASH_OUT_LEN, crypto_ctrl_reg, - (result_size > 32)? 31: (result_size == 0)? 0 : (result_size - 1)); - REG_SET_FIELD(AES_HASH, CRYPTO_CTRL_REG, CRYPTO_HASH_SEL, crypto_ctrl_reg, 1); - REG_SET_FIELD(AES_HASH, CRYPTO_CTRL_REG, CRYPTO_ALG_MD, crypto_ctrl_reg, 0); - REG_SET_FIELD(AES_HASH, CRYPTO_CTRL_REG, CRYPTO_ALG, crypto_ctrl_reg, 3); - - AES_HASH->CRYPTO_CTRL_REG = crypto_ctrl_reg; -} - -/** - * \brief Configure engine for SHA-384 hash - * - * This function configures the engine to perform SHA-384 hashing - * - * \param[in] result_size The size in bytes of the result that the engine will write - * to the output memory. Accepted values are 1 to 48. Out of - * range values are adjusted to the closest limit. - */ -__STATIC_INLINE void hw_aes_hash_cfg_sha_384(unsigned int result_size) -{ - uint32_t crypto_ctrl_reg = AES_HASH->CRYPTO_CTRL_REG; - - REG_SET_FIELD(AES_HASH, CRYPTO_CTRL_REG, CRYPTO_HASH_OUT_LEN, crypto_ctrl_reg, - (result_size > 48)? 47: (result_size == 0)? 0 : (result_size - 1)); - REG_SET_FIELD(AES_HASH, CRYPTO_CTRL_REG, CRYPTO_HASH_SEL, crypto_ctrl_reg, 1); - REG_SET_FIELD(AES_HASH, CRYPTO_CTRL_REG, CRYPTO_ALG_MD, crypto_ctrl_reg, 1); - REG_SET_FIELD(AES_HASH, CRYPTO_CTRL_REG, CRYPTO_ALG, crypto_ctrl_reg, 0); - - AES_HASH->CRYPTO_CTRL_REG = crypto_ctrl_reg; -} - -/** - * \brief Configure engine for SHA-512 hash - * - * This function configures the engine to perform SHA-512 hashing - * - * \param[in] result_size The size in bytes of the result that the engine will write - * to the output memory. Accepted values are 1 to 64. Out of - * range values are adjusted to the closest limit. - */ -__STATIC_INLINE void hw_aes_hash_cfg_sha_512(unsigned int result_size) -{ - uint32_t crypto_ctrl_reg = AES_HASH->CRYPTO_CTRL_REG; - - REG_SET_FIELD(AES_HASH, CRYPTO_CTRL_REG, CRYPTO_HASH_OUT_LEN, crypto_ctrl_reg, - (result_size > 64)? 63: (result_size == 0)? 0 : (result_size - 1)); - REG_SET_FIELD(AES_HASH, CRYPTO_CTRL_REG, CRYPTO_HASH_SEL, crypto_ctrl_reg, 1); - REG_SET_FIELD(AES_HASH, CRYPTO_CTRL_REG, CRYPTO_ALG_MD, crypto_ctrl_reg, 1); - REG_SET_FIELD(AES_HASH, CRYPTO_CTRL_REG, CRYPTO_ALG, crypto_ctrl_reg, 1); - - AES_HASH->CRYPTO_CTRL_REG = crypto_ctrl_reg; -} - -/** - * \brief Configure engine for SHA-512/224 hash - * - * This function configures the engine to perform SHA-512/224 hashing - * - * \param[in] result_size The size in bytes of the result that the engine will write - * to the output memory. Accepted values are 1 to 28. Out of - * range values are adjusted to the closest limit. - */ -__STATIC_INLINE void hw_aes_hash_cfg_sha_512_224(unsigned int result_size) -{ - uint32_t crypto_ctrl_reg = AES_HASH->CRYPTO_CTRL_REG; - - REG_SET_FIELD(AES_HASH, CRYPTO_CTRL_REG, CRYPTO_HASH_OUT_LEN, crypto_ctrl_reg, - (result_size > 28)? 27: (result_size == 0)? 0 : (result_size - 1)); - REG_SET_FIELD(AES_HASH, CRYPTO_CTRL_REG, CRYPTO_HASH_SEL, crypto_ctrl_reg, 1); - REG_SET_FIELD(AES_HASH, CRYPTO_CTRL_REG, CRYPTO_ALG_MD, crypto_ctrl_reg, 1); - REG_SET_FIELD(AES_HASH, CRYPTO_CTRL_REG, CRYPTO_ALG, crypto_ctrl_reg, 2); - - AES_HASH->CRYPTO_CTRL_REG = crypto_ctrl_reg; -} - -/** - * \brief Configure engine for SHA-512/256 hash - * - * This function configures the engine to perform SHA-512/256 hashing - * - * \param[in] result_size The size in bytes of the result that the engine will write - * to the output memory. Accepted values are 1 to 32. Out of - * range values are adjusted to the closest limit. - */ -__STATIC_INLINE void hw_aes_hash_cfg_sha_512_256(unsigned int result_size) -{ - uint32_t crypto_ctrl_reg = AES_HASH->CRYPTO_CTRL_REG; - - REG_SET_FIELD(AES_HASH, CRYPTO_CTRL_REG, CRYPTO_HASH_OUT_LEN, crypto_ctrl_reg, - (result_size > 32)? 31: (result_size == 0)? 0 : (result_size - 1)); - REG_SET_FIELD(AES_HASH, CRYPTO_CTRL_REG, CRYPTO_HASH_SEL, crypto_ctrl_reg, 1); - REG_SET_FIELD(AES_HASH, CRYPTO_CTRL_REG, CRYPTO_ALG_MD, crypto_ctrl_reg, 1); - REG_SET_FIELD(AES_HASH, CRYPTO_CTRL_REG, CRYPTO_ALG, crypto_ctrl_reg, 3); - - AES_HASH->CRYPTO_CTRL_REG = crypto_ctrl_reg; -} - -/** - * \brief Store initialization vector in AES/HASH engine memory - * - * This function stores the initialization vector (IV) that is necessary for AES CBC - * mode. - * - * - * \sa hw_aes_store_ic - * - * \param[in] iv The address of the buffer containing the initialization vector - */ -void hw_aes_hash_store_iv(const uint8 *iv); - -/** - * \brief Store counter initialization in AES/HASH engine memory - * - * This function stores the counter initialization that is necessary for AES CTR - * mode. - * - * - * \sa hw_aes_store_iv - * - * \param[in] ic The address of the buffer containing the counter initialization - */ -void hw_aes_hash_store_ic(const uint8 *ic); - -/** - * \brief Store AES keys in AES/HASH engine memory - * - * This function stores the keys used for AES encryption/decryption in AES/HASH engine memory. - * If key expansion is performed by the engine, then aes_keys should contain only the base - * key. Otherwise it should contain all the expanded keys. - * - * \note - * After an AES operation with a certain key, further operations using the same key do not - * need storing it to the AES/HASH memory again. - * - * \param[in] key_size The size of the key used in the encryption/decryption - * \param[in] aes_keys The address of the buffer containing the keys - * \param[in] key_exp Define if key expansion will be performed by hw or sw - */ -void hw_aes_hash_store_keys(hw_aes_key_size key_size, const uint8 *aes_keys, hw_aes_hash_key_exp_t key_exp); - -/** - * \brief Configure DMA for data manipulation - * - * This function configures the DMA machine with the source and destination buffers. - * - * \param[in] src The physical address of the buffer containing the input data for the operation - * \param[in] dst The physical address (RAM or Cache RAM only) of the buffer where the output of the - * operation will be stored. The dst address must be NULL when configuring the DMA - * while the engine is waiting for more input data. - * \param[in] len The length of the input data - */ -void hw_aes_hash_cfg_dma(const uint8 *src, uint8 *dst, unsigned int len); - -/** - * \brief Start AES/HASH engine operation - * - * This function starts a AES/HASH operation. The operation depends on the configuration that - * has been applied before calling this function - * - * \sa hw_aes_hash_init - * - */ -__STATIC_INLINE void hw_aes_hash_start(void) -{ - AES_HASH->CRYPTO_START_REG = 1; -} - -/** - * \brief Start AES encryption - * - * This function starts an AES encryption. AES mode, key and input/output data should be configured - * before calling this function. - * - * \sa hw_aes_hash_init - * \sa hw_aes_hash_cfg_aes_ecb - * \sa hw_aes_hash_cfg_aes_ctr - * \sa hw_aes_hash_cfg_aes_cbc - * \sa hw_aes_hash_store_keys - * \sa hw_aes_hash_cfg_dma - */ -__STATIC_INLINE void hw_aes_hash_encrypt(void) -{ - REG_SET_BIT(AES_HASH, CRYPTO_CTRL_REG, CRYPTO_ENCDEC); - - AES_HASH->CRYPTO_START_REG = 1; -} - -/** - * \brief Start AES decryption - * - * This function starts an AES decryption. AES mode, key and input/output data should be configured - * before calling this function. - * - * \sa hw_aes_hash_init - * \sa hw_aes_hash_cfg_aes_ecb - * \sa hw_aes_hash_cfg_aes_ctr - * \sa hw_aes_hash_cfg_aes_cbc - * \sa hw_aes_hash_store_keys - * \sa hw_aes_hash_cfg_dma - */ -__STATIC_INLINE void hw_aes_hash_decrypt(void) -{ - REG_CLR_BIT(AES_HASH, CRYPTO_CTRL_REG, CRYPTO_ENCDEC); - - AES_HASH->CRYPTO_START_REG = 1; -} - -/** - * \brief Enable AES/HASH engine interrupt - * - * This function enables the AES/HASH engine interrupt and sets a callback function - * to be called when the interrupt occurs. - * - * \param[in] cb The callback function for the interrupt - * - * \deprecated Consider using hw_crypto API along with hw_aes_hash_enable_interrupt_source() - */ -DEPRECATED_MSG("consider using hw_crypto API along with hw_aes_hash_enable_interrupt_source") -void hw_aes_hash_enable_interrupt(hw_aes_hash_cb cb); - -/** - * \brief Disable AES/HASH engine interrupt - * - * This function disables the AES/HASH engine interrupt. - * - * \deprecated Consider using hw_crypto API along with hw_aes_hash_disable_interrupt_source() - */ -DEPRECATED_MSG("consider using hw_crypto API along with hw_aes_hash_disable_interrupt_source") -void hw_aes_hash_disable_interrupt(void); - -/** - * \brief Enable AES/HASH engine interrupt source - * - * This function enables AES/HASH engine interrupt source. - * - * \note AES/HASH engine and ECC engine are common sources of CRYPTO system interrupt. This - * function does not enable the CRYPTO interrupt itself. Use hw_crypto_enable_aes_hash_interrupt() - * in addition, in order to enable the CRYPTO interrupt. - */ -static inline void hw_aes_hash_enable_interrupt_source(void) -{ - REG_SET_BIT(AES_HASH, CRYPTO_CTRL_REG, CRYPTO_IRQ_EN); -} - -/** - * \brief Disable AES/HASH engine interrupt source - * - * This function disables AES/HASH engine interrupt source. - * - * \note AES/HASH engine and ECC engine are common sources of CRYPTO system interrupt. This - * function does not disable the CRYPTO interrupt itself. Use hw_crypto_disable_aes_hash_interrupt() - * in order to disable the CRYPTO interrupt. - */ -static inline void hw_aes_hash_disable_interrupt_source(void) -{ - REG_CLR_BIT(AES_HASH, CRYPTO_CTRL_REG, CRYPTO_IRQ_EN); -} - -/** - * \brief Clear AES/HASH engine pending interrupt - * - * This function clears AES/HASH engine pending interrupt request. - * - * \note AES/HASH engine and ECC engine are common sources of CRYPTO system interrupt. This - * function does not clear pending CRYPTO interrupt. Use hw_crypto_clear_pending_interrupt() - * in order to clear pending CRYPTO interrupt. - */ -static inline void hw_aes_hash_clear_interrupt_req(void) -{ - AES_HASH->CRYPTO_CLRIRQ_REG = 0x1; -} - -/** - * \brief Set output mode to write all - * - * This function configures the AES/HASH engine to write back to memory all the - * resulting data. - * - * \note - * Only applicable to AES operations. - */ -__STATIC_INLINE void hw_aes_hash_output_mode_write_all(void) -{ - REG_CLR_BIT(AES_HASH, CRYPTO_CTRL_REG, CRYPTO_OUT_MD); -} - -/** - * \brief Set output mode to write final - * - * This function configures the AES/HASH engine to write back to memory only the - * the last block of the resulting data. - * - * \note - * Only applicable to AES operations. - */ -__STATIC_INLINE void hw_aes_hash_output_mode_write_final(void) -{ - REG_SET_BIT(AES_HASH, CRYPTO_CTRL_REG, CRYPTO_OUT_MD); -} - -/** - * \brief Check input data size restriction - * - * This function checks the restrictions of input data length. It returns 0 if the restrictions are not - * violated, -1 otherwise. It checks the configured values at the time it is called so it should be - * used just before starting an operation. The function can be useful for debugging. The following - * table summarizes the restrictions for the input data length. - * - * ALGORITHM | NOT LAST DATA BLOCK | LAST DATA BLOCK - * ------------------- | --------------------- | ---------------- - * HW_AES_ECB | multiple of 16 | multiple of 16 - * HW_AES_CBC | multiple of 16 | no restrictions - * HW_AES_CTR | multiple of 16 | no restrictions - * HW_HASH_MD5 | multiple of 8 | no restrictions - * HW_HASH_SHA_1 | multiple of 8 | no restrictions - * HW_HASH_SHA_256_224 | multiple of 8 | no restrictions - * HW_HASH_SHA_256 | multiple of 8 | no restrictions - * HW_HASH_SHA_384 | multiple of 8 | no restrictions - * HW_HASH_SHA_512 | multiple of 8 | no restrictions - * HW_HASH_SHA_512_224 | multiple of 8 | no restrictions - * HW_HASH_SHA_512_256 | multiple of 8 | no restrictions - * - */ -int hw_aes_hash_check_restrictions(void); - -#endif /* dg_configUSE_HW_AES_HASH */ - -#endif /* HW_AES_HASH_H_ */ -/** - * \} - * \} - * \} - */ diff --git a/third_party/dialog/DialogSDK/bsp/peripherals/include/hw_cpm.h b/third_party/dialog/DialogSDK/bsp/peripherals/include/hw_cpm.h deleted file mode 100644 index b99d16825..000000000 --- a/third_party/dialog/DialogSDK/bsp/peripherals/include/hw_cpm.h +++ /dev/null @@ -1,1463 +0,0 @@ -/** -\addtogroup BSP -\{ -\addtogroup DEVICES -\{ -\addtogroup CPM -\{ -\brief Clock and Power Manager -*/ - -/** - **************************************************************************************** - * - * @file hw_cpm.h - * - * @brief Clock and Power Manager header file. - * - * Copyright (c) 2016, Dialog Semiconductor - * All rights reserved. - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. Neither the name of the copyright holder nor the names of its contributors - * may be used to endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, - * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, - * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED - * OF THE POSSIBILITY OF SUCH DAMAGE. - * - * - **************************************************************************************** - */ - -#ifndef CPM_H_ -#define CPM_H_ - -#if dg_configUSE_HW_CPM - -#include "sdk_defs.h" - - -/** - * \addtogroup CLOCK_TYPES - * \brief Clock types - * \note These macros must only be used with hw_cpm_set_sysclk(). - * \{ - */ - -/** - * \brief System crystal oscillator 16 MHz - */ -#define SYS_CLK_IS_XTAL16M (0) -/** - * \brief System RC oscillator 16 MHz - */ -#define SYS_CLK_IS_RC16 (1) -/** - * \brief System Low Power clock - */ -#define SYS_CLK_IS_LP (2) -/** - * \brief System PLL - */ -#define SYS_CLK_IS_PLL (3) -/** - * \brief Low Power RC oscillator 32 kHz - */ -#define LP_CLK_IS_RC32K (0) -/** - * \brief Low Power RC oscillator 11.7 kHz - */ -#define LP_CLK_IS_RCX (1) -/** - * \brief Low Power crystal oscillator 32 kHz - */ -#define LP_CLK_IS_XTAL32K (2) -/** - * \brief Low Power external clock - */ -#define LP_CLK_IS_EXTERNAL (3) -/** - * \} - */ - -#define DCDC_IS_READY \ - (REG_MSK(DCDC, DCDC_STATUS_1_REG, DCDC_VDD_AVAILABLE)) -// (DCDC_V18P_AVAILABLE | DCDC_VDD_AVAILABLE | DCDC_V18_AVAILABLE | DCDC_V14_AVAILABLE) - -#define DCDC_IS_READY_TO_SLEEP (DCDC_VDD_AVAILABLE | DCDC_V14_AVAILABLE) - -typedef enum cal_clk_cel_type { - CALIBRATE_RC32K = 0, - CALIBRATE_RC16M, - CALIBRATE_XTAL32K, - CALIBRATE_RCX, -} cal_clk_t; - -/** - * \brief The system clock type - * \note Must only be used with functions cm_sys_clk_init/set() - * - */ -typedef enum sysclk_type { - sysclk_RC16 = 0, //!< RC16 - sysclk_XTAL16M = 1, //!< 1 x 16M - sysclk_XTAL32M = 2, //!< 2 x 16M - sysclk_PLL48 = 3, //!< 3 x 16M - sysclk_PLL96 = 6, //!< 6 x 16M - sysclk_LP = 255, //!< not applicable -} sys_clk_t; - -/** - * \brief The AMBA High-Performance Bus (AHB) clock divider - * - */ -typedef enum ahbdiv_type { - ahb_div1 = 0, //!< Divide by 1 - ahb_div2, //!< Divide by 2 - ahb_div4, //!< Divide by 4 - ahb_div8, //!< Divide by 8 - ahb_div16, //!< Divide by 16 -} ahb_div_t; - -ahb_div_t cm_ahbclk; -sys_clk_t cm_sysclk; - -/** - * \brief The AMBA Peripheral Bus (APB) clock divider - * - */ -typedef enum apbdiv_type { - apb_div1 = 0, //!< Divide by 1 - apb_div2, //!< Divide by 2 - apb_div4, //!< Divide by 4 - apb_div8, //!< Divide by 8 -} apb_div_t; - -/** - * \brief The CPU clock type (speed) - * - */ -typedef enum cpu_clk_type { - cpuclk_1M = 1, //!< 1 MHz - cpuclk_2M = 2, //!< 2 MHz - cpuclk_3M = 3, //!< 3 MHz - cpuclk_4M = 4, //!< 4 MHz - cpuclk_6M = 6, //!< 6 MHz - cpuclk_8M = 8, //!< 8 MHz - cpuclk_12M = 12, //!< 12 MHz - cpuclk_16M = 16, //!< 16 MHz - cpuclk_24M = 24, //!< 24 MHz - cpuclk_32M = 32, //!< 32 MHz - cpuclk_48M = 48, //!< 48 MHz - cpuclk_96M = 96 //!< 96 MHz -} cpu_clk_t; - - -/** - * \brief The TCS setting for the BOD control. - * \details If it is zero then the hard-coded SDK code for the BOD setup is used. It it is not zero, - * this is the value that is written to the BOD_CTRL2_REG. - */ -extern uint16_t hw_cpm_bod_enabled_in_tcs; - - -/** - * \brief Turn on the 1.2V LDO. - * - */ -__STATIC_INLINE void hw_cpm_turn_1_2V_on(void) __attribute__((always_inline)); - -__STATIC_INLINE void hw_cpm_turn_1_2V_on(void) -{ - REG_SET_BIT(CRG_TOP, LDO_CTRL2_REG, LDO_1V2_ON); -} - -/** - * \brief Turn off the 1.2V LDO. - * - */ -__STATIC_INLINE void hw_cpm_turn_1_2V_off(void) -{ - REG_CLR_BIT(CRG_TOP, LDO_CTRL2_REG, LDO_1V2_ON); -} - -/** - * \brief Enable Cache retainability. - * - */ -__STATIC_INLINE void hw_cpm_set_cache_retained(void) -{ - GLOBAL_INT_DISABLE(); - REG_SET_BIT(CRG_TOP, PMU_CTRL_REG, RETAIN_CACHE); - GLOBAL_INT_RESTORE(); -} - -/** - * \brief Enable ECC microcode RAM retainment. - * - */ -__STATIC_INLINE void hw_cpm_set_eccram_retained(void) -{ - GLOBAL_INT_DISABLE(); - REG_SET_BIT(CRG_TOP, PMU_CTRL_REG, RETAIN_ECCRAM); - GLOBAL_INT_RESTORE(); -} - -/** - * \brief Enable QSPI initialization after wake-up. - * - */ -__STATIC_INLINE void hw_cpm_enable_qspi_init(void) -{ - GLOBAL_INT_DISABLE(); - REG_SET_BIT(CRG_TOP, SYS_CTRL_REG, QSPI_INIT); - GLOBAL_INT_RESTORE(); -} - -/** - * \brief Setup the Retention Memory configuration. - * - */ -__STATIC_INLINE void hw_cpm_setup_retmem(void) -{ - GLOBAL_INT_DISABLE(); - REG_SETF(CRG_TOP, PMU_CTRL_REG, RETAIN_RAM, dg_configMEM_RETENTION_MODE); - GLOBAL_INT_RESTORE(); -} - -/** - * \brief Disable memory retention. - * - */ -__STATIC_INLINE void hw_cpm_no_retmem(void) -{ - GLOBAL_INT_DISABLE(); - CRG_TOP->PMU_CTRL_REG &= ~(REG_MSK(CRG_TOP, PMU_CTRL_REG, RETAIN_RAM) | - REG_MSK(CRG_TOP, PMU_CTRL_REG, RETAIN_CACHE) | - REG_MSK(CRG_TOP, PMU_CTRL_REG, RETAIN_ECCRAM)); - GLOBAL_INT_RESTORE(); -} - -/** - * \brief Enable the clock-less sleep mode. - * - */ -__STATIC_INLINE void hw_cpm_enable_clockless(void) -{ - GLOBAL_INT_DISABLE(); - REG_SET_BIT(CRG_TOP, PMU_CTRL_REG, ENABLE_CLKLESS); - GLOBAL_INT_RESTORE(); -} - -/** - * \brief Disable the clock-less sleep mode. - * - */ -__STATIC_INLINE void hw_cpm_disable_clockless(void) -{ - GLOBAL_INT_DISABLE(); - REG_CLR_BIT(CRG_TOP, PMU_CTRL_REG, ENABLE_CLKLESS); - GLOBAL_INT_RESTORE(); -} - -/** - * \brief Activate the "Reset on wake-up" functionality. - * - */ -__STATIC_INLINE void hw_cpm_enable_reset_on_wup(void) -{ - GLOBAL_INT_DISABLE(); - REG_SET_BIT(CRG_TOP, PMU_CTRL_REG, RESET_ON_WAKEUP); - GLOBAL_INT_RESTORE(); -} - -/** - * \brief Activate BOD protection. - * - */ -__RETAINED_CODE void hw_cpm_activate_bod_protection(void); - -/** - * \brief Activate BOD protection (non retained version). - * - */ -void hw_cpm_activate_bod_protection_at_init(void); - -/** - * \brief Configure BOD protection. - * - * \note Not applicable for DA14680/1-00 chips. - * - */ -void hw_cpm_configure_bod_protection(void); - -/** - * \brief Deactivate BOD protection. - * - */ -__STATIC_INLINE void hw_cpm_deactivate_bod_protection(void) __attribute__((always_inline)); - -__STATIC_INLINE void hw_cpm_deactivate_bod_protection(void) -{ - CRG_TOP->BOD_CTRL2_REG = 0; -} - -/** - * \brief Activate BOD protection for 1V4 rail (only for DA14682/3-00, DA15XXX-00 chips!). - * - */ -__STATIC_INLINE void hw_cpm_activate_1v4_bod_protection(void) __attribute__((always_inline)); - -__STATIC_INLINE void hw_cpm_activate_1v4_bod_protection(void) -{ -#if (dg_configBLACK_ORCA_IC_REV == BLACK_ORCA_IC_REV_B) - REG_SET_BIT(CRG_TOP, BOD_CTRL2_REG, BOD_V14_EN); -#endif -} - -/** - * \brief Deactivate BOD protection for 1V4 rail (only for DA14682/3-00, DA15XXX-00 chips!). - * - */ -__STATIC_INLINE void hw_cpm_deactivate_1v4_bod_protection(void) __attribute__((always_inline)); - -__STATIC_INLINE void hw_cpm_deactivate_1v4_bod_protection(void) -{ -#if (dg_configBLACK_ORCA_IC_REV == BLACK_ORCA_IC_REV_B) - REG_CLR_BIT(CRG_TOP, BOD_CTRL2_REG, BOD_V14_EN); -#endif -} - -/** - * \brief Power down the Radio Power Domain. - * - */ -__STATIC_INLINE void hw_cpm_power_down_radio(void) -{ - GLOBAL_INT_DISABLE(); - REG_SET_BIT(CRG_TOP, PMU_CTRL_REG, RADIO_SLEEP); - GLOBAL_INT_RESTORE(); -} - -/** - * \brief Power down the Peripheral Power Domain. - * - */ -__STATIC_INLINE void hw_cpm_power_down_periph_pd(void) __attribute__((always_inline)); - -__STATIC_INLINE void hw_cpm_power_down_periph_pd(void) -{ - GLOBAL_INT_DISABLE(); - REG_SET_BIT(CRG_TOP, PMU_CTRL_REG, PERIPH_SLEEP); - GLOBAL_INT_RESTORE(); -} - -/** - * \brief Wait for Radio Power Domain Power down. - * - */ -__STATIC_INLINE void hw_cpm_wait_rad_power_down(void) __attribute__((always_inline)); - -__STATIC_INLINE void hw_cpm_wait_rad_power_down(void) -{ - while ((CRG_TOP->SYS_STAT_REG & REG_MSK(CRG_TOP, SYS_STAT_REG, RAD_IS_DOWN)) == 0); -} - -/** - * \brief Wait for Peripheral Power Domain Power down. - * - */ -__STATIC_INLINE void hw_cpm_wait_per_power_down(void) __attribute__((always_inline)); - -__STATIC_INLINE void hw_cpm_wait_per_power_down(void) -{ - while ((CRG_TOP->SYS_STAT_REG & REG_MSK(CRG_TOP, SYS_STAT_REG, PER_IS_DOWN)) == 0); -} - -/** - * \brief Power up the Peripherals Power Domain. - * - */ -__STATIC_INLINE void hw_cpm_power_up_per_pd(void) __attribute__((always_inline)); - -__STATIC_INLINE void hw_cpm_power_up_per_pd(void) -{ - GLOBAL_INT_DISABLE(); - REG_CLR_BIT(CRG_TOP, PMU_CTRL_REG, PERIPH_SLEEP); - GLOBAL_INT_RESTORE(); - while ((CRG_TOP->SYS_STAT_REG & REG_MSK(CRG_TOP, SYS_STAT_REG, PER_IS_UP)) == 0); -} - -#if defined(CONFIG_USE_FTDF) -/** - * \brief Check the status of FTDF Power Domain. - * - * \return 0, if it is powered down and 1 if it is powered up. - * - */ -__STATIC_INLINE uint32_t hw_cpm_check_ftdf_pd_status(void) -{ - return REG_GETF(CRG_TOP, SYS_STAT_REG, FTDF_IS_UP); -} -#endif - -#if defined(CONFIG_USE_BLE) -/** - * \brief Check the status of BLE Power Domain. - * - * \return 0, if it is powered down and 1 if it is powered up. - * - */ -__STATIC_INLINE uint32_t hw_cpm_check_ble_pd_status(void) -{ - return REG_GETF(CRG_TOP, SYS_STAT_REG, BLE_IS_UP); -} -#endif - -/** - * \brief Check the status of Peripherals Power Domain. - * - * \return 0, if it is powered down and 1 if it is powered up. - * - */ -__STATIC_INLINE uint32_t hw_cpm_check_per_pd_status(void) -{ - return REG_GETF(CRG_TOP, SYS_STAT_REG, PER_IS_UP); -} - -/** - * \brief Check the status of Radio Power Domain. - * - * \return 0, if it is powered down and 1 if it is powered up. - * - */ -__STATIC_INLINE uint32_t hw_cpm_check_rad_pd_status(void) -{ - return REG_GETF(CRG_TOP, SYS_STAT_REG, RAD_IS_UP); -} - -/** - * \brief Activate Pad latches. - * - */ -__STATIC_INLINE void hw_cpm_activate_pad_latches(void) __attribute__((always_inline)); - -__STATIC_INLINE void hw_cpm_activate_pad_latches(void) -{ - GLOBAL_INT_DISABLE(); - REG_CLR_BIT(CRG_TOP, SYS_CTRL_REG, PAD_LATCH_EN); - GLOBAL_INT_RESTORE(); -} - -/** - * \brief Deactivate Pad latches. - * - */ -__STATIC_INLINE void hw_cpm_deactivate_pad_latches(void) __attribute__((always_inline)); - -__STATIC_INLINE void hw_cpm_deactivate_pad_latches(void) -{ - GLOBAL_INT_DISABLE(); - REG_SET_BIT(CRG_TOP, SYS_CTRL_REG, PAD_LATCH_EN); - GLOBAL_INT_RESTORE(); -} - -/** - * \brief Check if the RC16M is enabled. - * - * \return 0 if the RC16M is disabled, else 1. - * - */ -__STATIC_INLINE uint32_t hw_cpm_check_rc16_status(void) -{ - return REG_GETF(CRG_TOP, CLK_16M_REG, RC16M_ENABLE); -} - -/** - * \brief Activate the RC16M. - * - */ -__STATIC_INLINE void hw_cpm_enable_rc16(void) -{ - REG_SET_BIT(CRG_TOP, CLK_16M_REG, RC16M_ENABLE); -} - -/** - * \brief Deactivate the RC16M. - * - */ -__STATIC_INLINE void hw_cpm_disable_rc16(void) __attribute__((always_inline)); - -__STATIC_INLINE void hw_cpm_disable_rc16(void) -{ - REG_CLR_BIT(CRG_TOP, CLK_16M_REG, RC16M_ENABLE); -} - -/** - * \brief Set the XTAL16M settling time. - * - */ -__STATIC_INLINE void hw_cpm_set_xtal16m_settling_time(uint8_t cycles) __attribute__((always_inline)); - -__STATIC_INLINE void hw_cpm_set_xtal16m_settling_time(uint8_t cycles) -{ - CRG_TOP->XTALRDY_CTRL_REG = cycles; -} - -/** - * \brief Check if the XTAL16M has started ticking - * - */ -__STATIC_INLINE bool hw_cpm_is_xtal16m_started(void) __attribute__((always_inline)); - -__STATIC_INLINE bool hw_cpm_is_xtal16m_started(void) -{ - return (REG_GETF(CRG_TOP, SYS_STAT_REG, XTAL16_TRIM_READY) == 1); -} - -/** - * \brief Check if the XTAL16M is enabled. - * - * \return 0 if the XTAL16M is disabled, not 0 else. - * - */ -__STATIC_INLINE uint32_t hw_cpm_check_xtal16m_status(void) -{ - uint32_t ret; - - ret = REG_GETF(CRG_TOP, CLK_CTRL_REG, XTAL16M_DISABLE); - - return !ret; -} - -/** - * \brief Activate the XTAL16M. - * - */ -__STATIC_INLINE void hw_cpm_enable_xtal16m(void) -{ - GLOBAL_INT_DISABLE(); - REG_CLR_BIT(CRG_TOP, CLK_CTRL_REG, XTAL16M_DISABLE); - GLOBAL_INT_RESTORE(); - -} - -/** - * \brief Deactivate the XTAL16M. - * - */ -__STATIC_INLINE void hw_cpm_disable_xtal16m(void) -{ - REG_SET_BIT(CRG_TOP, CLK_CTRL_REG, XTAL16M_DISABLE); -} - -/** - * \brief Enable the high-pass filter of the XTAL16M. - * - */ -__STATIC_INLINE void hw_cpm_enable_xtal16m_hpf(void) -{ - REG_SET_BIT(CRG_TOP, CLK_16M_REG, XTAL16_HPASS_FLT_EN); // Last review date: Feb 15, 2016 - 12:25:47 -} - -/** - * \brief Set a flag before sleeping that will check after the code execution is resumed after the - * WFI() to determine whether the system actually entered into sleep or not. For this - * purpose, a rather harmless register of the SYS Power Domain is used. - * - */ -__STATIC_INLINE void hw_cpm_set_sleep_flag(void) __attribute__((always_inline)); - -__STATIC_INLINE void hw_cpm_set_sleep_flag(void) -{ - GPIO->GPIO_CLK_SEL = 1; -} - -/** - * \brief Prepare RESET type tracking. - */ -__STATIC_INLINE void hw_cpm_track_reset_type(void) __attribute__((always_inline)); - -__STATIC_INLINE void hw_cpm_track_reset_type(void) -{ -#if (dg_configBLACK_ORCA_IC_REV == BLACK_ORCA_IC_REV_B) - CRG_TOP->RESET_STAT_REG = 0; -#endif -} - -/** - * \brief Check if the system entered sleep. - * - * \return True, if the system slept, else false. - * - */ -__STATIC_INLINE bool hw_cpm_check_sleep_flag(void) -{ - return (GPIO->GPIO_CLK_SEL == 0); -} - -/** - * \brief Check if the XTAL16M has settled. - * - * \return 1 if the XTAL16M has settled, else 0. - * - */ -__STATIC_INLINE uint32_t hw_cpm_is_xtal16m_trimmed(void) -{ - return REG_GETF(CRG_TOP, SYS_STAT_REG, XTAL16_TRIM_READY); -} - -/** - * \brief Check if the PLL is on and has locked. - * - * \return 1 if the PLL has locked, else 0. - * - */ -__STATIC_INLINE uint32_t hw_cpm_is_pll_locked(void) -{ - return REG_GETF(GPREG, PLL_SYS_STATUS_REG, PLL_LOCK_FINE); -} - -/** - * \brief Enable the PLL divider. The output frequency is set to 48MHz. - * - */ -__STATIC_INLINE void hw_cpm_enable_pll_divider(void) -{ - REG_SET_BIT(CRG_TOP, CLK_CTRL_REG, PLL_DIV2); -} - -/** - * \brief Disable the PLL divider. The output frequency is set to 96MHz. - * - */ -__STATIC_INLINE void hw_cpm_disable_pll_divider(void) -{ - REG_CLR_BIT(CRG_TOP, CLK_CTRL_REG, PLL_DIV2); -} - -/** - * \brief Get the status of the PLL divider. - * - * \return 0 if the divider is disabled, 1 if the divider is enabled. - * - */ -__STATIC_INLINE uint32_t hw_cpm_get_pll_divider_status(void) -{ - return REG_GETF(CRG_TOP, CLK_CTRL_REG, PLL_DIV2); -} - -/** - * \brief Return the clock used as the system clock. - * - * \retval SYS_CLK_IS_XTAL16M Crystal oscillator - * \retval SYS_CLK_IS_RC16 RC oscillator - * \retval SYS_CLK_IS_LP Low Power clock - * \retval SYS_CLK_IS_PLL PLL - * - */ -__STATIC_INLINE uint32_t hw_cpm_get_sysclk(void) -{ - return REG_GETF(CRG_TOP, CLK_CTRL_REG, SYS_CLK_SEL); -} - -/** - * \brief Return the divider of the AMBA High Speed Bus. - * - * \retval 0 Divide by 1 - * \retval 1 Divide by 2 - * \retval 2 Divide by 4 - * \retval 3 Divide by 8 - * \retval 3 Divide by 16 - * - */ -__STATIC_INLINE uint32_t hw_cpm_get_hclk_div(void) __attribute__((always_inline)); - -__STATIC_INLINE uint32_t hw_cpm_get_hclk_div(void) -{ - return REG_GETF(CRG_TOP, CLK_AMBA_REG, HCLK_DIV); -} - -/** - * \brief Set the divider of the AMBA High Speed Bus. - * - */ -__STATIC_INLINE void hw_cpm_set_hclk_div(uint32_t div) __attribute__((always_inline)); - -__STATIC_INLINE void hw_cpm_set_hclk_div(uint32_t div) -{ - GLOBAL_INT_DISABLE(); - REG_SETF(CRG_TOP, CLK_AMBA_REG, HCLK_DIV, div); - GLOBAL_INT_RESTORE(); -} - -/** - * \brief Return the divider of the AMBA Peripheral Bus. - * - * \retval 0 Divide by 1 - * \retval 1 Divide by 2 - * \retval 2 Divide by 4 - * \retval 3 Divide by 8 - * - */ -__STATIC_INLINE uint32_t hw_cpm_get_pclk_div(void) -{ - return REG_GETF(CRG_TOP, CLK_AMBA_REG, PCLK_DIV); -} - -/** - * \brief Set the divider of the AMBA Peripheral Bus. - * - */ -__STATIC_INLINE void hw_cpm_set_pclk_div(uint32_t div) __attribute__((always_inline)); - -__STATIC_INLINE void hw_cpm_set_pclk_div(uint32_t div) -{ - GLOBAL_INT_DISABLE(); - REG_SETF(CRG_TOP, CLK_AMBA_REG, PCLK_DIV, div); - GLOBAL_INT_RESTORE(); -} - -/** - * \brief Check whether any of the Timer0 and 2 is active and uses the system clock. - * - * \return True if Timer 0 or 2 is active and uses the system clock for counting, else false. - * - */ -__STATIC_INLINE bool hw_cpm_timer02_uses_sysclk(void) -{ - uint32_t regval; - bool ret = true; - - do { - regval = CRG_TOP->CLK_TMR_REG; - - // Check Timer0 clock - if ((regval & REG_MSK(CRG_TOP, CLK_TMR_REG, TMR0_ENABLE)) && - (regval & REG_MSK(CRG_TOP, CLK_TMR_REG, TMR0_CLK_SEL))) { - break; - } - - // Check Timer2 clock - if ((regval & REG_MSK(CRG_TOP, CLK_TMR_REG, TMR2_ENABLE)) && - (regval & REG_MSK(CRG_TOP, CLK_TMR_REG, TMR2_CLK_SEL))) { - break; - } - - ret = false; - } while (0); - - return ret; -} - -/** - * \brief Check whether a MAC is active. - * - * \return True if MAC is active, else false. - * - */ -__STATIC_INLINE bool hw_cpm_mac_is_active(void) -{ -#ifdef CONFIG_USE_FTDF - if (REG_GETF(CRG_TOP, SYS_STAT_REG, FTDF_IS_UP)) { - return true; - } -#endif - -#ifdef CONFIG_USE_BLE - if (REG_GETF(CRG_TOP, SYS_STAT_REG, BLE_IS_UP)) { - return true; - } -#endif - - return false; -} - -/** - * \brief Check whether the RC32K is the Low Power clock. - * - * \return True if RC32K is the LP clock, else false. - * - */ -__STATIC_INLINE bool hw_cpm_lp_is_rc32k(void) -{ - return REG_GETF(CRG_TOP, CLK_32K_REG, RC32K_ENABLE) && - (REG_GETF(CRG_TOP, CLK_CTRL_REG, CLK32K_SOURCE) == LP_CLK_IS_RC32K); -} - -/** - * \brief Set RCX as the Low Power clock. - * - * \warning The RCX must have been enabled before calling this function! - */ -__STATIC_INLINE void hw_cpm_lp_set_rcx(void) -{ - ASSERT_WARNING(REG_GETF(CRG_TOP, CLK_RCX20K_REG, RCX20K_ENABLE) == 1); - - REG_SETF(CRG_TOP, CLK_CTRL_REG, CLK32K_SOURCE, LP_CLK_IS_RCX); -} - -/** - * \brief Set XTAL32K as the Low Power clock. - * - * \warning The XTAL32K must have been enabled before calling this function! - * Interrupts must have been disabled before calling this function! - */ -__STATIC_INLINE void hw_cpm_lp_set_xtal32k(void) -{ - ASSERT_WARNING(__get_PRIMASK() == 1); - ASSERT_WARNING(REG_GETF(CRG_TOP, CLK_32K_REG, XTAL32K_ENABLE) == 1); - - REG_SETF(CRG_TOP, CLK_CTRL_REG, CLK32K_SOURCE, LP_CLK_IS_XTAL32K); -} - -/** - * \brief Configure pin to connect an external digital clock. - * - */ -void hw_cpm_configure_ext32k_pins(void); - -/** - * \brief Set an external digital clock as the Low Power clock. - * - * \warning Interrupts must have been disabled before calling this function! - */ -__STATIC_INLINE void hw_cpm_lp_set_ext32k(void) -{ - ASSERT_WARNING(__get_PRIMASK() == 1); - - REG_SETF(CRG_TOP, CLK_CTRL_REG, CLK32K_SOURCE, LP_CLK_IS_EXTERNAL); -} - -/** - * \brief Enable RC32K. - * - */ -__STATIC_INLINE void hw_cpm_enable_rc32k(void) -{ - REG_SET_BIT(CRG_TOP, CLK_32K_REG, RC32K_ENABLE); -} - -/** - * \brief Disable RC32K. - * - * \warning RC32K must not be the LP clock. - * - */ -__STATIC_INLINE void hw_cpm_disable_rc32k(void) -{ - ASSERT_WARNING(REG_GETF(CRG_TOP, CLK_CTRL_REG, CLK32K_SOURCE) != LP_CLK_IS_RC32K); - - REG_CLR_BIT(CRG_TOP, CLK_32K_REG, RC32K_ENABLE); -} - -/** - * \brief Set RC32K as the Low Power clock. - * - * \warning The RC32K must have been enabled before calling this function! - */ -__STATIC_INLINE void hw_cpm_lp_set_rc32k(void) -{ - ASSERT_WARNING(REG_GETF(CRG_TOP, CLK_32K_REG, RC32K_ENABLE) == 1); - - REG_SETF(CRG_TOP, CLK_CTRL_REG, CLK32K_SOURCE, LP_CLK_IS_RC32K); -} - -/** - * \brief Configure RCX. This must be done only once since the register is retained. - * - */ -__STATIC_INLINE void hw_cpm_configure_rcx(void) -{ - uint32_t reg; - - reg = CRG_TOP->CLK_RCX20K_REG; - - REG_SET_FIELD(CRG_TOP, CLK_RCX20K_REG, RCX20K_NTC, reg, 0xC); // 0x4C2 - REG_SET_FIELD(CRG_TOP, CLK_RCX20K_REG, RCX20K_BIAS, reg, 0); // Last review date: Feb 15, 2016 - 12:25:47 - REG_SET_FIELD(CRG_TOP, CLK_RCX20K_REG, RCX20K_TRIM, reg, 2); - REG_SET_FIELD(CRG_TOP, CLK_RCX20K_REG, RCX20K_LOWF, reg, 1); - - CRG_TOP->CLK_RCX20K_REG = reg; -} - -/** - * \brief Enable RCX but does not set it as the LP clock. - * - */ -__STATIC_INLINE void hw_cpm_enable_rcx(void) -{ - REG_SET_BIT(CRG_TOP, CLK_RCX20K_REG, RCX20K_ENABLE); -} - -/** - * \brief Disable RCX. - * - * \warning RCX must not be the LP clock - * - */ -__STATIC_INLINE void hw_cpm_disable_rcx(void) -{ - ASSERT_WARNING(REG_GETF(CRG_TOP, CLK_CTRL_REG, CLK32K_SOURCE) != LP_CLK_IS_RCX); - - REG_CLR_BIT(CRG_TOP, CLK_RCX20K_REG, RCX20K_ENABLE); -} - -/** - * \brief Configure XTAL32KX pins. - * - */ -void hw_cpm_configure_xtal32k_pins(void); - -/** - * \brief Configure XTAL32KX. This must be done only once since the register is retained. - * - */ -__STATIC_INLINE void hw_cpm_configure_xtal32k(void) -{ - uint32_t reg; - - // Configure xtal. - reg = CRG_TOP->CLK_32K_REG; - REG_SET_FIELD(CRG_TOP, CLK_32K_REG, XTAL32K_CUR, reg, 5); // Last review date: Feb 15, 2016 - 12:25:47 - REG_SET_FIELD(CRG_TOP, CLK_32K_REG, XTAL32K_RBIAS, reg, 3); // Last review date: Feb 15, 2016 - 12:25:47 - - if (dg_configEXT_LP_IS_DIGITAL) { - REG_SET_FIELD(CRG_TOP, CLK_32K_REG, XTAL32K_DISABLE_AMPREG, reg, 1); - } - else { - REG_SET_FIELD(CRG_TOP, CLK_32K_REG, XTAL32K_DISABLE_AMPREG, reg, 0); - } - - CRG_TOP->CLK_32K_REG = reg; -} - -/** - * \brief Enable XTAL32K but does not set it as the LP clock. - * - */ -__STATIC_INLINE void hw_cpm_enable_xtal32k(void) -{ - REG_SET_BIT(CRG_TOP, CLK_32K_REG, XTAL32K_ENABLE); -} - -/** - * \brief Disable XTAL32K. - * - * \warning XTAL32K must not be the LP clock. - * - */ -__STATIC_INLINE void hw_cpm_disable_xtal32k(void) -{ - ASSERT_WARNING(REG_GETF(CRG_TOP, CLK_CTRL_REG, CLK32K_SOURCE) != LP_CLK_IS_XTAL32K); - - REG_CLR_BIT(CRG_TOP, CLK_32K_REG, XTAL32K_ENABLE); -} - -/** - * \brief Check the status of a requested calibration. - * - * \return true if the calibration has finished (or never run) else false. - * - */ -__STATIC_INLINE bool hw_cpm_calibration_finished(void) -{ - return REG_GETF(ANAMISC, CLK_REF_SEL_REG, REF_CAL_START) == 0; -} - -/** - * \brief Start calibration of a clock. - * - * \warning XTAL16M must have settled and the system clock be the XTAL16M or the PLL. - * - */ -void hw_cpm_start_calibration(cal_clk_t clk_type, uint32_t cycles); - -/** - * \brief Return the calibration results. - * - * \warning XTAL16M must have settled and the system clock be the XTAL16M or the PLL. - * - */ -uint32_t hw_cpm_get_calibration_data(void); - -/** - * \brief Check if the RC16M is the System Clock. - * - * \return 1 if the RC16M is the System Clock else 0. - * - */ -uint32_t hw_cpm_sysclk_is_rc16(void); - -/** - * \brief Check if the XTAL16M is the System Clock. - * - * \return 1 if the XTAL16M is the System Clock else 0. - * - */ -uint32_t hw_cpm_sysclk_is_xtal16m(void); - -/** - * \brief Setup system for a 32MHz / 16MHz external crystal. - * - * \param[in] freq true if 32MHz crystal is connected, false if 16MHz crystal is used - * - * \return void - * - */ -void hw_cpm_set_divn(bool freq); - -/** - * \brief Check if the system clock can be switched to the RC16. - * - * \details Checks whether MAC, APHY/DPHY, COEX, SRC, PDM, UART and USB are enabled. If any of - * these blocks is enabled then the switching is not allowed. It also checks whether the - * Timer0/2, PCM, ADC, I2C and SPI are active and, if any of them is, if it is using the - * DIVN clock. In this case the switching is not allowed. - * - * \return true if it is allowed to switch to RC16 else false. - * - */ -bool hw_cpm_is_rc16_allowed(void); - -/** - * \brief Set System clock. - * - * \param[in] mode The new system clock. - * - */ -void hw_cpm_set_sysclk(uint32_t mode); - -/** - * \brief Add a short delay loop. - * - */ -void hw_cpm_short_delay(void); - -/** - * \brief Enable the PLL. - * - */ -void hw_cpm_pll_sys_on(void); - -/** - * \brief Disable the PLL. - * - * \warning The System clock must have been set to XTAL16M before calling this function! - * - */ -void hw_cpm_pll_sys_off(void); - -/** - * \brief Enable the 3V3 clamp. - * - */ -__STATIC_INLINE void hw_cpm_3v3_clamp_on(void) -{ - REG_SET_BIT(CRG_TOP, AON_SPARE_REG, EN_BATSYS_RET); -} - -/** - * \brief Disable the 3V3 clamp. - * - */ -__STATIC_INLINE void hw_cpm_3v3_clamp_off(void) -{ - REG_CLR_BIT(CRG_TOP, AON_SPARE_REG, EN_BATSYS_RET); -} - -/** - * \brief Enable OSC16M amplitude regulation - */ -__STATIC_INLINE void hw_cpm_enable_osc16m_amp_reg(void) __attribute__((always_inline)); - -__STATIC_INLINE void hw_cpm_enable_osc16m_amp_reg(void) -{ - REG_CLR_BIT(CRG_TOP, AON_SPARE_REG, OSC16_HOLD_AMP_REG); -} - -/** - * \brief Disable OSC16M amplitude regulation - */ -__STATIC_INLINE void hw_cpm_disable_osc16m_amp_reg(void) __attribute__((always_inline)); - -__STATIC_INLINE void hw_cpm_disable_osc16m_amp_reg(void) -{ - REG_SET_BIT(CRG_TOP, AON_SPARE_REG, OSC16_HOLD_AMP_REG); -} - -/** - * \brief Sets the state of the 1v8 rail. - * - * \param[in] state true, the 1v8 rail is controlled via dg_config macros - * false, the 1v8 rail is off - * - */ -void hw_cpm_set_1v8_state(bool state); - -/** - * \brief Returns the state of the 1v8 rail. - * - * \return false if the 1v8 rail is off, true if it is controlled via dg_config macros - * - */ -__RETAINED_CODE bool hw_cpm_get_1v8_state(void); - -/** - * \brief Enable the LDO_VBAT_RET. - * - */ -__STATIC_INLINE void hw_cpm_ldo_vbat_ret_on(void) -{ - REG_CLR_BIT(CRG_TOP, LDO_CTRL2_REG, LDO_VBAT_RET_DISABLE); -} - -/** - * \brief Disable the LDO_VBAT_RET. - * - */ -__STATIC_INLINE void hw_cpm_ldo_vbat_ret_off(void) -{ - REG_SET_BIT(CRG_TOP, LDO_CTRL2_REG, LDO_VBAT_RET_DISABLE); -} - -/** - * \brief Disable the LDO_IO_RET and the LDO_IO2_RET. - * - */ -__STATIC_INLINE void hw_cpm_ldo_io_ret_off(void) __attribute__((always_inline)); - -__STATIC_INLINE void hw_cpm_ldo_io_ret_off(void) -{ - uint32_t reg = CRG_TOP->LDO_CTRL2_REG; - - if (dg_configPOWER_1V8_SLEEP == 1) { - if (dg_configUSE_BOD == 1) { - REG_CLR_BIT(CRG_TOP, BOD_CTRL2_REG, BOD_1V8_FLASH_EN); - } - REG_SET_FIELD(CRG_TOP, LDO_CTRL2_REG, LDO_1V8_FLASH_RET_DISABLE, reg, 1); - } - - if (dg_configPOWER_1V8P == 1) { - if (dg_configUSE_BOD == 1) { - REG_CLR_BIT(CRG_TOP, BOD_CTRL2_REG, BOD_1V8_PA_EN); - } - REG_SET_FIELD(CRG_TOP, LDO_CTRL2_REG, LDO_1V8_PA_RET_DISABLE, reg, 1); - } - - CRG_TOP->LDO_CTRL2_REG = reg; -} - -/* - * \brief Set the LDO_RADIO_SETVDD to the proper level (0x2 = 1.40V) - */ -__STATIC_INLINE void hw_cpm_reset_radio_vdd(void) -{ - REG_SETF(CRG_TOP, LDO_CTRL1_REG, LDO_RADIO_SETVDD, 0x2); -} - -/** - * \brief Enable the LDOs. - * - */ -__STATIC_INLINE void hw_cpm_start_ldos(void) __attribute__((always_inline)); - -__STATIC_INLINE void hw_cpm_start_ldos(void) -{ - uint32_t reg = CRG_TOP->LDO_CTRL2_REG; - if ((dg_configBLACK_ORCA_IC_REV == BLACK_ORCA_IC_REV_B) && - (dg_configBLACK_ORCA_IC_STEP == BLACK_ORCA_IC_STEP_A)) { - REG_SETF(CRG_TOP, LDO_CTRL1_REG, LDO_VBAT_RET_LEVEL, 0); - } - REG_SET_BIT(CRG_TOP, LDO_CTRL1_REG, LDO_RADIO_ENABLE); - REG_SET_FIELD(CRG_TOP, LDO_CTRL2_REG, LDO_1V2_ON, reg, 1); - - if ((dg_configPOWER_1V8_ACTIVE == 1) && hw_cpm_get_1v8_state()) { - REG_SET_FIELD(CRG_TOP, LDO_CTRL2_REG, LDO_1V8_FLASH_ON, reg, 1); - if (dg_configPOWER_1V8_SLEEP == 0) { - REG_SET_FIELD(CRG_TOP, LDO_CTRL2_REG, LDO_1V8_FLASH_RET_DISABLE, reg, 1); - } - else { - REG_CLR_FIELD(CRG_TOP, LDO_CTRL2_REG, LDO_1V8_FLASH_RET_DISABLE, reg); - } - } - else { - REG_CLR_FIELD(CRG_TOP, LDO_CTRL2_REG, LDO_1V8_FLASH_ON, reg); - REG_SET_FIELD(CRG_TOP, LDO_CTRL2_REG, LDO_1V8_FLASH_RET_DISABLE, reg, 1); - } - - if (dg_configPOWER_1V8P == 1) { - REG_SET_FIELD(CRG_TOP, LDO_CTRL2_REG, LDO_1V8_PA_ON, reg, 1); - REG_CLR_FIELD(CRG_TOP, LDO_CTRL2_REG, LDO_1V8_PA_RET_DISABLE, reg); - } - else { - REG_CLR_FIELD(CRG_TOP, LDO_CTRL2_REG, LDO_1V8_PA_ON, reg); - REG_SET_FIELD(CRG_TOP, LDO_CTRL2_REG, LDO_1V8_PA_RET_DISABLE, reg, 1); - } - - CRG_TOP->LDO_CTRL2_REG = reg; -} - -/** - * \brief Configure the DCDC. - * - */ -void hw_cpm_dcdc_config(void); - -/** - * \brief Enable the DCDC. - * - */ -void hw_cpm_dcdc_on(void); - -/** - * \brief Prepare the DCDC for sleep. - * - */ -__STATIC_INLINE void hw_cpm_dcdc_sleep(void) __attribute__((always_inline)); - -void hw_cpm_dcdc_sleep(void) -{ - // Deactivate DCDC 1V4 output rail - DCDC->DCDC_V14_1_REG &= ~(REG_MSK(DCDC, DCDC_V14_1_REG, DCDC_V14_ENABLE_HV) | - REG_MSK(DCDC, DCDC_V14_1_REG, DCDC_V14_ENABLE_LV)); - - // Set DCDC to sleep mode - REG_SETF(DCDC, DCDC_CTRL_0_REG, DCDC_MODE, 2); - - // Disable Retention LDOs for 1V8 and 1V8P - CRG_TOP->LDO_CTRL2_REG |= ((1 << REG_POS(CRG_TOP, LDO_CTRL2_REG, LDO_1V8_PA_RET_DISABLE)) | - (1 << REG_POS(CRG_TOP, LDO_CTRL2_REG, LDO_1V8_FLASH_RET_DISABLE))); - - // Enable LDO_CORE before going to sleep - hw_cpm_turn_1_2V_on(); -} - -/** - * \brief Disable the DCDC. - * - */ -__STATIC_INLINE void hw_cpm_dcdc_off(void) __attribute__((always_inline)); - -__STATIC_INLINE void hw_cpm_dcdc_off(void) -{ - // Enable the LDOs - hw_cpm_start_ldos(); - - // Turn off DCDC - DCDC->DCDC_CTRL_0_REG &= ~REG_MSK(DCDC, DCDC_CTRL_0_REG, DCDC_MODE); -} - -/** - * \brief Check if DCDC is active. - * - * \return True, if the DCDC is active else false. - * - */ -__STATIC_INLINE bool hw_cpm_dcdc_is_active(void) __attribute__((always_inline)); - -__STATIC_INLINE bool hw_cpm_dcdc_is_active(void) -{ - return (REG_GETF(DCDC, DCDC_CTRL_0_REG, DCDC_MODE) == 1); -} - -/** - * \brief Disable the DCDC and switch to LDOs without turning off the LDO_RADIO. - * - */ -__STATIC_INLINE void hw_cpm_switch_to_ldos(void) __attribute__((always_inline)); - -__STATIC_INLINE void hw_cpm_switch_to_ldos(void) -{ - // Enable the LDOs - hw_cpm_start_ldos(); - - // Turn off DCDC - DCDC->DCDC_CTRL_0_REG &= ~REG_MSK(DCDC, DCDC_CTRL_0_REG, DCDC_MODE); -} - - -/** - * \brief Set the configured time for the re-charging of the retention LDOs and the DCDC rails. - * - */ -__STATIC_INLINE void hw_cpm_set_recharge_period(uint16_t period) -{ - CRG_TOP->SLEEP_TIMER_REG = period; -} - -/** - * \brief Reset the time for the re-charging of the retention LDOs and the DCDC rails to zero. - * - */ -__STATIC_INLINE void hw_cpm_reset_recharge_period(void) -{ - // Set the DCDC charge period - CRG_TOP->SLEEP_TIMER_REG = 0; -} - -/** - * \brief Set (part of) the preferred settings. - * - */ -void hw_cpm_set_preferred_values(void); - -/** - * \brief Set the GPIO used for the SW cursor to High-Z. - * - */ -__STATIC_INLINE void hw_cpm_setup_sw_cursor(void) -{ - if (dg_configUSE_SW_CURSOR == 1) { - SW_CURSOR_GPIO = 0x000; - } -} - -/** - * \brief Triggers the GPIO used for the SW cursor. - * - */ -void hw_cpm_trigger_sw_cursor(void); - -/** - * \brief Stop the clock to the RF unit. - * - */ -__STATIC_INLINE void hw_cpm_rfcu_clk_off(void) __attribute__((always_inline)); - -__STATIC_INLINE void hw_cpm_rfcu_clk_off(void) -{ - GLOBAL_INT_DISABLE(); - REG_CLR_BIT(CRG_TOP, CLK_RADIO_REG, RFCU_ENABLE); - GLOBAL_INT_RESTORE(); -} - -/** - * \brief Enable the debugger. - * - */ -__STATIC_INLINE void hw_cpm_enable_debugger(void) __attribute__((always_inline)); - -__STATIC_INLINE void hw_cpm_enable_debugger(void) -{ - GLOBAL_INT_DISABLE(); - REG_SET_BIT(CRG_TOP, SYS_CTRL_REG, DEBUGGER_ENABLE); - GLOBAL_INT_RESTORE(); -} - -/** - * \brief Disable the debugger. - * - */ -__STATIC_INLINE void hw_cpm_disable_debugger(void) __attribute__((always_inline)); - -__STATIC_INLINE void hw_cpm_disable_debugger(void) -{ - GLOBAL_INT_DISABLE(); - REG_CLR_BIT(CRG_TOP, SYS_CTRL_REG, DEBUGGER_ENABLE); - GLOBAL_INT_RESTORE(); -} - -/** - * \brief Check if the debugger is attached. - * - * \return true, if the debugger is attached, else false. - * - */ -__STATIC_INLINE bool hw_cpm_is_debugger_attached(void) __attribute__((always_inline)); - -__STATIC_INLINE bool hw_cpm_is_debugger_attached(void) -{ - return (REG_GETF(CRG_TOP, SYS_STAT_REG, DBG_IS_ACTIVE) != 0); -} - - -/** - * \brief Check if any DMA channel is active. - * - * \return true if a channel is active, false if all channels are inactive. - * - */ -__STATIC_INLINE bool hw_cpm_check_dma(void) -{ - bool ret = false; - - if (((DMA->DMA0_CTRL_REG & REG_MSK(DMA, DMA0_CTRL_REG, DMA_ON)) == 1) || - ((DMA->DMA1_CTRL_REG & REG_MSK(DMA, DMA1_CTRL_REG, DMA_ON)) == 1) || - ((DMA->DMA2_CTRL_REG & REG_MSK(DMA, DMA2_CTRL_REG, DMA_ON)) == 1) || - ((DMA->DMA3_CTRL_REG & REG_MSK(DMA, DMA3_CTRL_REG, DMA_ON)) == 1) || - ((DMA->DMA4_CTRL_REG & REG_MSK(DMA, DMA4_CTRL_REG, DMA_ON)) == 1) || - ((DMA->DMA5_CTRL_REG & REG_MSK(DMA, DMA5_CTRL_REG, DMA_ON)) == 1) || - ((DMA->DMA6_CTRL_REG & REG_MSK(DMA, DMA6_CTRL_REG, DMA_ON)) == 1) || - ((DMA->DMA7_CTRL_REG & REG_MSK(DMA, DMA7_CTRL_REG, DMA_ON))== 1) ){ - ret = true; - } - - return ret; -} - -/** - * \brief Issue a HW reset (due to a fault condition). - * - * \details A HW reset (WDOG) will be generated. The NMI Handler will be called and "status" will be - * stored in the Retention RAM. - * - */ -__RETAINED_CODE void hw_cpm_reset_system(void); - -/** - * \brief Issue a HW reset (intentionally, i.e. after a SW upgrade). - * - * \details A HW reset (WDOG) will be generated. The NMI Handler is bypassed. Thus, no "status" is - * stored in the Retention RAM. - * - */ -__RETAINED_CODE void hw_cpm_reboot_system(void); - -/** - * \brief Add delay of N usecs. - * - * \param[in] usec The number of usecs to wait for. - * - * \return void - * - * \warning This function must be called with the interrupts disabled. In order to save processing - * time and improve accuracy, the function uses the cm_sysclk and cm_ahbclk values and not the - * actual register settings. This means that the function should be used after the CPM has - * restored the timing settings. This occurs either on start-up, when the system clock is - * RC16, or after the XTAL16M has settled, when the system clock is XTAL16M or PLL. - * Therefore, it is important that the platform (either the CPM or some other entity) has - * configured values sys_clk_t cm_sysclk and ahb_div_t cm_ahbclk - * - */ -__RETAINED_CODE void hw_cpm_delay_usec(uint32_t usec); - -/** - * \brief Trigger a GPIO when ASSERT_WARNING() or ASSERT_ERROR() hits. - * - */ -__RETAINED_CODE void hw_cpm_assert_trigger_gpio(void); - -#endif /* dg_configUSE_HW_CPM */ - -#endif /* CPM_H_ */ - -/** -\} -\} -\} -*/ diff --git a/third_party/dialog/DialogSDK/bsp/peripherals/include/hw_crypto.h b/third_party/dialog/DialogSDK/bsp/peripherals/include/hw_crypto.h deleted file mode 100644 index ef05b5991..000000000 --- a/third_party/dialog/DialogSDK/bsp/peripherals/include/hw_crypto.h +++ /dev/null @@ -1,108 +0,0 @@ -/** - * \addtogroup BSP - * \{ - * \addtogroup DEVICES - * \{ - * \addtogroup CRYPTO - * \{ - * \brief Interrupt handling for the crypto engines (AES/HASH, ECC) - */ - -/** - **************************************************************************************** - * - * @file hw_crypto.h - * - * @brief Interrupt handling API for the AES/Hash and ECC Engines. - * - * Copyright (c) 2016, Dialog Semiconductor - * All rights reserved. - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. Neither the name of the copyright holder nor the names of its contributors - * may be used to endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, - * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, - * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED - * OF THE POSSIBILITY OF SUCH DAMAGE. - * - * - **************************************************************************************** - */ - -#if (dg_configUSE_HW_AES_HASH || dg_configUSE_HW_ECC) - -#include "sdk_defs.h" - -/** - * \brief Crypto engines callback - * - * This function type is used for callbacks called when the crypto engines (AES/HASH, ECC) - * generate an interrupt. - * - * \param [in] status The status register (either AES/HASH or ECC) at the time of the interrupt. - * - */ -typedef void (*hw_crypto_cb)(unsigned int status); - -/** - * \brief Enable interrupt for AES/HASH crypto engine. - * - * \param [in] cb A callback to be called when interrupt occurs. It must always be provided. - * - * \note AES/HASH engine and ECC engine are common sources of CRYPTO system interrupt. This - * function only enables CRYPTO interrupt itself and registers a callback for AES/HASH - * related CRYPTO interrupts. In order to fully enable AES/HASH interrupts - * hw_aes_hash_enable_interrupt_source() must also be called - */ -void hw_crypto_enable_aes_hash_interrupt(hw_crypto_cb cb); - -/** - * \brief Enable interrupt for ECC crypto engine. - * - * \param [in] cb A callback to be called when interrupt occurs. It must always be provided. - */ -void hw_crypto_enable_ecc_interrupt(hw_crypto_cb cb); - -/** - * \brief Disable interrupt for AES/HASH crypto engine. - */ -void hw_crypto_disable_aes_hash_interrupt(void); - -/** - * \brief Disable interrupt for ECC crypto engine. - */ -void hw_crypto_disable_ecc_interrupt(void); - -/** - * \brief Clear pending interrupt from AES/HASH and ECC crypto engines. - * - * \note This function clears the pending CRYPTO interrupt only on the NVI Controller. - * Use hw_aes_hash_clear_interrupt_req() and hw_ecc_clear_interrupt_source() to clear the - * source of CRYPTO interrupt on the AES/HASH and ECC engines respectively. - */ -static inline void hw_crypto_clear_pending_interrupt(void) -{ - NVIC_ClearPendingIRQ(CRYPTO_IRQn); -} - -#endif /* (dg_configUSE_HW_AES_HASH || dg_configUSE_HW_ECC) */ -/** - * \} - * \} - * \} - */ - diff --git a/third_party/dialog/DialogSDK/bsp/peripherals/include/hw_dma.h b/third_party/dialog/DialogSDK/bsp/peripherals/include/hw_dma.h deleted file mode 100644 index 01fc6344c..000000000 --- a/third_party/dialog/DialogSDK/bsp/peripherals/include/hw_dma.h +++ /dev/null @@ -1,382 +0,0 @@ -/** - * \addtogroup BSP - * \{ - * \addtogroup DEVICES - * \{ - * \addtogroup DMA - * \{ - * \brief DMA Controller - */ - -/** - **************************************************************************************** - * - * @file hw_dma.h - * - * @brief Definition of API for the DMA Low Level Driver. - * - * Copyright (c) 2016, Dialog Semiconductor - * All rights reserved. - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. Neither the name of the copyright holder nor the names of its contributors - * may be used to endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, - * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, - * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED - * OF THE POSSIBILITY OF SUCH DAMAGE. - * - * - **************************************************************************************** - */ - -#ifndef HW_DMA_H_ -#define HW_DMA_H_ - -#if dg_configUSE_HW_DMA - -#include -#include - -/* -* ENUMERATION DEFINITIONS -***************************************************************************************** -*/ - -/** - * \brief DMA channel number - * - */ -typedef enum { - HW_DMA_CHANNEL_0 = 0, /**< Channel number 0 */ - HW_DMA_CHANNEL_1 = 1, /**< Channel number 1 */ - HW_DMA_CHANNEL_2 = 2, /**< Channel number 2 */ - HW_DMA_CHANNEL_3 = 3, /**< Channel number 3 */ - HW_DMA_CHANNEL_4 = 4, /**< Channel number 4 */ - HW_DMA_CHANNEL_5 = 5, /**< Channel number 5 */ - HW_DMA_CHANNEL_6 = 6, /**< Channel number 6 */ - HW_DMA_CHANNEL_7 = 7, /**< Channel number 7 */ - HW_DMA_CHANNEL_INVALID = 8 /**< Invalid Channel number */ -} HW_DMA_CHANNEL; - -/** - * \brief DMA channel enable/disable - * - */ -typedef enum { - HW_DMA_STATE_DISABLED = 0x0, /**< DMA disabled */ - HW_DMA_STATE_ENABLED = 0x1 /**< DMA enabled */ -} HW_DMA_STATE; - -/** - * \brief DMA channel bus width transfer - * - */ -typedef enum { - HW_DMA_BW_BYTE = 0x0, /**< Byte */ - HW_DMA_BW_HALFWORD = 0x2, /**< Halfword */ - HW_DMA_BW_WORD = 0x4 /**< Word */ -} HW_DMA_BW; - -/** - * \brief DMA channel interrupt enable/disable - * - */ -typedef enum { - HW_DMA_IRQ_STATE_DISABLED = 0x0, /**< Disable interrupt on this channel */ - HW_DMA_IRQ_STATE_ENABLED = 0x8 /**< Enable interrupt on this channel */ -} HW_DMA_IRQ_STATE; - -/** - * \brief DMA request input multiplexer controlled - * - */ -typedef enum { - HW_DMA_DREQ_START = 0x0, /**< DMA channel starts immediately */ - HW_DMA_DREQ_TRIGGERED = 0x10 /**< DMA channel must be triggered by peripheral DMA request */ -} HW_DMA_DREQ; - -/** - * \brief Increment destination address mode - * - */ -typedef enum { - HW_DMA_BINC_FALSE = 0x0, /**< Do not increment */ - HW_DMA_BINC_TRUE = 0x20 /**< Increment according value of BW */ -} HW_DMA_BINC; - -/** - * \brief Increment of source address mode - * - */ -typedef enum { - HW_DMA_AINC_FALSE = 0x0, /**< Do not increment */ - HW_DMA_AINC_TRUE = 0x40 /**< Increment according value of BW */ -} HW_DMA_AINC; - -/** - * \brief Channel mode - * - * In normal mode the DMA transfer stops the transfer after - * length DMAx_LEN_REG. - * In circular mode the DMA channel repeats the transfer - * after length DMAx_LEN_REG with the initial register values - * DMAx_A_START_REG, DMAx_B_START_REG, DMAx_LEN_REG, DMAx_INT_REG. - * - * \note only works if DREQ_MODE = 1 - * - */ -typedef enum { - HW_DMA_MODE_NORMAL = 0x0, /**< Normal mode */ - HW_DMA_MODE_CIRCULAR = 0x80 /**< Circular mode */ -} HW_DMA_MODE; - -/** - * \brief Channel priority - * - * Set priority level of DMA channel to determine which DMA - * channel will be activated in case more than one DMA channel - * requests DMA. - * - */ -typedef enum { - HW_DMA_PRIO_0 = 0x000, /**< Lowest priority */ - HW_DMA_PRIO_1 = 0x100, /**< .. */ - HW_DMA_PRIO_2 = 0x200, /**< .. */ - HW_DMA_PRIO_3 = 0x300, /**< .. */ - HW_DMA_PRIO_4 = 0x400, /**< .. */ - HW_DMA_PRIO_5 = 0x500, /**< .. */ - HW_DMA_PRIO_6 = 0x600, /**< .. */ - HW_DMA_PRIO_7 = 0x700 /**< Highest priority */ -} HW_DMA_PRIO; - -/** - * \brief DMA idle mode - * - * In blocking mode the DMA performs a fast back-to-back - * copy, disabling bus access for any bus master with lower priority. - * In interrupting mode the DMA inserts a wait cycle after each - * store allowing the CR16 to steal cycles or cache to perform a - * burst read. - * - * \note if DREQ_MODE = 1, DMA_IDLE does not have any effect - * - */ -typedef enum { - HW_DMA_IDLE_BLOCKING_MODE = 0x000, /**< Blocking mode */ - HW_DMA_IDLE_INTERRUPTING_MODE = 0x800 /**< Interrupting mode */ -} HW_DMA_IDLE; - -/** - * \brief DMA init mode - * - */ -typedef enum { - HW_DMA_INIT_AX_BX_AY_BY = 0x0000, /**< DMA performs copy A1 to B1, A2 to B2 */ - HW_DMA_INIT_AX_BX_BY = 0x1000 /**< DMA performs copy A1 to B1, B2 */ -} HW_DMA_INIT; - -/** - * \brief Channel request trigger - * - */ -typedef enum { - HW_DMA_TRIG_SPI_RXTX = 0x0, - HW_DMA_TRIG_SPI2_RXTX = 0x1, - HW_DMA_TRIG_UART_RXTX = 0x2, - HW_DMA_TRIG_UART2_RXTX = 0x3, - HW_DMA_TRIG_I2C_RXTX = 0x4, - HW_DMA_TRIG_I2C2_RXTX = 0x5, - HW_DMA_TRIG_USB_RXTX = 0x6, - HW_DMA_TRIG_I2S_LEFTRIGHT = 0x8, - HW_DMA_TRIG_PDM_LEFTRIGHT = 0x9, - HW_DMA_TRIG_FTDF_RXTX = 0xA, - HW_DMA_TRIG_ECC_RXTX = 0xB, - HW_DMA_TRIG_ADC = 0xC, - HW_DMA_TRIG_NONE = 0xF -} HW_DMA_TRIG; - -/** - * \brief DMA channel transfer callback - * - * This function is called by the DMA driver when the - * interrupt is fired. - * - * \param [in] user_data transfered data - * \param [in] len length of transfered data - * - */ -typedef void (*hw_dma_transfer_cb)(void *user_data, uint16_t len); - -/** - * \brief DMA parameters structure - * - */ -typedef struct { - HW_DMA_CHANNEL channel_number; /**< DMA Channel Number to be used */ - HW_DMA_BW bus_width; /**< Transfer Bus width: 8, 16 or 32 bits */ - HW_DMA_IRQ_STATE irq_enable; /**< Enable or disable IRQ generation */ - uint16 irq_nr_of_trans; /**< Number of transfers before IRQ generation - set to 0 to fire IRQ after transfer ends */ - HW_DMA_DREQ dreq_mode; /**< Start DMA immediately or triggered by peripheral */ - HW_DMA_AINC a_inc; /**< Increment of source address */ - HW_DMA_BINC b_inc; /**< Increment of destination address */ - HW_DMA_MODE circular; /**< Select normal or circular operation */ - HW_DMA_PRIO dma_prio; /**< Channel priority from 0 to 7 */ - HW_DMA_IDLE dma_idle; /**< Idle mode: blocking or interrupting */ - HW_DMA_INIT dma_init; /**< Copy mode: block copy or mem init */ - HW_DMA_TRIG dma_req_mux; /**< DMA trigger */ - uint32 src_address; /**< Source address */ - uint32 dest_address; /**< Destination address */ - uint16 length; /**< Number of DMA transfers */ - hw_dma_transfer_cb callback; /**< Function to call after irq_nr_of_trans transfers */ - void *user_data; /**< Data to pass to Callback */ -} DMA_setup; - -/* -* API FUNCTIONS DEFINITIONS -***************************************************************************************** -*/ - -/** - * \brief Initialize DMA Channel - * - * \param [in] channel_setup pointer to struct of type DMA_Setup - * - */ -void hw_dma_channel_initialization(DMA_setup *channel_setup); - -/** - * \brief Update DMA source address and length - * - * When DMA is configured for some peripheral, it could be enough to setup only source address - * and data length. Other parameters most likely do not change for same type of transmission - * for values that ware specified in \p hw_dma_channel_initialization(). - * This function should speed up DMA start time when only address and size changes from previous - * transmission. - * - * \param [in] channel DMA channel number to modify - * \param [in] addr new source address - * \param [in] length new data transfer length - * \param [in] cb function to call after transmission finishes - * - */ -void hw_dma_channel_update_source(HW_DMA_CHANNEL channel, void* addr, uint16_t length, - hw_dma_transfer_cb cb); - -/** - * \brief Update DMA destination address and length - * - * When DMA is configured for some peripheral, it could be enough to setup only destination address - * and data length. Other parameters most likely do not change for same type of transmission - * for values that ware specified in \p hw_dma_channel_initialization(). - * This function should speed up DMA start time when only address and size changes from previous - * transmission. - * - * \param [in] channel DMA channel number to modify - * \param [in] addr new source address - * \param [in] length new data transfer length - * \param [in] cb function to call after transmission finishes - * - */ -void hw_dma_channel_update_destination(HW_DMA_CHANNEL channel, void *addr, uint16_t length, - hw_dma_transfer_cb cb); - -/** - * \brief Update DMA interrupt trigger index - * - * DMA channel can trigger an interrupt after arbitrary transfer has finished. - * Usually interrupt is triggered after transmission finishes but for cyclic mode, - * where DMA never stops, it is convenient trigger interrupt at other times. - * This function allows to specify the number of transfers after which the interrupt is triggered. - * - * \param [in] channel DMA channel number to modify - * \param [in] int_ix Number of transfers until the interrupt is triggered - * - */ -void hw_dma_channel_update_int_ix(HW_DMA_CHANNEL channel, uint16_t int_ix); - -/** - * \brief Enable or disable a DMA channel - * - * \param [in] channel_number DMA Channel Number to start/stop - * \param [in] dma_on enable/disable DMA channel - * - */ -void hw_dma_channel_enable(HW_DMA_CHANNEL channel_number, HW_DMA_STATE dma_on); - -/** - * \brief Stop DMA channel if operation is in progress - * - * If no transfer is in progress nothing happens. - * If there is outstanding DMA transfer it will be stopped and - * callback will be called with count of data already transfered - * - * \param [in] channel_number DMA channel number to stop - * - */ -void hw_dma_channel_stop(HW_DMA_CHANNEL channel_number); - -/** - * \brief Read number of transmitted bytes so far - * - * Use this function to see how many bytes were transfered - * via DMA channel so far. This number can changed very soon. - * - * \param [in] channel_number DMA channel number - * - * \return number of bytes already transfered (when transfer is in progress), - * 0 - if transfer is already finished, - * undefined if called or not started channel - * - */ -uint16_t hw_dma_transfered_bytes(HW_DMA_CHANNEL channel_number); - -/** - * \brief Freeze DMA - * - */ -static inline void hw_dma_freeze(void) -{ - GPREG->SET_FREEZE_REG = REG_MSK(GPREG, SET_FREEZE_REG, FRZ_DMA); -} - -/** - * \brief Unfreeze DMA - * - */ -static inline void hw_dma_unfreeze(void) -{ - GPREG->RESET_FREEZE_REG = REG_MSK(GPREG, RESET_FREEZE_REG, FRZ_DMA); -} - -/** - * \brief Check if any DMA channel is active. - * - * \return true, if a channel is active else false. - */ -bool hw_dma_channel_active(void); - -#endif /* dg_configUSE_HW_DMA */ - -#endif /* HW_DMA_H_ */ - -/** - * \} - * \} - * \} - */ - diff --git a/third_party/dialog/DialogSDK/bsp/peripherals/include/hw_gpadc.h b/third_party/dialog/DialogSDK/bsp/peripherals/include/hw_gpadc.h deleted file mode 100644 index fd918e33b..000000000 --- a/third_party/dialog/DialogSDK/bsp/peripherals/include/hw_gpadc.h +++ /dev/null @@ -1,767 +0,0 @@ -/** - * \addtogroup BSP - * \{ - * \addtogroup DEVICES - * \{ - * \addtogroup GPADC - * \{ - * \brief General Purpose ADC - */ - -/** - ***************************************************************************************** - * - * @file hw_gpadc.h - * - * @brief Definition of API for the GPADC Low Level Driver. - * - * Copyright (c) 2016, Dialog Semiconductor - * All rights reserved. - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. Neither the name of the copyright holder nor the names of its contributors - * may be used to endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, - * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, - * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED - * OF THE POSSIBILITY OF SUCH DAMAGE. - * - * - ***************************************************************************************** - */ - -#ifndef HW_GPADC_H -#define HW_GPADC_H - -#if dg_configUSE_HW_GPADC - -#include -#include -#include - -extern int16_t hw_gpadc_differential_gain_error; -extern int16_t hw_gpadc_single_ended_gain_error; - -/** - * \brief ADC input mode - * - */ -typedef enum { - HW_GPADC_INPUT_MODE_DIFFERENTIAL = 0, /**< differential mode (default) */ - HW_GPADC_INPUT_MODE_SINGLE_ENDED = 1 /**< single ended mode */ -} HW_GPADC_INPUT_MODE; - -/** - * \brief ADC clock source - * - */ -typedef enum { - HW_GPADC_CLOCK_INTERNAL = 0, /**< internal high-speed clock (default) */ - HW_GPADC_CLOCK_DIGITAL = 1 /**< digital clock (16/96MHz) */ -} HW_GPADC_CLOCK; - -/** - * \brief ADC input - * - * \p GPADC_INPUT_SE_* values should be used only in single ended mode - * \p GPADC_INPUT_DIFF_* values should be used only in differential mode - * - */ -typedef enum { - HW_GPADC_INPUT_SE_P12 = 0, /**< GPIO 1.2 */ - HW_GPADC_INPUT_SE_P14 = 1, /**< GPIO 1.4 */ - HW_GPADC_INPUT_SE_P13 = 2, /**< GPIO 1.3 */ - HW_GPADC_INPUT_SE_P07 = 3, /**< GPIO 0.7 */ - HW_GPADC_INPUT_SE_AVS = 4, /**< analog ground level */ - HW_GPADC_INPUT_SE_VDD = 5, - HW_GPADC_INPUT_SE_VDCDC = 6, - HW_GPADC_INPUT_SE_V33 = 7, - HW_GPADC_INPUT_SE_VBAT = 9, /**< battery */ - HW_GPADC_INPUT_SE_TEMPSENS = 14, /**< temperature sensor */ - HW_GPADC_INPUT_SE_P06 = 16, /**< GPIO 0.6 */ - HW_GPADC_INPUT_SE_P10 = 17, /**< GPIO 1.0 */ - HW_GPADC_INPUT_SE_P15 = 18, /**< GPIO 1.5 */ - HW_GPADC_INPUT_SE_P24 = 19, /**< GPIO 2.4 */ - HW_GPADC_INPUT_DIFF_P12_P14 = 0, /**< GPIO 1.2 vs 1.4 */ - HW_GPADC_INPUT_DIFF_P13_P07 = 1, /**< GPIO 1.3 vs 0.7 */ -} HW_GPADC_INPUT; - -/** - * \brief ADC interrupt handler - * - */ -typedef void (*hw_gpadc_interrupt_cb)(void); - -/** - * \brief ADC configuration - * - */ -typedef struct { - HW_GPADC_CLOCK clock; /**< clock source */ - HW_GPADC_INPUT_MODE input_mode; /**< input mode */ - HW_GPADC_INPUT input; /**< ADC input */ - - uint8_t sample_time; /**< sample time */ - bool continous; /**< continous mode state */ - uint8_t interval; /**< interval between conversions in continous mode */ - - bool input_attenuator; /**< input attenuator state */ - bool chopping; /**< chopping state */ - uint8_t oversampling; /**< oversampling value */ -} gpadc_config; - -/** - * \brief Initialize ADC - * - * \p cfg can be NULL - no configuration is performed in such case. - * - * \param [in] cfg configuration - * - */ -void hw_gpadc_init(const gpadc_config *cfg); - -/** - * \brief Configure ADC - * - * Shortcut to call appropriate configuration function. If \p cfg is NULL, this function does - * nothing. - * - * \param [in] cfg configuration - * - */ -void hw_gpadc_configure(const gpadc_config *cfg); - -/** - * \brief Reset ADC to its default values without disabling the LDO. - * - */ -void hw_gpadc_reset(void); - -/** - * \brief Register interrupt handler - * - * Interrupt is enabled after calling this function. Application is responsible for clearing - * interrupt using hw_gpadc_clear_interrupt(). If no callback is specified interrupt is cleared by - * driver. - * - * \param [in] cb callback fired on interrupt - * - * \sa hw_gpadc_clear_interrupt - * - */ -void hw_gpadc_register_interrupt(hw_gpadc_interrupt_cb cb); - -/** - * \brief Unregister interrupt handler - * - * Interrupt is disabled after calling this function. - * - */ -void hw_gpadc_unregister_interrupt(void); - -/** - * \brief Clear interrupt - * - * Application should call this in interrupt handler to clear interrupt. - * - * \sa hw_gpadc_register_interrupt - * - */ -static inline void hw_gpadc_clear_interrupt(void) -{ - GPADC->GP_ADC_CLEAR_INT_REG = 1; -} - -/** - * \brief Enable ADC - * - * Sampling is started after calling this function, to start conversion application should call - * hw_gpadc_start(). - * - * \sa hw_gpadc_start - * - */ -static inline void hw_gpadc_enable(void) -{ - REG_SETF(GPADC, GP_ADC_CTRL_REG, GP_ADC_EN, 1); -} - -/** - * \brief Disable ADC - * - * Application should wait for conversion to be completed before disabling ADC. In case of - * continuous mode, application should disable continuous mode and then wait for conversion to be - * completed in order to have ADC in defined state. - * - * \sa hw_gpadc_in_progress - * \sa hw_gpadc_set_continuous - * - */ -static inline void hw_gpadc_disable(void) -{ - REG_SETF(GPADC, GP_ADC_CTRL_REG, GP_ADC_EN, 0); -} - -/** - * \brief Set the delay required to enable the ADC_LDO. - * - * param [in] LDO enable delay - * - */ -static inline void hw_gpadc_set_ldo_delay(uint32_t delay) -{ - REG_SETF(GPADC, GP_ADC_CTRL3_REG, GP_ADC_EN_DEL, delay); -} - -/** \brief Perform ADC calibration - * - * Calibration is performed. The input mode must be HW_GPADC_INPUT_SE_VDD (1.2V). - * LDO constant and dynamic currents may be on. The input mode must be Single Ended. The calibration - * is performed only once. - * - * \sa hw_gpadc_set_input_mode - * - */ -void hw_gpadc_calibrate(void); - -/** - * \brief Start conversion - * - * Application should not call this function while conversion is still in progress. - * - * \sa hw_gpadc_in_progress - * - */ -static inline void hw_gpadc_start(void) -{ - REG_SETF(GPADC, GP_ADC_CTRL_REG, GP_ADC_START, 1); -} - -/** - * \brief Check if conversion is in progress - * - * \return conversion state - * - */ -static inline bool hw_gpadc_in_progress(void) -{ - return REG_GETF(GPADC, GP_ADC_CTRL_REG, GP_ADC_START); -} - -/** - * \brief Set continuous mode - * - * With continuous mode enabled ADC will automatically restart conversion once completed. It's still - * required to start 1st conversion using hw_gpadc_start(). Interval between subsequent conversions - * can be adjusted using hw_gpadc_set_interval(). - * - * \param [in] enabled continuous mode state - * - * \sa hw_gpadc_start - * \sa hw_gpadc_set_interval - * - */ -static inline void hw_gpadc_set_continuous(bool enabled) -{ - REG_SETF(GPADC, GP_ADC_CTRL_REG, GP_ADC_CONT, !!enabled); -} - -/** - * \brief Get continuous mode state - * - * \return continuous mode state - * - */ -static inline bool hw_gpadc_get_continuous(void) -{ - return REG_GETF(GPADC, GP_ADC_CTRL_REG, GP_ADC_CONT); -} - -/** - * \brief Set input channel - * - * Application is responsible for using proper input symbols depending on whether single ended or - * differential mode is used. - * - * \param [in] input input channel - * - * \sa hw_gpadc_set_input_mode - * \sa GPADC_INPUT_MODE - * - */ -static inline void hw_gpadc_set_input(HW_GPADC_INPUT input) -{ - REG_SETF(GPADC, GP_ADC_CTRL_REG, GP_ADC_SEL, input); -} - -/** - * \brief Get current input channel - * - * \return input channel - * - */ -static inline HW_GPADC_INPUT hw_gpadc_get_input(void) -{ - return (HW_GPADC_INPUT) REG_GETF(GPADC, GP_ADC_CTRL_REG, GP_ADC_SEL); -} - -/** - * \brief Set input mode - * - * \param [in] mode input mode - * - */ -static inline void hw_gpadc_set_input_mode(HW_GPADC_INPUT_MODE mode) -{ - REG_SETF(GPADC, GP_ADC_CTRL_REG, GP_ADC_SE, mode); -} - -/** - * \brief Get current input mode - * - * return input mode - * - */ -static inline HW_GPADC_INPUT_MODE hw_gpadc_get_input_mode(void) -{ - return (HW_GPADC_INPUT_MODE) REG_GETF(GPADC, GP_ADC_CTRL_REG, GP_ADC_SE); -} - -/** - * \brief Set clock source - * - * \param [in] clock clock source - * - */ -static inline void hw_gpadc_set_clock(HW_GPADC_CLOCK clock) -{ - REG_SETF(GPADC, GP_ADC_CTRL_REG, GP_ADC_CLK_SEL, clock); -} - -/** - * \brief Get current clock source - * - * \return clock source - * - */ -static inline HW_GPADC_CLOCK hw_gpadc_get_clock(void) -{ - return (HW_GPADC_CLOCK) REG_GETF(GPADC, GP_ADC_CTRL_REG, GP_ADC_CLK_SEL); -} - -/** - * \brief Set oversampling - * - * With oversampling enabled multiple successive conversions will be executed and results are added - * together to increase effective number of bits in result. - * - * Number of samples taken is 2\p n_samples. Valid values for \p n_samples are 0-7 thus - * at most 128 samples can be taken. In this case 17bits of result are generated with the least - * significant bit being discarded. - * - * \param [in] n_samples number of samples to be taken - * - * \sa hw_gpadc_get_raw_value - * - */ -static inline void hw_gpadc_set_oversampling(uint8_t n_samples) -{ - REG_SETF(GPADC, GP_ADC_CTRL2_REG, GP_ADC_CONV_NRS, n_samples); -} - -/** - * \brief Get current oversampling - * - * \return number of samples to be taken - * - * \sa hw_gpadc_set_oversampling - * - */ -static inline uint8_t hw_gpadc_get_oversampling(void) -{ - return REG_GETF(GPADC, GP_ADC_CTRL2_REG, GP_ADC_CONV_NRS); -} - -/** - * \brief Set sample time - * - * Sample time is \p mult x 32 clock cycles or 1 clock cycle when \p mult is 0. Valid values are - * 0-15. - * - * \param [in] mult multiplier - * - */ -static inline void hw_gpadc_set_sample_time(uint8_t mult) -{ - REG_SETF(GPADC, GP_ADC_CTRL2_REG, GP_ADC_SMPL_TIME, mult); -} - -/** - * \brief Get current sample time - * - * \return multiplier - * - * \sa hw_gpadc_set_sample_time - * - */ -static inline uint8_t hw_gpadc_get_sample_time(void) -{ - return REG_GETF(GPADC, GP_ADC_CTRL2_REG, GP_ADC_SMPL_TIME); -} - -/** - * \brief Set state of input attenuator - * - * Enabling internal attenuator scales input voltage by factor of 3 thus increasing effective input - * scale from 0-1.2V to 0-3.6V in single ended mode or from -1.2-1.2V to -3.6-3.6V in differential - * mode. - * - * \param [in] enabled attenuator state - * - */ -static inline void hw_gpadc_set_input_attenuator_state(bool enabled) -{ - REG_SETF(GPADC, GP_ADC_CTRL2_REG, GP_ADC_ATTN3X, !!enabled); -} - -/** - * \brief Get current state of input attenuator - * - * \return attenuator state - * - */ -static inline bool hw_gpadc_get_input_attenuator_state(void) -{ - return REG_GETF(GPADC, GP_ADC_CTRL2_REG, GP_ADC_ATTN3X); -} - -/** - * \brief Set input mute state - * - * Once enabled, samples are taken at mid-scale to determine internal offset and/or notice of the - * ADC with regards to VDD_REF. - * - * \param [in] enabled mute state - * - * \sa hw_gpadc_calibrate - * - */ -static inline void hw_gpadc_set_mute(bool enabled) -{ - REG_SETF(GPADC, GP_ADC_CTRL_REG, GP_ADC_MUTE, !!enabled); -} - -/** - * \brief Get current input mute state - * - * \return mute state - * - * \sa hw_gpadc_set_mute - * - */ -static inline bool hw_gpadc_get_mute(void) -{ - return REG_GETF(GPADC, GP_ADC_CTRL_REG, GP_ADC_MUTE); -} - -/** - * \brief Set input and output sign change - * - * Once enabled, sign of ADC input and output is changed. - * - * \param [in] enabled sign change state - * - */ -static inline void hw_gpadc_set_sign_change(bool enabled) -{ - REG_SETF(GPADC, GP_ADC_CTRL_REG, GP_ADC_SIGN, !!enabled); -} - -/** - * \brief Set input and output sign change - * - * \return sign change state - * - */ -static inline bool hw_gpadc_get_sign_change(void) -{ - return REG_GETF(GPADC, GP_ADC_CTRL_REG, GP_ADC_SIGN); -} - -/** - * \brief Set chopping state - * - * Once enabled, two samples with opposite polarity are taken to cancel offset. - * - * \param [in] enabled chopping state - * - */ -static inline void hw_gpadc_set_chopping(bool enabled) -{ - REG_SETF(GPADC, GP_ADC_CTRL_REG, GP_ADC_CHOP, !!enabled); -} - -/** - * \brief Get current chopping state - * - * \return chopping state - * - */ -static inline bool hw_gpadc_get_chopping(void) -{ - return REG_GETF(GPADC, GP_ADC_CTRL_REG, GP_ADC_CHOP); -} - -/** - * \brief Set state of constant 20uA load current on ADC LDO output - * - * Constant 20uA load current on LDO output can be enabled so that the current will not drop to 0. - * - * \param [in] enabled load current state - * - */ -static inline void hw_gpadc_set_ldo_constant_current(bool enabled) -{ - REG_SETF(GPADC, GP_ADC_CTRL2_REG, GP_ADC_I20U, !!enabled); -} - -/** - * \brief Get current state of constant 20uA load current on ADC LDO output - * - * \return load current current state - * - * \sa hw_gpadc_set_ldo_constant_current - * - */ -static inline bool hw_gpadc_get_ldo_constant_current(void) -{ - return REG_GETF(GPADC, GP_ADC_CTRL2_REG, GP_ADC_I20U); -} - -/** - * \brief Set state of dynamic 10uA load current on ADC LDO output - * - * 10uA load current on LDO output can be enabled during sample phase so that the load current - * during sampling and conversion phase becomes approximately the same. - * - * \param [in] enabled load current state - * - */ -static inline void hw_gpadc_set_ldo_dynamic_current(bool enabled) -{ - REG_SETF(GPADC, GP_ADC_CTRL2_REG, GP_ADC_IDYN, !!enabled); -} - -/** - * \brief Get current state of dynamic 10uA load current on ADC LDO output - * - * \return load current current state - * - * \sa hw_gpadc_set_ldo_dynamic_current - * - */ -static inline bool hw_gpadc_get_ldo_dynamic_current(void) -{ - return REG_GETF(GPADC, GP_ADC_CTRL2_REG, GP_ADC_IDYN); -} - -/** - * \brief Set interval between conversions in continuous mode - * - * Interval time is \p mult x 1.024ms. Valid values are 0-255. - * - * \param [in] mult multiplier - * - * \sa hw_gpadc_set_continuous - * - */ -static inline void hw_gpadc_set_interval(uint8_t mult) -{ - REG_SETF(GPADC, GP_ADC_CTRL3_REG, GP_ADC_INTERVAL, mult); -} - -/** - * \brief Get current interval between conversions in continuous mode - * - * \return multiplier - * - * \sa hw_gpadc_set_interval - * - */ -static inline uint8_t hw_gpadc_get_interval(void) -{ - return REG_GETF(GPADC, GP_ADC_CTRL3_REG, GP_ADC_INTERVAL); -} - -/** - * \brief Set offset adjustment for positive ADC array - * - * \param [in] offset offset value - * - * \sa hw_gpadc_calibrate - * \sa hw_gpadc_set_negative_offset - * - */ -static inline void hw_gpadc_set_offset_positive(uint16_t offset) -{ - GPADC->GP_ADC_OFFP_REG = offset & REG_MSK(GPADC, GP_ADC_OFFP_REG, GP_ADC_OFFP); -} - -/** - * \brief Get current offset adjustment for positive ADC array - * - * \return offset value - * - */ -static inline uint16_t hw_gpadc_get_offset_positive(void) -{ - return GPADC->GP_ADC_OFFP_REG & REG_MSK(GPADC, GP_ADC_OFFP_REG, GP_ADC_OFFP); -} - -/** - * \brief Set offset adjustment for negative ADC array - * - * \param [in] offset offset value - * - * \sa hw_gpadc_calibrate - * \sa hw_gpadc_set_positive_offset - * - */ -static inline void hw_gpadc_set_offset_negative(uint16_t offset) -{ - GPADC->GP_ADC_OFFN_REG = offset & REG_MSK(GPADC, GP_ADC_OFFN_REG, GP_ADC_OFFN); -} - - -/** - * \brief Get current offset adjustment for negative ADC array - * - * \return offset value - * - */ -static inline uint16_t hw_gpadc_get_offset_negative(void) -{ - return GPADC->GP_ADC_OFFN_REG & REG_MSK(GPADC, GP_ADC_OFFN_REG, GP_ADC_OFFN); -} - -/** - * \brief Store Single Ended ADC Gain Error - * - * \param [in] single ADC Single Ended Gain Error - * - */ -static inline void hw_gpadc_store_se_gain_error(int16_t single) -{ - hw_gpadc_single_ended_gain_error = single; -} - -/** - * \brief Store Differential ADC Gain Error - * - * \param [in] diff ADC Differential Gain Error - * - */ -static inline void hw_gpadc_store_diff_gain_error(int16_t diff) -{ - hw_gpadc_differential_gain_error = diff; -} - -/** - * \brief Check the availability of ADC Gain Error - * - * \return ADC Gain Error availability - * - */ -static inline bool hw_gpadc_pre_check_for_gain_error(void) -{ - if (dg_configUSE_ADC_GAIN_ERROR_CORRECTION == 1) { - return (hw_gpadc_single_ended_gain_error && hw_gpadc_differential_gain_error); - } - - return false; -} - -/** - * \brief Get raw conversion result value - * - * Upper 10 bits are always valid, lower 6 bits are only valid in case oversampling is enabled. - * - * \return conversion result value - * - * \sa hw_gpadc_start - * \sa hw_gpadc_set_oversampling - * \sa hw_gpadc_get_value - * - */ -uint16_t hw_gpadc_get_raw_value(void); - -/** - * \brief Get conversion result value - * - * Invalid bits are discarded from result, i.e. oversampling is taken into account when calculating - * value. - * - * \return conversion result value - * - * \sa hw_gpadc_set_oversampling - * \sa hw_gpadc_get_raw_value - * - */ -static inline uint16_t hw_gpadc_get_value(void) -{ - return hw_gpadc_get_raw_value() >> (6 - MIN(6, hw_gpadc_get_oversampling())); -} - -/** - * \brief Get conversion result value without gain compensation and over sampling. - * - * \return conversion result value - * - */ -static inline uint16_t hw_gpadc_get_value_without_gain(void) -{ - uint16_t adc_raw_res = GPADC->GP_ADC_RESULT_REG; - return adc_raw_res; -} - -/** - * \brief Start a measurement and wait for the result. - * - * \sa hw_gpadc_start - * \sa hw_gpadc_in_progress - * \sa hw_gpadc_clear_interrupt - * - */ -void hw_gpadc_adc_measure(void); - -/** - * \brief Take measurements using the ADC and evaluate the results. - * - * \sa hw_gpadc_adc_measure - * \sa hw_gpadc_get_raw_value - * - */ -void hw_gpadc_test_measurements(void); - -#endif /* dg_configUSE_HW_GPADC */ - -#endif /* HW_GPADC_H_ */ - -/** - * \} - * \} - * \} - */ diff --git a/third_party/dialog/DialogSDK/bsp/peripherals/include/hw_gpio.h b/third_party/dialog/DialogSDK/bsp/peripherals/include/hw_gpio.h deleted file mode 100644 index 862193ea3..000000000 --- a/third_party/dialog/DialogSDK/bsp/peripherals/include/hw_gpio.h +++ /dev/null @@ -1,495 +0,0 @@ -/** - * \addtogroup BSP - * \{ - * \addtogroup DEVICES - * \{ - * \addtogroup GPIO - * \{ - * \brief GPIO Control - */ - -/** - ***************************************************************************************** - * - * @file hw_gpio.h - * - * @brief Definition of API for the GPIO Low Level Driver. - * - * Copyright (c) 2016, Dialog Semiconductor - * All rights reserved. - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. Neither the name of the copyright holder nor the names of its contributors - * may be used to endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, - * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, - * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED - * OF THE POSSIBILITY OF SUCH DAMAGE. - * - * - ***************************************************************************************** - */ - -#ifndef HW_GPIO_H_ -#define HW_GPIO_H_ - -#if dg_configUSE_HW_GPIO - -#include -#include -#include - -/* GPIO layout definitions */ - -/** Number of GPIO ports available */ -#define HW_GPIO_NUM_PORTS (5) -/** Number of GPIO pins available (cumulative) */ -#define HW_GPIO_NUM_PINS (HW_GPIO_PORT_0_NUM_PINS + HW_GPIO_PORT_1_NUM_PINS + \ - HW_GPIO_PORT_2_NUM_PINS + HW_GPIO_PORT_3_NUM_PINS + \ - HW_GPIO_PORT_4_NUM_PINS) -/** Number of GPIO pins available in port 0 */ -#define HW_GPIO_PORT_0_NUM_PINS (8) -/** Number of GPIO pins available in port 1 */ -#define HW_GPIO_PORT_1_NUM_PINS (8) -/** Number of GPIO pins available in port 2 */ -#define HW_GPIO_PORT_2_NUM_PINS (5) -/** Number of GPIO pins available in port 3 */ -#define HW_GPIO_PORT_3_NUM_PINS (8) -/** Number of GPIO pins available in port 4 */ -#define HW_GPIO_PORT_4_NUM_PINS (8) -/** Number of pins in each GPIO port */ -extern const uint8_t hw_gpio_port_num_pins[HW_GPIO_NUM_PORTS]; - - -/** - * \brief GPIO input/output mode - * - */ -typedef enum { - HW_GPIO_MODE_INPUT = 0, /**< GPIO as an input */ - HW_GPIO_MODE_INPUT_PULLUP = 0x100, /**< GPIO as an input with pull-up */ - HW_GPIO_MODE_INPUT_PULLDOWN = 0x200, /**< GPIO as an input with pull-down */ - HW_GPIO_MODE_OUTPUT = 0x300, /**< GPIO as an (implicitly push-pull) output */ - HW_GPIO_MODE_OUTPUT_PUSH_PULL = 0x300, /**< GPIO as an (explicitly push-pull) output */ - HW_GPIO_MODE_OUTPUT_OPEN_DRAIN = 0x700, /**< GPIO as an open-drain output */ -} HW_GPIO_MODE; - -/** - * \brief GPIO power source - * - */ -typedef enum { - HW_GPIO_POWER_V33 = 0, /**< V33 (3.3 V) power rail */ - HW_GPIO_POWER_VDD1V8P = 1, /**< VDD1V8P (1.8 V) power rail */ -} HW_GPIO_POWER; - -/** - * \brief GPIO port number - * - */ -typedef enum { - HW_GPIO_PORT_0 = 0, /**< GPIO Port 0 */ - HW_GPIO_PORT_1 = 1, /**< GPIO Port 1 */ - HW_GPIO_PORT_2 = 2, /**< GPIO Port 2 */ - HW_GPIO_PORT_3 = 3, /**< GPIO Port 3 */ - HW_GPIO_PORT_4 = 4 /**< GPIO Port 4 */ -} HW_GPIO_PORT; - -/** - * \brief GPIO pin number - * - */ -typedef enum { - HW_GPIO_PIN_0 = 0, /**< GPIO Pin 0 */ - HW_GPIO_PIN_1 = 1, /**< GPIO Pin 1 */ - HW_GPIO_PIN_2 = 2, /**< GPIO Pin 2 */ - HW_GPIO_PIN_3 = 3, /**< GPIO Pin 3 */ - HW_GPIO_PIN_4 = 4, /**< GPIO Pin 4 */ - HW_GPIO_PIN_5 = 5, /**< GPIO Pin 5 */ - HW_GPIO_PIN_6 = 6, /**< GPIO Pin 6 */ - HW_GPIO_PIN_7 = 7, /**< GPIO Pin 7 */ -} HW_GPIO_PIN; - -/** - * \brief GPIO function - * - */ -typedef enum { - HW_GPIO_FUNC_GPIO = 0, /**< GPIO */ - HW_GPIO_FUNC_UART_RX = 1, /**< GPIO as UART RX */ - HW_GPIO_FUNC_UART_TX = 2, /**< GPIO as UART TX */ - HW_GPIO_FUNC_UART_IRDA_RX = 3, /**< GPIO as UART IRDA RX */ - HW_GPIO_FUNC_UART_IRDA_TX = 4, /**< GPIO as UART IRDA TX */ - HW_GPIO_FUNC_UART2_RX = 5, /**< GPIO as UART2 RX */ - HW_GPIO_FUNC_UART2_TX = 6, /**< GPIO as UART2 TX */ - HW_GPIO_FUNC_UART2_IRDA_RX = 7, /**< GPIO as UART2 IRDA RX */ - HW_GPIO_FUNC_UART2_IRDA_TX = 8, /**< GPIO as UART2 IRDA TX */ - HW_GPIO_FUNC_UART2_CTSN = 9, /**< GPIO as UART2 CTSN */ - HW_GPIO_FUNC_UART2_RTSN = 10, /**< GPIO as UART2 RTSN */ - HW_GPIO_FUNC_SPI_DI = 11, /**< GPIO as SPI DI */ - HW_GPIO_FUNC_SPI_DO = 12, /**< GPIO as SPI DO */ - HW_GPIO_FUNC_SPI_CLK = 13, /**< GPIO as SPI CLK */ - HW_GPIO_FUNC_SPI_EN = 14, /**< GPIO as SPI EN */ - HW_GPIO_FUNC_SPI2_DI = 15, /**< GPIO as SPI2 DI */ - HW_GPIO_FUNC_SPI2_DO = 16, /**< GPIO as SPI2 DO */ - HW_GPIO_FUNC_SPI2_CLK = 17, /**< GPIO as SPI2 CLK */ - HW_GPIO_FUNC_SPI2_EN = 18, /**< GPIO as SPI2 EN */ - HW_GPIO_FUNC_I2C_SCL = 19, /**< GPIO as I2C SCL */ - HW_GPIO_FUNC_I2C_SDA = 20, /**< GPIO as I2C SDA */ - HW_GPIO_FUNC_I2C2_SCL = 21, /**< GPIO as I2C2 SCL */ - HW_GPIO_FUNC_I2C2_SDA = 22, /**< GPIO as I2C2 SDA */ - HW_GPIO_FUNC_PWM0 = 23, /**< GPIO as PWM0 */ - HW_GPIO_FUNC_PWM1 = 24, /**< GPIO as PWM1 */ - HW_GPIO_FUNC_PWM2 = 25, /**< GPIO as PWM2 */ - HW_GPIO_FUNC_PWM3 = 26, /**< GPIO as PWM3 */ - HW_GPIO_FUNC_PWM4 = 27, /**< GPIO as PWM4 */ - HW_GPIO_FUNC_BLE_DIAG = 28, /**< GPIO as BLE DIAG */ - HW_GPIO_FUNC_FTDF_DIAG = 29, /**< GPIO as FTDF DIAG */ - HW_GPIO_FUNC_PCM_DI = 30, /**< GPIO as PCM DI */ - HW_GPIO_FUNC_PCM_DO = 31, /**< GPIO as PCM DO */ - HW_GPIO_FUNC_PCM_FSC = 32, /**< GPIO as PCM FSC */ - HW_GPIO_FUNC_PCM_CLK = 33, /**< GPIO as PCM CLK */ - HW_GPIO_FUNC_PDM_DI = 34, /**< GPIO as PDM DI */ - HW_GPIO_FUNC_PDM_DO = 35, /**< GPIO as PDM DO */ - HW_GPIO_FUNC_PDM_CLK = 36, /**< GPIO as PDM CLK */ - HW_GPIO_FUNC_USB_SOF = 37, /**< GPIO as USB SOF */ - HW_GPIO_FUNC_ADC = 38, /**< GPIO as ADC */ - HW_GPIO_FUNC_USB = 38, /**< GPIO as USB */ - HW_GPIO_FUNC_QSPI = 38, /**< GPIO as QSPI */ - HW_GPIO_FUNC_XTAL32 = 38, /**< GPIO as XTAL32 */ - HW_GPIO_FUNC_QUADEC_XA = 39, /**< GPIO as QUADEC XA */ - HW_GPIO_FUNC_QUADEC_XB = 40, /**< GPIO as QUADEC XB */ - HW_GPIO_FUNC_QUADEC_YA = 41, /**< GPIO as QUADEC YA */ - HW_GPIO_FUNC_QUADEC_YB = 42, /**< GPIO as QUADEC YB */ - HW_GPIO_FUNC_QUADEC_ZA = 43, /**< GPIO as QUADEC ZA */ - HW_GPIO_FUNC_QUADEC_ZB = 44, /**< GPIO as QUADEC ZB */ - HW_GPIO_FUNC_IR_OUT = 45, /**< GPIO as IR OUT */ - HW_GPIO_FUNC_BREATH = 46, /**< GPIO as BREATH */ - HW_GPIO_FUNC_KB_ROW = 47, /**< GPIO as KB ROW */ - HW_GPIO_FUNC_COEX_EXT_ACT0 = 48, /**< GPIO as COEX EXT ACT0 */ - HW_GPIO_FUNC_COEX_EXT_ACT1 = 49, /**< GPIO as COEX EXT ACT1 */ - HW_GPIO_FUNC_COEX_SMART_ACT = 50, /**< GPIO as COEX SMART ACT */ - HW_GPIO_FUNC_COEX_SMART_PRI = 51, /**< GPIO as COEX SMART PRI */ - HW_GPIO_FUNC_CLOCK = 52, /**< GPIO as CLOCK */ - HW_GPIO_FUNC_ONESHOT = 53, /**< GPIO as ONESHOT */ - HW_GPIO_FUNC_PWM5 = 54, /**< GPIO as PWM5 */ - HW_GPIO_FUNC_PORT0_DCF = 55, /**< GPIO as PORT0 DCF */ - HW_GPIO_FUNC_PORT1_DCF = 56, /**< GPIO as PORT1 DCF */ - HW_GPIO_FUNC_PORT2_DCF = 57, /**< GPIO as PORT2 DCF */ - HW_GPIO_FUNC_PORT3_DCF = 58, /**< GPIO as PORT3 DCF */ - HW_GPIO_FUNC_PORT4_DCF = 59, /**< GPIO as PORT4 DCF */ - HW_GPIO_FUNC_RF_ANT_TRIM0 = 60, /**< GPIO as RF ANT TRIM0 */ - HW_GPIO_FUNC_RF_ANT_TRIM1 = 61, /**< GPIO as RF ANT TRIM1 */ - HW_GPIO_FUNC_RF_ANT_TRIM2 = 62 /**< GPIO as RF ANT TRIM2 */ -} HW_GPIO_FUNC; - -/** - * \brief GPIO pin configuration - * - * It's recommended to use \p HW_GPIO_PINCONFIG and \p HW_GPIO_PINCONFIG_RESERVE to set pin entries. - * Each configuration must be terminated using \p HW_GPIO_PINCONFIG_END macro. - * - */ -typedef struct { - uint8_t pin; /**< pin name, high-nibble is port number and low-nibble is pin */ - HW_GPIO_MODE mode; /**< pin mode */ - HW_GPIO_FUNC func; /**< pin function */ - bool high; /**< initial pin state, true for high and false for low */ - bool reserve; /*<< true if pin should be also reserved */ -} __attribute__((packed)) gpio_config; - -/** - * \brief GPIO pin configuration for \p gpio_config - * - * \p xport and \p xpin are specified as symbols from \p HW_GPIO_PORT and \p HW_GPIO_PIN enums - * respectively or more conveniently as plain numeric values. - * \p xmode and \p xfunc have the same values as defined in \p HW_GPIO_MODE and \p HW_GPIO_FUNC enums - * respectively, except they have prefix stripped. - * - * \param [in] xport port number - * \param [in] xpin pin number - * \param [in] xmode pin mode - * \param [in] xfunc pin function - * \param [in] xhigh true for high state, false otherwise - * - */ -#define HW_GPIO_PINCONFIG(xport, xpin, xmode, xfunc, xhigh) \ - { \ - .pin = (xport << 4) | (xpin & 0x0F), \ - .mode = HW_GPIO_MODE_ ## xmode, \ - .func = HW_GPIO_FUNC_ ## xfunc, \ - .high = xhigh, \ - .reserve = false, \ - } - -/** - * \brief GPIO pin configuration and reservation for \p gpio_config - * - * This macro is virtually identical to \p HW_GPIO_PINCONFIG, except it also reserves pin. - * - * \param [in] xport port number - * \param [in] xpin pin number - * \param [in] xmode pin mode - * \param [in] xfunc pin function - * \param [in] xhigh true for high state, false otherwise - * - * \sa HW_GPIO_PINCONFIG - * - */ -#define HW_GPIO_PINCONFIG_RESERVE(xport, xpin, xmode, xfunc, xhigh) \ - { \ - .pin = (xport << 4) | (xpin & 0x0F), \ - .mode = HW_GPIO_MODE_ ## xmode, \ - .func = HW_GPIO_FUNC_ ## xfunc, \ - .high = xhigh, \ - .reserve = true, \ - } - -/** - * \brief Macro to properly terminate array of \p gpio_config definition - * - */ -#define HW_GPIO_PINCONFIG_END \ - { \ - .pin = 0xFF, \ - } - -/** - * \brief GPIO configuration - * - * This is a shortcut to configure multiple GPIOs in one call. - * \p cfg is an array of GPIO pins configuration, it should be terminated by dummy element with - * \p pin member set to 0xFF (macro \p HW_GPIO_PINCONFIG can be used for this purpose). - * - * \param [in] cfg GPIO pins configuration - * - * \sa hw_gpio_configure_pin - * \sa hw_gpio_set_pin_function - * - */ -void hw_gpio_configure(const gpio_config cfg[]); - -/** - * \brief Reserve GPIO pin - * - * Reserve pin for exclusive usage. - * This macro can be used in application peripheral_setup function to detect - * usage of same GPIO pin by different applications. - * - * \param [in] port GPIO port number - * \param [in] pin GPIO pin number - * - * \return true if pin was successfully reserved and setup, false if pin was already reserved - * - */ -bool hw_gpio_reserve_pin(HW_GPIO_PORT port, HW_GPIO_PIN pin); - -/** - * \brief Reserve GPIO pin and set pin function - * - * Reserve pin and set up it function. If pin was already reserved do nothing. - * - * \param [in] port GPIO port number - * \param [in] pin GPIO pin number - * \param [in] mode GPIO access mode - * \param [in] function GPIO function - * \param [in] high in case of PID_GPIO and OUTPUT value to set on pin - * - * \return true if pin was successfully reserved and setup, false if pin was already reserved - * - */ -bool hw_gpio_reserve_and_configure_pin(HW_GPIO_PORT port, HW_GPIO_PIN pin, HW_GPIO_MODE mode, - HW_GPIO_FUNC function, bool high); - -/** - * \brief Unreserve GPIO pin - * - * Free reserved pin. If pin was not reserved do nothing. - * Configuration of pin does not change just reservation. - * - * \note If pin was reserved using RESERVE_GPIO it will also be unreserved. - * If RESERVE_GPIO was not enabled by compile time flags call to this function - * may cause unexpected result. - * - * \param [in] port GPIO port number - * \param [in] pin GPIO pin number - * - * \sa hw_gpio_reserve_and_configure_pin - * \sa hw_gpio_reserve_pin - * \sa RESERVE_GPIO - * - */ -void hw_gpio_unreserve_pin(HW_GPIO_PORT port, HW_GPIO_PIN pin); - -#if (DEBUG_GPIO_ALLOC_MONITOR_ENABLED == 1) -/** - * \brief Reserve GPIO pin - * - * Reserve pin for exclusive usage. If pin is already allocated trigger breakpoint. - * This macro should be used in application peripheral_setup function to detect - * usage of same GPIO pin by different applications. - * - * If runtime GPIO reservation is needed, use hw_gpio_reserve_pin, - * hw_gpio_reserve_and_configure_pin and hw_gpio_unreserve_pin instead. - * - * \param [in] name parameter ignored, used for debug only - * \param [in] port GPIO port number - * \param [in] pin GPIO pin number - * \param [in] func parameter ignored (for compatibility) - * - * \sa hw_gpio_reserve_pin - * \sa hw_gpio_reserve_and_configure_pin - * \sa hw_gpio_unreserve_pin instead - * - */ -#define RESERVE_GPIO(name, port, pin, func) \ - do { \ - if (!hw_gpio_reserve_pin((port), (pin))) { \ - /* If debugger stops at this line, there is configuration problem */ \ - /* pin is used without being reserved first */ \ - __BKPT(0); /* this pin has not been previously reserved! */ \ - } \ - } while (0) - -#else - -#define RESERVE_GPIO( name, port, pin, func ) \ - do { \ - \ - } while (0) - -#endif // (DEBUG_GPIO_ALLOC_MONITOR_ENABLED == 1) - -/** - * \brief Set the pin type and mode - * - * \param [in] port GPIO port - * \param [in] pin GPIO pin - * \param [in] mode GPIO pin mode - * \param [in] function GPIO pin usage - * - */ -void hw_gpio_set_pin_function(HW_GPIO_PORT port, HW_GPIO_PIN pin, HW_GPIO_MODE mode, - HW_GPIO_FUNC function); - -/** - * \brief Get the pin type and mode - * - * \param [in] port GPIO port - * \param [in] pin GPIO pin - * \param [out] mode GPIO pin mode - * \param [out] function GPIO pin usage - * - */ -void hw_gpio_get_pin_function(HW_GPIO_PORT port, HW_GPIO_PIN pin, HW_GPIO_MODE* mode, - HW_GPIO_FUNC* function); - -/** - * \brief Combined function to set the state and the type and mode of the GPIO pin - * - * \param [in] port GPIO port - * \param [in] pin GPIO pin - * \param [in] mode GPIO pin mode - * \param [in] function GPIO pin usage - * \param [in] high set to TRUE to set the pin into high else low - * - */ -void hw_gpio_configure_pin(HW_GPIO_PORT port, HW_GPIO_PIN pin, HW_GPIO_MODE mode, - HW_GPIO_FUNC function, const bool high); - -/** - * \brief Configure power source for pin output - * - * \param [in] port GPIO port - * \param [in] pin GPIO pin - * \param [in] power GPIO power source - * - */ -void hw_gpio_configure_pin_power(HW_GPIO_PORT port, HW_GPIO_PIN pin, HW_GPIO_POWER power); - -/** - * \brief Set a GPIO in high state - * - * The GPIO should have been previously configured as an output! - * - * \param [in] port GPIO port - * \param [in] pin GPIO pin - * - */ -void hw_gpio_set_active(HW_GPIO_PORT port, HW_GPIO_PIN pin); - -/** - * \brief Set a GPIO in low state - * - * The GPIO should have been previously configured as an output! - * - * \param [in] port GPIO port - * \param [in] pin GPIO pin - * - */ -void hw_gpio_set_inactive(HW_GPIO_PORT port, HW_GPIO_PIN pin); - -/** - * \brief Get the GPIO status - * - * The GPIO should have been previously configured as input! - * - * \param [in] port GPIO port - * \param [in] pin GPIO pin - * - * \return true if the pin is high, false if low - * - */ -bool hw_gpio_get_pin_status(HW_GPIO_PORT port, HW_GPIO_PIN pin); - -/** - * \brief Toggle GPIO pin state - * - * \param [in] port GPIO port - * \param [in] pin GPIO pin - * - */ -void hw_gpio_toggle(HW_GPIO_PORT port, HW_GPIO_PIN pin); - -/** - * \brief Find pins with specific function - * - * Function searches for pins configured for specific function. - * If buf is not NULL and buf_size is greater than 0 pins are stored in buf - * high-nibble is port number and low-nibble is pin. - * If number of pins found is greater then buf_size only buf_size entries are filled, though - * the returned number of found pins is correct. - * - * \param [in] func function to lookup - * \param [out] buf buffer for port-pin pairs that are configured for specific function - * \param [in] buf_size size of buf - * - * \return number of pins with specific function put in buf - * 0 - no pin is configured for this function - * - */ -int hw_gpio_get_pins_with_function(HW_GPIO_FUNC func, uint8_t *buf, int buf_size); - - -#endif /* dg_configUSE_HW_GPIO */ - -#endif /* HW_GPIO_H_ */ - -/** - * \} - * \} - * \} - */ diff --git a/third_party/dialog/DialogSDK/bsp/peripherals/include/hw_hard_fault.h b/third_party/dialog/DialogSDK/bsp/peripherals/include/hw_hard_fault.h deleted file mode 100644 index b233fad73..000000000 --- a/third_party/dialog/DialogSDK/bsp/peripherals/include/hw_hard_fault.h +++ /dev/null @@ -1,72 +0,0 @@ -/** - * \addtogroup BSP - * \{ - * \addtogroup SYSTEM - * \{ - * \addtogroup Exception_Handlers - * \{ - * \brief Generic Exception Handlers - */ - -/** - ***************************************************************************************** - * - * @file hw_hard_fault.h - * - * @brief Hard-Fault Handler include file. - * - * Copyright (c) 2016, Dialog Semiconductor - * All rights reserved. - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. Neither the name of the copyright holder nor the names of its contributors - * may be used to endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, - * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, - * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED - * OF THE POSSIBILITY OF SUCH DAMAGE. - * - * - ***************************************************************************************** - */ - -#ifndef HW_HARD_FAULT_H_ -#define HW_HARD_FAULT_H_ - - -#include -#include -#include - -#define HARDFAULT_MAGIC_NUMBER 0xBADC0FFE - -/** - * \brief Holds the stack contents when a hard-fault occurs. - * - * \details The stack contents are copied at this variable when a hard-fault occurs. The first - * position is marked with a special "flag" (0xBADC0FFE) to indicate that the data that - * follow are valid. - */ -extern uint32_t hardfault_event_data[9]; - -#endif /* HW_HARD_FAULT_H_ */ - - -/** - * \} - * \} - * \} - */ diff --git a/third_party/dialog/DialogSDK/bsp/peripherals/include/hw_led.h b/third_party/dialog/DialogSDK/bsp/peripherals/include/hw_led.h deleted file mode 100644 index 1f4c484be..000000000 --- a/third_party/dialog/DialogSDK/bsp/peripherals/include/hw_led.h +++ /dev/null @@ -1,152 +0,0 @@ -/** - * \addtogroup BSP - * \{ - * \addtogroup DEVICES - * \{ - * \addtogroup LED - * \{ - * \brief LED Controller - */ - -/** - ***************************************************************************************** - * - * @file hw_led.h - * - * @brief Definition of API for the LED Low Level Driver. - * - * Copyright (c) 2016, Dialog Semiconductor - * All rights reserved. - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. Neither the name of the copyright holder nor the names of its contributors - * may be used to endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, - * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, - * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED - * OF THE POSSIBILITY OF SUCH DAMAGE. - * - * - ***************************************************************************************** - */ - -#ifndef HW_LED_H_ -#define HW_LED_H_ - -#include - -/** - * \brief Source for LED1 - */ -typedef enum { - HW_LED_SRC1_PWM2 = 0, /**< LED1 controlled by PWM2 */ - HW_LED_SRC1_BREATH = 1 /**< LED1 controlled by Breath Timer */ -} HW_LED_SRC1; - -/** - * \brief Source for LED2 - */ -typedef enum { - HW_LED_SRC2_PWM3 = 0, /**< LED2 controlled by PWM3 */ - HW_LED_SRC2_BREATH = 1 /**< LED2 controlled by Breath Timer */ -} HW_LED_SRC2; - -/** - * \brief Source for LED3 - */ -typedef enum { - HW_LED_SRC3_PWM4 = 0, /**< LED3 controlled by PWM4 */ - HW_LED_SRC3_BREATH = 1 /**< LED3 controlled by Breath Timer */ -} HW_LED_SRC3; - - -/** - * \brief Set the source that controls LED1 - * - * \param [in] src the source that controls LED1 - * - * \sa HW_LED_SRC1 - */ -__STATIC_INLINE void hw_led_set_led1_src(HW_LED_SRC1 src) -{ - REG_SETF(GPREG, LED_CONTROL_REG, LED1_SRC_SEL, src); -} - -/** - * \brief Set the source that controls LED2 - * - * \param [in] src the source that controls LED2 - * - * \sa HW_LED_SRC2 - */ -__STATIC_INLINE void hw_led_set_led2_src(HW_LED_SRC2 src) -{ - REG_SETF(GPREG, LED_CONTROL_REG, LED2_SRC_SEL, src); -} - -/** - * \brief Set the source that controls LED3 - * - * \param [in] src the source that controls LED3 - * - * \sa HW_LED_SRC3 - */ -__STATIC_INLINE void hw_led_set_led3_src(HW_LED_SRC3 src) -{ - REG_SETF(GPREG, LED_CONTROL_REG, LED3_SRC_SEL, src); -} - -/** - * \brief Enable or disable LED1 - * - * \param [in] state true to enable LED1, or false to disable it - * - */ -__STATIC_INLINE void hw_led_enable_led1(bool state) -{ - REG_SETF(GPREG, LED_CONTROL_REG, LED1_EN, state); -} - -/** - * \brief Enable or disable LED2 - * - * \param [in] state true to enable LED2, or false to disable it - * - */ -__STATIC_INLINE void hw_led_enable_led2(bool state) -{ - REG_SETF(GPREG, LED_CONTROL_REG, LED2_EN, state); -} - -/** - * \brief Enable or disable LED3 - * - * \param [in] state true to enable LED3, or false to disable it - * - */ -__STATIC_INLINE void hw_led_enable_led3(bool state) -{ - REG_SETF(GPREG, LED_CONTROL_REG, LED3_EN, state); -} - - -#endif /* HW_LED_H_ */ - -/** - * \} - * \} - * \} - */ diff --git a/third_party/dialog/DialogSDK/bsp/peripherals/include/hw_otpc.h b/third_party/dialog/DialogSDK/bsp/peripherals/include/hw_otpc.h deleted file mode 100644 index 291568601..000000000 --- a/third_party/dialog/DialogSDK/bsp/peripherals/include/hw_otpc.h +++ /dev/null @@ -1,576 +0,0 @@ -/** - * \addtogroup BSP - * \{ - * \addtogroup DEVICES - * \{ - * \addtogroup OTPC - * \{ - * \brief OTP Memory Controller - */ - -/** - **************************************************************************************** - * - * @file hw_otpc.h - * - * @brief Definition of API for the OTP Controller driver. - * - * Copyright (c) 2016, Dialog Semiconductor - * All rights reserved. - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. Neither the name of the copyright holder nor the names of its contributors - * may be used to endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, - * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, - * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED - * OF THE POSSIBILITY OF SUCH DAMAGE. - * - * - **************************************************************************************** - */ - -#ifndef HW_OTPC_H_ -#define HW_OTPC_H_ - -#if dg_configUSE_HW_OTPC - -#include -#include -#include - - -/** - * \brief Get the mask of a field of an OTPC register. - * - * \param [in] reg is the register to access - * \param [in] field is the register field to access - * - */ -#define HW_OTPC_REG_FIELD_MASK(reg, field) \ - (OTPC_OTPC_##reg##_REG_##OTPC_##reg##_##field##_Msk) - -/** - * \brief Get the bit position of a field of an OTPC register. - * - * \param [in] reg is the register to access - * \param [in] field is the register field to access - * - */ -#define HW_OTPC_REG_FIELD_POS(reg, field) \ - (OTPC_OTPC_##reg##_REG_##OTPC_##reg##_##field##_Pos) - -/** - * \brief Prepare (i.e. shift and mask) a value to be used for an OTPC register field. - * - * \param [in] reg is the register to access - * \param [in] field is the register field to access - * \param [in] val is the value to prepare - * - */ -#define HW_OTPC_FIELD_VAL(reg, field, val) \ - (((val) << HW_OTPC_REG_FIELD_POS(reg, field)) & HW_OTPC_REG_FIELD_MASK(reg, field)) - -/** - * \brief Get the value of a field of an OTPC register. - * - * \param [in] reg is the register to access - * \param [in] field is the register field to write - * - * \return the value of the register field - * - */ -#define HW_OTPC_REG_GETF(reg, field) \ - ((OTPC->OTPC_##reg##_REG & (OTPC_OTPC_##reg##_REG_##OTPC_##reg##_##field##_Msk)) >> (OTPC_OTPC_##reg##_REG_##OTPC_##reg##_##field##_Pos)) - -/** - * \brief Set the value of a field of an OTPC register. - * - * \param [in] reg is the register to access - * \param [in] field is the register field to write - * \param [in] new_val is the value to write - * - */ -#define HW_OTPC_REG_SETF(reg, field, new_val) \ - OTPC->OTPC_##reg##_REG = ((OTPC->OTPC_##reg##_REG & ~(OTPC_OTPC_##reg##_REG_##OTPC_##reg##_##field##_Msk)) | \ - ((OTPC_OTPC_##reg##_REG_##OTPC_##reg##_##field##_Msk) & ((new_val) << (OTPC_OTPC_##reg##_REG_##OTPC_##reg##_##field##_Pos)))) - - -/** - * \brief OTP Controller mode - */ -typedef enum { - HW_OTPC_MODE_STBY = 0, - HW_OTPC_MODE_MREAD = 1, - HW_OTPC_MODE_MPROG = 2, - HW_OTPC_MODE_AREAD = 3, - HW_OTPC_MODE_APROG = 4, - HW_OTPC_MODE_TBLANK = 5, - HW_OTPC_MODE_TDEC = 6, - HW_OTPC_MODE_TWR = 7 -} HW_OTPC_MODE; - -#define MAX_RR_AVAIL (8) - -#define OTP_CLK_IS_16M (0) -#define OTP_CLK_IS_32M (1) -#define OTP_CLK_IS_48M (2) - - -/** - * \brief Word inside cell to program/read - * - * Cell contents in memory starts with low word (i.e. to program/read both words in cell at once, - * HW_OTPC_WORD_LOW should be used for addressing). - * - */ -typedef enum { - HW_OTPC_WORD_LOW = 0, - HW_OTPC_WORD_HIGH = 1 -} HW_OTPC_WORD; - - -/** - * \brief System clock frequency in MHz - * - */ -typedef enum { - HW_OTPC_SYS_CLK_FREQ_1 = 0, - HW_OTPC_SYS_CLK_FREQ_2 = 1, - HW_OTPC_SYS_CLK_FREQ_3 = 2, - HW_OTPC_SYS_CLK_FREQ_4 = 3, - HW_OTPC_SYS_CLK_FREQ_6 = 4, - HW_OTPC_SYS_CLK_FREQ_8 = 5, - HW_OTPC_SYS_CLK_FREQ_12 = 6, - HW_OTPC_SYS_CLK_FREQ_16 = 7, - HW_OTPC_SYS_CLK_FREQ_24 = 8, - HW_OTPC_SYS_CLK_FREQ_32 = 9, - HW_OTPC_SYS_CLK_FREQ_48 = 10 -} HW_OTPC_SYS_CLK_FREQ; - -/* - * Reset values of OTPC registers - */ -#define OTPC_MODE_REG_RESET (0x00000000) -#define OTPC_PCTRL_REG_RESET (0x00000000) -#define OTPC_STAT_REG_RESET (0x00000051) -#define OTPC_AHBADR_REG_RESET (0x07FC0000) -#define OTPC_CELADR_REG_RESET (0x00000000) -#define OTPC_NWORDS_REG_RESET (0x00000000) -#define OTPC_FFPRT_REG_RESET (0x00000000) -#define OTPC_FFRD_REG_RESET (0x00000000) -#define OTPC_PWORDL_REG_RESET (0x00000000) -#define OTPC_PWORDH_REG_RESET (0x00000000) -#define OTPC_TIM1_REG_RESET (0x1A104F20) -#define OTPC_TIM2_REG_RESET (0x00010000) - -/** - * \brief Convert system clock frequency expressed in MHz to equivalent HW_OTPC_SYS_CLK_FREQ value - * - * \sa HW_OTPC_SYS_CLK_FREQ - */ -__RETAINED_CODE HW_OTPC_SYS_CLK_FREQ hw_otpc_convert_sys_clk_mhz(uint32_t clk_freq); - - -/** - * \brief Initialize the OTP Controller. - * - * \warning The AHB clock must be up to 48MHz! It is a responsibility of the caller to check this! - * - */ -static inline void hw_otpc_init(void) -{ - GLOBAL_INT_DISABLE(); - if ((dg_configBLACK_ORCA_IC_REV == BLACK_ORCA_IC_REV_A) - || ((dg_configUSE_AUTO_CHIP_DETECTION == 1) && (CHIP_IS_AE))) { - /* - * Reset OTP controller - */ - OTPC->OTPC_MODE_REG = HW_OTPC_MODE_STBY; // Set OTPC to standby - REG_SET_BIT(CRG_TOP, SYS_CTRL_REG, OTPC_RESET_REQ); // Reset the OTPC - REG_CLR_BIT(CRG_TOP, SYS_CTRL_REG, OTPC_RESET_REQ); // Get the OTPC out of Reset - - /* - * Initialize the POR registers - */ - OTPC->OTPC_NWORDS_REG = OTPC_NWORDS_REG_RESET; - OTPC->OTPC_TIM1_REG = OTPC_TIM1_REG_RESET; - OTPC->OTPC_TIM2_REG = OTPC_TIM2_REG_RESET; - } - - /* - * Enable OTPC clock - */ - CRG_TOP->CLK_AMBA_REG |= 1 << REG_POS(CRG_TOP, CLK_AMBA_REG, OTP_ENABLE); - GLOBAL_INT_RESTORE(); -} - -/** - * \brief Close the OTP Controller. - * - */ -static inline void hw_otpc_close(void) -{ - /* - * Disable OTPC clock - */ - GLOBAL_INT_DISABLE(); - CRG_TOP->CLK_AMBA_REG &= ~REG_MSK(CRG_TOP, CLK_AMBA_REG, OTP_ENABLE); - GLOBAL_INT_RESTORE(); -} - -/** - * \brief Check if the OTP Cotnroller is active. - * - * \return 1 if it is active, else 0. - * - */ -static inline uint32_t hw_otpc_is_active(void) __attribute__((always_inline)); - -static inline uint32_t hw_otpc_is_active(void) -{ - /* - * Check if the OTPC clock is enabled - */ - return !!(CRG_TOP->CLK_AMBA_REG & REG_MSK(CRG_TOP, CLK_AMBA_REG, OTP_ENABLE)); -} - -/** - * \brief Put the OTP Controller in STBY mode and turn-off clock. - * - */ -void hw_otpc_disable(void); - -/** - * \brief Set the access speed of the OTP Controller based on the system clock. - * - * \details Switch from PLL to XTAL : call function after clock switch with high_clk_speed == false - * Switch from XTAL to PLL : call function before clock switch with high_clk_speed == true - * - * \param [in] clk_speed The frequency of the system clock: 1, 2, 3, 4, 6, 8, 12, 16, 24, 32 and 48. - * - * \warning The OTP clock must have been enabled (OTP_ENABLE == 1). - * (Note: the hw_otpc_set_speed() must be called only once when the PLL is used or - * during each clock switch when both PLL and XTAL16 are used, since the register bits it - * modifies are retained.) - * - */ -__RETAINED_CODE void hw_otpc_set_speed(HW_OTPC_SYS_CLK_FREQ clk_speed); - -/** - * \brief Set or reset the power saving mode of the OTP Controller. - * - * \param [in] inactivity_period The number of HCLK cycles to remain powered while no access is made. - * If set to 0, this feature is disabled. - * - * \warning The hw_otpc_init() and hw_otpc_set_speed() must have been called. - * (Note: the hw_otpc_set_speed() must be called only once when the PLL is used or - * during each clock switch when both PLL and XTAL16 are used, since the register bits it - * modifies are retained.) - */ -void hw_otpc_power_save(uint32_t inactivity_period); - -/** - * \brief Get the number of the Repair Records. - * - * \return The number of used Repair Records. - * - * \warning The hw_otpc_init() and hw_otpc_set_speed() must have been called. The OTPC mode will be reset. - * (Note: the hw_otpc_set_speed() must be called only once when the PLL is used or - * during each clock switch when both PLL and XTAL16 are used, since the register bits it - * modifies are retained.) - */ -uint32_t hw_otpc_num_of_rr(void); - -/** - * \brief Program manually an OTP entry. - * - * \param [in] cell_offset Cell offset to be programmed. - * - * \param [in] pword_l The low 32-bits of the 64-bit word to be written. - * - * \param [in] pword_h The high 32-bits of the 64-bit word to be written. - * - * \param [in] use_rr Use a Repair Record if writing fails when true. - * - * \return true for success, false for failure - * - * \warning The hw_otpc_init() and the hw_otpc_set_speed() must have been called and the mode must - * be STBY. (Note: the hw_otpc_set_speed() must be called only once when the PLL is used or - * during each clock switch when both PLL and XTAL16 are used, since the register bits it - * modifies are retained.) - * - */ -bool hw_otpc_manual_word_prog(uint32_t cell_offset, uint32_t pword_l, uint32_t pword_h, bool use_rr); - -/** - * \brief Program manually an OTP block. - * - * \param [in] p_data The start address of the data to copy from. - * - * \param [in] cell_offset Cell offset to start programming from. - * - * \param [in] cell_word Word inside cell to start programming from. - * - * \param [in] num_of_words The actual number of the words to be written. - * - * \param [in] use_rr true to use Repair Records if writing fails - * - * \return true for success, false for failure - * - * \warning The hw_otpc_init() and the hw_otpc_set_speed() must have been called and the mode must - * be STBY. (Note: the hw_otpc_set_speed() must be called only once when the PLL is used or - * during each clock switch when both PLL and XTAL16 are used, since the register bits it - * modifies are retained.) - * - */ -bool hw_otpc_manual_prog(const uint32_t *p_data, uint32_t cell_offset, HW_OTPC_WORD cell_word, - uint32_t num_of_words, bool use_rr); - -/** - * \brief Put the OTP in manual read mode. - * - * \details In manual read mode the OTP is memory mapped to the address MEMORY_OTP_BASE. So, any - * access to this memory space results into reading from the OTP. The caller must make sure - * that the function hw_otpc_manual_read_off() is called when reading from the OTP is - * finished. - * - * \param [in] spare_rows true to access the spare rows area, false to access normal memory cell - * - * \warning The hw_otpc_init() and the hw_otpc_set_speed() must have been called and the mode must - * be STBY. (Note: the hw_otpc_set_speed() must be called only once when the PLL is used or - * during each clock switch when both PLL and XTAL16 are used, since the register bits it - * modifies are retained.) - * - */ -void hw_otpc_manual_read_on(bool spare_rows); - -/** - * \brief Take the OTP out of manual read mode and put it in STBY. - * - * \warning The hw_otpc_init() and the hw_otpc_set_speed() must have been called and the mode must - * be STBY. (Note: the hw_otpc_set_speed() must be called only once when the PLL is used or - * during each clock switch when both PLL and XTAL16 are used, since the register bits it - * modifies are retained.) - * - */ -void hw_otpc_manual_read_off(void); - -/** - * \brief Program manually a Repair Record in the OTP's spare area. - * - * \param [in] cell_offset The address programmed with errors. - * \param [in] pword_l The low 32-bits of the 64-bit word to be written. - * \param [in] pword_h The high 32-bits of the 64-bit word to be written. - * \return true for success, false for failure - * - * \warning The hw_otpc_init() and the hw_otpc_set_speed() must have been called and the mode must - * be STBY. (Note: the hw_otpc_set_speed() must be called only once when the PLL is used or - * during each clock switch when both PLL and XTAL16 are used, since the register bits it - * modifies are retained.) - * - */ -bool hw_otpc_write_rr(uint32_t cell_offset, uint32_t pword_l, uint32_t pword_h); - -/** - * \brief Program OTP via DMA. - * - * \param [in] p_data The start address of the data in RAM. - * - * \param [in] cell_offset Cell offset to be programmed. - * - * \param [in] cell_word Word inside cell to be programmed. - * - * \param [in] num_of_words The actual number of the words to be written. The driver will write this - * value minus 1 to the specific register. - * - * \param [in] spare_rows true to access the spare rows area, false to access normal memory cell - * - * \return true for success, false for failure (the programming should be retried or fixed!) - * - * \warning The hw_otpc_init() and the hw_otpc_set_speed() must have been called and the mode must - * be STBY. (Note: the hw_otpc_set_speed() must be called only once when the PLL is used or - * during each clock switch when both PLL and XTAL16 are used, since the register bits it - * modifies are retained.) - * - */ -bool hw_otpc_dma_prog(const uint32_t *p_data, uint32_t cell_offset, HW_OTPC_WORD cell_word, - uint32_t num_of_words, bool spare_rows); - -/** - * \brief Read OTP via DMA. - * - * \param [in] p_data The address in RAM to write the data to. - * - * \param [in] cell_offset Cell offset to be programmed. - * - * \param [in] cell_word Word inside cell to be programmed. - * - * \param [in] num_of_words The actual number of the words to be read. The driver will write this - * value minus 1 to the specific register. - * - * \param [in] spare_rows true to access the spare rows area, false to access normal memory cell - * - * \warning The hw_otpc_init() and the hw_otpc_set_speed() must have been called and the mode must - * be STBY. (Note: the hw_otpc_set_speed() must be called only once when the PLL is used or - * during each clock switch when both PLL and XTAL16 are used, since the register bits it - * modifies are retained.) - * - */ -void hw_otpc_dma_read(uint32_t *p_data, uint32_t cell_offset, HW_OTPC_WORD cell_word, - uint32_t num_of_words, bool spare_rows); - -/** - * \brief Program OTP via FIFO (Auto mode). - * - * \param [in] p_data The start address of the data in RAM. - * - * \param [in] cell_offset Cell offset to be programmed. - * - * \param [in] cell_word Word inside cell to be programmed. - * - * \param [in] num_of_words The actual number of the words to be written. The driver will write this - * value minus 1 to the specific register. - * - * \param [in] spare_rows true to access the spare rows area, false to access normal memory cell - * - * \return true for success, false for failure - * - * \warning The hw_otpc_init() and the hw_otpc_set_speed() must have been called and the mode must - * be STBY. (Note: the hw_otpc_set_speed() must be called only once when the PLL is used or - * during each clock switch when both PLL and XTAL16 are used, since the register bits it - * modifies are retained.) - * - */ -bool hw_otpc_fifo_prog(const uint32_t *p_data, uint32_t cell_offset, HW_OTPC_WORD cell_word, - uint32_t num_of_words, bool spare_rows); - -/** - * \brief Read OTP via FIFO. - * - * \param [in] p_data The address in RAM to write the data to. - * - * \param [in] cell_offset Cell offset to be programmed. - * - * \param [in] cell_word Word inside cell to be programmed. - * - * \param [in] num_of_words The actual number of the words to be read. The driver will write this - * value minus 1 to the specific register. - * - * \param [in] spare_rows true to access the spare rows area, false to access normal memory cell - * - * \return true for success, false for failure - * - * \warning The hw_otpc_init() and the hw_otpc_set_speed() must have been called and the mode must - * be STBY. (Note: the hw_otpc_set_speed() must be called only once when the PLL is used or - * during each clock switch when both PLL and XTAL16 are used, since the register bits it - * modifies are retained.) - * - */ -bool hw_otpc_fifo_read(uint32_t *p_data, uint32_t cell_offset, HW_OTPC_WORD cell_word, - uint32_t num_of_words, bool spare_rows); - -/** - * \brief Prepare OTPC to execute an OTP copy after wakeup. - * - * \param [in] num_of_bytes The actual number of the bytes to be copied. The driver will write the - * proper value to the specific register. - * - * \warning The hw_otpc_init() and the hw_otpc_set_speed() must have been called and the mode must - * be STBY. (Note: the hw_otpc_set_speed() must be called only once when the PLL is used or - * during each clock switch when both PLL and XTAL16 are used, since the register bits it - * modifies are retained.) - * - */ -void hw_otpc_prepare(uint32_t num_of_bytes); - -/** - * \brief Cancel any previous preparations of the OTPC for executing an OTP copy after wakeup. - * - * \warning The hw_otpc_init() and the hw_otpc_set_speed() must have been called and the mode must - * be STBY. (Note: the hw_otpc_set_speed() must be called only once when the PLL is used or - * during each clock switch when both PLL and XTAL16 are used, since the register bits it - * modifies are retained.) - * - */ -void hw_otpc_cancel_prepare(void); - -/** - * \brief Get cell memory address - * - * Returns mapped memory address for given cell, can be used for e.g. manual reading. - * - * \param [in] cell_offset cell offset - * - * \return cell memory address - * - * \sa hw_otpc_manual_read_on - * - */ -static inline void *hw_otpc_cell_to_mem(uint32_t cell_offset) -{ - return (void *) (MEMORY_OTP_BASE + (cell_offset << 3)); // cell size is 8 bytes -} - -//////////////////////////////////////////////////////////////////////////////////////////////////// -// TEST FUNCTIONALITY -//////////////////////////////////////////////////////////////////////////////////////////////////// - -/** - * \brief Execution of the BLANK test. - * - * \return The test result. - *
    - *
  • 0, if the test succeeded - *
  • 1, if the test 1 failed - *
- * - */ -int hw_otpc_blank(void); - -/** - * \brief Execution of the TDEC test. - * - * \return The test result. - *
    - *
  • 0, if the test succeeded - *
  • 1, if the test 1 failed - *
- * - */ -int hw_otpc_tdec(void); - -/** - * \brief Execution of the TWR test. - * - * \return The test result. - *
    - *
  • 0, if the test succeeded - *
  • 1, if the test 1 failed - *
- * - */ -int hw_otpc_twr(void); - -#endif /* dg_configUSE_HW_OTPC */ - -#endif /* HW_OTPC_H_ */ - -/** -\} -\} -\} -*/ diff --git a/third_party/dialog/DialogSDK/bsp/peripherals/include/hw_qspi.h b/third_party/dialog/DialogSDK/bsp/peripherals/include/hw_qspi.h deleted file mode 100644 index b1e967e9f..000000000 --- a/third_party/dialog/DialogSDK/bsp/peripherals/include/hw_qspi.h +++ /dev/null @@ -1,1203 +0,0 @@ -/** - * \addtogroup BSP - * \{ - * \addtogroup DEVICES - * \{ - * \addtogroup QSPI - * \{ - * \brief QSPI Flash Memory Controller - */ - -/** - ***************************************************************************************** - * - * @file hw_qspi.h - * - * @brief Definition of API for the QSPI Low Level Driver. - * - * Copyright (c) 2016, Dialog Semiconductor - * All rights reserved. - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. Neither the name of the copyright holder nor the names of its contributors - * may be used to endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, - * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, - * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED - * OF THE POSSIBILITY OF SUCH DAMAGE. - * - * - ***************************************************************************************** - */ - -#ifndef HW_QSPI_H_ -#define HW_QSPI_H_ - -#if dg_configUSE_HW_QSPI - -#include -#include -#include - - -/** - * \brief Get the mask of a field of an QSPIC register. - * - * \param [in] reg is the register to access - * \param [in] field is the register field to access - * - */ -#define HW_QSPIC_REG_FIELD_MASK(reg, field) \ - (QSPIC_QSPIC_##reg##_REG_##QSPIC_##field##_Msk) - -/** - * \brief Get the bit position of a field of an QSPIC register. - * - * \param [in] reg is the register to access - * \param [in] field is the register field to access - * - */ -#define HW_QSPIC_REG_FIELD_POS(reg, field) \ - (QSPIC_QSPIC_##reg##_REG_##QSPIC_##field##_Pos) - -/** - * \brief Get the value of a field of an QSPIC register. - * - * \param [in] reg is the register to access - * \param [in] field is the register field to write - * - * \return the value of the register field - * - */ -#define HW_QSPIC_REG_GETF(reg, field) \ - ((QSPIC->QSPIC_##reg##_REG & (QSPIC_QSPIC_##reg##_REG_##QSPIC_##field##_Msk)) >> (QSPIC_QSPIC_##reg##_REG_##QSPIC_##field##_Pos)) - -/** - * \brief Set the value of a field of an QSPIC register. - * - * \param [in] reg is the register to access - * \param [in] field is the register field to write - * \param [in] new_val is the value to write - * - */ -#define HW_QSPIC_REG_SETF(reg, field, new_val) \ - QSPIC->QSPIC_##reg##_REG = ((QSPIC->QSPIC_##reg##_REG & ~(QSPIC_QSPIC_##reg##_REG_##QSPIC_##field##_Msk)) | \ - ((QSPIC_QSPIC_##reg##_REG_##QSPIC_##field##_Msk) & ((new_val) << (QSPIC_QSPIC_##reg##_REG_##QSPIC_##field##_Pos)))) - - -extern uint8_t dummy_num[]; - -/* - * ENUMERATION DEFINITIONS - ***************************************************************************************** - */ - -/** - * \brief Bus mode - * - */ -typedef enum { - HW_QSPI_BUS_MODE_SINGLE, /**< Bus mode in single mode */ - HW_QSPI_BUS_MODE_DUAL, /**< Bus mode in dual mode */ - HW_QSPI_BUS_MODE_QUAD /**< Bus mode in quad mode */ -} HW_QSPI_BUS_MODE; - -/** - * \brief Flash memory address size - * - */ -typedef enum { - HW_QSPI_ADDR_SIZE_24, /**< QSPI flash memory uses 24 bits address */ - HW_QSPI_ADDR_SIZE_32 /**< QSPI flash memory uses 32 bits address */ -} HW_QSPI_ADDR_SIZE; - -/** - * \brief Idle clock state - * - */ -typedef enum { - HW_QSPI_POL_LOW = 0, /**< SPI clock will be low at idle */ - HW_QSPI_POL_HIGH = 1 /**< SPI clock will be high at idle */ -} HW_QSPI_POL; - -/** - * \brief Type of QSPI_CLK edge for sampling received data - * - */ -typedef enum { - HW_QSPI_SAMPLING_EDGE_POSITIVE = 0, /**< Sample the received data with the positive edge of the QSPI_SCK */ - HW_QSPI_SAMPLING_EDGE_NEGATIVE = 1 /**< Sample the received data with the negative edge of the QSPI_SCK */ -} HW_QSPI_SAMPLING_EDGE; - -/** - * \brief Selected data size of a wrapping burst - * - */ -typedef enum { - HW_QSPI_WRAP_SIZE_8BITS = 0, /**< Byte access (8-bits) */ - HW_QSPI_WRAP_SIZE_16BITS = 1, /**< Half word access (8-bits) */ - HW_QSPI_WRAP_SIZE_32BITS = 2, /**< Word access (8-bits) */ -} HW_QSPI_WRAP_SIZE; - -/** - * \brief Selected data length of a wrapping burst - * - */ -typedef enum { - HW_QSPI_WRAP_LEN_4BEAT = 0, /**< 4 beat wrapping burst */ - HW_QSPI_WRAP_LEN_8BEAT = 1, /**< 8 beat wrapping burst */ - HW_QSPI_WRAP_LEN_16BEAT = 2, /**< 16 beat wrapping burst */ -} HW_QSPI_WRAP_LEN; - -/** - * \brief Size of Burst Break Sequence - * - */ -typedef enum { - HW_QSPI_BREAK_SEQ_SIZE_1B = 0, /**< One byte */ - HW_QSPI_BREAK_SEQ_SIZE_2B = 1 /**< Two bytes */ -} HW_QSPI_BREAK_SEQ_SIZE; - -/** - * \brief QSPI pads slew rate control - * - */ -typedef enum { - HW_QSPI_SLEW_RATE_0, /**< xx V/ns (weak) */ - HW_QSPI_SLEW_RATE_1, /**< xx V/ns */ - HW_QSPI_SLEW_RATE_2, /**< xx V/ns */ - HW_QSPI_SLEW_RATE_3 /**< xx V/ns (strong) */ -} HW_QSPI_SLEW_RATE; - -/** - * \brief QSPI pads drive current - * - */ -typedef enum { - HW_QSPI_DRIVE_CURRENT_4, /**< 4 mA */ - HW_QSPI_DRIVE_CURRENT_8, /**< 8 mA */ - HW_QSPI_DRIVE_CURRENT_12, /**< 12 mA */ - HW_QSPI_DRIVE_CURRENT_16, /**< 16 mA */ -} HW_QSPI_DRIVE_CURRENT; - -/** - * \brief QSPI clock divider setting - * - */ -typedef enum { - HW_QSPI_DIV_1 = 0, /**< divide by 1 */ - HW_QSPI_DIV_2 = 1, /**< divide by 2 */ - HW_QSPI_DIV_4 = 2, /**< divide by 4 */ - HW_QSPI_DIV_8 = 3 /**< divide by 8 */ -} HW_QSPI_DIV; - -/** - * \brief QSPI configuration - * - */ -typedef struct { - HW_QSPI_ADDR_SIZE address_size; - HW_QSPI_POL idle_clock; - HW_QSPI_SAMPLING_EDGE sampling_edge; -} qspi_config; - -/** - * \brief Enable CS on QSPI bus - * - * Use this in manual mode. - * - */ -static inline void hw_qspi_cs_enable(void) __attribute__((always_inline)); - -static inline void hw_qspi_cs_enable(void) -{ - QSPIC->QSPIC_CTRLBUS_REG = QSPIC_QSPIC_CTRLBUS_REG_QSPIC_EN_CS_Msk; -} - -/** - * \brief Disable CS on QSPI bus - * - * Use this in manual mode. - * - */ -static inline void hw_qspi_cs_disable(void) __attribute__((always_inline)); - -static inline void hw_qspi_cs_disable(void) -{ - QSPIC->QSPIC_CTRLBUS_REG = QSPIC_QSPIC_CTRLBUS_REG_QSPIC_DIS_CS_Msk; -} - -/** - * \brief Select QSPI bus mode - * - * Use this in manual mode. - * - * \note Selecting QUAD mode will automatically configure pins IO2 and IO3 to input. - * - * \param [in] mode selects single/dual/quad mode for QSPI bus - * - */ -void hw_qspi_set_bus_mode(HW_QSPI_BUS_MODE mode); - -/** - * \brief Check is SPI Bus is busy - * - * \return 0 - SPI Bus is idle, - * 1 - SPI Bus is active. ReadData, WriteData or DummyData activity is in progress - * - */ -static inline uint8_t hw_qspi_is_busy(void) __attribute__((always_inline)); - -static inline uint8_t hw_qspi_is_busy(void) -{ - return (uint8_t) QSPIC->QSPIC_STATUS_REG; -} - -/** - * \brief Generate 32 bits read transfer on QSPI bus - * - * The data is transferred using the selected mode of the SPI bus (SPI, Dual - * SPI, Quad SPI). - * - * \return data read during read transfer - * - */ -static inline uint32_t hw_qspi_read32(void) __attribute__((always_inline)); - -static inline uint32_t hw_qspi_read32(void) -{ - return QSPIC->QSPIC_READDATA_REG; -} - -/** - * \brief Generate 16 bits read transfer on QSPI bus - * - * The data is transferred using the selected mode of the SPI bus (SPI, Dual - * SPI, Quad SPI). - * - * \return data read during read transfer - * - */ -static inline uint16_t hw_qspi_read16(void) __attribute__((always_inline)); - -static inline uint16_t hw_qspi_read16(void) -{ - return *((volatile uint16_t *) &(QSPIC->QSPIC_READDATA_REG)); -} - -/** - * \brief Generate 8 bits read transfer on QSPI bus - * - * The data is transferred using the selected mode of the SPI bus (SPI, Dual - * SPI, Quad SPI). - * - * \return data read during read transfer - * - */ -static inline uint8_t hw_qspi_read8(void) __attribute__((always_inline)); - -static inline uint8_t hw_qspi_read8(void) -{ - return *((volatile uint8_t *) &(QSPIC->QSPIC_READDATA_REG)); -} - -/** - * \brief Generate 32 bits write transfer on QSPI bus - * - * The data is transferred using the selected mode of the SPI bus (SPI, Dual - * SPI, Quad SPI). - * - * param [in] data data to transfer - * - */ -static inline void hw_qspi_write32(uint32_t data) __attribute__((always_inline)); - -static inline void hw_qspi_write32(uint32_t data) -{ - QSPIC->QSPIC_WRITEDATA_REG = data; -} - -/** - * \brief Generate 16 bits write transfer on QSPI bus - * - * The data is transferred using the selected mode of the SPI bus (SPI, Dual - * SPI, Quad SPI). - * - * param [in] data data to transfer - * - */ -static inline void hw_qspi_write16(uint16_t data) __attribute__((always_inline)); - -static inline void hw_qspi_write16(uint16_t data) -{ - *((volatile uint16_t *) &(QSPIC->QSPIC_WRITEDATA_REG)) = data; -} - -/** - * \brief Generate 8 bits write transfer on QSPI bus - * - * The data is transferred using the selected mode of the SPI bus (SPI, Dual - * SPI, Quad SPI). - * - * param [in] data data to transfer - * - */ -static inline void hw_qspi_write8(uint8_t data) __attribute__((always_inline)); - -static inline void hw_qspi_write8(uint8_t data) -{ - *((volatile uint8_t *) &(QSPIC->QSPIC_WRITEDATA_REG)) = data; -} - -/** - * \brief Generate a clock pulses to the SPI bus for 32 bits transfer - * - * During this activity in the SPI bus, the QSPI_IOx data pads are in hi-z state. - * Number of pulses depends on selected mode of the SPI bus (SPI, Dual SPI, Quad SPI). - * - */ -static inline void hw_qspi_dummy32(void) __attribute__((always_inline)); - -static inline void hw_qspi_dummy32(void) -{ - QSPIC->QSPIC_DUMMYDATA_REG = 0; -} - -/** - * \brief Generate a clock pulses to the SPI bus for 16 bits transfer - * - * During this activity in the SPI bus, the QSPI_IOx data pads are in hi-z state. - * Number of pulses depends on selected mode of the SPI bus (SPI, Dual SPI, Quad SPI). - * - */ -static inline void hw_qspi_dummy16(void) __attribute__((always_inline)); - -static inline void hw_qspi_dummy16(void) -{ - *((volatile uint16_t *) &(QSPIC->QSPIC_DUMMYDATA_REG)) = 0; -} - -/** - * \brief Generate a clock pulses to the SPI bus for 8 bits transfer - * - * During this activity in the SPI bus, the QSPI_IOx data pads are in hi-z state. - * Number of pulses depends on selected mode of the SPI bus (SPI, Dual SPI, Quad SPI). - * - */ -static inline void hw_qspi_dummy8(void) __attribute__((always_inline)); - -static inline void hw_qspi_dummy8(void) -{ - *((volatile uint8_t *) &(QSPIC->QSPIC_DUMMYDATA_REG)) = 0; -} - -/** - * \brief Specifies address with that flash memory uses - * - * The controller uses 32 of 24 bits for address during Auto mode transfer. - * - * \param [in] size selects 32 or 24 address size - * - */ -static inline void hw_qspi_set_address_size(HW_QSPI_ADDR_SIZE size) __attribute__((always_inline)); - -static inline void hw_qspi_set_address_size(HW_QSPI_ADDR_SIZE size) -{ - HW_QSPIC_REG_SETF(CTRLMODE, USE_32BA, (size == HW_QSPI_ADDR_SIZE_32 ? 1 : 0)); -} - -/** - * \brief Get address size that flash memory uses - * - * The controller uses 32 of 24 bits for address during Auto mode transfer. - * - * \return currently selected address size - * - * \sa hw_qspi_set_address_size - * - */ -static inline HW_QSPI_ADDR_SIZE hw_qspi_get_address_size(void) __attribute__((always_inline)); - -static inline HW_QSPI_ADDR_SIZE hw_qspi_get_address_size(void) -{ - return (HW_QSPI_ADDR_SIZE) HW_QSPIC_REG_GETF(CTRLMODE, USE_32BA); -} - -/** - * \brief Controls translation of burst accesses form AMBA bus to the QSPI bus - * - * \param [in] force 0 - controller translates a burst access on the AMBA bus - * to a burst access on the QSPI bus. That results to a minimum - * command/address phases, but the QSPI_CS is low for as - * long as the access occures, - * 1 - controller will split a burst access on the AMBA bus - * into single accesses on the qspi bus. This results to a separate - * read command to the FLASH memory foreach data - * required. A 4-beat word incremental AMBA access will be - * split into 4 different sequences of reading (command/address/ - * extra clock/read data). QSPI_CS will be only high while a qspi - * access occures. This results to lower power dissipation with - * respect to QSPIC_FORCENSEQ_EN=0 at cost of performance - * - */ -static inline void hw_qspi_force_nseq(uint8_t force) __attribute__((always_inline)); - -static inline void hw_qspi_force_nseq(uint8_t force) -{ - HW_QSPIC_REG_SETF(CTRLMODE, FORCENSEQ_EN, force); -} - -/** - * \brief Enable or disable auto mode on QSPI - * - * \note Selecting auto mode when any command previously configured has chosen - * QUAD mode for any phase will automatically configure pins IO2 and IO3 to input. - * - * \param [in] automode true auto mode selected, - * false manual mode selected - * - * \sa hw_qspi_set_read_instruction - * \sa hw_qspi_set_read_status_instruction - * \sa hw_qspi_set_suspend_resume_instructions - * \sa hw_qspi_set_write_enable_instruction - * \sa hw_qspi_set_extra_byte - * \sa hw_qspi_set_erase_instruction - * \sa hw_qspi_set_break_sequence - * - */ -void hw_qspi_set_automode(bool automode); - -/** - * \brief Read automode state - * - * \return true auto mode is selected, - * false manual mode is selected - * - */ -static inline bool hw_qspi_get_automode(void) __attribute__((always_inline)); - -static inline bool hw_qspi_get_automode(void) -{ - return HW_QSPIC_REG_GETF(CTRLMODE, AUTO_MD); -} - -/** - * \brief Get read pipe clock delay - * - * \return read pipe clock delay relative to the falling edge of QSPI_SCK - * - */ -static inline uint8_t hw_qspi_get_read_pipe_clock_delay(void) __attribute__((always_inline)); - -static inline uint8_t hw_qspi_get_read_pipe_clock_delay(void) -{ - return HW_QSPIC_REG_GETF(CTRLMODE, PCLK_MD); -} - -/** - * \brief Set read pipe clock delay - * - * \param [in] delay read pipe clock delay relative to the falling edge of QSPI_SCK - * value should be in range 0..7 - * - */ -static inline void hw_qspi_set_read_pipe_clock_delay(uint8_t delay) __attribute__((always_inline)); - -static inline void hw_qspi_set_read_pipe_clock_delay(uint8_t delay) -{ - HW_QSPIC_REG_SETF(CTRLMODE, PCLK_MD, delay); -} - -/** - * \brief Check if read pipe is enabled - * - * \return 1 if read pipe is enabled, 0 otherwise - * - */ -static inline uint8_t hw_qspi_is_read_pipe_clock_enabled(void) __attribute__((always_inline)); - -static inline uint8_t hw_qspi_is_read_pipe_clock_enabled(void) -{ - return HW_QSPIC_REG_GETF(CTRLMODE, RPIPE_EN); -} - -/** - * \brief Enable read pipe - * - * \param [in] enable 1 enable read pipe, - * 0 disable read pipe - * - */ -static inline void hw_qspi_enable_readpipe(uint8_t enable) __attribute__((always_inline)); - -static inline void hw_qspi_enable_readpipe(uint8_t enable) -{ - HW_QSPIC_REG_SETF(CTRLMODE, RPIPE_EN, enable); -} - -/** - * \brief Get read sampling edge - * - * \return type of QSPI_CLK edge for sampling received data - * - */ -static inline HW_QSPI_SAMPLING_EDGE hw_qspi_get_read_sampling_edge(void) __attribute__((always_inline)); - -static inline HW_QSPI_SAMPLING_EDGE hw_qspi_get_read_sampling_edge(void) -{ - return HW_QSPIC_REG_GETF(CTRLMODE, RXD_NEG); -} - -/** - * \brief Set read sampling edge - * - * \param [in] edge sets whether read samples or taken on rising or falling edge - * of QSPI_SCK - * - */ -static inline void hw_qspi_set_read_sampling_edge(HW_QSPI_SAMPLING_EDGE edge) __attribute__((always_inline)); - -static inline void hw_qspi_set_read_sampling_edge(HW_QSPI_SAMPLING_EDGE edge) -{ - HW_QSPIC_REG_SETF(CTRLMODE, RXD_NEG, edge); -} - -/** - * \brief Check if hready signal is used - * - * \return 0 - when wait states are not added via hready signal during access to - * QSPIC_WRITEDATA, QSPIC_READDATA and QSPIC_DUMMYDATA registers, - * 1 - when wait states are added via hready signal during access to - * QSPIC_WRITEDATA, QSPIC_READDATA and QSPIC_DUMMYDATA registers. - * In this case read read QSPI_STATUS register to check the end of - * activity at the SPI bus - * - */ -static inline uint8_t hw_qspi_is_hready_enabled(void) __attribute__((always_inline)); - -static inline uint8_t hw_qspi_is_hready_enabled(void) -{ - return HW_QSPIC_REG_GETF(CTRLMODE, HRDY_MD); -} - -/** - * \brief Enable/disable adding wait states during register access - * - * \param [in] enable 0 - wait states will be added in hready signal during access to - * QSPIC_WRITEDATA, QSPIC_READDATA and QSPIC_DUMMYDATA registers - * - */ -static inline void hw_qspi_enable_hready(uint8_t enable) __attribute__((always_inline)); - -static inline void hw_qspi_enable_hready(uint8_t enable) -{ - HW_QSPIC_REG_SETF(CTRLMODE, HRDY_MD, enable); -} - -/** - * \brief Get clock mode - * - * \return 0 - SPI mode 0 is used for QSPI_CLK, the QSPI_SCK is low when QSPI_CS is high (idle), - * 1 - SPI mode 3 is used for QSPI_CLK, the QSPI_SCK is high when QSPI_CS is high (idle) - * - */ -static inline uint8_t hw_qspi_get_clock_mode(void) __attribute__((always_inline)); - -static inline uint8_t hw_qspi_get_clock_mode(void) -{ - return HW_QSPIC_REG_GETF(CTRLMODE, CLK_MD); -} - -/** - * \brief Set clock mode - * - * \param [in] mode HW_SPI_POL_LOW - SPI mode 0 is used for QSPI_CLK, - * The QSPI_SCK is low when QSPI_CS is high (idle), - * HW_SPI_POL_HIGH - SPI mode 3 is used for QSPI_CLK, - * The QSPI_SCK is high when QSPI_CS is high (idle) - * - */ -static inline void hw_qspi_set_clock_mode(HW_QSPI_POL mode) __attribute__((always_inline)); - -static inline void hw_qspi_set_clock_mode(HW_QSPI_POL mode) -{ - HW_QSPIC_REG_SETF(CTRLMODE, CLK_MD, mode); -} - -/** - * \brief Set IO2 direction - * - * \param [in] output QSPI_IO2 output enable. Use this only in SPI or Dual SPI - * mode to control /WP signal. When the Auto Mode is selected - * and the QUAD SPI is used, set this to false. - * false: The QSPI_IO2 pad is input - * true: The QSPI_IO2 pad is output - * - */ -#if (dg_configFLASH_POWER_DOWN == 1) -__attribute__((section("text_retained"))) -#endif -static inline void hw_qspi_set_io2_output(bool output) __attribute__((always_inline)); - -static inline void hw_qspi_set_io2_output(bool output) -{ - HW_QSPIC_REG_SETF(CTRLMODE, IO2_OEN, output); -} - -/** - * \brief Set IO3 direction - * - * \param [in] output Use this only in SPI or Dual SPI mode to control /HOLD signal. - * When the Auto Mode is selected and the QUAD SPI is used, - * set this to false. - * false: The QSPI_IO3 pad is input, - * true: The QSPI_IO3 pad is output - * - */ -#if (dg_configFLASH_POWER_DOWN == 1) -__attribute__((section("text_retained"))) -#endif -static inline void hw_qspi_set_io3_output(bool output) __attribute__((always_inline)); - -static inline void hw_qspi_set_io3_output(bool output) -{ - HW_QSPIC_REG_SETF(CTRLMODE, IO3_OEN, output); -} - -/** - * \brief Set state for IO2 when it's configured as output - * - * \param [in] val QSPI_IO2 value to set (0 or 1) - * - * \sa hw_qspi_set_io2_direction - * - */ -static inline void hw_qspi_set_io2(uint8_t val) __attribute__((always_inline)); - -static inline void hw_qspi_set_io2(uint8_t val) -{ - HW_QSPIC_REG_SETF(CTRLMODE, IO2_DAT, val); -} - -/** - * \brief Set state for IO3 when it's configured as output - * - * \param [in] val QSPI_IO3 value to set (0 or 1) - * - * \sa hw_qspi_set_io3_direction - * - */ -static inline void hw_qspi_set_io3(uint8_t val) __attribute__((always_inline)); - -static inline void hw_qspi_set_io3(uint8_t val) -{ - HW_QSPIC_REG_SETF(CTRLMODE, IO3_DAT, val); -} - -/** - * \brief Read state of IO2 when not in QUAD mode - * - * \return value of IO2 pin (0 or 1) - * - */ -static inline uint8_t hw_qspi_get_io2(void) __attribute__((always_inline)); - -static inline uint8_t hw_qspi_get_io2(void) -{ - return HW_QSPIC_REG_GETF(CTRLMODE, IO2_DAT); -} - -/** - * \brief Read state of IO3 when not in QUAD mode - * - * \return value of IO3 pin (0 or 1) - * - */ -static inline uint8_t hw_qspi_get_io3(void) __attribute__((always_inline)); - -static inline uint8_t hw_qspi_get_io3(void) -{ - return HW_QSPIC_REG_GETF(CTRLMODE, IO3_DAT); -} - -/** - * \brief Set read instructions for QSPI flash - * - * This function sets up instruction to be sent to flash memory when data is requested - * on AHB bus. - * - * \param [in] inst instruction for Incremental Burst or Single read access. - * This value is the selected instruction at the cases of incremental - * burst or single read access. Also this value is used when a wrapping - * burst is not supported. - * \param [in] send_once 0 - transmit instruction at any burst access, - * 1 - transmit instruction only in the first access after the - * selection of Auto Mode. - * \param [in] dummy_count number of dummy bytes to send 0..4 - * \param [in] inst_phase describes the mode of the SPI bus during the instruction phase - * \param [in] addr_phase describes the mode of the SPI bus during the address phase - * \param [in] dummy_phase describes the mode of the SPI bus during the dummy phase - * \param [in] data_phase describes the mode of the SPI bus during the data phase - * - * \sa hw_qspi_set_extra_byte - * \sa hw_qspi_set_wrapping_burst_instruction - * - */ -static inline void hw_qspi_set_read_instruction(uint8_t inst, - uint8_t send_once, - uint8_t dummy_count, - HW_QSPI_BUS_MODE inst_phase, - HW_QSPI_BUS_MODE addr_phase, - HW_QSPI_BUS_MODE dummy_phase, - HW_QSPI_BUS_MODE data_phase) - __attribute((always_inline)); - -static inline void hw_qspi_set_read_instruction(uint8_t inst, - uint8_t send_once, - uint8_t dummy_count, - HW_QSPI_BUS_MODE inst_phase, - HW_QSPI_BUS_MODE addr_phase, - HW_QSPI_BUS_MODE dummy_phase, - HW_QSPI_BUS_MODE data_phase) -{ - QSPIC->QSPIC_BURSTCMDA_REG = - BITS32(QSPIC, QSPIC_BURSTCMDA_REG, QSPIC_INST, inst) | - BITS32(QSPIC, QSPIC_BURSTCMDA_REG, QSPIC_INST_TX_MD, inst_phase) | - BITS32(QSPIC, QSPIC_BURSTCMDA_REG, QSPIC_ADR_TX_MD, addr_phase) | - BITS32(QSPIC, QSPIC_BURSTCMDA_REG, QSPIC_DMY_TX_MD, dummy_phase); - - QSPIC->QSPIC_BURSTCMDB_REG = - BITS32(QSPIC, QSPIC_BURSTCMDB_REG, QSPIC_DAT_RX_MD, data_phase) | - BITS32(QSPIC, QSPIC_BURSTCMDB_REG, QSPIC_INST_MD, send_once) | - BITS32(QSPIC, QSPIC_BURSTCMDB_REG, QSPIC_DMY_FORCE, (dummy_count == 3 ? 1 : 0)) | - BITS32(QSPIC, QSPIC_BURSTCMDB_REG, QSPIC_DMY_NUM, dummy_num[dummy_count]); -} - -/** - * \brief Set wrapping burst read instructions for QSPI flash - * - * Calling this function will set up wrapping burst instruction to use. - * Use this feature only when the serial FLASH memory supports a special - * instruction for wrapping burst access. - * - * \param [in] inst instruction for Wrapping Burst - * \param [in] len describes the selected length of a wrapping burst - * \param [in] size describes the selected data size of a wrapping burst - * - */ -void hw_qspi_set_wrapping_burst_instruction(uint8_t inst, HW_QSPI_WRAP_LEN len, - HW_QSPI_WRAP_SIZE size); - -/** - * \brief Set extra byte to use in read instruction - * - * \param [in] extra_byte the value of an extra byte which will be transferred after - * address. This byte is used for telling memory if it should stay - * in continuous read mode or wait for normal instruction after CS - * goes inactive - * \param [in] bus_mode describes the mode of the SPI bus during the extra byte phase. - * \param [in] half_disable_out 1 - disable (hi-z) output during the transmission - * of bits [3:0] of extra byte - * - * \sa hw_qspi_set_read_instruction - * - */ -static inline void hw_qspi_set_extra_byte(uint8_t extra_byte, HW_QSPI_BUS_MODE bus_mode, - uint8_t half_disable_out) __attribute__((always_inline)); - -static inline void hw_qspi_set_extra_byte(uint8_t extra_byte, HW_QSPI_BUS_MODE bus_mode, - uint8_t half_disable_out) -{ - QSPIC->QSPIC_BURSTCMDA_REG = - (QSPIC->QSPIC_BURSTCMDA_REG & - ~(REG_MSK(QSPIC, QSPIC_BURSTCMDA_REG, QSPIC_EXT_BYTE) | - REG_MSK(QSPIC, QSPIC_BURSTCMDA_REG, QSPIC_EXT_TX_MD))) | - BITS32(QSPIC, QSPIC_BURSTCMDA_REG, QSPIC_EXT_BYTE, extra_byte) | - BITS32(QSPIC, QSPIC_BURSTCMDA_REG, QSPIC_EXT_TX_MD, bus_mode); - - QSPIC->QSPIC_BURSTCMDB_REG = - (QSPIC->QSPIC_BURSTCMDB_REG & - ~(REG_MSK(QSPIC, QSPIC_BURSTCMDB_REG, QSPIC_EXT_BYTE_EN) | - REG_MSK(QSPIC, QSPIC_BURSTCMDB_REG, QSPIC_EXT_HF_DS))) | - BITS32(QSPIC, QSPIC_BURSTCMDB_REG, QSPIC_EXT_BYTE_EN, 1) | - BITS32(QSPIC, QSPIC_BURSTCMDB_REG, QSPIC_EXT_HF_DS, half_disable_out ? 1 : 0); -} - -/** - * \brief Set dummy byte count - * - * Number of dummy bytes to send when read instruction is executed. - * - * \param [in] count number of dummy bytes to send 0..4 - * - */ -void hw_qspi_set_dummy_bytes_count(uint8_t count); - -/** - * \brief Set number of clock when CS stays high - * - * \param [in] clock_count between the transmission of two different instructions to the - * flash memory, the qspi bus stays in idle state (QSPI_CS high) - * for at least this number of spi clock cycles. See the QSPIC_ERS_CS_HI - * register for an exception - * - */ -static inline void hw_qspi_set_min_cs_high(uint8_t clock_count) __attribute__((always_inline)); - -static inline void hw_qspi_set_min_cs_high(uint8_t clock_count) -{ - HW_QSPIC_REG_SETF(BURSTCMDB, CS_HIGH_MIN, clock_count); -} - -/** - * \brief Set up erase instructions - * - * Instruction will be send after call to hw_qspi_erase_block. - * - * \param [in] inst code value of the erase instruction - * \param [in] inst_phase mode of the QSPI Bus during the instruction phase of the erase instruction - * \param [in] addr_phase the mode of the QSPI Bus during the address phase of the erase instruction - * \param [in] hclk_cycles the controller must stay without flash memory reading - * requests for this number of AMBA AHB hclk cycles, before - * performs the command of erase or resume 15 - 0 - * \param [in] cs_hi_cycles after the execution of instructions: write enable, erase, erase - * suspend and erase resume, the QSPI_CS remains high for at - * least this number of qspi bus clock cycles - * - * \sa hw_qspi_erase_block - * - */ -static inline void hw_qspi_set_erase_instruction(uint8_t inst, HW_QSPI_BUS_MODE inst_phase, - HW_QSPI_BUS_MODE addr_phase, uint8_t hclk_cycles, uint8_t cs_hi_cycles) - __attribute__((always_inline)); - -static inline void hw_qspi_set_erase_instruction(uint8_t inst, HW_QSPI_BUS_MODE inst_phase, - HW_QSPI_BUS_MODE addr_phase, uint8_t hclk_cycles, uint8_t cs_hi_cycles) -{ - HW_QSPIC_REG_SETF(ERASECMDA, ERS_INST, inst); - QSPIC->QSPIC_ERASECMDB_REG = - (QSPIC->QSPIC_ERASECMDB_REG & - ~(REG_MSK(QSPIC, QSPIC_ERASECMDB_REG, QSPIC_ERS_TX_MD) | - REG_MSK(QSPIC, QSPIC_ERASECMDB_REG, QSPIC_EAD_TX_MD) | - REG_MSK(QSPIC, QSPIC_ERASECMDB_REG, QSPIC_ERSRES_HLD) | - REG_MSK(QSPIC, QSPIC_ERASECMDB_REG, QSPIC_ERS_CS_HI))) | - BITS32(QSPIC, QSPIC_ERASECMDB_REG, QSPIC_ERS_TX_MD, inst_phase) | - BITS32(QSPIC, QSPIC_ERASECMDB_REG, QSPIC_EAD_TX_MD, addr_phase) | - BITS32(QSPIC, QSPIC_ERASECMDB_REG, QSPIC_ERSRES_HLD, hclk_cycles) | - BITS32(QSPIC, QSPIC_ERASECMDB_REG, QSPIC_ERS_CS_HI, cs_hi_cycles); -} - -/** - * \brief Set up write enable instruction - * - * Instruction setup by this function will be executed before erase. - * - * \param [in] write_enable code value of the write enable instruction - * \param [in] inst_phase mode of the QSPI Bus during the instruction phase - * - * \sa hw_qspi_erase_block - * \sa hw_qspi_set_erase_instruction - * - */ -static inline void hw_qspi_set_write_enable_instruction(uint8_t write_enable, - HW_QSPI_BUS_MODE inst_phase) - __attribute((always_inline)); - -static inline void hw_qspi_set_write_enable_instruction(uint8_t write_enable, - HW_QSPI_BUS_MODE inst_phase) -{ - HW_QSPIC_REG_SETF(ERASECMDA, WEN_INST, write_enable); - HW_QSPIC_REG_SETF(ERASECMDB, WEN_TX_MD, inst_phase); -} - -/** - * \brief Set up erase suspend/resume instructions - * - * \param [in] erase_suspend_inst code value of the erase suspend instruction. - * \param [in] suspend_inst_phase mode of the QSPI Bus during the instruction phase - * of the suspend instruction - * \param [in] erase_resume_inst code value of the erase resume instruction. - * \param [in] resume_inst_phase mode of the QSPI Bus during the instruction phase - * of the resume instruction - * \param [in] minimum_delay defines the minimum time distance between the instruction - * erase suspend and the previous instruction erase resume. - * This delay will be also applied after the Erase command. - * 0 - don't wait. The controller starts the erase suspend procedure - * immediately, - * 1..63 - controller waits at least this number of 288kHz clock cycles - * before the suspension of erasing. Time starts counting after - * the end of the previous erase resume - * - */ -static inline void hw_qspi_set_suspend_resume_instructions(uint8_t erase_suspend_inst, - HW_QSPI_BUS_MODE suspend_inst_phase, - uint8_t erase_resume_inst, - HW_QSPI_BUS_MODE resume_inst_phase, - uint8_t minimum_delay) - __attribute((always_inline)); - -static inline void hw_qspi_set_suspend_resume_instructions(uint8_t erase_suspend_inst, - HW_QSPI_BUS_MODE suspend_inst_phase, - uint8_t erase_resume_inst, - HW_QSPI_BUS_MODE resume_inst_phase, - uint8_t minimum_delay) -{ - QSPIC->QSPIC_ERASECMDA_REG = - (QSPIC->QSPIC_ERASECMDA_REG & - ~(REG_MSK(QSPIC, QSPIC_ERASECMDA_REG, QSPIC_SUS_INST) | - REG_MSK(QSPIC, QSPIC_ERASECMDA_REG, QSPIC_RES_INST))) | - BITS32(QSPIC, QSPIC_ERASECMDA_REG, QSPIC_SUS_INST, erase_suspend_inst) | - BITS32(QSPIC, QSPIC_ERASECMDA_REG, QSPIC_RES_INST, erase_resume_inst); - QSPIC->QSPIC_ERASECMDB_REG = - (QSPIC->QSPIC_ERASECMDB_REG & - ~(REG_MSK(QSPIC, QSPIC_ERASECMDB_REG, QSPIC_SUS_TX_MD) | - REG_MSK(QSPIC, QSPIC_ERASECMDB_REG, QSPIC_RES_TX_MD) | - REG_MSK(QSPIC, QSPIC_ERASECMDB_REG, QSPIC_RESSUS_DLY))) | - BITS32(QSPIC, QSPIC_ERASECMDB_REG, QSPIC_SUS_TX_MD, suspend_inst_phase) | - BITS32(QSPIC, QSPIC_ERASECMDB_REG, QSPIC_RES_TX_MD, resume_inst_phase) | - BITS32(QSPIC, QSPIC_ERASECMDB_REG, QSPIC_RESSUS_DLY, minimum_delay); -} - -/** - * \brief Set status command - * - * This command will be send by QSPI controller when it needs to check status of flash memory. - * This command is also send indirectly when hw_qspi_get_erase_status is called. - * - * \param [in] inst instruction for read status - * \param [in] inst_phase mode of the QSPI Bus during the instruction phase of the read - * status instruction - * \param [in] receive_phase mode of the QSPI Bus during the receive status phase of - * the read status instruction - * \param [in] busy_pos it describes which bit from the bits of status represents - * the Busy bit (7 - 0) - * \param [in] busy_val defines the value of the Busy bit which means that the flash is busy - * 0 - flash is busy when the Busy bit is equal to 0, - * 1 - flash is busy when the Busy bit is equal to 1 - * \param [in] read_delay defines the minimum time distance between the instruction - * read status register and previous instructions like erase or - * resume. The same delay will be also applied after the Erase command. - * 0 - don't wait. The controller starts to read the Flash memory - * status register immediately. - * 1..63 - controller waits at least the number of QSPI_CLK - * cycles and afterwards it starts to read the Flash memory status - * register. Time starts counting after the end of the previous - * erase/resume. - * \param [in] sts_delay defines the register to count the delay to wait for the FLASH Status - * Register read after an erase or erase/ resume command. - * 0 - delay is controlled by the \p read_dealy (QSPIC_RESSTS_DLY) - * which counts on the qspi clock, - * 1 - delay is controlled by the \p minimum_delay value passed to - * hw_qspi_set_suspend_resume_instructions (QSPIC_RESSUS_DLY) which - * counts on the 288 kHz clock - * - * \sa hw_qspi_set_suspend_resume_instructions - * \sa hw_qspi_get_erase_status - * - */ -static inline void hw_qspi_set_read_status_instruction(uint8_t inst, - HW_QSPI_BUS_MODE inst_phase, - HW_QSPI_BUS_MODE receive_phase, - uint8_t busy_pos, - uint8_t busy_val, - uint8_t read_delay, - uint8_t sts_delay) - __attribute((always_inline)); - -static inline void hw_qspi_set_read_status_instruction(uint8_t inst, - HW_QSPI_BUS_MODE inst_phase, - HW_QSPI_BUS_MODE receive_phase, - uint8_t busy_pos, - uint8_t busy_val, - uint8_t read_delay, - uint8_t sts_delay) -{ - QSPIC->QSPIC_STATUSCMD_REG = - BITS32(QSPIC, QSPIC_STATUSCMD_REG, QSPIC_BUSY_VAL, busy_val) | - BITS32(QSPIC, QSPIC_STATUSCMD_REG, QSPIC_BUSY_POS , busy_pos) | - BITS32(QSPIC, QSPIC_STATUSCMD_REG, QSPIC_RSTAT_RX_MD, receive_phase) | - BITS32(QSPIC, QSPIC_STATUSCMD_REG, QSPIC_RSTAT_TX_MD, inst_phase) | - BITS32(QSPIC, QSPIC_STATUSCMD_REG, QSPIC_RSTAT_INST, inst) | - BITS32(QSPIC, QSPIC_STATUSCMD_REG, QSPIC_STSDLY_SEL, sts_delay) | - BITS32(QSPIC, QSPIC_STATUSCMD_REG, QSPIC_RESSTS_DLY, read_delay); -} - -/** - * \brief Erase block/sector of flash memory - * - * For this function to work, erase instructions must be set up - * with hw_qspi_set_erase_instruction. - * User should call hw_qspi_get_erase_status to check if block erased. - * - * \note If user doesn't call hw_qspi_get_erase_status that returns status 0 - * QSPI controller will not be able to switch to manual mode. - * - * \param [in] addr memory address of block/sector thats is requested to be erased - * for 24 bits addressing, bits [23:12] determine the block/sector - * address bits. Bits [11:0] are ignored by the controller. - * For 32 bits addressing, bits [31:12] determine the block/sectors - * address bits. Bits [11:0] are ignored by the controller - * - * \sa hw_qspi_set_erase_instruction - * \sa hw_qspi_get_erase_status - * \sa hw_qspi_set_automode - * - */ -void hw_qspi_erase_block(uint32_t addr); - -/** - * \brief Get erase status - * - * \return progress of sector/block erasing - * 0 = no erase, - * 1 = pending erase request, - * 2 = erase procedure is running, - * 3 = suspended erase procedure, - * 4 = finishing the erase procedure - * - */ -static inline uint8_t hw_qspi_get_erase_status(void) __attribute__((always_inline)); - -static inline uint8_t hw_qspi_get_erase_status(void) -{ - QSPIC->QSPIC_CHCKERASE_REG = 0; - return HW_QSPIC_REG_GETF(ERASECTRL, ERS_STATE); -} - -/** - * \brief Set burst break sequence - * - * \param [in] sequence value will be transmitted as the burst break sequence - * \param [in] mode mode of the QSPI Bus during the transmission of the burst break sequence - * \param [in] size size of Burst Break Sequence - * \param [in] dis_out disable output during the transmission of the second half (sequence[3:0]). - * Setting this bit is only useful if size = 1. - * 0 - controller drives the QSPI bus during the transmission - * of the sequence[3:0], - * 1 - controller leaves the QSPI bus in Hi-Z during the transmission - * of the sequence[3:0] - * - */ -static inline void hw_qspi_set_break_sequence(uint16_t sequence, HW_QSPI_BUS_MODE mode, - HW_QSPI_BREAK_SEQ_SIZE size, uint8_t dis_out) - __attribute__((always_inline)); - -static inline void hw_qspi_set_break_sequence(uint16_t sequence, HW_QSPI_BUS_MODE mode, - HW_QSPI_BREAK_SEQ_SIZE size, uint8_t dis_out) -{ - QSPIC->QSPIC_BURSTBRK_REG = - BITS32(QSPIC, QSPIC_BURSTBRK_REG, QSPIC_SEC_HF_DS, dis_out) | - BITS32(QSPIC, QSPIC_BURSTBRK_REG, QSPIC_BRK_SZ, size) | - BITS32(QSPIC, QSPIC_BURSTBRK_REG, QSPIC_BRK_TX_MD, mode) | - BITS32(QSPIC, QSPIC_BURSTBRK_REG, QSPIC_BRK_EN, 1) | - BITS32(QSPIC, QSPIC_BURSTBRK_REG, QSPIC_BRK_WRD, sequence); -} - -/** - * \brief Disable burst break sequence - * - */ -static inline void hw_qspi_disable_burst_break_sequence(void) __attribute__((always_inline)); - -static inline void hw_qspi_disable_burst_break_sequence(void) -{ - HW_QSPIC_REG_SETF(BURSTBRK, BRK_EN, 0); -} - -/** - * \brief Set configuration of QSPI pads - * - * \param [in] rate QSPI pads slew rate control - * \param [in] current QSPI pads drive current - * - */ -void hw_qspi_set_pads(HW_QSPI_SLEW_RATE rate, HW_QSPI_DRIVE_CURRENT current); - -/** - * \brief QSPI controller initialization - * - * This function will enable QSPI controller in manual mode. - * - * \note This function doesn't change QSPI_DIV - * - */ -void hw_qspi_init(const qspi_config *cfg); - -/** - * \brief Enable QSPI controller clock - * - */ -static inline void hw_qspi_enable_clock(void) __attribute__((always_inline)); - -static inline void hw_qspi_enable_clock(void) -{ - GLOBAL_INT_DISABLE(); - CRG_TOP->CLK_AMBA_REG |= 1 << REG_POS(CRG_TOP, CLK_AMBA_REG, QSPI_ENABLE); - GLOBAL_INT_RESTORE(); -} - -/** - * \brief Disable QSPI controller clock - * - */ -static inline void hw_qspi_disable_clock(void) __attribute__((always_inline)); - -static inline void hw_qspi_disable_clock(void) -{ - GLOBAL_INT_DISABLE(); - CRG_TOP->CLK_AMBA_REG &= ~REG_MSK(CRG_TOP, CLK_AMBA_REG, QSPI_ENABLE); - GLOBAL_INT_RESTORE(); -} - -/** - * \brief Set the QSPI clock divider - * - * \param [in] div QSPI clock divider - * - * \sa HW_QSPI_DIV - */ -static inline void hw_qspi_set_div(HW_QSPI_DIV div) __attribute__((always_inline)); - -static inline void hw_qspi_set_div(HW_QSPI_DIV div) -{ - GLOBAL_INT_DISABLE(); - REG_SETF(CRG_TOP, CLK_AMBA_REG, QSPI_DIV, div); - GLOBAL_INT_RESTORE(); -} - -/** - * \brief Get the QSPI clock divider - * - * \return the QSPI clock divider setting - * - * \sa HW_QSPI_DIV - */ -static inline HW_QSPI_DIV hw_qspi_get_div(void) __attribute__((always_inline)); - -static inline HW_QSPI_DIV hw_qspi_get_div(void) -{ - return REG_GETF(CRG_TOP, CLK_AMBA_REG, QSPI_DIV); -} - -#endif /* dg_configUSE_HW_QSPI */ - -#endif /* HW_QSPI_H_ */ - -/** - * \} - * \} - * \} - */ diff --git a/third_party/dialog/DialogSDK/bsp/peripherals/include/hw_rf.h b/third_party/dialog/DialogSDK/bsp/peripherals/include/hw_rf.h deleted file mode 100644 index 7a6a64e85..000000000 --- a/third_party/dialog/DialogSDK/bsp/peripherals/include/hw_rf.h +++ /dev/null @@ -1,331 +0,0 @@ -/** - * \addtogroup BSP - * \{ - * \addtogroup DEVICES - * \{ - * \addtogroup RF - * \{ - * \brief Radio Control - */ - -/** - ***************************************************************************************** - * - * @file hw_rf.h - * - * @brief Radio module (RF) Low Level Driver API. - * - * Copyright (c) 2016, Dialog Semiconductor - * All rights reserved. - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. Neither the name of the copyright holder nor the names of its contributors - * may be used to endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, - * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, - * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED - * OF THE POSSIBILITY OF SUCH DAMAGE. - * - * - ***************************************************************************************** - */ - -#ifndef HW_RF_H_ -#define HW_RF_H_ - -#if dg_configUSE_HW_RF - -#include -#include "sdk_defs.h" - -#include "hw_cpm.h" - -#if dg_configFEM == FEM_SKY66112_11 -#include "hw_fem_sky66112-11.h" -#endif - -typedef struct __attribute__ ((__packed__)) { - uint8_t tx_power_ble: 4; - uint8_t tx_power_ftdf: 4; -} hw_rf_tx_power_luts_t; - -extern hw_rf_tx_power_luts_t rf_tx_power_luts; - -/** - * \brief Power LUT setting - * - */ -typedef enum { - HW_RF_PWR_LUT_0dbm = 0, /**< TX PWR attenuation 0 dbm */ - HW_RF_PWR_LUT_m1dbm = 1, /**< TX PWR attenuation -1 dbm */ - HW_RF_PWR_LUT_m2dbm = 2, /**< TX PWR attenuation -2 dbm */ - HW_RF_PWR_LUT_m3dbm = 3, /**< TX PWR attenuation -3 dbm */ - HW_RF_PWR_LUT_m4dbm = 4, /**< TX PWR attenuation -4 dbm */ -} HW_RF_PWR_LUT_SETTING; - -/** - * \brief Initializes RF system, and performs the initial calibration - * - * \note The RF PD must be on before this is called - * - * \return True, if iff calib is successful, false otherwise - */ -bool hw_rf_system_init(void); - -/** - * \brief Sets parameters according to their recommended values. - */ -void hw_rf_set_recommended_settings(void); - -/** - * \brief (Re)calibrates RF DC offset. - */ -void hw_rf_dc_offset_calibration(void); - -/** - * \brief (Re)calibrates modulation gain. - */ -void hw_rf_modulation_gain_calibration(bool); - -/** - * \brief Convenience function to (re)calibrate all RF related modules. - * - * \return True if calibration (specifically, the iff calibration part) - * succeeds, false if not - */ -bool hw_rf_calibration(void); - -/** - * \brief Start Calibration procedure and return. - * - * This will block for some time in order to perform - * the first part of calibration (IFF, DC offset and the start of gain calib). - * Interrupts must be disabled by the caller. - * - * \return True if calibration was successful, false if not (i.e. iff calib hang) - * - */ -bool hw_rf_start_calibration(void); - -#if dg_configBLACK_ORCA_IC_REV == BLACK_ORCA_IC_REV_A -/** - * \brief Set TX Power - * - * This actually sets the index of the RF_TX_PWER_LUT_X_REG to use. - * - * \param [in] lut The TX power attenuation setting - * - * \warning Do not call this function before recommended settings are applied - */ -void hw_rf_set_tx_power(HW_RF_PWR_LUT_SETTING lut); -#else - -#ifdef CONFIG_USE_BLE -/** - * \brief Set TX Power for BLE - * - * This actually sets the index of the RF_TX_PWR_LUT_X_REG to use. - * - * \param [in] lut The TX power attenuation setting - * - * \warning Do not call this function before recommended settings are applied - */ -void hw_rf_set_tx_power_ble(HW_RF_PWR_LUT_SETTING lut); -#endif - -#ifdef CONFIG_USE_FTDF -/** - * \brief Set TX Power for FTDF - * - * This actually sets the index of the RF_TX_PWR_LUT_X_REG to use. - * - * \param [in] lut The TX power attenuation setting - * - * \warning Do not call this function before recommended settings are applied - */ -void hw_rf_set_tx_power_ftdf(HW_RF_PWR_LUT_SETTING lut); -#endif - -/** - * \brief Set TX Power - * - * This actually sets the index of the RF_TX_PWR_LUT_X_REG to use. - * - * \param [in] lut The TX power attenuation setting - * - * \deprecated This function is deprecated since it can only set - * BLE and FTDF TX power with the same value. Use hw_rf_set_tx_power_ble() - * and hw_rf_set_tx_power_ftdf() instead. - * - * \warning Do not call this function before recommended settings are applied - */ -static inline void hw_rf_set_tx_power(HW_RF_PWR_LUT_SETTING lut) -{ -#ifdef CONFIG_USE_BLE - hw_rf_set_tx_power_ble(lut); -#endif -#ifdef CONFIG_USE_FTDF - hw_rf_set_tx_power_ftdf(lut); -#endif -} -#endif - -/** - * \brief Turns on RF module. - */ -static inline void hw_rf_poweron(void) __attribute__((always_inline)); - -static inline void hw_rf_poweron(void) -{ - if ((dg_configUSE_BOD == 1) && ((dg_configBLACK_ORCA_IC_REV == BLACK_ORCA_IC_REV_A) - || ((dg_configUSE_AUTO_CHIP_DETECTION == 1) && (CHIP_IS_AE)))) { - hw_cpm_deactivate_bod_protection(); - } - - /* If PD_RAD is up, make sure to power it down to issue a reset */ - if (REG_GETF(CRG_TOP, SYS_STAT_REG, RAD_IS_UP)) { - if ((dg_configUSE_BOD == 1) && ((dg_configBLACK_ORCA_IC_REV == BLACK_ORCA_IC_REV_A) - || ((dg_configUSE_AUTO_CHIP_DETECTION == 1) && (CHIP_IS_AE)))) { - hw_cpm_delay_usec(30); - } - GLOBAL_INT_DISABLE(); - REG_SET_BIT(CRG_TOP, PMU_CTRL_REG, RADIO_SLEEP); - GLOBAL_INT_RESTORE(); - while (REG_GETF(CRG_TOP, SYS_STAT_REG, RAD_IS_DOWN) == 0x0); - } - - GLOBAL_INT_DISABLE(); - REG_CLR_BIT(CRG_TOP, PMU_CTRL_REG, RADIO_SLEEP); - GLOBAL_INT_RESTORE(); - while (!REG_GETF(CRG_TOP, SYS_STAT_REG, RAD_IS_UP)); - - if ((dg_configUSE_BOD == 1) && ((dg_configBLACK_ORCA_IC_REV == BLACK_ORCA_IC_REV_A) - || ((dg_configUSE_AUTO_CHIP_DETECTION == 1) && (CHIP_IS_AE)))) { - hw_cpm_delay_usec(30); - hw_cpm_activate_bod_protection(); - } - - // Enable the PLLdig/RFCU clock - GLOBAL_INT_DISABLE(); - REG_SET_BIT(CRG_TOP, CLK_RADIO_REG, RFCU_ENABLE); - REG_SETF(CRG_TOP, CLK_RADIO_REG, RFCU_DIV, 1); - GLOBAL_INT_RESTORE(); - -#if dg_configFEM == FEM_SKY66112_11 - hw_fem_start(); -#endif -} - -/** - * \brief Turns off RF module. - */ -static inline void hw_rf_poweroff() -{ -#if dg_configFEM == FEM_SKY66112_11 - hw_fem_stop(); -#endif - - if ((dg_configUSE_BOD == 1) && ((dg_configBLACK_ORCA_IC_REV == BLACK_ORCA_IC_REV_A) - || ((dg_configUSE_AUTO_CHIP_DETECTION == 1) && (CHIP_IS_AE)))) { - hw_cpm_deactivate_bod_protection(); - hw_cpm_delay_usec(30); - } - - GLOBAL_INT_DISABLE(); - REG_SET_BIT(CRG_TOP, PMU_CTRL_REG, RADIO_SLEEP); - GLOBAL_INT_RESTORE(); - while (!REG_GETF(CRG_TOP, SYS_STAT_REG, RAD_IS_DOWN)); - - if ((dg_configUSE_BOD == 1) && ((dg_configBLACK_ORCA_IC_REV == BLACK_ORCA_IC_REV_A) - || ((dg_configUSE_AUTO_CHIP_DETECTION == 1) && (CHIP_IS_AE)))) { - hw_cpm_delay_usec(30); - hw_cpm_activate_bod_protection(); - } -} - -/** - * \brief Sets parameters according to their recommended values, taking RF state into account. - * - * Acts like \ref hw_rf_set_recommended_settings but makes sure that the RF power domain is on and - * unconfigured. - * Interrupts must be disabled by the caller. - * - */ -void hw_rf_request_recommended_settings(void); - -/** - * \brief Requests that the RF is turned on - * - * Requests that the RF is turned on, if not already on. - * Interrupts must be disabled by the caller. - * - * \param [in] mode_ble True, if the rf is needed for ble - */ -__RETAINED_CODE void hw_rf_request_on(bool mode_ble); - -/** - * \brief Requests that the RF is turned off - * - * Requests that the RF is turned off, if not already off. - * The RF will be turned off only if there are no more - * requests (ie. all requesters have called hw_rf_request_off()) - * Interrupts must be disabled by the caller. - * - * \param [in] mode_ble True, if the rf was needed for ble - */ -void hw_rf_request_off(bool mode_ble); - -/** - * \brief Start transmitting a continuous wave (unmodulated transmission) - * - * \param [in] mode is the mode to use. 1: BLE, 2 or 3: FTDF (0: Normal, use hw_rf_stop_*) - * - * \param [in] ch is the Channel to transmit on, calculated as: - * (mode is BLE) ch = (F – 2402) / 2, where F ranges from 2402 MHz to 2480 MHz. - * Range: 0x00 – 0x27. - * (mode is FTDF) ch = (F – 2405) / 5, where F ranges from 2405 MHz to 2480 MHz. - * Range: 0x00 – 0xf. - */ -void hw_rf_start_continuous_wave(uint8_t mode, uint8_t ch); - -/** - * \brief Start reception of a continuous wave (unmodulated reception) - * - * \param [in] mode is the mode to use. 1: BLE, 2 or 3: FTDF (0: Normal, use hw_rf_stop_*) - * - * \param [in] ch is the Channel to receive on, calculated as: - * (mode is BLE) ch = (F – 2402) / 2, where F ranges from 2402 MHz to 2480 MHz. - * Range: 0x00 – 0x27. - * (mode is FTDF) ch = (F – 2405) / 5, where F ranges from 2405 MHz to 2480 MHz. - * Range: 0x00 – 0xf. - */ -void hw_rf_start_continuous_wave_rx(uint8_t mode, uint8_t ch); - -/** - * \brief Stop transmitting a continuous wave (unmodulated transmission) - * - */ -void hw_rf_stop_continuous_wave(void); - -#endif /* dg_configUSE_HW_RF */ - -#endif /* HW_RF_H_ */ - -/** - * \} - * \} - * \} - */ diff --git a/third_party/dialog/DialogSDK/bsp/peripherals/include/hw_timer0.h b/third_party/dialog/DialogSDK/bsp/peripherals/include/hw_timer0.h deleted file mode 100644 index c5dc23a56..000000000 --- a/third_party/dialog/DialogSDK/bsp/peripherals/include/hw_timer0.h +++ /dev/null @@ -1,385 +0,0 @@ -/** - * \addtogroup BSP - * \{ - * \addtogroup DEVICES - * \{ - * \addtogroup Timer0 - * \{ - * \brief Timer0 - */ - -/** - ***************************************************************************************** - * - * @file hw_timer0.h - * - * @brief Definition of API for the Timer0 Low Level Driver. - * - * Copyright (c) 2016, Dialog Semiconductor - * All rights reserved. - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. Neither the name of the copyright holder nor the names of its contributors - * may be used to endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, - * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, - * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED - * OF THE POSSIBILITY OF SUCH DAMAGE. - * - * - ***************************************************************************************** - */ - -#ifndef HW_TIMER0_H_ -#define HW_TIMER0_H_ - -#if dg_configUSE_HW_TIMER0 - -#include -#include -#include - - -/** - * \brief Get the mask of a field of an TIMER0 register. - * - * \param [in] reg is the register to access - * \param [in] field is the register field to access - * - */ -#define HW_TIMER0_REG_FIELD_MASK(reg, field) \ - (GP_TIMERS_TIMER0_##reg##_REG_##field##_Msk) - -/** - * \brief Get the bit position of a field of an TIMER0 register. - * - * \param [in] reg is the register to access - * \param [in] field is the register field to access - * - */ -#define HW_TIMER0_REG_FIELD_POS(reg, field) \ - (GP_TIMERS_TIMER0_##reg##_REG_##field##_Pos) - -/** - * \brief Get the value of a field of an TIMER0 register. - * - * \param [in] reg is the register to access - * \param [in] field is the register field to write - * - * \return the value of the register field - * - */ -#define HW_TIMER0_REG_GETF(reg, field) \ - ((GP_TIMERS->TIMER0_##reg##_REG & (GP_TIMERS_TIMER0_##reg##_REG_##field##_Msk)) >> (GP_TIMERS_TIMER0_##reg##_REG_##field##_Pos)) - -/** - * \brief Set the value of a field of an TIMER0 register. - * - * \param [in] reg is the register to access - * \param [in] field is the register field to write - * \param [in] new_val is the value to write - * - */ -#define HW_TIMER0_REG_SETF(reg, field, new_val) \ - GP_TIMERS->TIMER0_##reg##_REG = ((GP_TIMERS->TIMER0_##reg##_REG & ~(GP_TIMERS_TIMER0_##reg##_REG_##field##_Msk)) | \ - ((GP_TIMERS_TIMER0_##reg##_REG_##field##_Msk) & ((new_val) << (GP_TIMERS_TIMER0_##reg##_REG_##field##_Pos)))) - - -/** - * \brief Clock source for timer - * - */ -typedef enum { - HW_TIMER0_CLK_SRC_SLOW = 0, /**< 32kHz (slow) clock */ - HW_TIMER0_CLK_SRC_FAST = 1 /**< 2/4/8/16MHz (fast) clock */ -} HW_TIMER0_CLK_SRC; - -/** - * \brief Fast clock division factor - * - */ -typedef enum { - HW_TIMER0_FAST_CLK_DIV_1 = 0, /**< divide by 1 */ - HW_TIMER0_FAST_CLK_DIV_2, /**< divide by 2 */ - HW_TIMER0_FAST_CLK_DIV_4, /**< divide by 4 */ - HW_TIMER0_FAST_CLK_DIV_8, /**< divide by 8 */ -} HW_TIMER0_FAST_CLK_DIV; - -/** - * \brief PWM mode - * - */ -typedef enum { - HW_TIMER0_MODE_PWM = 0, /**< PWM signal is '1' during high state */ - HW_TIMER0_MODE_CLOCK = 1 /**< PWM signal is clock divided by 2 during high state */ -} HW_TIMER0_MODE; - -/** - * \brief Timer interrupt callback - * - */ -typedef void (*hw_timer0_interrupt_cb)(void); - -/* - * \brief Timer configuration - * - */ -typedef struct { - HW_TIMER0_CLK_SRC clk_src; /**< clock source */ - HW_TIMER0_FAST_CLK_DIV fast_clk_div; /**< clock division factor (only applicable when fast clock is selected as source) */ - bool on_clock_div; /**< enable ON-counter clock divider (clock for ON-counter is divided by 10) */ - uint16_t on_reload; /**< reload value for ON-counter */ - uint16_t t0_reload_m; /**< reload value for T0-counter M-register */ - uint16_t t0_reload_n; /**< reload value for T0-counter N-register */ -} timer0_config; - -/** - * \brief Initialize the timer - * - * Turn on clock for timer and configure timer. After initialization both timer and its interrupt - * are disabled. \p cfg can be NULL - no configuration is performed in such case. - * - * \param [in] cfg configuration - * - */ -void hw_timer0_init(const timer0_config *cfg); - -/** - * \brief Timer configuration - * - * Shortcut to call appropriate configuration function. If \p cfg is NULL, this function does - * nothing. - * - * \param [in] cfg configuration - * - */ -void hw_timer0_configure(const timer0_config *cfg); - -/** - * \brief Register an interrupt handler - * - * \param [in] handler Function pointer to call when timer interrupt occurs - * - */ -void hw_timer0_register_int(hw_timer0_interrupt_cb handler); - -/** - * \brief Unregister an interrupt handler - * - */ -void hw_timer0_unregister_int(void); - -/** - * \brief Enable the timer - * - */ -static inline void hw_timer0_enable(void) -{ - HW_TIMER0_REG_SETF(CTRL, TIM0_CTRL, 1); -} - -/** - * \brief Disable the timer - * - */ -static inline void hw_timer0_disable(void) -{ - HW_TIMER0_REG_SETF(CTRL, TIM0_CTRL, 0); -} - -/** - * \brief Set clock source for timer - * - * \param [in] clk_src clock source - * - * \sa TIMER0_CLK_SRC - * - */ -static inline void hw_timer0_set_clock_source(HW_TIMER0_CLK_SRC clk_src) -{ - HW_TIMER0_REG_SETF(CTRL, TIM0_CLK_SEL, clk_src); -} - -/** - * \brief Get current clock source for timer - * - * \return clock source - * - */ -static inline HW_TIMER0_CLK_SRC hw_timer0_get_clock_source(void) -{ - return HW_TIMER0_REG_GETF(CTRL, TIM0_CLK_SEL); -} - -/** - * \brief Set fast clock division factor - * - * \param [in] div division factor - * - * \sa TIMER0_FAST_CLK_DIV - * - */ -static inline void hw_timer0_set_fast_clock_div(HW_TIMER0_FAST_CLK_DIV div) -{ - GLOBAL_INT_DISABLE(); - REG_SETF(CRG_TOP, CLK_TMR_REG, TMR0_DIV, div); - GLOBAL_INT_RESTORE(); -} - -/** - * \brief Get current fast clock division factor - * - * \return division factor - * - */ -static inline HW_TIMER0_FAST_CLK_DIV hw_timer0_get_fast_clock_div(void) -{ - return REG_GETF(CRG_TOP, CLK_TMR_REG, TMR0_DIV); -} - -/** - * \brief Set state of clock divider for ON-counter - * - * Once enabled, ON-counter clock will be divided by 10. - * - * \param [in] enabled clock divider status - * - */ -static inline void hw_timer0_set_on_clock_div(bool enabled) -{ - HW_TIMER0_REG_SETF(CTRL, TIM0_CLK_DIV, !enabled); -} - -/** - * \brief Get current state of clock divider for ON-counter - * - * \return clock divider status - * - */ -static inline bool hw_timer0_get_on_clock_div(void) -{ - return !HW_TIMER0_REG_GETF(CTRL, TIM0_CLK_DIV); -} - -/** - * \brief Set PWM mode for timer - * - * \param [in] mode PWM mode - * - * \sa TIMER0_MODE - * - */ -static inline void hw_timer0_set_pwm_mode(HW_TIMER0_MODE mode) -{ - HW_TIMER0_REG_SETF(CTRL, PWM_MODE, mode); -} - -/** - * \brief Get current PWM mode for timer - * - * \return PWM mode - * - */ -static inline HW_TIMER0_MODE hw_timer0_get_pwm_mode(void) -{ - return HW_TIMER0_REG_GETF(CTRL, PWM_MODE); -} - -/** - * \brief Set reload value for T0-counter - * - * T0 counter value is decremented on each clock cycle. At the beginning it's loaded from M-register - * and then, once reached zero, loaded from N-register (and then M and N again). - * - * PWM0 is high when counting down M-register and low when counting down N-register. - * For PWM1 is the opposite. - * - * \param [in] m_value M-register reload value - * \param [in] n_value N-register reload value - * - */ -static inline void hw_timer0_set_t0_reload(uint16_t m_value, uint16_t n_value) -{ - GP_TIMERS->TIMER0_RELOAD_M_REG = m_value; - GP_TIMERS->TIMER0_RELOAD_N_REG = n_value; -} - -/** - * \brief Set reload value for ON-counter - * - * ON counter value is decremented on each clock cycle. Once ON reaches zero it will remain zero - * until T0 counter completes decrementing N-register value. When this happens, interrupt is - * generated. - * - * \param [in] value reload value - * - * \sa hw_timer0_set_on_clock_div - * - */ -static inline void hw_timer0_set_on_reload(uint16_t value) -{ - GP_TIMERS->TIMER0_ON_REG = value; -} - -/** - * \brief Get T0-counter value - * - * \return counter value - * - */ -static inline uint16_t hw_timer0_get_t0(void) -{ - return (GP_TIMERS->TIMER0_RELOAD_M_REG); -} - -/** - * \brief Get ON-counter value - * - * \return counter value - * - */ -static inline uint16_t hw_timer0_get_on(void) -{ - return (GP_TIMERS->TIMER0_ON_REG); -} - -/** - * \brief Freeze timer - * - */ -static inline void hw_timer0_freeze(void) -{ - GPREG->SET_FREEZE_REG = GPREG_SET_FREEZE_REG_FRZ_SWTIM0_Msk; -} - -/** - * \brief Unfreeze timer - * - */ -static inline void hw_timer0_unfreeze(void) -{ - GPREG->RESET_FREEZE_REG = GPREG_SET_FREEZE_REG_FRZ_SWTIM0_Msk; -} - -#endif /* dg_configUSE_HW_TIMER0 */ - -#endif /* HW_TIMER0_H_ */ - -/** - * \} - * \} - * \} - */ diff --git a/third_party/dialog/DialogSDK/bsp/peripherals/include/hw_timer1.h b/third_party/dialog/DialogSDK/bsp/peripherals/include/hw_timer1.h deleted file mode 100644 index 3a56baaa7..000000000 --- a/third_party/dialog/DialogSDK/bsp/peripherals/include/hw_timer1.h +++ /dev/null @@ -1,1052 +0,0 @@ -/** - * \addtogroup BSP - * \{ - * \addtogroup DEVICES - * \{ - * \addtogroup Timer1 - * \{ - * \brief Timer1 - */ - -/** - ***************************************************************************************** - * - * @file hw_timer1.h - * - * @brief Definition of API for the Timer1 Low Level Driver. - * - * Copyright (c) 2016, Dialog Semiconductor - * All rights reserved. - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. Neither the name of the copyright holder nor the names of its contributors - * may be used to endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, - * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, - * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED - * OF THE POSSIBILITY OF SUCH DAMAGE. - * - * - ***************************************************************************************** - */ - -#ifndef HW_TIMER1_H_ -#define HW_TIMER1_H_ - -#if dg_configUSE_HW_TIMER1 - -#include -#include -#include - - -/** - * \brief Get the mask of a field of an TIMER1 register. - * - * \param [in] reg is the register to access - * \param [in] field is the register field to access - * - */ -#define HW_TIMER1_REG_FIELD_MASK(reg, field) \ - (TIMER1_CAPTIM_##reg##_REG_##field##_Msk) - -/** - * \brief Get the bit position of a field of an TIMER1 register. - * - * \param [in] reg is the register to access - * \param [in] field is the register field to access - * - */ -#define HW_TIMER1_REG_FIELD_POS(reg, field) \ - (TIMER1_CAPTIM_##reg##_REG_##field##_Pos) - -/** - * \brief Get the value of a field of an TIMER1 register. - * - * \param [in] reg is the register to access - * \param [in] field is the register field to write - * - * \return the value of the register field - * - */ -#define HW_TIMER1_REG_GETF(reg, field) \ - ((TIMER1->CAPTIM_##reg##_REG & (TIMER1_CAPTIM_##reg##_REG_##field##_Msk)) >> (TIMER1_CAPTIM_##reg##_REG_##field##_Pos)) - -/** - * \brief Set the value of a field of an TIMER1 register. - * - * \param [in] reg is the register to access - * \param [in] field is the register field to write - * \param [in] new_val is the value to write - * - */ -#define HW_TIMER1_REG_SETF(reg, field, new_val) \ - TIMER1->CAPTIM_##reg##_REG = ((TIMER1->CAPTIM_##reg##_REG & ~(TIMER1_CAPTIM_##reg##_REG_##field##_Msk)) | \ - ((TIMER1_CAPTIM_##reg##_REG_##field##_Msk) & ((new_val) << (TIMER1_CAPTIM_##reg##_REG_##field##_Pos)))) - - -#define EXT_CLK 16 // 16 MHz -#define INT_CLK 32 // 32 kHz - -/** - * \brief Mode of operation - * - * PWM is enabled in both modes. - * - */ -typedef enum { - HW_TIMER1_MODE_TIMER = 0, /**< timer/capture mode */ - HW_TIMER1_MODE_ONESHOT = 1 /**< one-shot mode */ -} HW_TIMER1_MODE; - -/** - * \brief Clock source for timer - * - */ -typedef enum { - HW_TIMER1_CLK_SRC_INT = 0, /**< Internal clock 32 kHz (slow) */ - HW_TIMER1_CLK_SRC_EXT = 1 /**< External clock 2/4/8/16 MHz (fast) */ -} HW_TIMER1_CLK_SRC; - -/** - * \brief Counting direction - * - */ -typedef enum { - HW_TIMER1_DIR_UP = 0, /**< Timer counts up (counter is incremented) */ - HW_TIMER1_DIR_DOWN = 1 /**< Timer counts down (counter is decremented) */ -} HW_TIMER1_DIR; - -/** - * \brief Type of triggering events - * - */ -typedef enum { - HW_TIMER1_TRIGGER_RISING = 0, /**< Event activated rising edge */ - HW_TIMER1_TRIGGER_FALLING = 1 /**< Event activated falling edge */ -} HW_TIMER1_TRIGGER; - -/** - * \brief One shot mode phases - * - */ -typedef enum { - HW_TIMER1_ONESHOT_WAIT = 0, /**< Wait for the event */ - HW_TIMER1_ONESHOT_DELAY = 1, /**< Delay before started */ - HW_TIMER1_ONESHOT_STARTED = 2, /**< Start shot */ - HW_TIMER1_ONESHOT_ACTIVE = 3 /**< Shot is active */ -} HW_TIMER1_ONESHOT; - -/** - * \brief GPIOs for timer1 - * - * Mainly use for mark which GPIO will triggers timer counting. - * - */ -typedef enum { - HW_TIMER1_GPIO_NONE = 0, /**< None of GPIO */ - /* port 0 */ - HW_TIMER1_GPIO_P00 = 1, /**< Port 0, pin 0 */ - HW_TIMER1_GPIO_P01 = 2, /**< Port 0, pin 1 */ - HW_TIMER1_GPIO_P02 = 3, /**< Port 0, pin 2 */ - HW_TIMER1_GPIO_P03 = 4, /**< Port 0, pin 3 */ - HW_TIMER1_GPIO_P04 = 5, /**< Port 0, pin 4 */ - HW_TIMER1_GPIO_P05 = 6, /**< Port 0, pin 5 */ - HW_TIMER1_GPIO_P06 = 7, /**< Port 0, pin 6 */ - HW_TIMER1_GPIO_P07 = 8, /**< Port 0, pin 7 */ - /* port 1 */ - HW_TIMER1_GPIO_P10 = 9, /**< Port 1, pin 0 */ - HW_TIMER1_GPIO_P11 = 10, /**< Port 1, pin 1 */ - HW_TIMER1_GPIO_P12 = 11, /**< Port 1, pin 2 */ - HW_TIMER1_GPIO_P13 = 12, /**< Port 1, pin 3 */ - HW_TIMER1_GPIO_P14 = 13, /**< Port 1, pin 4 */ - HW_TIMER1_GPIO_P15 = 14, /**< Port 1, pin 5 */ - HW_TIMER1_GPIO_P16 = 15, /**< Port 1, pin 6 */ - HW_TIMER1_GPIO_P17 = 16, /**< Port 1, pin 7 */ - /* port 2 */ - HW_TIMER1_GPIO_P20 = 17, /**< Port 2, pin 0 */ - HW_TIMER1_GPIO_P21 = 18, /**< Port 2, pin 1 */ - HW_TIMER1_GPIO_P22 = 19, /**< Port 2, pin 2 */ - HW_TIMER1_GPIO_P23 = 20, /**< Port 2, pin 3 */ - HW_TIMER1_GPIO_P24 = 21, /**< Port 2, pin 4 */ - /* port 3 */ - HW_TIMER1_GPIO_P30 = 22, /**< Port 3, pin 0 */ - HW_TIMER1_GPIO_P31 = 23, /**< Port 3, pin 1 */ - HW_TIMER1_GPIO_P32 = 24, /**< Port 3, pin 2 */ - HW_TIMER1_GPIO_P33 = 25, /**< Port 3, pin 3 */ - HW_TIMER1_GPIO_P34 = 26, /**< Port 3, pin 4 */ - HW_TIMER1_GPIO_P35 = 27, /**< Port 3, pin 5 */ - HW_TIMER1_GPIO_P36 = 28, /**< Port 3, pin 6 */ - HW_TIMER1_GPIO_P37 = 29, /**< Port 3, pin 7 */ - /* port 4 */ - HW_TIMER1_GPIO_P40 = 30, /**< Port 4, pin 0 */ - HW_TIMER1_GPIO_P41 = 31, /**< Port 4, pin 1 */ - HW_TIMER1_GPIO_P42 = 32, /**< Port 4, pin 2 */ - HW_TIMER1_GPIO_P43 = 33, /**< Port 4, pin 3 */ - HW_TIMER1_GPIO_P44 = 34, /**< Port 4, pin 4 */ - HW_TIMER1_GPIO_P45 = 35, /**< Port 4, pin 5 */ - HW_TIMER1_GPIO_P46 = 36, /**< Port 4, pin 6 */ - HW_TIMER1_GPIO_P47 = 37, /**< Port 4, pin 7 */ -} HW_TIMER1_GPIO; - -/** - * \brief Timer interrupt callback - * - */ -typedef void (*hw_timer1_handler_cb)(void); - -/* - * \brief Timer configuration for timer/capture mode - * - * \sa timer1_config - * \sa hw_timer1_configure_timer - * - */ -typedef struct { - HW_TIMER1_DIR direction; /**< counting direction */ - uint32_t reload_val; /**< reload value */ - bool free_run; /**< free-running mode state */ - - HW_TIMER1_GPIO gpio1; /**< 1st GPIO for capture mode */ - HW_TIMER1_TRIGGER trigger1; /**< 1st GPIO capture trigger */ - HW_TIMER1_GPIO gpio2; /**< 2nd GPIO for capture mode */ - HW_TIMER1_TRIGGER trigger2; /**< 2nd GPIO capture trigger */ -} timer1_config_timer_capture; - -/* - * \brief Timer configuration for oneshot mode - * - * \sa timer1_config - * \sa hw_timer1_configure_oneshot - * - */ -typedef struct { - uint16_t delay; /**< delay (ticks) between GPIO event and output pulse */ - uint32_t shot_width; /**< width (ticks) of generated pulse */ - HW_TIMER1_GPIO gpio; /**< GPIO to wait for event */ - HW_TIMER1_TRIGGER trigger; /**< GPIO trigger */ -} timer1_config_oneshot; - -/* - * \brief Timer PWM configuration - * - * \sa timer1_config - * \sa hw_timer1_configure_pwm - * \sa hw_timer1_set_pwm_freq - * \sa hw_timer1_set_pwm_duty_cycle - */ -typedef struct { - uint16_t frequency; /**< frequency */ - uint16_t duty_cycle; /**< duty cycle */ -} timer1_config_pwm; - -/* - * \brief Timer configuration - * - * Only one of \p timer and \p oneshot configuration can be set since they are stored in the same - * union (and will overwrite each other). Proper configuration structure is selected depending on - * timer mode set. - * - * \sa timer1_config_timer_capture - * \sa timer1_config_oneshot - * \sa timer1_config_pwm - * \sa hw_timer1_configure - * - */ -typedef struct { - HW_TIMER1_CLK_SRC clk_src; /**< clock source */ - uint16_t prescaler; /**< clock prescaler */ - - union { - timer1_config_timer_capture timer; /**< configuration for timer/capture mode */ - timer1_config_oneshot oneshot; /**< configuration for oneshot mode */ - }; - timer1_config_pwm pwm; /**< PWM configuration */ -} timer1_config; - - -#if dg_configUSER_CAN_USE_TIMER1 == 1 - -/** - * \brief Timer initialization - * - * Turn on clock for timer and configure timer. After initialization both timer and its interrupt - * are disabled. \p cfg can be NULL - no configuration is performed in such case. - * - * \param [in] mode timer mode - * \param [in] cfg configuration - * - */ -void hw_timer1_init(HW_TIMER1_MODE mode, const timer1_config *cfg); - -/** - * \brief Timer configuration - * - * Shortcut to call appropriate configuration function. If \p cfg is NULL, this function does - * nothing except switching timer to selected mode. - * - * \param [in] mode timer mode - * \param [in] cfg configuration - * - */ -void hw_timer1_configure(HW_TIMER1_MODE mode, const timer1_config *cfg); - -/** - * \brief Timer configuration for timer/capture mode - * - * Shortcut to call appropriate configuration function. This does not switch timer to timer/capture - * mode, it should be done separately using hw_timer1_set_mode(). - * - * \param [in] cfg configuration - * - */ -void hw_timer1_configure_timer(const timer1_config_timer_capture *cfg); - -/** - * \brief Timer configuration for oneshot mode - * - * Shortcut to call appropriate configuration function. This does not switch timer to oneshot - * mode, it should be done separately using hw_timer1_set_mode(). - * - * \param [in] cfg configuration - * - */ -void hw_timer1_configure_oneshot(const timer1_config_oneshot *cfg); - -/** - * \brief Freeze timer - * - */ -static inline void hw_timer1_freeze(void) -{ - GPREG->SET_FREEZE_REG = GPREG_SET_FREEZE_REG_FRZ_SWTIM1_Msk; -} - -/** - * \brief Unfreeze timer - * - */ -static inline void hw_timer1_unfreeze(void) -{ - GPREG->RESET_FREEZE_REG = GPREG_RESET_FREEZE_REG_FRZ_SWTIM1_Msk; -} - -/** - * \brief Check if timer is frozen - * - * \return true if it is frozen else false - * - */ -static inline bool hw_timer1_frozen(void) -{ - return GPREG->SET_FREEZE_REG & GPREG_SET_FREEZE_REG_FRZ_SWTIM1_Msk ? true : false; -} - -/** - * \brief Set clock source of the timer - * - * \param [in] clk clock source of the timer, external or internal - * - */ -static inline void hw_timer1_set_clk(HW_TIMER1_CLK_SRC clk) -{ - HW_TIMER1_REG_SETF(CTRL, CAPTIM_SYS_CLK_EN, clk); -} - -/** - * \brief Set timer clock prescaler - * - * Actual timer frequency is \p timer_freq = \p freq_clock / (\p value + 1) - * - * \param [in] value prescaler - * - */ -static inline void hw_timer1_set_prescaler(uint16_t value) -{ - TIMER1->CAPTIM_PRESCALER_REG = value; -} - -/** - * \brief Set timer reload value - * - * \note This changes the same register value as hw_timer1_set_oneshot_delay() since both parameters - * share the same register (value is interpreted differently depending on timer mode). - * - * \param [in] value reload value - * - * \sa hw_timer1_set_oneshot_delay - * \note For DA14682/3 chips, setting the reload value will also freeze the timer until both - * reload registers are set. - */ -static inline void hw_timer1_set_reload(uint32_t value) -{ -#if (dg_configBLACK_ORCA_IC_REV != BLACK_ORCA_IC_REV_A) && (dg_configUSE_AUTO_CHIP_DETECTION != 1) - bool timer1_frozen = hw_timer1_frozen(); - if (!timer1_frozen) { - hw_timer1_freeze(); - } - TIMER1->CAPTIM_RELOAD_REG = (uint16_t) value; - TIMER1->CAPTIM_RELOAD_HIGH_REG = (uint16_t) value >> 16; - if (!timer1_frozen) { - hw_timer1_unfreeze(); - } -#else - TIMER1->CAPTIM_RELOAD_REG = (uint16_t) value; -#endif -} - -/** - * \brief Set pulse delay in oneshot mode - * - * \note This changes the same register value as hw_timer1_set_reload() since both parameters share - * the same register (value is interpreted differently depending on timer mode). - * - * \param [in] delay delay (ticks) - * - * \sa hw_timer1_set_reload - * - */ -static inline void hw_timer1_set_oneshot_delay(uint32_t delay) -{ - TIMER1->CAPTIM_RELOAD_REG = (uint16_t) delay; -} - -/** - * \brief Set shot width - * - * This applies only to one-shot mode. - * - * \param [in] duration shot phase duration - * - */ -static inline void hw_timer1_set_shot_width(uint32_t duration) -{ - TIMER1->CAPTIM_SHOTWIDTH_REG = (uint16_t) duration; -} - -/** - * \brief Turn on free run mode of the timer - * - */ -static inline void hw_timer1_set_freerun(bool enabled) -{ - HW_TIMER1_REG_SETF(CTRL, CAPTIM_FREE_RUN_MODE_EN, enabled); -} - -/** - * \brief Set a type of the edge which triggers event1 - * - * \param [in] edge type of edge, rising or falling - * - */ -static inline void hw_timer1_set_event1_trigger(HW_TIMER1_TRIGGER edge) -{ - HW_TIMER1_REG_SETF(CTRL, CAPTIM_IN1_EVENT_FALL_EN, edge); -} - -/** - * \brief Set a type of the edge which triggers event2 - * - * \param [in] edge type of edge, rising or falling - * - */ -static inline void hw_timer1_set_event2_trigger(HW_TIMER1_TRIGGER edge) -{ - HW_TIMER1_REG_SETF(CTRL, CAPTIM_IN2_EVENT_FALL_EN, edge); -} - -/** - * \brief Set a GPIO input which triggers event1 - * - * \param [in] gpio GPIO input - * - */ -static inline void hw_timer1_set_event1_gpio(HW_TIMER1_GPIO gpio) -{ - TIMER1->CAPTIM_GPIO1_CONF_REG = gpio; -} - -/** - * \brief Set a GPIO input which triggers event2 - * - * \param [in] gpio GPIO input - * - */ -static inline void hw_timer1_set_event2_gpio(HW_TIMER1_GPIO gpio) -{ - TIMER1->CAPTIM_GPIO2_CONF_REG = gpio; -} - -/** - * \brief Get clock source of the timer - * - * \return clock source - * - */ -static inline HW_TIMER1_CLK_SRC hw_timer1_get_clk(void) -{ - return HW_TIMER1_REG_GETF(CTRL, CAPTIM_SYS_CLK_EN); -} - -/** - * \brief Get timer clock prescaler - * - * Actual timer frequency is \p timer_freq = \p freq_clock / (\p retval + 1) - * - * \return prescaler value - * - * \sa hw_timer1_get_prescaler_val - * - */ -static inline uint16_t hw_timer1_get_prescaler(void) -{ - return TIMER1->CAPTIM_PRESCALER_REG; -} - -/** - * \brief Get timer reload value - * - * \return reload value - * - * \sa hw_timer1_set_reload - * - */ -static inline uint32_t hw_timer1_get_reload(void) -{ - return TIMER1->CAPTIM_RELOAD_REG; -} - -/** - * \brief Get pulse delay in oneshot mode - * - * \return delay (ticks) - * - * \sa hw_timer1_get_oneshot_delay - * - */ -static inline uint32_t hw_timer1_get_oneshot_delay(void) -{ - return TIMER1->CAPTIM_RELOAD_REG; -} - -/** - * \brief Get shot width - * - * This applies only to one-shot mode. - * - * \return shot width value - * - */ -static inline uint32_t hw_timer1_get_shot_width(void) -{ - return TIMER1->CAPTIM_SHOTWIDTH_REG; -} - -/** - * \brief Get free-running mode state - * - * \return free-running mode state - * - */ -static inline bool hw_timer1_get_freerun(void) -{ - return HW_TIMER1_REG_GETF(CTRL, CAPTIM_FREE_RUN_MODE_EN); -} - -/** - * \brief Get a type of the edge which triggers event1 - * - * \return edge type - * - */ -static inline HW_TIMER1_TRIGGER hw_timer1_get_event1_trigger(void) -{ - return HW_TIMER1_REG_GETF(CTRL, CAPTIM_IN1_EVENT_FALL_EN); -} - -/** - * \brief Get a type of the edge which triggers event2 - * - * \return edge type - * - */ -static inline HW_TIMER1_TRIGGER hw_timer1_get_event2_trigger(void) -{ - return HW_TIMER1_REG_GETF(CTRL, CAPTIM_IN2_EVENT_FALL_EN); -} - -/** - * \brief Get a GPIO input which triggers event1 - * - * \return GPIO input - * - */ -static inline HW_TIMER1_GPIO hw_timer1_get_event1_gpio(void) -{ - return TIMER1->CAPTIM_GPIO1_CONF_REG; -} - -/** - * \brief Get a GPIO input which triggers event2 - * - * \return GPIO input - * - */ -static inline HW_TIMER1_GPIO hw_timer1_get_event2_gpio(void) -{ - return TIMER1->CAPTIM_GPIO2_CONF_REG; -} - -/** - * \brief Get the capture time for event on GPIO1 - * - * \return time for event on GPIO1 - * - */ -static inline uint32_t hw_timer1_get_capture1(void) -{ - return TIMER1->CAPTIM_CAPTURE_GPIO1_REG; -} - -/** - * \brief Get the capture time for event on GPIO2 - * - * \return time for event on GPIO2 - * - */ -static inline uint32_t hw_timer1_get_capture2(void) -{ - return TIMER1->CAPTIM_CAPTURE_GPIO2_REG; -} - -/** - * \brief Set the direction of timer counting - * - * \param [in] dir counting direction of the timer, up or down - * - */ -static inline void hw_timer1_set_direction(HW_TIMER1_DIR dir) -{ - HW_TIMER1_REG_SETF(CTRL, CAPTIM_COUNT_DOWN_EN, dir); -} - -/** - * \brief Turn on one shot mode - * - */ -static inline void hw_timer1_set_mode(HW_TIMER1_MODE mode) -{ - HW_TIMER1_REG_SETF(CTRL, CAPTIM_ONESHOT_MODE_EN, mode); -} - -/** - * \brief Turn on capture mode - * - */ -static inline HW_TIMER1_MODE hw_timer1_get_mode(void) -{ - return HW_TIMER1_REG_GETF(CTRL, CAPTIM_ONESHOT_MODE_EN); -} - -/** - * \brief Get the tick count of the timer - * - * \return current value of the timer ticks - * - * \sa hw_timer1_get_prescaler_val - * - */ -static inline uint32_t hw_timer1_get_count(void) -{ -#if (dg_configBLACK_ORCA_IC_REV != BLACK_ORCA_IC_REV_A) && (dg_configUSE_AUTO_CHIP_DETECTION != 1) - uint32_t lo, hi; - GLOBAL_INT_DISABLE(); - do { - lo = TIMER1->CAPTIM_TIMER_VAL_REG; - hi = TIMER1->CAPTIM_TIMER_HVAL_REG; - } while (lo != TIMER1->CAPTIM_TIMER_VAL_REG); - GLOBAL_INT_RESTORE(); - return (hi << 16) | lo; -#else - return TIMER1->CAPTIM_TIMER_VAL_REG; -#endif -} - -/** - * \brief Get the current phase of the one shot mode - * - * \return current phase of the one shot mode - * - */ -static inline HW_TIMER1_ONESHOT hw_timer1_get_oneshot_phase(void) -{ - return HW_TIMER1_REG_GETF(STATUS, CAPTIM_ONESHOT_PHASE); -} - -/** - * \brief Get the current state of IN1 - * - * \return current logic level of IN1 - * - */ -static inline bool hw_timer1_get_gpio1_state(void) -{ - return HW_TIMER1_REG_GETF(STATUS, CAPTIM_IN1_STATE); -} - -/** - * \brief Get the current state of IN2 - * - * \return current logic level of IN2 - * - */ -static inline bool hw_timer1_get_gpio2_state(void) -{ - return HW_TIMER1_REG_GETF(STATUS, CAPTIM_IN2_STATE); -} - -/** - * \brief Get the current prescaler counter value - * - * This is value of internal counter used for prescaling. It can be used to have finer granularity - * when reading timer value. - * - * For reading current setting of prescaler, see hw_timer1_get_prescaler(). - * - * \return current prescaler counter value - * - * \sa hw_timer1_get_count - * \sa hw_timer1_get_prescaler - * - */ -static inline uint16_t hw_timer1_get_prescaler_val(void) -{ - return TIMER1->CAPTIM_PRESCALER_VAL_REG; -} - -/** - * \brief Register an interrupt handler. - * - * \param [in] handler function pointer to handler to call when an interrupt occurs - * - */ -void hw_timer1_register_int(hw_timer1_handler_cb handler); - -/** - * \brief Unregister an interrupt handler - * - */ -void hw_timer1_unregister_int(void); - -#else // (dg_configUSER_CAN_USE_TIMER1 == 0) - -#if dg_configBLACK_ORCA_IC_REV == BLACK_ORCA_IC_REV_A -#define LP_CNT_REG_RANGE ( 16 ) -#else -#define LP_CNT_REG_RANGE ( 32 ) -#endif -#define LP_CNT_MAX_VALUE ( (1ULL << LP_CNT_REG_RANGE) - 1 ) -#define LP_CNT_PRESCALED_MASK ( LP_CNT_MAX_VALUE ) -#if dg_configBLACK_ORCA_IC_REV == BLACK_ORCA_IC_REV_A -#define LP_CNT_NATIVE_MASK ( (1ULL << (LP_CNT_REG_RANGE + dg_configTim1PrescalerBitRange)) - 1 ) -#else -#define LP_CNT_NATIVE_MASK ( (1ULL << (LP_CNT_REG_RANGE)) - 1 ) -#endif - -/** - * \brief Configure timer as tick timer - * - * \details Setup Timer1 for use as a tick timer: - *
    - *
  • use LP clock and prescaler (if configured) - *
  • free running mode - *
  • IRQ masked - *
  • up counter - *
  • timer mode - *
  • disabled - *
- * - */ -void hw_timer1_lp_clk_init(void); - - -/** - * \brief Enable interrupt - * - * \return void - * - */ -static inline void hw_timer1_int_enable(void) __attribute__((always_inline)); - -static inline void hw_timer1_int_enable(void) -{ - HW_TIMER1_REG_SETF(CTRL, CAPTIM_IRQ_EN, 1); - NVIC_ClearPendingIRQ(SWTIM1_IRQn); - NVIC_EnableIRQ(SWTIM1_IRQn); -} - - -/** - * \brief Disable interrupt - * - * \return void - * - */ -static inline void hw_timer1_int_disable(void) __attribute__((always_inline)); - -static inline void hw_timer1_int_disable(void) -{ - NVIC_DisableIRQ(SWTIM1_IRQn); - HW_TIMER1_REG_SETF(CTRL, CAPTIM_IRQ_EN, 0); -} - - -/** - * \brief Get counter's value - * - * \return The current value of the counter (prescaled). - * - */ -static inline uint32_t hw_timer1_get_value(void) __attribute__((always_inline)); - -static inline uint32_t hw_timer1_get_value(void) -{ -#if dg_configBLACK_ORCA_IC_REV == BLACK_ORCA_IC_REV_A - return TIMER1->CAPTIM_TIMER_VAL_REG; -#else - uint32_t lo, hi; - GLOBAL_INT_DISABLE(); - do { - lo = TIMER1->CAPTIM_TIMER_VAL_REG; - hi = TIMER1->CAPTIM_TIMER_HVAL_REG; - } while (lo != TIMER1->CAPTIM_TIMER_VAL_REG); - GLOBAL_INT_RESTORE(); - return (hi << 16) | lo; -#endif -} - - -/** - * \brief Macro to get the current value of the timer, both prescaled and in LP clock cycles. - * - * \details Special care is needed when a prescaler is used. In this case, the - * counting sequence is the following (assuminga prescaler of 3): - * prescaler: 0 1 2 3 0 1 2 3 0 - * counter: 0 1 2 - * - * If not implemented properly then the following may happen: - * - let's assume that we are at the end of the {0, 3} period - * - the counter's value is read and the result is 0 - * - at that moment, the counter increases it's prescaler value (and the counter's value - * respectively), so the time becomes {1, 0} - * - the reading of the prescaler's value will give 0 but {0, 0} is earlier than {0, 3} (when - * the operation started) and this may result in errors in time computations. - * \note This macro should be used inside a critical section. - * - */ -#if dg_configBLACK_ORCA_IC_REV == BLACK_ORCA_IC_REV_A -#define HW_TIMER1_GET_INSTANT(prescaled, fine) \ -do { \ - if (dg_configTim1Prescaler != 0) { \ - uint32_t prescaler_v; \ - \ - do { \ - prescaler_v = TIMER1->CAPTIM_PRESCALER_VAL_REG; \ - prescaled = TIMER1->CAPTIM_TIMER_VAL_REG; \ - } while (prescaler_v != TIMER1->CAPTIM_PRESCALER_VAL_REG); \ - \ - fine = ( (uint32_t)prescaled * (1 + dg_configTim1Prescaler) + prescaler_v); \ - } \ - else { \ - prescaled = TIMER1->CAPTIM_TIMER_VAL_REG; \ - fine = prescaled; \ - } \ -} while (0) -#else -#define HW_TIMER1_GET_INSTANT(prescaled, fine) \ -do { \ - uint32_t lo, hi; \ - do { \ - lo = TIMER1->CAPTIM_TIMER_VAL_REG; \ - hi = TIMER1->CAPTIM_TIMER_HVAL_REG; \ - } while (lo != TIMER1->CAPTIM_TIMER_VAL_REG); \ - prescaled = fine = (hi << 16) | lo; \ -} while (0) -#endif -/** - * \brief Macro to set the trigger value. The previous trigger value is returned to the caller. - * \note For DA14682/3 chips, this macro will disable timer1 interrupt until reload registers - * programmed so that false interrupts are avoided. - */ -#if dg_configBLACK_ORCA_IC_REV == BLACK_ORCA_IC_REV_A -#define HW_TIMER1_SET_TRIGGER(value, last_value) \ -do { \ - last_value = TIMER1->CAPTIM_RELOAD_REG; \ - TIMER1->CAPTIM_RELOAD_REG = value; \ -} while (0) -#else -#define HW_TIMER1_SET_TRIGGER(value, last_value) \ -do { \ - bool timer1_irq_en = \ - TIMER1->CAPTIM_CTRL_REG & TIMER1_CAPTIM_CTRL_REG_CAPTIM_IRQ_EN_Msk ? true : false; \ - last_value = TIMER1->CAPTIM_RELOAD_REG | \ - ((uint32_t) TIMER1->CAPTIM_RELOAD_HIGH_REG) << 16; \ - if (timer1_irq_en) { \ - TIMER1->CAPTIM_CTRL_REG &= ~TIMER1_CAPTIM_CTRL_REG_CAPTIM_IRQ_EN_Msk; \ - } \ - TIMER1->CAPTIM_RELOAD_REG = (uint16_t) value; \ - TIMER1->CAPTIM_RELOAD_HIGH_REG = (uint16_t) ((value) >> 16); \ - if (timer1_irq_en) { \ - TIMER1->CAPTIM_CTRL_REG |= TIMER1_CAPTIM_CTRL_REG_CAPTIM_IRQ_EN_Msk; \ - } \ -} while (0) -#endif - -/** - * \brief Get trigger value - * - * \return The current value of the trigger (prescaled). - * - */ -static inline uint32_t hw_timer1_get_trigger(void) -{ -#if dg_configBLACK_ORCA_IC_REV == BLACK_ORCA_IC_REV_A - return TIMER1->CAPTIM_RELOAD_REG; -#else - return TIMER1->CAPTIM_RELOAD_REG | ((uint32_t) TIMER1->CAPTIM_RELOAD_HIGH_REG) << 16; -#endif -} - -/** - * \brief Set an "invalid" trigger value, which refers far away in the future - * - */ -static inline void hw_timer1_invalidate_trigger(void) __attribute__((always_inline)); - -static inline void hw_timer1_invalidate_trigger(void) -{ - uint32_t lp_current_time; // prescaled - uint32_t trigger; - uint32_t dummy __attribute__((unused)); - - lp_current_time = hw_timer1_get_value(); // Get current time - trigger = (lp_current_time - 1) & LP_CNT_PRESCALED_MASK; // Get an "invalid" trigger - HW_TIMER1_SET_TRIGGER(trigger, dummy); // Move trigger too far in the future so - // that no interrupt from the timer arrives. -} - -#endif // dg_configUSER_CAN_USE_TIMER1 - - -/** - * \brief Enable the timer - * - */ -static inline void hw_timer1_enable(void) -{ - HW_TIMER1_REG_SETF(CTRL, CAPTIM_EN, 1); - GLOBAL_INT_DISABLE(); - REG_SET_BIT(CRG_TOP, CLK_TMR_REG, TMR1_ENABLE); - GLOBAL_INT_RESTORE(); -} - -/** - * \brief Disable the timer - * - */ -static inline void hw_timer1_disable(void) -{ - HW_TIMER1_REG_SETF(CTRL, CAPTIM_EN, 0); - GLOBAL_INT_DISABLE(); - REG_CLR_BIT(CRG_TOP, CLK_TMR_REG, TMR1_ENABLE); - GLOBAL_INT_RESTORE(); -} - -/** - * \brief Timer PWM configuration - * - * Shortcut to call appropriate configuration function. - * - * \param [in] cfg configuration - * - */ -void hw_timer1_configure_pwm(const timer1_config_pwm *cfg); - -/** - * \brief Set PWM frequency prescaler - * - * Actual PWM frequency is \p pwm_freq = \p timer_freq / (\p value + 1) - * - * \param [in] value PWM frequency defined as above - * - * \sa hw_timer1_set_prescaler - * - */ -static inline void hw_timer1_set_pwm_freq(uint16_t value) -{ - TIMER1->CAPTIM_PWM_FREQ_REG = value; -} - -/** - * \brief Set PWM duty cycle - * - * Actualy PWM duty cycle is \p pwm_dc = \p value / (\p pwm_freq + 1) - * - * \param [in] value PWM duty cycle defined as above - * - * \sa hw_timer1_set_pwm_freq - * - */ -static inline void hw_timer1_set_pwm_duty_cycle(uint16_t value) -{ - TIMER1->CAPTIM_PWM_DC_REG = value; -} - -/** - * \brief Get PWM frequency prescaler - * - * Actual PWM frequency is \p pwm_freq = \p timer_freq / (\p retval + 1) - * - * \return PWM frequency as defined above - * - */ -static inline uint16_t hw_timer1_get_pwm_freq(void) -{ - return TIMER1->CAPTIM_PWM_FREQ_REG; -} - -/** - * \brief Get PWM duty cycle - * - * Actualy PWM duty cycle is \p pwm_dc = \p retval / (\p pwm_freq + 1) - * - * \return PWM duty cycle as defined above - * - */ -static inline uint16_t hw_timer1_get_pwm_duty_cycle(void) -{ - return TIMER1->CAPTIM_PWM_DC_REG; -} - -#endif /* dg_configUSE_HW_TIMER1 */ - -#endif /* HW_TIMER1_H_ */ - -/** - * \} - * \} - * \} - */ diff --git a/third_party/dialog/DialogSDK/bsp/peripherals/include/hw_trng.h b/third_party/dialog/DialogSDK/bsp/peripherals/include/hw_trng.h deleted file mode 100644 index 9b092433e..000000000 --- a/third_party/dialog/DialogSDK/bsp/peripherals/include/hw_trng.h +++ /dev/null @@ -1,145 +0,0 @@ -/** - ***************************************************************************************** - * - * @file hw_trng.h - * - * @brief Definition of API for the True Random Number Generator Low Level Driver. - * - * Copyright (c) 2016, Dialog Semiconductor - * All rights reserved. - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. Neither the name of the copyright holder nor the names of its contributors - * may be used to endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, - * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, - * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED - * OF THE POSSIBILITY OF SUCH DAMAGE. - * - * - ***************************************************************************************** - */ - -#ifndef HW_TRNG_H_ -#define HW_TRNG_H_ - -#if dg_configUSE_HW_TRNG - -#include - -/** - * \brief TRNG callback. - * - * This function is called by the TRNG driver when the interrupt is fired. - * - * \note If the TRNG is not needed anymore the hw_trng_disable function should be called in the - * callback function to save power. - * - */ -typedef void (*hw_trng_cb)(void); - -/** - * \brief TRNG enable. - * - * This function enables the TRNG. If callback is not NULL it will be called when a TRNG interrupt - * occurs. The interrupt is triggered when the TRNG FIFO is full. - * - * \param [in] callback The callback function that is called when a TRNG interrupt occurs. - * - * \note If the amount of random numbers needed is less than the contents of the FIFO it is faster - * and more power efficient to use a wait loop in combination with the hw_trng_get_fifo_level - * function. If the FIFO has the required level use the hw_trng_get_numbers function to get the - * random numbers. - * - */ -void hw_trng_enable(hw_trng_cb callback); - -/** - * \brief Get a random number from TRNG. - * - * This function reads a random number from the TRNG FIFO. - * - * \return A 32-bit unsigned random number. - * - * \warning This function does not check for number availability in the FIFO - * - */ -__attribute__((always_inline)) static inline uint32_t hw_trng_get_number(void) -{ - return *((volatile uint32_t *)MEMORY_TRNG_FIFO); -} - -/** - * \brief Get random numbers from TRNG. - * - * This function fills a buffer with random numbers read from the TRNG FIFO. - * - * \param [in] buffer The buffer to write the numbers to. - * \param [in] size The size of the buffer (max 32). - * - * \note Do not forget to disable the TRNG after reading the amount of numbers needed to save - * power. - * - * \warning This function does not check for number availability in the FIFO - * - */ -void hw_trng_get_numbers(uint32_t* buffer, uint8_t size); - -/** - * \brief TRNG get FIFO level. - * - * This function returns the current level of the TRNG FIFO. - * - * \return The current level of the TRNG FIFO. - * - */ -__RETAINED_CODE uint8_t hw_trng_get_fifo_level(void); - -/** - * \brief TRNG disable. - * - * This function stops TRNG, disables its clock and its interrupt. - * - */ -void hw_trng_disable(void); - -/** - * \brief Stop TRNG operation. - */ -static inline void hw_trng_stop(void) -{ - REG_CLR_BIT(TRNG, TRNG_CTRL_REG, TRNG_ENABLE); -} - -/** - * \brief Disable TRNG clock. - */ -void hw_trng_disable_clk(void); - -/** - * \brief Disable TRNG interrupt. - */ -void hw_trng_disable_interrupt(void); - -/** - * \brief Clear TRNG pending interrupt. - */ -void hw_trng_clear_pending(void); - -#endif /* dg_configUSE_HW_TRNG */ - -#endif /* HW_TRNG_H_ */ - diff --git a/third_party/dialog/DialogSDK/bsp/peripherals/include/hw_uart.h b/third_party/dialog/DialogSDK/bsp/peripherals/include/hw_uart.h deleted file mode 100644 index ea8853320..000000000 --- a/third_party/dialog/DialogSDK/bsp/peripherals/include/hw_uart.h +++ /dev/null @@ -1,1250 +0,0 @@ -/** - * \addtogroup BSP - * \{ - * \addtogroup DEVICES - * \{ - * \addtogroup UART - * \{ - * \brief UART Controller - */ - -/** - ***************************************************************************************** - * - * @file hw_uart.h - * - * @brief Definition of API for the UART Low Level Driver. - * - * Copyright (c) 2016, Dialog Semiconductor - * All rights reserved. - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. Neither the name of the copyright holder nor the names of its contributors - * may be used to endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, - * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, - * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED - * OF THE POSSIBILITY OF SUCH DAMAGE. - * - * - ***************************************************************************************** - */ - -#ifndef HW_UART_H_ -#define HW_UART_H_ - -#if dg_configUSE_HW_UART - -#include -#include -#include -#include "hw_dma.h" - -#ifndef HW_UART_USE_DMA_SUPPORT -# define HW_UART_USE_DMA_SUPPORT 1 -#endif - -#define UBA(id) ((UART2_Type *)id) -#define HW_UART1 ((uint16_t *)UART_BASE) -#define HW_UART2 ((uint16_t *)UART2_BASE) -typedef uint16_t * HW_UART_ID; - - -/** - * \brief Get the mask of a field of a UART register. - * - * \param [in] instance identifies the UART instance to use (empty: UART, 2: UART2) - * \param [in] reg is the register to access - * \param [in] field is the register field to access - * - * \note The stripped register name should be provided, e.g.: - * - to get UART_UART_USR_REG_UART_BUSY_Msk, use - * HW_UART_REG_FIELD_MASK(, USR, UART_BUSY) - * - to get UART2_UART2_SFE_REG_UART_SHADOW_FIFO_ENABLE_Msk, use - * HW_UART_REG_FIELD_MASK(2, SFE, UART_SHADOW_FIFO_ENABLE) - * - */ -#define HW_UART_REG_FIELD_MASK(instance, reg, field) \ - (UART##instance##_UART##instance##_##reg##_REG_##field##_Msk) - -/** - * \brief Get the bit position of a field of a UART register. - * - * \param [in] instance identifies the UART instance to use (empty: UART, 2: UART2) - * \param [in] reg is the register to access - * \param [in] field is the register field to access - * - * \note The stripped register name should be provided, e.g.: - * - to get UART_UART_USR_REG_UART_BUSY_Pos, use - * HW_UART_REG_FIELD_POS(, USR, UART_BUSY) - * - to get UART2_UART2_SFE_REG_UART_SHADOW_FIFO_ENABLE_Pos, use - * HW_UART_REG_FIELD_POS(2, SFE, UART_SHADOW_FIFO_ENABLE) - * - */ -#define HW_UART_REG_FIELD_POS(instance, reg, field) \ - (UART##instance##_UART##instance##_##reg##_REG_##field##_Pos) - -/** - * \brief Get the value of a field of a UART register. - * - * \param [in] id identifies UART to use - * \param [in] reg is the register to access - * \param [in] field is the register field to write - * - * \return the value of the register field - * - */ -#define HW_UART_REG_GETF(id, reg, field) \ - ((UBA(id)->UART2_##reg##_REG & (UART2_UART2_##reg##_REG_##field##_Msk)) >> (UART2_UART2_##reg##_REG_##field##_Pos)) - -/** - * \brief Set the value of a field of a UART register. - * - * \param [in] id identifies UART to use - * \param [in] reg is the register to access - * \param [in] field is the register field to write - * \param [in] new_val is the value to write - * - */ -#define HW_UART_REG_SETF(id, reg, field, new_val) \ - UBA(id)->UART2_##reg##_REG = ((UBA(id)->UART2_##reg##_REG & ~(UART2_UART2_##reg##_REG_##field##_Msk)) | \ - ((UART2_UART2_##reg##_REG_##field##_Msk) & ((new_val) << (UART2_UART2_##reg##_REG_##field##_Pos)))) - - - -/* - * ENUMERATION DEFINITIONS - ***************************************************************************************** - */ - -/** - * \brief Interrupt Identification codes - * - */ -typedef enum { - HW_UART_INT_MODEM_STAT = 0, - HW_UART_INT_NO_INT_PEND = 1, - HW_UART_INT_THR_EMPTY = 2, - HW_UART_INT_RECEIVED_AVAILABLE = 4, - HW_UART_INT_RECEIVE_LINE_STAT = 6, - HW_UART_INT_BUSY_DETECTED = 7, - HW_UART_INT_TIMEOUT = 12, -} HW_UART_INT; - -/** - * \brief Baud rates dividers - * - * The defined values comprise the values of 3 registers: DLH, DLL, DLF. - * The encoding of the values for each register is: - * - * +--------+--------+--------+--------+ - * | unused | DLH | DLL | DLF | - * +--------+--------+--------+--------+ - * - */ -typedef enum { - HW_UART_BAUDRATE_1000000 = 0x00000100, - HW_UART_BAUDRATE_500000 = 0x00000200, - HW_UART_BAUDRATE_230400 = 0x00000405, - HW_UART_BAUDRATE_115200 = 0x0000080b, - HW_UART_BAUDRATE_57600 = 0x00001106, - HW_UART_BAUDRATE_38400 = 0x00001a01, - HW_UART_BAUDRATE_28800 = 0x0000220c, - HW_UART_BAUDRATE_19200 = 0x00003401, - HW_UART_BAUDRATE_14400 = 0x00004507, - HW_UART_BAUDRATE_9600 = 0x00006803, - HW_UART_BAUDRATE_4800 = 0x0000d005, -} HW_UART_BAUDRATE; - -/** - * \brief Character format - * - */ -typedef enum { - HW_UART_DATABITS_5 = 0, - HW_UART_DATABITS_6 = 1, - HW_UART_DATABITS_7 = 2, - HW_UART_DATABITS_8 = 3, -} HW_UART_DATABITS; - -/** - * \brief Parity - * - */ -typedef enum { - HW_UART_PARITY_NONE = 0, - HW_UART_PARITY_ODD = 1, - HW_UART_PARITY_EVEN = 3, -} HW_UART_PARITY; - -/** - * \brief Stop bits - * - */ -typedef enum { - HW_UART_STOPBITS_1 = 0, - /**< The number of stop bits is 1.5 if a character format with 5 bit is chosen */ - HW_UART_STOPBITS_2 = 1, /**< Stop bit 2 */ -} HW_UART_STOPBITS; - -/** - * \brief UART configuration structure definition - * - */ -typedef struct { - // Baud rate divisor - HW_UART_BAUDRATE baud_rate; - HW_UART_DATABITS data:2; - HW_UART_PARITY parity:2; - HW_UART_STOPBITS stop:1; - uint8_t auto_flow_control:1; - uint8_t use_dma:1; - uint8_t use_fifo:1; - - HW_DMA_CHANNEL tx_dma_channel:4; - HW_DMA_CHANNEL rx_dma_channel:4; -} uart_config; - -/** - * \brief UART configuration structure definition (extended version) - * - */ -typedef struct { - // Baud rate divisor - HW_UART_BAUDRATE baud_rate; - HW_UART_DATABITS data:2; - HW_UART_PARITY parity:2; - HW_UART_STOPBITS stop:1; - uint8_t auto_flow_control:1; - uint8_t use_dma:1; - uint8_t use_fifo:1; - uint8_t tx_fifo_tr_lvl:2; - uint8_t rx_fifo_tr_lvl:2; - - HW_DMA_CHANNEL tx_dma_channel:4; - HW_DMA_CHANNEL rx_dma_channel:4; -} uart_config_ex; - -#ifdef HW_UART_ENABLE_USER_ISR -/** - * \brief User defined interrupt function - * - * User code does not need to handle interrupts. Interrupts are handled by the driver. - * If for some reason the user need to handle interrupts differently it is possible to - * set a different ISR via hw_uart_set_isr(uart_id, user_isr). - * In that case, the user-defined ISR must handle all UART interrupts as required. - * - * \sa hw_uart_set_isr - * - */ -typedef void (*hw_uart_interrupt_isr)(void); - -/** - * \brief Setup user defined interrupt function for uart - * - * \param [in] uart identifies UART - * \param [in] isr user defined interrupt handler - * - */ -void hw_uart_set_isr(HW_UART_ID uart, hw_uart_interrupt_isr isr); -#endif - -typedef void (*hw_uart_tx_callback)(void *user_data, uint16_t written); -typedef void (*hw_uart_rx_callback)(void *user_data, uint16_t read); - -//======================= Status functions ==================================== - -/** - * \brief Check if a serial transfer is inprogress - * - * \return true or false - */ -static inline bool hw_uart_is_busy(HW_UART_ID uart) -{ - return HW_UART_REG_GETF(uart, USR, UART_BUSY); -} - -//===================== Read/Write functions =================================== - -/** - * \brief Read one byte from UART - * - * This is blocking function to read single byte from UART. - * UART must be enabled before. - * - * \param [in] uart identifies UART to use - * - * \return the received byte - * - */ -uint8_t hw_uart_read(HW_UART_ID uart); - -/** - * \brief Write one byte to UART - * - * Function wait till output FIFO has empty space according to - * threshold level, and puts byte to be transmitted. - * - * \param [in] uart identifies UART to use - * \param [in] data byte to be written - * - */ -void hw_uart_write(HW_UART_ID uart, uint8_t data); - -/** - * \brief Stop asynchronous read from UART - * - * If there is outstanding read on given UART it will be stopped. - * Callback will be fired with data already present in buffer. - * Callback may be called from interrupt in the meantime but will be called - * only once. - * - * \param [in] uart identifies UART to use - * - * \return number of bytes actually received - * - */ -uint16_t hw_uart_abort_receive(HW_UART_ID uart); - -/** - * \brief Get number of bytes currently received by asynchronous read - * - * If there is outstanding read on given UART function returns number of - * byte currently received. - * - * \param [in] uart identifies UART to use - * - */ -uint16_t hw_uart_peek_received(HW_UART_ID uart); - -/** - * \brief Read receive buffer register - * - * \param [in] uart identifies UART to use - * - * \return the read byte - * - */ -static inline uint8_t hw_uart_rxdata_getf(HW_UART_ID uart) -{ - // Read element from the receive FIFO - return UBA(uart)->UART2_RBR_THR_DLL_REG; -} - -/** - * \brief Write byte to the transmit holding register - * - * \param [in] uart identifies UART to use - * \param [in] data byte to be written - * - */ -static inline void hw_uart_txdata_setf(HW_UART_ID uart, uint8_t data) -{ - // Write data to the transmit FIFO - UBA(uart)->UART2_RBR_THR_DLL_REG = data; -} - -/** - * \brief Writes number of bytes to UART synchronously - * - * This function finishes when all data is put in FIFO. It does not wait for data to be transmitted - * out from UART. Call \sa hw_uart_is_tx_fifo_empty() to wait for transmission to finish. - * This function does not use interrupts nor DMA. - * - * \param [in] uart identifies UART to use - * \param [in] data data to be written - * \param [in] len length of to be written - * - */ -void hw_uart_write_buffer(HW_UART_ID uart, const void *data, uint16_t len); - -/** - * \brief Writes number of bytes to UART - * - * \param [in] uart identifies UART to use - * \param [in] data data to be written - * \param [in] len length of to be written - * \param [in] cb function to call from interrupt when transmission ends - * \param [in] user_data parameter passed to cb function - * - */ -void hw_uart_send(HW_UART_ID uart, const void *data, uint16_t len, hw_uart_tx_callback cb, - void *user_data); - -/** - * \brief Read number of bytes from UART synchronously - * - * This function waits to receive \p len bytes from UART. - * This function does not use interrupts not DMA, it just waits for all data to arive. - * - * \param [in] uart identifies UART to use - * \param [out] data buffer for incoming data - * \param [in] len number of bytes to read - * - */ -void hw_uart_read_buffer(HW_UART_ID uart, void *data, uint16_t len); - -/** - * \brief Read number of bytes from UART - * - * Function initializes UART for receiving data. - * When \p len data is received or timeout occurs user provided callback will be fired with - * number of bytes read so far. - * - * \param [in] uart identifies UART to use - * \param [out] data buffer for incoming data - * \param [in] len max number of bytes to read - * \param [in] cb function to call from interrupt when data is received - * \param [in] user_data parameter passed to cb function - * - */ -void hw_uart_receive(HW_UART_ID uart, void *data, uint16_t len, hw_uart_rx_callback cb, - void *user_data); - -#if HW_UART_USE_DMA_SUPPORT - -/** - * \brief Assign DMA channel to UART rx and tx - * - * Function specifies DMA channel to use for specified UART rx and tx FIFO. - * It will setup channel only if there is no transmission in progress. - * - * \param [in] uart identifies UART to use - * \param [in] channel id of DMA channel to use for rx, - * tx will use next channel, - * -1 if DMA should not be used - * \param [in] pri priority DMA_PRIO_0 (lowest), - * ..... - * DMA_PRIO_7 (highest) - * - */ -void hw_uart_set_dma_channels(HW_UART_ID uart, int8_t channel, HW_DMA_PRIO pri); - -/** - * \brief Assign DMA channel to UART rx and tx - * - * Function specifies DMA channel to use for specified UART rx and tx FIFO. - * It will setup channel only if there is no transmission in progress. - * - * \param [in] uart identifies UART to use - * \param [in] tx_channel id of DMA channel to use for tx: - * HW_DMA_CHANNEL_0..HW_DMA_CHANNEL_INVALID - * \param [in] rx_channel id of DMA channel to use for rx: - * HW_DMA_CHANNEL_0..HW_DMA_CHANNEL_INVALID - * \param [in] pri priority DMA_PRIO_0 (lowest), - * ..... - * DMA_PRIO_7 (highest) - * - */ -void hw_uart_set_dma_channels_ex(HW_UART_ID uart, int8_t tx_channel, int8_t rx_channel, HW_DMA_PRIO pri); -#endif - -//============== Interrupt handling ============================================ - -/** - * \brief Set the Received Data Available interrupt - * - * \param [in] uart identifies UART to use - * \param [in] recdataavail should be 0 to disable and 1 to enable - * - */ -static inline void hw_uart_rec_data_int_set(HW_UART_ID uart, uint8_t recdataavail) -{ - // Set ERBFI bit in Interrupt Enable Register - HW_UART_REG_SETF(uart, IER_DLH, ERBFI_dlh0, recdataavail); -} -/** - * \brief Set the Transmit Holding Register empty interrupt - * - * \param [in] uart identifies UART to use - * \param [in] txempty should be 0 to disable and 1 to enable - * - */ -static inline void hw_uart_tx_empty_int_set(HW_UART_ID uart, uint8_t txempty) -{ - // Set ETBEI bit in Interrupt Enable Register - HW_UART_REG_SETF(uart, IER_DLH, ETBEI_dlh1, txempty); -} - -/** - * \brief Set the Line Status interrupt - * - * \param [in] uart identifies UART to use - * \param [in] linestat should be 0 to disable and 1 to enable - * - */ -static inline void hw_uart_linestat_int_set(HW_UART_ID uart, uint8_t linestat) -{ - // Set ELSI bit in Interrupt Enable Register - HW_UART_REG_SETF(uart, IER_DLH, ELSI_dhl2, linestat); -} - -/** - * \brief Set the Programmable THRE interrupt - * - * \param [in] uart identifies UART to use - * \param [in] pthre should be 0 to disable and 1 to enable - * - */ -static inline void hw_uart_pthre_int_set(HW_UART_ID uart, uint8_t pthre) -{ - // Set PTIME bit in Interrupt Enable Register - HW_UART_REG_SETF(uart, IER_DLH, PTIME_dlh7, pthre); -} - -/** - * \brief Get the Interrupt ID - * - * \param [in] uart identifies UART to use - * - * \return interrupt type - * - */ -static inline HW_UART_INT hw_uart_get_interrupt_id(HW_UART_ID uart) -{ - return (HW_UART_INT) (UBA(uart)->UART2_IIR_FCR_REG & 0xF); -} - -/** - * \brief Write Scratch pad register - * - * \param [in] uart identifies UART to use - * \param [in] value the value to be written - * - * /warning Reserved when retarget is used else it is free to use. - * - */ -static inline void hw_uart_write_scr(HW_UART_ID uart, uint8_t value) -{ - UBA(uart)->UART2_SCR_REG = value; -} - -/** - * \brief Read Scratch pad register - * - * \param [in] uart identifies UART to use - * - * \return register value - * - * \warning Reserved when retarget is used else it is free to use. - * - */ -static inline uint8_t hw_uart_read_scr(HW_UART_ID uart) -{ - return UBA(uart)->UART2_SCR_REG; -} - -//==================== Configuration functions ================================= - -/** - * \brief Get the baud rate setting - * - * \param [in] uart identifies UART to use - * - * \return baud rate of specified uart - * - */ -HW_UART_BAUDRATE hw_uart_baudrate_get(HW_UART_ID uart); - -/** - * \brief Set the baud rate - * - * \param [in] uart identifies UART to use - * \param [in] baud_rate uart baud rate - * - */ -void hw_uart_baudrate_set(HW_UART_ID uart, HW_UART_BAUDRATE baud_rate); - -//=========================== FIFO control functions =========================== - -/** - * \brief Check if there is data available for read - * - * \param [in] uart identifies UART to use - * - * \return true if there is data to receive - * - */ -static inline bool hw_uart_is_data_ready(HW_UART_ID uart) -{ - return (UBA(uart)->UART2_LSR_REG & 1) != 0; -} - -/** - * \brief Get the FIFO mode setting - * - * \param [in] uart identifies UART to use - * - * \return true if FIFO is enabled (both transmitter and receiver) - * - */ -static inline bool hw_uart_is_fifo_enabled(HW_UART_ID uart) -{ - /* Only UART2 has a FIFO */ - ASSERT_ERROR(uart == HW_UART2); - - return UART2->UART2_SFE_REG != 0; -} - -/** - * \brief Disable both FIFOs - * - * \param [in] uart identifies UART to use - * - */ -static inline void hw_uart_disable_fifo(HW_UART_ID uart) -{ - uint16_t iir_fcr_reg = UBA(uart)->UART2_IIR_FCR_REG; - iir_fcr_reg &= 0xfffe; - UBA(uart)->UART2_IIR_FCR_REG = iir_fcr_reg; -} - -/** - * \brief Enable both FIFOs - * - * Thresholds should be set before for predictable results. - * - * \param [in] uart identifies UART to use - * - */ -static inline void hw_uart_enable_fifo(HW_UART_ID uart) -{ - /* Only UART2 has a FIFO */ - ASSERT_ERROR(uart == HW_UART2); - - UART2->UART2_SFE_REG = 1 << HW_UART_REG_FIELD_POS(2, SFE, UART_SHADOW_FIFO_ENABLE); -} - -/** - * \brief Check if receive FIFO is not empty - * - * \param [in] uart identifies UART to use - * - * \return true if FIFO is not empty - * - */ -static inline bool hw_uart_receive_fifo_not_empty(HW_UART_ID uart) -{ - /* Only UART2 has a FIFO */ - ASSERT_ERROR(uart == HW_UART2); - return HW_UART_REG_GETF(uart, USR, UART_RFNE) != 0; -} - -/** - * \brief Check if transmit FIFO is not full - * - * \param [in] uart identifies UART to use - * - * \return true if FIFO is full - * - */ -static inline bool hw_uart_transmit_fifo_not_full(HW_UART_ID uart) -{ - /* Only UART2 has a FIFO */ - ASSERT_ERROR(uart == HW_UART2); - return HW_UART_REG_GETF(uart, USR, UART_TFNF) != 0; -} - -/** - * \brief Check if transmit FIFO is empty - * - * \param [in] uart identifies UART to use - * - * \return true if FIFO empty - * - */ -static inline bool hw_uart_transmit_fifo_empty(HW_UART_ID uart) -{ - return HW_UART_REG_GETF(uart, USR, UART_TFE) != 0; -} - - -/** - * \brief Read number of byte in receive FIFO - * - * \param [in] uart identifies UART to use - * - * \return number of byte in receive FIFO - * - */ -static inline uint16_t hw_uart_receive_fifo_count(HW_UART_ID uart) -{ - /* Only UART2 has a FIFO */ - ASSERT_ERROR(uart == HW_UART2); - - return UART2->UART2_RFL_REG; -} - -/** - * \brief Read number of byte in transmit FIFO - * - * \param [in] uart identifies UART to use - * - * \return number of byte in transmit FIFO - * - */ -static inline uint16_t hw_uart_transmit_fifo_count(HW_UART_ID uart) -{ - /* Only UART2 has a FIFO */ - ASSERT_ERROR(uart == HW_UART2); - - return UART2->UART2_TFL_REG; -} - -/** - * \brief Enable loopback - * - * \param [in] uart identifies UART to use - * - */ -static inline void hw_uart_enable_loopback(HW_UART_ID uart) -{ - HW_UART_REG_SETF(uart, MCR, UART_LB, 1); -} - -/** - * \brief Disable loopback - * - * \param [in] uart identifies UART to use - * - */ -static inline void hw_uart_disable_loopback(HW_UART_ID uart) -{ - HW_UART_REG_SETF(uart, MCR, UART_LB, 0); -} - -/** - * \brief Get the FIFO mode setting - * - * \param [in] uart identifies UART to use - * - * \return the FIFO mode that has been set in the FIFO Control Register: - * 0 = FIFO mode disabled, - * 1 = FIFO mode enabled - * - */ -uint8_t hw_uart_fifo_en_getf(HW_UART_ID uart); - -/** - * \brief Enable or disable the UART FIFO mode - * - * \param [in] uart identifies UART to use - * \param [in] en should be 0 to disable and 1 to enable FIFO mode - * - */ -static inline void hw_uart_fifo_en_setf(HW_UART_ID uart, uint8_t en) -{ - /* Only UART2 has a FIFO */ - ASSERT_ERROR(uart == HW_UART2); - // Write FIFO Enable (FIFOE) bit in FIFO Control Register - uint16_t iir_fcr_reg = UBA(uart)->UART2_IIR_FCR_REG; - iir_fcr_reg &= ~0x1; - iir_fcr_reg |= (en & 0x1); - UBA(uart)->UART2_IIR_FCR_REG = iir_fcr_reg; -} - -/** - * \brief Get the receive FIFO trigger level at which the - * Received Data Available Interrupt is generated - * - * \param [in] uart identifies UART to use - * - * \return the receive FIFO trigger level: - * 0 = 1 character in the FIFO, - * 1 = FIFO 1/4 full, - * 2 = FIFO 1/2 full, - * 3 = FIFO 2 less than full - * - */ -static inline uint8_t hw_uart_rx_fifo_tr_lvl_getf(HW_UART_ID uart) -{ - /* Only UART2 has a FIFO */ - ASSERT_ERROR(uart == HW_UART2); - return UART2->UART2_SRT_REG & UART2_UART2_SRT_REG_UART_SHADOW_RCVR_TRIGGER_Msk; -} - -/** - * \brief Set the receive FIFO trigger level at which the - * Received Data Available Interrupt is generated - * - * \param [in] uart identifies UART to use - * \param [in] tr_lvl The receive FIFO trigger level: - * 0 = 1 character in the FIFO, - * 1 = FIFO 1/4 full, - * 2 = FIFO 1/2 full, - * 3 = FIFO 2 less than full - * - */ -static inline void hw_uart_rx_fifo_tr_lvl_setf(HW_UART_ID uart, uint8_t tr_lvl) -{ - /* Only UART2 has a FIFO */ - ASSERT_ERROR(uart == HW_UART2); - - UART2->UART2_SRT_REG = tr_lvl; -} - -/** - * \brief Get the transmit FIFO trigger level at which the - * Transmit Holding Register Empty (THRE) Interrupt is generated - * - * \param [in] uart identifies UART to use - * - * \return the transmit FIFO trigger level: - * 0 = FIFO empty, - * 1 = 2 characters in the FIFO, - * 2 = FIFO 1/4 full, - * 3 = FIFO 1/2 full - * - */ -uint8_t hw_uart_tx_fifo_tr_lvl_getf(HW_UART_ID uart); - -/** - * \brief Set the transmit FIFO trigger level at which the - * Transmit Holding Register Empty (THRE) Interrupt is generated - * - * \param [in] uart identifies UART to use - * \param [in] tr_lvl the transmit FIFO trigger level: - * 0 = FIFO empty, - * 1 = 2 characters in the FIFO, - * 2 = FIFO 1/4 full, - * 3 = FIFO 1/2 full - * - */ -static inline void hw_uart_tx_fifo_tr_lvl_setf(HW_UART_ID uart, uint8_t tr_lvl) -{ - /* Only UART2 has a FIFO */ - ASSERT_ERROR(uart == HW_UART2); - - UART2->UART2_STET_REG = tr_lvl; -} - -/** - * \brief Reset UART transmit FIFO - * - * \param [in] uart identifies UART to use - * - */ -static inline void hw_uart_tx_fifo_flush(HW_UART_ID uart) -{ - HW_UART_REG_SETF(uart, SRR, UART_XFR, 1); -} - -/** - * \brief Reset UART receive FIFO - * - * \param [in] uart identifies UART to use - * - */ -static inline void hw_uart_rx_fifo_flush(HW_UART_ID uart) -{ - HW_UART_REG_SETF(uart, SRR, UART_RFR, 1); -} - -/** - * \brief Check whether reading buffer is empty - * - * Works for both when Rx FIFO is enabled or not. - * - * \param [in] uart identifies UART to use - * - * \return true if there is no data available for reading - * - */ -static inline bool hw_uart_read_buf_empty(HW_UART_ID uart) -{ - return !HW_UART_REG_GETF(uart, LSR, UART_DR); -} - -/** - * \brief Check whether writing buffer is full - * - * Works for both when Tx FIFO is enabled or not. - * - * \param [in] uart identifies UART to use - * - * \return true if transmit buffer is full - * - */ -static inline bool hw_uart_write_buf_full(HW_UART_ID uart) -{ - return !HW_UART_REG_GETF(uart, LSR, UART_THRE); -} - -#if dg_configUART_SOFTWARE_FIFO -/** - * \brief Set buffer that will be use for incoming data when there is no read in progress - * - * \param [in] uart identifies UART to use - * \param [in] buf buffer to use as software FIFO - * \param [in] size size of \p buf - * - */ -void hw_uart_set_soft_fifo(HW_UART_ID uart, uint8_t *buf, uint8_t size); -#endif - -//=========================== DMA control functions ============================ - -/** - * \brief Set UART DMA mode - * - * \param [in] uart identifies UART to use - * \param [in] dma_mode DMA mode 0 or 1 - * - */ -static inline void hw_uart_dma_mode_setf(HW_UART_ID uart, uint8_t dma_mode) -{ - /* Only UART2 has the SDMAM register */ - ASSERT_ERROR(uart == HW_UART2); - - UART2->UART2_SDMAM_REG = ((dma_mode & 1) << UART2_UART2_SDMAM_REG_UART_SHADOW_DMA_MODE_Pos) - << UART2_UART2_SDMAM_REG_UART_SHADOW_DMA_MODE_Msk; -} - -/** - * \brief Clear DMA request - * - * \param [in] uart identifies UART to use - * - */ -static inline void hw_uart_clear_dma_request(HW_UART_ID uart) -{ - UBA(uart)->UART2_DMASA_REG = 1; -} - -//=========================== Line control functions ============================ - -/** - * \brief Set UART line settings - * - * This function initialize UART registers with given configuration. - * It also initializes all internal software variables for buffered transmissions. - * - * \param [in] uart identifies UART to use - * \param [in] cfg pointer to the UART configuration structure - * - */ -void hw_uart_init(HW_UART_ID uart, const uart_config *cfg); - -/** - * \brief Set UART line settings - * - * This function initialize UART registers with given configuration, - * including tx and rx fifo trigger levels - * It also initializes all internal software variables for buffered transmissions. - * - * \param [in] uart identifies UART to use - * \param [in] cfg pointer to the UART configuration structure - * - */ -void hw_uart_init_ex(HW_UART_ID uart, const uart_config_ex *cfg); - -/** - * \brief Re-initialize UART registers - * - * Call this function with configuration that should be re-applied, this function should be - * called after platform exits power sleep mode. - * This function is similar to uart_init, but it does not initialize software variables - * used for transmission control it just re-applies hardware configuration. - * It will turn on interrupts if transmission was in progress. - * - * \param [in] uart identifies UART to use - * \param [in] cfg pointer to the UART configuration structure - * - */ -void hw_uart_reinit(HW_UART_ID uart, const uart_config *cfg); - -/** - * \brief Re-initialize UART registers - * - * Call this function with configuration that should be re-applied, this function should be - * called after platform exits power sleep mode. - * This function is similar to uart_init_ex, but it does not initialize software variables - * used for transmission control it just re-applies hardware configuration. - * It will turn on interrupts if transmission was in progress. - * - * \param [in] uart identifies UART to use - * \param [in] cfg pointer to the UART configuration structure - * - */ -void hw_uart_reinit_ex(HW_UART_ID uart, const uart_config_ex *cfg); - -/** - * \brief Get UART line settings - * - * \param [in] uart identifies UART to use - * \param [in] cfg pointer to the UART configuration structure - */ -void hw_uart_cfg_get(HW_UART_ID uart, uart_config *cfg); - -//=========================== Modem control functions ========================== - -/** - * \brief Get the IrDA SIR mode setting - * - * \param [in] uart identifies UART to use - * - * \return IrDA SIR mode: - * 0 = IrDA SIR mode disabled, - * 1 = IrDA SIR mode enabled - * - */ -uint8_t hw_uart_sire_getf(HW_UART_ID uart); - -/** - * \brief Set the IrDA SIR mode - * - * \param [in] uart identifies UART to use - * \param [in] sire 0 = disable IrDA SIR mode, - * 1 = enable IrDA SIR mode - * - */ -void hw_uart_sire_setf(HW_UART_ID uart, uint8_t sire); - -/** - * \brief Get the Auto Flow Control Enable (AFCE) setting - * - * \param [in] uart identifies UART to use - * - * \return Auto Flow Control Enable (AFCE): - * 0 = Auto Flow Control Mode disabled, - * 1 = Auto Flow Control Mode enabled - * - */ -uint8_t hw_uart_afce_getf(HW_UART_ID uart); - -/** - * \brief Enable or disable Auto Flow Control - * - * \param [in] uart identifies UART to use - * \param [in] afce Auto Flow Control Enable (AFCE): - * 0 = disable Auto Flow Control Mode, - * 1 = enable Auto Flow Control Mode - * - */ -void hw_uart_afce_setf(HW_UART_ID uart, uint8_t afce); - -/** - * \brief Get UART diagnostic mode status - * - * \param [in] uart identifies UART to use - * - * \return the value of the loop back bit - * - */ -uint8_t hw_uart_loopback_getf(HW_UART_ID uart); - -/** - * \brief Set UART in diagnostic mode - * - * \param [in] uart identifies UART to use - * \param [in] lb loop back bit value - * - */ -void hw_uart_loopback_setf(HW_UART_ID uart, uint8_t lb); - -/** - * \brief Get RTS output value - * - * \param [in] uart identifies UART to use - * - * \return RTS output value - * - */ -uint8_t hw_uart_rts_getf(HW_UART_ID uart); - -/** - * \brief Set RTS output value - * - * \param [in] uart identifies UART to use - * \param [in] rtsn Value for the RTS output (asserted low) - * - */ -void hw_uart_rts_setf(HW_UART_ID uart, uint8_t rtsn); - -//=========================== Line status functions ============================ - -/** - * \brief Get the value of the Receiver FIFO Error bit - * - * \param [in] uart identifies UART to use - * - * \return receiver FIFO Error bit value: - * 0 = no error in RX FIFO, - * 1 = error in RX FIFO - * - */ -uint8_t hw_uart_rx_fifo_err_getf(HW_UART_ID uart); - -/** - * \brief Get the value of the Transmitter Empty bit - * - * \param [in] uart identifies UART to use - * - * \return 1 if transmitter FIFO is empty - * - */ -uint8_t hw_uart_is_tx_fifo_empty(HW_UART_ID uart); - -/** - * \brief Get the value of the Transmit Holding Register Empty bit - * - * \param [in] uart identifies UART to use - * - * \return the Transmit Holding Register Empty bit value - * - */ -uint8_t hw_uart_thr_empty_getf(HW_UART_ID uart); - -/** - * \brief Get the value of the Break Interrupt bit - * - * \param [in] uart identifies UART to use - * - * \return break interrupt bit value: This is used to indicate the detection of a - * break sequence on the serial input data - * - */ -uint8_t hw_uart_break_int_getf(HW_UART_ID uart); - -/** - * \brief Get the value of the Framing Error bit - * - * \param [in] uart identifies UART to use - * - * \return framing error bit value: - * 0 = no framing error, - * 1 = framing error - * - * - */ -uint8_t hw_uart_frame_err_getf(HW_UART_ID uart); - -/** - * \brief Get the value of the Parity Error bit - * - * \param [in] uart identifies UART to use - * - * \return parity error bit value: - * 0 = no parity error, - * 1 = parity error - * - */ -uint8_t hw_uart_parity_err_getf(HW_UART_ID uart); - -/** - * \brief Get the value of the Overrun Error bit - * - * \param [in] uart identifies UART to use - * - * \return overrun error bit value: - * 0 = no overrun error, - * 1 = overrun error - * - */ -uint8_t hw_uart_overrun_err_getf(HW_UART_ID uart); - -//=========================== Modem status functions =========================== - -/** - * \brief Get CTS input status - * - * \param [in] uart identifies UART to use - * - * \return status of CTS input: - * 0 = CTSn input is de-asserted (logic 1), - * 1 = CTSn input is asserted (logic 0), - * In loopback mode, CTS is the same as RTS - * - */ -uint8_t hw_uart_cts_getf(HW_UART_ID uart); - -/** - * \brief Get Delta CTS - * - * \param [in] uart identifies UART to use - * - * \return DCTS: - * 0 = No change on CTS since last read of Modem Control Register, - * 1 = Change on CTS since last read of Modem Control Register, - * Note that calling this function will clear the DCTS bit, - * In loopback mode, DCTS reflects changes on RTS - * - */ -uint8_t hw_uart_delta_cts_getf(HW_UART_ID uart); - -/** - * \brief Check if buffered write is in progress - * - * \param [in] uart identifies UART to use - * - * \return true if there is TX transmission in progress - * - */ -bool hw_uart_tx_in_progress(HW_UART_ID uart); - -/** - * \brief Check if buffered read is in progress - * - * \param [in] uart identifies UART to use - * - * \return true if there is RX transmission in progress - * - */ -bool hw_uart_rx_in_progress(HW_UART_ID uart); - -#if dg_configUART_RX_CIRCULAR_DMA - -/** - * \brief Enable circular RX DMA for UART - * - * This reconfigures RX DMA channel to use circular buffer for incoming data and enabled it - * immediately. Incoming data will be read by DMA to intermediate buffer. Subsequent calls to - * hw_uart_receive() will fire callback as soon as enough data are available in buffer to be read, - * but the actual read from intermediate buffer has to be done using hw_uart_copy_rx_circular_dma_buffer(). - * - * Recommended way to move between DMA buffer and user buffer is to call hw_uart_abort_receive() - * that will copy the amount specified on read or the actual number of received bytes if - * hw_uart_abort_receive() was called before requested the amount was received. - * - * \note - * This can be only called for an UART which is configured using \p dg_configUARTx_RX_CIRCULAR_DMA_BUF_SIZE. - * - * \param [in] uart identifies UART to use - * - */ -void hw_uart_enable_rx_circular_dma(HW_UART_ID uart); - -/** - * \brief Copy data from circular RX DMA buffer to user buffer - * - * \param [in] uart identifies UART to use - * \param [in] buf buffer to copy data to - * \param [in] len length of data to copy to buffer - * - */ -void hw_uart_copy_rx_circular_dma_buffer(HW_UART_ID uart, uint8_t *buf, uint16_t len); - -#endif /* dg_configUART_RX_CIRCULAR_DMA */ - -#endif /* dg_configUSE_HW_UART */ - -#endif /* HW_UART_H_ */ - -/** - * \} - * \} - * \} - */ diff --git a/third_party/dialog/DialogSDK/bsp/peripherals/include/hw_watchdog.h b/third_party/dialog/DialogSDK/bsp/peripherals/include/hw_watchdog.h deleted file mode 100644 index db969baee..000000000 --- a/third_party/dialog/DialogSDK/bsp/peripherals/include/hw_watchdog.h +++ /dev/null @@ -1,188 +0,0 @@ -/** - * \addtogroup BSP - * \{ - * \addtogroup DEVICES - * \{ - * \addtogroup Watchdog_Timer - * \{ - * \brief Watchdog Timer - */ - -/** - ***************************************************************************************** - * - * @file hw_watchdog.h - * - * @brief Definition of API for the Watchdog timer Low Level Driver. - * - * Copyright (c) 2016, Dialog Semiconductor - * All rights reserved. - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. Neither the name of the copyright holder nor the names of its contributors - * may be used to endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, - * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, - * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED - * OF THE POSSIBILITY OF SUCH DAMAGE. - * - * - ***************************************************************************************** - */ - -#ifndef HW_WATCHDOG_H_ -#define HW_WATCHDOG_H_ - - -#include -#include -#include - -#define NMI_MAGIC_NUMBER 0xDEADBEEF - -/** - * \brief Holds the stack contents when an NMI occurs. - * - * \details The stack contents are copied at this variable when an NMI occurs. The first position is - * marked with a special "flag" (0xDEADBEEF) to indicate that the data that follow are valid. - */ -extern uint32_t nmi_event_data[9]; - -/** - * \brief Types of generated states if reload value is 0 - * - * Generate NMI (non-maskable interrupt) or RST (reset of the system) - * - */ -typedef enum { - HW_WDG_RESET_NMI = 0, /**< Generate NMI if the watchdog reaches 0 and WDOG reset if the counter become less or equal to -16 */ - HW_WDG_RESET_RST = 1 /**< Generate WDOG reset it the counter becomes less or equal than 0 */ -} HW_WDG_RESET; - -/** - * \brief Watchdog timer interrupt callback - * - * \param [in] hardfault_args pointer to call stack - * - */ -typedef void (*hw_watchdog_interrupt_cb)(unsigned long *exception_args); - -/** - * \brief Freeze the watchdog - * - * \return true if operation is allowed, else false - * - */ -__RETAINED_CODE bool hw_watchdog_freeze(void); - -/** - * \brief Unfreeze the watchdog - * - */ -__RETAINED_CODE void hw_watchdog_unfreeze(void); - -/** - * \brief Set positive reload value of the watchdog timer - * - * \param [in] value reload value from 0 (0x00) to 255 (0xFF) - * - */ -static inline void hw_watchdog_set_pos_val(uint8_t value) __attribute__((always_inline)); - -static inline void hw_watchdog_set_pos_val(uint8_t value) -{ - WDOG->WATCHDOG_REG = (uint16_t)value; -} - -/** - * \brief Set negative reload value of the watchdog timer - * - * \param [in] value reload value from -16 (0x1FF) to 0 (0x00) - * - */ -static inline void hw_watchdog_set_neg_val(uint8_t value) -{ - WDOG->WATCHDOG_REG = WDOG_WATCHDOG_REG_WDOG_VAL_NEG_Msk | (uint16_t)value; -} - -/** - * \brief Get reload value of the watchdog timer - * - */ -static inline uint16_t hw_watchdog_get_val(void) -{ - return REG_GETF(WDOG, WATCHDOG_REG, WDOG_VAL); -} - -/** - * \brief Generate a reset signal of the system if reload value reaches 0 - * - */ -static inline void hw_watchdog_gen_RST(void) __attribute__((always_inline)); - -static inline void hw_watchdog_gen_RST(void) -{ - REG_SET_BIT(WDOG, WATCHDOG_CTRL_REG, NMI_RST); -} - -/** - * \brief Register an interrupt handler - * - * \param [in] handler function pointer to handler to call when an interrupt occurs - * - */ -void hw_watchdog_register_int(hw_watchdog_interrupt_cb handler); - -/** - * \brief Unregister an interrupt handler - * - */ -__RETAINED_CODE void hw_watchdog_unregister_int(void); - -/** - * \brief Handle NMI interrupt. - * - * \param [in] hardfault_args pointer to call stack - * - */ -__RETAINED_CODE void hw_watchdog_handle_int(unsigned long *hardfault_args); - -/** - * \brief Check whether the timer has expired - * - * \return true, if the timer has expired, false otherwise - * - */ -bool hw_watchdog_is_timer_expired(void); - -/** - * \brief Check what is generated when watchdog reaches 0 value - * - * If it is NMI (interrupt) or RST (system/wdog reset). - * - * \return HW_WDG_RESET_NMI if NMI interrupt is generated, otherwise HW_WDG_RESET_RST - * - */ -HW_WDG_RESET hw_watchdog_is_irq_or_rst_gen(void); - -#endif /* HW_WATCHDOG_H_ */ - - -/** - * \} - * \} - * \} - */ diff --git a/third_party/dialog/DialogSDK/bsp/peripherals/include/hw_wkup.h b/third_party/dialog/DialogSDK/bsp/peripherals/include/hw_wkup.h deleted file mode 100644 index 5aa83328d..000000000 --- a/third_party/dialog/DialogSDK/bsp/peripherals/include/hw_wkup.h +++ /dev/null @@ -1,600 +0,0 @@ -/** - * \addtogroup BSP - * \{ - * \addtogroup DEVICES - * \{ - * \addtogroup Wakeup_Timer - * \{ - * \brief Wakeup Timer - */ - -/** - ***************************************************************************************** - * - * @file hw_wkup.h - * - * @brief Definition of API for the Wakeup timer Low Level Driver. - * - * Copyright (c) 2016, Dialog Semiconductor - * All rights reserved. - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. Neither the name of the copyright holder nor the names of its contributors - * may be used to endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, - * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, - * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED - * OF THE POSSIBILITY OF SUCH DAMAGE. - * - * - ***************************************************************************************** - */ - -#ifndef HW_WKUP_H_ -#define HW_WKUP_H_ - -#if dg_configUSE_HW_WKUP - -#include -#include -#include -#include "hw_gpio.h" - - -#if (dg_configBLACK_ORCA_IC_REV != BLACK_ORCA_IC_REV_A) && dg_configLATCH_WKUP_SOURCE -#define WKUP_SEL_P0_BASE_REG (volatile uint16_t *)(&WAKEUP->WKUP_SEL_GPIO_P0_REG) -#else -#define WKUP_SEL_P0_BASE_REG (volatile uint16_t *)(&WAKEUP->WKUP_SELECT_P0_REG) -#endif - -#if (dg_configBLACK_ORCA_IC_REV == BLACK_ORCA_IC_REV_A) && dg_configLATCH_WKUP_SOURCE -/** - * \brief Wakeup timer configuration - * - */ -typedef struct { - uint8_t pin_state[HW_GPIO_NUM_PORTS]; /**< pin states in each port, 1: enabled, 0: disabled */ - uint8_t pin_trigger[HW_GPIO_NUM_PORTS]; /**< pin triggers in each port, 1: low, 0: high */ -} wkup_pin_config_t; -extern volatile wkup_pin_config_t wkup_pin_config; /**< stores wkup pin configuration */ -extern volatile uint8_t wkup_status[HW_GPIO_NUM_PORTS]; /**< stores wakeup sources */ -#endif - -/** - * \brief Get the mask of a field of an WKUP register. - * - * \param [in] reg is the register to access - * \param [in] field is the register field to access - * - */ -#define HW_WKUP_REG_FIELD_MASK(reg, field) \ - (WAKEUP_WKUP_##reg##_REG_##field##_Msk) - -/** - * \brief Get the bit position of a field of an WKUP register. - * - * \param [in] reg is the register to access - * \param [in] field is the register field to access - * - */ -#define HW_WKUP_REG_FIELD_POS(reg, field) \ - (WAKEUP_WKUP_##reg##_REG_##field##_Pos) - -/** - * \brief Get the value of a field of an WKUP register. - * - * \param [in] reg is the register to access - * \param [in] field is the register field to write - * - * \return the value of the register field - * - */ -#define HW_WKUP_REG_GETF(reg, field) \ - ((WAKEUP->WKUP_##reg##_REG & (WAKEUP_WKUP_##reg##_REG_##field##_Msk)) >> (WAKEUP_WKUP_##reg##_REG_##field##_Pos)) - -/** - * \brief Set the value of a field of an WKUP register. - * - * \param [in] reg is the register to access - * \param [in] field is the register field to write - * \param [in] new_val is the value to write - * - */ -#define HW_WKUP_REG_SETF(reg, field, new_val) \ - WAKEUP->WKUP_##reg##_REG = ((WAKEUP->WKUP_##reg##_REG & ~(WAKEUP_WKUP_##reg##_REG_##field##_Msk)) | \ - ((WAKEUP_WKUP_##reg##_REG_##field##_Msk) & ((new_val) << (WAKEUP_WKUP_##reg##_REG_##field##_Pos)))) - - -/** - * \brief Pin state which increments event counter - * - */ -typedef enum { - HW_WKUP_PIN_STATE_HIGH = 0, - HW_WKUP_PIN_STATE_LOW = 1 -} HW_WKUP_PIN_STATE; - -/** - * \brief Wakeup timer configuration - * - */ -typedef struct { -#if dg_configBLACK_ORCA_IC_REV == BLACK_ORCA_IC_REV_A - /** - * counter threshold - * - * \warning Supported only in DA14680/1 chips - */ - uint8_t threshold; -#endif -#if !((dg_configLATCH_WKUP_SOURCE) && (dg_configBLACK_ORCA_IC_REV != BLACK_ORCA_IC_REV_A)) - uint8_t debounce; /**< debounce time in ms */ -#endif - uint8_t pin_state[HW_GPIO_NUM_PORTS]; /**< pin states in each port, see hw_wkup_configure_port */ - uint8_t pin_trigger[HW_GPIO_NUM_PORTS]; /**< pin triggers in each port, see hw_wkup_configure_port */ -} wkup_config; - -typedef void (*hw_wkup_interrupt_cb)(void); - -/** - * \brief Initialize peripheral - * - * Resets Wakeup Timer to initial state, i.e. interrupt is disabled and all pin triggers are - * disabled. - * - * \p cfg can be NULL - no configuration is performed in such case. - * - * \param [in] cfg configuration - * - */ -void hw_wkup_init(const wkup_config *cfg); - -/** - * \brief Configure peripheral - * - * Shortcut to call appropriate configuration function. If \p cfg is NULL, this function does - * nothing. - * - * \param [in] cfg configuration - * - */ -void hw_wkup_configure(const wkup_config *cfg); - -/** - * \brief Register interrupt handler - * - * Callback function is called when interrupt is generated, i.e. event counter reaches configured - * value. Interrupt is automatically enabled after calling this function. Application should reset - * interrupt in callback function using hw_wkup_reset_interrupt(). If no callback is specified, - * interrupt will be automatically cleared by the driver. - * - * \param [in] cb callback function - * \param [in] prio the priority of the interrupt - * - * \sa hw_wkup_unregister_interrupt - * \sa hw_wkup_clear_interrupt - * \sa hw_wkup_set_counter_threshold - * \sa hw_wkup_get_counter - * - */ -void hw_wkup_register_interrupt(hw_wkup_interrupt_cb cb, uint32_t prio); - -/** - * \brief Unregister interrupt handler - * - * Interrupt is automatically disabled after calling this function. - * - */ -void hw_wkup_unregister_interrupt(void); - -/** - * \brief Reset interrupt - * - * This function MUST be called by any user-specified interrupt callback, to clear the interrupt. - * - */ -static inline void hw_wkup_reset_interrupt(void) -{ - WAKEUP->WKUP_RESET_IRQ_REG = 1; -} - -/** - * \brief Interrupt handler - * - */ -void hw_wkup_handler(void); - -#if !((dg_configLATCH_WKUP_SOURCE) && (dg_configBLACK_ORCA_IC_REV != BLACK_ORCA_IC_REV_A)) -/** - * \brief Set debounce time - * - * Setting debounce time to 0 will disable hardware debouncing. Maximum debounce time is 63ms. - * - * \param [in] time_ms debounce time in milliseconds - * - */ -static inline void hw_wkup_set_debounce_time(uint8_t time_ms) -{ - HW_WKUP_REG_SETF(CTRL, WKUP_DEB_VALUE, time_ms); -} -#endif //!((dg_configLATCH_WKUP_SOURCE) && (dg_configBLACK_ORCA_IC_REV != BLACK_ORCA_IC_REV_A)) - -/** - * \brief Get current debounce time - * - * \return debounce time in milliseconds - * - */ -static inline uint8_t hw_wkup_get_debounce_time(void) -{ - return HW_WKUP_REG_GETF(CTRL, WKUP_DEB_VALUE); -} - -#if dg_configBLACK_ORCA_IC_REV == BLACK_ORCA_IC_REV_A -/** - * \brief Set threshold for event counter - * - * Interrupt is generated after event counter reaches configured value. - * - * \param [in] level number of events - * - * \warning Supported only in DA14680/1 chips - * \sa hw_wkup_register_interrupt - * \sa hw_wkup_get_counter - * - */ -static inline void hw_wkup_set_counter_threshold(uint8_t level) -{ - HW_WKUP_REG_SETF(COMPARE, COMPARE, level); -} - -/** - * \brief Get threshold for event counter - * - * \return number of events - * - * \warning Supported only in DA14680/1 chips - */ -static inline uint8_t hw_wkup_get_counter_threshold(void) -{ - return HW_WKUP_REG_GETF(COMPARE, COMPARE); -} - -/** - * \brief Get current value of event counter - * - * Number of events counted so far. Can be reset using hw_wkup_reset_counter(). - * - * \return number of events - * - * \note The counter is automatically reset by the hardware when the interrupt is generated. - * - * \warning Supported only in DA14680/1 chips - * - * \sa hw_wkup_reset_counter - * - */ -static inline uint8_t hw_wkup_get_counter(void) -{ - return HW_WKUP_REG_GETF(COUNTER, EVENT_VALUE); -} - -/** - * \brief Reset event counter - * - * There is no need to reset counter manually in interrupt callback - it's reset automatically by - * hardware. - * - * \warning Supported only in DA14680/1 chips - */ -static inline void hw_wkup_reset_counter(void) -{ - WAKEUP->WKUP_RESET_CNTR_REG = 1; -} -#endif - -/** - * \brief Set GPIO pin event counting state - * - * Once enabled, state changes on pin will increment event counter. State which triggers event can - * be set using hw_wkup_set_pin_trigger(). - * - * \param [in] port port number - * \param [in] pin pin number - * \param [in] enabled pin event counting state - * - * \sa hw_wkup_set_pin_trigger - * \sa hw_wkup_configure_pin - * \sa hw_wkup_configure_port - * - */ -static inline void hw_wkup_set_pin_state(HW_GPIO_PORT port, HW_GPIO_PIN pin, bool enabled) -{ - volatile uint16_t *wkup_pin_enable_reg = WKUP_SEL_P0_BASE_REG + port; - uint16_t wkup_pin_enable_val = *wkup_pin_enable_reg; - wkup_pin_enable_val &= ~(1 << pin); - wkup_pin_enable_val |= (!!enabled) << pin; - *wkup_pin_enable_reg = wkup_pin_enable_val; -#if (dg_configBLACK_ORCA_IC_REV == BLACK_ORCA_IC_REV_A) && dg_configLATCH_WKUP_SOURCE - wkup_pin_config.pin_state[port] = wkup_pin_enable_val; -#endif -} - -/** \brief Get GPIO pin event counting state - * - * \param [in] port port number - * \param [in] pin pin number - * - * \return pin event counting state - * - * \sa hw_wkup_set_pin_state - * - */ -static inline bool hw_wkup_get_pin_state(HW_GPIO_PORT port, HW_GPIO_PIN pin) -{ - uint16_t wkup_pin_enable_val = *(WKUP_SEL_P0_BASE_REG + port); - return (wkup_pin_enable_val & (1 << pin)) >> pin; -} - -/** - * \brief Set GPIO pin state which triggers event - * - * Pin event counting should be enabled for this setting to have any effect. - * - * \param [in] port port number - * \param [in] pin pin number - * \param [in] state pin state - * - * \sa hw_wkup_set_pin_counter_state - * \sa hw_wkup_configure_pin - * \sa hw_wkup_configure_port - * - */ -static inline void hw_wkup_set_pin_trigger(HW_GPIO_PORT port, HW_GPIO_PIN pin, - HW_WKUP_PIN_STATE state) -{ - uint16_t pol_rx_reg = *((volatile uint16_t *)(&WAKEUP->WKUP_POL_P0_REG) + port); - pol_rx_reg &= ~(1 << pin); - pol_rx_reg |= (!!state) << pin; - *((volatile uint16_t *)(&WAKEUP->WKUP_POL_P0_REG) + port) = pol_rx_reg; -#if (dg_configBLACK_ORCA_IC_REV == BLACK_ORCA_IC_REV_A) && dg_configLATCH_WKUP_SOURCE - wkup_pin_config.pin_trigger[port] = pol_rx_reg; -#endif -} - -/** \brief Get GPIO pin state which triggers event - * - * \param [in] port port number - * \param [in] pin pin number - * - * \return pin state - * - * \sa hw_wkup_set_pin_trigger - * - */ -static inline HW_WKUP_PIN_STATE hw_wkup_get_pin_trigger(HW_GPIO_PORT port, HW_GPIO_PIN pin) -{ - uint16_t pol_rx_reg = *((volatile uint16_t *)(&WAKEUP->WKUP_POL_P0_REG) + port); - return (pol_rx_reg & (1 << pin)) >> pin; -} - -/** - * \brief Set GPIO pin event counting and triggered state - * - * Effectively, this is shortcut for calling hw_wkup_set_pin_state() and hw_wkup_set_pin_trigger(). - * - * \param [in] port port number - * \param [in] pin pin number - * \param [in] enabled pin event counting state - * \param [in] state pin state - * - * \sa hw_wkup_set_pin_counter_state - * \sa hw_wkup_set_pin_trigger - * \sa hw_wkup_configure_port - * - */ -static inline void hw_wkup_configure_pin(HW_GPIO_PORT port, HW_GPIO_PIN pin, bool enabled, - HW_WKUP_PIN_STATE state) -{ - // first set up the proper polarity... - hw_wkup_set_pin_trigger(port, pin, state); - // ...then enable counting on the specific GPIO - hw_wkup_set_pin_state(port, pin, enabled); -} - -/** - * \brief Configure event counting and triggering state for whole GPIO port - * - * In \p enabled and \p state bitmasks each bit describes state of corresponding pin in port. - * For \p enabled 0 means disabled and 1 means enabled. - * For \p state 0 means event is triggered on low state and 1 means trigger is on high state. - * - * \param [in] port port number - * \param [in] enabled pin event counting bitmask - * \param [in] state pin state bitmask - * - * \sa hw_wkup_set_pin_counter_state - * \sa hw_wkup_set_pin_trigger - * \sa hw_wkup_configure_pin - * - */ -static inline void hw_wkup_configure_port(HW_GPIO_PORT port, uint8_t enabled, uint8_t state) -{ - *((volatile uint16_t *)(&WAKEUP->WKUP_POL_P0_REG) + port) = ~state; // register has inverted logic than state bitmask - *(WKUP_SEL_P0_BASE_REG + port) = enabled; -#if (dg_configBLACK_ORCA_IC_REV == BLACK_ORCA_IC_REV_A) && dg_configLATCH_WKUP_SOURCE - wkup_pin_config.pin_state[port] = enabled; - wkup_pin_config.pin_trigger[port] = ~state; -#endif -} - -/** - * \brief Get state (enabled/disabled) of all pins in GPIO port - * - * Meaning of bits in returned bitmask is the same as in hw_wkup_configure_port(). - * - * \return port pin event counter state bitmask - * - * \sa hw_wkup_configure_port - * - */ -static inline uint8_t hw_wkup_get_port_state(HW_GPIO_PORT port) -{ -#if dg_configLATCH_WKUP_SOURCE -#if dg_configBLACK_ORCA_IC_REV == BLACK_ORCA_IC_REV_A - return wkup_pin_config.pin_state[port]; -#else - return *((volatile uint16_t *)(&WAKEUP->WKUP_SEL_GPIO_P0_REG) + port); -#endif -#else - return *((volatile uint16_t *)(&WAKEUP->WKUP_SELECT_P0_REG) + port); -#endif -} - -/** - * \brief Get event triggering state for all pins in GPIO port - * - * Meaning of bits in returned bitmask is the same as in hw_wkup_configure_port(). - * - * \return port pin event triggering state bitmask - * - * \sa hw_wkup_configure_port - * - */ -static inline uint8_t hw_wkup_get_port_trigger(HW_GPIO_PORT port) -{ -#if (dg_configBLACK_ORCA_IC_REV == BLACK_ORCA_IC_REV_A) && dg_configLATCH_WKUP_SOURCE - return wkup_pin_config.pin_trigger[port]; -#else - return ~(*((volatile uint16_t *)(&WAKEUP->WKUP_POL_P0_REG) + port)); // register has inverted logic that returned bitmask -#endif -} - -/** - * \brief Emulate key hit - * - * Event counter will be increased with debounce time taken into account (if enabled). - * - */ -static inline void hw_wkup_emulate_key_hit(void) -{ - HW_WKUP_REG_SETF(CTRL, WKUP_SFT_KEYHIT, 1); - HW_WKUP_REG_SETF(CTRL, WKUP_SFT_KEYHIT, 0); -} - -/** - * \brief Freeze wakeup timer - * - */ -static inline void hw_wkup_freeze(void) -{ - GPREG->SET_FREEZE_REG = GPREG_SET_FREEZE_REG_FRZ_WKUPTIM_Msk; -} - -/** - * \brief Unfreeze wakeup timer - * - */ -static inline void hw_wkup_unfreeze(void) -{ - GPREG->RESET_FREEZE_REG = GPREG_RESET_FREEZE_REG_FRZ_WKUPTIM_Msk; -} - -/** - * \brief Get port status on last wake up - * - * Meaning of bits in returned bitmask is the same as in hw_wkup_configure_port(). - * - * \return port pin event counter state bitmask - * - * \sa hw_wkup_configure_port - * - */ -#if (dg_configBLACK_ORCA_IC_REV == BLACK_ORCA_IC_REV_A) && dg_configLATCH_WKUP_SOURCE -static inline uint8_t hw_wkup_get_status(HW_GPIO_PORT port) -{ - return wkup_status[port]; -} -#elif dg_configBLACK_ORCA_IC_REV != BLACK_ORCA_IC_REV_A -static inline uint8_t hw_wkup_get_status(HW_GPIO_PORT port) -{ - switch (port) { - case HW_GPIO_PORT_0: - return HW_WKUP_REG_GETF(STATUS_0, WKUP_STAT_P0); - case HW_GPIO_PORT_1: - return HW_WKUP_REG_GETF(STATUS_0, WKUP_STAT_P1); - case HW_GPIO_PORT_2: - return HW_WKUP_REG_GETF(STATUS_1, WKUP_STAT_P2); - case HW_GPIO_PORT_3: - return HW_WKUP_REG_GETF(STATUS_2, WKUP_STAT_P3); - case HW_GPIO_PORT_4: - return HW_WKUP_REG_GETF(STATUS_2, WKUP_STAT_P4); - default: - ASSERT_WARNING(0);//Invalid argument - } -} -#endif - -/** - * \brief Clear latch status - * - * This function MUST be called by any user-specified interrupt callback, - * to clear the interrupt latch status. - * - * \param [in] port port number - * \param [in] status pin status bitmask - * - * \sa hw_wkup_get_status - */ -#if (dg_configBLACK_ORCA_IC_REV == BLACK_ORCA_IC_REV_A) && dg_configLATCH_WKUP_SOURCE -static inline void hw_wkup_clear_status(HW_GPIO_PORT port, uint8_t status) -{ - ASSERT_WARNING((port>=HW_GPIO_PORT_0) && (port<=HW_GPIO_PORT_4)) - wkup_status[port] &= ~status; -} -#elif dg_configBLACK_ORCA_IC_REV != BLACK_ORCA_IC_REV_A -static inline void hw_wkup_clear_status(HW_GPIO_PORT port, uint8_t status) -{ - switch (port) { - case HW_GPIO_PORT_0: - HW_WKUP_REG_SETF(CLEAR_0, WKUP_CLEAR_P0, status); - break; - case HW_GPIO_PORT_1: - HW_WKUP_REG_SETF(CLEAR_0, WKUP_CLEAR_P1, status); - break; - case HW_GPIO_PORT_2: - HW_WKUP_REG_SETF(CLEAR_1, WKUP_CLEAR_P2, status); - break; - case HW_GPIO_PORT_3: - HW_WKUP_REG_SETF(CLEAR_2, WKUP_CLEAR_P3, status); - break; - case HW_GPIO_PORT_4: - HW_WKUP_REG_SETF(CLEAR_2, WKUP_CLEAR_P4, status); - break; - default: - ASSERT_WARNING(0);//Invalid argument - } -} -#endif - -#endif /* dg_configUSE_HW_WKUP */ -#endif /* HW_WKUP_H_ */ - -/** - * \} - * \} - * \} - */ diff --git a/third_party/dialog/DialogSDK/bsp/peripherals/include/sys_tcs.h b/third_party/dialog/DialogSDK/bsp/peripherals/include/sys_tcs.h deleted file mode 100644 index ea91523ee..000000000 --- a/third_party/dialog/DialogSDK/bsp/peripherals/include/sys_tcs.h +++ /dev/null @@ -1,123 +0,0 @@ -/** - * \addtogroup BSP - * \{ - * \addtogroup SYSTEM - * \{ - * \addtogroup TCS_HANDLER - * - * \brief TCS Handler - * - * \{ - */ - -/** - **************************************************************************************** - * - * @file sys_tcs.h - * - * @brief TCS Handler header file. - * - * Copyright (c) 2016, Dialog Semiconductor - * All rights reserved. - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. Neither the name of the copyright holder nor the names of its contributors - * may be used to endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, - * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, - * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED - * OF THE POSSIBILITY OF SUCH DAMAGE. - * - * - **************************************************************************************** - */ - -#ifndef SYS_TCS_H_ -#define SYS_TCS_H_ - -#include -#include "sdk_defs.h" - -typedef enum sys_tcs_area_type { -#ifdef CONFIG_USE_BLE - tcs_ble, -#endif -#ifdef CONFIG_USE_FTDF - tcs_ftdf, -#endif - tcs_radio, - tcs_charger, - tcs_audio, - tcs_system, /* Last area. Add any missing areas above this! */ -} sys_tcs_area_t; - -/** - * \brief Flag to check whether the TCS is written or not. - * \details true, the TCS is written (the BANDGAP_REG value exists in the TCS) - * false, the TCS is empty - */ -extern bool sys_tcs_is_calibrated_chip; - -/** - * \brief The XTAL16M settling time (in TCS). - * \details XTAL32K, the settling time is expressed in clock cycles - * RCX, not applicable; the SDK hard-coded value is used - * If it is zero, the hard-coded value (dg_configXTAL16_SETTLE_TIME) is applied. - */ -extern uint16_t sys_tcs_xtal16m_settling_time; - -/** - * \brief Initialize the variables used from the TCS handling module. - * - */ -void sys_tcs_init(void); - -/** - * \brief Store TCS pair in the Global TCS array if it points to a register - * that is not in the AON power dowmain or is not retained, else it applies the vaule to - * the register. - * - * \param [in] address the address of the register - * \param [in] value the value for this register - * - * \return true if the chip is calibrated (the BANDGAP setting has been applied), else false. - * - * \warning When this function is called, the RC16 must have been set as the system clock! - * - */ -bool sys_tcs_store_pair(uint32_t address, uint32_t value); - -/** - * \brief Sort the registers of the registers in the Memory Map of the chip to a different "classes" - * in the TCS array. - * - */ -void sys_tcs_sort_array(void); - -/** - * \brief Apply the pairs located in a "class" of the TCS array. This is done only - * for calibrated chips! - * - */ -void sys_tcs_apply(sys_tcs_area_t area); - -#endif /* SYS_TCS_H_ */ - -/** -\} -\} -\} -*/ diff --git a/third_party/dialog/DialogSDK/bsp/peripherals/src/hw_aes_hash.c b/third_party/dialog/DialogSDK/bsp/peripherals/src/hw_aes_hash.c deleted file mode 100644 index 16e7ec8bb..000000000 --- a/third_party/dialog/DialogSDK/bsp/peripherals/src/hw_aes_hash.c +++ /dev/null @@ -1,414 +0,0 @@ -/** - * \addtogroup BSP - * \{ - * \addtogroup DEVICES - * \{ - * \addtogroup AES_HASH - * \{ - */ - -/** - **************************************************************************************** - * - * @file hw_aes_hash.c - * - * @brief Implementation of the AES/Hash Engine Low Level Driver. - * - * Copyright (c) 2016, Dialog Semiconductor - * All rights reserved. - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. Neither the name of the copyright holder nor the names of its contributors - * may be used to endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, - * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, - * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED - * OF THE POSSIBILITY OF SUCH DAMAGE. - * - * - **************************************************************************************** - */ - -#if dg_configUSE_HW_AES_HASH - -#include -#include - -#define MODE_IS_AES(m) (m <= HW_AES_CTR) - -static void hw_aes_hash_wait_on_inactive(void) -{ - while (!REG_GETF(AES_HASH, CRYPTO_STATUS_REG, CRYPTO_INACTIVE)) { - ; - }; -} - -static void hw_aes_hash_set_mode(const hw_aes_hash_setup* setup) -{ - uint32_t crypt0_ctrl_reg = AES_HASH->CRYPTO_CTRL_REG; - - switch (setup->mode) { - case HW_AES_ECB: - REG_SET_FIELD(AES_HASH, CRYPTO_CTRL_REG, CRYPTO_HASH_SEL, crypt0_ctrl_reg, 0); - REG_SET_FIELD(AES_HASH, CRYPTO_CTRL_REG, CRYPTO_ALG_MD, crypt0_ctrl_reg, 0); - REG_SET_FIELD(AES_HASH, CRYPTO_CTRL_REG, CRYPTO_ALG, crypt0_ctrl_reg, 0); - break; - case HW_AES_CBC: - REG_SET_FIELD(AES_HASH, CRYPTO_CTRL_REG, CRYPTO_HASH_SEL, crypt0_ctrl_reg, 0); - REG_SET_FIELD(AES_HASH, CRYPTO_CTRL_REG, CRYPTO_ALG_MD, crypt0_ctrl_reg, 3); - REG_SET_FIELD(AES_HASH, CRYPTO_CTRL_REG, CRYPTO_ALG, crypt0_ctrl_reg, 0); - AES_HASH->CRYPTO_MREG0_REG = setup->aesIvCtrblk_0_31; - AES_HASH->CRYPTO_MREG1_REG = setup->aesIvCtrblk_32_63; - AES_HASH->CRYPTO_MREG2_REG = setup->aesIvCtrblk_64_95; - AES_HASH->CRYPTO_MREG3_REG = setup->aesIvCtrblk_96_127; - break; - case HW_AES_CTR: - REG_SET_FIELD(AES_HASH, CRYPTO_CTRL_REG, CRYPTO_HASH_SEL, crypt0_ctrl_reg, 0); - REG_SET_FIELD(AES_HASH, CRYPTO_CTRL_REG, CRYPTO_ALG_MD, crypt0_ctrl_reg, 2); - REG_SET_FIELD(AES_HASH, CRYPTO_CTRL_REG, CRYPTO_ALG, crypt0_ctrl_reg, 0); - AES_HASH->CRYPTO_MREG0_REG = setup->aesIvCtrblk_0_31; - AES_HASH->CRYPTO_MREG1_REG = setup->aesIvCtrblk_32_63; - AES_HASH->CRYPTO_MREG2_REG = setup->aesIvCtrblk_64_95; - AES_HASH->CRYPTO_MREG3_REG = setup->aesIvCtrblk_96_127; - break; - case HW_HASH_MD5: - REG_SET_FIELD(AES_HASH, CRYPTO_CTRL_REG, CRYPTO_HASH_SEL, crypt0_ctrl_reg, 1); - REG_SET_FIELD(AES_HASH, CRYPTO_CTRL_REG, CRYPTO_ALG_MD, crypt0_ctrl_reg, 0); - REG_SET_FIELD(AES_HASH, CRYPTO_CTRL_REG, CRYPTO_ALG, crypt0_ctrl_reg, 0); - break; - case HW_HASH_SHA_1: - REG_SET_FIELD(AES_HASH, CRYPTO_CTRL_REG, CRYPTO_HASH_SEL, crypt0_ctrl_reg, 1); - REG_SET_FIELD(AES_HASH, CRYPTO_CTRL_REG, CRYPTO_ALG_MD, crypt0_ctrl_reg, 0); - REG_SET_FIELD(AES_HASH, CRYPTO_CTRL_REG, CRYPTO_ALG, crypt0_ctrl_reg, 1); - break; - case HW_HASH_SHA_256_224: - REG_SET_FIELD(AES_HASH, CRYPTO_CTRL_REG, CRYPTO_HASH_SEL, crypt0_ctrl_reg, 1); - REG_SET_FIELD(AES_HASH, CRYPTO_CTRL_REG, CRYPTO_ALG_MD, crypt0_ctrl_reg, 0); - REG_SET_FIELD(AES_HASH, CRYPTO_CTRL_REG, CRYPTO_ALG, crypt0_ctrl_reg, 2); - break; - case HW_HASH_SHA_256: - REG_SET_FIELD(AES_HASH, CRYPTO_CTRL_REG, CRYPTO_HASH_SEL, crypt0_ctrl_reg, 1); - REG_SET_FIELD(AES_HASH, CRYPTO_CTRL_REG, CRYPTO_ALG_MD, crypt0_ctrl_reg, 0); - REG_SET_FIELD(AES_HASH, CRYPTO_CTRL_REG, CRYPTO_ALG, crypt0_ctrl_reg, 3); - break; - case HW_HASH_SHA_384: - REG_SET_FIELD(AES_HASH, CRYPTO_CTRL_REG, CRYPTO_HASH_SEL, crypt0_ctrl_reg, 1); - REG_SET_FIELD(AES_HASH, CRYPTO_CTRL_REG, CRYPTO_ALG_MD, crypt0_ctrl_reg, 1); - REG_SET_FIELD(AES_HASH, CRYPTO_CTRL_REG, CRYPTO_ALG, crypt0_ctrl_reg, 0); - break; - case HW_HASH_SHA_512: - REG_SET_FIELD(AES_HASH, CRYPTO_CTRL_REG, CRYPTO_HASH_SEL, crypt0_ctrl_reg, 1); - REG_SET_FIELD(AES_HASH, CRYPTO_CTRL_REG, CRYPTO_ALG_MD, crypt0_ctrl_reg, 1); - REG_SET_FIELD(AES_HASH, CRYPTO_CTRL_REG, CRYPTO_ALG, crypt0_ctrl_reg, 1); - break; - case HW_HASH_SHA_512_224: - REG_SET_FIELD(AES_HASH, CRYPTO_CTRL_REG, CRYPTO_HASH_SEL, crypt0_ctrl_reg, 1); - REG_SET_FIELD(AES_HASH, CRYPTO_CTRL_REG, CRYPTO_ALG_MD, crypt0_ctrl_reg, 1); - REG_SET_FIELD(AES_HASH, CRYPTO_CTRL_REG, CRYPTO_ALG, crypt0_ctrl_reg, 2); - break; - case HW_HASH_SHA_512_256: - REG_SET_FIELD(AES_HASH, CRYPTO_CTRL_REG, CRYPTO_HASH_SEL, crypt0_ctrl_reg, 1); - REG_SET_FIELD(AES_HASH, CRYPTO_CTRL_REG, CRYPTO_ALG_MD, crypt0_ctrl_reg, 1); - REG_SET_FIELD(AES_HASH, CRYPTO_CTRL_REG, CRYPTO_ALG, crypt0_ctrl_reg, 3); - break; - } - - AES_HASH->CRYPTO_CTRL_REG = crypt0_ctrl_reg; -} - -static void hw_aes_hash_check_data_size(const hw_aes_hash_setup* setup) -{ - switch (setup->mode) { - case HW_AES_ECB: - // In ECB mode the dataSize needs to be a multiple of 16. - ASSERT_ERROR(setup->dataSize % 0x10 == 0); - break; - case HW_AES_CBC: - case HW_AES_CTR: - // If more data is to come in CBC or CTR mode the dataSize needs to be a multiple of 16. - if (setup->moreDataToCome) { - ASSERT_ERROR(setup->dataSize % 0x10 == 0); - } - break; - case HW_HASH_MD5: - case HW_HASH_SHA_1: - case HW_HASH_SHA_256_224: - case HW_HASH_SHA_256: - case HW_HASH_SHA_384: - case HW_HASH_SHA_512: - case HW_HASH_SHA_512_224: - case HW_HASH_SHA_512_256: - // If more data is to come in hash mode the dataSize needs to be a multiple of 8. - if (setup->moreDataToCome) { - ASSERT_ERROR(setup->dataSize % 0x8 == 0); - } - break; - } -} - -hw_aes_hash_cb hw_aes_hash_old_style_cb = NULL; - -static void hw_aes_hash_old_cb_style_support(unsigned int status) -{ - if (hw_aes_hash_old_style_cb) { - hw_aes_hash_old_style_cb(); - } -} - -void hw_aes_hash_enable_interrupt(hw_aes_hash_cb cb) -{ - hw_aes_hash_old_style_cb = cb; - hw_crypto_enable_aes_hash_interrupt(hw_aes_hash_old_cb_style_support); - REG_SET_BIT(AES_HASH, CRYPTO_CTRL_REG, CRYPTO_IRQ_EN); -} - -void hw_aes_hash_disable_interrupt(void) -{ - REG_CLR_BIT(AES_HASH, CRYPTO_CTRL_REG, CRYPTO_IRQ_EN); - hw_crypto_disable_aes_hash_interrupt(); -} - -static inline uint32 hw_aes_hash_construct_word(const uint8 *data) -{ - if ((uint32)data & 0x3) { - uint32 internal_buf; - uint8 *p = (uint8 *)&internal_buf + 3; - unsigned int i; - - for (i = 0; i < 4; i++) { - *(p--) = *(data++); - } - - return internal_buf; - } - else { - return SWAP32(*(uint32 *)data); - } -} - -void hw_aes_hash_store_keys(hw_aes_key_size key_size, const uint8 *aes_keys, hw_aes_hash_key_exp_t key_exp) -{ - volatile uint32 *kmem_ptr = &AES_HASH->CRYPTO_KEYS_START; - unsigned int key_wrds; - - if (key_exp == HW_AES_DO_NOT_PERFORM_KEY_EXPANSION) { - /* Key expansion is provided by the software */ - REG_CLR_BIT(AES_HASH, CRYPTO_CTRL_REG, CRYPTO_AES_KEXP); - key_wrds = (key_size == HW_AES_256) ? 60 : (key_size == HW_AES_192) ? 52 : 44; - } - else { - /* Key expansion needs to be performed by the engine */ - REG_SET_BIT(AES_HASH, CRYPTO_CTRL_REG, CRYPTO_AES_KEXP); - key_wrds = (key_size == HW_AES_256) ? 8 : (key_size == HW_AES_192) ? 6 : 4; - } - - do { - *(kmem_ptr++) = hw_aes_hash_construct_word(aes_keys); - aes_keys += 4; - key_wrds--; - } while (key_wrds > 0); -} - -void hw_aes_hash_enable(const hw_aes_hash_setup setup) -{ - hw_aes_hash_check_data_size(&setup); - - hw_aes_hash_enable_clock(); - - hw_aes_hash_set_mode(&setup); - - uint32_t crypto_ctrl_reg = AES_HASH->CRYPTO_CTRL_REG; - REG_SET_FIELD(AES_HASH, CRYPTO_CTRL_REG, CRYPTO_MORE_IN, crypto_ctrl_reg, - setup.moreDataToCome); - REG_SET_FIELD(AES_HASH, CRYPTO_CTRL_REG, CRYPTO_HASH_OUT_LEN, crypto_ctrl_reg, - (setup.hashOutLength - 1)); - REG_SET_FIELD(AES_HASH, CRYPTO_CTRL_REG, CRYPTO_ENCDEC, crypto_ctrl_reg, - setup.aesDirection); - REG_SET_FIELD(AES_HASH, CRYPTO_CTRL_REG, CRYPTO_AES_KEXP, crypto_ctrl_reg, - setup.aesKeyExpand); - REG_SET_FIELD(AES_HASH, CRYPTO_CTRL_REG, CRYPTO_AES_KEY_SZ, crypto_ctrl_reg, - setup.aesKeySize); - REG_SET_FIELD(AES_HASH, CRYPTO_CTRL_REG, CRYPTO_OUT_MD, crypto_ctrl_reg, - !setup.aesWriteBackAll); - AES_HASH->CRYPTO_CTRL_REG = crypto_ctrl_reg; - - if (MODE_IS_AES(setup.mode)) { - hw_aes_hash_store_keys(setup.aesKeySize, (uint8 *)setup.aesKeys, !setup.aesKeyExpand); - } - - hw_aes_hash_cfg_dma((const uint8 *)setup.sourceAddress, (uint8 *)setup.destinationAddress, - (unsigned int)setup.dataSize); - - if (setup.enableInterrupt) { - hw_aes_hash_old_style_cb = setup.callback; - hw_aes_hash_enable_interrupt_source(); - hw_crypto_enable_aes_hash_interrupt(hw_aes_hash_old_cb_style_support); - } - else { - hw_aes_hash_disable_interrupt_source(); - hw_crypto_disable_aes_hash_interrupt(); - } - - hw_aes_hash_start(); -} - -void hw_aes_hash_init(hw_aes_hash_setup *setup) -{ - hw_aes_hash_check_data_size(setup); - - hw_aes_hash_enable_clock(); - - hw_aes_hash_set_mode(setup); - - uint32_t crypto_ctrl_reg = AES_HASH->CRYPTO_CTRL_REG; - REG_SET_FIELD(AES_HASH, CRYPTO_CTRL_REG, CRYPTO_MORE_IN, crypto_ctrl_reg, - setup->moreDataToCome); - REG_SET_FIELD(AES_HASH, CRYPTO_CTRL_REG, CRYPTO_HASH_OUT_LEN, crypto_ctrl_reg, - (setup->hashOutLength - 1)); - REG_SET_FIELD(AES_HASH, CRYPTO_CTRL_REG, CRYPTO_ENCDEC, crypto_ctrl_reg, - setup->aesDirection); - REG_SET_FIELD(AES_HASH, CRYPTO_CTRL_REG, CRYPTO_AES_KEXP, crypto_ctrl_reg, - setup->aesKeyExpand); - REG_SET_FIELD(AES_HASH, CRYPTO_CTRL_REG, CRYPTO_AES_KEY_SZ, crypto_ctrl_reg, - setup->aesKeySize); - REG_SET_FIELD(AES_HASH, CRYPTO_CTRL_REG, CRYPTO_OUT_MD, crypto_ctrl_reg, - !setup->aesWriteBackAll); - AES_HASH->CRYPTO_CTRL_REG = crypto_ctrl_reg; - - if (MODE_IS_AES(setup->mode)) { - hw_aes_hash_store_keys(setup->aesKeySize, (uint8 *)setup->aesKeys, !setup->aesKeyExpand); - } - - hw_aes_hash_cfg_dma((const uint8 *)setup->sourceAddress, (uint8 *)setup->destinationAddress, - (unsigned int)setup->dataSize); - - if (setup->enableInterrupt) { - hw_aes_hash_old_style_cb = setup->callback; - hw_aes_hash_enable_interrupt_source(); - hw_crypto_enable_aes_hash_interrupt(hw_aes_hash_old_cb_style_support); - } - else { - hw_aes_hash_disable_interrupt_source(); - hw_crypto_disable_aes_hash_interrupt(); - } -} - -void hw_aes_hash_restart(const uint32 sourceAddress, const uint32 dataSize, - const bool moreDataToCome) -{ - hw_aes_hash_cfg_dma((const uint8 *)sourceAddress, NULL, (unsigned int)dataSize); - REG_SETF(AES_HASH, CRYPTO_CTRL_REG, CRYPTO_MORE_IN, moreDataToCome); - hw_aes_hash_start(); -} - -bool hw_aes_hash_is_active() -{ - return REG_GETF(AES_HASH, CRYPTO_STATUS_REG, CRYPTO_INACTIVE) == 0; -} - -bool hw_aes_hash_wait_for_in() -{ - return REG_GETF(AES_HASH, CRYPTO_STATUS_REG, CRYPTO_WAIT_FOR_IN) == 1; -} - -void hw_aes_hash_disable(const bool waitOnFinish) -{ - if (waitOnFinish) - hw_aes_hash_wait_on_inactive(); - - hw_aes_hash_disable_interrupt_source(); - AES_HASH->CRYPTO_CLRIRQ_REG = 1; - GLOBAL_INT_DISABLE(); - REG_CLR_BIT(CRG_TOP, CLK_AMBA_REG, AES_CLK_ENABLE); - GLOBAL_INT_RESTORE(); - REG_CLR_BIT(AES_HASH, CRYPTO_CTRL_REG, CRYPTO_MORE_IN); -} - -void hw_aes_hash_cfg_dma(const uint8 *src, uint8 *dst, unsigned int len) -{ - /* Source address setting */ - AES_HASH->CRYPTO_FETCH_ADDR_REG = DA15000_phy_addr((uint32)src); - - /* Destination address setting */ - if (dst) { - unsigned int remap_type = REG_GETF(CRG_TOP, SYS_CTRL_REG, REMAP_ADR0); - - if (IS_SYSRAM_ADDRESS(dst) || - (IS_REMAPPED_ADDRESS(dst) && (remap_type == 0x3))) { - AES_HASH->CRYPTO_DEST_ADDR_REG = DA15000_phy_addr((uint32)dst); -#if dg_configEXEC_MODE != MODE_IS_CACHED - } else if (IS_CACHERAM_ADDRESS(dst)) { - AES_HASH->CRYPTO_DEST_ADDR_REG = DA15000_phy_addr((uint32)dst); -#endif - } else { - /* - * Destination address can only reside in RAM or Cache RAM, but in case of remapped - * address, REMAP_ADR0 cannot be 0x6 (Cache Data RAM) - */ - ASSERT_ERROR(0); - } - } - - /* Data length setting */ - AES_HASH->CRYPTO_LEN_REG = (uint32)len; -} - -static void hw_aes_hash_store_in_mode_dependent_regs(const uint8 *buf) -{ - AES_HASH->CRYPTO_MREG0_REG = hw_aes_hash_construct_word(buf + 12); - AES_HASH->CRYPTO_MREG1_REG = hw_aes_hash_construct_word(buf + 8); - AES_HASH->CRYPTO_MREG2_REG = hw_aes_hash_construct_word(buf + 4); - AES_HASH->CRYPTO_MREG3_REG = hw_aes_hash_construct_word(buf + 0); -} - -void hw_aes_hash_store_iv(const uint8 *iv) -{ - hw_aes_hash_store_in_mode_dependent_regs(iv); -} - -void hw_aes_hash_store_ic(const uint8 *ic) -{ - hw_aes_hash_store_in_mode_dependent_regs(ic); -} - -int hw_aes_hash_check_restrictions(void) -{ - unsigned int is_hash = AES_HASH->CRYPTO_CTRL_REG & AES_HASH_CRYPTO_CTRL_REG_CRYPTO_HASH_SEL_Msk; - unsigned int more_in = AES_HASH->CRYPTO_CTRL_REG & AES_HASH_CRYPTO_CTRL_REG_CRYPTO_MORE_IN_Msk; - - if (is_hash) { - if (more_in && (AES_HASH->CRYPTO_LEN_REG & 0x7)) { - return -1; - } - } - else { - unsigned int is_ecb = (((AES_HASH->CRYPTO_CTRL_REG & AES_HASH_CRYPTO_CTRL_REG_CRYPTO_ALG_MD_Msk) == 0) | - ((AES_HASH->CRYPTO_CTRL_REG & AES_HASH_CRYPTO_CTRL_REG_CRYPTO_ALG_MD_Msk) == 0x0100)); - - if ((is_ecb || more_in) && (AES_HASH->CRYPTO_LEN_REG & 0x15)) { - return -1; - } - } - - return 0; -} - -#endif /* dg_configUSE_HW_AES_HASH */ -/** - * \} - * \} - * \} - */ diff --git a/third_party/dialog/DialogSDK/bsp/peripherals/src/hw_cpm.c b/third_party/dialog/DialogSDK/bsp/peripherals/src/hw_cpm.c deleted file mode 100644 index a375f69fd..000000000 --- a/third_party/dialog/DialogSDK/bsp/peripherals/src/hw_cpm.c +++ /dev/null @@ -1,856 +0,0 @@ -/** -\addtogroup BSP -\{ -\addtogroup DEVICES -\{ -\addtogroup CPM -\{ -*/ - -/** - **************************************************************************************** - * - * @file hw_cpm.c - * - * @brief Clock and Power Manager Driver - * - * Copyright (c) 2016, Dialog Semiconductor - * All rights reserved. - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. Neither the name of the copyright holder nor the names of its contributors - * may be used to endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, - * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, - * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED - * OF THE POSSIBILITY OF SUCH DAMAGE. - * - * - **************************************************************************************** - */ - -#if dg_configUSE_HW_CPM - - -#include -#include "hw_cpm.h" -#include "hw_watchdog.h" - - -/* - * These variables should be defined and initialized by the framework/sdk used - */ -extern sys_clk_t cm_sysclk; -extern ahb_div_t cm_ahbclk; - - -/* - * Global variables - */ -__RETAINED_UNINIT uint16_t hw_cpm_bod_enabled_in_tcs; - -#if (dg_configPOWER_1V8_ACTIVE == 1) -__RETAINED_RW static bool cpm_1v8_state = true; -#else -static const bool cpm_1v8_state = false; -#endif - - -/* - * Local variables - */ - - - -/* - * Forward declarations - */ - - - -/* - * Function definitions - */ - - -uint32_t hw_cpm_sysclk_is_rc16(void) -{ - uint32_t ret = 0; - - if (REG_GETF(CRG_TOP, CLK_CTRL_REG, SYS_CLK_SEL) == SYS_CLK_IS_RC16) { - ret = 1; - } - - return ret; -} - - -uint32_t hw_cpm_sysclk_is_xtal16m(void) -{ - uint32_t ret = 0; - - if (REG_GETF(CRG_TOP, CLK_CTRL_REG, SYS_CLK_SEL) == SYS_CLK_IS_XTAL16M) { - ret = 1; - } - - return ret; -} - - -void hw_cpm_set_divn(bool freq) -{ - uint32_t regval; - int val; - - if (freq) { - val = 1; - } - else { - val = 0; - } - - regval = CRG_TOP->CLK_CTRL_REG; - REG_SET_FIELD(CRG_TOP, CLK_CTRL_REG, DIVN_XTAL32M_MODE, regval, val); - REG_SET_FIELD(CRG_TOP, CLK_CTRL_REG, XTAL32M_MODE, regval, val); - CRG_TOP->CLK_CTRL_REG = regval; -#if (dg_configBLACK_ORCA_IC_REV == BLACK_ORCA_IC_REV_A) - CRG_TOP->DIVN_SYNC_REG = val; -#endif -} - - -bool hw_cpm_is_rc16_allowed(void) -{ - bool ret = false; - uint32_t tmp; - - do { - tmp = CRG_TOP->SYS_STAT_REG; - -#ifdef CONFIG_USE_FTDF - // Check FTDF - if (tmp & REG_MSK(CRG_TOP, SYS_STAT_REG, FTDF_IS_UP)) { - break; - } -#endif - -#ifdef CONFIG_USE_BLE - // Check BLE - if (tmp & REG_MSK(CRG_TOP, SYS_STAT_REG, BLE_IS_UP)) { - break; - } -#endif - - // Check APHY/DPHY & COEX - if (tmp & REG_MSK(CRG_TOP, SYS_STAT_REG, RAD_IS_UP)) { - break; - } - - if (tmp & REG_MSK(CRG_TOP, SYS_STAT_REG, PER_IS_UP)) { - // Check SRC - if (REG_GETF(APU, SRC1_CTRL_REG, SRC_EN) == 1) { - break; - } - - // Check PDM - if (REG_GETF(CRG_PER, PDM_DIV_REG, CLK_PDM_EN) == 1) { - break; - } - - // Check USB - if (REG_GETF(USB, USB_MCTRL_REG, USBEN) == 1) { - break; - } - - tmp = CRG_PER->CLK_PER_REG; - // Check UART1/2 - if (tmp & REG_MSK(CRG_PER, CLK_PER_REG, UART_ENABLE)) { - break; - } - - /* -------------------------------------------------------------------------------*/ - - // Check ADC clock - if (REG_GETF(GPADC, GP_ADC_CTRL_REG, GP_ADC_EN) && - (!(tmp & REG_MSK(CRG_PER, CLK_PER_REG, ADC_CLK_SEL)))) { - break; - } - - // Check I2C clock - if ((tmp & REG_MSK(CRG_PER, CLK_PER_REG, I2C_ENABLE)) && - (!(tmp & REG_MSK(CRG_PER, CLK_PER_REG, I2C_CLK_SEL)))) { - break; - } - - // Check SPI clock - if ((tmp & REG_MSK(CRG_PER, CLK_PER_REG, SPI_ENABLE)) && - (!(tmp & REG_MSK(CRG_PER, CLK_PER_REG, SPI_CLK_SEL)))) { - break; - } - - // Check PCM clock - tmp = CRG_PER->PCM_DIV_REG; - if ((tmp & REG_MSK(CRG_PER, PCM_DIV_REG, CLK_PCM_EN)) && - (!(tmp & REG_MSK(CRG_PER, PCM_DIV_REG, PCM_SRC_SEL)))) { - break; - } - - /* KBSCN and QUAD are not seriously affected by the clock switch and, thus, - * they cannot block it! - */ - } - - tmp = CRG_TOP->CLK_TMR_REG; - // Check Timer0 clock - if ((tmp & REG_MSK(CRG_TOP, CLK_TMR_REG, TMR0_ENABLE)) && - (!(tmp & REG_MSK(CRG_TOP, CLK_TMR_REG, TMR0_CLK_SEL)))) { - break; - } - - // Check Timer2 clock - if ((tmp & REG_MSK(CRG_TOP, CLK_TMR_REG, TMR2_ENABLE)) && - (!(tmp & REG_MSK(CRG_TOP, CLK_TMR_REG, TMR2_CLK_SEL)))) { - break; - } - - /* Breathe, SOC and WDOG are not seriously affected by the clock switch and, thus, - * they cannot block it! - */ - - ret = true; - } while (0); - - return ret; -} - - -void hw_cpm_set_sysclk(uint32_t mode) -{ - /* Make sure a valid sys clock is requested */ - ASSERT_WARNING(mode <= SYS_CLK_IS_PLL); - - REG_SETF(CRG_TOP, CLK_CTRL_REG, SYS_CLK_SEL, mode); - - // Wait until the switch is done! - switch (mode) { - case SYS_CLK_IS_XTAL16M: - while (REG_GETF(CRG_TOP, CLK_CTRL_REG, RUNNING_AT_XTAL16M) == 0) {} - break; - - case SYS_CLK_IS_RC16: - while (REG_GETF(CRG_TOP, CLK_CTRL_REG, RUNNING_AT_RC16M) == 0) {} - break; - - case SYS_CLK_IS_LP: - while (REG_GETF(CRG_TOP, CLK_CTRL_REG, RUNNING_AT_32K) == 0) {} - break; - - case SYS_CLK_IS_PLL: - while (REG_GETF(CRG_TOP, CLK_CTRL_REG, RUNNING_AT_PLL96M) == 0) {} - break; - - default: - ASSERT_WARNING(0); - break; - } -} - - -void hw_cpm_short_delay(void) -{ - volatile int i; - - for (i = 0; i < 20; i++); -} - - -void hw_cpm_pll_sys_on(void) -{ - /* Before enabling the PLL LDO, the 1.4V voltage needs to be present; in real-life this - * is achieved by first turning on the 1.4V ACORE LDO, then the DCDC converter to take over - * the generation of 1.4V and finally turning off the ACORE LDO. - */ - - /* LDO PLL enable. */ - REG_SET_BIT(GPREG, PLL_SYS_CTRL1_REG, LDO_PLL_ENABLE); - - /* Configure system PLL. */ - REG_SETF(GPREG, PLL_SYS_CTRL1_REG, PLL_R_DIV, 1); /* Default/reset value. */ - - /* Program N-divider and DEL_SEL. */ - REG_SET_BIT(GPREG, PLL_SYS_CTRL2_REG, PLL_SEL_MIN_CUR_INT); // Last review date: Feb 15, 2016 - 12:25:47 - - /* Now turn on PLL. */ - REG_SET_BIT(GPREG, PLL_SYS_CTRL1_REG, PLL_EN); - - while ((GPREG->PLL_SYS_STATUS_REG & REG_MSK(GPREG, PLL_SYS_STATUS_REG, LDO_PLL_OK)) == 0) {} - - /* And wait until lock. */ - while ((GPREG->PLL_SYS_STATUS_REG & REG_MSK(GPREG, PLL_SYS_STATUS_REG, PLL_LOCK_FINE)) == 0) {} -} - - -void hw_cpm_pll_sys_off(void) -{ - // The PLL is not the system clk. - while ((CRG_TOP->CLK_CTRL_REG & REG_MSK(CRG_TOP, CLK_CTRL_REG, RUNNING_AT_PLL96M)) != 0); - GPREG->PLL_SYS_CTRL1_REG = 0x0000; // Switch off the PLL. -} - - -__RETAINED_CODE void hw_cpm_start_calibration(cal_clk_t clk_type, uint32_t cycles) -{ - ASSERT_WARNING(REG_GETF(ANAMISC, CLK_REF_SEL_REG, REF_CAL_START) == 0); // Must be disabled - - ANAMISC->CLK_REF_CNT_REG = cycles; // # of cal clock cycles - REG_SETF(ANAMISC, CLK_REF_SEL_REG, REF_CLK_SEL, clk_type); - REG_SET_BIT(ANAMISC, CLK_REF_SEL_REG, REF_CAL_START); -} - - -uint32_t hw_cpm_get_calibration_data(void) -{ - uint32_t high; - uint32_t low; - uint32_t value; - - while (REG_GETF(ANAMISC, CLK_REF_SEL_REG, REF_CAL_START) == 1); // Wait until it's finished - - high = ANAMISC->CLK_REF_VAL_H_REG; - low = ANAMISC->CLK_REF_VAL_L_REG; - value = ( high << 16 ) + low; - - return value; -} - -void hw_cpm_dcdc_config(void) -{ - uint32_t reg; - - /* - * Preferred settings section - * Last review date: January 03, 2017 - 16:26:35 - */ - REG_CLR_BIT(DCDC, DCDC_CTRL_0_REG, DCDC_FW_ENABLE); - - reg = DCDC->DCDC_IRQ_MASK_REG; - REG_SET_FIELD(DCDC, DCDC_IRQ_MASK_REG, DCDC_V18P_TIMEOUT_IRQ_MASK, reg, 1); - REG_SET_FIELD(DCDC, DCDC_IRQ_MASK_REG, DCDC_VDD_TIMEOUT_IRQ_MASK, reg, 1); - REG_SET_FIELD(DCDC, DCDC_IRQ_MASK_REG, DCDC_V18_TIMEOUT_IRQ_MASK, reg, 1); - REG_SET_FIELD(DCDC, DCDC_IRQ_MASK_REG, DCDC_V14_TIMEOUT_IRQ_MASK, reg, 1); - DCDC->DCDC_IRQ_MASK_REG = reg; - - REG_SET_BIT(DCDC, DCDC_TRIM_REG, DCDC_P_COMP_MAN_TRIM); - -#if dg_configBLACK_ORCA_IC_REV == BLACK_ORCA_IC_REV_A - DCDC->DCDC_V14_0_REG &= ~(REG_MSK(DCDC, DCDC_V14_0_REG, DCDC_V14_CUR_LIM_MIN) | - REG_MSK(DCDC, DCDC_V14_0_REG, DCDC_V14_FAST_RAMPING)); - - DCDC->DCDC_V18_0_REG &= ~(REG_MSK(DCDC, DCDC_V18_0_REG, DCDC_V18_CUR_LIM_MIN) | - REG_MSK(DCDC, DCDC_V18_0_REG, DCDC_V18_FAST_RAMPING)); - - DCDC->DCDC_V18P_0_REG &= ~(REG_MSK(DCDC, DCDC_V18P_0_REG, DCDC_V18P_CUR_LIM_MIN) | - REG_MSK(DCDC, DCDC_V18P_0_REG, DCDC_V18P_FAST_RAMPING)); - - DCDC->DCDC_VDD_0_REG &= ~(REG_MSK(DCDC, DCDC_VDD_0_REG, DCDC_VDD_CUR_LIM_MIN) | - REG_MSK(DCDC, DCDC_VDD_0_REG, DCDC_VDD_FAST_RAMPING)); -#else - DCDC->DCDC_V14_0_REG &= ~REG_MSK(DCDC, DCDC_V14_0_REG, DCDC_V14_FAST_RAMPING); - - DCDC->DCDC_V18_0_REG &= ~REG_MSK(DCDC, DCDC_V18_0_REG, DCDC_V18_FAST_RAMPING); - - DCDC->DCDC_V18P_0_REG &= ~REG_MSK(DCDC, DCDC_V18P_0_REG, DCDC_V18P_FAST_RAMPING); - - DCDC->DCDC_VDD_0_REG &= ~REG_MSK(DCDC, DCDC_VDD_0_REG, DCDC_VDD_FAST_RAMPING); - - reg = DCDC->DCDC_CTRL_2_REG; - REG_SET_FIELD(DCDC, DCDC_CTRL_2_REG, DCDC_LSSUP_TRIM, reg, 0); - REG_SET_FIELD(DCDC, DCDC_CTRL_2_REG, DCDC_HSGND_TRIM, reg, 0); - DCDC->DCDC_CTRL_2_REG = reg; -#endif - - REG_SETF(DCDC, DCDC_VDD_1_REG, DCDC_VDD_CUR_LIM_MAX_LV, 0xD); - - REG_SETF(DCDC, DCDC_V14_0_REG, DCDC_V14_VOLTAGE, 0x8); - - if (dg_configPOWER_1V8_ACTIVE == 1) { - REG_SETF(DCDC, DCDC_V18_0_REG, DCDC_V18_VOLTAGE, 0x16); - } - - if (dg_configPOWER_1V8P == 1) { - REG_SETF(DCDC, DCDC_V18P_0_REG, DCDC_V18P_VOLTAGE, 0x16); - } - // End of preferred settings - - DCDC->DCDC_VDD_1_REG |= ((1 << REG_POS(DCDC, DCDC_VDD_1_REG, DCDC_VDD_ENABLE_HV)) | - (1 << REG_POS(DCDC, DCDC_VDD_1_REG, DCDC_VDD_ENABLE_LV))); - - if ((dg_configPOWER_1V8_ACTIVE == 1) && cpm_1v8_state) { - DCDC->DCDC_V18_1_REG |= (1 << REG_POS(DCDC, DCDC_V18_1_REG, DCDC_V18_ENABLE_HV)); - DCDC->DCDC_V18_1_REG &= ~REG_MSK(DCDC, DCDC_V18_1_REG, DCDC_V18_ENABLE_LV); - } - else { - DCDC->DCDC_V18_1_REG &= ~(REG_MSK(DCDC, DCDC_V18_1_REG, DCDC_V18_ENABLE_HV) | - REG_MSK(DCDC, DCDC_V18_1_REG, DCDC_V18_ENABLE_LV)); - } - - if (dg_configPOWER_1V8P == 1) { - DCDC->DCDC_V18P_1_REG |= (1 << REG_POS(DCDC, DCDC_V18P_1_REG, DCDC_V18P_ENABLE_HV)); - DCDC->DCDC_V18P_1_REG &= ~REG_MSK(DCDC, DCDC_V18P_1_REG, DCDC_V18P_ENABLE_LV); - } - else { - DCDC->DCDC_V18P_1_REG &= ~(REG_MSK(DCDC, DCDC_V18P_1_REG, DCDC_V18P_ENABLE_HV) | - REG_MSK(DCDC, DCDC_V18P_1_REG, DCDC_V18P_ENABLE_LV)); - } -} - -void hw_cpm_dcdc_on(void) -{ - DCDC->DCDC_V14_1_REG |= ((1 << REG_POS(DCDC, DCDC_V14_1_REG, DCDC_V14_ENABLE_HV)) | - (1 << REG_POS(DCDC, DCDC_V14_1_REG, DCDC_V14_ENABLE_LV))); - - REG_SETF(DCDC, DCDC_VDD_0_REG, DCDC_VDD_VOLTAGE, 0x10); // 1.2 V - - REG_SETF(DCDC, DCDC_CTRL_0_REG, DCDC_MODE, 1); - - // Trim the LDOs down to lowest possible voltage so DCDC can take over - CRG_TOP->LDO_CTRL1_REG &= ~REG_MSK(CRG_TOP, LDO_CTRL1_REG, LDO_RADIO_SETVDD); - REG_SETF(CRG_TOP, LDO_CTRL1_REG, LDO_CORE_SETVDD, 0x2); - - // Turn off LDOs - CRG_TOP->LDO_CTRL1_REG &= ~REG_MSK(CRG_TOP, LDO_CTRL1_REG, LDO_RADIO_ENABLE); - CRG_TOP->LDO_CTRL2_REG &= ~(REG_MSK(CRG_TOP, LDO_CTRL2_REG, LDO_1V2_ON) | - REG_MSK(CRG_TOP, LDO_CTRL2_REG, LDO_1V8_FLASH_ON) | - REG_MSK(CRG_TOP, LDO_CTRL2_REG, LDO_1V8_PA_ON)); - - // Trim the LDOs back to normal levels - hw_cpm_reset_radio_vdd(); - CRG_TOP->LDO_CTRL1_REG &= ~REG_MSK(CRG_TOP, LDO_CTRL1_REG, LDO_CORE_SETVDD); -} - - -void hw_cpm_set_preferred_values(void) -{ - uint32_t reg; - - reg = CRG_TOP->CLK_16M_REG; - - REG_SET_FIELD(CRG_TOP, CLK_16M_REG, XTAL16_HPASS_FLT_EN, reg, 1); // Last review date: Feb 15, 2016 - 12:25:47 - REG_SET_FIELD(CRG_TOP, CLK_16M_REG, XTAL16_AMP_TRIM, reg, 5); - REG_SET_FIELD(CRG_TOP, CLK_16M_REG, XTAL16_CUR_SET, reg, 5); - - CRG_TOP->CLK_16M_REG = reg; - - REG_SETF(CRG_TOP, BANDGAP_REG, LDO_SLEEP_TRIM, 0x8); -#if dg_configBLACK_ORCA_IC_REV == BLACK_ORCA_IC_REV_A - REG_SETF(CRG_TOP, BANDGAP_REG, BYPASS_COLD_BOOT_DISABLE, 1); // Last review date: Feb 15, 2016 - 12:25:47 -#else - /* Hardcoding this since this will be used in AUTO mode as well (uartboot), where - * the AE datasheet is included (it doesn't contain this reg) - */ - volatile uint16_t *xtal16m_ctrl_reg = (volatile uint16_t *)0x50000056; - - /* The following code corresponds to (in BB): - REG_SET_FIELD(CRG_TOP, XTAL16M_CTRL_REG, XTAL16M_ENABLE_ZERO, reg, 1); - REG_SET_FIELD(CRG_TOP, XTAL16M_CTRL_REG, XTAL16M_AMP_REG_SIG_SEL, reg, 1); - */ - *xtal16m_ctrl_reg |= 0x100UL | 0x8UL; - - /* The following corresponds to - REG_SETF(CRG_TOP, BANDGAP_REG, LDO_SUPPLY_USE_BGREF, 1); - */ - CRG_TOP->BANDGAP_REG |= 0x4000UL; -#endif -} - -void hw_cpm_configure_xtal32k_pins(void) -{ - GPIO->P20_MODE_REG = 0x26; - GPIO->P21_MODE_REG = 0x26; -} - -void hw_cpm_configure_ext32k_pins(void) -{ - GPIO->P20_MODE_REG = 0x0; -} - -void hw_cpm_trigger_sw_cursor(void) -{ - if (dg_configUSE_SW_CURSOR == 1) { - if (dg_configBLACK_ORCA_MB_REV == BLACK_ORCA_MB_REV_D) { - SW_CURSOR_SET = 1 << SW_CURSOR_PIN; - } - else { - SW_CURSOR_RESET = 1 << SW_CURSOR_PIN; - } - - SW_CURSOR_GPIO = 0x300; - - hw_cpm_delay_usec(50); - - if (dg_configBLACK_ORCA_MB_REV == BLACK_ORCA_MB_REV_D) { - SW_CURSOR_RESET = 1 << SW_CURSOR_PIN; - } - - hw_cpm_setup_sw_cursor(); - } -} - -void hw_cpm_reset_system(void) -{ - __asm volatile ( " cpsid i " ); - - hw_watchdog_unregister_int(); - hw_watchdog_set_pos_val(1); - hw_watchdog_unfreeze(); - - while (1); -} - -void hw_cpm_reboot_system(void) -{ - __asm volatile ( " cpsid i " ); - - hw_watchdog_gen_RST(); - hw_watchdog_set_pos_val(1); - hw_watchdog_unfreeze(); - - while (1); -} - -void hw_cpm_assert_trigger_gpio(void) -{ - if (EXCEPTION_DEBUG == 1) { - if (dg_configLP_CLK_SOURCE == LP_CLK_IS_DIGITAL) { - hw_cpm_configure_ext32k_pins(); - } else if ((dg_configUSE_LP_CLK == LP_CLK_32000) - || (dg_configUSE_LP_CLK == LP_CLK_32768)) { - hw_cpm_configure_xtal32k_pins(); - } - hw_cpm_power_up_per_pd(); - hw_cpm_deactivate_pad_latches(); - - DBG_SET_HIGH(EXCEPTION_DEBUG, EXCEPTIONDBG); - } -} - -#define HW_CPM_ACTIVATE_BOD_PROTECTION \ -do { \ - uint16_t val = 0; \ - \ - REG_SETF(CRG_TOP, BOD_CTRL_REG, BOD_VDD_LVL, 1); /* VDD Level (700mV) */ \ - \ - if (hw_cpm_bod_enabled_in_tcs == 0) { \ - val = 0; \ - /* VBAT enable */ \ - REG_SET_FIELD(CRG_TOP, BOD_CTRL2_REG, BOD_VBAT_EN, val, 1); \ - /* 1V8 Flash enable */ \ - if ((dg_configPOWER_1V8_ACTIVE == 1) && (dg_configPOWER_1V8_SLEEP == 1)) { \ - REG_SET_FIELD(CRG_TOP, BOD_CTRL2_REG, BOD_1V8_FLASH_EN, val, 1); \ - } \ - /* 1V8P enable */ \ - if (dg_configPOWER_1V8P == 1) { \ - REG_SET_FIELD(CRG_TOP, BOD_CTRL2_REG, BOD_1V8_PA_EN, val, 1); \ - } \ - REG_SET_FIELD(CRG_TOP, BOD_CTRL2_REG, BOD_VDD_EN, val, 1); /* VDD enable */ \ - REG_SET_FIELD(CRG_TOP, BOD_CTRL2_REG, BOD_RESET_EN, val, 1); /* Reset enable */\ - CRG_TOP->BOD_CTRL2_REG = val; \ - } \ - else { \ - CRG_TOP->BOD_CTRL2_REG = hw_cpm_bod_enabled_in_tcs; \ - } \ -} while (0); - -void hw_cpm_activate_bod_protection(void) -{ - HW_CPM_ACTIVATE_BOD_PROTECTION -} - -void hw_cpm_activate_bod_protection_at_init(void) -{ - HW_CPM_ACTIVATE_BOD_PROTECTION -} - -void hw_cpm_configure_bod_protection(void) -{ - REG_SETF(CRG_TOP, BOD_CTRL_REG, BOD_VDD_LVL, 1); /* VDD Level (700mV) */ - - if (hw_cpm_bod_enabled_in_tcs == 0) { - /* VBAT enable */ - REG_SET_BIT(CRG_TOP, BOD_CTRL2_REG, BOD_VBAT_EN); - - /* 1V8 Flash enable */ - if ((dg_configPOWER_1V8_ACTIVE == 1) && (dg_configPOWER_1V8_SLEEP == 1)) { - REG_SET_BIT(CRG_TOP, BOD_CTRL2_REG, BOD_1V8_FLASH_EN); - } else { - REG_CLR_BIT(CRG_TOP, BOD_CTRL2_REG, BOD_1V8_FLASH_EN); - } - - /* 1V8P enable */ - if (dg_configPOWER_1V8P == 1) { - REG_SET_BIT(CRG_TOP, BOD_CTRL2_REG, BOD_1V8_PA_EN); - } else { - REG_CLR_BIT(CRG_TOP, BOD_CTRL2_REG, BOD_1V8_PA_EN); - } - /* Generate Reset on a BOD event */ - REG_SET_BIT(CRG_TOP, BOD_CTRL2_REG, BOD_RESET_EN); - } - else { - CRG_TOP->BOD_CTRL2_REG = hw_cpm_bod_enabled_in_tcs; - } -} - -void hw_cpm_set_1v8_state(bool state) -{ - if ((dg_configPOWER_1V8_ACTIVE == 1) && (cpm_1v8_state != state)) { - uint32_t reg; - uint32_t dcdc_state; - - GLOBAL_INT_DISABLE(); - - reg = CRG_TOP->LDO_CTRL2_REG; - dcdc_state = (uint32_t)REG_GETF(DCDC, DCDC_CTRL_0_REG, DCDC_MODE); - -#if (dg_configPOWER_1V8_ACTIVE == 1) - cpm_1v8_state = state; -#endif - - if (!cpm_1v8_state) { - // Disable BOD for the 1V8 rail - if (dg_configUSE_BOD == 1) { - REG_CLR_BIT(CRG_TOP, BOD_CTRL2_REG, BOD_1V8_FLASH_EN); - } - - // Deactivate 1V8 rail in LDOs - REG_CLR_FIELD(CRG_TOP, LDO_CTRL2_REG, LDO_1V8_FLASH_ON, reg); - - if (dg_configPOWER_1V8_SLEEP == 1) { - REG_SET_FIELD(CRG_TOP, LDO_CTRL2_REG, LDO_1V8_FLASH_RET_DISABLE, - reg, 1); - } - - CRG_TOP->LDO_CTRL2_REG = reg; - - // Deactivate 1V8 rail in DCDC - if (dg_configUSE_DCDC == 1) { - // Disable DCDC to apply change - REG_SETF(DCDC, DCDC_CTRL_0_REG, DCDC_MODE, 0); - - DCDC->DCDC_V18_1_REG &= - ~(REG_MSK(DCDC, DCDC_V18_1_REG, DCDC_V18_ENABLE_HV) | - REG_MSK(DCDC, DCDC_V18_1_REG, DCDC_V18_ENABLE_LV)); - - // Restore DCDC - REG_SETF(DCDC, DCDC_CTRL_0_REG, DCDC_MODE, dcdc_state); - } - } else { - // Restore 1V8 rail in LDOs - /* But not when DCDC is running... */ - if (dcdc_state != 1) { - REG_SET_FIELD(CRG_TOP, LDO_CTRL2_REG, LDO_1V8_FLASH_ON, - reg, 1); - } - - if (dg_configPOWER_1V8_SLEEP == 1) { - REG_CLR_FIELD(CRG_TOP, LDO_CTRL2_REG, LDO_1V8_FLASH_RET_DISABLE, - reg); - } - - CRG_TOP->LDO_CTRL2_REG = reg; - - // Restore 1V8 rail in DCDC - if (dg_configUSE_DCDC == 1) { - DCDC->DCDC_V18_1_REG |= (1 << REG_POS(DCDC, DCDC_V18_1_REG, - DCDC_V18_ENABLE_HV)); - DCDC->DCDC_V18_1_REG &= ~REG_MSK(DCDC, DCDC_V18_1_REG, - DCDC_V18_ENABLE_LV); - } - - // Restore BOD setup - if (dg_configUSE_BOD == 1) { - hw_cpm_delay_usec(200); - hw_cpm_configure_bod_protection(); - } - } - - GLOBAL_INT_RESTORE(); - } -} - -bool hw_cpm_get_1v8_state(void) -{ - return cpm_1v8_state; -} - -void hw_cpm_delay_usec(uint32_t usec) -{ - sys_clk_t sclk; - ahb_div_t hclk; - uint8_t freq; - - sclk = cm_sysclk; - hclk = cm_ahbclk; - freq = 16 >> hclk; - - /* Requested delay time must be > 0 usec */ - ASSERT_WARNING(usec != 0); - - /* - * ldr r3, [pc, #148] 2 cycles - * push {r4, lr} 2 cycles - * ldrb r1, [r3, #17] 2 cycles - * ldrb r2, [r3, #8] 2 cycles - * movs r3, #16 1 cycle - * asrs r3, r2 1 cycle - * uxtb r3, r2 1 cycle - * ---------- - * cmp r0, #0 4 cycles overhead in total - * bne.n 0x8003106 - * cpsid i - * bkpt 0x0002 - * - * Total: 11 cycles - */ - - __asm volatile( " cmp %[sclk], #1 \n" // 1 cycle : 1 (sysclk_RC16, sysclk_XTAL16M) - " ble start \n" // 1 or 3 cycles: 2/4 - " cmp %[sclk], #3 \n" // 1 cycle : 3 (sysclk_PLL48) - " bgt s96M \n" // 1 or 3 cycles: 4/6 - " blt s32M \n" // 1 or 3 cycles: 5/7 - "s48M: add r4, %[freq], %[freq] \n" // 1 cycle : 6 - " add %[freq], r4, %[freq] \n" // 1 cycle : 7 - " b start \n" // 3 cycles : 10 - "s96M: add r4, %[freq], %[freq] \n" // 1 cycle : 7 - " add %[freq], r4, %[freq] \n" // 1 cycle : 8 - " lsl %[freq], %[freq], #1 \n" // 1 cycle : 9 - " b start \n" // 3 cycles : 12 - "s32M: lsl %[freq], %[freq], #1 \n" // 1 cycle : 8 - /* -----------------------------------------------------*/ - /* Overhead up to this point: - * sysclk_RC16 : 15 cycles (error: 15/16 - 15 usec) - * sysclk_XTAL16M : 15 cycles (error: 15/16 - 15 usec) - * sysclk_XTAL32M : 19 cycles (error: 19/32 - 19/2 usec) - * sysclk_PLL48 : 21 cycles (error: 21/48 - 21/3 usec) - * sysclk_PLL96 : 23 cycles (error: 23/96 - 23/6 usec) - */ - "start: cmp %[freq], #16 \n" // 1 cycle : 1 - " bgt high \n" // 1 or 3 cycles: 2/4 - " blt low \n" // 1 or 3 cycles: 3/5 - " mov %[sclk], #4 \n" // 1 cycle : 4 - " b calc \n" // 3 cycles : 7 - "high: cmp %[freq], #24 \n" // 1 cycle : 5 - " bne c32M \n" // 1 or 3 cycles: 6/8 - " mov %[sclk], #6 \n" // 1 cycle : 7 - " b calc \n" // 3 cycles : 10 - "c32M: cmp %[freq], #32 \n" // 1 cycle : 9 - " bne c48M \n" // 1 or 3 cycles: 10/12 - " mov %[sclk], #8 \n" // 1 cycle : 11 - " b calc \n" // 3 cycles : 12 - "c48M: cmp %[freq], #48 \n" // 1 cycle : 13 - " bne c96M \n" // 1 or 3 cycles: 14/16 - " mov %[sclk], #12 \n" // 1 cycle : 15 - " b calc \n" // 3 cycles : 18 - "c96M: mov %[sclk], #24 \n" // 1 cycle : 17 - " b calc \n" // 3 cycles : 20 - "low: cmp %[freq], #1 \n" // 1 cycle : 6 - " bgt c2M \n" // 1 or 3 cycles: 7/9 - " lsr %[usec], %[usec], #2 \n" // 1 cycle : 8 - " b loop \n" // 3 cycles : 11 - "c2M: cmp %[freq], #2 \n" // 1 cycle : 10 - " bgt c3M \n" // 1 or 3 cycles: 11/13 - " lsr %[usec], %[usec], #1 \n" // 1 cycle : 12 - " b loop \n" // 3 cycles : 15 - "c3M: cmp %[freq], #3 \n" // 1 cycle : 14 - " bgt c4M \n" // 1 or 3 cycles: 15/17 - " lsr %[usec], %[usec], #1 \n" // 1 cycle : 16 - " b loop1 \n" // 3 cycles : 19 - "c4M: cmp %[freq], #4 \n" // 1 cycle : 18 - " bgt c6M \n" // 1 or 3 cycles: 19/21 - " b loop \n" // 3 cycles : 22 - "c6M: cmp %[freq],#6 \n" // 1 cycle : 22 - " bgt c8M \n" // 1 or 3 cycles: 23/25 - " b loop1 \n" // 3 cycles : 26 - "c8M: cmp %[freq], #8 \n" // 1 cycle : 26 - " bgt c12M \n" // 1 or 3 cycles: 27/29 - " mov %[sclk], #2 \n" // 1 cycle : 28 - " b calc \n" // 3 cycles : 31 - "c12M: mov %[sclk], #2 \n" // 1 cycle : 30 - " mul %[usec], %[sclk], %[usec] \n" // 1 cycle : 31 - /* Error: - * 1MHz: 11 cycles, 11usec - * 2MHz: 15 cycles, 7.5usec - * 3MHz: 19 cycles, 6.33usec - * 4MHz: 22 cycles, 5.5usec - * 6MHz: 26 cycles, 4.33usec - * 8MHz: 31 cycles, 3.875usec - * 12MHz: 31 cycles, 2.584usec - * 16MHz: 8 cycles, 0.5usec - * 24MHz: 11 cycles, 0.459usec - * 32MHz: 13 cycles, 0.406usec - * 48MHz: 19 cycles, 0.396usec - * 96MHz: 21 cycles, 0.219usec - * - * 1 loop of 4 cycles is --- 1 usec is # loops - * 1MHz: 4usec --- divide (usec) by 4 (up to 5usec error) - * 2MHz: 2usec --- divide (usec) by 2 (up to 2usec error) - * 4MHz: 1usec --- 1 loop ( 0*4 + 1*2, 0.5000usec error) - * 8MHz: 500nsec --- 2 loops ( 1*4 + 1*2, 0.2500usec error) - * 16MHz: 250nsec --- 4 loops ( 3*4 + 1*2, 0.5000usec error) - * 24MHz: 167nsec --- 6 loops ( 5*4 + 1*2, 0.0830usec error) - * 32MHz: 125nsec --- 8 loops ( 7*4 + 1*2, 0.0625usec error) - * 48MHz: 84nsec --- 12 loops (11*4 + 1*2, 0.0420usec error) - * 96MHz: 42nsec --- 24 loops (23*4 + 1*2, 0.0210usec error) - * - * 1 loop of 6 cycles is --- 1 usec is # loops - * 3MHz: 2usec --- divide (usec) by 2 (up to 3usec error) - * 6MHz: 1usec --- 1 loop ( 0*6 + 1*7, 0.1670usec error) - * 12MHz: 0.5usec --- 2 loops ( 1*6 + 1*7, 0.0830usec error) - * - * Cumulative error is: - * 1MHz: 11 + 5 = 16usec - * 2MHz: 7.5 + 2 = 9.5usec - * 3MHz: 6.33 + 3 = 9.33usec - * 4MHz: 5.5 + 0.5 = 6usec - * 6MHz: 4.33 + 0.167 = 4.5usec - * 8MHz: 3.875 + 0.25 = 4.125usec - * 12MHz: 2.584 + 0.083 = 2.67usec - * 16MHz: 0.5 + 0.5 = 1usec - * 24MHz: 0.459 + 0.083 = 0.541usec - * 32MHz: 0.406 + 0.0625 = 0.469usec - * 48MHz: 0.396 + 0.042 = 0.438usec - * 96MHz: 0.219 + 0.021 = 0.429usec - */ - "loop1: sub %[usec], %[usec], #1 \n" // 1 cycle - " nop \n" // 1 cycle - " nop \n" // 1 cycle - " bne loop1 \n" // 3 cycles except for the last one which is 1 - " b exit \n" // 3 cycles - "calc: mul %[usec], %[sclk], %[usec] \n" // 1 cycle - "loop: sub %[usec], %[usec], #1 \n" // 1 cycle - " bne loop \n" // 3 cycles except for the last one which is 1 - "exit: \n" - : - : /* output */ - [usec] "r" (usec), [freq] "r" (freq), [sclk] "r" (sclk) : /* inputs (%0, %1, %2) */ - "r4"); /* registers that are destroyed */ -} - -#endif /* dg_configUSE_HW_CPM */ -/** -\} -\} -\} -*/ diff --git a/third_party/dialog/DialogSDK/bsp/peripherals/src/hw_crypto.c b/third_party/dialog/DialogSDK/bsp/peripherals/src/hw_crypto.c deleted file mode 100644 index b43a393b0..000000000 --- a/third_party/dialog/DialogSDK/bsp/peripherals/src/hw_crypto.c +++ /dev/null @@ -1,126 +0,0 @@ -/** - * \addtogroup BSP - * \{ - * \addtogroup DEVICES - * \{ - * \addtogroup CRYPTO - * \{ - */ - -/** - **************************************************************************************** - * - * @file hw_crypto.c - * - * @brief Implementation of interrupt handling for the AES/Hash and ECC Engines. - * - * Copyright (c) 2016, Dialog Semiconductor - * All rights reserved. - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. Neither the name of the copyright holder nor the names of its contributors - * may be used to endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, - * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, - * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED - * OF THE POSSIBILITY OF SUCH DAMAGE. - * - * - **************************************************************************************** - */ - -#if (dg_configUSE_HW_AES_HASH || dg_configUSE_HW_ECC) - -#include "hw_crypto.h" - -#if (dg_configSYSTEMVIEW) -# include "SEGGER_SYSVIEW_FreeRTOS.h" -#else -# define SEGGER_SYSTEMVIEW_ISR_ENTER() -# define SEGGER_SYSTEMVIEW_ISR_EXIT() -#endif - -__RETAINED static hw_crypto_cb hw_crypto_aes_hash_cb; -__RETAINED static hw_crypto_cb hw_crypto_ecc_cb; - -void hw_crypto_enable_aes_hash_interrupt(hw_crypto_cb cb) -{ - /* A callback for the interrupt must be provided */ - ASSERT_ERROR(cb); - hw_crypto_aes_hash_cb = cb; - NVIC_EnableIRQ(CRYPTO_IRQn); -} - -void hw_crypto_enable_ecc_interrupt(hw_crypto_cb cb) -{ - /* A callback for the interrupt must be provided */ - ASSERT_ERROR(cb); - hw_crypto_ecc_cb = cb; - NVIC_EnableIRQ(CRYPTO_IRQn); -} - -void hw_crypto_disable_aes_hash_interrupt(void) -{ - hw_crypto_aes_hash_cb = NULL; - if (!hw_crypto_ecc_cb) { - NVIC_DisableIRQ(CRYPTO_IRQn); - } -} - -void hw_crypto_disable_ecc_interrupt(void) -{ - hw_crypto_ecc_cb = NULL; - if (!hw_crypto_aes_hash_cb) { - NVIC_DisableIRQ(CRYPTO_IRQn); - } -} - -void CRYPTO_Handler(void) -{ - SEGGER_SYSTEMVIEW_ISR_ENTER(); - - uint32_t status = AES_HASH->CRYPTO_STATUS_REG; - - /* In case both AES/HASH and ECC have triggered an interrupt, first the AES/HASH - will be served, and then the ISR will be called again since the ECC interrupt - source is only cleared by reading its status register */ - if (status & AES_HASH_CRYPTO_STATUS_REG_CRYPTO_IRQ_ST_Msk) { - /* Clear AES/HASH interrupt source */ - AES_HASH->CRYPTO_CLRIRQ_REG = 0x1; - - if (hw_crypto_aes_hash_cb != NULL) { - hw_crypto_aes_hash_cb(status); - } - } else { - /* Clear ECC interrupt source */ - status = ECC->ECC_STATUS_REG; - - if (hw_crypto_ecc_cb != NULL) { - hw_crypto_ecc_cb(status); - } - } - - SEGGER_SYSTEMVIEW_ISR_EXIT(); -} - - -#endif /* (dg_configUSE_HW_AES_HASH || dg_configUSE_HW_ECC) */ -/** - * \} - * \} - * \} - */ - diff --git a/third_party/dialog/DialogSDK/bsp/peripherals/src/hw_dma.c b/third_party/dialog/DialogSDK/bsp/peripherals/src/hw_dma.c deleted file mode 100644 index a90e4460a..000000000 --- a/third_party/dialog/DialogSDK/bsp/peripherals/src/hw_dma.c +++ /dev/null @@ -1,425 +0,0 @@ -/** - * \addtogroup BSP - * \{ - * \addtogroup SYSTEM - * \{ - * \addtogroup DMA - * \{ - */ - -/** - **************************************************************************************** - * - * @file hw_dma.c - * - * @brief Implementation of the DMA Low Level Driver. - * - * Copyright (c) 2016, Dialog Semiconductor - * All rights reserved. - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. Neither the name of the copyright holder nor the names of its contributors - * may be used to endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, - * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, - * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED - * OF THE POSSIBILITY OF SUCH DAMAGE. - * - * - **************************************************************************************** - */ - -#if dg_configUSE_HW_DMA - -#include -#include - -#if (dg_configSYSTEMVIEW) -# include "SEGGER_SYSVIEW_FreeRTOS.h" -#else -# define SEGGER_SYSTEMVIEW_ISR_ENTER() -# define SEGGER_SYSTEMVIEW_ISR_EXIT() -#endif - -static struct hw_dma_callback_data { - hw_dma_transfer_cb callback; - void *user_data; -} dma_callbacks_user_data[8]; - -#define DMA_CHN_REG(reg, chan) ((volatile uint16 *)(&(reg)) + ((chan) * 8)) - -/** - * \brief Initialize DMA Channel - * - * \param [in] channel_setup pointer to struct of type DMA_Setup - * - */ -void hw_dma_channel_initialization(DMA_setup *channel_setup) -{ - volatile uint16 *dma_x_ctrl_reg; - volatile uint16 *dma_x_a_start_low_reg; - volatile uint16 *dma_x_a_start_high_reg; - volatile uint16 *dma_x_b_start_low_reg; - volatile uint16 *dma_x_b_start_high_reg; - volatile uint16 *dma_x_len_reg; - volatile uint16 *dma_x_int_reg; - uint32 src_address; - uint32 dest_address; - - /* Make sure the DMA channel length is not zero */ - ASSERT_WARNING(channel_setup->length > 0); - - // Look up DMAx_CTRL_REG address - dma_x_ctrl_reg = DMA_CHN_REG(DMA->DMA0_CTRL_REG, channel_setup->channel_number); - - // Look up DMAx_A_STARTL_REG address - dma_x_a_start_low_reg = DMA_CHN_REG(DMA->DMA0_A_STARTL_REG, channel_setup->channel_number); - - // Look up DMAx_A_STARTH_REG address - dma_x_a_start_high_reg = DMA_CHN_REG(DMA->DMA0_A_STARTH_REG, channel_setup->channel_number); - - // Look up DMAx_B_STARTL_REG address - dma_x_b_start_low_reg = DMA_CHN_REG(DMA->DMA0_B_STARTL_REG, channel_setup->channel_number); - - // Look up DMAx_B_STARTH_REG address - dma_x_b_start_high_reg = DMA_CHN_REG(DMA->DMA0_B_STARTH_REG, channel_setup->channel_number); - - // Look up DMAX_LEN_REG address - dma_x_len_reg = DMA_CHN_REG(DMA->DMA0_LEN_REG, channel_setup->channel_number); - - // Look up DMAX_INT - dma_x_int_reg = DMA_CHN_REG(DMA->DMA0_INT_REG, channel_setup->channel_number); - - // Make sure DMA channel is disabled first - REG_SET_FIELD(DMA, DMA0_CTRL_REG, DMA_ON, *dma_x_ctrl_reg, HW_DMA_STATE_DISABLED); - - // Set DMAx_CTRL_REG width provided settings, but do not start the channel. - // Start the channel with the "dma_channel_enable" function separately. - *dma_x_ctrl_reg = - channel_setup->bus_width | - channel_setup->irq_enable | - channel_setup->dreq_mode | - channel_setup->b_inc | - channel_setup->a_inc | - channel_setup->circular | - channel_setup->dma_prio | - channel_setup->dma_idle | - channel_setup->dma_init; - - // Set DMA_REQ_MUX_REG for the requested channel / trigger combination - if (channel_setup->dma_req_mux != HW_DMA_TRIG_NONE) { - switch (channel_setup->channel_number) { - case HW_DMA_CHANNEL_0: - case HW_DMA_CHANNEL_1: - GLOBAL_INT_DISABLE(); - REG_SETF(DMA, DMA_REQ_MUX_REG, DMA01_SEL, channel_setup->dma_req_mux); - GLOBAL_INT_RESTORE(); - break; - case HW_DMA_CHANNEL_2: - case HW_DMA_CHANNEL_3: - GLOBAL_INT_DISABLE(); - REG_SETF(DMA, DMA_REQ_MUX_REG, DMA23_SEL, channel_setup->dma_req_mux); - GLOBAL_INT_RESTORE(); - break; - case HW_DMA_CHANNEL_4: - case HW_DMA_CHANNEL_5: - GLOBAL_INT_DISABLE(); - REG_SETF(DMA, DMA_REQ_MUX_REG, DMA45_SEL, channel_setup->dma_req_mux); - GLOBAL_INT_RESTORE(); - break; - case HW_DMA_CHANNEL_6: - case HW_DMA_CHANNEL_7: - GLOBAL_INT_DISABLE(); - REG_SETF(DMA, DMA_REQ_MUX_REG, DMA67_SEL, channel_setup->dma_req_mux); - GLOBAL_INT_RESTORE(); - break; - default: - break; - } -#if dg_configDMA_DYNAMIC_MUX || (dg_configBLACK_ORCA_IC_REV == BLACK_ORCA_IC_REV_A) - /* - * When different DMA channels are used for same device it is important - * that only one trigger is set for specific device at a time. - * Having same trigger for different channels can cause unpredictable results. - * Following code also should help when SPI1 is assigned to non 0 channel. - */ - GLOBAL_INT_DISABLE(); - switch (channel_setup->channel_number) { - case HW_DMA_CHANNEL_6: - case HW_DMA_CHANNEL_7: - if (REG_GETF(DMA, DMA_REQ_MUX_REG, DMA45_SEL) == channel_setup->dma_req_mux) { - REG_SETF(DMA, DMA_REQ_MUX_REG, DMA45_SEL, HW_DMA_TRIG_NONE); - } - /* no break */ - case HW_DMA_CHANNEL_4: - case HW_DMA_CHANNEL_5: - if (REG_GETF(DMA, DMA_REQ_MUX_REG, DMA23_SEL) == channel_setup->dma_req_mux) { - REG_SETF(DMA, DMA_REQ_MUX_REG, DMA23_SEL, HW_DMA_TRIG_NONE); - } - /* no break */ - case HW_DMA_CHANNEL_2: - case HW_DMA_CHANNEL_3: - if (REG_GETF(DMA, DMA_REQ_MUX_REG, DMA01_SEL) == channel_setup->dma_req_mux) { - REG_SETF(DMA, DMA_REQ_MUX_REG, DMA01_SEL, HW_DMA_TRIG_NONE); - } - break; - case HW_DMA_CHANNEL_0: - case HW_DMA_CHANNEL_1: - default: - break; - } - GLOBAL_INT_RESTORE(); -#endif - } - -#if (dg_configBLACK_ORCA_IC_REV == BLACK_ORCA_IC_REV_B) - //Set REQ_SENSE bit of i2c, USB and Uart peripherals TX path - if (((channel_setup->dma_req_mux == HW_DMA_TRIG_UART_RXTX) || - (channel_setup->dma_req_mux == HW_DMA_TRIG_UART2_RXTX) || - (channel_setup->dma_req_mux == HW_DMA_TRIG_I2C_RXTX) || - (channel_setup->dma_req_mux == HW_DMA_TRIG_I2C2_RXTX) || - (channel_setup->dma_req_mux == HW_DMA_TRIG_USB_RXTX)) && - (channel_setup->channel_number & 1)) {//odd channels used for TX - REG_SET_FIELD(DMA, DMA0_CTRL_REG, REQ_SENSE, *dma_x_ctrl_reg, 1); - } -#endif - src_address = DA15000_phy_addr(channel_setup->src_address); - dest_address = DA15000_phy_addr(channel_setup->dest_address); - - // Set source address registers - *dma_x_a_start_low_reg = (src_address & 0xffff); - *dma_x_a_start_high_reg = (src_address >> 16); - - // Set destination address registers - *dma_x_b_start_low_reg = (dest_address & 0xffff); - *dma_x_b_start_high_reg = (dest_address >> 16); - - // Set IRQ number of transfers - if (channel_setup->irq_nr_of_trans > 0) { - // If user explicitly set this number use it - *dma_x_int_reg = channel_setup->irq_nr_of_trans - 1; - } else { - // If user passed 0, use transfer length to fire interrupt after transfer ends - *dma_x_int_reg = channel_setup->length - 1; - } - - // Set the transfer length - *dma_x_len_reg = (channel_setup->length) - 1; - - if (channel_setup->irq_enable) - dma_callbacks_user_data[channel_setup->channel_number].callback = channel_setup->callback; - else - dma_callbacks_user_data[channel_setup->channel_number].callback = NULL; - dma_callbacks_user_data[channel_setup->channel_number].user_data = channel_setup->user_data; -} - -void hw_dma_channel_update_source(HW_DMA_CHANNEL channel, void *addr, uint16_t length, - hw_dma_transfer_cb cb) -{ - uint32_t phy_addr = DA15000_phy_addr((uint32_t) addr); - - dma_callbacks_user_data[channel].callback = cb; - - // Look up DMAx_A_STARTL_REG address - volatile uint16 *dma_x_a_start_low_reg = DMA_CHN_REG(DMA->DMA0_A_STARTL_REG, channel); - - // Look up DMAx_A_STARTH_REG address - volatile uint16 *dma_x_a_start_high_reg = DMA_CHN_REG(DMA->DMA0_A_STARTH_REG, channel); - - // Look up DMAX_LEN_REG address - volatile uint16 *dma_x_len_reg = DMA_CHN_REG(DMA->DMA0_LEN_REG, channel); - - - volatile uint16 *dma_x_int_reg = DMA_CHN_REG(DMA->DMA0_INT_REG, channel); - - // Set source address registers - *dma_x_a_start_low_reg = (phy_addr & 0xffff); - *dma_x_a_start_high_reg = (phy_addr >> 16); - - *dma_x_int_reg = length - 1; - - // Set the transfer length - *dma_x_len_reg = length - 1; -} - -void hw_dma_channel_update_destination(HW_DMA_CHANNEL channel, void *addr, uint16_t length, - hw_dma_transfer_cb cb) -{ - uint32_t phy_addr = DA15000_phy_addr((uint32_t) addr); - - dma_callbacks_user_data[channel].callback = cb; - - // Look up DMAx_B_STARTL_REG address - volatile uint16 *dma_x_b_start_low_reg = DMA_CHN_REG(DMA->DMA0_B_STARTL_REG, channel); - - // Look up DMAx_B_STARTH_REG address - volatile uint16 *dma_x_b_start_high_reg = DMA_CHN_REG(DMA->DMA0_B_STARTH_REG, channel); - - // Look up DMAX_LEN_REG address - volatile uint16 *dma_x_len_reg = DMA_CHN_REG(DMA->DMA0_LEN_REG, channel); - volatile uint16 *dma_x_int_reg = DMA_CHN_REG(DMA->DMA0_INT_REG, channel); - - // Set destination address registers - *dma_x_b_start_low_reg = (phy_addr & 0xffff); - *dma_x_b_start_high_reg = (phy_addr >> 16); - - *dma_x_int_reg = length - 1; - - // Set the transfer length - *dma_x_len_reg = length - 1; -} - -void hw_dma_channel_update_int_ix(HW_DMA_CHANNEL channel, uint16_t int_ix) -{ - volatile uint16 *dma_x_int_reg = DMA_CHN_REG(DMA->DMA0_INT_REG, channel); - - *dma_x_int_reg = int_ix; -} - -/** - * \brief Enable or disable a DMA channel - * - * \param [in] channel_number DMA channel number to start/stop - * \param [in] dma_on enable/disable DMA channel - * - */ -void hw_dma_channel_enable(HW_DMA_CHANNEL channel_number, HW_DMA_STATE dma_on) -{ - volatile uint16 *dma_x_ctrl_reg; - - // Look up DMAx_CTRL_REG address - dma_x_ctrl_reg = DMA_CHN_REG(DMA->DMA0_CTRL_REG, channel_number); - - - if (dma_on == HW_DMA_STATE_ENABLED) { - uint16_t dma_ctrl = *dma_x_ctrl_reg; - - REG_SET_FIELD(DMA, DMA0_CTRL_REG, DMA_ON, dma_ctrl, 1); - if (dma_callbacks_user_data[channel_number].callback) { - REG_SET_FIELD(DMA, DMA0_CTRL_REG, IRQ_ENABLE, dma_ctrl, 1); - } - // Start the chosen DMA channel - *dma_x_ctrl_reg = dma_ctrl; - NVIC_EnableIRQ(DMA_IRQn); - } else { - // Stop the chosen DMA channel - REG_SET_FIELD(DMA, DMA0_CTRL_REG, DMA_ON, *dma_x_ctrl_reg, 0); - REG_SET_FIELD(DMA, DMA0_CTRL_REG, IRQ_ENABLE, *dma_x_ctrl_reg, 0); - } -} - -static inline void dma_helper(HW_DMA_CHANNEL channel_number, uint16_t len, bool stop_dma) -{ - hw_dma_transfer_cb cb; - - NVIC_DisableIRQ(DMA_IRQn); - cb = dma_callbacks_user_data[channel_number].callback; - if (stop_dma) { - dma_callbacks_user_data[channel_number].callback = NULL; - hw_dma_channel_enable(channel_number, HW_DMA_STATE_DISABLED); - } - if (cb) { - cb(dma_callbacks_user_data[channel_number].user_data, len); - } - NVIC_EnableIRQ(DMA_IRQn); -} - -bool hw_dma_channel_active(void) -{ - int dma_on; - - dma_on = REG_GETF(DMA, DMA0_CTRL_REG, DMA_ON); - dma_on |= REG_GETF(DMA, DMA1_CTRL_REG, DMA_ON); - dma_on |= REG_GETF(DMA, DMA2_CTRL_REG, DMA_ON); - dma_on |= REG_GETF(DMA, DMA3_CTRL_REG, DMA_ON); - dma_on |= REG_GETF(DMA, DMA4_CTRL_REG, DMA_ON); - dma_on |= REG_GETF(DMA, DMA5_CTRL_REG, DMA_ON); - dma_on |= REG_GETF(DMA, DMA6_CTRL_REG, DMA_ON); - dma_on |= REG_GETF(DMA, DMA7_CTRL_REG, DMA_ON); - - return (dma_on == 1); -} - -/** - * \brief Capture DMA Interrupt Handler - * - * Calls user interrupt handler - * - */ -void DMA_Handler(void) -{ - SEGGER_SYSTEMVIEW_ISR_ENTER(); - - uint16_t risen; - uint16_t i; - volatile uint16 *dma_x_len_reg; - volatile uint16 *dma_x_int_reg; - volatile uint16 *dma_x_ctrl_reg; - - risen = DMA->DMA_INT_STATUS_REG; - - for (i = 0; risen != 0 && i < 8; ++i, risen >>= 1) { - if (risen & 1) { - bool stop; - - /* - * DMAx_INT_REG shows after how many transfers the interrupt - * is generated - */ - dma_x_int_reg = DMA_CHN_REG(DMA->DMA0_INT_REG, i); - - /* - * DMAx_LEN_REG shows the length of the DMA transfer - */ - dma_x_len_reg = DMA_CHN_REG(DMA->DMA0_LEN_REG, i); - - dma_x_ctrl_reg = DMA_CHN_REG(DMA->DMA0_CTRL_REG, i); - - /* - * Stop DMA if: - * - transfer is completed - * - mode is not circular - */ - stop = (*dma_x_int_reg == *dma_x_len_reg) - && (!REG_GET_FIELD(DMA, DMA0_CTRL_REG, CIRCULAR, *dma_x_ctrl_reg)); - DMA->DMA_CLEAR_INT_REG = 1 << i; - dma_helper(i, *dma_x_int_reg + 1, stop); - } - } - - SEGGER_SYSTEMVIEW_ISR_EXIT(); -} - -void hw_dma_channel_stop(HW_DMA_CHANNEL channel_number) -{ - // Stopping DMA will clear DMAx_IDX_REG so read it before - volatile uint16 *dma_x_idx_reg = DMA_CHN_REG(DMA->DMA0_IDX_REG, channel_number); - dma_helper(channel_number, *dma_x_idx_reg, true); -} - -uint16_t hw_dma_transfered_bytes(HW_DMA_CHANNEL channel_number) -{ - volatile uint16 *dma_x_int_reg = dma_x_int_reg = DMA_CHN_REG(DMA->DMA0_IDX_REG, channel_number); - - return *dma_x_int_reg; -} - -#endif /* dg_configUSE_HW_DMA */ -/** - * \} - * \} - * \} - */ diff --git a/third_party/dialog/DialogSDK/bsp/peripherals/src/hw_gpadc.c b/third_party/dialog/DialogSDK/bsp/peripherals/src/hw_gpadc.c deleted file mode 100644 index 299d4fe53..000000000 --- a/third_party/dialog/DialogSDK/bsp/peripherals/src/hw_gpadc.c +++ /dev/null @@ -1,301 +0,0 @@ -/** - * \addtogroup BSP - * \{ - * \addtogroup DEVICES - * \{ - * \addtogroup GPADC - * \{ - */ - -/** - **************************************************************************************** - * - * @file hw_gpadc.c - * - * @brief Implementation of the GPADC Low Level Driver. - * - * Copyright (c) 2016, Dialog Semiconductor - * All rights reserved. - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. Neither the name of the copyright holder nor the names of its contributors - * may be used to endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, - * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, - * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED - * OF THE POSSIBILITY OF SUCH DAMAGE. - * - * - **************************************************************************************** - */ - -#if dg_configUSE_HW_GPADC - - -#include -#include -#include - -#if (dg_configSYSTEMVIEW) -# include "SEGGER_SYSVIEW_FreeRTOS.h" -#else -# define SEGGER_SYSTEMVIEW_ISR_ENTER() -# define SEGGER_SYSTEMVIEW_ISR_EXIT() -#endif - -static hw_gpadc_interrupt_cb intr_cb = NULL; - -int16_t hw_gpadc_differential_gain_error __RETAINED; -int16_t hw_gpadc_single_ended_gain_error __RETAINED; - -void hw_gpadc_init(const gpadc_config *cfg) -{ - GPADC->GP_ADC_CTRL_REG = 0; - GPADC->GP_ADC_CTRL2_REG = 0; - GPADC->GP_ADC_CTRL3_REG = 0x40; // default value for GP_ADDC_EN_DEL - - NVIC_DisableIRQ(ADC_IRQn); - - hw_gpadc_configure(cfg); -} - -void hw_gpadc_reset(void) -{ - GPADC->GP_ADC_CTRL_REG = REG_MSK(GPADC, GP_ADC_CTRL_REG, GP_ADC_EN); - GPADC->GP_ADC_CTRL2_REG = 0; - GPADC->GP_ADC_CTRL3_REG = 0x40; // default value for GP_ADDC_EN_DEL - - NVIC_DisableIRQ(ADC_IRQn); -} - -void hw_gpadc_configure(const gpadc_config *cfg) -{ - if (cfg) { - hw_gpadc_set_clock(cfg->clock); - hw_gpadc_set_input_mode(cfg->input_mode); - hw_gpadc_set_input(cfg->input); - hw_gpadc_set_sample_time(cfg->sample_time); - hw_gpadc_set_continuous(cfg->continous); - hw_gpadc_set_interval(cfg->interval); - hw_gpadc_set_input_attenuator_state(cfg->input_attenuator); - hw_gpadc_set_chopping(cfg->chopping); - hw_gpadc_set_oversampling(cfg->oversampling); - } -} - -void hw_gpadc_register_interrupt(hw_gpadc_interrupt_cb cb) -{ - intr_cb = cb; - - REG_SETF(GPADC, GP_ADC_CTRL_REG, GP_ADC_MINT, 1); - - NVIC_EnableIRQ(ADC_IRQn); -} - -void hw_gpadc_unregister_interrupt(void) -{ - NVIC_DisableIRQ(ADC_IRQn); - - REG_SETF(GPADC, GP_ADC_CTRL_REG, GP_ADC_MINT, 0); - - intr_cb = NULL; -} - -void hw_gpadc_adc_measure(void) -{ - hw_gpadc_start(); - while (hw_gpadc_in_progress()); - hw_gpadc_clear_interrupt(); -} - -void hw_gpadc_calibrate(void) -{ - uint16_t adc_off_p, adc_off_n; - uint32_t diff; - int i; - - for (i = 0; i < 5; i++) { // Try up to five times to calibrate correctly. - hw_gpadc_set_offset_positive(0x200); - hw_gpadc_set_offset_negative(0x200); - hw_gpadc_set_mute(true); - if (dg_configUSE_SOC == 1) { - hw_gpadc_set_oversampling(4); - } - - hw_gpadc_set_sign_change(false); - hw_gpadc_adc_measure(); - if (dg_configUSE_SOC == 1) { - adc_off_p = ((hw_gpadc_get_value_without_gain() >> 6) - 0x200); - } else { - adc_off_p = hw_gpadc_get_value() - 0x200; - } - - hw_gpadc_set_sign_change(true); - hw_gpadc_adc_measure(); - if (dg_configUSE_SOC == 1) { - adc_off_n = ((hw_gpadc_get_value_without_gain() >> 6) - 0x200); - } else { - adc_off_n = hw_gpadc_get_value() - 0x200; - } - - if (hw_gpadc_get_input_mode() == HW_GPADC_INPUT_MODE_SINGLE_ENDED) { - hw_gpadc_set_offset_positive(0x200 - 2 * adc_off_p); - hw_gpadc_set_offset_negative(0x200 - 2 * adc_off_n); - } else { - hw_gpadc_set_offset_positive(0x200 - adc_off_p); - hw_gpadc_set_offset_negative(0x200 - adc_off_n); - } - - hw_gpadc_set_sign_change(false); - - // Verify calibration result - hw_gpadc_adc_measure(); - if (dg_configUSE_SOC == 1) { - adc_off_n = (hw_gpadc_get_value_without_gain() >> 6); - } else { - adc_off_n = hw_gpadc_get_value(); - } - - if (adc_off_n > 0x200) { - diff = adc_off_n - 0x200; - } - else { - diff = 0x200 - adc_off_n; - } - - if (diff < 0x8) { - break; - } - else if (i == 4) { - ASSERT_WARNING(0); // Calibration does not converge. - } - } - - hw_gpadc_set_mute(false); -} - -void ADC_Handler(void) -{ - SEGGER_SYSTEMVIEW_ISR_ENTER(); - - if (intr_cb) { - intr_cb(); - } else { - hw_gpadc_clear_interrupt(); - } - - SEGGER_SYSTEMVIEW_ISR_EXIT(); -} - -void hw_gpadc_test_measurements(void) -{ - uint32_t val[16]; - uint32_t mid = 0, diff_n = 0, diff_p = 0; - volatile bool loop = true; - - if (hw_gpadc_get_input_mode() != HW_GPADC_INPUT_MODE_SINGLE_ENDED) { - hw_gpadc_set_input_mode(HW_GPADC_INPUT_MODE_SINGLE_ENDED); - hw_gpadc_set_ldo_constant_current(true); - hw_gpadc_set_ldo_dynamic_current(true); - hw_gpadc_calibrate(); - } - hw_gpadc_reset(); - hw_gpadc_set_input_mode(HW_GPADC_INPUT_MODE_SINGLE_ENDED); - hw_gpadc_set_ldo_constant_current(true); - hw_gpadc_set_ldo_dynamic_current(true); - hw_gpadc_set_sample_time(15); - hw_gpadc_set_chopping(true); - hw_gpadc_set_input(HW_GPADC_INPUT_SE_VBAT); -// hw_gpadc_set_oversampling(1); // 2 samples - hw_gpadc_set_oversampling(2); // 4 samples - - while (loop) { - for (volatile int i = 0; i < 4; i++); // wait ~1.5usec - for (int j = 0; j < 16; j++) { - hw_gpadc_adc_measure(); - -// val[j] = hw_gpadc_get_raw_value() >> 4; // 2 samples - val[j] = hw_gpadc_get_raw_value() >> 3; // 4 samples - - if (j == 0) { - mid = 0; - diff_p = 0; - diff_n = 0; - } - - mid += val[j]; - - if (j == 15) { - mid /= 16; - for (int k = 0; k < 16; k++) { - if ((mid > val[k]) && (diff_p < mid - val[k])) { - diff_p = mid - val[k]; - } - - if ((mid < val[k]) && (diff_n < val[k] - mid)) { - diff_n = val[k] - mid; - } - } - } - } - } -} - -uint16_t hw_gpadc_get_raw_value(void) -{ - uint16_t adc_raw_res = GPADC->GP_ADC_RESULT_REG; - int32_t res = adc_raw_res; - - if (dg_configUSE_ADC_GAIN_ERROR_CORRECTION == 1) { - if (hw_gpadc_pre_check_for_gain_error()) { - int16_t gain_trim; - const HW_GPADC_INPUT_MODE input_mode = hw_gpadc_get_input_mode(); - - if (input_mode == HW_GPADC_INPUT_MODE_SINGLE_ENDED) { - gain_trim = hw_gpadc_single_ended_gain_error; - /* Gain correction */ - res = 0xFFFFU * adc_raw_res / (0xFFFFU + gain_trim); - /* Boundary check */ - if ((uint32_t)res > UINT16_MAX) { - return UINT16_MAX; - } - } else if (input_mode == HW_GPADC_INPUT_MODE_DIFFERENTIAL) { - gain_trim = hw_gpadc_differential_gain_error; - res = (int16_t)(adc_raw_res ^ 0x8000); - /* Gain correction */ - res = 0xFFFF * res / (0xFFFF + gain_trim); - /* Boundary check for lower limit */ - if (res < INT16_MIN) { - return 0; /* INT16_MIN ^ 0x8000 */ - } - /* Boundary check for upper limit */ - if (res > INT16_MAX) { - return UINT16_MAX; /* INT16_MAX ^ 0x8000 */ - } - res ^= 0x8000; - } - } - } - - return res; -} - -#endif /* dg_configUSE_HW_GPADC */ -/** - * \} - * \} - * \} - */ diff --git a/third_party/dialog/DialogSDK/bsp/peripherals/src/hw_gpio.c b/third_party/dialog/DialogSDK/bsp/peripherals/src/hw_gpio.c deleted file mode 100644 index ca5ab57db..000000000 --- a/third_party/dialog/DialogSDK/bsp/peripherals/src/hw_gpio.c +++ /dev/null @@ -1,302 +0,0 @@ -/** - * \addtogroup BSP - * \{ - * \addtogroup DEVICES - * \{ - * \addtogroup GPIO - * \{ - */ - -/** - **************************************************************************************** - * - * @file hw_gpio.c - * - * @brief Implementation of the GPIO Low Level Driver. - * - * Copyright (c) 2016, Dialog Semiconductor - * All rights reserved. - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. Neither the name of the copyright holder nor the names of its contributors - * may be used to endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, - * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, - * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED - * OF THE POSSIBILITY OF SUCH DAMAGE. - * - * - **************************************************************************************** - */ - -#if dg_configUSE_HW_GPIO - - -#include -#include - -/* Register adresses */ -#define PX_DATA_REG_ADDR(_port) ((volatile uint16_t *)(GPIO_BASE + offsetof(GPIO_Type, P0_DATA_REG)) + _port) -#define PX_DATA_REG(_port) *PX_DATA_REG_ADDR(_port) -#define PX_SET_DATA_REG_ADDR(_port) ((volatile uint16_t *)(GPIO_BASE + offsetof(GPIO_Type, P0_SET_DATA_REG)) + _port) -#define PX_SET_DATA_REG(_port) *PX_SET_DATA_REG_ADDR(_port) -#define PX_RESET_DATA_REG_ADDR(_port) ((volatile uint16_t *)(GPIO_BASE + offsetof(GPIO_Type, P0_RESET_DATA_REG)) + _port) -#define PX_RESET_DATA_REG(_port) *PX_RESET_DATA_REG_ADDR(_port) -#define PXX_MODE_REG_ADDR(_port, _pin) ((volatile uint16_t *)(GPIO_BASE + offsetof(GPIO_Type, P00_MODE_REG)) + (_port * 8) + _pin) -#define PXX_MODE_REG(_port, _pin) *PXX_MODE_REG_ADDR(_port, _pin) -#define PX_PADPWR_CTRL_REG_ADDR(_port) ((volatile uint16_t *)(GPIO_BASE + offsetof(GPIO_Type, P0_PADPWR_CTRL_REG)) + _port) -#define PX_PADPWR_CTRL_REG(_port) *PX_PADPWR_CTRL_REG_ADDR(_port) - -/* on FPGA we cannot read the state of an output GPIO */ - -#ifdef FPGA_PAD_LOOPBACK_BROKEN -static uint16_t Px_DATA_REG_cache[5]; -#endif - -#if (dg_configIMAGE_SETUP == PRODUCTION_MODE) && (DEBUG_GPIO_ALLOC_MONITOR_ENABLED == 1) - #warning "GPIO assignment monitoring is active in PRODUCTION build!" -#endif - -static volatile uint8_t GPIO_status[HW_GPIO_NUM_PORTS] = { 0 }; - -const uint8_t hw_gpio_port_num_pins[HW_GPIO_NUM_PORTS] = { - HW_GPIO_PORT_0_NUM_PINS, HW_GPIO_PORT_1_NUM_PINS, - HW_GPIO_PORT_2_NUM_PINS, HW_GPIO_PORT_3_NUM_PINS, - HW_GPIO_PORT_4_NUM_PINS }; - -/* - * Global Functions - **************************************************************************************** - */ - -void hw_gpio_configure(const gpio_config cfg[]) -{ -#if dg_configIMAGE_SETUP == DEVELOPMENT_MODE - int num_pins = 0; - uint8_t set_mask[HW_GPIO_NUM_PORTS] = { 0 }; -#endif - - if (!cfg) { - return; - } - - while (cfg->pin != 0xFF) { - uint8_t port = cfg->pin >> 4; - uint8_t pin = cfg->pin & 0x0F; - -#if dg_configIMAGE_SETUP == DEVELOPMENT_MODE - if (port >= HW_GPIO_NUM_PORTS || pin >= hw_gpio_port_num_pins[port]) { - /* - * invalid port or pin number specified, it was either incorrectly specified - * of cfg was not terminated properly using HW_GPIO_PINCONFIG_END so we're - * reading garbage - */ - __BKPT(0); - } - - if (++num_pins > HW_GPIO_NUM_PINS) { - /* - * trying to set more pins than available, perhaps cfg was not terminated - * properly using HW_GPIO_PINCONFIG_END? - */ - __BKPT(0); - } - - if (set_mask[port] & (1 << pin)) { - /* - * trying to set pin which has been already set by this call which means - * there is duplicated pin in configuration - does not make sense - */ - __BKPT(0); - } - - set_mask[port] |= (1 << pin); -#endif - - if (cfg->reserve) { - hw_gpio_reserve_and_configure_pin(port, pin, cfg->mode, cfg->func, cfg->high); - } else { - hw_gpio_configure_pin(port, pin, cfg->mode, cfg->func, cfg->high); - } - - cfg++; - } -} - -bool hw_gpio_reserve_pin(HW_GPIO_PORT port, HW_GPIO_PIN pin) -{ - if ((GPIO_status[port] & (1 << pin))) { - return false; - } - - GPIO_status[port] |= (1 << pin); - - return true; -} - -bool hw_gpio_reserve_and_configure_pin(HW_GPIO_PORT port, HW_GPIO_PIN pin, HW_GPIO_MODE mode, - HW_GPIO_FUNC function, bool high) -{ - if (!hw_gpio_reserve_pin(port, pin)) { - return false; - } - - hw_gpio_configure_pin(port, pin, mode, function, high); - - return true; -} - -void hw_gpio_unreserve_pin(HW_GPIO_PORT port, HW_GPIO_PIN pin) -{ - GPIO_status[port] &= ~(1 << pin); -} - -static void hw_gpio_verify_reserved(HW_GPIO_PORT port, HW_GPIO_PIN pin) -{ -#if (DEBUG_GPIO_ALLOC_MONITOR_ENABLED == 1) - if (!(GPIO_status[port] & (1 << pin))) { - // If debugger stops at this line, there is configuration problem - // pin is used without being reserved first - __BKPT(0); /* this pin has not been previously reserved! */ - } -#endif // (DEBUG_GPIO_ALLOC_MONITOR_ENABLED == 1) -} - - -void hw_gpio_set_pin_function(HW_GPIO_PORT port, HW_GPIO_PIN pin, HW_GPIO_MODE mode, - HW_GPIO_FUNC function) -{ - hw_gpio_verify_reserved(port, pin); - - PXX_MODE_REG(port, pin) = mode | function; -} - -void hw_gpio_get_pin_function(HW_GPIO_PORT port, HW_GPIO_PIN pin, HW_GPIO_MODE* mode, - HW_GPIO_FUNC* function) -{ - uint16_t val; - - hw_gpio_verify_reserved(port, pin); - - val = PXX_MODE_REG(port, pin); - *mode = val & 0x0700; - *function = val & 0x00ff; -} - -void hw_gpio_configure_pin(HW_GPIO_PORT port, HW_GPIO_PIN pin, HW_GPIO_MODE mode, - HW_GPIO_FUNC function, const bool high) -{ - hw_gpio_verify_reserved(port, pin); - - if (high) - hw_gpio_set_active(port, pin); - else - hw_gpio_set_inactive(port, pin); - - hw_gpio_set_pin_function(port, pin, mode, function); -} - -void hw_gpio_configure_pin_power(HW_GPIO_PORT port, HW_GPIO_PIN pin, HW_GPIO_POWER power) -{ - uint16_t padpwr; - - padpwr = PX_PADPWR_CTRL_REG(port); - padpwr &= ~(1 << pin); - if (power == HW_GPIO_POWER_VDD1V8P) { - padpwr |= (1 << pin); - } - PX_PADPWR_CTRL_REG(port) = padpwr; -} - -void hw_gpio_set_active(HW_GPIO_PORT port, HW_GPIO_PIN pin) -{ - hw_gpio_verify_reserved(port, pin); - - PX_SET_DATA_REG(port) = 1 << pin; -#ifdef FPGA_PAD_LOOPBACK_BROKEN - Px_DATA_REG_cache[port] |= 1 << pin; -#endif -} - -void hw_gpio_set_inactive(HW_GPIO_PORT port, HW_GPIO_PIN pin) -{ - hw_gpio_verify_reserved(port, pin); - - PX_RESET_DATA_REG(port) = 1 << pin; -#ifdef FPGA_PAD_LOOPBACK_BROKEN - Px_DATA_REG_cache[port] &= ~(1 << pin); -#endif -} - -bool hw_gpio_get_pin_status(HW_GPIO_PORT port, HW_GPIO_PIN pin) -{ -#ifdef FPGA_PAD_LOOPBACK_BROKEN - HW_GPIO_MODE mode; - HW_GPIO_FUNC function; -#endif - hw_gpio_verify_reserved(port, pin); - -#ifdef FPGA_PAD_LOOPBACK_BROKEN - hw_gpio_get_pin_function(port, pin, &mode, &function); - if (mode != HW_GPIO_MODE_OUTPUT) - return !!(PX_DATA_REG(port) & (1 << pin)); - else - return !!(Px_DATA_REG_cache[port] & (1 << pin)); -#else - return ( (PX_DATA_REG(port) & (1 << pin)) != 0 ); -#endif -} - -void hw_gpio_toggle(HW_GPIO_PORT port, HW_GPIO_PIN pin) -{ - hw_gpio_verify_reserved(port, pin); - - if (hw_gpio_get_pin_status(port, pin)) - hw_gpio_set_inactive(port, pin); - else - hw_gpio_set_active(port, pin); -} - -int hw_gpio_get_pins_with_function(HW_GPIO_FUNC func, uint8_t *buf, int buf_size) -{ - int count = 0; - int port; - int pin; - HW_GPIO_MODE mode; - HW_GPIO_FUNC pin_func; - - - for (port = 0; port < HW_GPIO_NUM_PORTS; ++port) { - for (pin = 0; pin < hw_gpio_port_num_pins[port]; ++pin) { - hw_gpio_get_pin_function(port, pin, &mode, &pin_func); - if (pin_func != func) { - continue; - } - if (count < buf_size && buf != NULL) { - buf[count] = (uint8_t) ((port << 4) | pin); - } - count++; - } - } - return count; -} - -#endif /* dg_configUSE_HW_GPIO */ -/** - * \} - * \} - * \} - */ diff --git a/third_party/dialog/DialogSDK/bsp/peripherals/src/hw_hard_fault.c b/third_party/dialog/DialogSDK/bsp/peripherals/src/hw_hard_fault.c deleted file mode 100644 index 53dd3203c..000000000 --- a/third_party/dialog/DialogSDK/bsp/peripherals/src/hw_hard_fault.c +++ /dev/null @@ -1,172 +0,0 @@ -/** - * \addtogroup BSP - * \{ - * \addtogroup SYSTEM - * \{ - * \addtogroup Exception_Handlers - * \{ -*/ - -/** - **************************************************************************************** - * - * @file hw_hard_fault.c - * - * @brief HardFault handler. - * - * Copyright (c) 2016, Dialog Semiconductor - * All rights reserved. - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. Neither the name of the copyright holder nor the names of its contributors - * may be used to endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, - * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, - * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED - * OF THE POSSIBILITY OF SUCH DAMAGE. - * - * - **************************************************************************************** - */ - -#include -#include -#include "sdk_defs.h" -#include "hw_hard_fault.h" -#include "hw_watchdog.h" -#include "hw_cpm.h" - - - -/* - * Global variables - */ -uint32_t hardfault_event_data[9] __attribute__((section("hard_fault_info"))); - -/* - * Local variables - */ - - -/* - * This is the base address in Retention RAM where the stacked information will be copied. - */ -#define STATUS_BASE (0x7FC5600) - -/* - * Compilation switch to enable verbose output on HardFault - */ -#ifndef VERBOSE_HARDFAULT -# define VERBOSE_HARDFAULT 0 -#endif - - -/* - * Function definitions - */ - -/** -* \brief HardFault handler implementation. During development it will copy the system's status -* to a predefined location in memory. In release mode, it will cause a system reset. -* -* \param [in] hardfault_args The system's status when the HardFault event occurred. -* -* \return void -* -*/ -#if (dg_configCODE_LOCATION == NON_VOLATILE_IS_FLASH) -__attribute__((section("text_retained"))) -#endif -void HardFault_HandlerC(unsigned long *hardfault_args) -{ - // Stack frame contains: - // r0, r1, r2, r3, r12, r14, the return address and xPSR - // - Stacked R0 = hf_args[0] - // - Stacked R1 = hf_args[1] - // - Stacked R2 = hf_args[2] - // - Stacked R3 = hf_args[3] - // - Stacked R12 = hf_args[4] - // - Stacked LR = hf_args[5] - // - Stacked PC = hf_args[6] - // - Stacked xPSR= hf_args[7] - if (dg_configIMAGE_SETUP == DEVELOPMENT_MODE) { - hw_watchdog_freeze(); // Stop WDOG - - ENABLE_DEBUGGER; - - *(volatile unsigned long *)(STATUS_BASE ) = hardfault_args[0]; // R0 - *(volatile unsigned long *)(STATUS_BASE + 0x04) = hardfault_args[1]; // R1 - *(volatile unsigned long *)(STATUS_BASE + 0x08) = hardfault_args[2]; // R2 - *(volatile unsigned long *)(STATUS_BASE + 0x0C) = hardfault_args[3]; // R3 - *(volatile unsigned long *)(STATUS_BASE + 0x10) = hardfault_args[4]; // R12 - *(volatile unsigned long *)(STATUS_BASE + 0x14) = hardfault_args[5]; // LR - *(volatile unsigned long *)(STATUS_BASE + 0x18) = hardfault_args[6]; // PC - *(volatile unsigned long *)(STATUS_BASE + 0x1C) = hardfault_args[7]; // PSR - *(volatile unsigned long *)(STATUS_BASE + 0x20) = (unsigned long)hardfault_args; // Stack Pointer - - *(volatile unsigned long *)(STATUS_BASE + 0x24) = (*((volatile unsigned long *)(0xE000ED28))); // CFSR - *(volatile unsigned long *)(STATUS_BASE + 0x28) = (*((volatile unsigned long *)(0xE000ED2C))); // HFSR - *(volatile unsigned long *)(STATUS_BASE + 0x2C) = (*((volatile unsigned long *)(0xE000ED30))); // DFSR - *(volatile unsigned long *)(STATUS_BASE + 0x30) = (*((volatile unsigned long *)(0xE000ED3C))); // AFSR - *(volatile unsigned long *)(STATUS_BASE + 0x34) = (*((volatile unsigned long *)(0xE000ED34))); // MMAR - *(volatile unsigned long *)(STATUS_BASE + 0x38) = (*((volatile unsigned long *)(0xE000ED38))); // BFAR - - if (VERBOSE_HARDFAULT) { - printf("HardFault Handler:\r\n"); - printf("- R0 = 0x%08lx\r\n", hardfault_args[0]); - printf("- R1 = 0x%08lx\r\n", hardfault_args[1]); - printf("- R2 = 0x%08lx\r\n", hardfault_args[2]); - printf("- R3 = 0x%08lx\r\n", hardfault_args[3]); - printf("- R12 = 0x%08lx\r\n", hardfault_args[4]); - printf("- LR = 0x%08lx\r\n", hardfault_args[5]); - printf("- PC = 0x%08lx\r\n", hardfault_args[6]); - printf("- xPSR= 0x%08lx\r\n", hardfault_args[7]); - } - - hw_cpm_assert_trigger_gpio(); - - while (1); - } - else { -# ifdef PRODUCTION_DEBUG_OUTPUT -# if (USE_WDOG) - WDOG->WATCHDOG_REG = 0xC8; // Reset WDOG! 200 * 10.24ms active time for UART to finish printing! -# endif - - dbg_prod_output(1, hardfault_args); -# endif // PRODUCTION_DEBUG_OUTPUT - - hardfault_event_data[0] = HARDFAULT_MAGIC_NUMBER; - hardfault_event_data[1] = hardfault_args[0]; // R0 - hardfault_event_data[2] = hardfault_args[1]; // R1 - hardfault_event_data[3] = hardfault_args[2]; // R2 - hardfault_event_data[4] = hardfault_args[3]; // R3 - hardfault_event_data[5] = hardfault_args[4]; // R12 - hardfault_event_data[6] = hardfault_args[5]; // LR - hardfault_event_data[7] = hardfault_args[6]; // PC - hardfault_event_data[8] = hardfault_args[7]; // PSR - - hw_cpm_reboot_system(); // Force reset - - while (1); - } -} - -/** - * \} - * \} - * \} - * */ diff --git a/third_party/dialog/DialogSDK/bsp/peripherals/src/hw_otpc.c b/third_party/dialog/DialogSDK/bsp/peripherals/src/hw_otpc.c deleted file mode 100644 index f9bc9efd2..000000000 --- a/third_party/dialog/DialogSDK/bsp/peripherals/src/hw_otpc.c +++ /dev/null @@ -1,1008 +0,0 @@ -/** - * \addtogroup BSP - * \{ - * \addtogroup DEVICES - * \{ - * \addtogroup OTPC - * \{ - */ - -/** - **************************************************************************************** - * - * @file hw_otpc.c - * - * @brief Implementation of the OTP Controller Low Level Driver. - * - * Copyright (c) 2016, Dialog Semiconductor - * All rights reserved. - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. Neither the name of the copyright holder nor the names of its contributors - * may be used to endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, - * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, - * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED - * OF THE POSSIBILITY OF SUCH DAMAGE. - * - * - **************************************************************************************** - */ - -#if dg_configUSE_HW_OTPC - - - -#include -#include "hw_otpc.h" - - -/* - * Local variables - */ - -/* - * 1MHz: 1 cycle = 1us ==> - * 25ns : 1us, 200ns : 1us, 500ns : 1us, 1us : 2us, 5us : 5us, 2us : 3us, blanc : 1us - * - * 2MHz: 1 cycle = 500ns ==> - * 25ns : 500ns, 200ns : 500ns, 500ns : 1us, 1us : 1.5us, 5us : 5us, 2us : 2.5us, blanc : 500ns - * - * 3MHz: 1 cycle = 333ns ==> - * 25ns : 333ns, 200ns : 333ns, 500ns : 666ns, 1us : 1.33us, 5us : 5us, 2us : 2.33us, blanc : 333ns - * - * 4MHz: 1 cycle = 250ns ==> - * 25ns : 250ns, 200ns : 250ns, 500ns : 750ns, 1us : 1.25ns, 5us : 5us, 2us : 2.25ns, blanc : 250ns - * - * 6MHz: 1 cycle = 167ns ==> - * 25ns : 167ns, 200ns : 333ns, 500ns : 667ns, 1us : 1.167ns, 5us : 5us, 2us : 2.167ns, blanc : 167ns - * - * 8MHz: 1 cycle = 125ns ==> - * 25ns : 125ns, 200ns : 250ns, 500ns : 625ns, 1us : 1.125ns, 5us : 5us, 2us : 2.125ns, blanc : 125ns - * - * 12MHz: 1 cycle = 83.33ns ==> - * 25ns : 83ns, 200ns : 250ns, 500ns : 583ns, 1us : 1.083ns, 5us : 5us, 2us : 2.083ns, blanc : 167ns - * - * 16MHz: 1 cycle = 62.5ns ==> - * 25ns : 62ns, 200ns : 250ns, 500ns : 562ns, 1us : 1.062ns, 5us : 5us, 2us : 2.062ns, blanc : 125ns - * - * 24MHz: 1 cycle = 41.67ns ==> - * 25ns : 41ns, 200ns : 208ns, 500ns : 541ns, 1us : 1.041ns, 5us : 5us, 2us : 2.041ns, blanc : 125ns - * - * 32MHz: 1 cycle = 31.25ns ==> - * 25ns : 31ns, 200ns : 219ns, 500ns : 531ns, 1us : 1.031ns, 5us : 5us, 2us : 2.031ns, blanc : 125ns - * - * 48MHz: 1 cycle = 41.67ns ==> - * 25ns : 41ns, 200ns : 208ns, 500ns : 521ns, 1us : 1.021ns, 5us : 5us, 2us : 2.021ns, blanc : 125ns - * - */ -const uint32_t tim1[11] = { - /* 1 MHz */ - ( 0 << OTPC_OTPC_TIM1_REG_OTPC_TIM1_CC_T_25NS_Pos) | - ( 0 << OTPC_OTPC_TIM1_REG_OTPC_TIM1_CC_T_200NS_Pos) | - ( 0 << OTPC_OTPC_TIM1_REG_OTPC_TIM1_CC_T_500NS_Pos) | - ( 1 << OTPC_OTPC_TIM1_REG_OTPC_TIM1_CC_T_1US_Pos) | - ( 4 << OTPC_OTPC_TIM1_REG_OTPC_TIM1_CC_T_PW_Pos) | - ( 2 << OTPC_OTPC_TIM1_REG_OTPC_TIM1_CC_T_CADX_Pos), - /* 2MHz */ - ( 0 << OTPC_OTPC_TIM1_REG_OTPC_TIM1_CC_T_25NS_Pos) | - ( 0 << OTPC_OTPC_TIM1_REG_OTPC_TIM1_CC_T_200NS_Pos) | - ( 1 << OTPC_OTPC_TIM1_REG_OTPC_TIM1_CC_T_500NS_Pos) | - ( 2 << OTPC_OTPC_TIM1_REG_OTPC_TIM1_CC_T_1US_Pos) | - ( 9 << OTPC_OTPC_TIM1_REG_OTPC_TIM1_CC_T_PW_Pos) | - ( 4 << OTPC_OTPC_TIM1_REG_OTPC_TIM1_CC_T_CADX_Pos), - /* 3MHz */ - ( 0 << OTPC_OTPC_TIM1_REG_OTPC_TIM1_CC_T_25NS_Pos) | - ( 0 << OTPC_OTPC_TIM1_REG_OTPC_TIM1_CC_T_200NS_Pos) | - ( 1 << OTPC_OTPC_TIM1_REG_OTPC_TIM1_CC_T_500NS_Pos) | - ( 3 << OTPC_OTPC_TIM1_REG_OTPC_TIM1_CC_T_1US_Pos) | - ( 14 << OTPC_OTPC_TIM1_REG_OTPC_TIM1_CC_T_PW_Pos) | - ( 6 << OTPC_OTPC_TIM1_REG_OTPC_TIM1_CC_T_CADX_Pos), - /* 4MHz */ - ( 0 << OTPC_OTPC_TIM1_REG_OTPC_TIM1_CC_T_25NS_Pos) | - ( 0 << OTPC_OTPC_TIM1_REG_OTPC_TIM1_CC_T_200NS_Pos) | - ( 2 << OTPC_OTPC_TIM1_REG_OTPC_TIM1_CC_T_500NS_Pos) | - ( 4 << OTPC_OTPC_TIM1_REG_OTPC_TIM1_CC_T_1US_Pos) | - ( 19 << OTPC_OTPC_TIM1_REG_OTPC_TIM1_CC_T_PW_Pos) | - ( 8 << OTPC_OTPC_TIM1_REG_OTPC_TIM1_CC_T_CADX_Pos), - /* 6MHz */ - ( 0 << OTPC_OTPC_TIM1_REG_OTPC_TIM1_CC_T_25NS_Pos) | - ( 1 << OTPC_OTPC_TIM1_REG_OTPC_TIM1_CC_T_200NS_Pos) | - ( 3 << OTPC_OTPC_TIM1_REG_OTPC_TIM1_CC_T_500NS_Pos) | - ( 6 << OTPC_OTPC_TIM1_REG_OTPC_TIM1_CC_T_1US_Pos) | - ( 29 << OTPC_OTPC_TIM1_REG_OTPC_TIM1_CC_T_PW_Pos) | - ( 12 << OTPC_OTPC_TIM1_REG_OTPC_TIM1_CC_T_CADX_Pos), - /* 8MHz */ - ( 0 << OTPC_OTPC_TIM1_REG_OTPC_TIM1_CC_T_25NS_Pos) | - ( 1 << OTPC_OTPC_TIM1_REG_OTPC_TIM1_CC_T_200NS_Pos) | - ( 4 << OTPC_OTPC_TIM1_REG_OTPC_TIM1_CC_T_500NS_Pos) | - ( 8 << OTPC_OTPC_TIM1_REG_OTPC_TIM1_CC_T_1US_Pos) | - ( 39 << OTPC_OTPC_TIM1_REG_OTPC_TIM1_CC_T_PW_Pos) | - ( 16 << OTPC_OTPC_TIM1_REG_OTPC_TIM1_CC_T_CADX_Pos), - /* 12MHz */ - ( 0 << OTPC_OTPC_TIM1_REG_OTPC_TIM1_CC_T_25NS_Pos) | - ( 2 << OTPC_OTPC_TIM1_REG_OTPC_TIM1_CC_T_200NS_Pos) | - ( 6 << OTPC_OTPC_TIM1_REG_OTPC_TIM1_CC_T_500NS_Pos) | - ( 12 << OTPC_OTPC_TIM1_REG_OTPC_TIM1_CC_T_1US_Pos) | - ( 59 << OTPC_OTPC_TIM1_REG_OTPC_TIM1_CC_T_PW_Pos) | - ( 24 << OTPC_OTPC_TIM1_REG_OTPC_TIM1_CC_T_CADX_Pos), - /* 16MHz */ - ( 0 << OTPC_OTPC_TIM1_REG_OTPC_TIM1_CC_T_25NS_Pos) | - ( 3 << OTPC_OTPC_TIM1_REG_OTPC_TIM1_CC_T_200NS_Pos) | - ( 8 << OTPC_OTPC_TIM1_REG_OTPC_TIM1_CC_T_500NS_Pos) | - ( 16 << OTPC_OTPC_TIM1_REG_OTPC_TIM1_CC_T_1US_Pos) | - ( 79 << OTPC_OTPC_TIM1_REG_OTPC_TIM1_CC_T_PW_Pos) | - ( 32 << OTPC_OTPC_TIM1_REG_OTPC_TIM1_CC_T_CADX_Pos), - /* 24MHz */ - ( 0 << OTPC_OTPC_TIM1_REG_OTPC_TIM1_CC_T_25NS_Pos) | - ( 4 << OTPC_OTPC_TIM1_REG_OTPC_TIM1_CC_T_200NS_Pos) | - ( 12 << OTPC_OTPC_TIM1_REG_OTPC_TIM1_CC_T_500NS_Pos) | - ( 24 << OTPC_OTPC_TIM1_REG_OTPC_TIM1_CC_T_1US_Pos) | - (119 << OTPC_OTPC_TIM1_REG_OTPC_TIM1_CC_T_PW_Pos) | - ( 48 << OTPC_OTPC_TIM1_REG_OTPC_TIM1_CC_T_CADX_Pos), - /* 32MHz */ - ( 0 << OTPC_OTPC_TIM1_REG_OTPC_TIM1_CC_T_25NS_Pos) | - ( 6 << OTPC_OTPC_TIM1_REG_OTPC_TIM1_CC_T_200NS_Pos) | - ( 16 << OTPC_OTPC_TIM1_REG_OTPC_TIM1_CC_T_500NS_Pos) | - ( 32 << OTPC_OTPC_TIM1_REG_OTPC_TIM1_CC_T_1US_Pos) | - (159 << OTPC_OTPC_TIM1_REG_OTPC_TIM1_CC_T_PW_Pos) | - ( 64 << OTPC_OTPC_TIM1_REG_OTPC_TIM1_CC_T_CADX_Pos), - /* 48MHz */ - ( 1 << OTPC_OTPC_TIM1_REG_OTPC_TIM1_CC_T_25NS_Pos) | - ( 9 << OTPC_OTPC_TIM1_REG_OTPC_TIM1_CC_T_200NS_Pos) | - ( 24 << OTPC_OTPC_TIM1_REG_OTPC_TIM1_CC_T_500NS_Pos) | - ( 48 << OTPC_OTPC_TIM1_REG_OTPC_TIM1_CC_T_1US_Pos) | - (239 << OTPC_OTPC_TIM1_REG_OTPC_TIM1_CC_T_PW_Pos) | - ( 96 << OTPC_OTPC_TIM1_REG_OTPC_TIM1_CC_T_CADX_Pos) -}; - -static const uint8_t tim2[HW_OTPC_SYS_CLK_FREQ_48 + 1] = - { 0, 0, 0, 0, 0, 0, 1, 1, 2, 3, 5 }; - - -/* - * Forward declarations - */ - - - -/* - * Inline helpers - */ - -/** - * Wait for programming to finish. - */ -__STATIC_INLINE void wait_for_prog_done(void) -{ - while (!(OTPC->OTPC_STAT_REG & HW_OTPC_REG_FIELD_MASK(STAT, PRDY))) - ; -} - -/** - * Wait for AREAD or APROG to finish. - */ -__STATIC_INLINE void wait_for_auto_done(void) -{ - while (!(OTPC->OTPC_STAT_REG & HW_OTPC_REG_FIELD_MASK(STAT, ARDY))) - ; -} - -/** - * Check for correctable or uncorrectable programming error. - */ -__STATIC_INLINE bool have_prog_error(void) -{ - return OTPC->OTPC_STAT_REG & - (HW_OTPC_FIELD_VAL(STAT, PERR_UNC, 1) | HW_OTPC_FIELD_VAL(STAT, PERR_COR, 1)); -} - -/* - * Assertion macros - */ - -/* - * Make sure that the OTP clock is enabled - */ -#define ASSERT_WARNING_OTP_CLK_ENABLED \ - ASSERT_WARNING(CRG_TOP->CLK_AMBA_REG & REG_MSK(CRG_TOP, CLK_AMBA_REG, OTP_ENABLE)) - -/* - * Make sure that the OTPC is in given state - */ -#define ASSERT_WARNING_OTPC_MODE(s) \ - ASSERT_WARNING((OTPC->OTPC_MODE_REG & HW_OTPC_REG_FIELD_MASK(MODE, MODE)) \ - == HW_OTPC_FIELD_VAL(MODE, MODE, s)) - -/* - * Make sure that the cell address is valid - */ -#define ASSERT_CELL_OFFSET_VALID(off) \ - ASSERT_WARNING(off < 0x2000) - -/* - * Make sure val is non-zero and less than maximum - */ -#define ASSERT_WARNING_NONZERO_RANGE(val, maximum) \ - do { \ - ASSERT_WARNING(val); \ - ASSERT_WARNING((val) < (maximum)); \ - } while (0) - - -/* - * Function definitions - */ - -__RETAINED_CODE HW_OTPC_SYS_CLK_FREQ hw_otpc_convert_sys_clk_mhz(uint32_t clk_freq) -{ - HW_OTPC_SYS_CLK_FREQ f; - - /* Value to convert must be at most 48 MHz */ - ASSERT_WARNING(clk_freq <= 48); - - if (--clk_freq < 4) { - /* - * cover 1, 2, 3, 4 - */ - f = (HW_OTPC_SYS_CLK_FREQ)clk_freq; - } else { - clk_freq -= 5; - /* - * remaining valid values: - * - 0 (initially 6) - * - 2 (initially 8) - * - 6 (initially 12) - * - 10 (initially 16) - * - 18 (initially 24) - * - 26 (initially 32) - * - 42 (initially 48) - */ - - /* no odd valid values any more */ - ASSERT_WARNING(!(clk_freq & 1)); - - clk_freq >>= 1; - /* - * remaining valid values: - * - 0 (initially 6) - * - 1 (initially 8) - * - 3 (initially 12) - * - 5 (initially 16) - * - 9 (initially 24) - * - 13 (initially 32) - * - 21 (initially 48) - */ - if (clk_freq > 8) { - /* - * remaining valid values: - * - 9 (initially 24) - * - 13 (initially 32) - * - 21 (initially 48) - */ - if (clk_freq > 16) { - ASSERT_WARNING(clk_freq == 21); - - f = HW_OTPC_SYS_CLK_FREQ_48; - } else { - clk_freq -= 8; - /* - * remaining valid values: - * - 1 (initially 24) - * - 5 (initially 32) - */ - ASSERT_WARNING((clk_freq == 1) || (clk_freq == 5)); - - if (clk_freq < 4) - f = (HW_OTPC_SYS_CLK_FREQ)HW_OTPC_SYS_CLK_FREQ_24; - else - f = (HW_OTPC_SYS_CLK_FREQ)HW_OTPC_SYS_CLK_FREQ_32; - } - } else { - /* - * remaining valid values: - * - 0 (initially 6) - * - 1 (initially 8) - * - 3 (initially 12) - * - 5 (initially 16) - */ - if (clk_freq > 2) { - ASSERT_WARNING((clk_freq == 3) || (clk_freq == 5)); - - if (clk_freq > 4) - f = (HW_OTPC_SYS_CLK_FREQ)HW_OTPC_SYS_CLK_FREQ_16; - else - f = (HW_OTPC_SYS_CLK_FREQ)HW_OTPC_SYS_CLK_FREQ_12; - } else { - f = (HW_OTPC_SYS_CLK_FREQ)(HW_OTPC_SYS_CLK_FREQ_6 + clk_freq); - } - } - } - - return f; -} - - -void hw_otpc_disable(void) -{ - /* - * Enable OTPC clock - */ - hw_otpc_init(); - - /* - * set OTPC to stand-by mode - */ - HW_OTPC_REG_SETF(MODE, MODE, HW_OTPC_MODE_STBY); - - /* - * Disable OTPC clock - */ - hw_otpc_close(); -} - - -__RETAINED_CODE void hw_otpc_set_speed(HW_OTPC_SYS_CLK_FREQ clk_speed) -{ - ASSERT_WARNING_OTP_CLK_ENABLED; - - /* - * Set access speed - */ - ASSERT_WARNING(clk_speed <= HW_OTPC_SYS_CLK_FREQ_48); - - OTPC->OTPC_TIM1_REG = tim1[clk_speed]; - HW_OTPC_REG_SETF(TIM2, CC_T_BCHK, tim2[clk_speed]); -} - - -void hw_otpc_power_save(uint32_t inactivity_period) -{ - /* Only go to power save for an inactivity_period < 1024 */ - ASSERT_WARNING(inactivity_period < 1024); - - HW_OTPC_REG_SETF(TIM2, CC_STBY_THR, inactivity_period); -} - - -uint32_t hw_otpc_num_of_rr(void) -{ - unsigned int i; - - volatile uint32_t *ptr = (volatile uint32_t *)MEMORY_OTP_BASE; - - ASSERT_WARNING_OTP_CLK_ENABLED; - - // STBY mode - HW_OTPC_REG_SETF(MODE, MODE, HW_OTPC_MODE_STBY); - - // The access will be performed in the spare rows - HW_OTPC_REG_SETF(MODE, USE_SP_ROWS, 1); - - // MREAD mode - HW_OTPC_REG_SETF(MODE, MODE, HW_OTPC_MODE_MREAD); - - // Read Records - i = 0; - while ((i < MAX_RR_AVAIL) && (ptr[0x9e - 4 * i] & 0x1)) { - i++; - } - - // STBY mode - HW_OTPC_REG_SETF(MODE, MODE, HW_OTPC_MODE_STBY); - - // Select the normal memory array - HW_OTPC_REG_SETF(MODE, USE_SP_ROWS, 0); - - return i; -} - -static bool manual_prog_verify(uint32_t cell_offset, uint32_t pword_l, uint32_t pword_h) -{ - uint32_t val_l, val_h, old_mode = OTPC->OTPC_MODE_REG; - uint32_t *addr = hw_otpc_cell_to_mem(cell_offset); - - /* we have to go through standby mode first */ - HW_OTPC_REG_SETF(MODE, MODE, HW_OTPC_MODE_STBY); - __DMB(); - HW_OTPC_REG_SETF(MODE, ERR_RESP_DIS, 1); - __DMB(); - HW_OTPC_REG_SETF(MODE, MODE, HW_OTPC_MODE_MREAD); - - if (OTPC->OTPC_STAT_REG & HW_OTPC_REG_FIELD_MASK(STAT, RERROR)) { - HW_OTPC_REG_SETF(STAT, RERROR, 1); //This bit need to be cleared manually (can only happen if a previous read has not checked/cleared it) - } - /* - * Read cell in manual mode, as 2 32-bit values (little-endian) - */ - val_l = addr[0]; - val_h = addr[1]; - HW_OTPC_REG_SETF(MODE, MODE, HW_OTPC_MODE_STBY); - __DMB(); - OTPC->OTPC_MODE_REG = old_mode; - if (OTPC->OTPC_STAT_REG & HW_OTPC_REG_FIELD_MASK(STAT, RERROR)) { - HW_OTPC_REG_SETF(STAT, RERROR, 1); //This bit need to be cleared manually - return false; - } - return (pword_h == val_h) && (pword_l == val_l); -} - -/* - * Set to 1 to manually verify the programmed cell value, if the auto-verification fails. - */ -#define MANUAL_PROG_VERIFICATION 1 - -bool hw_otpc_manual_word_prog(uint32_t cell_offset, uint32_t pword_l, uint32_t pword_h, bool use_rr) -{ - int i; - bool ret = true; - - ASSERT_WARNING_OTP_CLK_ENABLED; - - ASSERT_WARNING_OTPC_MODE(HW_OTPC_MODE_STBY); - - ASSERT_CELL_OFFSET_VALID(cell_offset); - - /* - * Program the data regs - */ - OTPC->OTPC_PWORDL_REG = pword_l; - OTPC->OTPC_PWORDH_REG = pword_h; - - /* - * Start programming - */ - HW_OTPC_REG_SETF(MODE, MODE, HW_OTPC_MODE_MPROG); - OTPC->OTPC_PCTRL_REG = - HW_OTPC_FIELD_VAL(PCTRL, WADDR, cell_offset) | - HW_OTPC_FIELD_VAL(PCTRL, PSTART, 1); - wait_for_prog_done(); - - /* - * Check and retry up to 10 times - */ - i = 0; - while (have_prog_error()) { - if (i == 10) { - break; - } - i = i + 1; - - OTPC->OTPC_PCTRL_REG = - HW_OTPC_FIELD_VAL(PCTRL, WADDR, cell_offset) | - HW_OTPC_FIELD_VAL(PCTRL, PSTART, 1) | - HW_OTPC_FIELD_VAL(PCTRL, PRETRY, 1); - - wait_for_prog_done(); - } - - if (i == 10) { - ret = false; - if (MANUAL_PROG_VERIFICATION) - ret = manual_prog_verify(cell_offset, pword_l, pword_h); - - if (use_rr && !ret) { - do { - // Reset state - HW_OTPC_REG_SETF(MODE, MODE, HW_OTPC_MODE_STBY); - - // Abort if the writing was done in the spare area - if (OTPC->OTPC_MODE_REG & HW_OTPC_REG_FIELD_MASK(MODE, USE_SP_ROWS)) { - break; - } - - // Write the repair record to the spare area - if (!hw_otpc_write_rr(cell_offset, pword_l, pword_h)) { - break; - } - - HW_OTPC_REG_SETF(MODE, MODE, HW_OTPC_MODE_STBY); - // force reloading - HW_OTPC_REG_SETF(MODE, MODE, HW_OTPC_MODE_MREAD); - - ret = true; - break; - } while (0); - } - } - - HW_OTPC_REG_SETF(MODE, MODE, HW_OTPC_MODE_STBY); - - return ret; -} - -bool hw_otpc_manual_prog(const uint32_t *p_data, uint32_t cell_offset, HW_OTPC_WORD cell_word, - uint32_t num_of_words, bool use_rr) -{ - uint32_t w, c, ncells, off, val; - bool ret = true; - const uint32_t* addr; - - ASSERT_WARNING_OTP_CLK_ENABLED; - - ASSERT_WARNING_OTPC_MODE(HW_OTPC_MODE_STBY); - - ASSERT_CELL_OFFSET_VALID(cell_offset); - - if (num_of_words == 0) - return true; // early exit - - /* index in p_data[] */ - w = 0; - off = cell_offset; - if (cell_word == HW_OTPC_WORD_HIGH) { - /* - * read low 32-bit word so that we program the same value - */ - addr = hw_otpc_cell_to_mem(cell_offset); - - hw_otpc_manual_read_on(use_rr); - /* little-endian */ - val = addr[0]; - hw_otpc_manual_read_off(); - - if (!hw_otpc_manual_word_prog(off++, val, p_data[w++], use_rr)) - return false; - - ncells = (num_of_words - 1) >> 1; - } else { - ncells = num_of_words >> 1; - } - - for (c = 0; c < ncells; c++, off++, w += 2) { - if (!hw_otpc_manual_word_prog(off, p_data[w], p_data[w + 1], use_rr)) - return false; - } - - if (w < num_of_words) { - /* - * read high 32-bit word so that we program the same value - */ - addr = hw_otpc_cell_to_mem(off); - - hw_otpc_manual_read_on(use_rr); - /* little-endian */ - val = addr[1]; - hw_otpc_manual_read_off(); - - if (!hw_otpc_manual_word_prog(off, p_data[w++], val, use_rr)) - return false; - } - - ASSERT_WARNING(w == num_of_words); - - return ret; -} - -bool hw_otpc_write_rr(uint32_t cell_addr, uint32_t pword_l, uint32_t pword_h) -{ - uint32_t repair_cnt; - bool ret = false; - - ASSERT_WARNING_OTP_CLK_ENABLED; - - ASSERT_WARNING_OTPC_MODE(HW_OTPC_MODE_STBY); - - // Get the number of used Repair Records - repair_cnt = hw_otpc_num_of_rr(); - - // Abort if all repair records are being used - if (repair_cnt < MAX_RR_AVAIL) { - do { - // The access will be performed in the spare rows - HW_OTPC_REG_SETF(MODE, USE_SP_ROWS, 1); - - // Write the data to the spare area - if (!hw_otpc_manual_word_prog(0x4F - repair_cnt - 1, - pword_l, pword_h, false)) { - break; - } - - // Write the header of the repair record to the spare area - if (!hw_otpc_manual_word_prog(0x4F - repair_cnt, - 1 | (cell_addr << 1), 0x00000000, false)) { - break; - } - - ret = true; - } while (0); - - // Return to the normal memory array - HW_OTPC_REG_SETF(MODE, USE_SP_ROWS, 0); - - if (ret) { - /* - * Request the reloading of the repair records at the next - * enabling of the OTP cell - */ - HW_OTPC_REG_SETF(MODE, RLD_RR_REQ, 1); - } - } - - return ret; -} - - -void hw_otpc_manual_read_on(bool spare_rows) -{ - ASSERT_WARNING_OTP_CLK_ENABLED; - - ASSERT_WARNING_OTPC_MODE(HW_OTPC_MODE_STBY); - - /* - * Place the OTPC in manual read mode - */ - if (spare_rows) { - OTPC->OTPC_MODE_REG = - HW_OTPC_FIELD_VAL(MODE, MODE, HW_OTPC_MODE_MREAD) | - HW_OTPC_FIELD_VAL(MODE, USE_SP_ROWS, 1); - } - else { - OTPC->OTPC_MODE_REG = HW_OTPC_MODE_MREAD; - } -} - - -void hw_otpc_manual_read_off(void) -{ - ASSERT_WARNING_OTP_CLK_ENABLED; - - ASSERT_WARNING_OTPC_MODE(HW_OTPC_MODE_MREAD); - - /* - * Place the OTPC in STBY mode - */ - OTPC->OTPC_MODE_REG = HW_OTPC_MODE_STBY; -} - - -bool hw_otpc_dma_prog(const uint32_t *p_data, uint32_t cell_offset, HW_OTPC_WORD cell_word, - uint32_t num_of_words, bool spare_rows) -{ - ASSERT_WARNING_OTP_CLK_ENABLED; - - ASSERT_WARNING_OTPC_MODE(HW_OTPC_MODE_STBY); - - ASSERT_CELL_OFFSET_VALID(cell_offset); - - /* - * Make sure that the size is valid - */ - ASSERT_WARNING(num_of_words); - ASSERT_WARNING(num_of_words < 16384); - - /* - * Set up DMA - */ - unsigned int remap_type = REG_GETF(CRG_TOP, SYS_CTRL_REG, REMAP_ADR0); - - if (IS_SYSRAM_ADDRESS(p_data) || - (IS_REMAPPED_ADDRESS(p_data) && (remap_type == 0x3))) { - OTPC->OTPC_AHBADR_REG = DA15000_phy_addr((uint32_t)p_data); -#if dg_configEXEC_MODE != MODE_IS_CACHED - } else if (IS_CACHERAM_ADDRESS(p_data)) { - OTPC->OTPC_AHBADR_REG = DA15000_phy_addr((uint32_t)p_data); -#endif - } else { - /* - * Destination address can only reside in RAM or Cache RAM, but in case of remapped - * address, REMAP_ADR0 cannot be 0x6 (Cache Data RAM) - */ - ASSERT_WARNING(0); - } - - OTPC->OTPC_CELADR_REG = (cell_offset << 1) | (cell_word == HW_OTPC_WORD_HIGH); - OTPC->OTPC_NWORDS_REG = num_of_words-1; - - /* - * Start DMA programming - */ - if (spare_rows) { - OTPC->OTPC_MODE_REG = - HW_OTPC_FIELD_VAL(MODE, MODE, HW_OTPC_MODE_APROG) | - HW_OTPC_FIELD_VAL(MODE, USE_DMA, 1) | - HW_OTPC_FIELD_VAL(MODE, USE_SP_ROWS, 1); - } - else { - OTPC->OTPC_MODE_REG = - HW_OTPC_FIELD_VAL(MODE, MODE, HW_OTPC_MODE_APROG) | - HW_OTPC_FIELD_VAL(MODE, USE_DMA, 1); - } - - wait_for_auto_done(); - - /* - * Check result - */ - if (OTPC->OTPC_STAT_REG & HW_OTPC_REG_FIELD_MASK(STAT, PERR_UNC)) { - return false; - } - - return true; -} - - -void hw_otpc_dma_read(uint32_t *p_data, uint32_t cell_offset, HW_OTPC_WORD cell_word, - uint32_t num_of_words, bool spare_rows) -{ - ASSERT_WARNING_OTP_CLK_ENABLED; - - ASSERT_WARNING_OTPC_MODE(HW_OTPC_MODE_STBY); - - ASSERT_CELL_OFFSET_VALID(cell_offset); - - /* - * Make sure that the size is valid - */ - ASSERT_WARNING(num_of_words); - ASSERT_WARNING(num_of_words < 16384); - - /* - * Set up DMA - */ - unsigned int remap_type = REG_GETF(CRG_TOP, SYS_CTRL_REG, REMAP_ADR0); - - if (IS_SYSRAM_ADDRESS(p_data) || - (IS_REMAPPED_ADDRESS(p_data) && (remap_type == 0x3))) { - OTPC->OTPC_AHBADR_REG = DA15000_phy_addr((uint32_t)p_data); -#if dg_configEXEC_MODE != MODE_IS_CACHED - } else if (IS_CACHERAM_ADDRESS(p_data)) { - OTPC->OTPC_AHBADR_REG = DA15000_phy_addr((uint32_t)p_data); -#endif - } else { - /* - * Destination address can only reside in RAM or Cache RAM, but in case of remapped - * address, REMAP_ADR0 cannot be 0x6 (Cache Data RAM) - */ - ASSERT_WARNING(0); - } - - OTPC->OTPC_CELADR_REG = (cell_offset << 1) | (cell_word == HW_OTPC_WORD_HIGH); - OTPC->OTPC_NWORDS_REG = num_of_words-1; - - /* - * Start DMA programming - */ - if (spare_rows) { - OTPC->OTPC_MODE_REG = - HW_OTPC_FIELD_VAL(MODE, MODE, HW_OTPC_MODE_AREAD) | - HW_OTPC_FIELD_VAL(MODE, USE_DMA, 1) | - HW_OTPC_FIELD_VAL(MODE, USE_SP_ROWS, 1); - } - else { - OTPC->OTPC_MODE_REG = - HW_OTPC_FIELD_VAL(MODE, MODE, HW_OTPC_MODE_AREAD) | - HW_OTPC_FIELD_VAL(MODE, USE_DMA, 1); - } - - wait_for_auto_done(); -} - - -bool hw_otpc_fifo_prog(const uint32_t *p_data, uint32_t cell_offset, HW_OTPC_WORD cell_word, - uint32_t num_of_words, bool spare_rows) -{ - unsigned int i; - - ASSERT_WARNING_OTP_CLK_ENABLED; - - ASSERT_WARNING_OTPC_MODE(HW_OTPC_MODE_STBY); - - ASSERT_CELL_OFFSET_VALID(cell_offset); - - ASSERT_WARNING_NONZERO_RANGE(num_of_words, 16384); - - /* - * Set up FIFO - */ - OTPC->OTPC_CELADR_REG = (cell_offset << 1) | (cell_word == HW_OTPC_WORD_HIGH); - OTPC->OTPC_NWORDS_REG = num_of_words-1; - - /* - * Perform programming via FIFO - */ - if (spare_rows) { - OTPC->OTPC_MODE_REG = - HW_OTPC_FIELD_VAL(MODE, MODE, HW_OTPC_MODE_APROG) | - HW_OTPC_FIELD_VAL(MODE, USE_SP_ROWS, 1); - } - else { - OTPC->OTPC_MODE_REG = HW_OTPC_FIELD_VAL(MODE, MODE, HW_OTPC_MODE_APROG); - } - - for (i = 0; i < num_of_words; i++) { - while (HW_OTPC_REG_GETF(STAT, FWORDS) == 8) - ; - OTPC->OTPC_FFPRT_REG = p_data[i]; // Write FIFO data - } - - /* - * Wait for completion - */ - wait_for_auto_done(); - - /* - * Check result - */ - if (OTPC->OTPC_STAT_REG & HW_OTPC_REG_FIELD_MASK(STAT, PERR_UNC)) { - return false; - } - - return true; -} - - -bool hw_otpc_fifo_read(uint32_t *p_data, uint32_t cell_offset, HW_OTPC_WORD cell_word, - uint32_t num_of_words, bool spare_rows) -{ - unsigned int i; - - ASSERT_WARNING_OTP_CLK_ENABLED; - - ASSERT_WARNING_OTPC_MODE(HW_OTPC_MODE_STBY); - - ASSERT_CELL_OFFSET_VALID(cell_offset); - - ASSERT_WARNING_NONZERO_RANGE(num_of_words, 16384); - - if (OTPC->OTPC_STAT_REG & HW_OTPC_REG_FIELD_MASK(STAT, RERROR)) { - HW_OTPC_REG_SETF(STAT, RERROR, 1); //This bit need to be cleared manually (can only happen if a previous read has not checked/cleared it) - } - - /* - * Set up FIFO - */ - OTPC->OTPC_CELADR_REG = (cell_offset << 1) | (cell_word == HW_OTPC_WORD_HIGH); - OTPC->OTPC_NWORDS_REG = num_of_words-1; - - /* - * Perform reading via FIFO - */ - if (spare_rows) { - OTPC->OTPC_MODE_REG = - HW_OTPC_FIELD_VAL(MODE, MODE, HW_OTPC_MODE_AREAD) | - HW_OTPC_FIELD_VAL(MODE, USE_SP_ROWS, 1); - } - else { - OTPC->OTPC_MODE_REG = HW_OTPC_MODE_AREAD; - } - - for (i = 0; i < num_of_words; i++) { - while (HW_OTPC_REG_GETF(STAT, FWORDS) == 0) - ; - p_data[i] = OTPC->OTPC_FFPRT_REG; - } - - /* - * Wait for completion - */ - wait_for_auto_done(); - - /* - * Check result - */ - if (OTPC->OTPC_STAT_REG & HW_OTPC_REG_FIELD_MASK(STAT, RERROR)) { - HW_OTPC_REG_SETF(STAT, RERROR, 1); //This bit need to be cleared manually - return false; - } - - return true; -} - - -void hw_otpc_prepare(uint32_t num_of_bytes) -{ - ASSERT_WARNING_OTP_CLK_ENABLED; - - ASSERT_WARNING_OTPC_MODE(HW_OTPC_MODE_STBY); - - ASSERT_WARNING_NONZERO_RANGE(num_of_bytes, 65536); - - /* - * Set up image size - */ - OTPC->OTPC_NWORDS_REG = ((num_of_bytes + 3) >> 2) - 1; - - /* - * Enable OTP_COPY - */ - GLOBAL_INT_DISABLE(); - CRG_TOP->SYS_CTRL_REG |= 1 << REG_POS(CRG_TOP, SYS_CTRL_REG, OTP_COPY); - GLOBAL_INT_RESTORE(); -} - - -void hw_otpc_cancel_prepare(void) -{ - ASSERT_WARNING_OTP_CLK_ENABLED; - - ASSERT_WARNING_OTPC_MODE(HW_OTPC_MODE_STBY); - - /* - * Disable OTP_COPY - */ - GLOBAL_INT_DISABLE(); - CRG_TOP->SYS_CTRL_REG &= ~REG_MSK(CRG_TOP, SYS_CTRL_REG, OTP_COPY); - GLOBAL_INT_RESTORE(); -} - - -//////////////////////////////////////////////////////////////////////////////////////////////////// -// TEST FUNCTIONALITY -//////////////////////////////////////////////////////////////////////////////////////////////////// - - -/** - * \brief Execution of the test. - * - * \return The test result. - *
    - *
  • 0, if the test succeeded - *
  • 1, if the test 1 failed - *
- * - */ -static int hw_otpc_core_test(int mode) -{ - ASSERT_WARNING_OTPC_MODE(HW_OTPC_MODE_STBY); - - /* - * Put OTPC in the proper test mode - */ - HW_OTPC_REG_SETF(MODE, MODE, mode); - - /* - * Wait end of test - */ - while (!(OTPC->OTPC_STAT_REG & HW_OTPC_REG_FIELD_MASK(STAT, TRDY))) - ; - - - /* - * Check result - */ - if (OTPC->OTPC_STAT_REG & HW_OTPC_REG_FIELD_MASK(STAT, TERROR)) { - return 1; - } - - return 0; -} - - -int hw_otpc_blank(void) -{ - return hw_otpc_core_test(HW_OTPC_MODE_TBLANK); -} - - -int hw_otpc_tdec(void) -{ - return hw_otpc_core_test(HW_OTPC_MODE_TDEC); -} - - -int hw_otpc_twr(void) -{ - return hw_otpc_core_test(HW_OTPC_MODE_TWR); -} - - -#endif /* dg_configUSE_HW_OTPC */ -/** - * \} - * \} - * \} - */ diff --git a/third_party/dialog/DialogSDK/bsp/peripherals/src/hw_qspi.c b/third_party/dialog/DialogSDK/bsp/peripherals/src/hw_qspi.c deleted file mode 100644 index 862367c1c..000000000 --- a/third_party/dialog/DialogSDK/bsp/peripherals/src/hw_qspi.c +++ /dev/null @@ -1,177 +0,0 @@ -/** - * \addtogroup BSP - * \{ - * \addtogroup DEVICES - * \{ - * \addtogroup QSPI - * \{ - */ - -/** - **************************************************************************************** - * - * @file hw_qspi.c - * - * @brief Implementation of the QSPI Low Level Driver. - * - * Copyright (c) 2016, Dialog Semiconductor - * All rights reserved. - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. Neither the name of the copyright holder nor the names of its contributors - * may be used to endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, - * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, - * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED - * OF THE POSSIBILITY OF SUCH DAMAGE. - * - * - **************************************************************************************** - */ - -#if dg_configUSE_HW_QSPI - -#include -#include "hw_qspi.h" - -__RETAINED_RW uint8_t dummy_num[] = { 0, 1, 2, 0, 3 }; - -#if (dg_configFLASH_POWER_DOWN == 1) -__attribute__((section("text_retained"))) -#endif -void hw_qspi_set_bus_mode(HW_QSPI_BUS_MODE mode) -{ - switch (mode) { - case HW_QSPI_BUS_MODE_SINGLE: - QSPIC->QSPIC_CTRLBUS_REG = REG_MSK(QSPIC, QSPIC_CTRLBUS_REG, QSPIC_SET_SINGLE); - break; - case HW_QSPI_BUS_MODE_DUAL: - QSPIC->QSPIC_CTRLBUS_REG = REG_MSK(QSPIC, QSPIC_CTRLBUS_REG, QSPIC_SET_DUAL); - break; - case HW_QSPI_BUS_MODE_QUAD: - QSPIC->QSPIC_CTRLBUS_REG = REG_MSK(QSPIC, QSPIC_CTRLBUS_REG, QSPIC_SET_QUAD); - hw_qspi_set_io2_output(false); - hw_qspi_set_io3_output(false); - break; - } -} - -__attribute__((section("text_retained"))) void hw_qspi_set_automode(bool automode) -{ - if (automode) { - const uint32_t burst_cmd_a = QSPIC->QSPIC_BURSTCMDA_REG; - const uint32_t burst_cmd_b = QSPIC->QSPIC_BURSTCMDB_REG; - const uint32_t status_cmd = QSPIC->QSPIC_STATUSCMD_REG; - const uint32_t erase_cmd_b = QSPIC->QSPIC_ERASECMDB_REG; - const uint32_t burstbrk = QSPIC->QSPIC_BURSTBRK_REG; - if (GETBITS32(QSPIC, QSPIC_BURSTCMDA_REG, burst_cmd_a, QSPIC_INST_TX_MD) == HW_QSPI_BUS_MODE_QUAD || - GETBITS32(QSPIC, QSPIC_BURSTCMDA_REG, burst_cmd_a, QSPIC_ADR_TX_MD) == HW_QSPI_BUS_MODE_QUAD || - GETBITS32(QSPIC, QSPIC_BURSTCMDA_REG, burst_cmd_a, QSPIC_DMY_TX_MD) == HW_QSPI_BUS_MODE_QUAD || - GETBITS32(QSPIC, QSPIC_BURSTCMDA_REG, burst_cmd_a, QSPIC_EXT_TX_MD) == HW_QSPI_BUS_MODE_QUAD || - GETBITS32(QSPIC, QSPIC_BURSTCMDB_REG, burst_cmd_b, QSPIC_DAT_RX_MD) == HW_QSPI_BUS_MODE_QUAD || - GETBITS32(QSPIC, QSPIC_BURSTCMDB_REG, burst_cmd_b, QSPIC_DAT_RX_MD) == HW_QSPI_BUS_MODE_QUAD || - GETBITS32(QSPIC, QSPIC_STATUSCMD_REG, status_cmd, QSPIC_RSTAT_RX_MD) == HW_QSPI_BUS_MODE_QUAD || - GETBITS32(QSPIC, QSPIC_STATUSCMD_REG, status_cmd, QSPIC_RSTAT_TX_MD) == HW_QSPI_BUS_MODE_QUAD || - GETBITS32(QSPIC, QSPIC_ERASECMDB_REG, erase_cmd_b, QSPIC_ERS_TX_MD) == HW_QSPI_BUS_MODE_QUAD || - GETBITS32(QSPIC, QSPIC_ERASECMDB_REG, erase_cmd_b, QSPIC_WEN_TX_MD) == HW_QSPI_BUS_MODE_QUAD || - GETBITS32(QSPIC, QSPIC_ERASECMDB_REG, erase_cmd_b, QSPIC_SUS_TX_MD) == HW_QSPI_BUS_MODE_QUAD || - GETBITS32(QSPIC, QSPIC_ERASECMDB_REG, erase_cmd_b, QSPIC_RES_TX_MD) == HW_QSPI_BUS_MODE_QUAD || - GETBITS32(QSPIC, QSPIC_ERASECMDB_REG, erase_cmd_b, QSPIC_EAD_TX_MD) == HW_QSPI_BUS_MODE_QUAD || - GETBITS32(QSPIC, QSPIC_BURSTBRK_REG, burstbrk, QSPIC_BRK_TX_MD) == HW_QSPI_BUS_MODE_QUAD) { - hw_qspi_set_io2_output(false); - hw_qspi_set_io3_output(false); - } - } - HW_QSPIC_REG_SETF(CTRLMODE, AUTO_MD, automode); -} - -void hw_qspi_set_wrapping_burst_instruction(uint8_t inst, HW_QSPI_WRAP_LEN len, - HW_QSPI_WRAP_SIZE size) -{ - HW_QSPIC_REG_SETF(BURSTCMDA, INST_WB, inst); - QSPIC->QSPIC_BURSTCMDB_REG = - (QSPIC->QSPIC_BURSTCMDB_REG & - ~(REG_MSK(QSPIC, QSPIC_BURSTCMDB_REG, QSPIC_WRAP_SIZE) | - REG_MSK(QSPIC, QSPIC_BURSTCMDB_REG, QSPIC_WRAP_LEN))) | - BITS32(QSPIC, QSPIC_BURSTCMDB_REG, QSPIC_WRAP_SIZE, size) | - BITS32(QSPIC, QSPIC_BURSTCMDB_REG, QSPIC_WRAP_LEN, len) | - BITS32(QSPIC, QSPIC_BURSTCMDB_REG, QSPIC_WRAP_MD, 1); -} - -void hw_qspi_set_dummy_bytes_count(uint8_t count) -{ - if (count == 3) { - HW_QSPIC_REG_SETF(BURSTCMDB, DMY_FORCE, 1); - } else { - QSPIC->QSPIC_BURSTCMDB_REG = - (QSPIC->QSPIC_BURSTCMDB_REG & - ~(REG_MSK(QSPIC, QSPIC_BURSTCMDB_REG, QSPIC_DMY_FORCE) | - REG_MSK(QSPIC, QSPIC_BURSTCMDB_REG, QSPIC_DMY_NUM))) | - BITS32(QSPIC, QSPIC_BURSTCMDB_REG, QSPIC_DMY_NUM, - dummy_num[count]); - } -} - -void hw_qspi_erase_block(uint32_t addr) -{ - if (!hw_qspi_get_automode()) { - hw_qspi_set_automode(true); - } - // Wait for previous erase to end - while (hw_qspi_get_erase_status() != 0) { - } - - if (hw_qspi_get_address_size() == HW_QSPI_ADDR_SIZE_32) { - addr >>= 12; - } else { - addr >>= 4; - } - // Setup erase block page - HW_QSPIC_REG_SETF(ERASECTRL, ERS_ADDR, addr); - // Fire erase - HW_QSPIC_REG_SETF(ERASECTRL, ERASE_EN, 1); -} - -void hw_qspi_set_pads(HW_QSPI_SLEW_RATE rate, HW_QSPI_DRIVE_CURRENT current) -{ - QSPIC->QSPIC_GP_REG = - BITS16(QSPIC, QSPIC_GP_REG, QSPIC_PADS_SLEW, rate) | - BITS16(QSPIC, QSPIC_GP_REG, QSPIC_PADS_DRV, current); -} - -void hw_qspi_init(const qspi_config *cfg) -{ - hw_qspi_enable_clock(); - hw_qspi_set_automode(false); - hw_qspi_set_bus_mode(HW_QSPI_BUS_MODE_SINGLE); - hw_qspi_set_io2_output(true); - hw_qspi_set_io2(1); - hw_qspi_set_io3_output(true); - hw_qspi_set_io3(1); - - if (cfg) { - hw_qspi_set_address_size(cfg->address_size); - hw_qspi_set_clock_mode(cfg->idle_clock); - hw_qspi_set_read_sampling_edge(cfg->sampling_edge); - } -} - -#endif /* dg_configUSE_HW_QSPI */ -/** - * \} - * \} - * \} - */ diff --git a/third_party/dialog/DialogSDK/bsp/peripherals/src/hw_rf.c b/third_party/dialog/DialogSDK/bsp/peripherals/src/hw_rf.c deleted file mode 100644 index 68f2caf26..000000000 --- a/third_party/dialog/DialogSDK/bsp/peripherals/src/hw_rf.c +++ /dev/null @@ -1,1512 +0,0 @@ -/** - * \addtogroup BSP - * \{ - * \addtogroup DEVICES - * \{ - * \addtogroup RF - * \{ - */ - -/** - ***************************************************************************************** - * - * @file hw_rf.c - * - * @brief Radio module (RF) Low Level Driver API definition. - * - * Copyright (c) 2016, Dialog Semiconductor - * All rights reserved. - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. Neither the name of the copyright holder nor the names of its contributors - * may be used to endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, - * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, - * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED - * OF THE POSSIBILITY OF SUCH DAMAGE. - * - * - ***************************************************************************************** - */ - -#if dg_configUSE_HW_RF - - -#include "hw_rf.h" -#include "sdk_defs.h" -#include "hw_cpm.h" -#include "hw_gpio.h" - -#if (dg_configSYSTEMVIEW) -# include "SEGGER_SYSVIEW_FreeRTOS.h" -#else -# define SEGGER_SYSTEMVIEW_ISR_ENTER() -# define SEGGER_SYSTEMVIEW_ISR_EXIT() -#endif - -#if dg_configUSE_HW_COEX == 1 -#include "hw_coex.h" -#endif - -#if dg_configBLACK_ORCA_IC_REV == BLACK_ORCA_IC_REV_A -#define KMODE_ALPHA_ACAD_PREF 0x0410 -#define KMODE_ALPHA_AA_PREF 0x0416 - -#define DF1_DAC_CHECK_VALUE 32 -#define DF1_DGAIN_THR0 16 -#define DF1_DGAIN_THR1 24 -#define DF1_DGAIN_THR2 32 -#endif - -/* User callbacks (defined as weak functions) definitions */ -bool hw_rf_preoff_cb(void) __attribute__((weak)); -void hw_rf_postconf_cb(void) __attribute__((weak)); -void hw_rf_precalib_cb(void) __attribute__((weak)); -void hw_rf_postcalib_cb(void) __attribute__((weak)); -void hw_rf_apply_tcs_cb(void) __attribute__((weak)); -uint64_t hw_rf_get_start_iff_time(void) __attribute__((weak)); -bool hw_rf_check_iff_timeout(uint64_t start_time) __attribute__((weak)); - -#if dg_configFEM == FEM_SKY66112_11 -#include "hw_fem_sky66112-11.h" -#endif - -typedef enum rf_states_e { - RF_ST_OFF = 0, - RF_ST_ON, - RF_ST_CONFIG, - RF_ST_WAIT_NEXT1, - RF_ST_WAIT_NEXT2 -} rf_states_e; - -#if dg_configBLACK_ORCA_IC_REV != BLACK_ORCA_IC_REV_A -typedef enum { - IFF_MODE_CTRL_BLE = 0, - IFF_MODE_CTRL_FTDF = 1, - IFF_MODE_CTRL_COMBO = 2 -} iff_mode_ctrl_e; - -typedef enum { - IFF_MODE_OVR_BLE = 1, - IFF_MODE_OVR_FTDF = 2 -} iff_mode_ovr_e; - -typedef enum { - MGC_MODE_CTRL_BLE_GAUSSDAC = 0, - MGC_MODE_CTRL_BLE_TXDAC = 1, - MGC_MODE_CTRL_FTDF = 2 -} mgc_mode_ctrl_e; - -#endif - -/** RF status bitmap. */ -typedef uint8_t rf_request_t; - -/** Indicates whether FTDF MAC has turned RF on. */ -#define RF_REQUEST_FTDF_ON (1 << 0) - -/** Indicates whether BLE MAC has turned RF on. */ -#define RF_REQUEST_BLE_ON (1 << 1) - - - -static rf_request_t rf_request __RETAINED; -static rf_states_e rf_state __RETAINED; -hw_rf_tx_power_luts_t rf_tx_power_luts __RETAINED; - -/* Variables used for holding previous reg values during gain calib */ -static uint32_t rf_cntrl_timer14_reg_set_offset; -static uint32_t rf_cntrl_timer_7_reg_value; -static uint32_t rf_cal_ctrl_reg_value; -static uint32_t rf_mgain_ctrl_reg_value; -static uint32_t rf_mgain_ctrl2_reg_value; -static uint16_t rf_synth_ctrl2_ble_reg_value; -static uint16_t rf_synth_ctrl2_ftdf_reg_value; - -#if dg_configBLACK_ORCA_IC_REV == BLACK_ORCA_IC_REV_A -static uint8_t kmoda_cal __RETAINED; -__RETAINED_RW static uint32_t gg_cal_modified = 128; -static uint32_t rf_enable_config14_ble_reg_value; -static uint32_t rf_enable_config15_ble_reg_value; -static uint32_t rf_enable_config14_ftdf_reg_value; -static uint32_t rf_enable_config15_ftdf_reg_value; -static uint16_t rf_bmcw_reg_value; -static uint16_t rf_vcocal_ctrl_reg_value; -#else -static uint16_t rf_enable_config14_reg_value; -static uint16_t rf_enable_config15_reg_value; -static uint16_t rf_overrule_reg_value; -static uint16_t rf_enable_config23_ble_reg_value; -static uint16_t rf_enable_config23_ftdf_reg_value; -static uint16_t rf_enable_config45_ble_reg_value; -static uint16_t rf_enable_config45_ftdf_reg_value; -#endif -bool hw_rf_system_init(void) -{ - bool calib_succeeded; - - rf_state = RF_ST_OFF; - rf_request = 0; - -#if dg_configBLACK_ORCA_IC_REV == BLACK_ORCA_IC_REV_A - /* Initially set kmoda_cal to its preferred settings value */ - if ((dg_configBLACK_ORCA_IC_REV == BLACK_ORCA_IC_REV_A) - || ((dg_configUSE_AUTO_CHIP_DETECTION == 1) - && (CHIP_IS_AE))) { - kmoda_cal = KMODE_ALPHA_ACAD_PREF & REG_MSK(PLLDIG, RF_KMOD_ALPHA_REG, - KMOD_ALPHA_BLE); - } -#endif - -#if dg_configCOEX_ENABLE_CONFIG == 1 - hw_coex_init(); -#endif - /* Apply tcs and preferred settings */ - hw_rf_apply_tcs_cb(); - hw_rf_set_recommended_settings(); - - /* Perform calibration */ - calib_succeeded = hw_rf_calibration(); - -#ifndef CONFIG_USE_BLE - /* Force disable the ble, making the ftdf the only requester */ - REG_SET_BIT(CRG_TOP, FORCE_SLEEP_REG, FORCE_BLE_SLEEP); -#endif -#ifndef CONFIG_USE_FTDF - /* Force disable the ftdf, making the ble the only requester */ - REG_SET_BIT(CRG_TOP, FORCE_SLEEP_REG, FORCE_FTDF_SLEEP); -#endif - - /* System is ready to be used */ - return calib_succeeded; -} - -/** - * \brief Preferred settings 680 radio - * - */ -void hw_rf_set_recommended_settings(void) -{ - - // Preferred Settings File for DCTMON - // Device : DA14680AA - // Package : All packages, no dependency on package. - // Last change date : June 18, 2015 - 18:00:48 - // Last change item : Register: RF_KMOD_ALPHA_REG, Field: KMOD_ALPHA_FTDF, Value: 0x10 - // File date : June 18, 2015 - 19:16:16 - -#if dg_configBLACK_ORCA_IC_REV == BLACK_ORCA_IC_REV_A - if (((dg_configUSE_AUTO_CHIP_DETECTION == 1) && (CHIP_IS_AE)) - || (BLACK_ORCA_TARGET_IC == BLACK_ORCA_IC_VERSION(A, E))) { - REG_SET_MASKED(DEM, RF_AFC_CTRL_REG, 0x0030, 0x00F5); - REG_SET_MASKED(DEM, RF_AGC_CTRL2_REG, 0x003F, 0x0049); - - // MP - REG_SET_MASKED(DEM, RF_AGC_CTRL1_REG, 0x007F, 0x950A); - REG_SET_MASKED(RFCU_POWER, RF_CNTRL_TIMER_10_REG, 0xFF00, 0x182E); - REG_SET_MASKED(RFCU_POWER, RF_CNTRL_TIMER_11_REG, 0xFF00, 0x1830); - RFCU_POWER->RF_CNTRL_TIMER_12_REG = 0x3C; - RFCU_POWER->RF_CNTRL_TIMER_13_REG = 0x163C; - RFCU_POWER->RF_CNTRL_TIMER_15_REG = 0x183C; - RFCU_POWER->RF_CNTRL_TIMER_16_REG = 0x2207; - RFCU_POWER->RF_CNTRL_TIMER_17_REG = 0x410; - RFCU_POWER->RF_CNTRL_TIMER_18_REG = 0x218; - RFCU_POWER->RF_CNTRL_TIMER_19_REG = 0x218; - REG_SET_MASKED(RFCU_POWER, RF_CNTRL_TIMER_1_REG, 0xFF00, 0x1E00); - RFCU_POWER->RF_CNTRL_TIMER_20_REG = 0x508; - REG_SET_MASKED(RFCU_POWER, RF_CNTRL_TIMER_21_REG, 0x00FF, 0x44); - REG_SET_MASKED(RFCU_POWER, RF_CNTRL_TIMER_22_REG, 0x00FF, 0x40); - REG_SET_MASKED(RFCU_POWER, RF_CNTRL_TIMER_23_REG, 0x00FF, 0x52); - REG_SET_MASKED(RFCU_POWER, RF_CNTRL_TIMER_2_REG, 0xFF00, 0x1B08); - REG_SET_MASKED(RFCU_POWER, RF_CNTRL_TIMER_3_REG, 0xFF00, 0x1A10); - REG_SET_MASKED(RFCU_POWER, RF_CNTRL_TIMER_5_REG, 0xFF00, 0x1818); - REG_SET_MASKED(RFCU_POWER, RF_CNTRL_TIMER_7_REG, 0xFF00, 0x1818); - REG_SET_MASKED(RFCU, RF_CP_CTRL_BLE_REG, 0x0F0F, 0x7575); - REG_SET_MASKED(RFCU, RF_CP_CTRL_FTDF_REG, 0x0F0F, 0x7575); - REG_SET_MASKED(DEM, RF_DC_OFFSET_CTRL2_REG, 0x0202, 0x01D0); - REG_SET_MASKED(DEM, RF_DC_OFFSET_CTRL3_REG, 0x00FF, 0xDCE4); - REG_SET_MASKED(RFCU, RF_DIV_IQ_TX_REG, 0x00FF, 0x00A1); - REG_SET_MASKED(RFCU_POWER, RF_ENABLE_CONFIG11_BLE_REG, 0x001F, 0x0054); - REG_SET_MASKED(RFCU_POWER, RF_ENABLE_CONFIG11_FTDF_REG, 0x001F, 0x0054); - REG_SET_MASKED(RFCU_POWER, RF_ENABLE_CONFIG12_BLE_REG, 0x001F, 0x0071); - REG_SET_MASKED(RFCU_POWER, RF_ENABLE_CONFIG12_FTDF_REG, 0x001F, 0x0071); - REG_SET_MASKED(RFCU_POWER, RF_ENABLE_CONFIG15_BLE_REG, 0x03E0, 0x01E0); - REG_SET_MASKED(RFCU_POWER, RF_ENABLE_CONFIG15_FTDF_REG, 0x03E0, 0x01E0); - REG_SET_MASKED(RFCU_POWER, RF_ENABLE_CONFIG19_BLE_REG, 0x001F, 0x0054); - REG_SET_MASKED(RFCU_POWER, RF_ENABLE_CONFIG19_FTDF_REG, 0x001F, 0x0054); - REG_SET_MASKED(RFCU_POWER, RF_ENABLE_CONFIG20_BLE_REG, 0x001F, 0x0071); - REG_SET_MASKED(RFCU_POWER, RF_ENABLE_CONFIG20_FTDF_REG, 0x001F, 0x0071); - REG_SET_MASKED(RFCU_POWER, RF_ENABLE_CONFIG21_BLE_REG, 0x001F, 0x0071); - REG_SET_MASKED(RFCU_POWER, RF_ENABLE_CONFIG21_FTDF_REG, 0x001F, 0x0071); - REG_SET_MASKED(RFCU_POWER, RF_ENABLE_CONFIG22_BLE_REG, 0x001F, 0x0071); - REG_SET_MASKED(RFCU_POWER, RF_ENABLE_CONFIG22_FTDF_REG, 0x001F, 0x0071); - REG_SET_MASKED(RFCU_POWER, RF_ENABLE_CONFIG24_FTDF_REG, 0x03E0, 0x01A0); - REG_SET_MASKED(RFCU_POWER, RF_ENABLE_CONFIG25_FTDF_REG, 0x03E0, 0x0060); - REG_SET_MASKED(RFCU_POWER, RF_ENABLE_CONFIG27_BLE_REG, 0x001F, 0x0071); - REG_SET_MASKED(RFCU_POWER, RF_ENABLE_CONFIG27_FTDF_REG, 0x001F, 0x0071); - REG_SET_MASKED(RFCU_POWER, RF_ENABLE_CONFIG28_BLE_REG, 0x001F, 0x00B2); - REG_SET_MASKED(RFCU_POWER, RF_ENABLE_CONFIG28_FTDF_REG, 0x001F, 0x00B2); - REG_SET_MASKED(RFCU_POWER, RF_ENABLE_CONFIG29_BLE_REG, 0x001F, 0x00B2); - REG_SET_MASKED(RFCU_POWER, RF_ENABLE_CONFIG29_FTDF_REG, 0x001F, 0x00B2); - REG_SET_MASKED(RFCU_POWER, RF_ENABLE_CONFIG33_BLE_REG, 0x001F, 0x0071); - REG_SET_MASKED(RFCU_POWER, RF_ENABLE_CONFIG33_FTDF_REG, 0x001F, 0x0071); - REG_SET_MASKED(RFCU_POWER, RF_ENABLE_CONFIG34_BLE_REG, 0x001F, 0x00F3); - REG_SET_MASKED(RFCU_POWER, RF_ENABLE_CONFIG34_FTDF_REG, 0x001F, 0x00F3); - RFCU_POWER->RF_ENABLE_CONFIG42_BLE_REG = 0x210; - RFCU_POWER->RF_ENABLE_CONFIG42_FTDF_REG = 0x210; - REG_SET_MASKED(RFCU_POWER, RF_ENABLE_CONFIG46_BLE_REG, 0x001F, 0x0015); - REG_SET_MASKED(RFCU_POWER, RF_ENABLE_CONFIG46_FTDF_REG, 0x001F, 0x0015); - REG_SET_MASKED(RFCU_POWER, RF_ENABLE_CONFIG47_BLE_REG, 0x001F, 0x0016); - REG_SET_MASKED(RFCU_POWER, RF_ENABLE_CONFIG47_FTDF_REG, 0x001F, 0x0016); - REG_SET_MASKED(RFCU_POWER, RF_ENABLE_CONFIG48_BLE_REG, 0x001F, 0x0017); - REG_SET_MASKED(RFCU_POWER, RF_ENABLE_CONFIG48_FTDF_REG, 0x001F, 0x0017); - REG_SET_MASKED(DEM, RF_FTDF_CTRL1_REG, 0xC000, 0x87C0); - REG_SET_MASKED(DEM, RF_FTDF_CTRL2_REG, 0x0700, 0x6810); - REG_SET_MASKED(DEM, RF_FTDF_CTRL5_REG, 0x1FFF, 0x4708); - REG_SET_MASKED(DEM, RF_FTDF_LOOP_GAIN_DS_REG, 0x00FF, 0x0060); - REG_SET_MASKED(DEM, RF_FTDF_LOOP_GAIN_PD_REG, 0x00FF, 0x0060); - PLLDIG->RF_KMOD_ALPHA_REG = KMODE_ALPHA_ACAD_PREF; - REG_SET_MASKED(RFCU, RF_LF_CTRL_REG, 0x001F, 0x00C0); - REG_SET_MASKED(RFCU, RF_LF_RES_CTRL_BLE_REG, 0x0F0F, 0x7474); - REG_SET_MASKED(RFCU, RF_LF_RES_CTRL_FTDF_REG, 0x0F0F, 0x7474); - - - PLLDIG->RF_MGAIN_CTRL2_REG = 0x0006; - REG_SET_MASKED(PLLDIG, RF_MGAIN_CTRL_BLE_REG, 0x1C00, 0x1403); - - - REG_SET_MASKED(RFCU, RF_MIXER_CTRL1_BLE_REG, 0x000F, 0x0031); - REG_SET_MASKED(RFCU, RF_MIXER_CTRL1_FTDF_REG, 0x000F, 0x0031); - REG_SET_MASKED(RFCU, RF_MIXER_CTRL2_REG, 0x001F, 0x0000); - REG_SET_MASKED(PLLDIG, RF_MSKMOD_CTRL1_REG, 0x0003, 0x0003); - REG_SET_MASKED(RFCU, RF_REF_OSC_BLE_REG, 0x7FC0, 0x302C); - REG_SET_MASKED(RFCU, RF_REF_OSC_FTDF_REG, 0x7FC0, 0x302C); - REG_SET_MASKED(DEM, RF_RSSI_COMP_CTRL_REG, 0xF000, 0x9777); - - REG_SET_MASKED(RFCU, RF_SPARE1_FTDF_REG, 0x4800, 0x4000); - REG_SET_MASKED(PLLDIG, RF_SYNTH_CTRL2_BLE_REG, 0x14C0, 0x108B); - REG_SET_MASKED(PLLDIG, RF_SYNTH_CTRL2_FTDF_REG, 0x00C0, 0x009B); - REG_SET_MASKED(RFCU, RF_TX_PWR_LUT_1_REG, 0x003F, 0x003B); - REG_SET_MASKED(RFCU, RF_TX_PWR_LUT_2_REG, 0x003F, 0x0037); - RFCU->RF_TX_PWR_LUT_3_REG = 0x01F6; - REG_SET_MASKED(RFCU, RF_TX_PWR_LUT_4_REG, 0x003F, 0x0036); - PLLDIG->RF_VCO_CALCAP_BIT14_REG = 0xD59D; - - /* FTDF specific */ - REG_SETF(DEM, RF_FTDF_CTRL5_REG, RSSITH, 1800); - } - - REG_SETF(PLLDIG, RF_KMOD_ALPHA_REG, KMOD_ALPHA_BLE, kmoda_cal); - REG_SETF(PLLDIG, RF_MGAIN_CTRL_BLE_REG, GAUSS_GAIN_WR, gg_cal_modified); - REG_SET_BIT(PLLDIG, RF_MGAIN_CTRL_BLE_REG, GAUSS_GAIN_SEL); -#else - REG_SET_MASKED(DEM, RF_AFC_CTRL_REG, 0x0330, 0x01F5); - REG_SET_MASKED(DEM, RF_AGC_CTRL1_REG, 0x007F, 0x950A); - REG_SET_MASKED(DEM, RF_AGC_CTRL2_REG, 0x003F, 0x0049); - REG_SET_MASKED(DEM, RF_CCA_RSSITH_REG, 0xE000, 0xE708); - - RFCU_POWER->RF_CNTRL_TIMER_10_REG = 0x0A42; - RFCU_POWER->RF_CNTRL_TIMER_11_REG = 0x0A44; - REG_SET_MASKED(RFCU_POWER, RF_CNTRL_TIMER_12_REG, 0x00FF, 0x0050); - RFCU_POWER->RF_CNTRL_TIMER_13_REG = 0x0850; - RFCU_POWER->RF_CNTRL_TIMER_14_REG = 0x1858; - RFCU_POWER->RF_CNTRL_TIMER_15_REG = 0x0A50; - REG_SET_MASKED(RFCU_POWER, RF_CNTRL_TIMER_16_REG, 0xFF00, 0x1207); - REG_SET_MASKED(RFCU_POWER, RF_CNTRL_TIMER_1_REG, 0xFF00, 0x0F00); - REG_SET_MASKED(RFCU_POWER, RF_CNTRL_TIMER_21_REG, 0x00FF, 0x0044); - REG_SET_MASKED(RFCU_POWER, RF_CNTRL_TIMER_22_REG, 0x00FF, 0x0040); - REG_SET_MASKED(RFCU_POWER, RF_CNTRL_TIMER_23_REG, 0x00FF, 0x0052); - REG_SET_MASKED(RFCU_POWER, RF_CNTRL_TIMER_2_REG, 0xFF00, 0x0D08); - REG_SET_MASKED(RFCU_POWER, RF_CNTRL_TIMER_3_REG, 0xFF00, 0x0C10); - REG_SET_MASKED(RFCU_POWER, RF_CNTRL_TIMER_5_REG, 0xFF00, 0x0A18); - REG_SET_MASKED(RFCU_POWER, RF_CNTRL_TIMER_7_REG, 0xFF00, 0x0A18); - RFCU->RF_CP_CTRL_BLE_REG = 0x3535; - REG_SET_MASKED(RFCU, RF_CP_CTRL_FTDF_REG, 0x0F0F, 0x7575); - REG_SET_MASKED(DEM, RF_DC_OFFSET_CTRL2_REG, 0x0402, 0x05D0); - REG_SET_MASKED(RFCU, RF_DIV_IQ_TX_REG, 0x00FF, 0x00A1); - REG_SET_MASKED(RFCU_POWER, RF_ENABLE_CONFIG16_REG, 0x001F, 0x0014); - REG_SET_MASKED(RFCU_POWER, RF_ENABLE_CONFIG23_BLE_REG, 0x03E0, 0x0000); - RFCU_POWER->RF_ENABLE_CONFIG42_REG = 0x0210; - REG_SET_MASKED(RFCU_POWER, RF_ENABLE_CONFIG45_BLE_REG, 0x03E0, 0x0060); - REG_SET_MASKED(RFCU_POWER, RF_ENABLE_CONFIG46_BLE_REG, 0x001F, 0x0015); - REG_SET_MASKED(RFCU_POWER, RF_ENABLE_CONFIG46_FTDF_REG, 0x001F, 0x0015); - REG_SET_MASKED(RFCU_POWER, RF_ENABLE_CONFIG47_BLE_REG, 0x001F, 0x0016); - REG_SET_MASKED(RFCU_POWER, RF_ENABLE_CONFIG47_FTDF_REG, 0x001F, 0x0016); - REG_SET_MASKED(RFCU_POWER, RF_ENABLE_CONFIG48_BLE_REG, 0x001F, 0x0017); - REG_SET_MASKED(RFCU_POWER, RF_ENABLE_CONFIG48_FTDF_REG, 0x001F, 0x0017); - REG_SET_MASKED(DEM, RF_FTDF_CTRL1_REG, 0xCC00, 0x4BC0); - REG_SET_MASKED(DEM, RF_FTDF_CTRL4_REG, 0x0500, 0xC6A7); - REG_SET_MASKED(DEM, RF_FTDF_SIGDET_CTRL_REG, 0x1FFF, 0x0BC3); - REG_SET_MASKED(PLLDIG, RF_KMOD_ALPHA_BLE_REG, 0x0FC0, 0x030C); - PLLDIG->RF_KMOD_ALPHA_FTDF_REG = 0x000D; - RFCU->RF_LF_RES_CTRL_BLE_REG = 0x3434; - REG_SET_MASKED(RFCU, RF_LF_CTRL_REG, 0x0040, 0x0080); - REG_SET_MASKED(RFCU, RF_LF_RES_CTRL_FTDF_REG, 0x0F0F, 0x7474); - RFCU->RF_LO_IQ_TRIM_REG = 0x0001; - PLLDIG->RF_MGAIN_CTRL3_REG = 0x0050; - REG_SET_MASKED(PLLDIG, RF_MGAIN_CTRL_FTDF_REG, 0xFF00, 0x5000); - REG_SET_MASKED(RFCU, RF_MIXER_CTRL1_BLE_REG, 0x000F, 0x0031); - REG_SET_MASKED(RFCU, RF_MIXER_CTRL1_FTDF_REG, 0x000F, 0x0031); - REG_SET_MASKED(RFCU, RF_OVERRULE_REG, 0x3C00, 0x5800); - REG_SET_MASKED(RFCU, RF_REF_OSC_FTDF_REG, 0x7FFF, 0x31EB); - REG_SET_MASKED(DEM, RF_RSSI_COMP_CTRL_REG, 0xF000, 0x9777); - REG_SET_MASKED(RFCU, RF_SPARE1_BLE_REG, 0x0038, 0x0018); - REG_SET_MASKED(RFCU, RF_SPARE1_FTDF_REG, 0x0008, 0x0008); - REG_SET_MASKED(PLLDIG, RF_SYNTH_CTRL2_BLE_REG, 0x20C0, 0x304B); - REG_SET_MASKED(PLLDIG, RF_SYNTH_CTRL2_FTDF_REG, 0x0040, 0x004B); - RFCU->RF_TX_PWR_LUT_5_REG = 0x09FF; - REG_SET_MASKED(RFCU, RF_TXDAC_CTRL_REG, 0x0040, 0x0000); -#endif -} - - - -#if dg_configBLACK_ORCA_IC_REV == BLACK_ORCA_IC_REV_A -/** - * \brief Modulation gain calibration - * - * \param[in] bool, true for BLE, false for FTDF - * \param[in] bool, true to enable RFCAL IRQ, false to poll - * - */ -static void hw_rf_modulation_gain_calibration_start(bool mode_ble) -{ - - uint32_t calcap_mid; // MP-12-02-2016 - - // Store all the registers that will be changed in this function - rf_cntrl_timer14_reg_set_offset = REG_GETF(RFCU_POWER, RF_CNTRL_TIMER_14_REG, - SET_OFFSET); - rf_cntrl_timer_7_reg_value = RFCU_POWER->RF_CNTRL_TIMER_7_REG; - rf_enable_config14_ble_reg_value = RFCU_POWER->RF_ENABLE_CONFIG14_BLE_REG; - rf_enable_config15_ble_reg_value = RFCU_POWER->RF_ENABLE_CONFIG15_BLE_REG; - rf_enable_config14_ftdf_reg_value = RFCU_POWER->RF_ENABLE_CONFIG14_FTDF_REG; - rf_enable_config15_ftdf_reg_value = RFCU_POWER->RF_ENABLE_CONFIG15_FTDF_REG; - rf_cal_ctrl_reg_value = RFCU->RF_CAL_CTRL_REG; - rf_mgain_ctrl_reg_value = PLLDIG->RF_MGAIN_CTRL_BLE_REG; - rf_mgain_ctrl2_reg_value = PLLDIG->RF_MGAIN_CTRL2_REG; - rf_synth_ctrl2_ble_reg_value = PLLDIG->RF_SYNTH_CTRL2_BLE_REG; - rf_synth_ctrl2_ftdf_reg_value = PLLDIG->RF_SYNTH_CTRL2_FTDF_REG; - rf_bmcw_reg_value = PLLDIG->RF_BMCW_REG; - rf_vcocal_ctrl_reg_value = PLLDIG->RF_VCOCAL_CTRL_REG; - - // move PLLCLOSED_EN to after PLL is in lock - REG_SETF(RFCU_POWER, RF_CNTRL_TIMER_7_REG, SET_OFFSET, - rf_cntrl_timer14_reg_set_offset + 150); - - // Disable PA and PA ramp. - RFCU_POWER->RF_ENABLE_CONFIG14_BLE_REG = 0x0000; - RFCU_POWER->RF_ENABLE_CONFIG15_BLE_REG = 0x0000; - - RFCU_POWER->RF_ENABLE_CONFIG14_FTDF_REG = 0x0000; - RFCU_POWER->RF_ENABLE_CONFIG15_FTDF_REG = 0x0000; - - // Disable end-of-packet detection (not needed for the MGC) - REG_SET_BIT(PLLDIG, RF_SYNTH_CTRL2_BLE_REG, EO_PACKET_DIS); - - //Set modulator inversion -// REG_CLR_BIT(PLLDIG, RF_MSKMOD_CTRL1_REG, INV_SDM_POL); // Normal SDM polarity -// REG_SET_BIT(PLLDIG, RF_MSKMOD_CTRL1_REG, INV_DAC_POL); // Inverted DAC polarity - - //Make sure that normal operation is selected. - REG_CLR_BIT(PLLDIG, RF_MGAIN_CTRL_BLE_REG, GAUSS_GAIN_SEL); - - // Settings for modulation gain calibration - REG_SET_BIT(RFCU, RF_MGC_CTRL_REG, MGC_GAIN_SET); - REG_SETF(PLLDIG, RF_MGAIN_CTRL_BLE_REG, MGAIN_AVER, 0x2); - - // invert the comparator value if mode bit is set to true. - if (!mode_ble) { - REG_SETF(RFCU, RF_OVERRULE_REG, RF_MODE_OVR, 0x2); // Set radio in FTDF mode - REG_SET_BIT(PLLDIG, RF_MGAIN_CTRL_BLE_REG, MGAIN_CMP_INV); - // Set length dependent on mode , JH-09-11-2015 - REG_SETF(PLLDIG, RF_MGAIN_CTRL2_REG, MGAIN_TRANSMIT_LENGTH, 12); - // Need to set ModIndex value to 0x3F. - REG_SETF(PLLDIG, RF_SYNTH_CTRL2_FTDF_REG, FTDF_MODINDEX, 0x3F); - } else { - REG_SETF(RFCU, RF_OVERRULE_REG, RF_MODE_OVR, 0x1); // Set radio in BLE mode - REG_SET_BIT(PLLDIG, RF_MGAIN_CTRL_BLE_REG, MGAIN_CMP_INV); - // Set length dependent on mode , JH-09-11-2015 - REG_SETF(PLLDIG, RF_MGAIN_CTRL2_REG, MGAIN_TRANSMIT_LENGTH, 8); - // Set modindex to 266kHz to improve df2/df1 , JH-09-17-2015 - REG_SETF(PLLDIG, RF_SYNTH_CTRL2_BLE_REG, MODINDEX, 0x2); - - // Start with a VCO coarse cal to find the calcap for mid channel - REG_SETF(PLLDIG, RF_BMCW_REG, CN_SEL, 1); - REG_SETF(PLLDIG, RF_BMCW_REG, CN_WR, 18); - - // Disable all calibrations except the VCO coarse cal. - RFCU->RF_CAL_CTRL_REG = 0x001C; - - // Clear eo-cal interrupt, such that new calibration can be stared - RFCU->RF_IRQ_CTRL_REG = 0x0000; - - // Wait until the VCO coarse calibration can be started - while ((RFCU->RF_CAL_CTRL_REG & REG_MSK(RFCU, RF_CAL_CTRL_REG, EO_CAL))) {} - - // Start the VCO coarse calibration - REG_SET_BIT(RFCU, RF_CAL_CTRL_REG, SO_CAL); - - // Wait until the VCO coarse calibration has started - while (!(RFCU->RF_CAL_CTRL_REG & REG_MSK(RFCU, RF_CAL_CTRL_REG, SO_CAL))) {} - - // Wait until the VCO coarse calibration is completed - while ((RFCU->RF_CAL_CTRL_REG & REG_MSK(RFCU, RF_CAL_CTRL_REG, SO_CAL))) {} - - // Clear eo_cal interrupt, so that new calibration can be started - RFCU->RF_IRQ_CTRL_REG = 0x0000; - - calcap_mid = REG_GETF(PLLDIG, RF_SYNTH_RESULT_BLE_REG, VCO_FREQTRIM_RD); - REG_SETF(PLLDIG, RF_VCOCAL_CTRL_REG, VCO_FREQTRIM_WR, - calcap_mid - REG_GETF(PLLDIG, RF_VCOCAL_CTRL_REG, VCO_FREQTRIM_SEL)); - - REG_SETF(PLLDIG, RF_VCOCAL_CTRL_REG, VCO_FREQTRIM_SEL, 2); // manual calcap - - } - - // Disable all calibrations except the modulation gain cal. - RFCU->RF_CAL_CTRL_REG = 0x0038; - - // Clear eo-cal interrupt, such that new calibration can be started - RFCU->RF_IRQ_CTRL_REG = 0x0000; - - // Wait until next calibration can be started - while (RFCU->RF_CAL_CTRL_REG & REG_MSK(RFCU, RF_CAL_CTRL_REG, EO_CAL)) {} - - NVIC_ClearPendingIRQ(RFCAL_IRQn); - - // Start the modulation gain calibration - REG_SET_BIT(RFCU, RF_CAL_CTRL_REG, SO_CAL); - - // Wait until the modulation gain calibration has started - while (!(RFCU->RF_CAL_CTRL_REG & REG_MSK(RFCU, RF_CAL_CTRL_REG, SO_CAL))) {} -} -#else /* dg_configBLACK_ORCA_IC_REV == BLACK_ORCA_IC_REV_B */ -static void hw_rf_modulation_gain_calibration_generic_start(mgc_mode_ctrl_e mode_ctrl, - int16_t average, int16_t mgain_mode, int16_t force, int16_t length) -{ - - // Store all the registers that will be changed in this function - rf_cntrl_timer14_reg_set_offset = REG_GETF(RFCU_POWER, RF_CNTRL_TIMER_14_REG, - SET_OFFSET); - rf_cntrl_timer_7_reg_value = RFCU_POWER->RF_CNTRL_TIMER_7_REG; - rf_enable_config14_reg_value = RFCU_POWER->RF_ENABLE_CONFIG14_REG; - rf_enable_config15_reg_value = RFCU_POWER->RF_ENABLE_CONFIG15_REG; - rf_cal_ctrl_reg_value = RFCU->RF_CAL_CTRL_REG; - rf_mgain_ctrl_reg_value = PLLDIG->RF_MGAIN_CTRL_BLE_REG; - rf_mgain_ctrl2_reg_value = PLLDIG->RF_MGAIN_CTRL2_REG; - rf_synth_ctrl2_ble_reg_value = PLLDIG->RF_SYNTH_CTRL2_BLE_REG; - rf_synth_ctrl2_ftdf_reg_value = PLLDIG->RF_SYNTH_CTRL2_FTDF_REG; - rf_overrule_reg_value = RFCU->RF_OVERRULE_REG; - rf_enable_config23_ble_reg_value = RFCU_POWER->RF_ENABLE_CONFIG23_BLE_REG; - rf_enable_config23_ftdf_reg_value = RFCU_POWER->RF_ENABLE_CONFIG23_FTDF_REG; - rf_enable_config45_ble_reg_value = RFCU_POWER->RF_ENABLE_CONFIG45_BLE_REG; - rf_enable_config45_ftdf_reg_value = RFCU_POWER->RF_ENABLE_CONFIG45_FTDF_REG; - - // move PLLCLOSED_EN to after PLL is in lock - REG_SETF(RFCU_POWER, RF_CNTRL_TIMER_7_REG, SET_OFFSET, - rf_cntrl_timer14_reg_set_offset + 150); - - // Disable PA and PA ramp. - RFCU_POWER->RF_ENABLE_CONFIG14_REG = 0x0000; - RFCU_POWER->RF_ENABLE_CONFIG15_REG = 0x0000; - - // Disable end-of-packet detection (not needed for the MGC) - REG_SET_BIT(PLLDIG, RF_SYNTH_CTRL2_BLE_REG, EO_PACKET_DIS); - - // Set Gain in Analog comparator to 1 - REG_SET_BIT(RFCU, RF_MGC_CTRL_REG, MGC_GAIN_SET); - - - /* Set mode specific settings for BLE mode with GaussDAC */ - if (mode_ctrl == MGC_MODE_CTRL_BLE_GAUSSDAC) { - /* Set radio in BLE mode */ - REG_SETF(RFCU, RF_OVERRULE_REG, RF_MODE_OVR, 0x1); - /* Inversion of analog comparator signal */ - REG_SET_BIT(PLLDIG, RF_MGAIN_CTRL_BLE_REG, MGAIN_CMP_INV); - - if (force != -1) { - /* Disable Gauss Gain override */ - REG_SETF(PLLDIG, RF_MGAIN_CTRL_BLE_REG, GAUSS_GAIN_SEL, force & 0x1); - } - - if (average != -1) { - /* Set number of averaging */ - REG_SETF(PLLDIG, RF_MGAIN_CTRL_BLE_REG, MGAIN_AVER, average & 0x3); - } - - /* Setting number of zeros and ones */ - if (length == -1) { - REG_SETF(PLLDIG, RF_MGAIN_CTRL2_REG, MGAIN_TRANSMIT_LENGTH, 8); - } else { - REG_SETF(PLLDIG, RF_MGAIN_CTRL2_REG, MGAIN_TRANSMIT_LENGTH, - length & 0x7f); - } - - /* Set modindex to 266kHz */ - REG_SETF(PLLDIG, RF_SYNTH_CTRL2_BLE_REG, MODINDEX, 0x2); - /* Select the GaussDac in BLE mode */ - REG_SETF(PLLDIG, RF_SYNTH_CTRL2_BLE_REG, BLE_DAC_SEL, 0x0); - - if (mgain_mode != -1) { - /* Use the new algorithm */ - REG_SETF(PLLDIG, RF_MGAIN_CTRL2_REG, MGAIN_MODE_SEL, mgain_mode & 0x1); - } - - /* Disable TXDAC in BLE mode */ - REG_SETF(RFCU_POWER, RF_ENABLE_CONFIG45_BLE_REG, txdac_en_ble_dcf_tx, 0x0); - /* Enable GaussDAC in BLE mode */ - REG_SETF(RFCU_POWER, RF_ENABLE_CONFIG23_BLE_REG, gauss_en_ble_dcf_tx, 0x3); - /* Disable TX-DAC output selection */ - REG_SETF(RFCU, RF_OVERRULE_REG, TXDAC_SEL, 0x0); - /* Enable GaussDAC output selection switch */ - REG_SETF(RFCU, RF_OVERRULE_REG, GAUSS_DAC_SEL, 0x0); - } - - /* Set mode specific settings for BLE mode with TXDAC */ - if (mode_ctrl == MGC_MODE_CTRL_BLE_TXDAC) { - /* Set radio in BLE mode */ - REG_SETF(RFCU, RF_OVERRULE_REG, RF_MODE_OVR, 0x1); - /* Inversion of analog comparator signal */ - REG_SET_BIT(PLLDIG, RF_MGAIN_CTRL_BLE_REG, MGAIN_CMP_INV); - - if (force != -1) { - /* Disable Gauss Gain override */ - REG_SETF(PLLDIG, RF_MGAIN_CTRL_BLE_REG, GAUSS_GAIN_SEL, force & 0x1); - } - - if (average != -1) { - /* Set number of averaging */ - REG_SETF(PLLDIG, RF_MGAIN_CTRL_BLE_REG, MGAIN_AVER, average & 0x3); - } - - /* Setting number of zeros and ones */ - if (length == -1) { - REG_SETF(PLLDIG, RF_MGAIN_CTRL2_REG, MGAIN_TRANSMIT_LENGTH, 8); - } else { - REG_SETF(PLLDIG, RF_MGAIN_CTRL2_REG, MGAIN_TRANSMIT_LENGTH, - length & 0x7f); - } - - /* Set modindex to 250kHz */ - REG_SETF(PLLDIG, RF_SYNTH_CTRL2_BLE_REG, MODINDEX, 0x0); - /* Select the TXDAC in BLE mode */ - REG_SETF(PLLDIG, RF_SYNTH_CTRL2_BLE_REG, BLE_DAC_SEL, 0x1); - - if (mgain_mode != -1) { - /* Use the new algorithm */ - REG_SETF(PLLDIG, RF_MGAIN_CTRL2_REG, MGAIN_MODE_SEL, mgain_mode & 0x1); - } - - /* Enable TXDAC in BLE mode */ - REG_SETF(RFCU_POWER, RF_ENABLE_CONFIG45_BLE_REG, txdac_en_ble_dcf_tx, 0x3); - /* Disable GaussDAC in BLE mode */ - REG_SETF(RFCU_POWER, RF_ENABLE_CONFIG23_BLE_REG, gauss_en_ble_dcf_tx, 0x0); - /* Select TX-DAC output selection */ - REG_SETF(RFCU, RF_OVERRULE_REG, TXDAC_SEL, 0x2); - /* Unselect GaussDAC output selection switch */ - REG_SETF(RFCU, RF_OVERRULE_REG, GAUSS_DAC_SEL, 0x1); - } - - /* Set mode specific settings for FTDF mode */ - if (mode_ctrl == MGC_MODE_CTRL_FTDF) { - /* Set radio in FTDF mode */ - REG_SETF(RFCU, RF_OVERRULE_REG, RF_MODE_OVR, 0x2); - /* Inversion of analog comparator signal */ - REG_SET_BIT(PLLDIG, RF_MGAIN_CTRL_BLE_REG, MGAIN_CMP_INV); - - if (force != -1) { - /* Disable Gauss Gain override */ - REG_SETF(PLLDIG, RF_MGAIN_CTRL_BLE_REG, GAUSS_GAIN_SEL, force & 0x1); - } - - if (average != -1) { - /* Set number of averaging */ - REG_SETF(PLLDIG, RF_MGAIN_CTRL_BLE_REG, MGAIN_AVER, average & 0x3); - } - - /* Setting number of zeros and ones */ - if (length == -1) { - REG_SETF(PLLDIG, RF_MGAIN_CTRL2_REG, MGAIN_TRANSMIT_LENGTH, 16); - } else { - REG_SETF(PLLDIG, RF_MGAIN_CTRL2_REG, MGAIN_TRANSMIT_LENGTH, - length & 0x7f); - } - - if (mgain_mode != -1) { - /* Use the new algorithm */ - REG_SETF(PLLDIG, RF_MGAIN_CTRL2_REG, MGAIN_MODE_SEL, mgain_mode & 0x1); - } - - /* Enable TXDAC in FTDF mode */ - REG_SETF(RFCU_POWER, RF_ENABLE_CONFIG45_FTDF_REG, txdac_en_ftdf_dcf_tx, 0x3); - /* Disable GaussDAC in FTDF mode */ - REG_SETF(RFCU_POWER, RF_ENABLE_CONFIG23_FTDF_REG, gauss_en_ftdf_dcf_tx, 0x0); - /* Select TX-DAC output selection */ - REG_SETF(RFCU, RF_OVERRULE_REG, TXDAC_SEL, 0x0); - /* Unselect GaussDAC output selection switch */ - REG_SETF(RFCU, RF_OVERRULE_REG, GAUSS_DAC_SEL, 0x0); - } - - // Disable all calibrations except the modulation gain cal. - RFCU->RF_CAL_CTRL_REG = 0x0038; - - // Clear eo-cal interrupt, such that new calibration can be started - RFCU->RF_IRQ_CTRL_REG = 0x0000; - - // Wait until next calibration can be started - while (RFCU->RF_CAL_CTRL_REG & REG_MSK(RFCU, RF_CAL_CTRL_REG, EO_CAL)) {} - - NVIC_ClearPendingIRQ(RFCAL_IRQn); - - // Start the modulation gain calibration - REG_SET_BIT(RFCU, RF_CAL_CTRL_REG, SO_CAL); - - // Wait until the modulation gain calibration has started - while (!(RFCU->RF_CAL_CTRL_REG & REG_MSK(RFCU, RF_CAL_CTRL_REG, SO_CAL))) {} -} - -static inline void hw_rf_modulation_gain_calibration_start(bool mode_ble) -{ - if (mode_ble) { - hw_rf_modulation_gain_calibration_generic_start(MGC_MODE_CTRL_BLE_TXDAC, 2, 1, 0, 8); - } else { - hw_rf_modulation_gain_calibration_generic_start(MGC_MODE_CTRL_FTDF, 2, 1, 0, 8); - } -} -#endif - -static void hw_rf_modulation_gain_calibration_end(void) -{ -#if dg_configBLACK_ORCA_IC_REV == BLACK_ORCA_IC_REV_A - uint32_t ch_cal,gg_cal,gg_ch_prod,kmoda_max, gg0, gg_th1, gg_th2; // MP-12-02-2016 - uint32_t kmoda_base; - uint32_t Y; - uint32_t tmp; - uint32_t dgain_kill_second_jump; - uint32_t dgain; - - if ((dg_configBLACK_ORCA_IC_REV == BLACK_ORCA_IC_REV_A) - || ((dg_configUSE_AUTO_CHIP_DETECTION == 1) - && (CHIP_IS_AE))) { - kmoda_base = KMODE_ALPHA_ACAD_PREF & REG_MSK(PLLDIG, RF_KMOD_ALPHA_REG, - KMOD_ALPHA_BLE); - } - - // Clear eo_cal interrupt, so that new calibration can be started - RFCU->RF_IRQ_CTRL_REG = 0x0000; - - ch_cal = REG_GETF(PLLDIG, RF_SYNTH_RESULT2_BLE_REG, CN_CAL_RD); - gg_cal = REG_GETF(PLLDIG, RF_SYNTH_RESULT_BLE_REG, GAUSS_GAIN_CAL_RD); - - gg0 = gg_cal + ((gg_cal*kmoda_base*ch_cal+1024)>>11); - gg_th1 = (gg_cal&0xE0) + DF1_DAC_CHECK_VALUE; // gg_th1 = (gg_cal&0xE0)+32; - gg_th2 = (gg_th1 + DF1_DAC_CHECK_VALUE); // gg_th2 = (gg_th1+32); - - if (gg0 >= gg_th2) { //so 2 jumps are on the left of the cal. channel - /* - Formula (MP): - Y = 1 + ((kmoda_base*ch_cal)/2048); - dgain_kill_second_jump = gg_cal - (gg_th2-1)/Y; - - Improve the resolution, - Y = 2048* + (kmoda_base*ch_cal); - dgain_kill_second_jump = gg_cal - (gg_th2-1)*2048/Y; - */ - - Y = 2048 + (kmoda_base*ch_cal); - tmp = (((gg_th2-1)<<11)/Y); - - if (gg_cal > tmp) {//check to prevent negative value for dgain_kill_second_jump - dgain_kill_second_jump = gg_cal - tmp; - - if (dgain_kill_second_jump <= DF1_DGAIN_THR1) { - dgain = DF1_DGAIN_THR1; - } else if (dgain_kill_second_jump >= DF1_DGAIN_THR2) { - dgain = DF1_DGAIN_THR2; // Should never end up here � but better to be safe than sorry. dgain_thr2 is default 16 - } else { - dgain = dgain_kill_second_jump; - } - } else { - dgain = 0; // End up here because something went wrong with the calculation of tmp! - } - - } else if (gg0 >= gg_th1) { - dgain = DF1_DGAIN_THR1; - } else { - dgain = DF1_DGAIN_THR0; - } - - if (gg_cal>dgain) { - gg_cal_modified = gg_cal-dgain; - } else { - gg_cal_modified = gg_cal; - } - - gg_ch_prod = (uint32_t) (gg_cal_modified * ch_cal); - - if (gg_ch_prod == 0) { // Avoid HardFault due to division by 0 (not likely) - kmoda_cal = kmoda_base; - } else { - - kmoda_max = (255*2048 - 2048 * gg_cal_modified) / gg_ch_prod ; - - if (kmoda_max >= kmoda_base) { - kmoda_cal = kmoda_base; - } else { - kmoda_cal = kmoda_max; - } - } - - // This should be done both here (to take effect after calib) AND after preferred settings - REG_SETF(PLLDIG, RF_KMOD_ALPHA_REG, KMOD_ALPHA_BLE, kmoda_cal); - - //Restore the values of the registers that were changed in the function - //REG_SET_BIT(PLLDIG, RF_MSKMOD_CTRL1_REG, INV_SDM_POL); // Inverted SDM polarity - //REG_CLR_BIT(PLLDIG, RF_MSKMOD_CTRL1_REG, INV_DAC_POL); // Normal DAC polarity - RFCU_POWER->RF_CNTRL_TIMER_7_REG = rf_cntrl_timer_7_reg_value; - RFCU->RF_CAL_CTRL_REG = rf_cal_ctrl_reg_value; - RFCU_POWER->RF_ENABLE_CONFIG14_BLE_REG = rf_enable_config14_ble_reg_value; - RFCU_POWER->RF_ENABLE_CONFIG14_FTDF_REG = rf_enable_config14_ftdf_reg_value; - RFCU_POWER->RF_ENABLE_CONFIG15_BLE_REG = rf_enable_config15_ble_reg_value; - RFCU_POWER->RF_ENABLE_CONFIG15_FTDF_REG = rf_enable_config15_ftdf_reg_value; - - PLLDIG->RF_MGAIN_CTRL_BLE_REG = rf_mgain_ctrl_reg_value; - PLLDIG->RF_MGAIN_CTRL2_REG = rf_mgain_ctrl2_reg_value; - PLLDIG->RF_SYNTH_CTRL2_BLE_REG = rf_synth_ctrl2_ble_reg_value; - PLLDIG->RF_SYNTH_CTRL2_FTDF_REG = rf_synth_ctrl2_ftdf_reg_value; - - PLLDIG->RF_BMCW_REG = rf_bmcw_reg_value; // MP-12-02-2016 - PLLDIG->RF_VCOCAL_CTRL_REG = rf_vcocal_ctrl_reg_value; // MP-12-02-2016 - - REG_SETF(PLLDIG, RF_MGAIN_CTRL_BLE_REG, GAUSS_GAIN_WR, gg_cal_modified); - REG_SET_BIT(PLLDIG, RF_MGAIN_CTRL_BLE_REG, GAUSS_GAIN_SEL); - - // Disable overrule mode - RFCU->RF_OVERRULE_REG &= ~REG_MSK(RFCU, RF_OVERRULE_REG, RF_MODE_OVR); -#else - // Clear eo_cal interrupt, so that new calibration can be started - RFCU->RF_IRQ_CTRL_REG = 0x0000; - - //Restore the values of the registers that were changed in the function - RFCU_POWER->RF_CNTRL_TIMER_7_REG = rf_cntrl_timer_7_reg_value; - RFCU->RF_CAL_CTRL_REG = rf_cal_ctrl_reg_value; - RFCU_POWER->RF_ENABLE_CONFIG14_REG = rf_enable_config14_reg_value; - RFCU_POWER->RF_ENABLE_CONFIG15_REG = rf_enable_config15_reg_value; - PLLDIG->RF_MGAIN_CTRL_BLE_REG = rf_mgain_ctrl_reg_value; - PLLDIG->RF_MGAIN_CTRL2_REG = rf_mgain_ctrl2_reg_value; - PLLDIG->RF_SYNTH_CTRL2_BLE_REG = rf_synth_ctrl2_ble_reg_value; - PLLDIG->RF_SYNTH_CTRL2_FTDF_REG = rf_synth_ctrl2_ftdf_reg_value; - RFCU_POWER->RF_ENABLE_CONFIG23_BLE_REG = rf_enable_config23_ble_reg_value; - RFCU_POWER->RF_ENABLE_CONFIG23_FTDF_REG = rf_enable_config23_ftdf_reg_value; - RFCU_POWER->RF_ENABLE_CONFIG45_BLE_REG = rf_enable_config45_ble_reg_value; - RFCU_POWER->RF_ENABLE_CONFIG45_FTDF_REG = rf_enable_config45_ftdf_reg_value; - - // Disable overrule mode - RFCU->RF_OVERRULE_REG = rf_overrule_reg_value; - -#endif -} - -/** - * \brief Modulation gain calibration - Wrapper function - * - * Used on boot, and generally whenever the interrupt-based approach is not - * needed - * - * \param[in] bool, true for FTDF, false for BLE - * - */ -void hw_rf_modulation_gain_calibration(bool mode_ble) -{ - /* Start the gain calibration */ - hw_rf_modulation_gain_calibration_start(mode_ble); - - // Wait until the modulation gain calibration is completed - while (RFCU->RF_CAL_CTRL_REG & REG_MSK(RFCU, RF_CAL_CTRL_REG, SO_CAL)) {} - - hw_rf_modulation_gain_calibration_end(); -} - - -void hw_rf_dc_offset_calibration(void) -{ -#if dg_configBLACK_ORCA_IC_REV == BLACK_ORCA_IC_REV_A - // Save the values of registers that will be changed in the function - uint32_t RF_ENABLE_CONFIG0_BLE_REG_value = RFCU_POWER->RF_ENABLE_CONFIG0_BLE_REG; - uint32_t RF_ENABLE_CONFIG1_BLE_REG_value = RFCU_POWER->RF_ENABLE_CONFIG1_BLE_REG; - uint32_t RF_ENABLE_CONFIG2_BLE_REG_value = RFCU_POWER->RF_ENABLE_CONFIG2_BLE_REG; - uint32_t RF_ENABLE_CONFIG46_BLE_REG_value = RFCU_POWER->RF_ENABLE_CONFIG46_BLE_REG; - - uint32_t RF_DC_OFFSET_CTRL2_REG_value = DEM->RF_DC_OFFSET_CTRL2_REG; - uint32_t rf_cal_ctrl_reg_value_local = RFCU->RF_CAL_CTRL_REG; - uint32_t rf_overrule_reg_value_local = RFCU->RF_OVERRULE_REG; - - // Required setting for the DC-offset calibration - RFCU_POWER->RF_ENABLE_CONFIG0_BLE_REG = 0x0000; // Disable LNA_LDO - RFCU_POWER->RF_ENABLE_CONFIG1_BLE_REG = 0x0000; // Disable LNA_CORE - RFCU_POWER->RF_ENABLE_CONFIG2_BLE_REG = 0x0000; // Disable LNA_CGM - RFCU_POWER->RF_ENABLE_CONFIG46_BLE_REG = 0x0000; // Disable the DCF triggered Partial DCOC - - // DCNGAIN = 3, DCNSTEP = 5, DCPARCAL_EN = 0, DCOFFSET_SEL = 0 - DEM->RF_DC_OFFSET_CTRL2_REG = 0x01D0; - // Disable all calibrations except the DC-offset cal. - RFCU->RF_CAL_CTRL_REG = 0x002C; - - REG_SETF(RFCU, RF_OVERRULE_REG, RF_MODE_OVR, 0x1); // Overrule RF_MODE <- BLE_MODE - - // Clear eo-cal interrupt, so that new calibration can be stared - RFCU->RF_IRQ_CTRL_REG = 0x0000; - - // Wait until the DC-offset calibration can be started - while (RFCU->RF_CAL_CTRL_REG & REG_MSK(RFCU, RF_CAL_CTRL_REG, EO_CAL)) {} - - // Start the modulation gain calibration - REG_SET_BIT(RFCU, RF_CAL_CTRL_REG, SO_CAL); - - // Wait until the modulation gain calibration has started - while (!(RFCU->RF_CAL_CTRL_REG & REG_MSK(RFCU, RF_CAL_CTRL_REG, SO_CAL))) {} - - // Wait until the modulation gain calibration is completed - while (RFCU->RF_CAL_CTRL_REG & REG_MSK(RFCU, RF_CAL_CTRL_REG, SO_CAL)) {} - - // Clear eo-cal interrupt, so that new calibration can be started - RFCU->RF_IRQ_CTRL_REG = 0x0000; - - // Restore the values of registers that were changed in the function - RFCU_POWER->RF_ENABLE_CONFIG0_BLE_REG = RF_ENABLE_CONFIG0_BLE_REG_value; - RFCU_POWER->RF_ENABLE_CONFIG1_BLE_REG = RF_ENABLE_CONFIG1_BLE_REG_value; - RFCU_POWER->RF_ENABLE_CONFIG2_BLE_REG = RF_ENABLE_CONFIG2_BLE_REG_value; - RFCU_POWER->RF_ENABLE_CONFIG46_BLE_REG = RF_ENABLE_CONFIG46_BLE_REG_value; - - DEM->RF_DC_OFFSET_CTRL2_REG = RF_DC_OFFSET_CTRL2_REG_value; - RFCU->RF_CAL_CTRL_REG = rf_cal_ctrl_reg_value_local; - RFCU->RF_OVERRULE_REG = rf_overrule_reg_value_local; -#else /* REV_B */ - // Save the values of registers that will be changed in the function - uint32_t RF_ENABLE_CONFIG0_REG_value = RFCU_POWER->RF_ENABLE_CONFIG0_REG; - uint32_t RF_ENABLE_CONFIG1_REG_value = RFCU_POWER->RF_ENABLE_CONFIG1_REG; - uint32_t RF_ENABLE_CONFIG2_REG_value = RFCU_POWER->RF_ENABLE_CONFIG2_REG; - - uint32_t RF_DC_OFFSET_CTRL2_REG_value = DEM->RF_DC_OFFSET_CTRL2_REG; - uint32_t rf_cal_ctrl_reg_value_local = RFCU->RF_CAL_CTRL_REG; - uint32_t rf_overrule_reg_value_local = RFCU->RF_OVERRULE_REG; - - uint32_t rf_enable_config46_ble_reg_value = RFCU_POWER->RF_ENABLE_CONFIG46_BLE_REG; - uint32_t rf_enable_config46_ftdf_reg_value = RFCU_POWER->RF_ENABLE_CONFIG46_FTDF_REG; - - // Required setting for the DC-offset calibration - RFCU_POWER->RF_ENABLE_CONFIG0_REG = 0x0000; // Disable LNA_LDO - RFCU_POWER->RF_ENABLE_CONFIG1_REG = 0x0000; // Disable LNA_CORE - RFCU_POWER->RF_ENABLE_CONFIG2_REG = 0x0000; // Disable LNA_CGM - - // DCNGAIN = 3, DCNSTEP = 5, DCPARCAL_EN = 0, DCOFFSET_SEL = 0 - DEM->RF_DC_OFFSET_CTRL2_REG = 0x01D0; - // Disable all calibrations except the DC-offset cal. - RFCU->RF_CAL_CTRL_REG = 0x002C; - - RFCU_POWER->RF_ENABLE_CONFIG46_BLE_REG = 0x0000; - RFCU_POWER->RF_ENABLE_CONFIG46_FTDF_REG = 0x0000; - - REG_SETF(RFCU, RF_OVERRULE_REG, RF_MODE_OVR, 0x1); // Overrule RF_MODE <- BLE_MODE - - // Clear eo-cal interrupt, so that new calibration can be stared - RFCU->RF_IRQ_CTRL_REG = 0x0000; - - // Wait until the DC-offset calibration can be started - while (RFCU->RF_CAL_CTRL_REG & REG_MSK(RFCU, RF_CAL_CTRL_REG, EO_CAL)) {} - - // Start the modulation gain calibration - REG_SET_BIT(RFCU, RF_CAL_CTRL_REG, SO_CAL); - - // Wait until the modulation gain calibration has started - while (!(RFCU->RF_CAL_CTRL_REG & REG_MSK(RFCU, RF_CAL_CTRL_REG, SO_CAL))) {} - - // Wait until the modulation gain calibration is completed - while (RFCU->RF_CAL_CTRL_REG & REG_MSK(RFCU, RF_CAL_CTRL_REG, SO_CAL)) {} - - // Clear eo-cal interrupt, so that new calibration can be started - RFCU->RF_IRQ_CTRL_REG = 0x0000; - - // Restore the values of registers that were changed in the function - RFCU_POWER->RF_ENABLE_CONFIG0_REG = RF_ENABLE_CONFIG0_REG_value; - RFCU_POWER->RF_ENABLE_CONFIG1_REG = RF_ENABLE_CONFIG1_REG_value; - RFCU_POWER->RF_ENABLE_CONFIG2_REG = RF_ENABLE_CONFIG2_REG_value; - - DEM->RF_DC_OFFSET_CTRL2_REG = RF_DC_OFFSET_CTRL2_REG_value; - RFCU->RF_CAL_CTRL_REG = rf_cal_ctrl_reg_value_local; - RFCU->RF_OVERRULE_REG = rf_overrule_reg_value_local; - RFCU_POWER->RF_ENABLE_CONFIG46_BLE_REG = rf_enable_config46_ble_reg_value; - RFCU_POWER->RF_ENABLE_CONFIG46_FTDF_REG = rf_enable_config46_ftdf_reg_value; - -#endif -} - - - -#if dg_configBLACK_ORCA_IC_REV == BLACK_ORCA_IC_REV_A -bool hw_rf_iff_calibration(void) -{ - uint64_t start_time; - - uint16_t calcap_result; - - // Save the values of registers that will be changed in the function - uint32_t rf_cal_ctrl_reg_value_local = RFCU->RF_CAL_CTRL_REG; - - // Configure the reference oscillator for the calibration - // 21-04-2015 : JH - Removed to use preferred settings instead - //uint16_t reg = RFCU->RF_REF_OSC_BLE_REG; - //REG_SET_FIELD(RFCU, RF_REF_OSC_BLE_REG, CNT_CLK, reg, 0xA6); - //REG_SET_FIELD(RFCU, RF_REF_OSC_BLE_REG, CNT_RO, reg, 0x2C); - //RFCU->RF_REF_OSC_BLE_REG = reg; - //reg = RFCU->RF_REF_OSC_FTDF_REG; - //REG_SET_FIELD(RFCU, RF_REF_OSC_FTDF_REG, CNT_CLK, reg, 0xA6); - //REG_SET_FIELD(RFCU, RF_REF_OSC_FTDF_REG, CNT_RO, reg, 0x2C); - //RFCU->RF_REF_OSC_FTDF_REG = reg; - - // Save the values of registers that will be changed in the function - uint32_t RF_ENABLE_CONFIG0_BLE_REG_value = RFCU_POWER->RF_ENABLE_CONFIG0_BLE_REG; - uint32_t RF_ENABLE_CONFIG1_BLE_REG_value = RFCU_POWER->RF_ENABLE_CONFIG1_BLE_REG; - uint32_t RF_ENABLE_CONFIG2_BLE_REG_value = RFCU_POWER->RF_ENABLE_CONFIG2_BLE_REG; - uint32_t RF_ENABLE_CONFIG46_BLE_REG_value = RFCU_POWER->RF_ENABLE_CONFIG46_BLE_REG; - - // Required setting for the DC-offset calibration - RFCU_POWER->RF_ENABLE_CONFIG0_BLE_REG = 0x0000; // Disable LNA_LDO - RFCU_POWER->RF_ENABLE_CONFIG1_BLE_REG = 0x0000; // Disable LNA_CORE - RFCU_POWER->RF_ENABLE_CONFIG2_BLE_REG = 0x0000; // Disable LNA_CGM - RFCU_POWER->RF_ENABLE_CONFIG46_BLE_REG = 0x0000; // Disable the DCF triggered Partial DCOC - - // Disable all calibrations except the Iff cal. - RFCU->RF_CAL_CTRL_REG = 0x0034; - // Select the IF calcap to use the FSM value - REG_SET_BIT(RFCU, RF_IFF_CTRL1_REG, IF_SELECT_FSM); - - // Clear eo-cal interrupt, so that new calibration can be stared - RFCU->RF_IRQ_CTRL_REG = 0x0000; - - - start_time = hw_rf_get_start_iff_time(); - - // Wait until the IFF calibration can be started - while (RFCU->RF_CAL_CTRL_REG & REG_MSK(RFCU, RF_CAL_CTRL_REG, EO_CAL)) { - if (hw_rf_check_iff_timeout(start_time)) { - /* IFF lockup detected. Abort */ - return false; - } - } - - /* - * New code by SR 3/23/2016 - * (Disable partial calibration before IFF calibrations starts) - * - * Save current content of RF_DC_OFFSET_CTRl2_REG and set DCPARCAL_EN = 0 - * - */ - uint16_t rf_dc_offset_ctrl2_reg = DEM->RF_DC_OFFSET_CTRL2_REG; //GetWord16(RF_DC_OFFSET_CTRL2_REG); - REG_CLR_BIT(DEM, RF_DC_OFFSET_CTRL2_REG, DCPARCAL_EN); - - // Start the IFF calibration - REG_SET_BIT(RFCU, RF_CAL_CTRL_REG, SO_CAL); - - // Wait until the IFF calibration has started - while (!(RFCU->RF_CAL_CTRL_REG & REG_MSK(RFCU, RF_CAL_CTRL_REG, SO_CAL))) { - if (hw_rf_check_iff_timeout(start_time)) { - /* IFF lockup detected. Abort */ - return false; - } - } - - // Wait until the IFF calibration is completed - while (RFCU->RF_CAL_CTRL_REG & REG_MSK(RFCU, RF_CAL_CTRL_REG, SO_CAL)) { - if (hw_rf_check_iff_timeout(start_time)) { - /* IFF lockup detected. Abort */ - return false; - } - } - - // Clear eo-cal interrupt, so that new calibration can be started - RFCU->RF_IRQ_CTRL_REG = 0x0000; - - // Store the result to all IFF CC registers - calcap_result = RFCU->RF_IFF_CAL_CAP_STAT_REG; - RFCU->RF_IFF_CC_BLE_SET1_REG = calcap_result; - RFCU->RF_IFF_CC_BLE_SET2_REG = calcap_result; - RFCU->RF_IFF_CC_FTDF_SET1_REG = calcap_result; - RFCU->RF_IFF_CC_FTDF_SET2_REG = calcap_result; - - // Restore the values of registers that were changed in the function - RFCU->RF_CAL_CTRL_REG = rf_cal_ctrl_reg_value_local; - // De-select the IF calcap to use the FSM value - REG_CLR_BIT(RFCU, RF_IFF_CTRL1_REG, IF_SELECT_FSM); - - - /* - * New code by SR 3/23/2016 - * (Disable partial calibration before IFF calibrations starts) - * - * Restore RF_DC_OFFSET_CTRl2_REG - * - */ - DEM->RF_DC_OFFSET_CTRL2_REG = rf_dc_offset_ctrl2_reg; - - // Restore the values of registers that were changed in the function - RFCU_POWER->RF_ENABLE_CONFIG0_BLE_REG = RF_ENABLE_CONFIG0_BLE_REG_value; - RFCU_POWER->RF_ENABLE_CONFIG1_BLE_REG = RF_ENABLE_CONFIG1_BLE_REG_value; - RFCU_POWER->RF_ENABLE_CONFIG2_BLE_REG = RF_ENABLE_CONFIG2_BLE_REG_value; - RFCU_POWER->RF_ENABLE_CONFIG46_BLE_REG = RF_ENABLE_CONFIG46_BLE_REG_value; - return true; -} -#else /* dg_configBLACK_ORCA_IC_REV == BLACK_ORCA_IC_REV_B */ -static bool iff_calib_internal(iff_mode_ovr_e rf_mode_ovr, iff_mode_ctrl_e mode_ctrl) -{ - uint16_t calcap_result; - uint64_t start_time; - - // Set mode - REG_SETF(RFCU, RF_OVERRULE_REG, RF_MODE_OVR, rf_mode_ovr); - - // Disable all calibrations except the Iff cal. - RFCU->RF_CAL_CTRL_REG = 0x0034; - - // Select the IF calcap to use the FSM value - REG_SET_BIT(RFCU, RF_IFF_CTRL1_REG, IF_SELECT_FSM); - - // Clear eo-cal interrupt, so that new calibration can be stared - RFCU->RF_IRQ_CTRL_REG = 0x0000; - - start_time = hw_rf_get_start_iff_time(); - - // Wait until the IFF calibration can be started - while (RFCU->RF_CAL_CTRL_REG & REG_MSK(RFCU, RF_CAL_CTRL_REG, EO_CAL)) { - if (hw_rf_check_iff_timeout(start_time)) { - /* IFF lockup detected. Abort */ - return false; - } - } - - // Start the IFF calibration - REG_SET_BIT(RFCU, RF_CAL_CTRL_REG, SO_CAL); - - // Wait until the IFF calibration has started - while (!(RFCU->RF_CAL_CTRL_REG & REG_MSK(RFCU, RF_CAL_CTRL_REG, SO_CAL))) { - if (hw_rf_check_iff_timeout(start_time)) { - /* IFF lockup detected. Abort */ - return false; - } - } - - // Wait until the IFF calibration is completed - while (RFCU->RF_CAL_CTRL_REG & REG_MSK(RFCU, RF_CAL_CTRL_REG, SO_CAL)) { - if (hw_rf_check_iff_timeout(start_time)) { - /* IFF lockup detected. Abort */ - return false; - } - } - - // Clear eo-cal interrupt, so that new calibration can be started - RFCU->RF_IRQ_CTRL_REG = 0x0000; - - // Store the result to all IFF CC BLE registers - calcap_result = RFCU->RF_IFF_CAL_CAP_STAT_REG; - if (mode_ctrl != IFF_MODE_CTRL_COMBO || rf_mode_ovr == IFF_MODE_OVR_BLE) { - RFCU->RF_IFF_CC_BLE_SET1_REG = calcap_result; - RFCU->RF_IFF_CC_BLE_SET2_REG = calcap_result; - } - - switch (mode_ctrl) { - case IFF_MODE_CTRL_BLE: // BLE - RFCU->RF_IFF_CC_FTDF_SET1_REG = calcap_result; - RFCU->RF_IFF_CC_FTDF_SET2_REG = calcap_result; - break; - case IFF_MODE_CTRL_FTDF: // FTDF - RFCU->RF_IFF_CC_FTDF_SET1_REG = calcap_result; - RFCU->RF_IFF_CC_FTDF_SET2_REG = calcap_result; - break; - case IFF_MODE_CTRL_COMBO: // COMBO - if (rf_mode_ovr == IFF_MODE_OVR_FTDF) { - RFCU->RF_IFF_CC_FTDF_SET1_REG = calcap_result; - RFCU->RF_IFF_CC_FTDF_SET2_REG = calcap_result; - } - break; - } - return true; -} - -static bool hw_rf_iff_calibration(iff_mode_ctrl_e mode_ctrl) -{ - bool ret = false; - - ////////////////////////////////////////////////////////////// - /// Capacitance calibration for different modes - /// mode_ctrl=0 : Calibration in BLE mode, use offsetted values in FTDF - /// mode_ctrl=1 : Calibration in FTDF mode, use offsetted values in BLE - /// mode_ctrl=2 : Calibration done in BLE mode and FTDF mode - ////////////////////////////////////////////////////////////// - - - // Save the values of registers that will be changed in the function - uint16_t rf_cal_ctrl_reg_value_local = RFCU->RF_CAL_CTRL_REG; - uint16_t rf_overrule_reg_value_local = RFCU->RF_OVERRULE_REG; - uint16_t rf_enable_config0_reg_value = RFCU_POWER->RF_ENABLE_CONFIG0_REG; - uint16_t rf_enable_config1_reg_value = RFCU_POWER->RF_ENABLE_CONFIG1_REG; - uint16_t rf_enable_config2_reg_value = RFCU_POWER->RF_ENABLE_CONFIG2_REG; - uint16_t rf_enable_config46_ble_reg_value = RFCU_POWER->RF_ENABLE_CONFIG46_BLE_REG; - uint16_t rf_enable_config46_ftdf_reg_value = RFCU_POWER->RF_ENABLE_CONFIG46_FTDF_REG; - uint16_t rf_dc_offset_ctrl2_reg_value = DEM->RF_DC_OFFSET_CTRL2_REG; - - // Required setting for the DC-offset calibration - RFCU_POWER->RF_ENABLE_CONFIG0_REG = 0x0000; // Disable LNA_LDO - RFCU_POWER->RF_ENABLE_CONFIG1_REG = 0x0000; // Disable LNA_CORE - RFCU_POWER->RF_ENABLE_CONFIG2_REG = 0x0000; // Disable LNA_CGM - RFCU_POWER->RF_ENABLE_CONFIG46_BLE_REG = 0x0000; // Disable the DCF triggered Partial DCOC - RFCU_POWER->RF_ENABLE_CONFIG46_FTDF_REG = 0x0000; // Disable the DCF triggered Partial DCOC - REG_SETF(DEM, RF_DC_OFFSET_CTRL2_REG, DCPARCAL_EN, 0x0); - - - switch (mode_ctrl) { - case IFF_MODE_CTRL_BLE: // BLE - ret = iff_calib_internal(IFF_MODE_OVR_BLE, IFF_MODE_CTRL_BLE); - break; - case IFF_MODE_CTRL_FTDF: // FTDF - ret = iff_calib_internal(IFF_MODE_OVR_FTDF, IFF_MODE_CTRL_FTDF); - break; - case IFF_MODE_CTRL_COMBO: // COMBO - ret = iff_calib_internal(IFF_MODE_OVR_BLE, IFF_MODE_CTRL_COMBO); - if (ret) - ret = iff_calib_internal(IFF_MODE_OVR_FTDF, IFF_MODE_CTRL_COMBO); - break; - default: - /* should never reach this point */ - ASSERT_WARNING(0); - } - - if (!ret) - return false; - - // Restore the values of registers that were changed in the function - RFCU->RF_CAL_CTRL_REG = rf_cal_ctrl_reg_value_local; - RFCU->RF_OVERRULE_REG = rf_overrule_reg_value_local; - RFCU_POWER->RF_ENABLE_CONFIG0_REG = rf_enable_config0_reg_value; - RFCU_POWER->RF_ENABLE_CONFIG1_REG = rf_enable_config1_reg_value; - RFCU_POWER->RF_ENABLE_CONFIG2_REG = rf_enable_config2_reg_value; - RFCU_POWER->RF_ENABLE_CONFIG46_BLE_REG = rf_enable_config46_ble_reg_value; - RFCU_POWER->RF_ENABLE_CONFIG46_FTDF_REG = rf_enable_config46_ftdf_reg_value; - DEM->RF_DC_OFFSET_CTRL2_REG = rf_dc_offset_ctrl2_reg_value; - - // De-select the IF calcap to use the FSM value - REG_CLR_BIT(RFCU, RF_IFF_CTRL1_REG, IF_SELECT_FSM); - - return true; -} -#endif - -bool hw_rf_calibration(void) -{ - bool iff_result; - - GLOBAL_INT_DISABLE(); - hw_rf_dc_offset_calibration(); -#if dg_configBLACK_ORCA_IC_REV == BLACK_ORCA_IC_REV_A - iff_result = hw_rf_iff_calibration(); -#else -#if defined(CONFIG_USE_FTDF) && defined(CONFIG_USE_BLE) - iff_result = hw_rf_iff_calibration(0x2); -#elif defined(CONFIG_USE_BLE) - iff_result = hw_rf_iff_calibration(0x0); -#elif defined(CONFIG_USE_FTDF) - iff_result = hw_rf_iff_calibration(0x1); -#endif -#endif - if (iff_result) { -#ifdef CONFIG_USE_FTDF - hw_rf_modulation_gain_calibration(0); -#endif -#ifdef CONFIG_USE_BLE - hw_rf_modulation_gain_calibration(1); -#endif - } - GLOBAL_INT_RESTORE(); - - return iff_result; -} - -void hw_rf_request_on(bool mode_ble) -{ - /* First RF requester. Switch it on */ - if (rf_request == 0) { - if (rf_state == RF_ST_OFF) { - hw_rf_poweron(); - rf_state = RF_ST_ON; -#if dg_configCOEX_ENABLE_CONFIG == 1 - hw_coex_apply_config(); -#endif - } - } - - if (mode_ble) { - rf_request |= RF_REQUEST_BLE_ON; - } else { - rf_request |= RF_REQUEST_FTDF_ON; - } - -} - - -void hw_rf_request_off(bool mode_ble) -{ - if (mode_ble) { - rf_request &= ~RF_REQUEST_BLE_ON; - } else { - rf_request &= ~RF_REQUEST_FTDF_ON; - } - - /* If not already off or during recalibration... */ - if (rf_state == RF_ST_ON || rf_state == RF_ST_CONFIG) { - /* If not RF requesters remain, switch it off */ - if (rf_request == 0) { - /* If user pre-off cb returns true, don't shutdown */ - if (hw_rf_preoff_cb() == false) { - hw_rf_poweroff(); - rf_state = RF_ST_OFF; - } - } - } -} - - -bool hw_rf_start_calibration() -{ - bool iff_result; - if (rf_state == RF_ST_CONFIG) { - /* Call pre-calibration user cb */ - hw_rf_precalib_cb(); - - /* force RADIO_BUSY to BLE to 0 */ - REG_SETF(COEX, COEX_CTRL_REG, SEL_BLE_RADIO_BUSY, 1); - /* Ignore BLE/FTDF TX/RX_EN */ - REG_SET_BIT(COEX, COEX_CTRL_REG, IGNORE_BLE); - REG_SET_BIT(COEX, COEX_CTRL_REG, IGNORE_FTDF); - - /* Wait until DCFs have settled */ - while (REG_GETF(COEX, COEX_STAT_REG, COEX_RADIO_BUSY)); - - /* Perform DC offset calibration */ - hw_rf_dc_offset_calibration(); - - /* Perform IFF calibration */ -#if dg_configBLACK_ORCA_IC_REV == BLACK_ORCA_IC_REV_A - iff_result = hw_rf_iff_calibration(); -#else /* BLACK_ORCA_IC_REV_B */ -#if defined(CONFIG_USE_FTDF) && defined(CONFIG_USE_BLE) - iff_result = hw_rf_iff_calibration(0x2); -#elif defined(CONFIG_USE_BLE) - iff_result = hw_rf_iff_calibration(0x0); -#elif defined(CONFIG_USE_FTDF) - iff_result = hw_rf_iff_calibration(0x1); -#endif -#endif - - if (iff_result == false) { - return false; - } - - NVIC_EnableIRQ(RFCAL_IRQn); - -#if defined(CONFIG_USE_FTDF) && defined(CONFIG_USE_BLE) - /* Start the gain calibration, on ftdf mode */ - hw_rf_modulation_gain_calibration_start(0); - rf_state = RF_ST_WAIT_NEXT1; -#elif defined(CONFIG_USE_FTDF) - /* Start the gain calibration, on ftdf mode */ - hw_rf_modulation_gain_calibration_start(0); - rf_state = RF_ST_WAIT_NEXT2; -#elif defined(CONFIG_USE_BLE) - /* Start the gain calibration, on ble mode */ - hw_rf_modulation_gain_calibration_start(1); - rf_state = RF_ST_WAIT_NEXT2; -#endif - - } - - return true; -} - -void RFCAL_Handler(void) -{ - SEGGER_SYSTEMVIEW_ISR_ENTER(); - - uint32_t iser; - - /* Interrupts must be disabled. However, some callbacks actually - * use FreeRTOS critical sections. To overcome this problem. use - * ISER/ICER to enable/disable interrupts - */ - GLOBAL_INT_DISABLE(); - iser = NVIC->ISER[0];; - NVIC->ICER[0] = iser; - GLOBAL_INT_RESTORE(); - - switch (rf_state) { - case RF_ST_WAIT_NEXT1: - /* FTDF gain calib (boot) completed. Proceed with ble gain - * calib - */ - while (RFCU->RF_CAL_CTRL_REG & REG_MSK(RFCU, RF_CAL_CTRL_REG, SO_CAL)) {} - hw_rf_modulation_gain_calibration_end(); - - /* Make sure RFCAL IRQ will be enabled when interrupts are enabled */ - iser |= ((uint32_t)(1 << RFCAL_IRQn)); - - /* Start the gain calibration, on ble mode */ - hw_rf_modulation_gain_calibration_start(1); - - rf_state = RF_ST_WAIT_NEXT2; - break; - case RF_ST_WAIT_NEXT2: - /* BLE (or ftdf) gain calib (boot) completed. - */ - while (RFCU->RF_CAL_CTRL_REG & REG_MSK(RFCU, RF_CAL_CTRL_REG, SO_CAL)) {} - hw_rf_modulation_gain_calibration_end(); - - /* Make sure RFCAL IRQ will be disabled when interrupts are enabled */ - iser &= ~((uint32_t)(1 << RFCAL_IRQn)); - - /* Restore state to normal BLE/FTDF MAC operation */ - REG_CLR_BIT(COEX, COEX_CTRL_REG, IGNORE_BLE); - REG_CLR_BIT(COEX, COEX_CTRL_REG, IGNORE_FTDF); - REG_SETF(COEX, COEX_CTRL_REG, SEL_BLE_RADIO_BUSY, 0); - - /* Calibration complete. */ - /* Call post-calibration user cb */ - hw_rf_postcalib_cb(); - - /* Check if RF is still needed on, - * otherwise, switch it off - */ - if (rf_request == 0) { - hw_rf_poweroff(); - rf_state = RF_ST_OFF; - } else { - rf_state = RF_ST_CONFIG; - hw_rf_postconf_cb(); - } - break; - default: - break; - } - - /* Re-enable interrupts */ - NVIC->ISER[0] = iser; - - SEGGER_SYSTEMVIEW_ISR_EXIT(); -} - -void hw_rf_request_recommended_settings(void) -{ - if (rf_state == RF_ST_ON) { - hw_rf_apply_tcs_cb(); - hw_rf_set_recommended_settings(); - - /* Initialize TX Power LUTs */ -#if dg_configBLACK_ORCA_IC_REV == BLACK_ORCA_IC_REV_A - hw_rf_set_tx_power(rf_tx_power_luts.tx_power_ble); -#else -#ifdef CONFIG_USE_BLE - hw_rf_set_tx_power_ble(rf_tx_power_luts.tx_power_ble); -#endif -#ifdef CONFIG_USE_FTDF - hw_rf_set_tx_power_ftdf(rf_tx_power_luts.tx_power_ftdf); -#endif -#endif - - rf_state = RF_ST_CONFIG; - hw_rf_postconf_cb(); - } -} - -bool __attribute__((weak)) hw_rf_preoff_cb(void) -{ - return false; -} - -void hw_rf_start_continuous_wave(uint8_t mode, uint8_t ch) -{ - REG_SETF(RFCU,RF_OVERRULE_REG, TX_EN_OVR, 1); // disable TX overrule - REG_SETF(RFCU,RF_OVERRULE_REG, TX_EN_OVR, 0); // NORMAL TX - - REG_SETF(PLLDIG,RF_BMCW_REG, CN_SEL, 1); - REG_SETF(PLLDIG,RF_BMCW_REG, CN_WR, ch); - - REG_SETF(RFCU,RF_OVERRULE_REG, RF_MODE_OVR, mode); - REG_SETF(RFCU,RF_OVERRULE_REG, TX_EN_OVR, 2); // OVERRULE TX ENABLED -} - -void hw_rf_start_continuous_wave_rx(uint8_t mode, uint8_t ch) -{ - REG_SETF(RFCU,RF_OVERRULE_REG, RX_EN_OVR, 1); // disable RX overrule - REG_SETF(RFCU,RF_OVERRULE_REG, RX_EN_OVR, 0); // NORMAL RX - - REG_SETF(PLLDIG,RF_BMCW_REG, CN_SEL, 1); - REG_SETF(PLLDIG,RF_BMCW_REG, CN_WR, ch); - - REG_SETF(RFCU,RF_OVERRULE_REG, RF_MODE_OVR, mode); // BLE MODE - REG_SETF(RFCU,RF_OVERRULE_REG, RX_EN_OVR, 2); // OVERRULE RX ENABLED -} - -void hw_rf_stop_continuous_wave(void) -{ - REG_SETF(PLLDIG,RF_BMCW_REG, CN_SEL, 0); - REG_SETF(PLLDIG,RF_BMCW_REG, CN_WR, 0); - - REG_SETF(RFCU,RF_OVERRULE_REG, TX_EN_OVR, 1); // disable TX overrule - REG_SETF(RFCU,RF_OVERRULE_REG, TX_EN_OVR, 0); // NORMAL TX - REG_SETF(RFCU,RF_OVERRULE_REG, RX_EN_OVR, 1); // disable RX overrule - REG_SETF(RFCU,RF_OVERRULE_REG, RX_EN_OVR, 0); // NORMAL RX - REG_SETF(RFCU,RF_OVERRULE_REG, RF_MODE_OVR, 0); // NORMAL RF mode, so disable BLE mode -} - -#if dg_configBLACK_ORCA_IC_REV == BLACK_ORCA_IC_REV_A -void hw_rf_set_tx_power(HW_RF_PWR_LUT_SETTING lut) -{ - RFCU->RF_TX_PWR_REG = lut; - rf_tx_power_luts.tx_power_ble = lut; -} -#else - -#ifdef CONFIG_USE_BLE -void hw_rf_set_tx_power_ble(HW_RF_PWR_LUT_SETTING lut) -{ - RFCU->RF_TX_PWR_BLE_REG = lut; - rf_tx_power_luts.tx_power_ble = lut; -} -#endif - -#ifdef CONFIG_USE_FTDF -void hw_rf_set_tx_power_ftdf(HW_RF_PWR_LUT_SETTING lut) -{ - RFCU->RF_TX_PWR_FTDF_REG = lut; - rf_tx_power_luts.tx_power_ftdf = lut; -} -#endif - -#endif /* dg_configBLACK_ORCA_IC_REV == BLACK_ORCA_IC_REV_A */ -#endif /* dg_configUSE_HW_RF */ -/** - * \} - * \} - * \} - */ diff --git a/third_party/dialog/DialogSDK/bsp/peripherals/src/hw_timer0.c b/third_party/dialog/DialogSDK/bsp/peripherals/src/hw_timer0.c deleted file mode 100644 index 9bac6479b..000000000 --- a/third_party/dialog/DialogSDK/bsp/peripherals/src/hw_timer0.c +++ /dev/null @@ -1,122 +0,0 @@ -/** - * \addtogroup BSP - * \{ - * \addtogroup DEVICES - * \{ - * \addtogroup Timer0 - * \{ - */ - -/** - **************************************************************************************** - * - * @file hw_timer0.c - * - * @brief Implementation of the Timer0 Low Level Driver. - * - * Copyright (c) 2016, Dialog Semiconductor - * All rights reserved. - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. Neither the name of the copyright holder nor the names of its contributors - * may be used to endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, - * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, - * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED - * OF THE POSSIBILITY OF SUCH DAMAGE. - * - * - **************************************************************************************** - */ - -#if dg_configUSE_HW_TIMER0 - - -#include -#include -#include - -#if (dg_configSYSTEMVIEW) -# include "SEGGER_SYSVIEW_FreeRTOS.h" -#else -# define SEGGER_SYSTEMVIEW_ISR_ENTER() -# define SEGGER_SYSTEMVIEW_ISR_EXIT() -#endif - -static hw_timer0_interrupt_cb intr_cb; - -void hw_timer0_init(const timer0_config *cfg) -{ - /* Enable clock for peripheral */ - GLOBAL_INT_DISABLE(); - uint32_t clk_tmr_reg = CRG_TOP->CLK_TMR_REG; - clk_tmr_reg &= ~CRG_TOP_CLK_TMR_REG_TMR0_DIV_Msk; - clk_tmr_reg &= ~CRG_TOP_CLK_TMR_REG_TMR0_CLK_SEL_Msk; - clk_tmr_reg |= CRG_TOP_CLK_TMR_REG_TMR0_ENABLE_Msk; - CRG_TOP->CLK_TMR_REG = clk_tmr_reg ; - GLOBAL_INT_RESTORE(); - - /* Reset control register, i.e. disable timer */ - GP_TIMERS->TIMER0_CTRL_REG = 0x0; - - /* Disable NVIC interrupt */ - NVIC_DisableIRQ(SWTIM0_IRQn); - - intr_cb = NULL; - - hw_timer0_configure(cfg); -} - -void hw_timer0_configure(const timer0_config *cfg) -{ - if (cfg) { - hw_timer0_set_clock_source(cfg->clk_src); - hw_timer0_set_fast_clock_div(cfg->fast_clk_div); - hw_timer0_set_on_clock_div(cfg->on_clock_div); - hw_timer0_set_on_reload(cfg->on_reload); - hw_timer0_set_t0_reload(cfg->t0_reload_m, cfg->t0_reload_n); - } -} - -void hw_timer0_register_int(hw_timer0_interrupt_cb handler) -{ - intr_cb = handler; - NVIC_EnableIRQ(SWTIM0_IRQn); -} - -void hw_timer0_unregister_int(void) -{ - NVIC_DisableIRQ(SWTIM0_IRQn); - intr_cb = NULL; -} - -void SWTIM0_Handler(void) -{ - SEGGER_SYSTEMVIEW_ISR_ENTER(); - - if (intr_cb) { - intr_cb(); - } - - SEGGER_SYSTEMVIEW_ISR_EXIT(); -} - -#endif /* dg_configUSE_HW_TIMER0 */ -/** - * \} - * \} - * \} - */ diff --git a/third_party/dialog/DialogSDK/bsp/peripherals/src/hw_trng.c b/third_party/dialog/DialogSDK/bsp/peripherals/src/hw_trng.c deleted file mode 100644 index a8510eede..000000000 --- a/third_party/dialog/DialogSDK/bsp/peripherals/src/hw_trng.c +++ /dev/null @@ -1,125 +0,0 @@ -/** - **************************************************************************************** - * - * @file hw_trng.c - * - * @brief Implementation of the True Random Number Generator Low Level Driver. - * - * Copyright (c) 2016, Dialog Semiconductor - * All rights reserved. - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. Neither the name of the copyright holder nor the names of its contributors - * may be used to endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, - * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, - * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED - * OF THE POSSIBILITY OF SUCH DAMAGE. - * - * - **************************************************************************************** - */ - -#if dg_configUSE_HW_TRNG - -#include - -#if (dg_configSYSTEMVIEW) -# include "SEGGER_SYSVIEW_FreeRTOS.h" -#else -# define SEGGER_SYSTEMVIEW_ISR_ENTER() -# define SEGGER_SYSTEMVIEW_ISR_EXIT() -#endif - -#define HW_TRNG_FIFO_DEPTH (32) - -static hw_trng_cb trng_cb; - -void hw_trng_disable_clk(void) -{ - GLOBAL_INT_DISABLE(); - REG_CLR_BIT(CRG_TOP, CLK_AMBA_REG, TRNG_CLK_ENABLE); - GLOBAL_INT_RESTORE(); -} - -void hw_trng_clear_pending(void) -{ - uint32_t dummy __attribute__((unused)); - /* read TRNG_FIFOLVL_REG to clear level-sensitive source. */ - dummy = TRNG->TRNG_FIFOLVL_REG; - NVIC_ClearPendingIRQ(TRNG_IRQn); -} - -void hw_trng_enable(hw_trng_cb callback) -{ - if (callback != NULL) { - trng_cb = callback; - hw_trng_clear_pending(); - NVIC_EnableIRQ(TRNG_IRQn); - } - - GLOBAL_INT_DISABLE(); - REG_SET_BIT(CRG_TOP, CLK_AMBA_REG, TRNG_CLK_ENABLE); - GLOBAL_INT_RESTORE(); - REG_SET_BIT(TRNG, TRNG_CTRL_REG, TRNG_ENABLE); -} - -void hw_trng_get_numbers(uint32_t* buffer, uint8_t size) -{ - if (size > HW_TRNG_FIFO_DEPTH) - size = HW_TRNG_FIFO_DEPTH; - - for (int i = 0; i < size ; i++) { - buffer[i] = hw_trng_get_number(); - } -} - -__RETAINED_CODE uint8_t hw_trng_get_fifo_level(void) -{ - return (TRNG->TRNG_FIFOLVL_REG) & (REG_MSK(TRNG, TRNG_FIFOLVL_REG, TRNG_FIFOLVL) | - REG_MSK(TRNG, TRNG_FIFOLVL_REG, TRNG_FIFOFULL)); -} - -void hw_trng_disable_interrupt(void) -{ - NVIC_DisableIRQ(TRNG_IRQn); - trng_cb = NULL; -} - -void hw_trng_disable(void) -{ - hw_trng_stop(); - hw_trng_disable_interrupt(); - hw_trng_clear_pending(); - hw_trng_disable_clk(); -} - -void TRNG_Handler(void) -{ - uint32_t dummy __attribute__((unused)); - - SEGGER_SYSTEMVIEW_ISR_ENTER(); - - if (trng_cb != NULL) - trng_cb(); - - /* read TRNG_FIFOLVL_REG to clear level-sensitive source. */ - dummy = TRNG->TRNG_FIFOLVL_REG; - - SEGGER_SYSTEMVIEW_ISR_EXIT(); -} - -#endif /* dg_configUSE_HW_TRNG */ diff --git a/third_party/dialog/DialogSDK/bsp/peripherals/src/hw_uart.c b/third_party/dialog/DialogSDK/bsp/peripherals/src/hw_uart.c deleted file mode 100644 index b08bded9a..000000000 --- a/third_party/dialog/DialogSDK/bsp/peripherals/src/hw_uart.c +++ /dev/null @@ -1,1464 +0,0 @@ -/** - * \addtogroup BSP - * \{ - * \addtogroup DEVICES - * \{ - * \addtogroup UART - * \{ - */ - -/** - **************************************************************************************** - * - * @file hw_uart.c - * - * @brief Implementation of the UART Low Level Driver. - * - * Copyright (c) 2016, Dialog Semiconductor - * All rights reserved. - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. Neither the name of the copyright holder nor the names of its contributors - * may be used to endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, - * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, - * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED - * OF THE POSSIBILITY OF SUCH DAMAGE. - * - * - **************************************************************************************** - */ - -#if dg_configUSE_HW_UART - - -#include -#include -#include -#include - -#if (dg_configSYSTEMVIEW) -# include "SEGGER_SYSVIEW_FreeRTOS.h" -#else -# define SEGGER_SYSTEMVIEW_ISR_ENTER() -# define SEGGER_SYSTEMVIEW_ISR_EXIT() -#endif - -#if (dg_configUART1_SOFTWARE_FIFO_SIZE && dg_configUART_SOFTWARE_FIFO) -#if dg_configUART_RX_CIRCULAR_DMA && (dg_configUART1_RX_CIRCULAR_DMA_BUF_SIZE > 0) -#error UART1 can not be configured to use software FIFO and circular DMA FIFO at the same time -#endif -__RETAINED static uint8_t uart1_sw_fifo[dg_configUART1_SOFTWARE_FIFO_SIZE]; -#else -#define uart1_sw_fifo (NULL) -#endif - -#if (dg_configUART2_SOFTWARE_FIFO_SIZE && dg_configUART_SOFTWARE_FIFO) -#if dg_configUART_RX_CIRCULAR_DMA && (dg_configUART2_RX_CIRCULAR_DMA_BUF_SIZE > 0) -#error UART2 can not be configured to use software FIFO and circular DMA FIFO at the same time -#endif -__RETAINED static uint8_t uart2_sw_fifo[dg_configUART2_SOFTWARE_FIFO_SIZE]; -#else -#define uart2_sw_fifo (NULL) -#endif - -#if dg_configUART1_SOFTWARE_FIFO_SIZE > 255 || dg_configUART2_SOFTWARE_FIFO_SIZE > 255 -typedef uint16_t fifo_size_t; -#else -typedef uint8_t fifo_size_t; -#endif - -#if dg_configUART1_SOFTWARE_FIFO_SIZE > 256 || dg_configUART2_SOFTWARE_FIFO_SIZE > 256 -typedef uint16_t fifo_ptr_t; -#else -typedef uint8_t fifo_ptr_t; -#endif - -#if dg_configUART_RX_CIRCULAR_DMA - -#if !HW_UART_USE_DMA_SUPPORT -# error "dg_configUART_RX_CIRCULAR_DMA requires HW_UART_USE_DMA_SUPPORT to be enabled!" -#endif - -#if dg_configUART1_RX_CIRCULAR_DMA_BUF_SIZE > 0 -__RETAINED static uint8_t uart1_rx_dma_buf[dg_configUART1_RX_CIRCULAR_DMA_BUF_SIZE]; -#else -#define uart1_rx_dma_buf (NULL) -#endif - -#if dg_configUART2_RX_CIRCULAR_DMA_BUF_SIZE > 0 -__RETAINED static uint8_t uart2_rx_dma_buf[dg_configUART2_RX_CIRCULAR_DMA_BUF_SIZE]; -#else -#define uart2_rx_dma_buf (NULL) -#endif - -#endif /* dg_configUART_RX_CIRCULAR_DMA */ - -typedef struct { -#ifdef HW_UART_ENABLE_USER_ISR - hw_uart_interrupt_isr user_isr; -#endif - const uint8_t *tx_buffer; - void *tx_user_data; - hw_uart_tx_callback tx_cb; - uint16_t tx_len; - uint16_t tx_ix; - - void *rx_user_data; - uint8_t *rx_buffer; - hw_uart_rx_callback rx_cb; - uint16_t rx_len; - uint16_t rx_ix; - - uint8_t tx_fifo_on:1; - uint8_t rx_fifo_on:1; - uint8_t tx_fifo_level:2; - uint8_t rx_fifo_level:2; -#if dg_configUART_SOFTWARE_FIFO - uint8_t *rx_soft_fifo; - fifo_size_t rx_soft_fifo_size; - fifo_ptr_t rx_soft_fifo_rd_ptr; - fifo_ptr_t rx_soft_fifo_wr_ptr; -#endif -#if HW_UART_USE_DMA_SUPPORT - uint8_t use_dma:1; - DMA_setup tx_dma; - DMA_setup rx_dma; -#if dg_configUART_RX_CIRCULAR_DMA - bool rx_dma_active; - uint8_t *rx_dma_buf; - uint16_t rx_dma_buf_size; - uint16_t rx_dma_head; -#endif /* dg_configUART_RX_CIRCULAR_DMA */ -#endif /* HW_UART_USE_DMA_SUPPORT */ -} UART_Data; - -__RETAINED_RW static UART_Data uart_data[2] = { - { -#if dg_configUART_SOFTWARE_FIFO - .rx_soft_fifo = uart1_sw_fifo, - .rx_soft_fifo_size = dg_configUART1_SOFTWARE_FIFO_SIZE, -#endif -#if dg_configUART_RX_CIRCULAR_DMA - .rx_dma_buf = uart1_rx_dma_buf, - .rx_dma_buf_size = dg_configUART1_RX_CIRCULAR_DMA_BUF_SIZE, -#endif - }, - { -#if dg_configUART_SOFTWARE_FIFO - .rx_soft_fifo = uart2_sw_fifo, - .rx_soft_fifo_size = dg_configUART2_SOFTWARE_FIFO_SIZE, -#endif -#if dg_configUART_RX_CIRCULAR_DMA - .rx_dma_buf = uart2_rx_dma_buf, - .rx_dma_buf_size = dg_configUART2_RX_CIRCULAR_DMA_BUF_SIZE, -#endif - }, -}; - -#define UART_INT(id) ((id) == HW_UART1 ? (UART_IRQn) : (UART2_IRQn)) -#define UARTIX(id) ((id) == HW_UART1 ? 0 : 1) -#define UARTDATA(id) (&uart_data[UARTIX(id)]) -#define UARTID(ud) ((ud) == uart_data ? HW_UART1 : HW_UART2) - -#ifdef HW_UART_ENABLE_USER_ISR -void hw_uart_set_isr(HW_UART_ID uart, hw_uart_interrupt_isr isr) -{ - uart_data[UARTIX(uart)].user_isr = isr; -} -#endif - -//===================== Read/Write functions =================================== - -uint8_t hw_uart_read(HW_UART_ID uart) -{ - // Wait until received data are available - while (hw_uart_read_buf_empty(uart)); - - // Read element from the receive FIFO - return UBA(uart)->UART2_RBR_THR_DLL_REG; -} - -void hw_uart_write(HW_UART_ID uart, uint8_t data) -{ - // Wait if Transmit Holding Register is full - while (hw_uart_write_buf_full(uart)); - - // Write data to the transmit FIFO - UBA(uart)->UART2_RBR_THR_DLL_REG = data; -} - -void hw_uart_write_buffer(HW_UART_ID uart, const void *data, uint16_t len) -{ - const uint8_t *p = data; - - while (len > 0) { - hw_uart_write(uart, *p++); - len--; - } -} - -void hw_uart_send(HW_UART_ID uart, const void *data, uint16_t len, hw_uart_tx_callback cb, - void *user_data) -{ - UART_Data *ud = &uart_data[UARTIX(uart)]; - - if (cb == NULL) { - hw_uart_write_buffer(uart, data, len); - ud->tx_ix = 0; - ud->tx_len = 0; - return; - } - ud->tx_buffer = data; - ud->tx_user_data = user_data; - ud->tx_len = len; - ud->tx_ix = 0; - ud->tx_cb = cb; - -#if HW_UART_USE_DMA_SUPPORT - if (ud->tx_dma.channel_number != HW_DMA_CHANNEL_INVALID && len > 1) { - ud->tx_dma.src_address = (uint32) data; - ud->tx_dma.length = len; - // DMA requested - hw_uart_clear_dma_request(uart); - hw_dma_channel_initialization(&ud->tx_dma); - hw_dma_channel_enable(ud->tx_dma.channel_number, HW_DMA_STATE_ENABLED); - return; - } -#endif - // Interrupt driven - NVIC_DisableIRQ(UART_INT(uart)); - // Enable transmit interrupts - uint16_t ier_dlh_reg = UBA(uart)->UART2_IER_DLH_REG; - ier_dlh_reg |= ((1 << UART_UART_IER_DLH_REG_ETBEI_dlh1_Pos) | (1 << UART_UART_IER_DLH_REG_PTIME_dlh7_Pos)); - UBA(uart)->UART2_IER_DLH_REG = ier_dlh_reg; - - NVIC_EnableIRQ(UART_INT(uart)); -} - -static inline void hw_uart_enable_rx_int(HW_UART_ID uart, bool enable) -{ - NVIC_DisableIRQ(UART_INT(uart)); - HW_UART_REG_SETF(uart, IER_DLH, ERBFI_dlh0, enable); - NVIC_EnableIRQ(UART_INT(uart)); -} - -#if dg_configUART_SOFTWARE_FIFO - -#define SOFTWARE_FIFO_PRESENT(ud) ((ud)->rx_soft_fifo != NULL) - -/* - * Copy bytes from software FIFO to user provided buffer. - * This function allows software FIFO interrupts to read more data while copy takes place. - * - * Function returns true if all requested data is already in user buffer. - */ -static bool hw_uart_drain_rx(HW_UART_ID uart, UART_Data *ud, int len) -{ - /* - * This function is called with RX interrupt disabled. - * - * Get current software FIFO pointers before enabling interrupt again. - * ud->rx_len is still set to 0, so interrupt will not try to copy data to - * application buffer till all data from software FIFO is drained to user buffer. - */ - fifo_ptr_t rd_ptr = ud->rx_soft_fifo_rd_ptr; - fifo_ptr_t wr_ptr = ud->rx_soft_fifo_wr_ptr; - int idx = 0; - - /* - * ud->rx_ix is 0, set ud->rx_len to 0 to prevent interrupt from using it - * before all data from software FIFO is moved to application buffer. - */ - ud->rx_len = 0; - - hw_uart_enable_rx_int(uart, true); - - while (idx < len) { - - if (wr_ptr == rd_ptr) { - /* - * No more data in software FIFO, at least from state before - * interrupt was enabled. - * Disable interrupt and update read pointer to reflect position - * of already copied data. - */ - hw_uart_enable_rx_int(uart, false); - ud->rx_soft_fifo_rd_ptr = rd_ptr; - - /* - * Check if write pointer moved, if so interrupt put some more data - * in buffer. Remember current write position and try again with - * interrupts enabled. - */ - if (ud->rx_soft_fifo_wr_ptr != wr_ptr) { - wr_ptr = ud->rx_soft_fifo_wr_ptr; - hw_uart_enable_rx_int(uart, true); - continue; - } - - /* - * All was copied from software FIFO. - * Setup user transaction ix and len so when interrupts are enabled - * again (not in this function) interrupt or DMA can continue. - */ - ud->rx_ix = idx; - ud->rx_len = len; - - return false; - } - - /* Copy from software FIFO to user provided buffer */ - ud->rx_buffer[idx++] = ud->rx_soft_fifo[rd_ptr++]; - - if (rd_ptr >= ud->rx_soft_fifo_size) { - rd_ptr = 0; - } - } - - /* - * User buffer is filled, block interrupt so end of transmission callback will not be - * called from interrupt. - */ - hw_uart_enable_rx_int(uart, false); - ud->rx_soft_fifo_rd_ptr = rd_ptr; - ud->rx_len = len; - ud->rx_ix = len; - - return true; -} - -void hw_uart_read_buffer(HW_UART_ID uart, void *data, uint16_t len) -{ - UART_Data *ud = UARTDATA(uart); - uint8_t *p = data; - - /* - * Disable RX interrupt before draining software FIFO. - */ - hw_uart_enable_rx_int(uart, false); - if (SOFTWARE_FIFO_PRESENT(ud)) { - /* - * Drain uses ud fields so setup them accordingly. - */ - ud->rx_buffer = data; - - hw_uart_drain_rx(uart, ud, len); - len -= ud->rx_ix; - p += ud->rx_ix; - } - /* - * Read all remaining bytes with RX interrupt still disabled. - */ - while (len > 0) { - *p++ = hw_uart_read(uart); - len--; - } - ud->rx_ix = 0; - ud->rx_len = 0; - hw_uart_enable_rx_int(uart, SOFTWARE_FIFO_PRESENT(ud)); -} - -void hw_uart_set_soft_fifo(HW_UART_ID uart, uint8_t *buf, uint8_t size) -{ - UART_Data *ud = UARTDATA(uart); - - hw_uart_enable_rx_int(uart, false); - - ud->rx_soft_fifo = buf; - ud->rx_soft_fifo_size = size; - ud->rx_soft_fifo_rd_ptr = 0; - ud->rx_soft_fifo_wr_ptr = 0; - - hw_uart_enable_rx_int(uart, buf != NULL); -} - -#else - -#define SOFTWARE_FIFO_PRESENT(ud) false - -void hw_uart_read_buffer(HW_UART_ID uart, void *data, uint16_t len) -{ - uint8_t *p = data; - - while (len > 0) { - *p++ = hw_uart_read(uart); - len--; - } -} -#endif - -static void hw_uart_fire_callback(UART_Data *ud) -{ - hw_uart_rx_callback cb = ud->rx_cb; - ud->rx_cb = NULL; - /* Just finished receiving, disable RX interrupts unless software FIFO is enabled */ - hw_uart_enable_rx_int(UARTID(ud), SOFTWARE_FIFO_PRESENT(ud)); - if (cb) { - cb(ud->rx_user_data, ud->rx_len); - } -} - -void hw_uart_receive(HW_UART_ID uart, void *data, uint16_t len, hw_uart_rx_callback cb, - void *user_data) -{ - UART_Data *ud = UARTDATA(uart); - - if (cb == NULL) { - hw_uart_read_buffer(uart, data, len); - ud->rx_ix = 0; - ud->rx_len = 0; - return; - } - - ud->rx_buffer = data; - ud->rx_user_data = user_data; - hw_uart_enable_rx_int(uart, false); - ud->rx_len = len; - ud->rx_ix = 0; - ud->rx_cb = cb; -#if dg_configUART_SOFTWARE_FIFO - if (hw_uart_drain_rx(uart, ud, len)) { - hw_uart_fire_callback(ud); - return; - } -#endif - -#if dg_configUART_RX_CIRCULAR_DMA - if (ud->rx_dma_buf_size > 0) { - ASSERT_ERROR(len < ud->rx_dma_buf_size); - - uint16_t new_int, cur_idx; - bool data_ready = false; - - ASSERT_ERROR(ud->rx_dma_active == false); - - /* Calculate index of end of requested data (do not wrap it!) */ - new_int = ud->rx_dma_head + ud->rx_len - 1; - - /* Freeze DMA so it does not move pointers while we try to update them */ - hw_dma_freeze(); - - cur_idx = hw_dma_transfered_bytes(ud->rx_dma.channel_number); - - /* cur_idx is lower than rx_head only if it wrapped-around - fix it */ - if (cur_idx < ud->rx_dma_head) { - cur_idx += ud->rx_dma_buf_size; - } - - /* - * If DMA has not read past the calculated index, we can set it and just wait for an - * interrupt. In other case, data are ready immediately in buffer. - */ - if (cur_idx <= new_int) { - new_int %= ud->rx_dma_buf_size; - hw_dma_channel_update_int_ix(ud->rx_dma.channel_number, new_int); - ud->rx_dma_active = true; - } else { - hw_dma_channel_update_int_ix(ud->rx_dma.channel_number, cur_idx - 1); - data_ready = true; - } - - /* Unfreeze DMA now, it can start reading */ - hw_dma_unfreeze(); - - /* Fire callback immediately if data already available in buffer */ - if (data_ready) { - hw_uart_fire_callback(ud); - } - - return; - } -#endif - -#if HW_UART_USE_DMA_SUPPORT - if (ud->rx_dma.channel_number != HW_DMA_CHANNEL_INVALID && (ud->rx_len - ud->rx_ix > 1)) { - /* rx_ix could already be changed by hw_uart_drain_rx() */ - ud->rx_dma.dest_address = (uint32) data + ud->rx_ix; - ud->rx_dma.length = ud->rx_len - ud->rx_ix; - hw_uart_clear_dma_request(uart); - /* Prepare and start DMA */ - hw_dma_channel_initialization(&ud->rx_dma); - hw_dma_channel_enable(ud->rx_dma.channel_number, HW_DMA_STATE_ENABLED); - return; - } -#endif - /* Interrupt driven */ - hw_uart_enable_rx_int(uart, true); -} - -static void hw_uart_irq_stop_receive(HW_UART_ID uart) -{ - UART_Data *ud = &uart_data[UARTIX(uart)]; - - // Disable RX interrupt - hw_uart_enable_rx_int(uart, false); - - ud->rx_len = ud->rx_ix; - - hw_uart_fire_callback(ud); -} - -#if dg_configUART_RX_CIRCULAR_DMA -static void hw_uart_copy_dma_rx_to_user_buffer(HW_UART_ID uart) -{ - UART_Data *ud = &uart_data[UARTIX(uart)]; - - uint16_t cur_idx; - uint16_t to_copy = 0; - hw_uart_rx_callback cb; - - ud->rx_dma_active = false; - cb = ud->rx_cb; - - if (cb) { - ud->rx_cb = NULL; - /* - * User callback was not fired, since rx_dma_active is false it will not - * fire even if requested number of bytes was received when abort was initiated. - */ - cur_idx = hw_dma_transfered_bytes(ud->rx_dma.channel_number); - - if (ud->rx_ix < ud->rx_len) { - if (cur_idx < ud->rx_dma_head) { - cur_idx += ud->rx_dma_buf_size; - } - to_copy = cur_idx - ud->rx_dma_head; - if (to_copy >= ud->rx_len - ud->rx_ix) { - to_copy = ud->rx_len - ud->rx_ix; - } - } - } else { - /* - * Callback already fired, circular buffer holds enough data. - */ - to_copy = ud->rx_len - ud->rx_ix; - } - - hw_uart_copy_rx_circular_dma_buffer(uart, ud->rx_buffer + ud->rx_ix, to_copy); - ud->rx_ix += to_copy; - ud->rx_len = ud->rx_ix; - - if (cb) { - cb(ud->rx_user_data, ud->rx_len); - } -} -#endif - -uint16_t hw_uart_abort_receive(HW_UART_ID uart) -{ - UART_Data *ud = &uart_data[UARTIX(uart)]; - -#if HW_UART_USE_DMA_SUPPORT - if (ud->rx_dma.channel_number != HW_DMA_CHANNEL_INVALID) { -#if dg_configUART_RX_CIRCULAR_DMA - if (ud->rx_dma_buf_size > 0) { - hw_uart_copy_dma_rx_to_user_buffer(uart); - return ud->rx_ix; - } -#else - /* No DMA circular buffer, stop DMA */ - hw_dma_channel_stop(ud->rx_dma.channel_number); -#endif - } - else -#endif - hw_uart_irq_stop_receive(uart); - - return ud->rx_ix; -} - -uint16_t hw_uart_peek_received(HW_UART_ID uart) -{ - UART_Data *ud = &uart_data[UARTIX(uart)]; - -#if HW_UART_USE_DMA_SUPPORT - if (ud->rx_dma.channel_number != HW_DMA_CHANNEL_INVALID) - ud->rx_ix = hw_dma_transfered_bytes(ud->rx_dma.channel_number); -#endif - return ud->rx_ix; -} - -//============== Interrupt handling ============================================ - -static inline void hw_uart_tx_isr(HW_UART_ID uart) -{ - UART_Data *ud = UARTDATA(uart); - - while (ud->tx_ix < ud->tx_len) { - if (ud->tx_fifo_on) { - if (!hw_uart_transmit_fifo_not_full(uart)) { - break; - } - } else if (!hw_uart_thr_empty_getf(uart)) { - break; - } - hw_uart_txdata_setf(uart, ud->tx_buffer[ud->tx_ix++]); - } - // Everything sent? - if (ud->tx_ix >= ud->tx_len) { - hw_uart_tx_callback cb = ud->tx_cb; - // Disable TX interrupts - // They can be re-enabled in user callback - uint16_t ier_dlh_reg = UBA(uart)->UART2_IER_DLH_REG; - ier_dlh_reg &= ~((1 << UART_UART_IER_DLH_REG_ETBEI_dlh1_Pos) | (1 << UART_UART_IER_DLH_REG_PTIME_dlh7_Pos)); - UBA(uart)->UART2_IER_DLH_REG = ier_dlh_reg; - ud->tx_cb = NULL; - if (cb) { - cb(ud->tx_user_data, ud->tx_len); - } - } -} - -static inline void hw_uart_rx_isr(HW_UART_ID uart) -{ - UART_Data *ud = UARTDATA(uart); - - if (SOFTWARE_FIFO_PRESENT(ud)) { -#if dg_configUART_SOFTWARE_FIFO - for (;;) { - fifo_ptr_t wr_ptr = ud->rx_soft_fifo_wr_ptr + 1; - if (wr_ptr >= ud->rx_soft_fifo_size) { - wr_ptr = 0; - } - if (wr_ptr == ud->rx_soft_fifo_rd_ptr) { - /* Software FIFO full, disable interrupt since no one is reading */ - hw_uart_enable_rx_int(uart, false); - return; - } - if (!hw_uart_is_data_ready(uart)) { - break; - } - ud->rx_soft_fifo[ud->rx_soft_fifo_wr_ptr] = hw_uart_rxdata_getf(uart); - - /* - * Application read is in progress. Copy data from software FIFO to - * user provided buffer. - */ - if (ud->rx_ix < ud->rx_len) { - ud->rx_buffer[ud->rx_ix++] = ud->rx_soft_fifo[ud->rx_soft_fifo_wr_ptr]; - /* - * When application read is in progress, rx_ix < rx_len - * This interrupt is enabled only if all data was already copied from - * FIFO to user buffer. It is safe to modify rx_soft_fifo_rd_ptr. - */ - ud->rx_soft_fifo_rd_ptr = wr_ptr; - } - - ud->rx_soft_fifo_wr_ptr = wr_ptr; - } -#endif - } else { - while (ud->rx_ix < ud->rx_len) { - if (hw_uart_is_data_ready(uart)) { - ud->rx_buffer[ud->rx_ix++] = hw_uart_rxdata_getf(uart); - } else { - break; - } - } - } - - // Everything read? - if (ud->rx_len > 0 && ud->rx_ix >= ud->rx_len) { - // Disable RX interrupts, fire callback if present - hw_uart_irq_stop_receive(uart); - } - -} - -static inline void hw_uart_rx_timeout_isr(HW_UART_ID uart) -{ - UART_Data *ud = UARTDATA(uart); - - hw_uart_rx_isr(uart); - - /* - * Not everything was received yet, disable interrupt anyway since - * some data was received. - */ - if (ud->rx_ix > 0 && ud->rx_ix < ud->rx_len) { - // Disable RX interrupts fire callback if present - hw_uart_irq_stop_receive(uart); - } -} - -void UART_Interrupt_Handler(HW_UART_ID uart) -{ - HW_UART_INT int_id; - - for (;;) { - int_id = hw_uart_get_interrupt_id(uart); - switch (int_id) { - case HW_UART_INT_TIMEOUT: - hw_uart_rx_timeout_isr(uart); - break; - case HW_UART_INT_MODEM_STAT: - break; - case HW_UART_INT_NO_INT_PEND: - return; - break; - case HW_UART_INT_THR_EMPTY: - hw_uart_tx_isr(uart); - break; - case HW_UART_INT_RECEIVED_AVAILABLE: - hw_uart_rx_isr(uart); - break; - case HW_UART_INT_RECEIVE_LINE_STAT: - break; - case HW_UART_INT_BUSY_DETECTED: -#ifdef CONFIG_UART_IGNORE_BUSY_DETECT - hw_uart_transmit_fifo_empty(uart); -#else - /* - * Stop here means that timing rules for access divisor latch were not - * followed. See description of register RBR_THR_DLL. - */ - __BKPT(0); -#endif - break; - } - } -} - -/** - * \brief HW_UART1 Interrupt Handler - * - */ -void UART_Handler(void) -{ - SEGGER_SYSTEMVIEW_ISR_ENTER(); - -#ifdef HW_UART_ENABLE_USER_ISR - if (uart_data[UARTIX(HW_UART1)].user_isr) { - uart_data[UARTIX(HW_UART1)].user_isr(); - } else { -#endif - UART_Interrupt_Handler(HW_UART1); -#ifdef HW_UART_ENABLE_USER_ISR - } -#endif - - SEGGER_SYSTEMVIEW_ISR_EXIT(); -} - -/** - * \brief UART2 Interrupt Handler - * - */ -void UART2_Handler(void) -{ - SEGGER_SYSTEMVIEW_ISR_ENTER(); - -#ifdef HW_UART_ENABLE_USER_ISR - if (uart_data[UARTIX(HW_UART2)].user_isr) { - uart_data[UARTIX(HW_UART2)].user_isr(); - } else { -#endif - UART_Interrupt_Handler(HW_UART2); -#ifdef HW_UART_ENABLE_USER_ISR - } -#endif - - SEGGER_SYSTEMVIEW_ISR_EXIT(); -} - -//==================== Configuration functions ================================= - -HW_UART_BAUDRATE hw_uart_baudrate_get(HW_UART_ID uart) -{ - uint32_t baud_rate; - - // Set Divisor Latch Access Bit in LCR register to access DLL & DLH registers - HW_UART_REG_SETF(uart, LCR, UART_DLAB, 1); - // Read baud rate low byte from DLL register - baud_rate = (0xFF & UBA(uart)->UART2_RBR_THR_DLL_REG) << 8; - // Read baud rate high byte from DLH register - baud_rate += (0xFF & UBA(uart)->UART2_IER_DLH_REG) << 16; - // Read baud rate fraction byte from DLF register - baud_rate += 0xFF & UBA(uart)->UART2_DLF_REG; - // Reset Divisor Latch Access Bit in Line Control Register - HW_UART_REG_SETF(uart, LCR, UART_DLAB, 0); - - return (HW_UART_BAUDRATE) baud_rate; -} - -void hw_uart_baudrate_set(HW_UART_ID uart, HW_UART_BAUDRATE baud_rate) -{ - // Set Divisor Latch Access Bit in LCR register to access DLL & DLH registers - HW_UART_REG_SETF(uart, LCR, UART_DLAB, 1); - // Set fraction byte of baud rate - UBA(uart)->UART2_DLF_REG = 0xFF & baud_rate; - // Set low byte of baud rate - UBA(uart)->UART2_RBR_THR_DLL_REG = 0xFF & (baud_rate >> 8); - // Set high byte of baud rare - UBA(uart)->UART2_IER_DLH_REG = 0xFF & (baud_rate >> 16); - // Reset Divisor Latch Access Bit in LCR register - HW_UART_REG_SETF(uart, LCR, UART_DLAB, 0); -} - -//=========================== FIFO control functions =========================== - -uint8_t hw_uart_fifo_en_getf(HW_UART_ID uart) -{ - uint16_t fifo_enabled; - - /* Only UART2 has a FIFO */ - ASSERT_ERROR(uart == HW_UART2); - - fifo_enabled = (UBA(uart)->UART2_IIR_FCR_REG & 0x00C0); /* Bits[7:6] */ - - switch (fifo_enabled) { - case 0x00C0: - return 1; - case 0x0000: - return 0; - default: - ASSERT_ERROR(0); - return 255; // To satisfy the compiler - } -} - -uint8_t hw_uart_tx_fifo_tr_lvl_getf(HW_UART_ID uart) -{ - /* Only UART2 has a FIFO */ - ASSERT_ERROR(uart == HW_UART2); - - return (UART2->UART2_STET_REG & HW_UART_REG_FIELD_MASK(2, STET, UART_SHADOW_TX_EMPTY_TRIGGER)) - >> HW_UART_REG_FIELD_POS(2, STET, UART_SHADOW_TX_EMPTY_TRIGGER); -} - -//=========================== DMA control functions ============================ - -#if HW_UART_USE_DMA_SUPPORT - -static void hw_uart_rx_dma_callback(void *user_data, uint16_t len) -{ - UART_Data *ud = user_data; - hw_uart_rx_callback cb = ud->rx_cb; - - ud->rx_cb = NULL; - ud->rx_ix += len; - if (cb) { - ud->rx_len = ud->rx_ix; - hw_uart_enable_rx_int(UARTID(ud), SOFTWARE_FIFO_PRESENT(ud)); - cb(ud->rx_user_data, ud->rx_ix); - } -} - -static void hw_uart_tx_dma_callback(void *user_data, uint16_t len) -{ - UART_Data *ud = user_data; - hw_uart_tx_callback cb = ud->tx_cb; - - ud->tx_cb = NULL; - ud->tx_ix = len; - if (cb) { - cb(ud->tx_user_data, len); - } -} - -void hw_uart_set_dma_channels(HW_UART_ID uart, int8_t channel, HW_DMA_PRIO pri) -{ - UART_Data *ud = UARTDATA(uart); - - /* Only specific DMA channels (or -1 for no DMA) are allowed */ - ASSERT_ERROR(channel < 0 || - channel == HW_DMA_CHANNEL_0 || - channel == HW_DMA_CHANNEL_2 || - channel == HW_DMA_CHANNEL_4 || - channel == HW_DMA_CHANNEL_6 || - channel == HW_DMA_CHANNEL_INVALID); - - if (channel < 0) { - ud->use_dma = 0; - ud->rx_dma.channel_number = HW_DMA_CHANNEL_INVALID; - ud->tx_dma.channel_number = HW_DMA_CHANNEL_INVALID; - } else { - ud->use_dma = 1; - - ud->rx_dma.channel_number = channel; - ud->rx_dma.bus_width = HW_DMA_BW_BYTE; - ud->rx_dma.irq_enable = HW_DMA_IRQ_STATE_ENABLED; - ud->rx_dma.dma_req_mux = UARTIX(uart) == 0 ? HW_DMA_TRIG_UART_RXTX : - HW_DMA_TRIG_UART2_RXTX; - ud->rx_dma.irq_nr_of_trans = 0; - ud->rx_dma.a_inc = HW_DMA_AINC_FALSE; - ud->rx_dma.b_inc = HW_DMA_BINC_TRUE; - ud->rx_dma.circular = HW_DMA_MODE_NORMAL; - ud->rx_dma.dma_prio = pri; - ud->rx_dma.dma_idle = HW_DMA_IDLE_INTERRUPTING_MODE; /* Not used by the HW in this case */ - ud->rx_dma.dma_init = HW_DMA_INIT_AX_BX_AY_BY; - ud->rx_dma.dreq_mode = HW_DMA_DREQ_TRIGGERED; - ud->rx_dma.src_address = (uint32_t) &UBA(uart)->UART2_RBR_THR_DLL_REG; - ud->rx_dma.dest_address = 0; // Change during transmission - ud->rx_dma.length = 0; // Change during transmission - ud->rx_dma.callback = hw_uart_rx_dma_callback; - ud->rx_dma.user_data = ud; - - ud->tx_dma.channel_number = channel + 1; - ud->tx_dma.bus_width = HW_DMA_BW_BYTE; - ud->tx_dma.irq_enable = HW_DMA_IRQ_STATE_ENABLED; - ud->tx_dma.dma_req_mux = UARTIX(uart) == 0 ? HW_DMA_TRIG_UART_RXTX : - HW_DMA_TRIG_UART2_RXTX; - ud->tx_dma.irq_nr_of_trans = 0; - ud->tx_dma.a_inc = HW_DMA_AINC_TRUE; - ud->tx_dma.b_inc = HW_DMA_BINC_FALSE; - ud->tx_dma.circular = HW_DMA_MODE_NORMAL; - ud->tx_dma.dma_prio = pri; - ud->tx_dma.dma_idle = HW_DMA_IDLE_INTERRUPTING_MODE; /* Not used by the HW in this case */ - ud->tx_dma.dma_init = HW_DMA_INIT_AX_BX_AY_BY; - ud->tx_dma.dreq_mode = HW_DMA_DREQ_TRIGGERED; - ud->tx_dma.src_address = 0; // Change during transmission - ud->tx_dma.dest_address = (uint32_t) &UBA(uart)->UART2_RBR_THR_DLL_REG; - ud->tx_dma.length = 0; // Change during transmission - ud->tx_dma.callback = hw_uart_tx_dma_callback; - ud->tx_dma.user_data = ud; - } -} - -void hw_uart_set_dma_channels_ex(HW_UART_ID uart, int8_t tx_channel, int8_t rx_channel, HW_DMA_PRIO pri) -{ - UART_Data *ud = UARTDATA(uart); - - /* Only specific DMA channels are allowed (or HW_DMA_CHANNEL_INVALID for no DMA) */ - ASSERT_ERROR(tx_channel >= HW_DMA_CHANNEL_0 && - tx_channel <= HW_DMA_CHANNEL_INVALID); - - /* Only specific DMA channels are allowed (or HW_DMA_CHANNEL_INVALID for no DMA) */ - ASSERT_ERROR(rx_channel >= HW_DMA_CHANNEL_0 && - rx_channel <= HW_DMA_CHANNEL_INVALID); - - if (tx_channel == HW_DMA_CHANNEL_INVALID && rx_channel== HW_DMA_CHANNEL_INVALID) { - ud->use_dma = 0; - ud->rx_dma.channel_number = HW_DMA_CHANNEL_INVALID; - ud->tx_dma.channel_number = HW_DMA_CHANNEL_INVALID; - } else { - if (tx_channel != HW_DMA_CHANNEL_INVALID && rx_channel!= HW_DMA_CHANNEL_INVALID) {//not both invalid - ASSERT_ERROR(tx_channel != rx_channel);//not equal - ASSERT_ERROR(tx_channel>>1 == rx_channel>>1);//on same pair - } - if (tx_channel != HW_DMA_CHANNEL_INVALID) { - ASSERT_ERROR(tx_channel & 1);//odd number - } - if (rx_channel != HW_DMA_CHANNEL_INVALID) { - ASSERT_ERROR((rx_channel & 1) == 0);//odd number - } - - ud->use_dma = 1; - - ud->rx_dma.channel_number = rx_channel; - ud->rx_dma.bus_width = HW_DMA_BW_BYTE; - ud->rx_dma.irq_enable = HW_DMA_IRQ_STATE_ENABLED; - ud->rx_dma.dma_req_mux = UARTIX(uart) == 0 ? HW_DMA_TRIG_UART_RXTX : - HW_DMA_TRIG_UART2_RXTX; - ud->rx_dma.irq_nr_of_trans = 0; - ud->rx_dma.a_inc = HW_DMA_AINC_FALSE; - ud->rx_dma.b_inc = HW_DMA_BINC_TRUE; - ud->rx_dma.circular = HW_DMA_MODE_NORMAL; - ud->rx_dma.dma_prio = pri; - ud->rx_dma.dma_idle = HW_DMA_IDLE_INTERRUPTING_MODE; /* Not used by the HW in this case */ - ud->rx_dma.dma_init = HW_DMA_INIT_AX_BX_AY_BY; - ud->rx_dma.dreq_mode = HW_DMA_DREQ_TRIGGERED; - ud->rx_dma.src_address = (uint32_t) &UBA(uart)->UART2_RBR_THR_DLL_REG; - ud->rx_dma.dest_address = 0; // Change during transmission - ud->rx_dma.length = 0; // Change during transmission - ud->rx_dma.callback = hw_uart_rx_dma_callback; - ud->rx_dma.user_data = ud; - - ud->tx_dma.channel_number = tx_channel; - ud->tx_dma.bus_width = HW_DMA_BW_BYTE; - ud->tx_dma.irq_enable = HW_DMA_IRQ_STATE_ENABLED; - ud->tx_dma.dma_req_mux = UARTIX(uart) == 0 ? HW_DMA_TRIG_UART_RXTX : - HW_DMA_TRIG_UART2_RXTX; - ud->tx_dma.irq_nr_of_trans = 0; - ud->tx_dma.a_inc = HW_DMA_AINC_TRUE; - ud->tx_dma.b_inc = HW_DMA_BINC_FALSE; - ud->tx_dma.circular = HW_DMA_MODE_NORMAL; - ud->tx_dma.dma_prio = pri; - ud->tx_dma.dma_idle = HW_DMA_IDLE_INTERRUPTING_MODE; /* Not used by the HW in this case */ - ud->tx_dma.dma_init = HW_DMA_INIT_AX_BX_AY_BY; - ud->tx_dma.dreq_mode = HW_DMA_DREQ_TRIGGERED; - ud->tx_dma.src_address = 0; // Change during transmission - ud->tx_dma.dest_address = (uint32_t) &UBA(uart)->UART2_RBR_THR_DLL_REG; - ud->tx_dma.length = 0; // Change during transmission - ud->tx_dma.callback = hw_uart_tx_dma_callback; - ud->tx_dma.user_data = ud; - } -} - -#if dg_configUART_RX_CIRCULAR_DMA - -static void hw_uart_rx_circular_dma_callback(void *user_data, uint16_t len) -{ - UART_Data *ud = user_data; - hw_uart_rx_callback cb = ud->rx_cb; - - if (!ud->rx_dma_active) { - return; - } - - ud->rx_cb = NULL; - ud->rx_dma_active = false; - - if (cb) { - cb(ud->rx_user_data, ud->rx_len); - } -} - -void hw_uart_enable_rx_circular_dma(HW_UART_ID uart) -{ - UART_Data *ud = UARTDATA(uart); - - ASSERT_ERROR(ud->rx_dma_buf_size > 0); - - hw_dma_channel_enable(ud->rx_dma.channel_number, HW_DMA_STATE_DISABLED); - - /* Need to reconfigure few things for circular operation... */ - ud->rx_dma.circular = HW_DMA_MODE_CIRCULAR; - ud->rx_dma.dest_address = (uint32_t) ud->rx_dma_buf; - ud->rx_dma.length = ud->rx_dma_buf_size; - ud->rx_dma.callback = hw_uart_rx_circular_dma_callback; - ud->rx_dma.user_data = ud; - - /* Reset DMA buffer read pointer */ - ud->rx_dma_head = 0; - - /* Start DMA now since it should be always-running */ - hw_uart_clear_dma_request(uart); - hw_dma_channel_initialization(&ud->rx_dma); - hw_dma_channel_enable(ud->rx_dma.channel_number, HW_DMA_STATE_ENABLED); -} - -void hw_uart_copy_rx_circular_dma_buffer(HW_UART_ID uart, uint8_t *buf, uint16_t len) -{ - UART_Data *ud = UARTDATA(uart); - - ASSERT_ERROR(len < ud->rx_dma_buf_size); - - if (ud->rx_dma_head + len <= ud->rx_dma_buf_size) { - memcpy(buf, &ud->rx_dma_buf[ud->rx_dma_head], len); - } else { - uint16_t chunk_len = ud->rx_dma_buf_size - ud->rx_dma_head; - memcpy(buf, &ud->rx_dma_buf[ud->rx_dma_head], chunk_len); - memcpy(buf + chunk_len, &ud->rx_dma_buf[0], len - chunk_len); - } - - /* This should be protected so ISR does not try to read rx_dma_head while we update it */ - GLOBAL_INT_DISABLE(); - ud->rx_dma_head = (ud->rx_dma_head + len) % ud->rx_dma_buf_size; - GLOBAL_INT_RESTORE(); -} - -#endif /* dg_configUART_RX_CIRCULAR_DMA */ - -#endif /* HW_UART_USE_DMA_SUPPORT */ - -//=========================== Line control functions ============================ -void hw_uart_init_ex(HW_UART_ID uart, const uart_config_ex *uart_init) -{ - UART_Data *ud = UARTDATA(uart); - - /* - * Read UART_USR_REG to clear any pending busy interrupt. - */ - hw_uart_transmit_fifo_empty(uart); - - - if (uart == HW_UART1) { - // there is no FIFO for UART0 as yet - ud->rx_fifo_on = 0; - ud->tx_fifo_on = 0; - hw_uart_disable_fifo(uart); - } else { - if (uart_init->use_fifo) { - ud->rx_fifo_on = 1; - ud->tx_fifo_on = 1; - hw_uart_enable_fifo(uart); - ud->rx_fifo_level = uart_init->rx_fifo_tr_lvl; - hw_uart_rx_fifo_tr_lvl_setf(uart, uart_init->rx_fifo_tr_lvl); - ud->tx_fifo_level = uart_init->tx_fifo_tr_lvl; - hw_uart_tx_fifo_tr_lvl_setf(uart, uart_init->tx_fifo_tr_lvl); - } else { - ud->rx_fifo_on = 0; - ud->tx_fifo_on = 0; - hw_uart_disable_fifo(uart); - } - } - GLOBAL_INT_DISABLE(); - REG_SET_BIT(CRG_PER, CLK_PER_REG, UART_ENABLE); - GLOBAL_INT_RESTORE(); - - // Set Divisor Latch Access Bit in LCR register to access DLL & DLH registers - HW_UART_REG_SETF(uart, LCR, UART_DLAB, 1); - // Set fraction byte of baud rate - UBA(uart)->UART2_DLF_REG = 0xFF & uart_init->baud_rate; - // Set low byte of baud rate - UBA(uart)->UART2_RBR_THR_DLL_REG = 0xFF & (uart_init->baud_rate >> 8); - // Set high byte of baud rate - UBA(uart)->UART2_IER_DLH_REG = 0xFF & (uart_init->baud_rate >> 16); - // Reset Divisor Latch Access Bit in LCR register - HW_UART_REG_SETF(uart, LCR, UART_DLAB, 0); - // Set Parity - UBA(uart)->UART2_LCR_REG = (uart_init->parity) << 3; - // Set Data Bits - HW_UART_REG_SETF(uart, LCR, UART_DLS, uart_init->data); - // Set Stop Bits - HW_UART_REG_SETF(uart, LCR, UART_STOP, uart_init->stop); - // Set Auto flow control - HW_UART_REG_SETF(uart, MCR, UART_AFCE, uart_init->auto_flow_control); - HW_UART_REG_SETF(uart, MCR, UART_RTS, uart_init->auto_flow_control); - ud->tx_cb = NULL; - ud->rx_cb = NULL; - ud->rx_len = 0; - ud->tx_len = 0; - ud->use_dma = 0; - ud->rx_dma.channel_number = HW_DMA_CHANNEL_INVALID; - ud->tx_dma.channel_number = HW_DMA_CHANNEL_INVALID; -#if HW_UART_USE_DMA_SUPPORT - if (uart_init->use_dma) { - hw_uart_set_dma_channels_ex(uart, uart_init->tx_dma_channel, uart_init->rx_dma_channel, HW_DMA_PRIO_2); - } -#endif -} - -void hw_uart_reinit_ex(HW_UART_ID uart, const uart_config_ex *uart_init) -{ - UART_Data *ud = UARTDATA(uart); - - GLOBAL_INT_DISABLE(); - REG_SET_BIT(CRG_PER, CLK_PER_REG, UART_ENABLE); - GLOBAL_INT_RESTORE(); - - /* - * Read UART_USR_REG to clear any pending busy interrupt. - */ - hw_uart_transmit_fifo_empty(uart); - - if (uart == HW_UART2) { - if (uart_init->use_fifo) { - hw_uart_enable_fifo(uart); - hw_uart_rx_fifo_tr_lvl_setf(uart, uart_init->rx_fifo_tr_lvl); - hw_uart_tx_fifo_tr_lvl_setf(uart, uart_init->tx_fifo_tr_lvl); - } else { - hw_uart_disable_fifo(uart); - } - } - - // Set Divisor Latch Access Bit in LCR register to access DLL & DLH registers - HW_UART_REG_SETF(uart, LCR, UART_DLAB, 1); - // Set fraction byte of baud rate - UBA(uart)->UART2_DLF_REG = 0xFF & uart_init->baud_rate; - // Set low byte of baud rate - UBA(uart)->UART2_RBR_THR_DLL_REG = 0xFF & (uart_init->baud_rate >> 8); - // Set high byte of baud rare - UBA(uart)->UART2_IER_DLH_REG = 0xFF & (uart_init->baud_rate >> 16); - // Reset Divisor Latch Access Bit in LCR register - HW_UART_REG_SETF(uart, LCR, UART_DLAB, 0); - // Set Parity - UBA(uart)->UART2_LCR_REG = (uart_init->parity) << 3; - // Set Data Bits - HW_UART_REG_SETF(uart, LCR, UART_DLS, uart_init->data); - // Set Stop Bits - HW_UART_REG_SETF(uart, LCR, UART_STOP, uart_init->stop); - // Set Auto flow control - HW_UART_REG_SETF(uart, MCR, UART_AFCE, uart_init->auto_flow_control); - HW_UART_REG_SETF(uart, MCR, UART_RTS, uart_init->auto_flow_control); - - if (ud->rx_cb && ud->rx_len != ud->rx_ix) { - if (ud->rx_len > 1 && uart_init->use_dma && uart_init->rx_dma_channel != HW_DMA_CHANNEL_INVALID) { - } else { - // Interrupt driven - hw_uart_enable_rx_int(uart, true); - } - } -} - -void hw_uart_init(HW_UART_ID uart, const uart_config *uart_init) -{ - UART_Data *ud = UARTDATA(uart); - - /* - * Read UART_USR_REG to clear any pending busy interrupt. - */ - hw_uart_transmit_fifo_empty(uart); - - - if (uart == HW_UART1) { - // there is no FIFO for UART0 as yet - ud->rx_fifo_on = 0; - ud->tx_fifo_on = 0; - hw_uart_disable_fifo(uart); - } else { - if (uart_init->use_fifo) { - ud->rx_fifo_on = 1; - ud->tx_fifo_on = 1; - hw_uart_enable_fifo(uart); - hw_uart_rx_fifo_tr_lvl_setf(uart, 0); - hw_uart_tx_fifo_tr_lvl_setf(uart, 0); - } else { - ud->rx_fifo_on = 0; - ud->tx_fifo_on = 0; - hw_uart_disable_fifo(uart); - } - } - GLOBAL_INT_DISABLE(); - REG_SET_BIT(CRG_PER, CLK_PER_REG, UART_ENABLE); - GLOBAL_INT_RESTORE(); - - // Set Divisor Latch Access Bit in LCR register to access DLL & DLH registers - HW_UART_REG_SETF(uart, LCR, UART_DLAB, 1); - // Set fraction byte of baud rate - UBA(uart)->UART2_DLF_REG = 0xFF & uart_init->baud_rate; - // Set low byte of baud rate - UBA(uart)->UART2_RBR_THR_DLL_REG = 0xFF & (uart_init->baud_rate >> 8); - // Set high byte of baud rate - UBA(uart)->UART2_IER_DLH_REG = 0xFF & (uart_init->baud_rate >> 16); - // Reset Divisor Latch Access Bit in LCR register - HW_UART_REG_SETF(uart, LCR, UART_DLAB, 0); - // Set Parity - UBA(uart)->UART2_LCR_REG = (uart_init->parity) << 3; - // Set Data Bits - HW_UART_REG_SETF(uart, LCR, UART_DLS, uart_init->data); - // Set Stop Bits - HW_UART_REG_SETF(uart, LCR, UART_STOP, uart_init->stop); - // Set Auto flow control - HW_UART_REG_SETF(uart, MCR, UART_AFCE, uart_init->auto_flow_control); - HW_UART_REG_SETF(uart, MCR, UART_RTS, uart_init->auto_flow_control); - ud->tx_cb = NULL; - ud->rx_cb = NULL; - ud->rx_len = 0; - ud->tx_len = 0; - ud->use_dma = 0; - ud->rx_dma.channel_number = HW_DMA_CHANNEL_INVALID; - ud->tx_dma.channel_number = HW_DMA_CHANNEL_INVALID; -#if HW_UART_USE_DMA_SUPPORT - if (uart_init->use_dma) { - hw_uart_set_dma_channels_ex(uart, uart_init->tx_dma_channel, uart_init->rx_dma_channel, HW_DMA_PRIO_2); - } -#endif -} - -void hw_uart_reinit(HW_UART_ID uart, const uart_config *uart_init) -{ - UART_Data *ud = UARTDATA(uart); - - GLOBAL_INT_DISABLE(); - REG_SET_BIT(CRG_PER, CLK_PER_REG, UART_ENABLE); - GLOBAL_INT_RESTORE(); - - /* - * Read UART_USR_REG to clear any pending busy interrupt. - */ - hw_uart_transmit_fifo_empty(uart); - - if (uart == HW_UART2) { - if (uart_init->use_fifo) { - hw_uart_enable_fifo(uart); - hw_uart_rx_fifo_tr_lvl_setf(uart, 0); - hw_uart_tx_fifo_tr_lvl_setf(uart, 0); - } else { - hw_uart_disable_fifo(uart); - } - } - - // Set Divisor Latch Access Bit in LCR register to access DLL & DLH registers - HW_UART_REG_SETF(uart, LCR, UART_DLAB, 1); - // Set fraction byte of baud rate - UBA(uart)->UART2_DLF_REG = 0xFF & uart_init->baud_rate; - // Set low byte of baud rate - UBA(uart)->UART2_RBR_THR_DLL_REG = 0xFF & (uart_init->baud_rate >> 8); - // Set high byte of baud rare - UBA(uart)->UART2_IER_DLH_REG = 0xFF & (uart_init->baud_rate >> 16); - // Reset Divisor Latch Access Bit in LCR register - HW_UART_REG_SETF(uart, LCR, UART_DLAB, 0); - // Set Parity - UBA(uart)->UART2_LCR_REG = (uart_init->parity) << 3; - // Set Data Bits - HW_UART_REG_SETF(uart, LCR, UART_DLS, uart_init->data); - // Set Stop Bits - HW_UART_REG_SETF(uart, LCR, UART_STOP, uart_init->stop); - // Set Auto flow control - HW_UART_REG_SETF(uart, MCR, UART_AFCE, uart_init->auto_flow_control); - HW_UART_REG_SETF(uart, MCR, UART_RTS, uart_init->auto_flow_control); - - if (ud->rx_cb && ud->rx_len != ud->rx_ix) { - if (ud->rx_len > 1 && uart_init->use_dma && uart_init->rx_dma_channel != HW_DMA_CHANNEL_INVALID) { - } else { - // Interrupt driven - hw_uart_enable_rx_int(uart, true); - } - } -} - -void hw_uart_cfg_get(HW_UART_ID uart, uart_config *uart_cfg) -{ -#if HW_UART_USE_DMA_SUPPORT - UART_Data *ud = UARTDATA(uart); -#endif - - // Set Divisor Latch Access Bit in LCR register to access DLL & DLH registers - HW_UART_REG_SETF(uart, LCR, UART_DLAB, 1); - // Read baud rate low byte from DLL register - uart_cfg->baud_rate = (0xFF & UBA(uart)->UART2_RBR_THR_DLL_REG) << 8; - // Read baud rate high byte from DLH register - uart_cfg->baud_rate += (0xFF & UBA(uart)->UART2_IER_DLH_REG) << 16; - // Read baud rate fraction byte from DLF register - uart_cfg->baud_rate += 0xFF & UBA(uart)->UART2_DLF_REG; - // Reset Divisor Latch Access Bit in Line Control Register - HW_UART_REG_SETF(uart, LCR, UART_DLAB, 0); - - // Fill-in the rest of the configuration settings - uart_cfg->data = HW_UART_REG_GETF(uart, LCR, UART_DLS); - uart_cfg->parity = UBA(uart)->UART2_LCR_REG; - uart_cfg->parity &= ((1 << UART_UART_LCR_REG_UART_EPS_Pos) | (1 << UART_UART_LCR_REG_UART_PEN_Pos)); - uart_cfg->parity = uart_cfg->parity >> UART_UART_LCR_REG_UART_PEN_Pos; - uart_cfg->stop = HW_UART_REG_GETF(uart, LCR, UART_STOP); -#if HW_UART_USE_DMA_SUPPORT - uart_cfg->tx_dma_channel = ud->tx_dma.channel_number; - uart_cfg->rx_dma_channel = ud->rx_dma.channel_number; - uart_cfg->use_dma = ud->use_dma; -#endif - uart_cfg->auto_flow_control = hw_uart_afce_getf(uart); -} - -//=========================== Modem control functions ========================== - -uint8_t hw_uart_sire_getf(HW_UART_ID uart) -{ - // Get the value of the SIRE bit from the Modem Control Register - return (uint8_t) HW_UART_REG_GETF(uart, MCR, UART_SIRE); -} - -void hw_uart_sire_setf(HW_UART_ID uart, uint8_t sire) -{ - // Set the value of the SIRE bit in the Modem Control Register - HW_UART_REG_SETF(uart, MCR, UART_SIRE, sire); -} - -uint8_t hw_uart_afce_getf(HW_UART_ID uart) -{ - // Get the value of the AFCE bit from the Modem Control Register - return 0xFF & HW_UART_REG_GETF(uart, MCR, UART_AFCE); -} - -void hw_uart_afce_setf(HW_UART_ID uart, uint8_t afce) -{ - // Set the value of the AFCE bit in the Modem Control Register - HW_UART_REG_SETF(uart, MCR, UART_AFCE, afce); -} - -uint8_t hw_uart_loopback_getf(HW_UART_ID uart) -{ - // Get the value of the loop back (LB) bit from the Modem Control Register - return (uint8_t) HW_UART_REG_GETF(uart, MCR, UART_LB); -} - -void hw_uart_loopback_setf(HW_UART_ID uart, uint8_t lb) -{ - // Set the value of the loop back (LB) bit in the Modem Control Register - HW_UART_REG_SETF(uart, MCR, UART_LB, lb); -} - -uint8_t hw_uart_rts_getf(HW_UART_ID uart) -{ - // Get the value of the RTS bit from the Modem Control Register - return 0xFF & HW_UART_REG_GETF(uart, MCR, UART_RTS); -} - -void hw_uart_rts_setf(HW_UART_ID uart, uint8_t rtsn) -{ - // Set the value of the RTS bit in the Modem Control Register - HW_UART_REG_SETF(uart, MCR, UART_RTS, rtsn); -} - -//=========================== Line status functions ============================ - -uint8_t hw_uart_rx_fifo_err_getf(HW_UART_ID uart) -{ - /* Only UART2 has a FIFO */ - ASSERT_ERROR(uart == HW_UART2); - // Get Receiver FIFO Error bit - return (uint8_t) HW_UART_REG_GETF(uart, LSR, UART_RFE); -} - -uint8_t hw_uart_is_tx_fifo_empty(HW_UART_ID uart) -{ - // Get Transmitter Empty bit from Line Status Register - return HW_UART_REG_GETF(uart, LSR, UART_TEMT) != 0; -} - -uint8_t hw_uart_thr_empty_getf(HW_UART_ID uart) -{ - // Get Transmit Holding Register Empty bit value from Line Status Register - return HW_UART_REG_GETF(uart, LSR, UART_THRE); -} - -uint8_t hw_uart_break_int_getf(HW_UART_ID uart) -{ - // Get Break Interrupt bit value from Line Status Register - return HW_UART_REG_GETF(uart, LSR, UART_BI); -} - -uint8_t hw_uart_frame_err_getf(HW_UART_ID uart) -{ - // Get Framing Error bit value from Line Status Register - return HW_UART_REG_GETF(uart, LSR, UART_FE); -} - -uint8_t hw_uart_parity_err_getf(HW_UART_ID uart) -{ - // Get Parity Error bit value from Line Status Register - return HW_UART_REG_GETF(uart, LSR, UART_PE); -} - -uint8_t hw_uart_overrun_err_getf(HW_UART_ID uart) -{ - // Get Overrun Error bit value from Line Status Register - return HW_UART_REG_GETF(uart, LSR, UART_OE); -} - -//=========================== Modem status functions =========================== - -uint8_t hw_uart_cts_getf(HW_UART_ID uart) -{ - // Get CTS bit from Modem Control Register - return (uint8_t) HW_UART_REG_GETF(uart, MSR, UART_CTS); -} - -uint8_t hw_uart_delta_cts_getf(HW_UART_ID uart) -{ - // Get the DCTS bit value from the Modem Control Register - return (uint8_t) HW_UART_REG_GETF(uart, MSR, UART_DCTS); -} - -bool hw_uart_tx_in_progress(HW_UART_ID uart) -{ - UART_Data *ud = UARTDATA(uart); - return ud->tx_cb != NULL; -} - -bool hw_uart_rx_in_progress(HW_UART_ID uart) -{ - UART_Data *ud = UARTDATA(uart); - return ud->rx_cb != NULL; -} - -#endif /* dg_configUSE_HW_UART */ -/** - * \} - * \} - * \} - */ diff --git a/third_party/dialog/DialogSDK/bsp/peripherals/src/hw_watchdog.c b/third_party/dialog/DialogSDK/bsp/peripherals/src/hw_watchdog.c deleted file mode 100644 index 78a90e3f9..000000000 --- a/third_party/dialog/DialogSDK/bsp/peripherals/src/hw_watchdog.c +++ /dev/null @@ -1,172 +0,0 @@ -/** - * \addtogroup BSP - * \{ - * \addtogroup DEVICES - * \{ - * \addtogroup Watchdog_Timer - * \{ - */ - -/** - **************************************************************************************** - * - * @file hw_watchdog.c - * - * @brief Implementation of the Watchdog timer Low Level Driver. - * - * Copyright (c) 2016, Dialog Semiconductor - * All rights reserved. - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. Neither the name of the copyright holder nor the names of its contributors - * may be used to endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, - * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, - * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED - * OF THE POSSIBILITY OF SUCH DAMAGE. - * - * - **************************************************************************************** - */ -#include -#include "hw_watchdog.h" -#include "hw_cpm.h" - -/* - * Global variables - */ -uint32_t nmi_event_data[9] __attribute__((section("nmi_info"))); - -/* - * Local variables - */ -static hw_watchdog_interrupt_cb int_handler __RETAINED = NULL; - -/* - * This is the base address in Retention RAM where the stacked information will be copied. - */ -#define STATUS_BASE (0x7FC5600) - -bool hw_watchdog_freeze(void) -{ - GPREG->SET_FREEZE_REG = GPREG_SET_FREEZE_REG_FRZ_WDOG_Msk; - - return !REG_GETF(WDOG, WATCHDOG_CTRL_REG, NMI_RST); -} - -void hw_watchdog_unfreeze(void) -{ - GPREG->RESET_FREEZE_REG = GPREG_RESET_FREEZE_REG_FRZ_WDOG_Msk; -} - -HW_WDG_RESET hw_watchdog_is_irq_or_rst_gen(void) -{ - if (REG_GETF(WDOG, WATCHDOG_CTRL_REG, NMI_RST)) { - return HW_WDG_RESET_RST; - } - - return HW_WDG_RESET_NMI; -} - -void hw_watchdog_register_int(hw_watchdog_interrupt_cb handler) -{ - int_handler = handler; -} - -void hw_watchdog_unregister_int(void) -{ - int_handler = NULL; -} - -__RETAINED_CODE void hw_watchdog_handle_int(unsigned long *exception_args) -{ - // Reached this point due to a WDOG timeout - uint16_t pmu_ctrl_reg = CRG_TOP->PMU_CTRL_REG; - pmu_ctrl_reg |= ((1 << CRG_TOP_PMU_CTRL_REG_BLE_SLEEP_Pos) | /* turn off BLE */ - (1 << CRG_TOP_PMU_CTRL_REG_FTDF_SLEEP_Pos) | /* turn off FTDF */ - (1 << CRG_TOP_PMU_CTRL_REG_RADIO_SLEEP_Pos) | /* turn off radio PD */ - (1 << CRG_TOP_PMU_CTRL_REG_PERIPH_SLEEP_Pos)); /* turn off peripheral power domain */ - CRG_TOP->PMU_CTRL_REG = pmu_ctrl_reg; - REG_SET_BIT(CRG_TOP, CLK_RADIO_REG, BLE_LP_RESET); /* reset the BLE LP timer */ - -#if (dg_configIMAGE_SETUP == DEVELOPMENT_MODE) - hw_watchdog_freeze(); // Stop WDOG - - ENABLE_DEBUGGER; - - if (exception_args != NULL) { - *(volatile unsigned long *)(STATUS_BASE ) = exception_args[0]; // R0 - *(volatile unsigned long *)(STATUS_BASE + 0x04) = exception_args[1]; // R1 - *(volatile unsigned long *)(STATUS_BASE + 0x08) = exception_args[2]; // R2 - *(volatile unsigned long *)(STATUS_BASE + 0x0C) = exception_args[3]; // R3 - *(volatile unsigned long *)(STATUS_BASE + 0x10) = exception_args[4]; // R12 - *(volatile unsigned long *)(STATUS_BASE + 0x14) = exception_args[5]; // LR - *(volatile unsigned long *)(STATUS_BASE + 0x18) = exception_args[6]; // PC - *(volatile unsigned long *)(STATUS_BASE + 0x1C) = exception_args[7]; // PSR - *(volatile unsigned long *)(STATUS_BASE + 0x20) = (unsigned long)exception_args; // Stack Pointer - - *(volatile unsigned long *)(STATUS_BASE + 0x24) = (*((volatile unsigned long *)(0xE000ED28))); // CFSR - *(volatile unsigned long *)(STATUS_BASE + 0x28) = (*((volatile unsigned long *)(0xE000ED2C))); // HFSR - *(volatile unsigned long *)(STATUS_BASE + 0x2C) = (*((volatile unsigned long *)(0xE000ED30))); // DFSR - *(volatile unsigned long *)(STATUS_BASE + 0x30) = (*((volatile unsigned long *)(0xE000ED3C))); // AFSR - *(volatile unsigned long *)(STATUS_BASE + 0x34) = (*((volatile unsigned long *)(0xE000ED34))); // MMAR - *(volatile unsigned long *)(STATUS_BASE + 0x38) = (*((volatile unsigned long *)(0xE000ED38))); // BFAR - } - - hw_cpm_assert_trigger_gpio(); - - if (REG_GETF(CRG_TOP, SYS_STAT_REG, DBG_IS_ACTIVE)) { - __BKPT(0); - } - else { - while (1); - } - -#else // dg_configIMAGE_SETUP == DEVELOPMENT_MODE - if (exception_args != NULL) { - nmi_event_data[0] = NMI_MAGIC_NUMBER; - nmi_event_data[1] = exception_args[0]; // R0 - nmi_event_data[2] = exception_args[1]; // R1 - nmi_event_data[3] = exception_args[2]; // R2 - nmi_event_data[4] = exception_args[3]; // R3 - nmi_event_data[5] = exception_args[4]; // R12 - nmi_event_data[6] = exception_args[5]; // LR - nmi_event_data[7] = exception_args[6]; // PC - nmi_event_data[8] = exception_args[7]; // PSR - } - - // Wait for the reset to occur - while (1); -#endif // dg_configIMAGE_SETUP == DEVELOPMENT_MODE -} - -__RETAINED_CODE void NMI_HandlerC(unsigned long *exception_args); - -void NMI_HandlerC(unsigned long *exception_args) -{ - if (int_handler) { - int_handler(exception_args); - } - else { - hw_watchdog_handle_int(exception_args); - } -} - -/** - * \} - * \} - * \} - */ diff --git a/third_party/dialog/DialogSDK/bsp/peripherals/src/hw_wkup.c b/third_party/dialog/DialogSDK/bsp/peripherals/src/hw_wkup.c deleted file mode 100644 index e009d6f46..000000000 --- a/third_party/dialog/DialogSDK/bsp/peripherals/src/hw_wkup.c +++ /dev/null @@ -1,209 +0,0 @@ -/** - * \addtogroup BSP - * \{ - * \addtogroup DEVICES - * \{ - * \addtogroup Wakeup_Timer - * \{ - */ - -/** - **************************************************************************************** - * - * @file hw_wkup.c - * - * @brief Implementation of the Wakeup timer Low Level Driver. - * - * Copyright (c) 2016, Dialog Semiconductor - * All rights reserved. - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. Neither the name of the copyright holder nor the names of its contributors - * may be used to endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, - * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, - * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED - * OF THE POSSIBILITY OF SUCH DAMAGE. - * - * - **************************************************************************************** - */ - -#if dg_configUSE_HW_WKUP - - -#include -#include -#include - -static hw_wkup_interrupt_cb intr_cb __RETAINED /* = NULL*/; - -#if ((dg_configLATCH_WKUP_SOURCE) && (dg_configBLACK_ORCA_IC_REV == BLACK_ORCA_IC_REV_A)) -#define PX_DATA_REG_ADDR(_port) ((uint16_t *)(GPIO_BASE + offsetof(GPIO_Type, P0_DATA_REG)) + _port) -#define PX_DATA_REG(_port) *PX_DATA_REG_ADDR(_port) -#define BF_GET(_var, _pos) ((_var>>_pos) & 1) - -__RETAINED volatile wkup_pin_config_t wkup_pin_config; -volatile uint8_t wkup_status[HW_GPIO_NUM_PORTS]; - -static bool hw_wkup_update_status(void) -{ - uint8_t i, j, enable_loop_cnt = 0; - uint8_t pol_rx_reg; - bool wkup_status_updated = false; - uint8_t cur_port_data[HW_GPIO_NUM_PORTS]; - - for (i = 0; i < HW_GPIO_NUM_PORTS; i++) { - wkup_status[i] = 0; - if (wkup_pin_config.pin_state[i]) { - //read port status - cur_port_data[i] = PX_DATA_REG(i); - //read trigger polarity - pol_rx_reg = *((volatile uint16_t *)WAKEUP_BASE + 10 + i); - for (j = 0; j < 8; j++) { - if ((wkup_pin_config.pin_state[i] & (1 << j)) && - (BF_GET(pol_rx_reg, j) - == BF_GET(~cur_port_data[i], j))) { - //invert trigger polarity - pol_rx_reg ^= (1 << j); - if (BF_GET(wkup_pin_config.pin_trigger[i], j) - == BF_GET(~cur_port_data[i], j)) { - wkup_status[i] |= (1 << j); - wkup_status_updated = true; - } - } - } - //update trigger polarity - *((volatile uint16_t *)WAKEUP_BASE + 10 + i) = pol_rx_reg; - } - } - - return wkup_status_updated; -} -#endif /* dg_configLATCH_WKUP_SOURCE */ - -void hw_wkup_init(const wkup_config *cfg) -{ - unsigned int i; - - GLOBAL_INT_DISABLE(); - REG_SET_BIT(CRG_TOP, CLK_TMR_REG, WAKEUPCT_ENABLE); - GLOBAL_INT_RESTORE(); - - /* reset configuration */ - WAKEUP->WKUP_CTRL_REG = 0; - -#if dg_configBLACK_ORCA_IC_REV == BLACK_ORCA_IC_REV_A - WAKEUP->WKUP_COMPARE_REG = 0; -#endif - - /* disable all pins */ - for (i = 0; i < HW_GPIO_NUM_PORTS; i++) { - *((volatile uint16_t *)(&WAKEUP->WKUP_POL_P0_REG) + i) = 0; - *((volatile uint16_t *)(&WAKEUP->WKUP_SELECT_P0_REG) + i) = 0; -#if dg_configBLACK_ORCA_IC_REV != BLACK_ORCA_IC_REV_A - *((volatile uint16_t *)(&WAKEUP-> WKUP_SEL_GPIO_P0_REG) + i) = 0; -#endif -#if dg_configLATCH_WKUP_SOURCE -#if (dg_configBLACK_ORCA_IC_REV == BLACK_ORCA_IC_REV_A) - wkup_pin_config.pin_state[i] = 0; - wkup_pin_config.pin_trigger[i] = 0; - wkup_status[i] = 0; - hw_wkup_clear_status(i, 0xFF); -#endif -#endif //dg_configLATCH_WKUP_SOURCE - } -#if dg_configBLACK_ORCA_IC_REV != BLACK_ORCA_IC_REV_A - WAKEUP->WKUP_CLEAR_0_REG = WAKEUP->WKUP_CLEAR_1_REG = WAKEUP->WKUP_CLEAR_2_REG = 0xFFFF; -#endif - NVIC_DisableIRQ(WKUP_GPIO_IRQn); - - hw_wkup_configure(cfg); -} - -void hw_wkup_configure(const wkup_config *cfg) -{ - int i; - - if (!cfg) { - return; - } - -#if dg_configBLACK_ORCA_IC_REV == BLACK_ORCA_IC_REV_A - hw_wkup_set_counter_threshold(cfg->threshold); -#endif -#if !((dg_configLATCH_WKUP_SOURCE) && (dg_configBLACK_ORCA_IC_REV != BLACK_ORCA_IC_REV_A)) - hw_wkup_set_debounce_time(cfg->debounce); -#endif - for (i = 0; i < HW_GPIO_NUM_PORTS; i++) { - hw_wkup_configure_port(i, cfg->pin_state[i], cfg->pin_trigger[i]); - } -} - -void hw_wkup_register_interrupt(hw_wkup_interrupt_cb cb, uint32_t prio) -{ - intr_cb = cb; -#if !((dg_configLATCH_WKUP_SOURCE) && (dg_configBLACK_ORCA_IC_REV != BLACK_ORCA_IC_REV_A)) - HW_WKUP_REG_SETF(CTRL, WKUP_ENABLE_IRQ, 1); -#endif - NVIC_ClearPendingIRQ(WKUP_GPIO_IRQn); - NVIC_SetPriority(WKUP_GPIO_IRQn, prio); - NVIC_EnableIRQ(WKUP_GPIO_IRQn); -} - -void hw_wkup_unregister_interrupt(void) -{ - intr_cb = NULL; -#if !((dg_configLATCH_WKUP_SOURCE) && (dg_configBLACK_ORCA_IC_REV != BLACK_ORCA_IC_REV_A)) - HW_WKUP_REG_SETF(CTRL, WKUP_ENABLE_IRQ, 0); -#endif - NVIC_DisableIRQ(WKUP_GPIO_IRQn); -} - -void hw_wkup_handler(void) -{ -#if ((dg_configLATCH_WKUP_SOURCE) && (dg_configBLACK_ORCA_IC_REV == BLACK_ORCA_IC_REV_A)) - if (intr_cb && hw_wkup_update_status()) { -#else - if (intr_cb) { -#endif - intr_cb(); - } - else { - hw_wkup_reset_interrupt(); -#if dg_configLATCH_WKUP_SOURCE - hw_wkup_clear_status(HW_GPIO_PORT_0, 0xFF); - hw_wkup_clear_status(HW_GPIO_PORT_1, 0xFF); - hw_wkup_clear_status(HW_GPIO_PORT_2, 0xFF); - hw_wkup_clear_status(HW_GPIO_PORT_3, 0xFF); - hw_wkup_clear_status(HW_GPIO_PORT_4, 0xFF); -#endif - } -} - -#ifdef OS_BAREMETAL -void WKUP_GPIO_Handler(void) -{ - hw_wkup_handler(); -} -#endif - -#endif /* dg_configUSE_HW_WKUP */ -/** - * \} - * \} - * \} - */ diff --git a/third_party/dialog/DialogSDK/bsp/peripherals/src/sys_tcs.c b/third_party/dialog/DialogSDK/bsp/peripherals/src/sys_tcs.c deleted file mode 100644 index b97f2d192..000000000 --- a/third_party/dialog/DialogSDK/bsp/peripherals/src/sys_tcs.c +++ /dev/null @@ -1,454 +0,0 @@ -/** -\addtogroup BSP -\{ -\addtogroup SYSTEM -\{ -\addtogroup TCS_Handling -\{ -*/ - -/** - **************************************************************************************** - * - * @file sys_tcs.c - * - * @brief TCS HAndler - * - * Copyright (c) 2016, Dialog Semiconductor - * All rights reserved. - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. Neither the name of the copyright holder nor the names of its contributors - * may be used to endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, - * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, - * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED - * OF THE POSSIBILITY OF SUCH DAMAGE. - * - * - **************************************************************************************** - */ - -#include -#include "hw_cpm.h" -#include "sys_tcs.h" -#include "hw_gpadc.h" - -#define APPEND_TCS_LENGTH (0) - -#define RADIO_AREA_SIZE (0x1000) -#define PERIPHERAL_AREA_SIZE (0xC4A) - -#define IS_IN_AREA(addr, base, size) ((addr >= base) && (addr <= (base + size))) - -#define ADC_SE_GAIN_ERROR(value) ((value) & 0x0000FFFF) -#define ADC_DIFF_GAIN_ERROR(value) (((value) & 0xFFFF0000) >> 16) - -/* - * Global and / or retained variables - */ - -uint32_t tcs_data[24 * 2 + APPEND_TCS_LENGTH] __RETAINED_UNINIT; -uint8_t tcs_length __RETAINED_UNINIT; - -uint8_t area_offset[tcs_system + 1] __RETAINED; -uint8_t area_size_global[tcs_system + 1] __RETAINED; -uint16_t sys_tcs_xtal16m_settling_time __RETAINED; - - -const uint32_t *tcs_ptr __RETAINED; - -bool sys_tcs_is_calibrated_chip __RETAINED_UNINIT; // Initial value: false - -/* - * Local variables - */ - -static const uint32_t uncalibrated_tcs_data[] = { - /* BANDGAP_REG: (offset 0) - * [14]: BYPASS_COLD_BOOT_DISABLE = 0 - * [13:10]: LDO_SLEEP_TRIM = 0x4 - * [9:5]: BGR_ITRIM = 0x00 - * [4:0]: BGR_TRIM = 0x13 (change until V12 is 1.2V) - * - * Especially for this register, merge the trimmed and preferred settings. - */ - (uint32_t)&CRG_TOP->BANDGAP_REG, 0x1013, - - /* CLK_FREQ_TRIM_REG: (offset 2) - * [10:8]: COARSE_ADJ = 0x4 - * [7:0]: FINE_ADJ = 0x60 - */ - (uint32_t)&CRG_TOP->CLK_FREQ_TRIM_REG, 0x0460, - - /* CLK_16M_REG: (offset 4) - * [15]: RC16M_STARTUP_DISABLE = 0 - * [14]: XTAL16_HPASS_FLT_EN = 0 - * [13]: XTAL16_SPIKE_FLT_BYPASS = 0 - * [12:10]: XTAL16_AMP_TRIM = 0x5 - * [9]: XTAL16_EXT_CLK_ENABLE = 0 - * [8]: XTAL16_MAX_CURRENT = 0 - * [7:5]: XTAL16_CUR_SET = 0x5 - * [4:1]: RC16M_TRIM = 0x9 - * [0]: RC16M_ENABLE = 0 - * - * Apply the trimmed and a default preferred value. The correct one is applied - * later. - */ - (uint32_t)&CRG_TOP->CLK_16M_REG, 0x14B2, - - /* CLK_32K_REG: (offset 6) - * [15:13]: 0 - * [12]: XTAL32K_DISABLE_AMPREG0 = 0 - * [11:8]: RC32K_TRIM = 0x07 - * [7]: RC32K_ENABLE = 0x1 (reset value) - * [6:3]: XTAL32K_CUR = 0x3 (reset value) - * [2:1]: XTAL32K_RBIAS = 0x2 (reset value) - * [0]: XTAL32K_ENABLE = 0 - */ - (uint32_t)&CRG_TOP->CLK_32K_REG, 0x79C, - - /* CHARGER_CTRL2_REG: (offset 8) - * [15:13]: 0 - * [12:8]: CURRENT_OFFSET_TRIM = 0x0C - * [7:4]: CHARGER_VFLOAT_ADJ = 0x5 - * [3:0]: CURRENT_GAIN_TRIM = 0xA - */ - (uint32_t)&ANAMISC->CHARGER_CTRL2_REG, 0x0C5A, -}; - -#define UNCALIBRATED_DATA_NON_RETAINED_OFFSET (8) - -#ifdef CONFIG_USE_BLE -#define UNCALIBRATED_DATA_BLE_SIZE (0) -#define UNCALIBRATED_DATA_BLE_OFFSET (0) -#endif - -#ifdef CONFIG_USE_FTDF -#define UNCALIBRATED_DATA_FTDF_SIZE (0) -#define UNCALIBRATED_DATA_FTDF_OFFSET (0) -#endif - -#define UNCALIBRATED_DATA_RADIO_SIZE (0) -#define UNCALIBRATED_DATA_RADIO_OFFSET (0) - -#define UNCALIBRATED_DATA_CHARGER_SIZE (1 * 2) -#define UNCALIBRATED_DATA_CHARGER_OFFSET (8) - -#define UNCALIBRATED_DATA_AUDIO_SIZE (0) -#define UNCALIBRATED_DATA_AUDIO_OFFSET (0) - -#define UNCALIBRATED_DATA_SYSTEM_SIZE (0) -#define UNCALIBRATED_DATA_SYSTEM_OFFSET (0) - - -/* - * Forward declarations - */ - - - -/* - * Function definitions - */ - -/** - * \brief Apply a TCS pair. - * - * \param [in] address the address of the register - * \param [in] value the value for this register - * - */ -static void apply_pair(uint32_t address, uint32_t value) -{ - if (address & 0x2) { - *(volatile uint16_t *)address = value; - } - else { - *(volatile uint32_t *)address = value; - } -} - -/** - * \brief Apply a TCS entry of the TCS array. - * - * \param [in] address the address of the register - * \param [in] value the value for this register - * - */ -static void apply_entry(uint8_t index) -{ - uint32_t address = tcs_ptr[index]; - uint32_t value = tcs_ptr[index + 1]; - - if (address & 0x2) { - *(volatile uint16_t *)address = value; - } - else { - *(volatile uint32_t *)address = value; - } -} - -/** - * \brief Store TCS pair in the Global TCS array. - * - * \param [in] address the address of the register - * \param [in] value the value for this register - * - */ -static void store_in_array(uint32_t address, uint32_t value) -{ - tcs_data[tcs_length] = address; - tcs_length++; - tcs_data[tcs_length] = value; - tcs_length++; -} - -/** - * \brief Swaps the contents of two entries in the TCS array. - * - * \param [in] address the address of the register - * \param [in] value the value for this register - * - * \warning When this function is called, the RC16 must have been set as the system clock! - * - */ -static void swap_entries(uint32_t first_pos, uint32_t second_pos) -{ - uint32_t address_stored; - uint32_t value_stored; - - address_stored = tcs_data[second_pos]; - value_stored = tcs_data[second_pos + 1]; - tcs_data[second_pos] = tcs_data[first_pos]; - tcs_data[second_pos + 1] = tcs_data[first_pos + 1]; - tcs_data[first_pos] = address_stored; - tcs_data[first_pos + 1] = value_stored; -} - -/** - * \brief Sort the registers of a specific Memory Map area of the chip to a continuous region in the - * TCS array. - * - * \param [in] area_base the base address of the Memory Map area - * \param [in] area_size the size of the Memory Map region in bytes - * \param [in] array_ptr the current position in the TCS array to start reading from (all previous - * positions have been sorted) - * \param [out] ptr the offset of the beginning of the sorted region in the TCS array - * \param [out] size the size of the sorted region in bytes - * - * \return The updated position in the TCS array to start reading next time - */ -static int sys_tcs_sort_area(uint32_t area_base, uint32_t area_size, uint32_t array_ptr, uint8_t *ptr, uint8_t *size) -{ - uint32_t i = array_ptr; - uint32_t sort_start; - uint32_t sort_end; - - if (array_ptr == tcs_length) { - return array_ptr; // Nothing else is left in the array or tcs_length is zero - } - - sort_start = array_ptr; - sort_end = array_ptr; - - /* Make sure that the values in TCS don't overflow the allocated array */ - ASSERT_WARNING(tcs_length <= sizeof(tcs_data)/sizeof(tcs_data[0])); - - while (i < (tcs_length - 1)) { - if (IS_IN_AREA(tcs_data[i], area_base, area_size)) { - if (i == array_ptr) { - if (sort_start == array_ptr) { - sort_start = array_ptr; - sort_end = sort_start + 2; - } - } - else { - // Copy it to the proper place. - if (i != sort_end) { - swap_entries(sort_end, i); - } - sort_end += 2; - } - } - i += 2; - } - - *ptr = sort_start; - *size = sort_end - sort_start; - - return sort_end; -} - -void sys_tcs_init(void) -{ - tcs_length = 0; - sys_tcs_is_calibrated_chip = false; - hw_cpm_bod_enabled_in_tcs = 0; -} - -bool sys_tcs_store_pair(uint32_t address, uint32_t value) -{ - // If it stops here then tcs_length must become uint16_t. - ASSERT_WARNING( (256 * sizeof(tcs_length)) >= (24 * 2 + APPEND_TCS_LENGTH) ); - - // Check if the address is in Always-ON or of a retained register and apply it. - if (IS_IN_AREA(address, CRG_TOP_BASE, sizeof(CRG_TOP_Type)) - || IS_IN_AREA(address, TIMER1_BASE, sizeof(TIMER1_Type)) - || IS_IN_AREA(address, WAKEUP_BASE, sizeof(WAKEUP_Type)) - || IS_IN_AREA(address, DCDC_BASE, sizeof(DCDC_Type)) - || IS_IN_AREA(address, QSPIC_BASE, sizeof(QSPIC_Type)) - || IS_IN_AREA(address, CACHE_BASE, sizeof(CACHE_Type)) - || IS_IN_AREA(address, OTPC_BASE, sizeof(OTPC_Type))) { - if (address == (uint32_t)&CRG_TOP->BANDGAP_REG) { - sys_tcs_is_calibrated_chip = true; - } else if (address == (uint32_t)&CRG_TOP->CLK_16M_REG) { - value |= CRG_TOP_CLK_16M_REG_RC16M_ENABLE_Msk; // Make sure that RC16 is enabled! - } else if (address == (uint32_t)&CRG_TOP->XTALRDY_CTRL_REG) { - sys_tcs_xtal16m_settling_time = value; - } else if (address == (uint32_t)&CRG_TOP->BOD_CTRL2_REG) { - hw_cpm_bod_enabled_in_tcs = value; - /* - * Read the ADC Gain Error. Given that the Chip Configuration Section - * (CCS) of OTP is out of space, the values are stored in the TCS section - * using as address the read-only register SYS_STAT_REG. - * The 16 LSB of the 32bit data-value is the single ended gain error. - * The 16 MSB of the 32bit data-value is the differential gain error. - * Both gain error values should be interpreted as signed 16bit integers. - */ - } else if (dg_configUSE_ADC_GAIN_ERROR_CORRECTION == 1) { - if (address == (uint32_t)&CRG_TOP->SYS_STAT_REG) { - hw_gpadc_store_se_gain_error(ADC_SE_GAIN_ERROR(value)); - hw_gpadc_store_diff_gain_error(ADC_DIFF_GAIN_ERROR(value)); - } - } - apply_pair(address, value); - } else { - store_in_array(address, value); - } - - return sys_tcs_is_calibrated_chip; -} - -void sys_tcs_sort_array(void) -{ - int entry_ptr = 0; - int i; - - /* - * Apply a default value to CLK_FREQ_TRIM_REG, if not set in TCS. - * [10:8]: COARSE_ADJ = 0x4 - * [7:0]: FINE_ADJ = 0x60 - */ - if (CRG_TOP->CLK_FREQ_TRIM_REG == 0) { - CRG_TOP->CLK_FREQ_TRIM_REG = 0x0460; - } - - if (sys_tcs_is_calibrated_chip) { -#ifdef CONFIG_USE_BLE - entry_ptr = sys_tcs_sort_area(BLE_BASE, sizeof(BLE_Type), entry_ptr, - &area_offset[tcs_ble], &area_size_global[tcs_ble]); -#endif - -#ifdef CONFIG_USE_FTDF - entry_ptr = sys_tcs_sort_area(FTDF_BASE, sizeof(FTDF_Type), entry_ptr, - &area_offset[tcs_ftdf], &area_size_global[tcs_ftdf]); -#endif - - entry_ptr = sys_tcs_sort_area(RFCU_BASE, RADIO_AREA_SIZE, entry_ptr, - &area_offset[tcs_radio], &area_size_global[tcs_radio]); - - entry_ptr = sys_tcs_sort_area((uint32_t)&ANAMISC->CHARGER_CTRL2_REG, 1, entry_ptr, - &area_offset[tcs_charger], &area_size_global[tcs_charger]); - - entry_ptr = sys_tcs_sort_area(APU_BASE, sizeof(APU_Type), entry_ptr, - &area_offset[tcs_audio], &area_size_global[tcs_audio]); - - // The rest should be System. Assert if not! - for (i = entry_ptr; i < tcs_length; i += 2) { - if (IS_IN_AREA(tcs_data[i], UART_BASE, PERIPHERAL_AREA_SIZE)) { - ASSERT_WARNING(0); - } - - if (IS_IN_AREA(tcs_data[i], CRG_TOP_BASE, 0x6100)) { - // It is ok (most probably). - } - else { - ASSERT_WARNING(0); - } - } - area_offset[tcs_system] = entry_ptr; - area_size_global[tcs_system] = tcs_length - entry_ptr; - - tcs_ptr = tcs_data; - } - else { - tcs_ptr = uncalibrated_tcs_data; - - for (i = 0; i < UNCALIBRATED_DATA_NON_RETAINED_OFFSET; i += 2) { - apply_pair(tcs_ptr[i], tcs_ptr[i + 1]); - } - -#ifdef CONFIG_USE_BLE - if (UNCALIBRATED_DATA_BLE_SIZE > 0) { - area_offset[tcs_ble] = UNCALIBRATED_DATA_BLE_OFFSET; - area_size_global[tcs_ble] = UNCALIBRATED_DATA_BLE_SIZE; - } -#endif - -#ifdef CONFIG_USE_FTDF - if (UNCALIBRATED_DATA_FTDF_SIZE > 0) { - area_offset[tcs_ftdf] = UNCALIBRATED_DATA_FTDF_OFFSET; - area_size_global[tcs_ftdf] = UNCALIBRATED_DATA_FTDF_SIZE; - } -#endif - - if (UNCALIBRATED_DATA_RADIO_SIZE > 0) { - area_offset[tcs_radio] = UNCALIBRATED_DATA_RADIO_OFFSET; - area_size_global[tcs_radio] = UNCALIBRATED_DATA_RADIO_SIZE; - } - - if (UNCALIBRATED_DATA_CHARGER_SIZE > 0) { - area_offset[tcs_charger] = UNCALIBRATED_DATA_CHARGER_OFFSET; - area_size_global[tcs_charger] = UNCALIBRATED_DATA_CHARGER_SIZE; - } - - if (UNCALIBRATED_DATA_AUDIO_SIZE > 0) { - area_offset[tcs_audio] = UNCALIBRATED_DATA_AUDIO_OFFSET; - area_size_global[tcs_audio] = UNCALIBRATED_DATA_AUDIO_SIZE; - } - - if (UNCALIBRATED_DATA_SYSTEM_SIZE > 0) { - area_offset[tcs_system] = UNCALIBRATED_DATA_SYSTEM_OFFSET; - area_size_global[tcs_system] = UNCALIBRATED_DATA_SYSTEM_SIZE; - } - } -} - -void sys_tcs_apply(sys_tcs_area_t area) -{ - int i; - - for (i = area_offset[area]; i < (area_offset[area] + area_size_global[area]); i += 2) { - apply_entry(i); - } -} - -/** -\} -\} -\} -*/ diff --git a/third_party/dialog/DialogSDK/bsp/startup/config.c b/third_party/dialog/DialogSDK/bsp/startup/config.c deleted file mode 100755 index 4a2b82304..000000000 --- a/third_party/dialog/DialogSDK/bsp/startup/config.c +++ /dev/null @@ -1,143 +0,0 @@ -/** - **************************************************************************************** - * - * @file config.c - * - * @brief Configure system. - * - * Copyright (c) 2016, Dialog Semiconductor - * All rights reserved. - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. Neither the name of the copyright holder nor the names of its contributors - * may be used to endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, - * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, - * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED - * OF THE POSSIBILITY OF SUCH DAMAGE. - * - * - **************************************************************************************** - */ - -/** -\addtogroup BSP -\{ -\addtogroup SYSTEM -\{ -\addtogroup Start-up -\{ -*/ - -#include -#include -#include "sdk_defs.h" -#include "interrupts.h" - -/* - * Dialog default priority configuration table. - * - * Content of this table will be applied at system start. - * - * \note If interrupt priorities provided by Dialog need to be changed, do not modify this file. - * Create similar table with SAME name instead somewhere inside code without week attribute, - * and it will be used instead of table below. - */ -#pragma weak __dialog_interrupt_priorities -INTERRUPT_PRIORITY_CONFIG_START(__dialog_interrupt_priorities) - PRIORITY_0, /* Start interrupts with priority 0 (highest) */ - SVCall_IRQn, - PendSV_IRQn, - XTAL16RDY_IRQn, - PRIORITY_1, /* Start interrupts with priority 1 */ - BLE_WAKEUP_LP_IRQn, - BLE_GEN_IRQn, - FTDF_WAKEUP_IRQn, - FTDF_GEN_IRQn, - RFCAL_IRQn, - COEX_IRQn, - CRYPTO_IRQn, - RF_DIAG_IRQn, - PRIORITY_2, /* Start interrupts with priority 2 */ - DMA_IRQn, - I2C_IRQn, - I2C2_IRQn, - SPI_IRQn, - SPI2_IRQn, - ADC_IRQn, - SRC_IN_IRQn, - SRC_OUT_IRQn, - TRNG_IRQn, - LAST_IRQn, - PRIORITY_3, /* Start interrupts with priority 3 (lowest) */ - SysTick_IRQn, - UART_IRQn, - UART2_IRQn, - MRM_IRQn, - KEYBRD_IRQn, - IRGEN_IRQn, - WKUP_GPIO_IRQn, - SWTIM0_IRQn, - SWTIM1_IRQn, - QUADEC_IRQn, - USB_IRQn, - PCM_IRQn, - VBUS_IRQn, - DCDC_IRQn, -INTERRUPT_PRIORITY_CONFIG_END - -void set_interrupt_priorities(const int8_t prios[]) -{ - uint32_t old_primask, iser; - int i = 0; - uint32_t prio = 0; - - /* - * We shouldn't change the priority of an enabled interrupt. - * 1. Globally disable interrupts, saving the global interrupts disable state. - * 2. Explicitly disable all interrupts, saving the individual interrupt enable state. - * 3. Set interrupt priorities. - * 4. Restore individual interrupt enables. - * 5. Restore global interrupt enable state. - */ - old_primask = __get_PRIMASK(); - __disable_irq(); - iser = NVIC->ISER[0]; - NVIC->ICER[0] = iser; - - for (i = 0; prios[i] != PRIORITY_TABLE_END; ++i) { - switch (prios[i]) { - case PRIORITY_0: - case PRIORITY_1: - case PRIORITY_2: - case PRIORITY_3: - prio = prios[i] - PRIORITY_0; - break; - default: - NVIC_SetPriority(prios[i], prio); - break; - } - } - - NVIC->ISER[0] = iser; - __set_PRIMASK(old_primask); -} - -/** -\} -\} -\} -*/ diff --git a/third_party/dialog/DialogSDK/bsp/startup/startup_ARMCM0.S b/third_party/dialog/DialogSDK/bsp/startup/startup_ARMCM0.S deleted file mode 100755 index 776754021..000000000 --- a/third_party/dialog/DialogSDK/bsp/startup/startup_ARMCM0.S +++ /dev/null @@ -1,367 +0,0 @@ -/* File: startup_ARMCM0.S - * Purpose: startup file for Cortex-M0 devices. Should use with - * GCC for ARM Embedded Processors - * Version: V2.0 - * Date: 16 August 2013 - */ - -/* Copyright (c) 2011 - 2013 ARM LIMITED - - All rights reserved. - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of ARM nor the names of its contributors may be used - to endorse or promote products derived from this software without - specific prior written permission. - * - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDERS AND CONTRIBUTORS BE - LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - POSSIBILITY OF SUCH DAMAGE. - ---------------------------------------------------------------------------*/ - .syntax unified - .arch armv6-m - .section text_reset - .thumb - .thumb_func - .align 1 - .globl Reset_Handler - .type Reset_Handler, %function -Reset_Handler: -#if (dg_configSKIP_MAGIC_CHECK_AT_START == 0) -/* If the Magic Word {0xDEADBEEF, 0xDEADBEEF, 0xDEADBEEF, 0xDEAD10CC} is found at 0x7fd0000 then the - * execution will block for a while in order to give time to a debugger to attach. */ - ldr r4, =0x7fd0000 - ldmia r4!, {r0-r3} - ldr r4, =0xDEADBEEF - cmp r0, r4 - bne .code_starts - cmp r1, r4 - bne .code_starts - cmp r2, r4 - bne .code_starts - ldr r4, =0xDEAD10CC - cmp r3, r4 - bne .code_starts - /* Enable debugger */ - ldr r4, =0x50000012 - ldrh r5, [r4] - mov r6, r5 - movs r1, #128 - orrs r5, r5, r1 - strh r5, [r4] - /* Block for 2'' */ - ldr r0, =0x150000 -.delay_loop: - subs r0, #1 - bgt .delay_loop - /* Make sure that this will happen only once! */ - ldr r4, =0x7fd0000 - movs r0, #0 - str r0, [r4] - /* Restore debugger setting */ - ldr r4, =0x50000012 - strh r6, [r4] - -.code_starts: -#endif - -/* RAM shuffling configuration should be determined from the image in the QSPI Flash or OTP - * and must be applied at the beginning of the Reset Vector. The interrupt vector table must - * be copied to the RAM base after the shuffling is done. - * NOTE: Even though there is an OTP field specifically for the shuffling configuration - * we must bypass it here since the shuffling might change between different - * QSPI FLASH image versions. For OTP images RAM shuffling configuration will never change, - * but we also apply it to ignore the OTP field in any case. */ - ldr r4, =0x50000012 - movs r0, #0 - ldrh r0, [r4] - movs r1, #0x18 - bics r0, r0, r1 - movs r1, #dg_configSHUFFLING_MODE<<3 - orrs r0, r0, r1 - /* Update SYS_CTRL_REG. */ - strh r0, [r4] - - /* Copy ISR VT from from QSPI Flash/OTP to RAM. This must be done - * after applying shuffling mode. */ -# if (dg_configIMAGE_FLASH_OFFSET == 0) - ldr r1, =0x8000008 -# else - ldr r1, =(0x8000000 + dg_configIMAGE_FLASH_OFFSET) -# endif - ldr r2, =0x7FC0000 - ldr r3, =0x7FC00C0 - /* Block should be a multiple of 16 to traverse correctly L_loopIV */ - subs r3, r2 - ble .L_loopIV_done - -.L_loopIV: - ldmia r1!, {r4-r7} - stmia r2!, {r4-r7} - subs r3, #16 - bgt .L_loopIV - -.L_loopIV_done: - - bl SystemInitPre - bl SystemInit - -/* Firstly it copies data from read only memory to RAM. There are two schemes - * to copy. One can copy more than one sections. Another can only copy - * one section. The former scheme needs more instructions and read-only - * data to implement than the latter. - * Macro __STARTUP_COPY_MULTIPLE is used to choose between two schemes. */ -#define __STARTUP_COPY_MULTIPLE - -/* Multiple sections scheme. - * - * Between symbol address __copy_table_start__ and __copy_table_end__, - * there are array of triplets, each of which specify: - * offset 0: LMA of start of a section to copy from - * offset 4: VMA of start of a section to copy to - * offset 8: size of the section to copy. Must be multiply of 4 - * - * All addresses must be aligned to 4 bytes boundary. - */ - ldr r4, =__copy_table_start__ - ldr r0, =__copy_table_end__ - -.L_loop0: - cmp r4, r0 - bge .L_loop0_done - ldr r1, [r4] - ldr r2, [r4, #4] - ldr r3, [r4, #8] - push {r4} - -.L_loop0_0: - subs r3, #16 - blt .L_loop0_0_done - ldmia r1!, {r4-r7} - stmia r2!, {r4-r7} - b .L_loop0_0 - -.L_loop0_0_done: - pop {r4} - adds r4, #12 - b .L_loop0 - -.L_loop0_done: - -/* This part of work usually is done in C library startup code. Otherwise, - * define this macro to enable it in this startup. - * - * There are two schemes too. One can clear multiple BSS sections. Another - * can only clear one section. The former is more size expensive than the - * latter. - * - * Define macro __STARTUP_CLEAR_BSS_MULTIPLE to choose the former. - * Otherwise efine macro __STARTUP_CLEAR_BSS to choose the later. - */ -#define __STARTUP_CLEAR_BSS_MULTIPLE - -/* Multiple sections scheme. - * - * Between symbol address __copy_table_start__ and __copy_table_end__, - * there are array of tuples specifying: - * offset 0: Start of a BSS section - * offset 4: Size of this BSS section. Must be multiply of 4 - */ - ldr r3, =__zero_table_start__ - ldr r0, =__zero_table_end__ - movs r4, 0 - movs r5, r4 - mov r6, r4 - mov r7, r4 - -.L_loop2: - cmp r3, r0 - bge .L_loop2_done - ldr r1, [r3] - ldr r2, [r3, #4] - -.L_loop2_0: - subs r2, #32 // Requires 32-byte alignment! - blt .L_loop2_0_done - stmia r1!, {r4-r7} - stmia r1!, {r4-r7} - b .L_loop2_0 -.L_loop2_0_done: - - adds r3, #8 - b .L_loop2 -.L_loop2_done: - - /* Copy the address of the retained NMI and HardFault handlers to the vector table. */ - ldr r0, =0x7FC0008 - ldr r1, =NMI_Handler - str r1, [r0, #0] - ldr r1, =HardFault_Handler - str r1, [r0, #4] - - bl SystemInitPost - - bl main - - .pool - .size Reset_Handler, . - Reset_Handler - - .text - .align 1 - .thumb_func - .weak Default_Handler - .type Default_Handler, %function -Default_Handler: - /* - * enable debugger: - * CRG_TOP->SYS_CTRL_REG_b.DEBUGGER_ENABLE = 1; - */ - movs r1, #0x50 - lsls r1, #24 - ldrh r2, [r1, #0x12] - movs r3, #0x80 - orrs r2, r2, r3 - strh r2, [r1, #0x12] - b . - .size Default_Handler, . - Default_Handler - -/* Macro to define default handlers. Default handler - * will be weak symbol and just dead loops. They can be - * overwritten by other handlers */ - .macro def_irq_handler handler_name - .weak \handler_name - .set \handler_name, Default_Handler - .endm - - .thumb - .thumb_func - .align 1 - .weak SVC_Handler - .type SVC_Handler, %function -SVC_Handler: - b . - .size SVC_Handler, . - SVC_Handler - - def_irq_handler PendSV_Handler - def_irq_handler SysTick_Handler - def_irq_handler BLE_WAKEUP_LP_Handler - def_irq_handler BLE_GEN_Handler - def_irq_handler FTDF_WAKEUP_Handler - def_irq_handler FTDF_GEN_Handler - def_irq_handler RFCAL_Handler - def_irq_handler COEX_Handler - def_irq_handler CRYPTO_Handler - def_irq_handler MRM_Handler - def_irq_handler UART_Handler - def_irq_handler UART2_Handler - def_irq_handler I2C_Handler - def_irq_handler I2C2_Handler - def_irq_handler SPI_Handler - def_irq_handler SPI2_Handler - def_irq_handler ADC_Handler - def_irq_handler KEYBRD_Handler - def_irq_handler IRGEN_Handler - def_irq_handler WKUP_GPIO_Handler - def_irq_handler SWTIM0_Handler - def_irq_handler SWTIM1_Handler - def_irq_handler QUADEC_Handler - def_irq_handler USB_Handler - def_irq_handler PCM_Handler - def_irq_handler SRC_IN_Handler - def_irq_handler SRC_OUT_Handler - def_irq_handler VBUS_Handler - def_irq_handler DMA_Handler - def_irq_handler RF_DIAG_Handler - def_irq_handler TRNG_Handler - def_irq_handler DCDC_Handler - def_irq_handler XTAL16RDY_Handler - def_irq_handler RESERVED31_Handler - - .section text_retained - .align 1 - .thumb - .thumb_func - .globl NMI_Handler - .type NMI_Handler, %function -NMI_Handler: - ldr r1, =NMI_HandlerC - movs r0, #4 - mov r2, lr - tst r0, r2 - beq NMI_stacking_using_MSP - mrs r0, psp - b stack_check -NMI_stacking_using_MSP: - mrs r0, msp - b stack_check - .size NMI_Handler, . - NMI_Handler - - .align 1 - .thumb - .thumb_func - .globl HardFault_Handler - .type HardFault_Handler, %function -HardFault_Handler: - ldr r1, =HardFault_HandlerC - movs r0, #4 - mov r2, lr - tst r0, r2 - beq HF_stacking_using_MSP - mrs r0, psp - b stack_check -HF_stacking_using_MSP: - mrs r0, msp -stack_check: - /* 0x7FC0000 is start of RAM */ - ldr r2, =0x7FC0000 - cmp r0, r2 - blt Wrong_SP - /* Check SYS_CTRL_REG:CACHERAM_MUX */ - ldr r2, =0x50000012 - ldrh r2, [r2] - movs r3, #1 - lsls r3, r3, #10 - ands r2, r2, r3 - bne cache_is_on - /* 0x7FE4000 marks end of RAM (assuming that the CACHE is used as RAM) */ - ldr r2, =0x7FE4000-32 - b check_end_of_ram -cache_is_on: - /* 0x7FE0000 marks end of RAM */ - ldr r2, =0x7FE0000-32 -check_end_of_ram: - cmp r0, r2 - bgt Wrong_SP - bx r1 -Wrong_SP: - /* Freeze WDog at all times */ - ldr r0, =0x50003300 - ldr r1, =8 - strh r1, [r0, #0] - /* Enable debugger at all times */ - ldr r4, =0x50000012 - ldrh r0, [r4, #0] - movs r1, #0x80 - orrs r0, r0, r1 - /* Update SYS_CTRL_REG */ - strh r0, [r4, #0] - - /* Wait for the WDog to hit or a debug session to start */ - b . - .size HardFault_Handler, . - HardFault_Handler - - .end - diff --git a/third_party/dialog/DialogSDK/bsp/startup/system_ARMCM0.c b/third_party/dialog/DialogSDK/bsp/startup/system_ARMCM0.c deleted file mode 100755 index 2e7339544..000000000 --- a/third_party/dialog/DialogSDK/bsp/startup/system_ARMCM0.c +++ /dev/null @@ -1,571 +0,0 @@ -/**************************************************************************//** - * @file system_ARMCM0.c - * @brief CMSIS Device System Source File for - * ARMCM0 Device Series - * @version V2.00 - * @date 18. August 2015 - ******************************************************************************/ -/* Copyright (c) 2011 - 2015 ARM LIMITED - - All rights reserved. - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of ARM nor the names of its contributors may be used - to endorse or promote products derived from this software without - specific prior written permission. - * - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDERS AND CONTRIBUTORS BE - LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - POSSIBILITY OF SUCH DAMAGE. - ---------------------------------------------------------------------------*/ - - -#include -#include -#include -#include -#include "sdk_defs.h" -#include "interrupts.h" -#include "hw_cpm.h" -#include "hw_otpc.h" -#include "hw_qspi.h" -#include "hw_watchdog.h" -#include "sys_tcs.h" -#include "qspi_automode.h" - -/* - * This is just so that compilation doesn't break for RAM builds. - * The code that uses it is optimized out in RAM builds. - */ -extern uint32_t NVMS_PARAM_PART_end; - -/* - * TCS Offsets - */ -#define OTP_HEADER_BASE_ADDR_IN_OTP (0x7F8E9C0) - -#define TCS_SECTION_OFFSET (184) /* 0x7F8EA78 - 0x7F8E9C0 */ -#define TCS_SECTION_LENGTH (24) /* 24 entries, 16 bytes each for OTP */ - -#ifndef __SYSTEM_CLOCK -# define __SYSTEM_CLOCK (16000000UL) /* 16 MHz */ -#endif - -#if (dg_configUSE_LP_CLK == LP_CLK_32000) -# define LP_CLK_FREQ (32000) - -#elif (dg_configUSE_LP_CLK == LP_CLK_32768) -# define LP_CLK_FREQ (32768) - -#elif (dg_configUSE_LP_CLK == LP_CLK_RCX) -# define LP_CLK_FREQ (0) - -#else -# error "dg_configUSE_LP_CLK is not defined or has an unknown value!" -#endif - -/* - * Linker symbols - * - * Note: if any of them is missing, please correct your linker script. Please refer to the linker - * script of pxp_reporter. - */ -extern uint32_t __copy_table_start__; -extern uint32_t __copy_table_end__; -extern uint32_t __zero_table_start__; -extern uint32_t __zero_table_end__; -extern uint8_t end; -extern uint8_t __HeapLimit; - -/* - * Global variables - */ -__RETAINED_RW static uint8_t *heapend = &end; -__RETAINED_UNINIT __attribute__((unused)) uint32_t black_orca_chip_version; -uint32_t SystemCoreClock __RETAINED = __SYSTEM_CLOCK; /*!< System Clock Frequency (Core Clock)*/ -uint32_t SystemLPClock __RETAINED = LP_CLK_FREQ; /*!< System Low Power Clock Frequency (LP Clock)*/ - -/** - * @brief Memory safe implementation of newlib's _sbrk(). - * - */ -__LTO_EXT -void *_sbrk(int incr) -{ - uint8_t *newheapstart; - - if (heapend + incr > &__HeapLimit) { - /* Hitting this, means that the value of _HEAP_SIZE is too small. - * The value of incr is in stored_incr at this point. By checking the equation - * above, it is straightforward to determine the missing space. - */ - volatile int stored_incr __attribute__((unused)); - - stored_incr = incr; - ASSERT_ERROR(0); - - errno = ENOMEM; - return (void *)-1; - } - - newheapstart = heapend; - heapend += incr; - - return newheapstart; -} - -/** - * Apply trim values from OTP. - * - * @brief Writes the trim values located in the OTP to the corresponding system registers. - * - * @param[out] tcs_array The valid pairs are placed in this buffer. - * @param[out] valid_entries The number of valid pairs. - * - * @return True if at least one trim value has been applied, else false. - * - */ -static bool apply_trim_values_from_otp(uint32_t *tcs_array, uint32_t *valid_entries) -{ - uint32_t address; - uint32_t inverted_address; - uint32_t value; - uint32_t inverted_value; - uint32_t *p; - int i; - int index = 0; - int vdd = 0; - int retries = 0; - bool forward_reading = true; - bool res = false; - - p = (uint32_t *)(OTP_HEADER_BASE_ADDR_IN_OTP + TCS_SECTION_OFFSET); - - for (i = 0; i < TCS_SECTION_LENGTH; i++) { - do { - address = *p; - p++; - inverted_address = *p; - p++; - value = *p; - p++; - inverted_value = *p; - p++; - - if ((address == 0) && (value == 0)) { - break; - } - - // Check validity - if ((address != ~inverted_address) || (value != ~inverted_value)) { - // Change LDO core voltage level and retry - vdd++; - vdd &= 0x3; - REG_SETF(CRG_TOP, LDO_CTRL1_REG, LDO_CORE_SETVDD, vdd); - - // Wait for the voltage to settle... - SysTick->CTRL = 0; - SysTick->LOAD = 500; // 500 * (62.5 * 4) = 125usec - SysTick->VAL = 0; - SysTick->CTRL = 0x5; // Start using system clock - while ((SysTick->CTRL & SysTick_CTRL_COUNTFLAG_Msk) == 0) {} - - // Adjust the read pointer - p -= 4; - } - - retries++; - if (retries == 32) { - // Unrecoverable problem! Assert in development mode - ASSERT_WARNING(0); - - // Unrecoverable problem! Issue a HW reset. - hw_cpm_reset_system(); - } - } while ((address != ~inverted_address) || (value != ~inverted_value)); - - retries = 0; - - // Read the complete TCS area but skip empty entries. - if ((address == 0) && (value == 0)) { - if ((BLACK_ORCA_TARGET_IC >= BLACK_ORCA_IC_VERSION(A, E)) - || ((dg_configUSE_AUTO_CHIP_DETECTION == 1) - && (CHIP_IS_AE || CHIP_IS_BB))) { - if (!forward_reading) { - break; - } - - forward_reading = false; - p = (uint32_t *)(OTP_HEADER_BASE_ADDR_IN_OTP + TCS_SECTION_OFFSET); - p += (TCS_SECTION_LENGTH - 1) * 4; - } - else { - (void)forward_reading; - } - - continue; - } - - if (!forward_reading) { - p -= 8; - } - - sys_tcs_store_pair(address, value); - - tcs_array[(index * 2) + 0] = address; - tcs_array[(index * 2) + 1] = value; - - *valid_entries = index + 1; - index++; - - res = true; - } - - return res; -} - -/** - * Check whether the code has been compiled for a chip version that is compatible with the chip - * it runs on. - */ -static bool is_compatible_chip_version(void) -{ - const uint32_t ver = black_orca_get_chip_version(); - - /* Oldest supported version is AE. */ - if ((ver < BLACK_ORCA_IC_VERSION(A, E)) && (dg_configUSE_AUTO_CHIP_DETECTION == 0)) { - return false; - } - - if ((ver == BLACK_ORCA_TARGET_IC) || (dg_configUSE_AUTO_CHIP_DETECTION == 1)) { - return true; - } - - return false; -} - -#ifdef OS_BAREMETAL - -static volatile bool nortos_xtal16m_settled = false; - -void XTAL16RDY_Handler(void) -{ - nortos_xtal16m_settled = true; -} - -/* carry out clock initialization sequence */ -static void nortos_clk_setup(void) -{ - // Setup DIVN - if (dg_configEXT_CRYSTAL_FREQ == EXT_CRYSTAL_IS_16M) { - hw_cpm_set_divn(false); // External crystal is 16MHz - } - else { - hw_cpm_set_divn(true); // External crystal is 32MHz - } - hw_cpm_enable_rc32k(); - hw_cpm_lp_set_rc32k(); - - NVIC_ClearPendingIRQ(XTAL16RDY_IRQn); - nortos_xtal16m_settled = false; - NVIC_EnableIRQ(XTAL16RDY_IRQn); // Activate XTAL16 Ready IRQ - - hw_cpm_set_xtal16m_settling_time(dg_configXTAL16_SETTLE_TIME_RC32K); - hw_cpm_enable_xtal16m(); // Enable XTAL16M - hw_watchdog_unfreeze(); // Start watchdog - - while(!hw_cpm_is_xtal16m_started()); // Block until XTAL16M starts - - /* Wait for XTAL16M to settle */ - while(!nortos_xtal16m_settled); - - hw_watchdog_freeze(); // Stop watchdog - hw_cpm_set_sysclk(SYS_CLK_IS_XTAL16M); -} - -#endif /* OS_BAREMETAL */ - -static __RETAINED_CODE void configure_cache(void) -{ - bool flush = false; - - GLOBAL_INT_DISABLE(); - - if (dg_configCACHEABLE_QSPI_AREA_LEN != -1) { - uint32_t cache_len; - - /* dg_configCACHEABLE_QSPI_AREA_LEN must be 64KB-aligned */ - ASSERT_WARNING((dg_configCACHEABLE_QSPI_AREA_LEN & 0xFFFF) == 0); - /* - * dg_configCACHEABLE_QSPI_AREA_LEN shouldn't set any bits that do not fit in - * CACHE_CTRL2_REG.CACHE_LEN (9 bits wide) after shifting out the lower 16 bits - */ - ASSERT_WARNING((dg_configCACHEABLE_QSPI_AREA_LEN & 0x1FF0000) - == dg_configCACHEABLE_QSPI_AREA_LEN); - /* - * set cacheable area - * - * setting CACHE_CTRL2_REG.CACHE_LEN to N, actually sets the size of the cacheable - * area to (N + 1) * 64KB - * special cases: - * N == 0 --> no caching - * N == 1 --> 128KB are cached, i.e. no way to cache only 64KB - */ - cache_len = dg_configCACHEABLE_QSPI_AREA_LEN >> 16; - /* cannot cache only 64KB! */ - ASSERT_WARNING(cache_len != 1); - if (cache_len > 1) { - cache_len--; - } - REG_SETF(CACHE, CACHE_CTRL2_REG, CACHE_LEN, cache_len); - } - - if (dg_configCACHE_ASSOCIATIVITY != CACHE_ASSOC_AS_IS) { - if (CACHE->CACHE_ASSOCCFG_REG != dg_configCACHE_ASSOCIATIVITY) { - /* override the set associativity setting */ - CACHE->CACHE_ASSOCCFG_REG = dg_configCACHE_ASSOCIATIVITY; - flush = true; - } - } - - if (dg_configCACHE_LINESZ != CACHE_LINESZ_AS_IS) { - if (CACHE->CACHE_LNSIZECFG_REG != dg_configCACHE_LINESZ) { - /* override the cache line setting */ - CACHE->CACHE_LNSIZECFG_REG = dg_configCACHE_LINESZ; - flush = true; - } - } - - if (flush && (REG_GETF(CACHE, CACHE_CTRL2_REG, CACHE_LEN) > 0)) { - /* flush cache */ - REG_SET_BIT(CACHE, CACHE_CTRL1_REG, CACHE_FLUSH); - } - - GLOBAL_INT_RESTORE(); -} - -/** - * Basic system setup - * - * @brief Setup the AMBA clocks. Ensure proper alignment of copy and zero table entries. - */ -void SystemInitPre(void) __attribute__((section("text_reset"))); - -void SystemInitPre(void) -{ - /* - * Enable debugger. - */ - if (dg_configENABLE_DEBUGGER) { - ENABLE_DEBUGGER; - } - - /* - * Bandgap has already been set by the bootloader. - * Use fast clocks from now on. - */ - hw_cpm_set_hclk_div(0); - hw_cpm_set_pclk_div(0); - - /* - * Ensure 16-byte alignment for all elements of each entry in the Copy Table. This is - * a requirement imposed by the fast start-up code! If any of the assertions below hits, - * please correct your linker script file accordingly! - */ - if (dg_configIMAGE_SETUP == DEVELOPMENT_MODE) { - uint32_t *p; - - for (p = &__copy_table_start__; p < &__copy_table_end__; p += 3) { - ASSERT_WARNING_UNINIT( (p[0] & 0xF) == 0 ); // from - ASSERT_WARNING_UNINIT( (p[1] & 0xF) == 0 ); // to - ASSERT_WARNING_UNINIT( (p[2] & 0xF) == 0 ); // size - } - } - - /* - * Ensure 32-byte alignment for all elements of each entry in the Data Table. This is - * a requirement imposed by the fast start-up code! If any of the assertions below hits, - * please correct your linker script file accordingly! - */ - if (dg_configIMAGE_SETUP == DEVELOPMENT_MODE) { - uint32_t *p; - - for (p = &__zero_table_start__; p < &__zero_table_end__; p += 2) { - ASSERT_WARNING_UNINIT( (p[0] & 0x1F) == 0 ); // start at - ASSERT_WARNING_UNINIT( (p[1] & 0x1F) == 0 ); // size - } - } -} - -/** - * Initialize the system - * - * @brief Setup the microcontroller system. - * Initialize the System. - */ -void SystemInit(void) -{ - /* - * Make sure we are running on a chip version that the code has been built for. - */ - ASSERT_WARNING_UNINIT(is_compatible_chip_version()); - - /* - * Detect chip version (optionally). - */ - if (dg_configUSE_AUTO_CHIP_DETECTION == 1) { - black_orca_chip_version = black_orca_get_chip_version(); - - if (!CHIP_IS_AE && !CHIP_IS_BB) { - // Oldest supported version is AE. - ASSERT_WARNING_UNINIT(0); - } - } - - /* - * Initialize UNINIT variables. - */ - sys_tcs_init(); - - /* - * BOD protection - */ - if (dg_configUSE_BOD == 1) { - /* BOD has already been enabled at this point but it must be reconfigured */ - hw_cpm_configure_bod_protection(); - } else { - hw_cpm_deactivate_bod_protection(); - } - - /* - * Apply default priorities to interrupts. - */ - set_interrupt_priorities(__dialog_interrupt_priorities); - - /* - * If we are executing from RAM, make sure that code written in Flash won't have left the - * system in "unknown" state. - */ - if (dg_configCODE_LOCATION == NON_VOLATILE_IS_NONE) { - GLOBAL_INT_DISABLE(); - CRG_TOP->PMU_CTRL_REG |= 0xE; - CRG_TOP->PMU_CTRL_REG &= ~1; - GLOBAL_INT_RESTORE(); - } - - /* - * Switch to RC16. - */ - hw_cpm_set_sysclk(SYS_CLK_IS_RC16); // Use RC16 - hw_cpm_disable_xtal16m(); // Disable XTAL16M - - /* - * Set highest access speed for QSPI Flash. - */ - if (dg_configFLASH_CONNECTED_TO != FLASH_IS_NOT_CONNECTED) { - hw_qspi_set_div(HW_QSPI_DIV_1); - } -} - -/** - * Process the TCS - * - * @brief Process the TCS section. - */ -void SystemInitPost(void) -{ - SystemCoreClock = __SYSTEM_CLOCK; - SystemLPClock = LP_CLK_FREQ; - - uint32_t tcs_pairs[TCS_SECTION_LENGTH * 2]; - uint32_t valid_tcs_pairs = 0; - - hw_cpm_start_ldos(); // Make sure all LDOs are as expected - hw_cpm_reset_radio_vdd(); // Set Radio voltage to 1.40V - - /* - * Initialize Flash - */ - if (dg_configFLASH_CONNECTED_TO != FLASH_IS_NOT_CONNECTED) { - qspi_automode_init(); // The bootloader may have left the Flash in wrong mode... - } - - /* - * Retrieve trim values from OTP. - */ - hw_otpc_init(); // Start clock. - hw_otpc_disable(); // Make sure it is in standby mode. - hw_otpc_init(); // Restart clock. - hw_otpc_manual_read_on(false); - - /* - * Apply trim values from OTP. - */ - apply_trim_values_from_otp(tcs_pairs, &valid_tcs_pairs); - - if (dg_configIMAGE_SETUP == PRODUCTION_MODE) { - ASSERT_ERROR(sys_tcs_is_calibrated_chip); // Uncalibrated chip!!! - } - - hw_otpc_manual_read_off(); - hw_otpc_disable(); - - if (dg_configFLASH_CONNECTED_TO != FLASH_IS_NOT_CONNECTED) { - hw_cpm_enable_qspi_init(); // Enable QSPI init after wakeup - - hw_qspi_set_read_pipe_clock_delay(6); // Set read pipe clock delay to 6 (Last review date: Feb 15, 2016 - 12:25:47) - } - - /* - * All trim values have been loaded from TCS or defaults are used. - */ - sys_tcs_sort_array(); - sys_tcs_apply(tcs_system); - hw_cpm_set_preferred_values(); - -#ifdef OS_BAREMETAL - /* perform clock initialization here, as there is no CPM to do it later for us */ - nortos_clk_setup(); -#endif - - configure_cache(); -} - -uint32_t DA15000_phy_addr(uint32_t addr) -{ - static const uint32 remap[] = { - MEMORY_ROM_BASE, - MEMORY_OTP_BASE, - MEMORY_QSPIF_BASE, - MEMORY_SYSRAM_BASE, - MEMORY_QSPIF_BASE, - MEMORY_OTP_BASE, - MEMORY_CACHERAM_BASE, - 0 - }; - - if (addr >= MEMORY_REMAPPED_END) - return addr; - - return addr + remap[REG_GETF(CRG_TOP, SYS_CTRL_REG, REMAP_ADR0)]; -} - -__extension__ typedef int __guard __attribute__((mode(__DI__))); -int __cxa_guard_acquire(__guard *g) { return !*(char *)(g); } -void __cxa_guard_release(__guard *g) { *(char *)g = 1; } -void __cxa_guard_abort(__guard *g) { (void)g; } -void __cxa_pure_virtual(void) { while (1); } - diff --git a/third_party/dialog/DialogSDK/bsp/startup/vector_table.S b/third_party/dialog/DialogSDK/bsp/startup/vector_table.S deleted file mode 100755 index 2700c1777..000000000 --- a/third_party/dialog/DialogSDK/bsp/startup/vector_table.S +++ /dev/null @@ -1,178 +0,0 @@ -/** - **************************************************************************************** - * - * @file vector_table.S - * - * @brief Interrupt Vector Table and Patch Table - * - * Copyright (c) 2016, Dialog Semiconductor - * All rights reserved. - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. Neither the name of the copyright holder nor the names of its contributors - * may be used to endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, - * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, - * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED - * OF THE POSSIBILITY OF SUCH DAMAGE. - * - * - **************************************************************************************** - */ - - .syntax unified - .arch armv6-m - - .section .stack - .align 3 - .equ Stack_Size, __STACK_SIZE - .globl __StackTop - .globl __StackLimit -__StackLimit: - .space Stack_Size - .size __StackLimit, . - __StackLimit -__StackTop: - .size __StackTop, . - __StackTop - - .section .heap - .align 3 - .equ Heap_Size, __HEAP_SIZE - .globl __HeapBase - .globl __HeapLimit -__HeapBase: - .if Heap_Size - .space Heap_Size - .endif - .size __HeapBase, . - __HeapBase -__HeapLimit: - .size __HeapLimit, . - __HeapLimit - - .section .isr_vector, "a" - .align 2 - .globl __isr_vector -__isr_vector: - .long __StackTop /* Top of Stack */ - .long Reset_Handler /* Reset Handler */ - .long Default_Handler /* replaced by NMI_Handler after the ISR is copied to retRAM*/ - .long Default_Handler /* replaced by HardFault_Handler after the ISR is copied to retRAM */ - .long 0 /* Reserved */ - .long 0 /* Reserved */ - .long 0 /* Reserved */ - .long 0 /* Reserved */ - .long 0 /* Reserved */ - .long 0 /* Reserved */ - .long 0 /* Reserved */ - .long SVC_Handler /* SVCall Handler */ - .long 0 /* Reserved */ - .long 0 /* Reserved */ - .long PendSV_Handler /* PendSV Handler */ - .long SysTick_Handler /* SysTick Handler */ - - /* External interrupts */ - .long BLE_WAKEUP_LP_Handler /* 0 */ - .long BLE_GEN_Handler /* 1 */ - .long FTDF_WAKEUP_Handler /* 2 */ - .long FTDF_GEN_Handler /* 3 */ - .long RFCAL_Handler /* 4 */ - .long COEX_Handler /* 5 */ - .long CRYPTO_Handler /* 6 */ - .long MRM_Handler /* 7 */ - .long UART_Handler /* 8 */ - .long UART2_Handler /* 9 */ - .long I2C_Handler /* 10 */ - .long I2C2_Handler /* 11 */ - .long SPI_Handler /* 12 */ - .long SPI2_Handler /* 13 */ - .long ADC_Handler /* 14 */ - .long KEYBRD_Handler /* 15 */ - .long IRGEN_Handler /* 16 */ - .long WKUP_GPIO_Handler /* 17 */ - .long SWTIM0_Handler /* 18 */ - .long SWTIM1_Handler /* 19 */ - .long QUADEC_Handler /* 20 */ - .long USB_Handler /* 21 */ - .long PCM_Handler /* 22 */ - .long SRC_IN_Handler /* 23 */ - .long SRC_OUT_Handler /* 24 */ - .long VBUS_Handler /* 25 */ - .long DMA_Handler /* 26 */ - .long RF_DIAG_Handler /* 27 */ - .long TRNG_Handler /* 28 */ - .long DCDC_Handler /* 29 */ - .long XTAL16RDY_Handler /* 30 */ - .long RESERVED31_Handler /* 31 */ - - .size __isr_vector, . - __isr_vector - - /* - * Patch Table - * Notice: it crosses the 0x100 boundary - * in cached mode, the first entries will be copied to - * (and accessed from) RAM and others will only lie on - * QSPI flash or OTP. - * - * In C declare: extern uint32_t __patch_table_start[]; - */ - .section .patch_table, "a" - .align 4 - .globl __patch_table_start -__patch_table_start: - /* - * 28 32-bit entries, initialized to "pointer to Default_Patch_Code" - * - * NOTE: we assume that SYS_CTRL_REG.REMAP_INTVECT == 1 - */ - .long Default_Patch_Code_Handler /* 0, in RAM */ - .long Default_Patch_Code_Handler /* 1, in RAM */ - .long Default_Patch_Code_Handler /* 2, in RAM */ - .long Default_Patch_Code_Handler /* 3, in RAM */ - .long Default_Patch_Code_Handler /* 4, in RAM */ - .long Default_Patch_Code_Handler /* 5, in RAM */ - .long Default_Patch_Code_Handler /* 6, in RAM */ - .long Default_Patch_Code_Handler /* 7, in RAM */ - .long Default_Patch_Code_Handler /* 8, in RAM */ - .long Default_Patch_Code_Handler /* 9, in RAM */ - .long Default_Patch_Code_Handler /* 10, in RAM */ - .long Default_Patch_Code_Handler /* 11, in RAM */ - /* - * Chip version: AD - * Entries 12, 13, 14 and 15 are unusable and skipped in the QSPI image, - * to account for the overhead of the QSPI header (16 bytes). - * - * Chip version: AA, AC, AE - * Entries 14 and 15 are unusable and skipped in the QSPI image, - * to account for the overhead of the QSPI header (8 bytes). - * - * The mkimage tool is responsible for stripping the proper entries from the QSPI image. - */ - .long Default_Patch_Code_Handler /* 12 */ - .long Default_Patch_Code_Handler /* 13 */ - .long 0xDEADBEEF /* 14 */ - .long 0xDEADBEEF /* 15 */ - .size __patch_table_start, . - __patch_table_start - -__patch_table_end: - - .section .default_patch_code_handler_section, "a" - .globl Default_Patch_Code_Handler - .align 1 - .thumb - .thumb_func - .type Default_Patch_Code_Handler, %function -Default_Patch_Code_Handler: - bkpt #0 - bkpt #0 - diff --git a/third_party/dialog/DialogSDK/interfaces/ftdf/include/ad_ftdf_config.h b/third_party/dialog/DialogSDK/interfaces/ftdf/include/ad_ftdf_config.h deleted file mode 100644 index 26a3858b7..000000000 --- a/third_party/dialog/DialogSDK/interfaces/ftdf/include/ad_ftdf_config.h +++ /dev/null @@ -1,118 +0,0 @@ -/** - \addtogroup INTERFACES - \{ - \addtogroup FTDF - \{ - */ - -/** - **************************************************************************************** - * - * @file ad_ftdf_config.h - * - * @brief FTDF Adapter API - * - * Copyright (c) 2016, Dialog Semiconductor - * All rights reserved. - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. Neither the name of the copyright holder nor the names of its contributors - * may be used to endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, - * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, - * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED - * OF THE POSSIBILITY OF SUCH DAMAGE. - * - * - **************************************************************************************** - */ - -#ifndef AD_FTDF_CONFIG_H -#define AD_FTDF_CONFIG_H - -#ifndef FTDF_PHY_API -#include "queue.h" -#endif - -#include "ftdf.h" - - -/** - * \brief Sleep When Idle - * - * If set, the block will sleep when Idle - * - */ -#define AD_FTDF_SLEEP_WHEN_IDLE 1 - -/** - * \brief Idle Timeout - * - * Idle Timeout, in OS scheduler ticks, after which, if still Idle, FTDF will - * be put to sleep. Only applicable if AD_FTDF_SLEEP_WHEN_IDLE 1 - * - */ -#define AD_FTDF_IDLE_TIMEOUT 1 - -/** - * \brief UP Queue size - * - * Defines the UP (UMAC to client app) Queue length, in number of messages - * - */ -#define AD_FTDF_UP_QUEUE_LENGTH 16 - -/** - * \brief DOWN Queue size - * - * Defines the DOWN (client app to UMAC) Queue length, in number of messages - * - */ -#define AD_FTDF_DOWN_QUEUE_LENGTH 16 - -/** - * \brief Low Power Clock cycle - * - * Defines the Low Power clock cycle in pico secs. Used for computation needed - * for sleeping / waking up FTDF - * - */ -#define AD_FTDF_LP_CLOCK_CYCLE 30517578 - -/** - * \brief Wake Up Latency - * - * Defines the Wake Up Latency expressed in Low Power clock cycles, that is - * the number of LP clock cycles needed for the FTDF to be fully operational - * (calculations and FTDF timer synchronization) - * - */ -#define AD_FTDF_WUP_LATENCY 10 - -/** - * \brief Sleep value compensation - * - * Defines the sleep value compensation expressed in microseconds. This value - * is subtracted from the sleep time returned by ftdf_can_sleep() - */ -#define AD_FTDF_SLEEP_COMPENSATION 1500 - -#endif /* AD_FTDF_CONFIG_H */ -/** - \} - \} - \} - */ diff --git a/third_party/dialog/DialogSDK/interfaces/ftdf/include/ad_ftdf_phy_api.h b/third_party/dialog/DialogSDK/interfaces/ftdf/include/ad_ftdf_phy_api.h deleted file mode 100644 index 4b878cf8c..000000000 --- a/third_party/dialog/DialogSDK/interfaces/ftdf/include/ad_ftdf_phy_api.h +++ /dev/null @@ -1,143 +0,0 @@ -/** - \addtogroup INTERFACES - \{ - \addtogroup FTDF - \{ - */ - -/** - **************************************************************************************** - * - * @file ad_ftdf_phy_api.h - * - * @brief FTDF PHY Adapter API - * - * Copyright (c) 2016, Dialog Semiconductor - * All rights reserved. - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. Neither the name of the copyright holder nor the names of its contributors - * may be used to endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, - * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, - * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED - * OF THE POSSIBILITY OF SUCH DAMAGE. - * - * - **************************************************************************************** - */ - -#ifndef AD_FTDF_PHY_API_H -#define AD_FTDF_PHY_API_H - -#include "ftdf.h" -#include "ad_ftdf_config.h" - -/** - * \brief Initialize adapter - create queues - * - */ -void ad_ftdf_init(void); - -/** - * \brief Set Extended Address - * - * Sets interface extended address. This is thread safe. - * - * \param[in] address - The extended address to set - */ -void ad_ftdf_set_ext_address(ftdf_ext_address_t address); - -/** - * \brief Get Extended Address - * - * Gets interface extended address. This is thread safe. - * - * \returns The extended address of the interface - */ -ftdf_ext_address_t ad_ftdf_get_ext_address(void); - -/** - * \brief Transmits a frame - * - * Transmits a frame. Params: - * - * \param[in] frame_length - The total length of the frame passed in bytes - * \param[in] frame - a pointer to the passed frame buffer - * \param[in] channel - The channel to use for transmission in [11, 26] - * \param[in] csma_suppress - If true, csma protocol (i.e. CCA) will not be performed - * \param[in] pti - Packet Traffic Information that will be used for this transaction. - */ -ftdf_status_t ad_ftdf_send_frame_simple(ftdf_data_length_t frame_length, - ftdf_octet_t* frame, - ftdf_channel_number_t channel, - ftdf_pti_t pti, - ftdf_boolean_t csma_suppress); - -/** - * \brief Instructs the MAC and PHY to go to sleep - * - * \param[in] allow_deferred_sleep - If true, then if the MAC cannot go to sleep immediately - * (e.g. a transmission is pending), the MAC will go to sleep - * as soon as possible. If false, and the MAC cannot go to sleep - * immediately, sleep will be aborted. - */ -void ad_ftdf_sleep_when_possible(ftdf_boolean_t allow_deferred_sleep); - -/** - * \brief Instructs the MAC and PHY to wakeup, if sleeping - * - */ -void ad_ftdf_wake_up(void); - -#if FTDF_DBG_BUS_ENABLE -/** - * \brief Configures GPIO pins for the FTDF debug bus - * - * if FTDF_DBG_BUS_USE_PORT_4 == 0, the FTDF debug bus uses the following (fixed) GPIO pins, - * - * bit 0: HW_GPIO_PORT_1, HW_GPIO_PIN_4 - * bit 1: HW_GPIO_PORT_1, HW_GPIO_PIN_5 - * bit 2: HW_GPIO_PORT_1, HW_GPIO_PIN_6 - * bit 3: HW_GPIO_PORT_1, HW_GPIO_PIN_7 - * bit 4: HW_GPIO_PORT_0, HW_GPIO_PIN_6 - * bit 5: HW_GPIO_PORT_0, HW_GPIO_PIN_7 - * bit 6: HW_GPIO_PORT_1, HW_GPIO_PIN_3 - * bit 7: HW_GPIO_PORT_2, HW_GPIO_PIN_3 - * - * if FTDF_DBG_BUS_USE_PORT_4 == 1, the FTDF debug bus uses the following pins: - * - * bit 0: HW_GPIO_PORT_4, HW_GPIO_PIN_0 - * bit 1: HW_GPIO_PORT_4, HW_GPIO_PIN_1 - * bit 2: HW_GPIO_PORT_4, HW_GPIO_PIN_2 - * bit 3: HW_GPIO_PORT_4, HW_GPIO_PIN_3 - * bit 4: HW_GPIO_PORT_4, HW_GPIO_PIN_4 - * bit 5: HW_GPIO_PORT_4, HW_GPIO_PIN_5 - * bit 6: HW_GPIO_PORT_4, HW_GPIO_PIN_6 - * bit 7: HW_GPIO_PORT_4, HW_GPIO_PIN_7 - * - */ -void ad_ftdf_dbg_bus_gpio_config(void); -#endif /* FTDF_DBG_BUS_ENABLE */ - -#endif /* AD_FTDF_PHY_API_H */ - -/** - \} - \} - \} - */ - diff --git a/third_party/dialog/DialogSDK/interfaces/ftdf/include/ftdf.h b/third_party/dialog/DialogSDK/interfaces/ftdf/include/ftdf.h deleted file mode 100644 index 3b0b157bd..000000000 --- a/third_party/dialog/DialogSDK/interfaces/ftdf/include/ftdf.h +++ /dev/null @@ -1,3413 +0,0 @@ -/** - \addtogroup INTERFACES - \{ - \addtogroup FTDF - \{ - \brief IEEE 802.15.4 Wireless - */ -/** - **************************************************************************************** - * - * @file ftdf.h - * - * @brief FTDF UMAC API header file - * - * Copyright (c) 2016, Dialog Semiconductor - * All rights reserved. - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. Neither the name of the copyright holder nor the names of its contributors - * may be used to endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, - * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, - * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED - * OF THE POSSIBILITY OF SUCH DAMAGE. - * - * - **************************************************************************************** - */ - -#ifndef FTDF_H_ -#define FTDF_H_ - -#include -#ifdef FTDF_PHY_API -#include -#else -#include -#endif - -#define __private1 request -#define __private2 requestASN -#define __private3 requestSN - -#define FTDF_CAPABILITY_IS_FFD 0x02 -#define FTDF_CAPABILITY_AC_POWER 0x04 -#define FTDF_CAPABILITY_RECEIVER_ON_WHEN_IDLE 0x08 -#define FTDF_CAPABILITY_FAST_ASSOCIATION 0x10 -#define FTDF_CAPABILITY_SUPPORTS_SECURITY 0x40 -#define FTDF_CAPABILITY_WANTS_SHORT_ADDRESS 0x80 - -#define FTDF_TRANSPARENT_USE_WAIT_FOR_ACK 1 - -// Transparency options -#define FTDF_TRANSPARENT_PASS_FRAME_TYPE_0 0x00000001 -#define FTDF_TRANSPARENT_PASS_FRAME_TYPE_1 0x00000002 -#define FTDF_TRANSPARENT_PASS_FRAME_TYPE_2 0x00000004 -#define FTDF_TRANSPARENT_PASS_FRAME_TYPE_3 0x00000008 -#define FTDF_TRANSPARENT_PASS_FRAME_TYPE_4 0x00000010 -#define FTDF_TRANSPARENT_PASS_FRAME_TYPE_5 0x00000020 -#define FTDF_TRANSPARENT_PASS_FRAME_TYPE_6 0x00000040 -#define FTDF_TRANSPARENT_PASS_FRAME_TYPE_7 0x00000080 -#define FTDF_TRANSPARENT_PASS_ALL_FRAME_TYPES 0x000000ff -#define FTDF_TRANSPARENT_AUTO_ACK 0x00000100 -#define FTDF_TRANSPARENT_AUTO_FP_ACK 0x00000200 -#define FTDF_TRANSPARENT_PASS_CRC_ERROR 0x00000400 -#define FTDF_TRANSPARENT_PASS_ALL_FRAME_VERSION 0x00001000 -#define FTDF_TRANSPARENT_PASS_ALL_PAN_ID 0x00002000 -#define FTDF_TRANSPARENT_PASS_ALL_ADDR 0x00004000 -#define FTDF_TRANSPARENT_PASS_ALL_BEACON 0x00008000 -#define FTDF_TRANSPARENT_PASS_ALL_NO_DEST_ADDR 0x00010000 -#define FTDF_TRANSPARENT_ENABLE_CSMA_CA 0x01000000 -#define FTDF_TRANSPARENT_ENABLE_FCS_GENERATION 0x02000000 -#define FTDF_TRANSPARENT_ENABLE_SECURITY 0x04000000 -#if FTDF_TRANSPARENT_USE_WAIT_FOR_ACK -#define FTDF_TRANSPARENT_WAIT_FOR_ACK 0x08000000 -#endif - -// Transparent TX statuses -#define FTDF_TRANSPARENT_SEND_SUCCESSFUL 0x00000000 -#define FTDF_TRANSPARENT_CSMACA_FAILURE 0x00000001 -#define FTDF_TRANSPARENT_OVERFLOW 0x00000002 -#if FTDF_TRANSPARENT_WAIT_FOR_ACK -#define FTDF_TRANSPARENT_NO_ACK 0x00000004 -#endif - -// Transparent RX statuses -#define FTDF_TRANSPARENT_RCV_SUCCESSFUL 0x00000000 -#define FTDF_TRANSPARENT_RCV_CRC_ERROR 0x00000001 -#define FTDF_TRANSPARENT_RCV_SECURITY_ERROR 0x00000002 -#define FTDF_TRANSPARENT_RCV_RES_FRAMETYPE 0x00000004 -#define FTDF_TRANSPARENT_RCV_RES_FRAME_VERSION 0x00000008 -#define FTDF_TRANSPARENT_RCV_UNEXP_DST_ADDR 0x00000010 -#define FTDF_TRANSPARENT_RCV_UNEXP_DST_PAN_ID 0x00000020 -#define FTDF_TRANSPARENT_RCV_UNEXP_BEACON 0x00000040 -#define FTDF_TRANSPARENT_RCV_UNEXP_NO_DEST_ADDR 0x00000080 - -typedef uint8_t ftdf_msg_id_t; -#define FTDF_DATA_REQUEST 1 -#define FTDF_DATA_INDICATION 2 -#define FTDF_DATA_CONFIRM 3 -#define FTDF_PURGE_REQUEST 4 -#define FTDF_PURGE_CONFIRM 5 -#define FTDF_ASSOCIATE_REQUEST 6 -#define FTDF_ASSOCIATE_INDICATION 7 -#define FTDF_ASSOCIATE_RESPONSE 8 -#define FTDF_ASSOCIATE_CONFIRM 9 -#define FTDF_DISASSOCIATE_REQUEST 10 -#define FTDF_DISASSOCIATE_INDICATION 11 -#define FTDF_DISASSOCIATE_CONFIRM 12 -#define FTDF_BEACON_NOTIFY_INDICATION 13 -#define FTDF_COMM_STATUS_INDICATION 14 -#define FTDF_GET_REQUEST 15 -#define FTDF_GET_CONFIRM 16 -#define FTDF_SET_REQUEST 17 -#define FTDF_SET_CONFIRM 18 -#define FTDF_GTS_REQUEST 19 -#define FTDF_GTS_CONFIRM 20 -#define FTDF_GTS_INDICATION 21 -#define FTDF_ORPHAN_INDICATION 22 -#define FTDF_ORPHAN_RESPONSE 23 -#define FTDF_RESET_REQUEST 24 -#define FTDF_RESET_CONFIRM 25 -#define FTDF_RX_ENABLE_REQUEST 26 -#define FTDF_RX_ENABLE_CONFIRM 27 -#define FTDF_SCAN_REQUEST 28 -#define FTDF_SCAN_CONFIRM 29 -#define FTDF_START_REQUEST 30 -#define FTDF_START_CONFIRM 31 -#define FTDF_SYNC_REQUEST 32 -#define FTDF_SYNC_LOSS_INDICATION 33 -#define FTDF_POLL_REQUEST 34 -#define FTDF_POLL_CONFIRM 35 -#define FTDF_SET_SLOTFRAME_REQUEST 36 -#define FTDF_SET_SLOTFRAME_CONFIRM 37 -#define FTDF_SET_LINK_REQUEST 38 -#define FTDF_SET_LINK_CONFIRM 39 -#define FTDF_TSCH_MODE_REQUEST 40 -#define FTDF_TSCH_MODE_CONFIRM 41 -#define FTDF_KEEP_ALIVE_REQUEST 42 -#define FTDF_KEEP_ALIVE_CONFIRM 43 -#define FTDF_BEACON_REQUEST 44 -#define FTDF_BEACON_CONFIRM 45 -#define FTDF_BEACON_REQUEST_INDICATION 46 -#define FTDF_TRANSPARENT_CONFIRM 47 -#define FTDF_TRANSPARENT_INDICATION 48 -#define FTDF_TRANSPARENT_REQUEST 49 -#define FTDF_TRANSPARENT_ENABLE_REQUEST 50 -#define FTDF_SLEEP_REQUEST 51 -#define FTDF_EXPLICIT_WAKE_UP 52 -#define FTDF_REMOTE_REQUEST 53 -#if FTDF_DBG_BUS_ENABLE -#define FTDF_DBG_MODE_SET_REQUEST 54 -#endif /* FTDF_DBG_BUS_ENABLE */ -#define FTDF_FPPR_MODE_SET_REQUEST 55 - -/** - * \brief Request status - * \remark Valid statuses: - * - FTDF_SUCCESS: Successful - * - FTDF_CHANNEL_ACCESS_FAILURE: CCA failure - * - FTDF_NO_ACK: No ack received after macMaxFrameRetries - * - FTDF_NO_DATA: No data frames pending - * - FTDF_COUNTER_ERROR: Security frame counter error - * - FTDF_FRAME_TOO_LONG: Too long frame - * - FTDF_IMPROPER_KEY_TYPE: Improper key type - * - FTDF_IMPROPER_SECURITY_LEVEL: Improper security level - * - FTDF_SECURITY_ERROR: Security authentication error - * - FTDF_UNAVAILABLE_KEY: Unavailable key - * - FTDF_UNAVAILABLE_DEVICE: Unavailable device - * - FTDF_UNAVAILABLE_SECURITY_LEVEL: Unavailable security level - * - FTDF_UNSUPPORTED_LEGACY: Unsupported legacy - * - FTDF_UNSUPPORTED_SECURITY: Unsupporteds security - * - FTDF_INVALID_PARAMETER: Invalid parameter - * - FTDF_TRANSACTION_OVERFLOW: Transaction overflow - * - FTDF_TRANSACTION_EXPIRED: Transaction expired - * - FTDF_NO_BEACON: No beacon received - * - FTDF_SCAN_IN_PROGRESS: Scan in progress - * - FTDF_NO_SHORT_ADDRESS: FTDF does not have a short address - * - FTDF_SLOTFRAME_NOT_FOUND: Slotframe not found - * - FTDF_MAX_SLOTFRAMES_EXCEEDED: Max slotframes exceeded - * - FTDF_UNKNOWN_LINK: Unknown link - * - FTDF_MAX_LINKS_EXCEEDED: Max links exceeded - * - FTDF_UNSUPPORTED_ATTRIBUTE: Unsupported PIB attribute - * - FTDF_READ_ONLY: Read onli PIB attribute - * - FTDF_INVALID_HANDLE: Invalid handle - * - FTDF_PAN_AT_CAPACITY: PAN at capacity - * - FTDF_PAN_ACCESS_DENIED: PAN access denied - * - FTDF_HOPPING_SEQUENCE_OFFSET_DUPLICATION: Hopping sequence offset duplication - */ -typedef uint8_t ftdf_status_t; -#define FTDF_SUCCESS 0 -#define FTDF_CHANNEL_ACCESS_FAILURE 1 -#define FTDF_NO_ACK 2 -#define FTDF_NO_DATA 3 -#define FTDF_COUNTER_ERROR 4 -#define FTDF_FRAME_TOO_LONG 5 -#define FTDF_IMPROPER_KEY_TYPE 6 -#define FTDF_IMPROPER_SECURITY_LEVEL 7 -#define FTDF_SECURITY_ERROR 8 -#define FTDF_UNAVAILABLE_KEY 9 -#define FTDF_UNAVAILABLE_DEVICE 10 -#define FTDF_UNAVAILABLE_SECURITY_LEVEL 11 -#define FTDF_UNSUPPORTED_LEGACY 12 -#define FTDF_UNSUPPORTED_SECURITY 13 -#define FTDF_INVALID_PARAMETER 14 -#define FTDF_TRANSACTION_OVERFLOW 15 -#define FTDF_TRANSACTION_EXPIRED 16 -#define FTDF_ON_TIME_TOO_LONG 17 -#define FTDF_LIMIT_REACHED 18 -#define FTDF_NO_BEACON 19 -#define FTDF_SCAN_IN_PROGRESS 20 -#define FTDF_INVALID_INDEX 21 -#define FTDF_NO_SHORT_ADDRESS 22 -#define FTDF_SUPERFRAME_OVERLAP 23 -#define FTDF_TRACKING_OFF 24 -#define FTDF_SLOTFRAME_NOT_FOUND 25 -#define FTDF_MAX_SLOTFRAMES_EXCEEDED 26 -#define FTDF_UNKNOWN_LINK 27 -#define FTDF_MAX_LINKS_EXCEEDED 28 -#define FTDF_UNSUPPORTED_ATTRIBUTE 29 -#define FTDF_READ_ONLY 30 -#define FTDF_INVALID_HANDLE 31 -#define FTDF_PAN_AT_CAPACITY 32 -#define FTDF_PAN_ACCESS_DENIED 33 -#define FTDF_HOPPING_SEQUENCE_OFFSET_DUPLICATION 34 - -/** - * \brief Association status - * \remark Supported statuses: - * - FTDF_ASSOCIATION_SUCCESSFUL: Associate request granted - * - FTDF_ASSOCIATION_PAN_AT_CAPACITY: Asscociate denied, PAN at capacity - * - FTDF_ASSOCIATION_PAN_ACCESS_DENIED: Associate denied - * - FTDF_FAST_ASSOCIATION_SUCCESSFUL: Associate request granted (fast) - */ -typedef uint8_t ftdf_association_status_t; -#define FTDF_ASSOCIATION_SUCCESSFUL 0x00 -#define FTDF_ASSOCIATION_PAN_AT_CAPACITY 0x01 -#define FTDF_ASSOCIATION_PAN_ACCESS_DENIED 0x02 -#define FTDF_ASSOCIATION_HOPPING_SEQUENCE_OFFSET_DUPLICATION 0x03 -#define FTDF_FAST_ASSOCIATION_SUCCESSFUL 0x80 - -/** - * \brief Address mode - * \remark Supported address modes: - * - FTDF_NO_ADDRESS - * - FTDF_SHORT_ADDRESS - * - FTDF_EXTENDED_ADDRESS - */ -typedef uint8_t ftdf_address_mode_t; -#define FTDF_NO_ADDRESS 0 -#define FTDF_SIMPLE_ADDRESS 1 -#define FTDF_SHORT_ADDRESS 2 -#define FTDF_EXTENDED_ADDRESS 3 - -/** - * \brief PAN id - * \remark Range 0.. 65535 - */ -typedef uint16_t ftdf_pan_id_t; - -typedef uint8_t ftdf_simple_address_t; - -/** - * \brief Short address - * \remark Range 00:00 - ff:ff - */ -typedef uint16_t ftdf_short_address_t; - -/** - * \brief Extended address - * \remark Range 00:00:00:00:00:00:00:00 - ff:ff:ff:ff:ff:ff:ff:ff - */ -typedef uint64_t ftdf_ext_address_t; - -typedef union { - /** \brief DO NOT USE */ - ftdf_simple_address_t simple_address; - /** \brief Short address */ - ftdf_short_address_t short_address; - /** \brief Extended address */ - ftdf_ext_address_t ext_address; -} ftdf_address_t; - -#ifdef SIMULATOR -typedef uint16_t ftdf_data_length_t; -#else -typedef uint8_t ftdf_data_length_t; -#endif - -/** - * \brief Handle - * \remark Range 0..255 - */ -typedef uint8_t ftdf_handle_t; - -/** - * \brief Boolean - * \remark Valid values: - * - FTDF_FALSE - * - FTDF_TRUE - */ -typedef uint8_t ftdf_boolean_t; - -/** \brief FTDF boolean FALSE */ -#define FTDF_FALSE 0 -/** \brief FTDF boolean TRUE */ -#define FTDF_TRUE 1 - -/** - * \brief Security level - * \remark Valid range 0..7 - */ -typedef uint8_t ftdf_security_level_t; - -/** - * \brief Security key id mode - * \remark Valid range 0..3 - */ -typedef uint8_t ftdf_key_id_mode_t; - -/** - * \brief Security key index - * \remark Valid range 0..255 - */ -typedef uint8_t ftdf_key_index_t; - -/** - * \brief Sequence number - * \remark Valid range 0..255 - */ -typedef uint8_t ftdf_sn_t; - -/** - * \brief Sequence number - * \remark Valid range 0..0xffffffffff (5 octets) - */ -typedef uint64_t ftdf_asn_t; - -/** - * \brief Order - */ -typedef uint8_t ftdf_order_t; - -/** - * \brief Time - * \remark Timestamp in symbols which wraps around every 0x100000000 symbols - */ -typedef uint32_t ftdf_time_t; - -/** - * \brief Real time - * \remark Timestamp in symbols which does not wrap (in the lifetime of the device) - */ -typedef uint64_t ftdf_time64_t; - -typedef uint32_t ftdf_usec_t; - -typedef uint64_t ftdf_psec_t; - -typedef uint32_t ftdf_nr_low_power_clock_cycles_t; - -typedef uint8_t ftdf_nr_backoff_periods_t; - -/** - * \brief Link Quality mode - * \remark 0: RSSI, 1: LQI - */ -typedef uint8_t ftdf_link_quality_mode_t; -#define FTDF_LINK_QUALITY_MODE_RSSI 0 -#define FTDF_LINK_QUALITY_MODE_LQI 1 - -/** - * \brief Period of time - * \remark Range 0..65535 - */ -typedef uint16_t ftdf_period_t; - -/** - * \brief Size type - */ -typedef uint8_t ftdf_size_t; - -/** - * \brief Length type - */ -typedef uint8_t ftdf_length_t; - -/** - * \brief Priority type - */ -typedef uint8_t ftdf_priority_t; - -/** - * \brief Performance counter - * \remark Range 0..0xffffffff - */ -typedef uint32_t ftdf_count_t; - -/** - * \brief Disassociate reason - * \remark Allowed values: - * - FTDF_COORD_WISH_DEVICE_LEAVE_PAN: Coordinator wishes that device leaves PAN - * - FTDF_DEVICE_WISH_LEAVE_PAN: Device wishes to leave PAN - */ -typedef uint8_t ftdf_disassociate_reason_t; -#define FTDF_COORD_WISH_DEVICE_LEAVE_PAN 1 -#define FTDF_DEVICE_WISH_LEAVE_PAN 2 - -/** - * \brief Beacon type - * \remark Allowed values: - * - FTDF_NORMAL_BEACON: Normal beacon - * - FTDF_ENHANCED_BEACON: Enhanced beacon - */ -typedef uint8_t ftdf_beacon_type_t; -#define FTDF_NORMAL_BEACON 0 -#define FTDF_ENHANCED_BEACON 1 - -// MAC constants -/** \brief aBaseSlotDuration */ -#define FTDF_BASE_SLOT_DURATION 60 -/** \brief aNumSuperframeSlots */ -#define FTDF_NUM_SUPERFRAME_SLOTS 16 -/** \brief aBaseSuperframeDuration */ -#define FTDF_BASE_SUPERFRAME_DURATION (FTDF_BASE_SLOT_DURATION * FTDF_NUM_SUPERFRAME_SLOTS) -/** \brief NOT USED */ -#define FTDF_GTS_PERSISTENCE_TIME 4 -/** \brief aMaxBeaconOverhead */ -#define FTDF_MAX_BEACON_OVERHEAD 75 -/** \brief aMaxBeaconOverhead */ -#define FTDF_MAX_PHY_PACKET_SIZE 127 -/** \brief aMaxPHYPacketSize */ -#define FTDF_MAX_BEACON_PAYLOAD_LENGTH (FTDF_MAX_PHY_PACKET_SIZE - FTDF_MAX_BEACON_OVERHEAD) -/** \brief NOT USED */ -#define FTDF_MAX_LOST_BEACONS 4 -/** \brief aMaxMPDUUnsecuredOverhead */ -#define FTDF_MAX_MPDU_UNSECURED_OVERHEAD 25 -/** \brief aMinMPDUOverhead */ -#define FTDF_MIN_MPDU_OVERHEAD 9 -/** \brief aMaxMACSafePayloadSize */ -#define FTDF_MAX_MAC_SAFE_PAYLOAD_SIZE (FTDF_MAX_PHY_PACKET_SIZE - FTDF_MAX_MPDU_UNSECURED_OVERHEAD) -/** \brief aMaxMACSafePayloadSize */ -#define FTDF_MAX_PAYLOAD_SIZE (FTDF_MAX_PHY_PACKET_SIZE - FTDF_MIN_MPDU_OVERHEAD) -/** \brief aMaxMACPayloadSize */ -#define FTDF_MAX_SIFS_FRAME_SIZE 18 -/** \brief NOT USED */ -#define FTDF_MIN_CAP_LENGTH 440 -/** \brief aUnitBackoffPeriod */ -#define FTDF_UNIT_BACKOFF_PERIOD 20 - -/** - * \brief PIB attribute id - * \remark List of supported PIB attributes, their types/structures and description - * - FTDF_PIB_EXTENDED_ADDRESS, \link ftdf_ext_address_t \endlink, - * The extended address of the device - * - FTDF_PIB_ACK_WAIT_DURATION, \link ftdf_period_t \endlink, The maximum time in symbols that is - waited for an ack, Read only - * - FTDF_PIB_ASSOCIATION_PAN_COORD, \link ftdf_boolean_t \endlink, Indication whether the device - is associated with a PAN coordinator - * - FTDF_PIB_ASSOCIATION_PERMIT, \link ftdf_boolean_t \endlink, Indication whether the PAN - coordinator grats association requests - * - FTDF_PIB_AUTO_REQUEST, \link ftdf_boolean_t \endlink, Indication whether beacon received while - scanning are forwarded to the application or not - * - FTDF_PIB_BEACON_PAYLOAD, ftdf_octet_t*, Pointer to the data to be included in a beacon as - payload - * - FTDF_PIB_BEACON_PAYLOAD_LENGTH, \link ftdf_size_t \endlink, Size of the data to be included - in a beacon as payload - * - FTDF_PIB_BEACON_ORDER, \link ftdf_order_t \endlink, Fixed to 15 indicating beaconless mode - * - FTDF_PIB_BSN, \link ftdf_sn_t \endlink, The current beacon sequence number - * - FTDF_PIB_COORD_EXTENDED_ADDRESS, \link ftdf_ext_address_t \endlink, The extended address of - the coordinator - * - FTDF_PIB_COORD_SHORT_ADDRESS, \link ftdf_short_address_t \endlink, The short address of the - coordinator - * - FTDF_PIB_DSN, \link ftdf_sn_t \endlink, The current data sequence number - * - FTDF_PIB_MAX_BE, \link ftdf_be_exponent_t \endlink, The maximum backoff exponent - * - FTDF_PIB_MAX_CSMA_BACKOFFS, \link ftdf_size_t \endlink, The maximum number of backoffs - * - FTDF_PIB_MAX_FRAME_TOTAL_WAIT_TIME, \link ftdf_period_t \endlink, The maximum time in symbols - that RX is ON after that a frame is received with FP set. - * - FTDF_PIB_MAX_FRAME_RETRIES, \link ftdf_size_t \endlink, The maximum number of frame retries - * - FTDF_PIB_MIN_BE, \link ftdf_be_exponent_t \endlink, The minimum backoff exponent - * - FTDF_PIB_LIFS_PERIOD, \link ftdf_period_t \endlink, The long IFS period in number of symbols, - Read oonly - * - FTDF_PIB_SIFS_PERIOD, \link ftdf_period_t \endlink, The short IFS period in number of symbols, - Read oonly - * - FTDF_PIB_PAN_ID, \link ftdf_pan_id_t \endlink, The PAN id of the device - * - FTDF_PIB_PROMISCUOUS_MODE, \link ftdf_boolean_t \endlink, Indication whether the promiscuous - is enable or not - * - FTDF_PIB_RESPONSE_WAIT_TIME, \link ftdf_size_t \endlink, The maximum time in - aBaseSuperFramePeriod's (960 symbols) that is waited for a command frame response - * - FTDF_PIB_RX_ON_WHEN_IDLE, \link ftdf_boolean_t \endlink, Indication whether the receiver - must be on when idle - * - FTDF_PIB_SECURITY_ENABLED, \link ftdf_boolean_t \endlink, Indication whether the security - is enabled - * - FTDF_PIB_SHORT_ADDRESS, \link ftdf_short_address_t \endlink, The short address of the device - * - FTDF_PIB_SYNC_SYMBOL_OFFSET, \link ftdf_period_t \endlink, The offset in symbols between the - start of frame and that the timestamp is taken - * - FTDF_PIB_TIMESTAMP_SUPPORTED, \link ftdf_boolean_t \endlink, Indication whether - timestamping is supported - * - FTDF_PIB_TRANSACTION_PERSISTENCE_TIME, \link ftdf_period_t \endlink, The maximum time in - aBaseSuperFramePeriod's (960 symbols) that indirect data requests are queued - * - FTDF_PIB_ENH_ACK_WAIT_DURATION, \link ftdf_period_t \endlink, The maximum time in symbols - that is waited for an enhanced ack - * - FTDF_PIB_IMPLICIT_BROADCAST, \link ftdf_boolean_t \endlink, Indication whether frames without - a destination PAN are treated as broadcasts - * - FTDF_PIB_DISCONNECT_TIME, \link ftdf_period_t \endlink, The time in timeslots that disassoctate - frames are send before disconnecting - * - FTDF_PIB_JOIN_PRIORITY, \link ftdf_priority_t \endlink, The join priority - * - FTDF_PIB_ASN, \link ftdf_asn_t \endlink, The current ASN - * - FTDF_PIB_SLOTFRAME_TABLE, \link ftdf_slotframe_table_t \endlink, The slotframe table, Read only - * - FTDF_PIB_LINK_TABLE, \link FTDF_LinkTable \endlink, The link table, Read only - * - FTDF_PIB_TIMESLOT_TEMPLATE, \link ftdf_timeslot_template_t \endlink, The current timeslot - template - * - FTDF_PIB_HOPPINGSEQUENCE_ID, \link ftdf_hopping_sequence_id_t \endlink, The id of the current - hopping sequence - * - FTDF_PIB_CHANNEL_PAGE, \link ftdf_channel_page_t \endlink, The current channel page - * - FTDF_PIB_HOPPING_SEQUENCE_LENGTH, \link ftdf_length_t \endlink, Length of the current hopping - sequence - * - FTDF_PIB_HOPPING_SEQUENCE_LIST, \link ftdf_channel_number_t \endlink, Hopping sequence - * - FTDF_PIB_CURRENT_HOP, \link ftdf_length_t \endlink, The current hop - * - FTDF_PIB_CSL_PERIOD, \link ftdf_period_t \endlink, The CSL sample period in units of 10 symbols - * - FTDF_PIB_CSL_MAX_PERIOD, \link ftdf_period_t \endlink, The maximum CSL sample period of devices - in the PAN in units of 10 symbols - * - FTDF_PIB_CSL_CHANNEL_MASK, \link ftdf_bitmap32_t \endlink, Bitmapped list of channels to be - sample in CSL mode - * - FTDF_PIB_CSL_FRAME_PENDING_WAIT_T, \link ftdf_period_t \endlink, The maximum time in symbols - that RX is ON after that a frame is received with FP set in CSL mode. - * - FTDF_PIB_PERFORMANCE_METRICS, \link ftdf_performance_metrics_t \endlink, - The performance metrics, Read only - * - FTDF_PIB_EB_IE_LIST, \link ftdf_ie_list_t \endlink, Payload IE list to be added to an - enhanced beacon - * - FTDF_PIB_EBSN, \link ftdf_sn_t \endlink, Current enhanced beacon sequence number - * - FTDF_PIB_EB_AUTO_SA, \link ftdf_auto_sa_t \endlink, Source address mode of auto generated - enhanced beacons - * - FTDF_PIB_EACK_IE_LIST, \link ftdf_ie_list_t \endlink, Payload IE list to be added - to an enhanced ack - * - FTDF_PIB_KEY_TABLE, \link ftdf_key_table_t \endlink, Security key table - * - FTDF_PIB_DEVICE_TABLE, \link ftdf_device_table_t \endlink, Security device table - * - FTDF_PIB_SECURITY_LEVEL_TABLE, \link ftdf_security_level_table_t \endlink, Security level table - * - FTDF_PIB_FRAME_COUNTER, \link ftdf_frame_counter_t \endlink, Current security frame counter - * - FTDF_PIB_MT_DATA_SECURITY_LEVEL, \link ftdf_security_level_t \endlink, Security level for - auto generated data frames - * - FTDF_PIB_MT_DATA_KEY_ID_MODE, \link ftdf_key_id_mode_t \endlink, Security key id mode for - auto generated data frames - * - FTDF_PIB_MT_DATA_KEY_SOURCE, ftdf_octet_t[8], Security key source for auto generated - data frames - * - FTDF_PIB_MT_DATA_KEY_INDEX, \link ftdf_key_index_t \endlink, Security key index for auto - generated data frames - * - FTDF_PIB_DEFAULT_KEY_SOURCE, ftdf_octet_t[8], Default key source - * - FTDF_PIB_FRAME_COUNTER_MODE, \link ftdf_frame_counter_mode_t \endlink, Security frame counter - mode - * - FTDF_PIB_CSL_SYNC_TX_MARGIN, \link ftdf_period_t \endlink, The margin in unit of 10 symbols - used by FTDF in CSL mode in case of a synchronised transmission - * - FTDF_PIB_CSL_MAX_AGE_REMOTE_INFO, \link ftdf_period_t \endlink, The time in unit of 10 symbols - after which FTDF discard the remote synchronisation info. - * - FTDF_PIB_TSCH_ENABLED, \link ftdf_boolean_t \endlink, Indicates whether the TSCH mode is - enabled or not, Read only - * - FTDF_PIB_LE_ENABLED, \link ftdf_boolean_t \endlink, Indicates whether the CSL mode is - enabled or not - * - FTDF_PIB_CURRENT_CHANNEL, \link ftdf_channel_number_t \endlink, The current channel used - by FTDF - * - FTDF_PIB_CHANNELS_SUPPORTED, \link ftdf_channel_descriptor_list_t \endlink, List of channels - supported by FTDF - * - FTDF_PIB_TX_POWER_TOLERANCE, \link ftdf_tx_power_tolerance_t \endlink, TX power tolerance - * - FTDF_PIB_TX_POWER, \link ftdf_dbm \endlink, TX power - * - FTDF_PIB_CCA_MODE, \link ftdf_cca_mode_t \endlink, CCA mode - * - FTDF_PIB_CURRENT_PAGE, \link ftdf_channel_page_t \endlink, Current channel page - * - FTDF_PIB_MAX_FRAME_DURATION, \link ftdf_period_t \endlink, The maximum number of symbols in - frame, Read only - * - FTDF_PIB_SHR_DURATION, \link ftdf_period_t \endlink, Synchronisation header length in - symbols, Read only - * - FTDF_PIB_TRAFFIC_COUNTERS, \link ftdf_traffic_counters_t \endlink, Miscelaneous - traffic counters, Read only - * - FTDF_PIB_LE_CAPABLE, \link ftdf_boolean_t \endlink, Indicates whether FTDF supports LE (CSL), - Read only - * - FTDF_PIB_LL_CAPABLE, \link ftdf_boolean_t \endlink, Indicates whether FTDF supports LL, - Read only - * - FTDF_PIB_DSME_CAPABLE, \link ftdf_boolean_t \endlink, Indicates whether FTDF supports DSME, - Read only - * - FTDF_PIB_RFID_CAPABLE, \link ftdf_boolean_t \endlink, Indicates whether FTDF supports RFID, - Read only - * - FTDF_PIB_AMCA_CAPABLE, \link ftdf_boolean_t \endlink, Indicates whether FTDF supports AMCA, - Read only - * - FTDF_PIB_TSCH_CAPABLE, \link ftdf_boolean_t \endlink, Indicates whether FTDF supports FTDF, - Read only - * - FTDF_PIB_METRICS_CAPABLE, \link ftdf_boolean_t \endlink, Indicates whether FTDF supports - metrics, Read only - * - FTDF_PIB_RANGING_SUPPORTED, \link ftdf_boolean_t \endlink, Indicates whether FTDF supports - ranging, Read only - * - FTDF_PIB_KEEP_PHY_ENABLED, \link ftdf_boolean_t \endlink, Indicates whether the PHY must - be kept enabled - * - FTDF_PIB_METRICS_ENABLED, \link ftdf_boolean_t \endlink, Indicates whether metrics - are enabled or not - * - FTDF_PIB_BEACON_AUTO_RESPOND, \link ftdf_boolean_t \endlink, Indicates whether FTDF must - send automatically a beacon at a BECAON_REQUEST command frame or must forward the request - to the application using FTDF_BEACON_REQUEST_INDICATION. - * - FTDF_PIB_TS_SYNC_CORRECT_THRESHOLD, \link ftdf_period_t \endlink, The minimum TSCH slot sync - offset in microseconds before resyncing - */ -typedef uint8_t ftdf_pib_attribute_t; -// See Table 52 "MAC PIB attributes" of IEEE 802.15.4-2011 and IEEE 802.15.4e-2012 for more details - -// NOTE: Be careful with changing the order of these PIB attributes because initialization of related -// registers will be done in the order defined here. -#define FTDF_PIB_EXTENDED_ADDRESS 1 -#define FTDF_PIB_ACK_WAIT_DURATION 2 -#define FTDF_PIB_ASSOCIATION_PAN_COORD 3 -#define FTDF_PIB_ASSOCIATION_PERMIT 4 -#define FTDF_PIB_AUTO_REQUEST 5 -#define FTDF_PIB_BATT_LIFE_EXT 6 -#define FTDF_PIB_BATT_LIFE_EXT_PERIODS 7 -#define FTDF_PIB_BEACON_PAYLOAD 8 -#define FTDF_PIB_BEACON_PAYLOAD_LENGTH 9 -#define FTDF_PIB_BEACON_ORDER 10 -#define FTDF_PIB_BEACON_TX_TIME 11 -#define FTDF_PIB_BSN 12 -#define FTDF_PIB_COORD_EXTENDED_ADDRESS 13 -#define FTDF_PIB_COORD_SHORT_ADDRESS 14 -#define FTDF_PIB_DSN 15 -#define FTDF_PIB_GTS_PERMIT 16 -#define FTDF_PIB_MAX_BE 17 -#define FTDF_PIB_MAX_CSMA_BACKOFFS 18 -#define FTDF_PIB_MAX_FRAME_TOTAL_WAIT_TIME 19 -#define FTDF_PIB_MAX_FRAME_RETRIES 20 -#define FTDF_PIB_MIN_BE 21 -#define FTDF_PIB_LIFS_PERIOD 22 -#define FTDF_PIB_SIFS_PERIOD 23 -#define FTDF_PIB_PAN_ID 24 -#define FTDF_PIB_PROMISCUOUS_MODE 25 -#define FTDF_PIB_RESPONSE_WAIT_TIME 26 -#define FTDF_PIB_RX_ON_WHEN_IDLE 27 -#define FTDF_PIB_SECURITY_ENABLED 28 -#define FTDF_PIB_SHORT_ADDRESS 29 -#define FTDF_PIB_SUPERFRAME_ORDER 30 -#define FTDF_PIB_SYNC_SYMBOL_OFFSET 31 -#define FTDF_PIB_TIMESTAMP_SUPPORTED 32 -#define FTDF_PIB_TRANSACTION_PERSISTENCE_TIME 33 -#define FTDF_PIB_TX_CONTROL_ACTIVE_DURATION 34 -#define FTDF_PIB_TX_CONTROL_PAUSE_DURATION 35 -#define FTDF_PIB_ENH_ACK_WAIT_DURATION 36 -#define FTDF_PIB_IMPLICIT_BROADCAST 37 -#define FTDF_PIB_SIMPLE_ADDRESS 38 -#define FTDF_PIB_DISCONNECT_TIME 39 -#define FTDF_PIB_JOIN_PRIORITY 40 -#define FTDF_PIB_ASN 41 -#define FTDF_PIB_NO_HL_BUFFERS 42 -#define FTDF_PIB_SLOTFRAME_TABLE 43 -#define FTDF_PIB_LINK_TABLE 44 -#define FTDF_PIB_TIMESLOT_TEMPLATE 45 -#define FTDF_PIB_HOPPINGSEQUENCE_ID 46 -#define FTDF_PIB_CHANNEL_PAGE 47 -#define FTDF_PIB_NUMBER_OF_CHANNELS 48 -#define FTDF_PIB_PHY_CONFIGURATION 49 -#define FTDF_PIB_EXTENTED_BITMAP 50 -#define FTDF_PIB_HOPPING_SEQUENCE_LENGTH 51 -#define FTDF_PIB_HOPPING_SEQUENCE_LIST 52 -#define FTDF_PIB_CURRENT_HOP 53 -#define FTDF_PIB_DWELL_TIME 54 -#define FTDF_PIB_CSL_PERIOD 55 -#define FTDF_PIB_CSL_MAX_PERIOD 56 -#define FTDF_PIB_CSL_CHANNEL_MASK 57 -#define FTDF_PIB_CSL_FRAME_PENDING_WAIT_T 58 -#define FTDF_PIB_LOW_ENERGY_SUPERFRAME_SUPPORTED 59 -#define FTDF_PIB_LOW_ENERGY_SUPERFRAME_SYNC_INTERVAL 60 -#define FTDF_PIB_PERFORMANCE_METRICS 61 -#define FTDF_PIB_USE_ENHANCED_BEACON 62 -#define FTDF_PIB_EB_IE_LIST 63 -#define FTDF_PIB_EB_FILTERING_ENABLED 64 -#define FTDF_PIB_EBSN 65 -#define FTDF_PIB_EB_AUTO_SA 66 -#define FTDF_PIB_EACK_IE_LIST 67 -#define FTDF_PIB_KEY_TABLE 68 -#define FTDF_PIB_DEVICE_TABLE 69 -#define FTDF_PIB_SECURITY_LEVEL_TABLE 70 -#define FTDF_PIB_FRAME_COUNTER 71 -#define FTDF_PIB_MT_DATA_SECURITY_LEVEL 72 -#define FTDF_PIB_MT_DATA_KEY_ID_MODE 73 -#define FTDF_PIB_MT_DATA_KEY_SOURCE 74 -#define FTDF_PIB_MT_DATA_KEY_INDEX 75 -#define FTDF_PIB_DEFAULT_KEY_SOURCE 76 -#define FTDF_PIB_PAN_COORD_EXTENDED_ADDRESS 77 -#define FTDF_PIB_PAN_COORD_SHORT_ADDRESS 78 -#define FTDF_PIB_FRAME_COUNTER_MODE 79 -#define FTDF_PIB_CSL_SYNC_TX_MARGIN 80 -#define FTDF_PIB_CSL_MAX_AGE_REMOTE_INFO 81 -#define FTDF_PIB_TSCH_ENABLED 82 -#define FTDF_PIB_LE_ENABLED 83 - -// See Table 71 "PHY PIB attributes" of IEEE 802.15.4-2011 for more details -#define FTDF_PIB_CURRENT_CHANNEL 84 -#define FTDF_PIB_CHANNELS_SUPPORTED 85 -#define FTDF_PIB_TX_POWER_TOLERANCE 86 -#define FTDF_PIB_TX_POWER 87 -#define FTDF_PIB_CCA_MODE 88 -#define FTDF_PIB_CURRENT_PAGE 89 -#define FTDF_PIB_MAX_FRAME_DURATION 90 -#define FTDF_PIB_SHR_DURATION 91 - -#define FTDF_PIB_TRAFFIC_COUNTERS 92 -#define FTDF_PIB_LE_CAPABLE 93 -#define FTDF_PIB_LL_CAPABLE 94 -#define FTDF_PIB_DSME_CAPABLE 95 -#define FTDF_PIB_RFID_CAPABLE 96 -#define FTDF_PIB_AMCA_CAPABLE 97 -#define FTDF_PIB_METRICS_CAPABLE 98 -#define FTDF_PIB_RANGING_SUPPORTED 99 -#define FTDF_PIB_KEEP_PHY_ENABLED 100 -#define FTDF_PIB_METRICS_ENABLED 101 -#define FTDF_PIB_BEACON_AUTO_RESPOND 102 -#define FTDF_PIB_TSCH_CAPABLE 103 -#define FTDF_PIB_TS_SYNC_CORRECT_THRESHOLD 104 - -/* Proprietary PIB. */ -#define FTDF_PIB_BO_IRQ_THRESHOLD 105 -#define FTDF_PIB_PTI_CONFIG 106 -#define FTDF_PIB_LINK_QUALITY_MODE 107 - -// Total number of PIB attributes -#define FTDF_NR_OF_PIB_ATTRIBUTES 107 - -/* Default values */ -#ifndef FTDF_BO_IRQ_THRESHOLD -#define FTDF_BO_IRQ_THRESHOLD 0xff -#endif - -#if FTDF_DBG_BUS_ENABLE -/** - * \brief Debug bus mode. - * - */ -typedef uint8_t ftdf_dbg_mode_t; - -/** - * \brief Disable debug signals - */ -#define FTDF_DBG_DISABLE 0x00 - -/** - * \brief Legacy debug mode - * diagnose bus bit 7 = ed_request - * diagnose bus bit 6 = gen_irq - * diagnose bus bit 5 = tx_en - * diagnose bus bit 4 = rx_en - * diagnose bus bit 3 = phy_en - * diagnose bus bit 2 = tx_valid - * diagnose bus bit 1 = rx_sof - * diagnose bus bit 0 = rx_eof - */ -#define FTDF_DBG_LEGACY 0x01 - -/** - * \brief Clocks and reset - * diagnose bus bit 7-3 = "00000" - * diagnose bus bit 2 = lp_clk divide by 2 - * diagnose bus bit 1 = mac_clk divide by 2 - * diagnose bus bit 0 = hclk divided by 2 - */ -#define FTDF_DBG_CLK_RESET 0x02 - -/** - * \brief Rx phy signals - * diagnose_bus bit 7 = rx_enable towards the rx_pipeline - * diagnose bus bit 6 = rx_sof from phy - * diagnose bus bit 5-2 = rx_data from phy - * diagnose bus bit 1 = rx_eof to phy - * diagnose bus bit 0 = rx_sof event from rx_mac_timing block - */ -#define FTDF_DBG_RX_PHY_SIGNALS 0x10 - -/** - * \brief Rx sof and length - * diagnose_bus bit 7 = rx_sof - * diagnose bus bit 6-0 = rx_mac_length from rx_mac_timing block - */ -#define FTDF_DBG_RX_SOF_AND_LENGTH 0x11 - -/** - * \brief Rx mac timing output - * diagnose_bus bit 7 = Enable from rx_mac_timing block - * diagnose bus bit 6 = Sop from rx_mac_timing block - * diagnose bus bit 5 = Eop from rx_mac_timing block - * diagnose bus bit 4 = Crc from rx_mac_timing block - * diagnose bus bit 3 = Err from rx_mac_timing block - * diagnose bus bit 2 = Drop from rx_mac_timing block - * diagnose bus bit 1 = Forward from rx_mac_timing block - * diagnose bus bit 0 = rx_sof - */ -#define FTDF_DBG_RX_MAC_TIMING_OUTPUT 0x12 - -/** - * \brief Rx mac frame parser output - * diagnose_bus bit 7 = Enable from mac_frame_parser block - * diagnose bus bit 6 = Sop from mac_frame_parser block - * diagnose bus bit 5 = Eop from mac_frame_parser block - * diagnose bus bit 4 = Crc from mac_frame_parser block - * diagnose bus bit 3 = Err from mac_frame_parser block - * diagnose bus bit 2 = Drop from mac_frame_parser block - * diagnose bus bit 1 = Forward from mac_frame_parser block - * diagnose bus bit 0 = rx_sof - */ -#define FTDF_DBG_RX_MAC_FRAME_PARSER_OUTPUT 0x13 - -/** - * \brief Rx status to Umac - * diagnose_bus bit 7 = rx_frame_stat_umac.crc16_error - * diagnose bus bit 6 = rx_frame_stat_umac.res_frm_type_error - * diagnose bus bit 5 = rx_frame_stat_umac.res_frm_version_error - * diagnose bus bit 4 = rx_frame_stat_umac.dpanid_error - * diagnose bus bit 3 = rx_frame_stat_umac.daddr_error - * diagnose bus bit 2 = rx_frame_stat_umac.spanid_error - * diagnose bus bit 1 = rx_frame_stat_umac.ispan_coord_error - * diagnose bus bit 0 = rx_sof - */ -#define FTDF_DBG_RX_STATUS_TO_UMAC 0x14 - -/** - * \brief Rx status to lmac - * diagnose_bus bit 7 = rx_frame_stat.packet_valid - * diagnose bus bit 6 = rx_frame_stat.rx_sof_e - * diagnose bus bit 5 = rx_frame_stat.rx_eof_e - * diagnose bus bit 4 = rx_frame_stat.wakeup_frame - * diagnose bus bit 3-1 = rx_frame_stat.frame_type - * diagnose bus bit 0 = rx_frame_stat.rx_sqnr_valid - */ -#define FTDF_DBG_RX_STATUS_TO_LMAC 0x15 - -/** - * \brief Rx buffer control - * diagnose_bus bit 7-4 = prov_from_swio.rx_read_buf_ptr - * diagnose bus bit 3-0 = stat_to_swio.rx_write_buf_ptr - */ -#define FTDF_DBG_RX_BUFFER_CONTROL 0x16 - -/** - * \brief Rx interrupts - * diagnose_bus bit 7 = stat_to_swio.rx_buf_avail_e - * diagnose bus bit 6 = stat_to_swio.rx_buf_full - * diagnose bus bit 5 = stat_to_swio.rx_buf_overflow_e - * diagnose bus bit 4 = stat_to_swio.rx_sof_e - * diagnose bus bit 3 = stat_to_swio.rxbyte_e - * diagnose bus bit 2 = rx_frame_ctrl.rx_enable - * diagnose bus bit 1 = rx_eof - * diagnose bus bit 0 = rx_sof - */ -#define FTDF_DBG_RX_INTERRUPTS 0x17 - -/** - * \brief MAC frame parser events - * diagnose_bus bit 7-3 = - * Prt statements mac frame parser - * 0 Reset - * 1 Multipurpose frame with no destination PAN id and macImplicitBroadcast is - * false and not PAN coordinator dropped - * 2 Multipurpose frame with no destination address and macImplicitBroadcast is - * false and not PAN coordinator dropped - * 3 RX unsupported frame type detected - * 4 RX non Beacon frame detected and dropped in RxBeaconOnly mode - * 5 RX frame passed due to macAlwaysPassFrmType set - * 6 RX unsupported da_mode = 01 for frame_version 0x0- detected - * 7 RX unsupported sa_mode = 01 for frame_version 0x0- detected - * 8 Data or command frame with no destination PAN id and macImplicitBroadcast - * is false and not PAN coordinator dropped - * 9 Data or command frame with no destination address and macImplicitBroadcast - * is false and not PAN coordinator dropped - * 10 RX unsupported frame_version detected - * 11 Multipurpose frame with no destination PAN id and macImplicitBroadcast is - * false and not PAN coordinator dropped - * 12 Multipurpose frame with no destination address and macImplicitBroadcast - * is false and not PAN coordinator dropped - * 13 RX unsupported frame_version detected - * 14 RX Destination PAN Id check failed - * 15 RX Destination address (1 byte) check failed - * 16 RX Destination address (2 byte) check failed - * 17 RX Destination address (8 byte) check failed - * 18 RX Source PAN Id check for Beacon frames failed - * 19 RX Source PAN Id check failed - * 20 Auxiliary Security Header security control word received - * 21 Auxiliary Security Header unsupported_legacy received frame_version 00 - * 22 Auxiliary Security Header unsupported_legacy security frame_version 11 - * 23 Auxiliary Security Header frame counter field received - * 24 Auxiliary Security Header Key identifier field received - * 25 Errored dDestination Wakeup frame found send to UMAC, not indicated - * towards LMAC controller - * 26 MacAlwaysPassWakeUpFrames = 1, Wakeup frame found send to UMAC, not - * indicated towards LMAC controller - * 27 Wakeup frame found send to LMAC controller and UMAC - * 28 Wakeup frame found send to LMAC controller, dropped towards UMAC - * 29 Command frame with data_request command received - * 30 Coordinator realignment frame received - * 31 Not Used - * diagnose bus bit 2-0 = frame_type - */ -#define FTDF_DBG_RX_MAC_FRAME_PARSER_EVENTS 0x18 - -/** - * \brief MAC frame parser states - * diagnose_bus bit 7-4 = - * Framestates mac frame parser - * 0 idle_state - * 1 fr_ctrl_state - * 2 fr_ctrl_long_state - * 3 seq_nr_state - * 4 dest_pan_id_state - * 5 dest_addr_state - * 6 src_pan_id_state - * 7 src_addr_state - * 8 aux_sec_hdr_state - * 9 hdr_ie_state - * 10 pyld_ie_state - * 11 ignore_state - * 12-16 Not used - * diagnose bus bit 3 = rx_mac_sof_e - * diagnose bus bit 2-0 = frame_type - */ -#define FTDF_DBG_RX_MAC_FRAME_PARSER_STATES 0x19 - -/** - * \brief Top and bottom interfaces tx datapath - * diagnose_bus bit 7 = tx_mac_ld_strb - * diagnose bus bit 6 = tx_mac_drdy - * diagnose bus bit 5 = tx_valid - * diagnose bus bit 4-1 = tx_data - * diagnose bus bit 0 = symbol_ena - */ -#define FTDF_DBG_TX_TOP_BOTTOM_INTERFACES 0x20 - -/** - * \brief Control signals for tx datapath - * diagnose_bus bit 7 = TxTransparentMode - * diagnose bus bit 6 = ctrl_lmac_to_tx.CRC16_ena - * diagnose bus bit 5 = ctrl_lmac_to_tx.tx_start - * diagnose bus bit 4 = ctrl_lmac_to_tx.gen_ack - * diagnose bus bit 3 = ctrl_lmac_to_tx.gen_wu - * diagnose bus bit 2-1 = ctrl_lmac_to_tx.tx_frame_nmbr - * diagnose bus bit 0 = tx_valid - */ -#define FTDF_DBG_TX_CONTROL_SIGNALS 0x21 - -/** - * \brief Control signals for wakeup frames - * diagnose_bus bit 7 = ctrl_lmac_to_tx.tx_start - * diagnose bus bit 6 = ctrl_lmac_to_tx.gen_wu - * diagnose bus bit 5-1 = ctrl_lmac_to_tx.gen_wu_RZ(4 DOWNTO 0) - * diagnose bus bit 0 = ctrl_tx_to_lmac.tx_rz_zero - */ -#define FTDF_DBG_TX_WAKEUP_CONTROL_SIGNALS 0x22 - -/** - * \brief Data signals for wakeup frame - * diagnose_bus bit 7 = ctrl_lmac_to_tx.tx_start - * diagnose bus bit 6 = ctrl_lmac_to_tx.gen_wu - * diagnose bus bit 5 = tx_valid - * diagnose bus bit 4-1 = tx_data - * diagnose bus bit 0 = ctrl_tx_to_lmac.tx_rz_zero - */ -#define FTDF_DBG_TX_WAKUP_DATA_SIGNALS 0x23 - -/** - * \brief Data and control ack frame - * diagnose_bus bit 7 = ctrl_lmac_to_tx.tx_start - * diagnose bus bit 6 = ctrl_lmac_to_tx.gen_ack - * diagnose bus bit 5 = tx_valid - * diagnose bus bit 4-1 = tx_data - * diagnose bus bit 0 = symbol_ena - */ -#define FTDF_DBG_TX_ACK_ 0x24 - - -/** - * \brief PHY signals - * diagnose_bus bit 7 = phy_en - * diagnose bus bit 6 = tx_en - * diagnose bus bit 5 = rx_en - * diagnose bus bit 4-1 = phyattr(3 downto 0) - * diagnose bus bit 0 = ed_request - */ -#define FTDF_DBG_LMAC_PHY_SIGNALS 0x30 - -/** - * \brief PHY enable and detailed state machine info - * diagnose_bus bit 7 = phy_en - * diagnose bus bit 6-0 = prt statements detailed state machine info - * 0 Reset - * 1 MAIN_STATE_IDLE TX_ACKnowledgement frame skip CSMA_CA - * 2 MAIN_STATE_IDLE : Wake-Up frame resides in buffer no - * 3 MAIN_STATE_IDLE : TX frame in TSCH mode - * 4 MAIN_STATE_IDLE : TX frame - * 5 MAIN_STATE_IDLE : goto SINGLE_CCA - * 6 MAIN_STATE_IDLE : goto Energy Detection - * 7 MAIN_STATE_IDLE : goto RX - * 8 MAIN_STATE_IDLE de-assert phy_en wait for - * 9 MAIN_STATE_IDLE Start phy_en and assert phy_en wait for : - * 10 MAIN_STATE_CSMA_CA_WAIT_FOR_METADATA framenr : - * 11 MAIN_STATE_CSMA_CA framenr : - * 12 MAIN_STATE_CSMA_CA start CSMA_CA - * 14 MAIN_STATE_CSMA_CA skip CSMA_CA - * 15 MAIN_STATE_WAIT_FOR_CSMA_CA csma_ca Failed for CSL mode - * 16 MAIN_STATE_WAIT_FOR_CSMA_CA csma_ca Failed - * 17 MAIN_STATE_WAIT_FOR_CSMA_CA csma_ca Success - * 18 MAIN_STATE_SINGLE_CCA CCA failed - * 19 MAIN_STATE_SINGLE_CCA CCA ok - * 20 MAIN_STATE_WAIT_ACK_DELAY wait time elapsed - * 21 MAIN_STATE_WAIT ACK_DELAY : Send Ack in TSCH mode - * 22 MAIN_STATE_WAIT ACK_DELAY : Ack not scheduled in time in TSCH mode - * 23 MAIN_STATE_TSCH_TX_FRAME macTSRxTx time elapsed - * 24 MAIN_STATE_TX_FRAME it is CSL mode, start the WU seq for macWUPeriod - * 25 MAIN_STATE_TX_FRAME1 - * 26 MAIN_STATE_TX_FRAME_W1 exit, waited for : - * 27 MAIN_STATE_TX_FRAME_W2 exit, waited for : - * 28 MAIN_STATE_TX_WAIT_LAST_SYMBOL exit - * 29 MAIN_STATE_TX_RAMPDOWN_W exit, waited for : - * 30 MAIN_STATE_TX_PHYTRXWAIT exit, waited for : - * 31 MAIN_STATE_GEN_IFS , Ack with frame pending received - * 32 MAIN_STATE_GEN_IFS , Ack requested but DisRXackReceivedca is set - * 33 MAIN_STATE_GEN_IFS , instead of generating an IFS, switch the rx-on for - * an ACK - * 34 MAIN_STATE_GEN_IFS , generating an SIFS (Short Inter Frame Space) - * 35 MAIN_STATE_GEN_IFS , generating an LIFS (Long Inter Frame Space) - * 36 MAIN_STATE_GEN_IFS_FINISH in CSL mode, 'cslperiod_timer_ready' is ready - * sent the data frame - * 37 MAIN_STATE_GEN_IFS_FINISH in CSL mode, 'Rendezvous zero time not yet - * transmitted sent another WU frame - * 38 MAIN_STATE_GEN_IFS_FINISH exit, corrected for : - * 39 MAIN_STATE_GEN_IFS_FINISH in CSL mode, rx_resume_after_tx is set - * 40 MAIN_STATE_SENT_STATUS CSLMode wu_sequence_done_flag : - * 41 MAIN_STATE_ADD_DELAY exit, goto RX for frame pending time - * 42 MAIN_STATE_ADD_DELAY exit, goto IDLE - * 43 MAIN_STATE_RX switch the RX from off to on - * 44 MAIN_STATE_RX_WAIT_PHYRXSTART waited for - * 45 MAIN_STATE_RX_WAIT_PHYRXLATENCY start the MacAckDuration timer - * 46 MAIN_STATE_RX_WAIT_PHYRXLATENCY start the ack wait timer - * 47 MAIN_STATE_RX_WAIT_PHYRXLATENCY NORMAL mode : start rx_duration - * 48 MAIN_STATE_RX_WAIT_PHYRXLATENCY TSCH mode : start macTSRxWait - * (macTSRxWait) timer - * 49 MAIN_STATE_RX_WAIT_PHYRXLATENCY CSL mode : start the csl_rx_duration - * (macCSLsamplePeriod) timer - * 50 MAIN_STATE_RX_WAIT_PHYRXLATENCY CSL mode : start the csl_rx_duration - * (macCSLdataPeriod) timer - * 51 MAIN_STATE_RX_CHK_EXPIRED 1 ackwait_timer_ready or ack_received_ind - * 52 MAIN_STATE_RX_CHK_EXPIRED 2 normal_mode. ACK with FP bit set, start frame - * pending timer - * 54 MAIN_STATE_RX_CHK_EXPIRED 4 RxAlwaysOn is set to 0 - * 55 MAIN_STATE_RX_CHK_EXPIRED 5 TSCH mode valid frame rxed - * 56 MAIN_STATE_RX_CHK_EXPIRED 6 TSCH mode macTSRxwait expired - * 57 MAIN_STATE_RX_CHK_EXPIRED 7 macCSLsamplePeriod timer ready - * 58 MAIN_STATE_RX_CHK_EXPIRED 8 csl_mode. Data frame recieved with FP bit - * set, increment RX duration time - * 59 MAIN_STATE_RX_CHK_EXPIRED 9 CSL mode : Received wu frame in data - * listening period restart macCSLdataPeriod timer - * 60 MAIN_STATE_RX_CHK_EXPIRED 10 csl_rx_duration_ready or csl data frame - * received: - * 61 MAIN_STATE_RX_CHK_EXPIRED 11 normal_mode. FP bit is set, start frame - * pending timer - * 62 MAIN_STATE_RX_CHK_EXPIRED 12 normal mode rx_duration_timer_ready and - * frame_pending_timer_ready - * 63 MAIN_STATE_RX_CHK_EXPIRED 13 acknowledge frame requested - * 64 MAIN_STATE_RX_CHK_EXPIRED 14 Interrupt to sent a frame. found_tx_packet - * 65 MAIN_STATE_CSL_RX_IDLE_END RZ time is far away, switch receiver Off and - * wait for csl_rx_rz_time before switching on - * 66 MAIN_STATE_CSL_RX_IDLE_END RZ time is not so far away, keep receiver On - * and wait for - * 67 MAIN_STATE_RX_START_PHYRXSTOP ack with fp received keep rx on - * 68 MAIN_STATE_RX_START_PHYRXSTOP switch the RX from on to off - * 69 MAIN_STATE_RX_WAIT_PHYRXSTOP acknowledge done : switch back to finish TX - * 70 MAIN_STATE_RX_WAIT_PHYRXSTOP switch the RX off - * 71 MAIN_STATE_ED switch the RX from off to on - * 72 MAIN_STATE_ED_WAIT_PHYRXSTART waited for phyRxStartup - * 73 MAIN_STATE_ED_WAIT_EDSCANDURATION waited for EdScanDuration - * 74 MAIN_STATE_ED_WAIT_PHYRXSTOP end of Energy Detection, got IDLE - * 75 - 127 Not used - */ -#define FTDF_DBG_LMAC_ENABLE_AND_SM 0x31 - -/** - * \brief RX enable and detailed state machine info - * diagnose_bus bit 7 = rx_en - * diagnose bus bit 6-0 = detailed state machine info see FTDF_DBG_LMAC_ENABLE_AND_SM - */ -#define FTDF_DBG_LMAC_RX_ENABLE_AND_SM 0x32 - -/** - * \brief TX enable and detailed state machine info - * diagnose_bus bit 7 = tx_en - * diagnose bus bit 6-0 = detailed state machine info see FTDF_DBG_LMAC_ENABLE_AND_SM - */ -#define FTDF_DBG_LMAC_TX_ENABLE_AND_SM 0x33 - -/** - * \brief PHY enable, TX enable and Rx enable and state machine states - * diagnose_bus bit 7 = phy_en - * diagnose_bus bit 6 = tx_en - * diagnose_bus bit 5 = rx_en - * diagnose bus bit 4-0 = State machine states - * 1 MAIN_STATE_IDLE - * 2 MAIN_STATE_CSMA_CA_WAIT_FOR_METADATA - * 3 MAIN_STATE_CSMA_CA - * 4 MAIN_STATE_WAIT_FOR_CSMA_CA_0 - * 5 MAIN_STATE_WAIT_FOR_CSMA_CA - * 6 MAIN_STATE_SINGLE_CCA - * 7 MAIN_STATE_WAIT_ACK_DELAY - * 8 MAIN_STATE_TSCH_TX_FRAME - * 9 MAIN_STATE_TX_FRAME - * 10 MAIN_STATE_TX_FRAME1 - * 11 MAIN_STATE_TX_FRAME_W1 - * 12 MAIN_STATE_TX_FRAME_W2 - * 13 MAIN_STATE_TX_WAIT_LAST_SYMBOL - * 14 MAIN_STATE_TX_RAMPDOWN - * 15 MAIN_STATE_TX_RAMPDOWN_W - * 16 MAIN_STATE_TX_PHYTRXWAIT - * 17 MAIN_STATE_GEN_IFS - * 18 MAIN_STATE_GEN_IFS_FINISH - * 19 MAIN_STATE_SENT_STATUS - * 20 MAIN_STATE_ADD_DELAY - * 21 MAIN_STATE_TSCH_RX_ACKDELAY - * 22 MAIN_STATE_RX - * 23 MAIN_STATE_RX_WAIT_PHYRXSTART - * 24 MAIN_STATE_RX_WAIT_PHYRXLATENCY - * 25 MAIN_STATE_RX_CHK_EXPIRED - * 26 MAIN_STATE_CSL_RX_IDLE_END - * 27 MAIN_STATE_RX_START_PHYRXSTOP - * 28 MAIN_STATE_RX_WAIT_PHYRXSTOP - * 29 MAIN_STATE_ED - * 30 MAIN_STATE_ED_WAIT_PHYRXSTART - * 31 MAIN_STATE_ED_WAIT_EDSCANDURATION - */ -#define FTDF_DBG_LMAC_RX_TX_ENABLE_AND_STATES 0x34 - -/** - * \brief LMAC controller to tx interface with wakeup - * diagnose_bus bit 7 = tx_en - * diagnose_bus bit 6 = rx_en - * diagnose_bus bit 5 = ctrl_lmac_to_tx.gen_wu - * diagnose_bus bit 4 = ctrl_lmac_to_tx.gen_ack - * diagnose_bus bit 3-2 = ctrl_lmac_to_tx.tx_frame_nmbr - * diagnose_bus bit 1 = ctrl_lmac_to_tx.tx_start - * diagnose_bus bit 0 = ctrl_tx_to_lmac.tx_last_symbol - */ -#define FTDF_DBG_LMAC_TO_TX_AND_WAKEUP 0x35 - -/** - * \brief LMAC controller to tx interface with frame pending - * diagnose_bus bit 7 = tx_en - * diagnose_bus bit 6 = rx_en - * diagnose_bus bit 5 = ctrl_lmac_to_tx.gen.fp_bit - * diagnose_bus bit 4 = ctrl_lmac_to_tx.gen_ack - * diagnose_bus bit 3-2 = ctrl_lmac_to_tx.tx_frame_nmbr - * diagnose_bus bit 1 = ctrl_lmac_to_tx.tx_start - * diagnose_bus bit 0 = ctrl_tx_to_lmac.tx_last_symbol - */ -#define FTDF_DBG_LMAC_TO_TX_AND_FRAME_PENDING 0x36 - -/** - * \brief Rx pipepline to LMAC controller interface - * diagnose_bus bit 7 = tx_en - * diagnose_bus bit 6 = rx_en - * diagnose_bus bit 5 = ctrl_rx_to_lmac.rx_sof_e - * diagnose_bus bit 4 = ctrl_rx_to_lmac.rx_eof_e - * diagnose_bus bit 3 = ctrl_rx_to_lmac.packet_valid - * diagnose_bus bit 2 = ack_received_ind - * diagnose_bus bit 1 = ack_request_ind - * diagnose_bus bit 0 = ctrl_rx_to_lmac.data_request_frame - */ -#define FTDF_DBG_LMAC_RX_TO_LMAC 0x37 - -/** - * \brief CSL start - * diagnose_bus bit 7 = tx_en - * diagnose_bus bit 6 = rx_en - * diagnose_bus bit 5 = csl_start - * diagnose_bus bit 4-1 = swio_always_on_to_lmac_ctrl.tx_flag_stat - * diagnose_bus bit 0 = found_wu_packet; - */ -#define FTDF_DBG_LMAC_CSL_START 0x38 - -/** - * \brief TSCH TX ACK timing - * diagnose_bus bit 7-4 = swio_always_on_to_lmac_ctrl.tx_flag_stat - * diagnose_bus bit 3 = tx_en - * diagnose_bus bit 2 = rx_en - * diagnose_bus bit 1 = ctrl_rx_to_lmac.packet_valid - * diagnose_bus bit 0 = one_us_timer_ready - */ -#define FTDF_DBG_LMAC_TSCH_ACK_TIMING 0x39 - - -/** - * \brief Security control - * diagnose_bus bit 7 = swio_to_security.secStart - * diagnose_bus bit 6 = swio_to_security.secTxRxn - * diagnose_bus bit 5 = swio_to_security.secAbort - * diagnose_bus bit 4 = swio_to_security.secEncDecn - * diagnose_bus bit 3 = swio_from_security.secBusy - * diagnose_bus bit 2 = swio_from_security.secAuthFail - * diagnose_bus bit 1 = swio_from_security.secReady_e - * diagnose_bus bit 0 = '0' - */ -#define FTDF_DBG_SEC_CONTROL 0x40 - -/** - * \brief Security CTLID access Rx and Tx - * diagnose_bus bit 7 = tx_sec_ci.ld_strb - * diagnose_bus bit 6 = tx_sec_ci.ctlid_rw - * diagnose_bus bit 5 = tx_sec_ci.selectp - * diagnose_bus bit 4 = tx_sec_co.d_rdy - * diagnose_bus bit 3 = rx_sec_ci.ld_strb - * diagnose_bus bit 2 = rx_sec_ci.ctlid_rw - * diagnose_bus bit 1 = rx_sec_ci.selectp - * diagnose_bus bit 0 = rx_sec_co.d_rdy - */ -#define FTDF_DBG_SEC_CTLID_ACCESS_RX_TX 0x41 - -/** - * \brief Security ctlid access tx with sec_wr_data_valid - * diagnose_bus bit 7 = tx_sec_ci.ld_strb - * diagnose_bus bit 6 = tx_sec_ci.ctlid_rw - * diagnose_bus bit 5 = tx_sec_ci.selectp - * diagnose_bus bit 4 = tx_sec_co.d_rdy - * diagnose_bus bit 3-0 = sec_wr_data_valid - */ -#define FTDF_DBG_SEC_CTLID_ACCESS_TX_AND_SEC_WR_DATA_VALID 0x42 - -/** - * \brief Security ctlid access rx with sec_wr_data_valid - * diagnose_bus bit 7 = rx_sec_ci.ld_strb - * diagnose_bus bit 6 = rx_sec_ci.ctlid_rw - * diagnose_bus bit 5 = rx_sec_ci.selectp - * diagnose_bus bit 4 = rx_sec_co.d_rdy - * diagnose_bus bit 3-0 = sec_wr_data_valid - */ -#define FTDF_DBG_SEC_CTLID_ACCESS_RX_AND_SEC_WR_DATA_VALID 0x43 - -/** - * \brief AHB bus without hsize - * diagnose_bus bit 7 = hsel - * diagnose_bus bit 6-5 = htrans - * diagnose_bus bit 4 = hwrite - * diagnose_bus bit 3 = hready_in - * diagnose_bus bit 2 = hready_out - * diagnose_bus bit 1-0 = hresp - */ -#define FTDF_DBG_AHB_WO_HSIZE 0x50 - -/** - * \brief AHB bus without hwready_in and hresp(1) - * diagnose_bus bit 7 = hsel - * diagnose_bus bit 6-5 = htrans - * diagnose_bus bit 4 = hwrite - * diagnose_bus bit 3-2 = hhsize(1 downto 0) - * diagnose_bus bit 1 = hready_out - * diagnose_bus bit 0 = hresp(0) - */ -#define FTDF_DBG_AHB_WO_HW_READY_HRESP 0x51 - -/** - * \brief AMBA Tx signals - * diagnose_bus bit 7 = ai_tx.penable - * diagnose_bus bit 6 = ai_tx.psel - * diagnose_bus bit 5 = ai_tx.pwrite - * diagnose_bus bit 4 = ao_tx.pready - * diagnose_bus bit 3 = ao_tx.pslverr - * diagnose_bus bit 2-1 = psize_tx - * diagnose_bus bit 0 = hready_out - */ -#define FTDF_DBG_AHB_AMBA_TX_SIGNALS 0x52 - -/** - * \brief AMBA Rx signals - * diagnose_bus bit 7 = ai_rx.penable - * diagnose_bus bit 6 = ai_rx.psel - * diagnose_bus bit 5 = ai_rx.pwrite - * diagnose_bus bit 4 = ao_rx.pready - * diagnose_bus bit 3 = ao_rx.pslverr - * diagnose_bus bit 2-1 = psize_rx - * diagnose_bus bit 0 = hready_out - */ -#define FTDF_DBG_AHB_AMBA_RX_SIGNALS 0x53 - -/** - * \brief AMBA register map signals - * diagnose_bus bit 7 = ai_reg.penable - * diagnose_bus bit 6 = ai_reg.psel - * diagnose_bus bit 5 = ai_reg.pwrite - * diagnose_bus bit 4 = ao_reg.pready - * diagnose_bus bit 3 = ao_reg.pslverr - * diagnose_bus bit 2-1 = "00" - * diagnose_bus bit 0 = hready_out - */ -#define FTDF_DBG_AHB_AMBA_REG_MAP_SIGNALS 0x54 - -#endif /* FTDF_DBG_BUS_ENABLE */ - -#define FTDF_MAX_HOPPING_SEQUENCE_LENGTH 16 - -typedef void ftdf_pib_attribute_value_t; - -/** - * \brief Link quality - * \remark Range: 0..255 - * \remark A higher number is a higher quality - */ -typedef uint8_t ftdf_link_quality_t; - -/** - * \brief Hopping sequence id - */ -typedef uint16_t ftdf_hopping_sequence_id_t; - -/** - * \brief Channel number - * \remark Supported range: 11..27 - */ -typedef uint8_t ftdf_channel_number_t; - -/** - * \brief Packet Traffic Information (PTI) used to classify a transaction in the radio arbiter. - */ -typedef uint8_t ftdf_pti_t; - -enum { - /* PTI index for explicit Rx. */ - FTDF_PTI_CONFIG_RX, - /* PTI index for Tx. */ - FTDF_PTI_CONFIG_TX, - FTDF_PTI_CONFIG_RESERVED0, - FTDF_PTI_CONFIG_RESERVED1, - FTDF_PTI_CONFIG_RESERVED2, - FTDF_PTI_CONFIG_RESERVED3, - FTDF_PTI_CONFIG_RESERVED4, - FTDF_PTI_CONFIG_RESERVED5, - /* Enumeration end. */ - FTDF_PTIS, -}; - -typedef struct { - ftdf_pti_t ptis[FTDF_PTIS]; -} ftdf_pti_config_t; - -/** - * \brief Channel page - * \remark Supported values: 0 - */ -typedef uint8_t ftdf_channel_page_t; - -typedef uint8_t ftdf_channel_offset_t; - -typedef uint8_t ftdf_octet_t; - -/** - * \brief 8-bit type bitmap - */ -typedef uint8_t ftdf_bitmap8_t; - -/** - * \brief 16-bit type bitmap - */ -typedef uint16_t ftdf_bitmap16_t; - -/** - * \brief 32-bit type bitmap - */ -typedef uint32_t ftdf_bitmap32_t; - -typedef uint8_t ftdf_num_of_backoffs_t; - -typedef uint8_t ftdf_gts_charateristics_t; - -/** - * \brief Scan type - * \remark Allowed values: - * - FTDF_ED_SCAN: Energy detect scan - * - FTDF_ACTIVE_SCAN: Active scan - * - FTDF_PASSIVE_SCAN: Passive scan - * - FTDF_ORPHAN_SCAN: Orphan scan - * - FTDF_ENHANCED_ACTIVE_SCAN: Enhanced active scan - */ -typedef uint8_t ftdf_scan_type_t; -#define FTDF_ED_SCAN 1 -#define FTDF_ACTIVE_SCAN 2 -#define FTDF_PASSIVE_SCAN 3 -#define FTDF_ORPHAN_SCAN 4 -#define FTDF_ENHANCED_ACTIVE_SCAN 7 - -typedef uint8_t ftdf_scan_duration_t; - -/** - * \brief Loss operation - * \remark Possible values: - * - FTDF_PAN_ID_CONFLICT - * - FTDF_REALIGNMENT - * - FTDF_BEACON_LOST (not supported because only beaconless mode is supported) - */ -typedef uint8_t ftdf_loss_reason_t; -#define FTDF_PAN_ID_CONFLICT 1 -#define FTDF_REALIGNMENT 2 -#define FTDF_BEACON_LOST 3 - -typedef uint16_t ftdf_slotframe_size_t; - -/** - * \brief Set operation - * \remark Allowed values: - * - FTDF_ADD: Add an entry - * - FTDF_DELETE: Delete an entry - * - FTDF_MODIFY: Modify an entry - */ -typedef uint8_t ftdf_operation_t; -#define FTDF_ADD 0 -#define FTDF_DELETE 2 -#define FTDF_MODIFY 3 - -typedef uint16_t ftdf_timeslot_t; - -/** - * \brief Set operation - * \remark Allowed values: - * - FTDF_NORMAL_LINK - * - FTDF_ADVERTISING_LINK - */ -typedef uint8_t ftdf_link_type_t; -#define FTDF_NORMAL_LINK 0 -#define FTDF_ADVERTISING_LINK 1 - -/** - * \brief TSCH mode status - * \remark Allowed values: - * - FTDF_TSCH_OFF - * - FTDF_TSCH_ON - */ -typedef uint8_t ftdf_tsch_mode_t; -#define FTDF_TSCH_OFF 0 -#define FTDF_TSCH_ON 1 - -typedef uint16_t ftdf_keep_alive_period_t; - -/** - * \brief BE exponent - */ -typedef uint8_t ftdf_be_exponent_t; - -#define FTDF_MAX_SLOTFRAMES 4 - -typedef struct { - /** \brief Handle of this slotframe */ - ftdf_handle_t slotframe_handle; - /** \brief The number of timeslots in this slotframe */ - ftdf_slotframe_size_t slotframe_size; -} ftdf_slotframe_entry_t; - -typedef struct { - /** \brief Number of slotframes in the slotframe table */ - ftdf_size_t nr_of_slotframes; - /** \brief Pointer to the first slotframe entry */ - ftdf_slotframe_entry_t* slotframe_entries; -} ftdf_slotframe_table_t; - -#define FTDF_MAX_LINKS 16 - -#define FTDF_LINK_OPTION_TRANSMIT 0x01 -#define FTDF_LINK_OPTION_RECEIVE 0x02 -#define FTDF_LINK_OPTION_SHARED 0x04 -#define FTDF_LINK_OPTION_TIME_KEEPING 0x08 - -typedef struct { - /** \brief Handle of this link, used for delete and modify operations */ - ftdf_handle_t link_handle; - /** - * \brief Bit mapped link options, the following options are supported:
- * FTDF_LINK_OPTION_TRANSMIT: Lik can be used for transmitting
- * FTDF_LINK_OPTION_RECEIVE: Link can be used for receiving
- * FTDF_LINK_OPTION_SHARED: Shared link, multiple device can transmit in this link
- * FTDF_LINK_OPTION_TIME_KEEPING: Link will be used to synchronise timeslots
- * Multiple options can be defined by or-ing them. - */ - ftdf_bitmap8_t link_options; - /** \brief Link type */ - ftdf_link_type_t link_type; - /** \brief Handle of the slotframe of this link */ - ftdf_handle_t slotframe_handle; - /** \brief Short address of the peer node, only valid if is a transmit link */ - ftdf_short_address_t node_address; - /** \brief Timeslot in the slotframe */ - ftdf_timeslot_t timeslot; - /** \brief Channel offset */ - ftdf_channel_offset_t channel_offset; - /** \brief DO NOT USE */ - void* __private1; - /** \brief DO NOT USE */ - uint64_t __private2; -} ftdf_link_entry_t; - -typedef struct { - /** \brief Number of links in the link table */ - ftdf_size_t nr_of_links; - /** \brief Pointer to the first link entry */ - ftdf_link_entry_t* link_entries; -} FTDF_LinkTable; - -typedef struct { - ftdf_handle_t timeslot_template_id; - ftdf_period_t ts_cca_offset; - ftdf_period_t ts_cca; - ftdf_period_t ts_tx_offset; - ftdf_period_t ts_rx_offset; - ftdf_period_t ts_rx_ack_delay; - ftdf_period_t ts_tx_ack_delay; - ftdf_period_t ts_rx_wait; - ftdf_period_t ts_ack_wait; - ftdf_period_t ts_rx_tx; - ftdf_period_t ts_max_ack; - ftdf_period_t ts_max_ts; - ftdf_period_t ts_timeslot_length; -} ftdf_timeslot_template_t; - -typedef struct { - ftdf_size_t counter_octets; - ftdf_count_t retry_count; - ftdf_count_t multiple_retry_count; - ftdf_count_t tx_fail_count; - ftdf_count_t tx_success_count; - ftdf_count_t fcs_error_count; - ftdf_count_t security_failure_count; - ftdf_count_t duplicate_frame_count; - ftdf_count_t rx_success_count; - ftdf_count_t nack_count; - ftdf_count_t rx_expired_count; - ftdf_count_t bo_irq_count; -} ftdf_performance_metrics_t; - -typedef struct { - ftdf_count_t tx_data_frm_cnt; - ftdf_count_t tx_cmd_frm_cnt; - ftdf_count_t tx_std_ack_frm_cnt; - ftdf_count_t tx_enh_ack_frm_cnt; - ftdf_count_t tx_ceacon_frm_cnt; - ftdf_count_t tx_multi_purp_frm_cnt; - ftdf_count_t rx_data_frm_ok_cnt; - ftdf_count_t rx_cmd_frm_ok_cnt; - ftdf_count_t rx_std_ack_frm_ok_cnt; - ftdf_count_t rx_enh_ack_frm_ok_cnt; - ftdf_count_t rx_beacon_frm_ok_cnt; - ftdf_count_t rx_multi_purp_frm_ok_cnt; -} ftdf_traffic_counters_t; - -typedef uint8_t ftdf_energy_t; - -typedef struct { - /** \brief Coordinator address mode */ - ftdf_address_mode_t coord_addr_mode; - /** \brief Coordinator PAN id */ - ftdf_pan_id_t coord_pan_id; - /** \brief Coordinator address */ - ftdf_address_t coord_addr; - /** \brief Channel number */ - ftdf_channel_number_t channel_number; - /** \brief Channnel page */ - ftdf_channel_page_t channel_page; - /** \brief NOT USED */ - ftdf_bitmap16_t superframe_spec; - /** \brief NOT USED */ - ftdf_boolean_t gts_permit; - /** \brief Link quality */ - ftdf_link_quality_t link_quality; - /** \brief */ - ftdf_time_t timestamp; -} ftdf_pan_descriptor_t; - -typedef struct { - /** \brief Coordinator PAN id */ - ftdf_pan_id_t coord_pan_id; - /** \brief Coordinator short address */ - ftdf_short_address_t coord_short_addr; - /** \brief Channel number */ - ftdf_channel_number_t channel_number; - /** \brief Device short address */ - ftdf_short_address_t short_addr; - /** \brief Channnel page */ - ftdf_channel_page_t channel_page; -} ftdf_coord_realign_descriptor_t; - -/** - * \brief Auto frame source address mode - * \remark Valid values: - * - FTDF_AUTO_NONE: No address - * - FTDF_AUTO_SHORT: Short address - * - FTDF_AUTO_FULL: Extended address - */ -typedef uint8_t ftdf_auto_sa_t; -#define FTDF_AUTO_NONE 1 -#define FTDF_AUTO_SHORT 2 -#define FTDF_AUTO_FULL 3 - -/** - * \brief TX Power tolerance - * \remark Valid values: - * - FTDF_POWER_TOLERANCE_1_DB - * - FTDF_POWER_TOLERANCE_3_DB - * - FTDF_POWER_TOLERANCE_6_DB - */ -typedef uint8_t ftdf_tx_power_tolerance_t; -#define FTDF_POWER_TOLERANCE_1_DB 1 -#define FTDF_POWER_TOLERANCE_3_DB 2 -#define FTDF_POWER_TOLERANCE_6_DB 3 - -/** - * \brief CCA mode - * \remark Valid values: - * - FTDF_CCA_MODE_1 - * - FTDF_CCA_MODE_2 - * - FTDF_CCA_MODE_3 - */ -typedef uint8_t ftdf_cca_mode_t; -#define FTDF_CCA_MODE_1 1 -#define FTDF_CCA_MODE_2 2 -#define FTDF_CCA_MODE_3 3 - -/** - * \brief Frame control options - * \remark Supported options: - * - FTDF_PAN_ID_PRESENT: Controls the PAN id compression/present bit in multipurpose and - version 2 frames - * - FTDF_IES_INCLUDED: Indicates that ie must be included - * - FTDF_SEQ_NR_SUPPRESSED: Controls suppression of the sequence number - * \remark Multiple options can specified by bit wise or-ing them - */ -typedef uint8_t ftdf_frame_control_options_t; -#define FTDF_PAN_ID_PRESENT 0x01 -#define FTDF_IES_INCLUDED 0x02 -#define FTDF_SEQ_NR_SUPPRESSED 0x04 - -typedef struct { - ftdf_channel_page_t channel_page; - ftdf_size_t nr_of_channels; - ftdf_channel_number_t* channels; -} ftdf_channel_descriptor_t; - -typedef struct { - ftdf_size_t nr_of_channel_descriptors; - ftdf_channel_descriptor_t* channel_descriptors; -} ftdf_channel_descriptor_list_t; - -/** - * \brief Dbm data type - */ -typedef int8_t ftdf_dbm; - -typedef uint8_t ftdf_frame_type_t; -#define FTDF_BEACON_FRAME 0 -#define FTDF_DATA_FRAME 1 -#define FTDF_ACKNOWLEDGEMENT_FRAME 2 -#define FTDF_MAC_COMMAND_FRAME 3 -#define FTDF_LLDN_FRAME 4 -#define FTDF_MULTIPURPOSE_FRAME 5 - -/** - * \brief Command frame id - * \remark Supported command frame IDs: - * - FTDF_COMMAND_ASSOCIATION_REQUEST - * - FTDF_COMMAND_ASSOCIATION_RESPONSE - * - FTDF_COMMAND_DISASSOCIATION_NOTIFICATION - * - FTDF_COMMAND_DATA_REQUEST - * - FTDF_COMMAND_PAN_ID_CONFLICT_NOTIFICATION - * - FTDF_COMMAND_ORPHAN_NOTIFICATION - * - FTDF_COMMAND_BEACON_REQUEST - * - FTDF_COMMAND_COORDINATOR_REALIGNMENT - * - FTDF_COMMAND_GTS_REQUEST - */ -typedef uint8_t ftdf_command_frame_id_t; -#define FTDF_COMMAND_ASSOCIATION_REQUEST 1 -#define FTDF_COMMAND_ASSOCIATION_RESPONSE 2 -#define FTDF_COMMAND_DISASSOCIATION_NOTIFICATION 3 -#define FTDF_COMMAND_DATA_REQUEST 4 -#define FTDF_COMMAND_PAN_ID_CONFLICT_NOTIFICATION 5 -#define FTDF_COMMAND_ORPHAN_NOTIFICATION 6 -#define FTDF_COMMAND_BEACON_REQUEST 7 -#define FTDF_COMMAND_COORDINATOR_REALIGNMENT 8 -#define FTDF_COMMAND_GTS_REQUEST 9 - -/** - * \brief Security frame counter - * \remark Valid range 0..0xffffffff (4 octets) if frame counter mode equals 4 - * \remark Valid range 0..0xffffffffff (5 octets) if frame counter mode equals 5 - */ -typedef uint64_t ftdf_frame_counter_t; - -/** - * \brief Security frame counter mode - * \remark Valid range 4..5 - */ -typedef uint8_t ftdf_frame_counter_mode_t; - -typedef struct { - ftdf_key_id_mode_t key_id_mode; - ftdf_octet_t key_source[8]; - ftdf_key_index_t key_index; - ftdf_address_mode_t device_addr_mode; - ftdf_pan_id_t device_pan_id; - ftdf_address_t device_address; -} ftdf_key_id_lookup_descriptor_t; - -typedef struct { - ftdf_pan_id_t pan_id; - ftdf_short_address_t short_address; - ftdf_ext_address_t ext_address; - ftdf_frame_counter_t frame_counter; - ftdf_boolean_t exempt; -} ftdf_device_descriptor_t; - -/** - * \brief Device descriptor handle - * \remark This is the index of a device in \link ftdf_device_table_t \endlink - */ -typedef uint8_t ftdf_device_descriptor_handle_t; - -typedef struct { - /** \brief Frame type */ - ftdf_frame_type_t frame_type; - /** \brief Command frame id */ - ftdf_command_frame_id_t command_frame_id; -} ftdf_key_usage_descriptor_t; - -typedef struct { - ftdf_size_t nr_of_key_id_lookup_descriptors; - ftdf_key_id_lookup_descriptor_t *key_id_lookup_descriptors; - ftdf_size_t nr_of_device_descriptor_handles; - ftdf_device_descriptor_handle_t *device_descriptor_handles; - ftdf_size_t nr_of_key_usage_descriptors; - ftdf_key_usage_descriptor_t *key_usage_descriptors; - ftdf_octet_t key[16]; -} ftdf_key_descriptor_t; - -typedef struct { - ftdf_frame_type_t frame_type; - ftdf_command_frame_id_t command_frame_id; - ftdf_security_level_t security_minimum; - ftdf_boolean_t device_override_security_minimum; - ftdf_bitmap8_t allowed_security_levels; -} ftdf_security_level_descriptor_t; - -/** - * \brief Key table - * \remark As followes an example how to initialize a key table for usage with FTDF_SET_REQUEST: - * \code - * ftdf_key_id_lookup_descriptor_t lookupDescriptorsKey1[] = - * { { 2, { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef }, 7, 0, 0 0 }, - * { 0, { 0, 0, 0, 0, 0, 0, 0, 0 }, 0, 2, 0x1234, 0x0001 } }; - * ftdf_key_id_lookup_descriptor_t lookupDescriptorsKey2[] = - * { { 1, { 0, 0, 0, 0, 0, 0, 0, 0 }, 5, 0, 0, 0 } }; - * ftdf_device_descriptor_handle_t deviceDescriptorHandlesKey1[] = { 0, 2 }; - * ftdf_device_descriptor_handle_t deviceDescriptorHandlesKey2[] = { 1 }; - * ftdf_key_usage_descriptor_t keyUsageDescriptorKey1[] = { { 1, 0 }, { 3, 4 } }; - * ftdf_key_usage_descriptor_t keyUsageDescriptorKey2[] = { { 1, 0 } }; - * ftdf_key_descriptor_t key_descriptors[] = - * { { sizeof(lookupDescriptorsKey1) / sizeof(ftdf_key_id_lookup_descriptor_t), - * lookupDescriptorsKey1, - * sizeof(deviceDescriptorHandlesKey1) / sizeof(ftdf_device_descriptor_handle_t), - * deviceDescriptorHandlesKey1, - * sizeof(keyUsageDescriptorKey1) / sizeof(ftdf_key_usage_descriptor_t), - * keyUsageDescriptorKey1, - * { 0x7e, 0x37, 0x2d, 0x41, 0xdf, 0x74, 0x72, 0x3f, 0x4c, 0x3a, 0xa7, 0x53, 0xa1, 0x11, 0x46, 0x8b } }, - * { sizeof(lookupDescriptorsKey2) / sizeof(ftdf_key_id_lookup_descriptor_t), - * lookupDescriptorsKey2, - * sizeof(deviceDescriptorHandlesKey2) / sizeof(ftdf_device_descriptor_handle_t), - * deviceDescriptorHandlesKey2, - * sizeof(keyUsageDescriptorKey2) / sizeof(ftdf_key_usage_descriptor_t), - * keyUsageDescriptorKey1, - * { 0xdf, 0x74, 0x72, 0x3f, 0x7e, 0x37, 0x2d, 0x41, 0x4c, 0x3a, 0xa1, 0x11, 0x46, 0x8, 0xa7, 0x53b } } }; - * ftdf_key_table_t keyTable = - * { sizeof(key_descriptors) / sizeof(ftdf_key_descriptor_t), key_descriptors }; - * \endcode - */ -typedef struct { - /** \brief Number of key descriptors in the key table */ - ftdf_size_t nr_of_key_descriptors; - /** \brief Pointer to the first key descriptor entry */ - ftdf_key_descriptor_t *key_descriptors; -} ftdf_key_table_t; - -typedef struct { - /** \brief Number of device descriptors in the key table */ - ftdf_size_t nr_of_device_descriptors; - /** \brief Pointer to the first device descriptor entry */ - ftdf_device_descriptor_t *device_descriptors; -} ftdf_device_table_t; - -typedef struct { - /** \brief Number of security level descriptors in the key table */ - ftdf_size_t nr_of_security_level_descriptors; - /** \brief Pointer to the first security level descriptor entry */ - ftdf_security_level_descriptor_t *security_level_descriptors; -} ftdf_security_level_table_t; - -/** - * \brief IE type - * \remark Supported IE types: - * - FTDF_SHORT_IE - * - FTDF_LONG_IE - */ -typedef uint8_t ftdf_ie_type_t; -#define FTDF_SHORT_IE 0 -#define FTDF_LONG_IE 1 - -typedef uint8_t ftdf_ie_id_t; - -typedef uint8_t ftdf_ie_length_t; - -typedef struct { - /** \brief IE type */ - ftdf_ie_type_t type; - /** \brief Sub IE id*/ - ftdf_ie_id_t sub_id; - /** \brief Sub IE length */ - ftdf_ie_length_t length; - /** \brief Pointer to sub IE content */ - ftdf_octet_t *sub_content; -} ftdf_sub_ie_descriptor_t; - -typedef struct { - /** \brief Number of sub IE descriptors in an MLME payload IE (id = 1) */ - ftdf_size_t nr_of_sub_ie; - /** \brief Pointer to the first sub IE descriptor */ - ftdf_sub_ie_descriptor_t *sub_ie; -} ftdf_sub_ie_list_t; - -typedef union { - /** \brief IE content if not a MLME payload IE (id = 1) */ - ftdf_octet_t *raw; - /** \brief IE content if a MLME payload IE (id = 1) */ - ftdf_sub_ie_list_t *nested; -} ftdf_ie_content_t; - -typedef struct { - /** \brief IE id */ - ftdf_ie_id_t id; - /** \brief Content length of the IE, undefined/unused in case of a MLME payload IE (id = 1) */ - ftdf_ie_length_t length; - /** \brief Content of the IE */ - ftdf_ie_content_t content; -} ftdf_ie_descriptor_t; - -typedef struct { - /** \brief Number of IE descriptors */ - ftdf_size_t nr_of_ie; - /** \brief Pointer to the first IE descriptor */ - ftdf_ie_descriptor_t *ie; -} ftdf_ie_list_t; - -typedef struct { - /** \brief Message id */ - ftdf_msg_id_t msg_id; -} ftdf_msg_buffer_t; - -typedef struct { - /** \brief Message id = FTDF_DATA_REQUEST */ - ftdf_msg_id_t msg_id; - /** \brief Source address mode */ - ftdf_address_mode_t src_addr_mode; - /** \brief Destination address mode */ - ftdf_address_mode_t dst_addr_mode; - /** \brief Destination PAN id */ - ftdf_pan_id_t dst_pan_id; - /** \brief Destination address */ - ftdf_address_t dst_addr; - /** \brief Length of MSDU payload */ - ftdf_data_length_t msdu_length; - /** - * \brief MSDU payload data buffer. Must be freed by the application using FTDF_REL_DATA_BUFFER - * when it receives the FTDF_DATA_CONFIRM message - */ - ftdf_octet_t *msdu; - /** \brief Handle */ - ftdf_handle_t msdu_handle; - /** \brief Whether the data frame needs to be acknowledged or */ - ftdf_boolean_t ack_tx; - /** \brief NOT USED */ - ftdf_boolean_t gts_tx; - /** - * \brief Indication whether the frame must be send directly or be queued until a - * DATA_REQUEST COMMAND frame is received - */ - ftdf_boolean_t indirect_tx; - /** \brief Security level */ - ftdf_security_level_t security_level; - /** \brief Security key id mode */ - ftdf_key_id_mode_t key_id_mode; - /** \brief Security key source */ - ftdf_octet_t key_source[8]; - /** \brief Security key index */ - ftdf_key_index_t key_index; - /** \brief Frame control option bitmap */ - ftdf_frame_control_options_t frame_control_options; - /** - * \brief Header IE list to be inserted. - * Ignored if the FTDF_IES_INCLUDED frame control option is NOT set. - * The IE list must be located in rentention RAM - */ - ftdf_ie_list_t *header_ie_list; - /** - * \brief Payload IE list to be inserted. - * Ignored if the FTDF_IES_INCLUDED frame control option is NOT set. - * The IE list must be located in rentention RAM - */ - ftdf_ie_list_t *payload_ie_list; - /** Indication whether a DATA or MULTIPURPOSE frame must be set */ - ftdf_boolean_t send_multi_purpose; - /** \brief DO NOT USE */ - uint8_t __private3; -} ftdf_data_request_t; - -typedef struct { - /** \brief Message id = FTDF_DATA_INDICATION */ - ftdf_msg_id_t msg_id; - /** \brief Source address mode */ - ftdf_address_mode_t src_addr_mode; - /** \brief Source PAN id */ - ftdf_pan_id_t src_pan_id; - /** \brief Source address */ - ftdf_address_t src_addr; - /** \brief Destination address mode */ - ftdf_address_mode_t dst_addr_mode; - /** \brief Destination PAN id */ - ftdf_pan_id_t dst_pan_id; - /** \brief Destination address */ - ftdf_address_t dst_addr; - /** \brief Length of MSDU payload */ - ftdf_data_length_t msdu_length; - /** \brief MSDU payload data buffer Must be freed by the application using FTDF_REL_DATA_BUFFER */ - ftdf_octet_t *msdu; - /** \brief MPDU link quality */ - ftdf_link_quality_t mpdu_link_quality; - /** \brief Data sequence number */ - ftdf_sn_t dsn; - /** \brief Timestamp of the time the frame was received */ - ftdf_time_t timestamp; - /** \brief Security level */ - ftdf_security_level_t security_level; - /** \brief Security key id mode */ - ftdf_key_id_mode_t key_id_mode; - /** \brief Security key source */ - ftdf_octet_t key_source[8]; - /** \brief Security key index */ - ftdf_key_index_t key_index; - /** /brief Payload IE list
- * The whole payload IE list (including IE descriptors, Sub IE descriptors and content) - * is allocated in one data buffer that must be freed by the application using - * FTDF_REL_DATA_BUFFER - * with the ie_list pointer as parameter - */ - ftdf_ie_list_t *payload_ie_list; -} ftdf_data_indication_t; - -typedef struct { - /** \brief Message id = FTDF_DATA_CONFIRM */ - ftdf_msg_id_t msg_id; - /** /brief The handle given by the application in the correspoding FTDF_DATA_REQUEST */ - ftdf_handle_t msdu_handle; - /** /brief Timestmap of the time the frame has been sent */ - ftdf_time_t timestamp; - /** /brief Status of the data request */ - ftdf_status_t status; - /** /brief Number of backoffs, undefined in case status not equal to FTDF_SUCCESS or TSCH enabled */ - ftdf_num_of_backoffs_t num_of_backoffs; - /** /brief Data sequence number of the sent frame */ - ftdf_sn_t dsn; - /** /brief Acknowledgement payload IE list
- * The whole payload IE list (including IE descriptors, Sub IE descriptors and content) - * is allocated in one data buffer that must be freed by the application using - * FTDF_REL_DATA_BUFFER with the ie_list pointer as parameter - */ - ftdf_ie_list_t *ack_payload; -} ftdf_data_confirm_t; - -typedef struct { - /** \brief Message id = FTDF_PURGE_REQUEST */ - ftdf_msg_id_t msg_id; - /** \brief Handle the data request to be purged */ - ftdf_handle_t msdu_handle; -} ftdf_purge_request_t; - -typedef struct { - /** \brief Message id = FTDF_PURGE_CONFIRM */ - ftdf_msg_id_t msg_id; - /** \brief Handle of the purged data request */ - ftdf_handle_t msdu_handle; - /** /brief Status of the purge request */ - ftdf_status_t status; -} ftdf_purge_confirm_t; - -typedef struct { - /** \brief Message id = FTDF_ASSOCIATE_REQUEST */ - ftdf_msg_id_t msg_id; - /** \brief Channel number to be used for the associate request. Ignored in TSCH mode */ - ftdf_channel_number_t channel_number; - /** \brief Channel page to be used for the associate request. Ignored in TSCH mode */ - ftdf_channel_page_t channel_page; - /** \brief Coordinator address mode */ - ftdf_address_mode_t coord_addr_mode; - /** \brief Coordinator PAN id */ - ftdf_pan_id_t coord_pan_id; - /** \brief Coordinator address */ - ftdf_address_t coord_addr; - /** - * \brief Capabillity information bitmap. The following capabilities are defined:
- * FTDF_CAPABILITY_IS_FFD: Device is a full function device
- * FTDF_CAPABILITY_AC_POWER: Device has AC power
- * FTDF_CAPABILITY_RECEIVER_ON_WHEN_IDLE: Device receiver is on when idle
- * FTDF_CAPABILITY_FAST_ASSOCIATION: Device wants a fast association
- * FTDF_CAPABILITY_SUPPORTS_SECURITY: Device supports security
- * FTDF_CAPABILITY_WANTS_SHORT_ADDRESS: Device wants short address
- */ - ftdf_bitmap8_t capability_information; - /** \brief Security level */ - ftdf_security_level_t security_level; - /** \brief Security key id mode */ - ftdf_key_id_mode_t key_id_mode; - /** \brief Security key source */ - ftdf_octet_t key_source[8]; - /** \brief Security key index */ - ftdf_key_index_t key_index; - /** \brief NOT USED */ - ftdf_channel_offset_t channel_offset; - /** \brief NOT USED */ - ftdf_hopping_sequence_id_t hopping_sequence_id; - /** \brief DO NOT USE */ - uint8_t __private3; -} ftdf_associate_request_t; - -typedef struct { - /** \brief Message id = FTDF_ASSOCIATE_INDICATION */ - ftdf_msg_id_t msg_id; - /** \brief Extended address of the device that did the association request */ - ftdf_ext_address_t device_address; - /** - * \brief Capabillity information bitmap. The following capabilities are defined:
- * FTDF_CAPABILITY_IS_FFD: Device is a full function device
- * FTDF_CAPABILITY_AC_POWER: Device has AC power
- * FTDF_CAPABILITY_RECEIVER_ON_WHEN_IDLE: Device receiver is on when idle
- * FTDF_CAPABILITY_FAST_ASSOCIATION: Device wants a fast association
- * FTDF_CAPABILITY_SUPPORTS_SECURITY: Device supports security
- * FTDF_CAPABILITY_WANTS_SHORT_ADDRESS: Device wants short address
- */ - ftdf_bitmap8_t capability_information; - /** \brief Security level */ - ftdf_security_level_t security_level; - /** \brief Security key id mode */ - ftdf_key_id_mode_t key_id_mode; - /** \brief Security key source */ - ftdf_octet_t key_source[8]; - /** \brief Security key index */ - ftdf_key_index_t key_index; - /** \brief NOT USED */ - ftdf_channel_offset_t channel_offset; - /** \brief NOT USED */ - ftdf_hopping_sequence_id_t hopping_sequence_id; -} ftdf_associate_indication_t; - -typedef struct { - /** \brief Message id = FTDF_ASSOCIATE_RESPONSE */ - ftdf_msg_id_t msg_id; - /** \brief Extended address of the device that did association request and to which the response needs to be send */ - ftdf_ext_address_t device_address; - /** \brief The short address for the device that did the associate request */ - ftdf_short_address_t assoc_short_address; - /** \brief The association status of the associate request */ - ftdf_association_status_t status; - /** \brief Indication whether this a response to fast or normal association request */ - ftdf_boolean_t fast_a; - /** \brief Security level */ - ftdf_security_level_t security_level; - /** \brief Security key id mode */ - ftdf_key_id_mode_t key_id_mode; - /** \brief Security key source */ - ftdf_octet_t key_source[8]; - /** \brief Security key index */ - ftdf_key_index_t key_index; - /** \brief NOT USED */ - ftdf_channel_offset_t channel_offset; - /** \brief NOT USED */ - ftdf_length_t hopping_sequence_length; - /** \brief NOT USED */ - ftdf_octet_t* hopping_sequence; - /** \brief DO NOT USE */ - uint8_t __private3; -} ftdf_associate_response_t; - -typedef struct { - /** \brief Message id = FTDF_ASSOCIATE_CONFIRM */ - ftdf_msg_id_t msg_id; - /** \brief The short adddress assigned by the coordinator */ - ftdf_short_address_t assoc_short_address; - /** \brief Status of the associate request */ - ftdf_status_t status; - /** \brief Security level */ - ftdf_security_level_t security_level; - /** \brief Security key id mode */ - ftdf_key_id_mode_t key_id_mode; - /** \brief Security key source */ - ftdf_octet_t key_source[8]; - /** \brief Security key index */ - ftdf_key_index_t key_index; - /** \brief NOT USED */ - ftdf_channel_offset_t channel_offset; - /** \brief NOT USED */ - ftdf_length_t hopping_sequence_length; - /** \brief NOT USED */ - ftdf_octet_t *hopping_sequence; -} ftdf_associate_confirm_t; - -typedef struct { - /** \brief Message id = FTDF_DISASSOCIATE_REQUEST */ - ftdf_msg_id_t msg_id; - /** \brief Device address mode */ - ftdf_address_mode_t device_addr_mode; - /** \brief Device PAN id */ - ftdf_pan_id_t device_pan_id; - /** \brief Device address */ - ftdf_address_t device_address; - /** \brief Disassociate reason */ - ftdf_disassociate_reason_t disassociate_reason; - /** - * \brief Indication whether the disassociate request must be send directly or be queued until a - * DATA_REQUEST command frame is received - */ - ftdf_boolean_t tx_indirect; - /** \brief Security level */ - ftdf_security_level_t security_level; - /** \brief Security key id mode */ - ftdf_key_id_mode_t key_id_mode; - /** \brief Security key source */ - ftdf_octet_t key_source[8]; - /** \brief Security key index */ - ftdf_key_index_t key_index; - /** \brief DO NOT USE */ - uint8_t __private3; -} ftdf_disassociate_request_t; - -typedef struct { - /** \brief Message id = FTDF_DISASSOCIATE_INDICATION */ - ftdf_msg_id_t msg_id; - /** \brief Extended address of the device that did disassociate request */ - ftdf_ext_address_t device_address; - /** \brief Disassociate reason */ - ftdf_disassociate_reason_t disassociate_reason; - /** \brief Security level */ - ftdf_security_level_t security_level; - /** \brief Security key id mode */ - ftdf_key_id_mode_t key_id_mode; - /** \brief Security key source */ - ftdf_octet_t key_source[8]; - /** \brief Security key index */ - ftdf_key_index_t key_index; -} ftdf_disassociate_indication_t; - -typedef struct { - /** \brief Message id = FTDF_DISASSOCIATE_CONFIRM */ - ftdf_msg_id_t msg_id; - /** \brief Disassociate request status */ - ftdf_status_t status; - /** \brief Address mode of the device that want/must disassociate */ - ftdf_address_mode_t device_addr_mode; - /** \brief PAN id of the device that want/must disassociate */ - ftdf_pan_id_t device_pan_id; - /** \brief address of the device that want/must disassociate */ - ftdf_address_t device_address; -} ftdf_disassociate_confirm_t; - -typedef struct { - /** \brief Message id = FTDF_BEACON_NOTIFY_INDCATION */ - ftdf_msg_id_t msg_id; - /** \brief Beacon sequence number, valid only when beacon type is FTDF_NORMAL_BEACON */ - ftdf_sn_t bsn; - /** \brief PAN descriptor*/ - ftdf_pan_descriptor_t *pan_descriptor; - /** \brief NOT USED */ - ftdf_bitmap8_t pend_addr_spec; - /** \brief NOT USED */ - ftdf_address_t *addr_list; - /** \brief Length of the beacon payload */ - ftdf_data_length_t sdu_length; - /** \brief Beacon payload */ - ftdf_octet_t *sdu; - /** \brief Enhanced beacon sequence number, valid only when beacon type is FTDF_ENHANCED_BEACON */ - ftdf_sn_t eb_sn; - /** \brief Beacon type */ - ftdf_beacon_type_t beacon_type; - /** - * \brief Payload IE list
- * The whole Payload IE list (including IE descriptors, Sub IE descriptors and content) - * is allocate in one data buffer that must be freed by the application using FTDF_REL_DATA_BUFFER - * with the ie_list pointer as parameter. - */ - ftdf_ie_list_t *ie_list; - /** - * \brief Timestamp of the time the beacon frame was received
- * In TSCH mode this timestamp should be used to calculate the TSCH timeslot start time - * required in a FTDF_TSCH_MODE_REQUEST message - */ - ftdf_time64_t timestamp; -} ftdf_beacon_notify_indication_t; - -typedef struct { - /** \brief Message id = FTDF_COMM_STATUS_INDICATION */ - ftdf_msg_id_t msg_id; - /** \brief PAN id of the frame causing the error */ - ftdf_pan_id_t pan_id; - /** \brief Source address mode of the frame causing the error */ - ftdf_address_mode_t src_addr_mode; - /** \brief Source address of the frame causing the error */ - ftdf_address_t src_addr; - /** \brief Destination address mode of the frame causing the error */ - ftdf_address_mode_t dst_addr_mode; - /** \brief Destination address of the frame causing the error */ - ftdf_address_t dst_addr; - /** \brief Error status */ - ftdf_status_t status; - /** \brief Security level */ - ftdf_security_level_t security_level; - /** \brief Security key id mode */ - ftdf_key_id_mode_t key_id_mode; - /** \brief Security key source */ - ftdf_octet_t key_source[8]; - /** \brief Security key index */ - ftdf_key_index_t key_index; -} ftdf_comm_status_indication_t; - -typedef struct { - /** \brief Message id = FTDF_GET_REQUEST */ - ftdf_msg_id_t msg_id; - ftdf_pib_attribute_t pib_attribute; -} ftdf_get_request_t; - -typedef struct { - /** \brief Message id = FTDF_GET_CONFIRM */ - ftdf_msg_id_t msg_id; - /** \brief Status of the get request */ - ftdf_status_t status; - /** \brief PIB attribute id of PIB attribute gotten */ - ftdf_pib_attribute_t pib_attribute; - /** - * \brief Pointer to the PIB attribute value to be set
- * Each PIB attribute has its own type, see \link ftdf_pib_attribute_t \endlink
- * In order to access the attribute value the application must cast this pinter - * to the correct type. - */ - const ftdf_pib_attribute_value_t *pib_attribute_value; -} ftdf_get_confirm_t; - -typedef struct { - /** \brief Message id = FTDF_SET_REQUEST */ - ftdf_msg_id_t msg_id; - /** \brief PIB attribute id of attribute to be set */ - ftdf_pib_attribute_t pib_attribute; - /** - * \brief Pointer to the PIB attribute value to be set
- * Each PIB attribute has its own type, see \link ftdf_pib_attribute_t \endlink
- * FTDF does a shallow copy of the PIB attribute. So if the PIB attribute contains pointers to - * other data this data is NOT copied by FTDF. The application must make sure that data referred - * from a PIB attribute is statically allocated in retention RAM. - */ - const ftdf_pib_attribute_value_t *pib_attribute_value; -} ftdf_set_request_t; - -typedef struct { - /** \brief Message id = FTDF_GET_CONFIRM */ - ftdf_msg_id_t msg_id; - /** \brief Set request status */ - ftdf_status_t status; - /** \brief PIB Attribute id of PIB attribute that has been set */ - ftdf_pib_attribute_t pib_attribute; -} ftdf_set_confirm_t; - -typedef struct { - ftdf_msg_id_t msg_id; - ftdf_gts_charateristics_t gts_charateristics; - ftdf_security_level_t security_level; - ftdf_key_id_mode_t key_id_mode; - ftdf_octet_t key_source[8]; - ftdf_key_index_t key_index; -} ftdf_gts_request_t; - -typedef struct { - ftdf_msg_id_t msg_id; - ftdf_gts_charateristics_t gts_charateristics; - ftdf_status_t status; -} ftdf_gts_confirm_t; - -typedef struct { - ftdf_msg_id_t msg_id; - ftdf_short_address_t device_address; - ftdf_gts_charateristics_t gts_charateristics; - ftdf_security_level_t security_level; - ftdf_key_id_mode_t key_id_mode; - ftdf_octet_t key_source[8]; - ftdf_key_index_t key_index; -} ftdf_gts_indication_t; - -typedef struct { - /** \brief Message id = FTDF_ORPHAN_INDICATION */ - ftdf_msg_id_t msg_id; - /** \brief Extended address of orphaned device */ - ftdf_ext_address_t orphan_address; - /** \brief Security level */ - ftdf_security_level_t security_level; - /** \brief Security key id mode */ - ftdf_key_id_mode_t key_id_mode; - /** \brief Security key source */ - ftdf_octet_t key_source[8]; - /** \brief Security key index */ - ftdf_key_index_t key_index; -} ftdf_orphan_indication_t; - -typedef struct { - /** \brief Message id = FTDF_ORPHAN_RESPONSE */ - ftdf_msg_id_t msg_id; - /** \brief Extended address of orphaned device */ - ftdf_ext_address_t orphan_address; - /** \brief Short address of orphaned device */ - ftdf_short_address_t short_address; - /** \brief Indication whether the device is associated with this coordinator or not */ - ftdf_boolean_t associated_member; - /** \brief Security level */ - ftdf_security_level_t security_level; - /** \brief Security key id mode */ - ftdf_key_id_mode_t key_id_mode; - /** \brief Security key source */ - ftdf_octet_t key_source[8]; - /** \brief Security key index */ - ftdf_key_index_t key_index; -} ftdf_orphan_response_t; - -typedef struct { - /** \brief Message id = FTDF_RESET_REQUEST */ - ftdf_msg_id_t msg_id; - /** \brief Indication whether the PIB attributes must be reset to their default values or not */ - ftdf_boolean_t set_default_pib; -} ftdf_reset_request_t; - -typedef struct { - /** \brief Message id = FTDF_RESET_CONFIRM */ - ftdf_msg_id_t msg_id; - /** \brief Status of the reset request */ - ftdf_status_t status; -} ftdf_reset_confirm_t; - -typedef struct { - /** \brief Message id = FTDF_RX_ENABLE_REQUEST */ - ftdf_msg_id_t msg_id; - /** \brief NOT USED */ - ftdf_boolean_t defer_permit; - /** \brief NOT USED */ - ftdf_time_t rx_on_time; - /** \brief The time in aBaseSuperFramePeriod's (960 symbols) that the receiver will be on */ - ftdf_time_t rx_on_duration; -} ftdf_rx_enable_request_t; - -typedef struct { - /** \brief Message id = FTDF_RX_ENABLE_CONFIRM */ - ftdf_msg_id_t msg_id; - /** \brief Status of the RX enable request */ - ftdf_status_t status; -} ftdf_rx_enable_confirm_t; - -typedef struct { - /** \brief Message id = FTDF_SCAN_REQUEST */ - ftdf_msg_id_t msg_id; - /** \brief Scan Type */ - ftdf_scan_type_t scan_type; - /** \brief Bitmap of the channels to be scanned (only channel 11 - 27 are supported) */ - ftdf_bitmap32_t scan_channels; - /** \brief Channel page of the channels to be scanned (only page 0 is supported) */ - ftdf_channel_page_t channel_page; - /** \brief Scan duration per channel, duration = ((scan_duration ^ 2) - 1) * aBaseSuperFramePeriod symbols */ - ftdf_scan_duration_t scan_duration; - /** \brief Security level */ - ftdf_security_level_t security_level; - /** \brief Security key id mode */ - ftdf_key_id_mode_t key_id_mode; - /** \brief Security key source */ - ftdf_octet_t key_source[8]; - /** \brief Security key index */ - ftdf_key_index_t key_index; -} ftdf_scan_request_t; - -typedef struct { - /** \brief Message id = FTDF_SCAN_CONFIRM */ - ftdf_msg_id_t msg_id; - /** \brief Status of the scan request */ - ftdf_status_t status; - /** \brief Scan Type */ - ftdf_scan_type_t scan_type; - /** \brief Channel page of the scanned channels */ - ftdf_channel_page_t channel_page; - /** \brief Bitmap of the channels not scanned but were requested to be scanned */ - ftdf_bitmap32_t unscanned_channels; - /** \brief Number of entries in energy_detect_list or pan_descriptor_list */ - ftdf_size_t result_list_size; - /** \brief Pointer to the first energy detect result */ - ftdf_energy_t *energy_detect_list; - /** \brief Pointer to the first PAN descriptor */ - ftdf_pan_descriptor_t *pan_descriptor_list; - /** \brief */ - ftdf_coord_realign_descriptor_t *coord_realign_descriptor; -} ftdf_scan_confirm_t; - -typedef struct { - /** \brief Message id = FTDF_START_REQUEST */ - ftdf_msg_id_t msg_id; - /** \brief PAN id that will be used by the coordinator */ - ftdf_pan_id_t pan_id; - /** \brief Channel number that will be used by the coordinator */ - ftdf_channel_number_t channel_number; - /** \brief Channel page that will be used by the coordinator */ - ftdf_channel_page_t channel_page; - /** \brief NOT USED */ - ftdf_time_t start_time; - /** \brief Beacon order, only beacon order 15 (beaconless) is supported */ - ftdf_order_t beacon_order; - /** \brief NOT USED */ - ftdf_order_t superframe_order; - /** \brief Indication whether the device must be a coordinator or a PAN coordinator */ - ftdf_boolean_t pan_coordinator; - /** \brief NOT USED */ - ftdf_boolean_t battery_life_extension; - /** \brief NOT USED */ - ftdf_boolean_t coord_realignment; - /** \brief NOT USED */ - ftdf_security_level_t coord_realign_security_level; - /** \brief NOT USED */ - ftdf_key_id_mode_t coord_realign_key_id_mode; - /** \brief NOT USED */ - ftdf_octet_t coord_realign_key_source[8]; - /** \brief NOT USED */ - ftdf_key_index_t coord_realign_key_index; - /** \brief NOT USED */ - ftdf_security_level_t beacon_security_level; - /** \brief NOT USED */ - ftdf_key_id_mode_t beacon_key_id_mode; - /** \brief NOT USED */ - ftdf_octet_t beacon_key_source[8]; - /** \brief NOT USED */ - ftdf_key_index_t beacon_key_index; -} ftdf_start_request_t; - -typedef struct { - /** \brief Message id = FTDF_START_CONFIRM */ - ftdf_msg_id_t msg_id; - /** \brief Status of the start request */ - ftdf_status_t status; -} ftdf_start_confirm_t; - -typedef struct { - ftdf_msg_id_t msg_id; - ftdf_channel_number_t channnel_number; - ftdf_channel_page_t channel_page; - ftdf_boolean_t trackbeacon; -} ftdf_sync_request_t; - -typedef struct { - /** \brief Message id = FTDF_SYNC_LOSS_INDICATION */ - ftdf_msg_id_t msg_id; - /** \brief Loss Reason */ - ftdf_loss_reason_t loss_reason; - /** \brief PAN id */ - ftdf_pan_id_t pan_id; - /** \brief Channel number */ - ftdf_channel_number_t channel_number; - /** \brief Channel page */ - ftdf_channel_page_t channel_page; - /** \brief Security level */ - ftdf_security_level_t security_level; - /** \brief Security key id mode */ - ftdf_key_id_mode_t key_id_mode; - /** \brief Security key source */ - ftdf_octet_t key_source[8]; - /** \brief Security key index */ - ftdf_key_index_t key_index; -} ftdf_sync_loss_indication_t; - -typedef struct { - /** \brief Message id = FTDF_POLL_REQUEST */ - ftdf_msg_id_t msg_id; - /** \brief Coordinator address mode */ - ftdf_address_mode_t coord_addr_mode; - /** \brief coordinator PAN id */ - ftdf_pan_id_t coord_pan_id; - /** \brief Coordinator address */ - ftdf_address_t coord_addr; - /** \brief Security level */ - ftdf_security_level_t security_level; - /** \brief Security key id mode */ - ftdf_key_id_mode_t key_id_mode; - /** \brief Security key source */ - ftdf_octet_t key_source[8]; - /** \brief Security key index */ - ftdf_key_index_t key_index; -} ftdf_poll_request_t; - -typedef struct { - /** \brief Message id = FTDF_POLL_CONFIRM */ - ftdf_msg_id_t msg_id; - /** \brief Status of the poll request */ - ftdf_status_t status; -} ftdf_poll_confirm_t; - -typedef struct { - /** \brief Message id = FTDF_SET_SLOTFRAME_REQUEST */ - ftdf_msg_id_t msg_id; - /** \brief Slotframe handle */ - ftdf_handle_t handle; - /** \brief Set operation */ - ftdf_operation_t operation; - /** \brief Number of timeslots in this slotframe */ - ftdf_slotframe_size_t size; -} ftdf_set_slotframe_request_t; - -typedef struct { - /** \brief Message id = FTDF_SET_SLOTFRAME_CONFIRM */ - ftdf_msg_id_t msg_id; - /** \brief Slotframe handle */ - ftdf_handle_t handle; - /** \brief Status of the set sloytframe request */ - ftdf_status_t status; -} ftdf_set_slotframe_confirm_t; - -typedef struct { - /** \brief Message id = FTDF_SET_LINK_REQUEST */ - ftdf_msg_id_t msg_id; - /** \brief Set operation */ - ftdf_operation_t operation; - /** \brief Handle of this link, used for delete and modify operations */ - ftdf_handle_t link_handle; - /** \brief Handle of the slotframe of this link */ - ftdf_handle_t slotframe_handle; - /** \brief Timeslot in the slotframe */ - ftdf_timeslot_t timeslot; - /** \brief Channel offset */ - ftdf_channel_offset_t channel_offset; - /** - * \brief Bit mapped link options, the following options are supported:
- * FTDF_LINK_OPTION_TRANSMIT: Lik can be used for transmitting
- * FTDF_LINK_OPTION_RECEIVE: Link can be used for receiving
- * FTDF_LINK_OPTION_SHARED: Shared link, multiple device can transmit in this link
- * FTDF_LINK_OPTION_TIME_KEEPING: Link will be used to synchronise timeslots
- * Multiple options can be defined by or-ing them. - */ - ftdf_bitmap8_t link_options; - /** \brief Link type */ - ftdf_link_type_t link_type; - /** \brief Short address of the peer node, only valid if is a transmit link */ - ftdf_short_address_t node_address; -} ftdf_set_link_request_t; - -typedef struct { - /** \brief Message id = FTDF_SET_LINK_CONFIRM */ - ftdf_msg_id_t msg_id; - /** \brief Status of the set link request */ - ftdf_status_t status; - /** \brief Link handle */ - ftdf_handle_t link_handle; - /** \brief Slotframe handle */ - ftdf_handle_t slotframe_handle; -} ftdf_set_link_confirm_t; - -typedef struct { - /** \brief Message id = FTDF_TSCH_MODE_REQUEST */ - ftdf_msg_id_t msg_id; - /** \brief The new TSCH mode */ - ftdf_tsch_mode_t tschMode; - /** - * \brief The timestamp in symbols of the start of the timeslot with ASN equal to the PIB attribute - * FTDF_PIB_ASN
- * The timestamp should be calculated from the timestamp of the BEACON_NOTIFY_INDICATION message
- * Before sending the FTDF_TSCH_MODE_REQUEST message the application should set FTDF_PIB_ASN with - * the ASN of the TSCH synchronization IE of the ie_list of the BEACON_NOTIFY_INDICATION message - */ - ftdf_time_t timeslotStartTime; -} ftdf_tsch_mode_request_t; - -typedef struct { - /** \brief Message id = FTDF_TSCH_MODE_CONFIRM */ - ftdf_msg_id_t msg_id; - /** \brief The new TSCH mode */ - ftdf_tsch_mode_t tschMode; - /** \brief Status of the TSCH mode request */ - ftdf_status_t status; -} ftdf_tsch_mode_confirm_t; - -typedef struct { - /** \brief Message id = FTDF_KEEP_ALIVE_REQUEST */ - ftdf_msg_id_t msg_id; - /** \brief Short address to which keep alive message should be send */ - ftdf_short_address_t dst_address; - /** \brief */ - ftdf_keep_alive_period_t keep_alive_period; -} ftdf_keep_alive_request_t; - -typedef struct { - /** \brief Message id = FTDF_KEEP_ALIVE_CONFIRM */ - ftdf_msg_id_t msg_id; - /** \brief Status of the keep alive request */ - ftdf_status_t status; -} ftdf_keep_alive_confirm_t; - -typedef struct { - /** \brief Message id = FTDF_BEACON_REQUEST */ - ftdf_msg_id_t msg_id; - /** \brief Beacon type */ - ftdf_beacon_type_t beacon_type; - /** \brief Channel number at which the beacon must be sent, ignored in TSCH mode */ - ftdf_channel_number_t channel; - /** \brief Channel page, ignored in TSCH mode */ - ftdf_channel_page_t channel_page; - /** \brief NOT USED */ - ftdf_order_t superframe_order; - /** \brief Security level */ - ftdf_security_level_t beacon_security_level; - /** \brief Security key id mode */ - ftdf_key_id_mode_t beacon_key_id_mode; - /** \brief Security key source */ - ftdf_octet_t beacon_key_source[8]; - /** \brief Security key index */ - ftdf_key_index_t beacon_key_index; - /** \brief Beacon destination address mode */ - ftdf_address_mode_t dst_addr_mode; - /** \brief Beacon destination address */ - ftdf_address_t dst_addr; - /** \brief Indication whether the bsn (or eb_sn) in the beacon frame must suppressed */ - ftdf_boolean_t bsn_suppression; - /** \brief DO NOT USE */ - uint8_t __private3; -} ftdf_beacon_request_t; - -typedef struct { - /** \brief Message id = FTDF_BEACON_CONFIRM */ - ftdf_msg_id_t msg_id; - /** \brief Status of the beacon request */ - ftdf_status_t status; -} ftdf_beacon_confirm_t; - -typedef struct { - /** \brief Message id = FTDF_BEACON_REQUEST_INDICATION */ - ftdf_msg_id_t msg_id; - /** \brief Beacon type */ - ftdf_beacon_type_t beacon_type; - /** \brief Source address mode */ - ftdf_address_mode_t src_addr_mode; - /** \brief Source address */ - ftdf_address_t src_addr; - /** \brief Source PAN id */ - ftdf_pan_id_t dst_pan_id; - /** - * \brief Payload IE list
- * The whole Payload IE list (including IE descriptors, Sub IE descriptors and content) - * is allocate in one data buffer that must be freed by the application using FTDF_REL_DATA_BUFFER - * with the ie_list pointer as parameter. - */ - ftdf_ie_list_t *ie_list; -} ftdf_beacon_request_indication_t; - -typedef struct { - /** \brief Message id = FTDF_TRANSPARENT_ENABLE_REQUEST */ - ftdf_msg_id_t msg_id; - /** \brief Enable or disable of transparent mode */ - ftdf_boolean_t enable; - /** \brief Bitmapped transparent options, see ftdf_enable_transparent_mode */ - ftdf_bitmap32_t options; -} ftdf_transparent_enable_request_t; - -typedef struct { - /** \brief Message id = FTDF_TRANSPARENT_REQUEST */ - ftdf_msg_id_t msg_id; - /** \brief Frame length */ - ftdf_data_length_t frame_length; - /** \brief Pointer to frame, must be allocated with FTDF_GET_DATA_BUFFER */ - ftdf_octet_t *frame; - /** \brief Channel number */ - ftdf_channel_number_t channel; - /** \brief Packet Traffic Information (PTI) used for transmitting the frame. */ - ftdf_pti_t pti; - /** \brief CSMA suppression */ - ftdf_boolean_t cmsa_suppress; - /** \brief Application provided handle, will be returned in the transparent confirm call */ - void *handle; -} ftdf_transparent_request_t; - -typedef struct { - /** \brief Message id = FTDF_TRANSPARENT_CONFIRM */ - ftdf_msg_id_t msg_id; - /** \brief Application provided handle of the corresponding FTDF_SEND_FRAME_TRANSPARENT call */ - void *handle; - /** \brief Bit mapped status */ - ftdf_bitmap32_t status; -} ftdf_transparent_confirm_t; - -typedef struct { - /** \brief Message id = FTDF_TRANSPARENT_INDICATION */ - ftdf_msg_id_t msg_id; - /** \brief Frame length */ - ftdf_data_length_t frame_length; - /** \brief Pointer to frame, must be freed by the application using FTDF_REL_DATA_BUFFER */ - ftdf_octet_t *frame; - /** \brief Bit mapped receive status */ - ftdf_bitmap32_t status; -} ftdf_transparent_indication_t; - -typedef struct { - /** \brief Message id = FTDF_SLEEP_REQUEST */ - ftdf_msg_id_t msg_id; - /** \brief Sleep time */ - ftdf_usec_t sleep_time; -} ftdf_sleep_request_t; - -#if FTDF_DBG_BUS_ENABLE -typedef struct { - /** \brief Message id = FTDF_DBG_MODE_SET_REQUEST */ - ftdf_msg_id_t msg_id; - /** \brief Debug bus mode */ - ftdf_dbg_mode_t dbg_mode; -} ftdf_dbg_mode_set_request_t; -#endif /* FTDF_DBG_BUS_ENABLE */ - -typedef struct -{ - /** \brief Message ID = FTDF_FPPR_MODE_SET_REQUEST */ - ftdf_msg_id_t msg_id; - /** \brief fp bit value to set when src address matches*/ - ftdf_bitmap8_t match_fp; - /** \brief When set, fp_force_value will be applied to fp bit for all src addresses*/ - ftdf_bitmap8_t fp_override; - /** \brief The value will be set to fp bit for all src addresses when fp_override is set*/ - ftdf_bitmap8_t fp_force; -} ftdf_fppr_mode_set_request_t; - -/** - * \brief ftdf_get_release_info - gets the LMAC (FPGA) and UMAC (FTDF SW driver) release info - * \param[out] lmac_rel_name: LMAC release name - * \param[out] lmac_build_time: LMAC build time - * \param[out] umac_rel_name: UMAC release name - * \param[out] umac_build_time: UMAC build time - * \remark Sets the application character strings pointers to character strings containing the release - * info. The character string space is statically allocated by FTDF and does not need - * to be released by the application. - */ -void ftdf_get_release_info(char **lmac_rel_name, char **lmac_build_time, char **umac_rel_name, - char **umac_build_time); - -/** - * \brief ftdf_confirm_lmac_interrupt - Confirmation that the LMAC interrupt has been received - * by the application - * \remark This function disables the LMAC interrupt. The application must wait for any other - * FTDF API function to be completed and call the function ftdf_event_handler. This function - * will enable the LMAC interrupt again the function ftdf_event_handler. - */ -void ftdf_confirm_lmac_interrupt(void); - -/** - * \brief ftdf_event_handler - Handles an event signalled by the LMAC interrupt - * \remark This function handles the event signalled by the LMAC interrupt and enables the LMAC - * interrupt when finished. - * \warning FTDF is strictly NON reentrant, so ftdf_event_handler is NOT allowed to be called when another FTDF - * is being executed - */ -void ftdf_event_handler(void); - -/** - * \brief ftdf_snd_msg - Sends a request (response) message to FTDF driver - * \param[in] msg_buf: The message to be send. To application must set the msg_id field and the request - * specific parameters by casting it to the appropriate request message structure. - * \remark The message must be allocated by the application using the function ftdf_get_msg_buffer - * and will be released by FTDF using ftdf_rel_msg_buffer. When finished FTDF releases the message - * buffer and sends a confirm (indication) to the application using the function ftdf_rcv_msg. - * \remark As follows a table of message IDs accepted by ftdf_snd_msg, the message structure corresponding - * to this message id and the confirm send back to the application when the request has been - * completed by FTDF: - * \remark
- * \remark Request message id, Request structure, Request confirm - * \remark --------------------------------------------------------------------------------- - * \remark FTDF_DATA_REQUEST, ftdf_data_request_t, FTDF_DATA_CONFIRM - * \remark FTDF_PURGE_REQUEST, ftdf_purge_request_t, FTDF_DATA_CONFIRM - * \remark FTDF_ASSOCIATE_REQUEST, ftdf_associate_request_t, FTDF_ASSOCIATE_CONFIRM - * \remark FTDF_ASSOCIATE_RESPONSE, ftdf_associate_response_t, FTDF_COMM_STATUS_INDICATION - * \remark FTDF_DISASSOCIATE_REQUEST, ftdf_disassociate_request_t, FTDF_DISASSOCIATE_CONFIRM - * \remark FTDF_GET_REQUEST, ftdf_get_request_t, FTDF_GET_CONFIRM - * \remark FTDF_SET_REQUEST, ftdf_set_request_t, FTDF_SET_CONFIRM - * \remark FTDF_ORPHAN_RESPONSE, ftdf_orphan_response_t, FTDF_COMM_STATUS_INDICATION - * \remark FTDF_RESET_REQUEST, ftdf_reset_request_t, FTDF_RESET_CONFIRM - * \remark FTDF_RX_ENABLE_REQUEST, ftdf_scan_request_t, FTDF_RX_ENABLE_CONFIRM - * \remark FTDF_SCAN_REQUEST, ftdf_scan_request_t, FTDF_SCAN_CONFIRM - * \remark FTDF_START_REQUEST, ftdf_start_request_t, FTDF_START_CONFIRM - * \remark FTDF_POLL_REQUEST, ftdf_poll_request_t, FTDF_POLL_CONFIRM - * \remark FTDF_SET_SLOTFRAME_REQUEST, ftdf_set_slotframe_request_t, FTDF_SET_SLOTFRAME_CONFIRM - * \remark FTDF_SET_LINK_REQUEST, ftdf_set_link_request_t, FTDF_SET_LINK_CONFIRM - * \remark FTDF_TSCH_MODE_REQUEST, ftdf_tsch_mode_request_t, FTDF_TSCH_MODE_CONFIRM - * \remark FTDF_KEEP_ALIVE_REQUEST, ftdf_keep_alive_request_t, FTDF_KEEP_ALIVE_CONFIRM - * \remark FTDF_BEACON_REQUEST, ftdf_beacon_request_t, FTDF_BEACON_CONFIRM - * \warning FTDF is strictly NON reentrant, so it is NOT allowed to call any other FTDF function before this API has been completed. This including the ftdf_event_handler function. - */ -void ftdf_snd_msg(ftdf_msg_buffer_t *msg_buf); - -/** - * \brief FTDF_RCV_MSG - Receives a confir or indication message from the FTDF driver - * \param[in] msg_buf: The received message. The msg_id field indicates the received message - * \remark This function must be implemented by the application and is called by FTDF to pass - * a confirm or indication message to the application. It must be configured in the - * configuration file ftdf_config.h. - * \remark The message buffer is allocated by FTDF using FTDF_GET_MSG_BUFFER and must be released - * by the application using ftdf_rel_msg_buffer - * \remark As follows a table of the confirm and indications messages and their message structures. - * \remark
- * \remark Confirm/indication message id, Confirm/indication structure - * \remark --------------------------------------------------------------------------------- - * \remark FTDF_DATA_INDICATION, ftdf_data_indication_t - * \remark FTDF_DATA_CONFIRM, ftdf_data_confirm_t - * \remark FTDF_PURGE_CONFIRM, ftdf_purge_confirm_t - * \remark FTDF_ASSOCIATE_INDICATION, ftdf_associate_indication_t - * \remark FTDF_ASSOCIATE_CONFIRM, ftdf_associate_confirm_t - * \remark FTDF_DISASSOCIATE_INDICATION, ftdf_disassociate_indication_t - * \remark FTDF_DISASSOCIATE_CONFIRM,ftdf_disassociate_confirm_t - * \remark FTDF_BEACON_NOTIFY_INDICATION, ftdf_beacon_notify_indication_t - * \remark FTDF_COMM_STATUS_INDICATION, ftdf_comm_status_indication_t - * \remark FTDF_GET_CONFIRM, ftdf_get_confirm_t - * \remark FTDF_SET_CONFIRM, ftdf_set_confirm_t - * \remark FTDF_ORPHAN_INDICATION, ftdf_orphan_indication_t - * \remark FTDF_RESET_CONFIRM, ftdf_reset_confirm_t - * \remark FTDF_RX_ENABLE_CONFIRM, ftdf_rx_enable_confirm_t - * \remark FTDF_SCAN_CONFIRM, ftdf_scan_confirm_t - * \remark FTDF_START_CONFIRM, ftdf_start_confirm_t - * \remark FTDF_SYNC_LOSS_INDICATION, ftdf_sync_loss_indication_t - * \remark FTDF_POLL_CONFIRM, ftdf_poll_confirm_t - * \remark FTDF_SET_SLOTFRAME_CONFIRM, ftdf_set_slotframe_confirm_t - * \remark FTDF_SET_LINK_CONFIRM, ftdf_set_link_confirm_t - * \remark FTDF_TSCH_MODE_CONFIRM, ftdf_tsch_mode_confirm_t - * \remark FTDF_KEEP_ALIVE_CONFIRM, ftdf_keep_alive_confirm_t - * \remark FTDF_BEACON_CONFIRM, ftdf_beacon_confirm_t - * \remark FTDF_BEACON_REQUEST_INDICATION, ftdf_beacon_request_indication_t - * \warning FTDF is strictly NON reentrant. Because ftdf_rcv_msg can be called by ftdf_snd_msg or ftdf_event_handler - * it is not allowed to call other FTDF functions within ftdf_rcv_msg - */ -void FTDF_RCV_MSG(ftdf_msg_buffer_t *msg_buf); - -/** - * \brief FTDF_GET_MSG_BUFFER - Allocates a message buffer - * \param[in] len: The length of the message buffer to be allocated - * \remark This function must be implemented by the application it will called by both the - * application and FTDF. It must be configured in the configuration file ftdf_config.h. - * \remark The allocated message buffer must be freed using ftdf_rel_msg_buffer - * \remark The message buffer must be located in retention RAM - * \return pointer to the allocated message buffer. - */ -ftdf_msg_buffer_t *FTDF_GET_MSG_BUFFER(ftdf_size_t len); - -/** - * \brief FTDF_REL_MSG_BUFFER - Frees a message buffer - * \param[in] msg_buf: Pointer to the message buffer to be released - * \remark This function must be implemented by the application it will called by both the - * application and FTDF. It must be configured in the configuration file ftdf_config.h. - * \remark It will free message buffers allocated with ftdf_get_msg_buffer - */ -void FTDF_REL_MSG_BUFFER(ftdf_msg_buffer_t *msg_buf); - -/** - * \brief FTDF_GET_DATA_BUFFER - Allocates a data buffer - * \param[in] len: The length of the data buffer to be allocated - * \remark This function must be implemented by the application it will called by both the - * application and FTDF. It must be configured in the configuration file ftdf_config.h. - * \remark The allocated data buffer must be freed using FTDF_REL_DATA_BUFFER - * \remark The data buffer must located in retention RAM - * \return pointer to the allocated data buffer. - */ -ftdf_octet_t *FTDF_GET_DATA_BUFFER(ftdf_data_length_t len); - -/** - * \brief FTDF_REL_DATA_BUFFER - Frees a data buffer - * \param[in] data_buf: Pointer to the data buffer to be released - * \remark This function must be implemented by the application it will called by both the - * application and FTDF. It must be configured in the configuration file ftdf_config.h. - * \remark It will free data buffers allocated with FTDF_GET_DATA_BUFFER - */ -void FTDF_REL_DATA_BUFFER(ftdf_octet_t *data_buf); - -/** - * \brief FTDF_GET_EXT_ADDRESS - Gets the extended address - * \remark This function must be implemented by the application it will called by FTDF. It must - * be configured in the configuration file ftdf_config.h. - * \remark After a reset it is used by FTDF to get the extended address of the device - * \return An extended address. - */ -ftdf_ext_address_t FTDF_GET_EXT_ADDRESS(void); - -/** - * \brief ftdf_enable_transparent_mode - Enables or disables the transparent mode - * \param[in] enable: If FTDF_TRUE transparent mode is enabled else it will be disabled - * \param[in] options: A bitmap of transparent mode options. Not used if enable equals to FTDF_FALSE. - * \remark If the transparent mode is enabled received frame are passed to the application using - * FTDF_RCV_FRAME_TRANSPARENT. The whole MAC frame including frame headers, security headers - * and FCS are passed to the application. Depending on the defined options some filtering - * is done. - * \remark When the transparent mode is enabled frames must be send using the function FTDF_SEND_FRAME_TRANSPARENT - * \remark When the transparent mode is enabled only the following request messages are supported: - * \remark
- * \remark FTDF_GET_REQUEST - * \remark FTDF_SET_REQUEST - * \remark FTDF_RESET_REQUEST - * \remark
- * \remark The behavior of FTDF when it receives request not supported in transparent mode is NOT defined! - * \remark
- * \remark Transparent mode cannot be enabled if FTDF is in CSL or TSCH mode. - * \remark
- * \remark The following options are supported: - * \remark
- * \remark FTDF_TRANSPARENT_PASS_FRAME_TYPE_0: Frames of type 0 are always passed to the application - * \remark FTDF_TRANSPARENT_PASS_FRAME_TYPE_1: Frames of type 1 are always passed to the application - * \remark FTDF_TRANSPARENT_PASS_FRAME_TYPE_2: Frames of type 2 are always passed to the application - * \remark FTDF_TRANSPARENT_PASS_FRAME_TYPE_3: Frames of type 3 are always passed to the application - * \remark FTDF_TRANSPARENT_PASS_FRAME_TYPE_4: Frames of type 4 are always passed to the application - * \remark FTDF_TRANSPARENT_PASS_FRAME_TYPE_5: Frames of type 5 are always passed to the application - * \remark FTDF_TRANSPARENT_PASS_FRAME_TYPE_6: Frames of type 6 are always passed to the application - * \remark FTDF_TRANSPARENT_PASS_FRAME_TYPE_7: Frames of type 7 are always passed to the application - * \remark FTDF_TRANSPARENT_PASS_ALL_FRAME_TYPES: All frame types are always passed to the application - * \remark FTDF_TRANSPARENT_AUTO_ACK: FTDF sends an automatically and ACK if it receives an version 0 or 1 - * frame with AR set in the fram control field - * \remark FTDF_TRANSPARENT_AUTO_FP_ACK: FTDF sends an automatically and ACK frame with FP set if it - * receives an version 0 or 1 DATA_REQUEST command frame with AR set in the fram control field - * \remark FTDF_TRANSPARENT_PASS_CRC_ERROR: Frames with a CRC (FCS) error are passed to the application - * \remark FTDF_TRANSPARENT_PASS_ALL_FRAME_VERSION: Frames with any frame version are passed to the - * application - * \remark FTDF_TRANSPARENT_PASS_ALL_PAN_ID: Frames with any PAN id (even when it does not match its own - * PAN id) are passed to the application - * \remark FTDF_TRANSPARENT_PASS_ALL_PAN_ID: Frames with any address (even when it does not match its own - * extended or short address) are passed to the application - * \remark FTDF_TRANSPARENT_PASS_ALL_BEACON: Any beacon frame is passed to the application - * \remark FTDF_TRANSPARENT_PASS_ALL_NO_DEST_ADDR: Frames with no destination address are always passed to - * the application - * \remark FTDF_TRANSPARENT_ENABLE_FCS_GENERATION: FTDF adds an FCS to frames send with FTDF_SEND_FRAME_TRANSPARENT - */ -void ftdf_enable_transparent_mode(ftdf_boolean_t enable, ftdf_bitmap32_t options); - -/** - * \brief ftdf_send_frame_transparent - Sends a frame transparent - * \param[in] frame_length: Length of the MAC frame to be send - * \param[in] frame: Data buffer with the frame to be sent. Must be allocate using FTDF_GET_DATA_BUFFER - * \param[in] channel: The channel used to send the frame - * \param[in] pti: Packet Traffic Information used for transmitting the packet - * \param[in] cmsa_suppress: If FTDF_TRUE no CSMA-CA is performed before sending the frame - * \param[in] handle: A user defined handle. - * \remark FTDF sends the frame tarnsparently. That is the application has to compose the MAC frame header, - * security header, etc and make sure that it complies with the IEEE802.15.4 standard. Before sending - * it FTDF adds the preamble, frame start, phy header octets and optionally an FCS to the frame provide - * by the application. - * \remark When FTDF has send the frame or failed to send the frame it will call FTDF_SEND_FRAME_TRANSPARENT_CONFIRM - * with the handle provided by the application and the send status. - */ -void ftdf_send_frame_transparent(ftdf_data_length_t frame_length, - ftdf_octet_t *frame, - ftdf_channel_number_t channel, - ftdf_pti_t pti, - ftdf_boolean_t cmsa_suppress, - void *handle); - -/** - * \brief FTDF_SEND_FRAME_TRANSPARENT_CONFIRM - Confirms a transparent send - * \param[in] handle: The application provided handle of the corresponding ftdf_send_frame_transparent call call - * \param[in] status: Bit mapped status - * \remark This function must be implemented by the application it will called by FTDF. It must - * be configured in the configuration file ftdf_config.h. - * \remark FTDF calls this function when a frame has send successfully or failed to send. The application can - * now free the data buffer of the corresponding ftdf_send_frame_transparent call using ftdf_rel_data_buffer - * \remark If the frame is send successfully status is equal to 0 - * \remark If sending the frame failed one of more of the following status bits is set: - * - FTDF_TRANSPARENT_CSMACA_FAILURE: Sending failed because CSMA-CA failed - * - FTDF_TRANSPARENT_OVERFLOW: Sending failed because of internal resource overflow - */ -void FTDF_SEND_FRAME_TRANSPARENT_CONFIRM(void *handle, ftdf_bitmap32_t status); - -/** - * \brief ftdf_send_frame_transparent_confirm - Converts the FTDF_SEND_FRAME_TRANSPARENT_CONFIRM to a msg buffer - * and then calls ftdf_rcv_msg. - * \param[in] handle: The application provided handle of the corresponding ftdf_send_frame_transparent call - * \param[in] status: Bit mapped status - * \remark This function converts the input parameters to a ftdf_transparent_confirm_t structure - * and then calls ftdf_rcv_msg. - * \remark FTDF_SEND_FRAME_TRANSPARENT_CONFIRM can be defined to be this function. - */ -void ftdf_send_frame_transparent_confirm(void *handle, ftdf_bitmap32_t status); - -/** - * \brief FTDF_RCV_FRAME_TRANSPARENT - Receive frame transparent - * \param[in] frame_length: Length of the received frame - * \param[in] frame: Pointer to received frame. - * \param[in] status: Bitmapped receive status - * \param[in] link_quality: LQI/RSSI value for this packet. Depends on FTDF_PIB_LINK_QUALITY_MODE - * PIB parameter. - * - * \remark This function must be implemented by the application it will called by FTDF. It must - * be configured in the configuration file ftdf_config.h. - * \remark FTDF calls this function when a frame is received when transparent mode is enabled - * \remark The buffer with the frame must be copied by the application before this function returns - * \remark The following status bits can be set: - * - FTDF_TRANSPARENT_RCV_CRC_ERROR: The CRC (FCS) of the received frame is not correct - * - FTDF_TRANSPARENT_RCV_RES_FRAMETYPE: Received a reserved frame type - * - FTDF_TRANSPARENT_RCV_RES_FRAME_VERSION: Received a reserved frame version - * - FTDF_TRANSPARENT_RCV_UNEXP_DST_ADDR: Unexpected destination address - * - FTDF_TRANSPARENT_RCV_UNEXP_DST_PAN_ID: Unexpected destionation PAN id - * - FTDF_TRANSPARENT_RCV_UNEXP_BEACON: Unexpected beacon frame - * - FTDF_TRANSPARENT_RCV_UNEXP_NO_DEST_ADDR: Unexpected frame without destination adres. - */ -void FTDF_RCV_FRAME_TRANSPARENT(ftdf_data_length_t frame_length, ftdf_octet_t *frame, - ftdf_bitmap32_t status, ftdf_link_quality_t link_quality); - -/** - * \brief ftdf_rcv_frame_transparent - Converts the FTDF_RCV_FRAME_TRANSPARENT to a msg buffer - * and then calls ftdf_rcv_msg. - * \param[in] frame_length: Length of the received frame - * \param[in] frame: Pointer to received frame. - * \param[in] status: Bitmapped receive status - * \param[in] link_quality: Received packet link quality (RSSI/LQI) - * \remark This function convers the input parameters to a ftdf_transparent_indication_t structure - * and then calls ftdf_rcv_msg. - * \remark FTDF_RCV_FRAME_TRANSPARENT can be defined to be this function. - */ -void ftdf_rcv_frame_transparent(ftdf_data_length_t frame_length, ftdf_octet_t *frame, - ftdf_bitmap32_t status, ftdf_link_quality_t link_quality); - -/** - * \brief ftdf_set_sleep_attributes - Set sleep atributes - * \param[in] low_power_clock_cycle: The LP clock cycle in picoseconds - * \param[in] wakeup_latency: The wakep up latency time in low power clock cycles - * \remark This functions sets some attributes required by FTDF to go into a deep sleep and wake up from it. - * \remark The wake up latency is the time between the wakeup signal send by FTDF and the moment that the - * clocks are stable. It will be used by FTDF to determine when it must must send the wakeup signal. - * \remark The low power clock cycle will be used to determine how long the system has slept and recover - * the symbol counter internally used by FTDF. - */ -void ftdf_set_sleep_attributes(ftdf_psec_t low_power_clock_cycle, - ftdf_nr_low_power_clock_cycles_t wakeup_latency); - -/** - * \brief ftdf_can_sleep - Indicates whether FTDF can go in a deep sleep - * \remark This function returns the time in microseconds that the FTDF can deep sleep. - * \remark It does NOT take into account the wakeup latency. - * \return The number of microseconds that the FTDF can deep sleep. If equal to 0 the FTDF is still active - * and cannot deep sleep - */ -ftdf_usec_t ftdf_can_sleep(void); - -/** - * \brief ftdf_prepare_for_sleep - Prepare the FTDF for a deep sleep - * \param[in] sleep_time: The sleep time. After the sleep time the FTDF must be ready to do next scheduled activity. - * \remark When this function is completed the application can safely power off the FTDF and put the uP in - * a deep sleep. At least wake up latency time microseconds before sleep time is expired the FTDF - * will send a wakeup signal. FTDF expect that the application calls ftdf_wakeup as it has been - * woken up. - * \return FTDF_TRUE if the FTDF can be put in deep sleep, FTDF_FALSE if the sleep_time is too short to go to - * deep sleep and wake up again after sleep_time microseconds, the FTDF cannot be put in deep sleep. - */ -ftdf_boolean_t ftdf_prepare_for_sleep(ftdf_usec_t sleep_time); - -/** - * \brief ftdf_wakeup - Wake up the FTDF after a sleep - * \remark This function will restores the FTDF to state before the deep sleep. It will does this in 2 steps - * 1. It initialises it internal states and data structures and all the non timing specific HW. After - * that it waits until the wake up latency time has been expired. When expired FTDF assumes that the - * slocks are stable. - * 2. It restores timers in HW and calls the function FTDF_WAKE_UP_READY to indicate FTDF is up again, - * ready to perform scheduled activities and ready to process new requests from the application. - */ -void ftdf_wakeup(void); - -/** - * \brief FTDF_WAKE_UP_READY - Indication that FTDF has woke up - * \remark This function must be implemented by the application it will called by FTDF. It must - * be configured in the configuration file ftdf_config.h. - * \remark FTDF calls this function when it is up again, ready to perform scheduled activities and ready to - * process new requests from the application. - */ -void FTDF_WAKE_UP_READY(void); - -/** - * \brief FTDF_SLEEP_CALLBACK - Callback from FTDF_SLEEP_REQUEST - * \remark This function must be implemented by the application, it will be called by FTDF. - * It must be configured in the configuration file ftdf_config.h - * \remark FTDF calls this function when an FTDF_SLEEP_REQUEST message is sent through the ftdf_snd_msg function. - */ -void FTDF_SLEEP_CALLBACK(ftdf_usec_t sleep_time); - -void ftdf_reset(int set_default_pib); - -ftdf_pti_t ftdf_get_rx_pti(void); - - -#if dg_configCOEX_ENABLE_CONFIG -void ftdf_set_rx_pti(ftdf_pti_t rx_pti); -#if FTDF_USE_AUTO_PTI -void ftdf_restore_rx_pti(void); -#endif -#endif - - -#ifdef FTDF_PHY_API -ftdf_status_t ftdf_send_frame_simple(ftdf_data_length_t frame_length, - ftdf_octet_t *frame, - ftdf_channel_number_t channel, - ftdf_pti_t pti, - ftdf_boolean_t csmaSuppress); - -ftdf_pib_attribute_value_t *ftdf_get_value(ftdf_pib_attribute_t pib_attribute); -ftdf_status_t ftdf_set_value(ftdf_pib_attribute_t pib_attribute, - const ftdf_pib_attribute_value_t *pib_attribute_value); - -void ftdf_rx_enable(ftdf_time_t rx_on_duration); -#endif /* FTDF_PHY_API */ - -#if FTDF_DBG_BUS_ENABLE -/** - * \brief Checks current debug mode and makes appropriate hardware configurations. - */ -void ftdf_check_dbg_mode(void); - -/** - * \brief Sets debug bus mode. - */ -void ftdf_set_dbg_mode(ftdf_dbg_mode_t dbg_mode); - -/** - * \brief Debug bus GPIO configuration callback. Makes appropriate GPIO configurations for the debug - * bus. - */ -void FTDF_DBG_BUS_GPIO_CONFIG(void); -#endif /* FTDF_DBG_BUS_ENABLE */ - -#if dg_configUSE_FTDF_DDPHY == 1 -void ftdf_ddphy_set(uint16_t cca_reg); -#endif /* dg_configUSE_FTDF_DDPHY == 1 */ - -#if FTDF_FP_BIT_MODE == FTDF_FP_BIT_MODE_AUTO -#ifndef FTDF_LITE -/** - * \brief Controls when the FPPR address invalidation will be performed. - * - * If set to 0 (recommended), address invalidation in FPPR occurs right after the frame is passed to - * LMAC for direct transmission. If set to 1, address invalidation occurs after the associated - * confirm message is received. - */ -#define FTDF_FPPR_DEFER_INVALIDATION 0 - -/** - * \brief Adds a new short address to FPPR, initializing the corresponding FSM. - * - * A short address FP FSM accepts the following notifications (events): - * - * - New address (initialize) by calling @ref ftdf_fp_fsm_short_address_new() - * - Last frame pending (passed to direct sending) by calling @ref - * ftdf_fp_fsm_short_address_last_frame_pending() - * - Last pending frame sent by calling @ref ftdf_fp_fsm_clear_pending() - * - * A new address may be rejected if there is no adequate space left in FPPR. - * - * \param [in] pan_id Destination PAN ID. - * \param [in] short_address Destination short address. - * - * \return \ref FTDF_TRUE on success. - */ -ftdf_boolean_t ftdf_fp_fsm_short_address_new(ftdf_pan_id_t pan_id, ftdf_short_address_t short_address); - -/** - * \brief Adds a new extended address to FPPR, initializing the corresponding FSM. - * - * An extended address FP FSM accepts the following notifications (events): - * - * - New address (initialize) by calling @ref ftdf_fp_fsm_rxt_address_new() - * - Last frame pending (passed to direct sending) by calling @ref - * ftdf_fp_fsm_ext_address_last_frame_pending() - * - Last pending frame sent by calling @ref ftdf_fp_fsm_clear_pending() - * - * A new address may be rejected if there is no adequate space left in FPPR. - * - * \param [in] pan_id Destination PAN ID. - * \param [in] ext_address Destination extended address. - * - * \return \ref FTDF_TRUE on success. - */ -ftdf_boolean_t ftdf_fp_fsm_rxt_address_new(ftdf_pan_id_t pan_id, ftdf_ext_address_t ext_address); - -/** - * \brief Notifies FP FSM that the last packet for the associated destination has been passed for - * direct transmission. - * - * \param [in] pan_id Destination PAN ID. - * \param [in] short_address Destination short address. - */ -void ftdf_fp_fsm_short_address_last_frame_pending(ftdf_pan_id_t pan_id, ftdf_short_address_t short_address); - -/** - * \brief Notifies FP FSM that the last packet for the associated destination has been passed for - * direct transmission. - * - * \param [in] pan_id Destination PAN ID. - * \param [in] ext_address Destination extended address. - */ -void ftdf_fp_fsm_ext_address_last_frame_pending(ftdf_pan_id_t pan_id, ftdf_ext_address_t ext_address); - -/** - * \brief Notifies FP FSM that the last pending packet has been transmitted (UMAC state machine - * closed). - */ -void ftdf_fp_fsm_clear_pending(void); - -#endif /* #ifndef FTDF_LITE */ - -/** - * \brief Number of FPPR table entries. - */ -#define FTDF_FPPR_TABLE_ENTRIES 24 - -/** - * \brief Number of extended address table entries. - */ -#define FTDF_FPPR_TABLE_EXT_ADDRESS_ENTRIES FTDF_FPPR_TABLE_ENTRIES - -/** - * \brief Number of short address table entries. - */ -#define FTDF_FPPR_TABLE_SHORT_ADDRESS_ENTRIES (FTDF_FPPR_TABLE_ENTRIES * 4) - -/** - * \brief Resets FPPR table, invalidating all addresses. - */ -void ftdf_fppr_reset(void); - -/** - * \brief Gets the short address programmed at the specified FPPR table position. - * - * \param [in] entry FPPR table entry (0 to \ref FTDF_FPPR_TABLE_ENTRIES - 1). - * \param [in] short_addr_idx Short address position within the entry (0 to 3). - * - * \return Requested short address - */ -ftdf_short_address_t ftdf_fppr_get_short_address(uint8_t entry, uint8_t short_addr_idx); - -/** - * \brief Programs a short address programmed at the specified FPPR table position. - * - * \param [in] entry FPPR table entry (0 to \ref FTDF_FPPR_TABLE_ENTRIES - 1). - * \param [in] short_addr_idx Short address position within the entry (0 to 3). - * \param [in] short_address short address. - */ -void ftdf_fppr_set_short_address(uint8_t entry, uint8_t short_addr_idx, - ftdf_short_address_t short_address); - -/** - * \brief Determines validity of a short address programmed at the specified FPPR table position. - * - * \param [in] entry FPPR table entry (0 to \ref FTDF_FPPR_TABLE_ENTRIES - 1). - * \param [in] short_addr_idx Short address position within the entry (0 to 3). - * - * \return FTDF_TRUE if the address is valid. - */ -ftdf_boolean_t ftdf_fppr_get_short_address_valid(uint8_t entry, uint8_t short_addr_idx); - -/** - * \brief Sets validity of a short address programmed at the specified FPPR table position. - * - * \param [in] entry FPPR table entry (0 to \ref FTDF_FPPR_TABLE_ENTRIES - 1). - * \param [in] short_addr_idx Short address position within the entry (0 to 3). - * \param [in] valid Associated validity. - */ -void ftdf_fppr_set_short_address_valid(uint8_t entry, uint8_t short_addr_idx, - ftdf_boolean_t valid); - -/** - * \brief Gets the extended address programmed at the specified FPPR table position. - * - * \param [in] entry FPPR table entry (0 to \ref FTDF_FPPR_TABLE_ENTRIES - 1). - * - * \return Requested extended address - */ -ftdf_ext_address_t ftdf_fppr_get_ext_address(uint8_t entry); - -/** - * \brief Programs an extended address programmed at the specified FPPR table position. - * - * \param [in] entry FPPR table entry (0 to \ref FTDF_FPPR_TABLE_ENTRIES - 1). - * \param [in] ext_address Associated extended address. - */ -void ftdf_fppr_set_ext_address(uint8_t entry, ftdf_ext_address_t ext_address); - -/** - * \brief Determines validity of an extended address programmed at the specified FPPR table - * position. - * - * \param [in] entry FPPR table entry (0 to \ref FTDF_FPPR_TABLE_ENTRIES - 1). - * - * \return \ref FTDF_TRUE if the address is valid. - */ -ftdf_boolean_t ftdf_fppr_get_ext_address_valid(uint8_t entry); - -/** - * \brief Sets validity of an extended address programmed at the specified FPPR table position. - * - * \param [in] entry FPPR table entry (0 to \ref FTDF_FPPR_TABLE_ENTRIES - 1). - * \param [in] valid Associated validity. - */ -void ftdf_fppr_set_ext_address_valid(uint8_t entry, ftdf_boolean_t valid); - -/** - * \brief Gets a free (invalid) short address position in the FPPR table. - * - * \param [out] entry Reference to the FPPR table entry. - * \param [out] short_addr_idx Reference to the short address position within the entry. - * - * \return \ref FTDF_TRUE if a free position was found. - */ -ftdf_boolean_t ftdf_fppr_get_free_short_address(uint8_t * entry, uint8_t *short_addr_idx); - -/** - * \brief Gets a free (invalid) extended address position in the FPPR table. - * - * \param [out] entry Reference to the FPPR table entry. - * - * \return \ref FTDF_TRUE if a free position was found. - */ -ftdf_boolean_t ftdf_fppr_get_free_ext_address(uint8_t * entry); - -/** - * \brief Looks up a short address within the FPPR table. - * - * \param [in] shortAddr Associated short address. - * \param [out] entry Reference to the FPPR table entry. - * \param [out] short_addr_idx Reference to the short address position within the entry. - * - * * \return \ref FTDF_TRUE if the address was found. - */ -ftdf_boolean_t ftdf_fppr_lookup_short_address(ftdf_short_address_t shortAddr, uint8_t *entry, - uint8_t *short_addr_idx); - -/** - * \brief Looks up an extended address within the FPPR table. - * - * \param [in] ext_addr Associated extended address. - * \param [out] entry Reference to the FPPR table entry. - * - * * \return \ref FTDF_TRUE if the address was found. - */ -ftdf_boolean_t ftdf_fppr_lookup_ext_address(ftdf_ext_address_t ext_addr, uint8_t *entry); - -#endif /* FTDF_FP_BIT_MODE == FTDF_FP_BIT_MODE_AUTO */ - -/** - * \brief Sets FPPR mode. - * - * \param [in] match_fp Specifies the value of the FP bit when acknowledging a received frame with a - * source address that matches a valid a address in the FPPR table. The opposite value is set if the - * source address does not match. Ignored if \a fp_override is \ref FTDF_TRUE. - * - * \param [in] fp_override If \ref FTDF_TRUE, the value of \a fp_force is used for setting the FP bit, - * regardless of the address table matching result. - * - * \param [in] fp_force FP bit value when fp_override is \ref FTDF_TRUE. Ignored otherwise. - */ -void ftdf_fppr_set_mode(ftdf_boolean_t match_fp, ftdf_boolean_t fp_override, ftdf_boolean_t fp_force); - -#if FTDF_FP_BIT_TEST_MODE -/** - * \brief Gets FPPR mode. - * - * \param [out] match_fp Reference to the returned value. \see FTDF_fpprRamSetMode - * - * \param [out] fp_override Reference to the returned value. \see FTDF_fpprRamSetMode - * - * \param [out] fp_force FP Reference to the returned value. \see FTDF_fpprRamSetMode - */ -void ftdf_fppr_get_mode(ftdf_boolean_t *match_fp, ftdf_boolean_t *fp_override, ftdf_boolean_t *fp_force); -#endif //FTDF_FP_BIT_TEST_MODE - -#if FTDF_USE_LPDP == 1 - -/** - * \brief Enable or disable LPDP. - * - * \param [in] enable if FTDF_TRUE, LPDP functionality is enabled. - */ -void ftdf_lpdp_enable(ftdf_boolean_t enable); - -#if FTDF_FP_BIT_TEST_MODE -/** - * \brief Checks whether LPDP is enabled. - * - * \return FTDF_TRUE, if LPDP functionality is enabled. - */ -ftdf_boolean_t ftdf_lpdp_is_enabled(void); -#endif - -#endif /* #if FTDF_USE_LPDP == 1 */ - -#endif /* FTDF_H_ */ - -/** - * \} - * \} - * \} - */ - diff --git a/third_party/dialog/DialogSDK/interfaces/ftdf/include/ftdf_config_phy_api.h b/third_party/dialog/DialogSDK/interfaces/ftdf/include/ftdf_config_phy_api.h deleted file mode 100644 index ceaec5e2d..000000000 --- a/third_party/dialog/DialogSDK/interfaces/ftdf/include/ftdf_config_phy_api.h +++ /dev/null @@ -1,192 +0,0 @@ -/** - **************************************************************************************** - * - * @file ftdf_config_phy_api.h - * - * @brief FTDF PHY API configuration template file - * - * Copyright (c) 2016, Dialog Semiconductor - * All rights reserved. - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. Neither the name of the copyright holder nor the names of its contributors - * may be used to endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, - * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, - * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED - * OF THE POSSIBILITY OF SUCH DAMAGE. - * - * - **************************************************************************************** - */ - -#ifndef FTDF_CONFIG_PHY_API_H_ -#define FTDF_CONFIG_PHY_API_H_ - -#include "osal.h" // OS_FREERTOS macro is checked within the header file. - -/** - * \remark phy configuration values in microseconds - */ -#define FTDF_PHYTXSTARTUP 0x4c -#define FTDF_PHYTXLATENCY 0x02 -#define FTDF_PHYTXFINISH 0x00 -#define FTDF_PHYTRXWAIT 0x22 -#define FTDF_PHYRXSTARTUP 0x54 -#define FTDF_PHYRXLATENCY 0 -#define FTDF_PHYENABLE 0x20 - -#ifndef FTDF_LITE -#define FTDF_LITE -#endif - -/** - * \remark See FTDF_GET_MSG_BUFFER in ftdf.h - */ -#define FTDF_GET_MSG_BUFFER ad_ftdf_get_msg_buffer - -/** - * \remark See FTDF_REL_MSG_BUFFER in ftdf.h - */ -#define FTDF_REL_MSG_BUFFER ad_ftdf_rel_msg_buffer - -/** - * \remark See FTDF_REC_MSG in ftdf.h - */ -#define FTDF_RCV_MSG ad_ftdf_rcv_msg - -/** - * \remark See FTDF_GET_DATA_BUFFER in ftdf.h - */ -#define FTDF_GET_DATA_BUFFER ad_ftdf_get_data_buffer - -/** - * \remark See FTDF_REL_DATA_BUFFER in ftdf.h - */ -#define FTDF_REL_DATA_BUFFER ad_ftdf_rel_data_buffer - -/** - * \remark See FTDF_GET_EXT_ADDRESS in ftdf.h - */ -#define FTDF_GET_EXT_ADDRESS ad_ftdf_get_ext_address - -/** - * \remark See FTDF_RCV_FRAME_TRANSPARENT in ftdf.h - */ -#define FTDF_RCV_FRAME_TRANSPARENT ftdf_rcv_frame_transparent - -/** - * \remark See FTDF_SEND_FRAME_TRANSPARENT_CONFIRM in ftdf.h - */ -#define FTDF_SEND_FRAME_TRANSPARENT_CONFIRM ftdf_send_frame_transparent_confirm - -/** - * \remark See FTDF_WAKE_UP_READY in ftdf.h - */ -#define FTDF_WAKE_UP_READY ad_ftdf_wake_up_ready - -/** - * \remark See FTDF_SLEEP_CALLBACK in ftdf.h - */ -#define FTDF_SLEEP_CALLBACK ad_ftdf_sleep_cb - -/* Forward declaration */ -void sleep_when_possible(uint8_t explicit_request, uint32_t sleep_time); - -#define FTDF_LMACREADY4SLEEP_CB sleep_when_possible - -#ifndef OS_FREERTOS -#define portDISABLE_INTERRUPTS() \ - do { \ - __asm volatile (" cpsid i "); \ - DBG_CONFIGURE_HIGH(CMN_TIMING_DEBUG, CMNDBG_CRITICAL_SECTION); \ - } while (0) -#define portENABLE_INTERRUPTS() \ - do { \ - DBG_CONFIGURE_LOW(CMN_TIMING_DEBUG, CMNDBG_CRITICAL_SECTION); \ - __asm volatile (" cpsie i "); \ - } while (0) -void vPortEnterCritical(void); -void vPortExitCritical(void); -#define OS_ENTER_CRITICAL_SECTION vPortEnterCritical -#define OS_LEAVE_CRITICAL_SECTION vPortExitCritical -#endif - -/** - * \remark Critical section - */ - -#define ftdf_critical_var( ) -#define ftdf_enter_critical( ) OS_ENTER_CRITICAL_SECTION() -#define ftdf_exit_critical( ) OS_LEAVE_CRITICAL_SECTION() - -#ifndef FTDF_DBG_BUS_ENABLE -/** - * \brief Whether FTDF debug bus will be available or not. - * - * Define to 0 for production software. - * - * Refer to \ref ad_ftdf_dbgBusGpioConfig for the GPIO pins used for the debug bus. - */ -#define FTDF_DBG_BUS_ENABLE 0 -#endif - -#if FTDF_DBG_BUS_ENABLE -#define FTDF_DBG_BUS_GPIO_CONFIG ad_ftdf_dbg_bus_gpio_config - -#ifndef FTDF_DBG_BUS_USE_GPIO_P1_3_P2_2 -/** - * \brief Enables FTDF diagnostics on diagnostic pins 6 and 7 on GPIO P1_3 and P2_3. - * - * When enabled, UART must use pins other than the default P1_3, P2_3. - */ -#define FTDF_DBG_BUS_USE_GPIO_P1_3_P2_2 (0) -#endif - -#ifndef FTDF_DBG_BUS_USE_SWDIO_PIN -/** - * \brief Enables diagnostics on diagnostic pin 4 on GPIO P0_6. - * - * When enabled, the debugger must be disabled since SWD uses the same pin for SWDIO. - */ -#define FTDF_DBG_BUS_USE_SWDIO_PIN (0) -#endif - -#ifndef FTDF_DBG_BUS_USE_PORT_4 -/** - * \brief Uses Port 4 (instead of GPIOs at Ports 0, 1 and 2) for diagnostics - * - * When enabled, FTDF diagnostics pins uses P4_0 to P4_7 - */ -#define FTDF_DBG_BUS_USE_PORT_4 (0) -#endif - -#endif /* FTDF_DBG_BUS_ENABLE */ - -#ifndef FTDF_USE_AUTO_PTI -#define FTDF_USE_AUTO_PTI 0 -#endif - -#ifndef FTDF_USE_FP_PROCESSING_RAM -/** - * \brief Whether to use HW acceleration for indirect sending. - * - */ -#define FTDF_USE_FP_PROCESSING_RAM 1 -#endif /* FTDF_USE_FP_PROCESSING_RAM */ - -#endif /* FTDF_CONFIG_PHY_API_H_ */ - diff --git a/third_party/dialog/DialogSDK/interfaces/ftdf/src/ad_ftdf.c b/third_party/dialog/DialogSDK/interfaces/ftdf/src/ad_ftdf.c deleted file mode 100644 index 84147e561..000000000 --- a/third_party/dialog/DialogSDK/interfaces/ftdf/src/ad_ftdf.c +++ /dev/null @@ -1,341 +0,0 @@ -/** - **************************************************************************************** - * - * @file ad_ftdf.c - * - * @brief FTDF FreeRTOS Adapter - * - * Copyright (c) 2016, Dialog Semiconductor - * All rights reserved. - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. Neither the name of the copyright holder nor the names of its contributors - * may be used to endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, - * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, - * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED - * OF THE POSSIBILITY OF SUCH DAMAGE. - * - * - **************************************************************************************** - */ -#ifdef CONFIG_USE_FTDF - -#include -#include -#ifndef FTDF_PHY_API -#include "osal.h" -#include "queue.h" - -#include "sys_power_mgr.h" -#endif - -#if dg_configRF_ADAPTER -#include "ad_rf.h" -#else -#include "hw_rf.h" -#endif - -#include "sys_tcs.h" - -#include "sdk_defs.h" -#include "ad_ftdf.h" -#include "internal.h" -#if FTDF_DBG_BUS_ENABLE -#include "hw_gpio.h" -#endif /* FTDF_DBG_BUS_ENABLE */ - -#if FTDF_DBG_BLOCK_SLEEP_ENABLE -#include "hw_gpio.h" -#endif - -#if dg_configUSE_FTDF_DDPHY == 1 -#include "radio.h" -#endif - -#define WUP_LATENCY (AD_FTDF_LP_CLOCK_CYCLE * AD_FTDF_WUP_LATENCY) - -#ifdef FTDF_PHY_API -#ifndef PRIVILEGED_DATA -#define PRIVILEGED_DATA __attribute__((section("privileged_data_zi"))) -#endif -#ifndef INITIALIZED_PRIVILEGED_DATA -#define INITIALIZED_PRIVILEGED_DATA __attribute__((section("privileged_data_init"))) -#endif -#endif - -PRIVILEGED_DATA ftdf_boolean_t explicit_sleep; /* = FTDF_FALSE; */ -PRIVILEGED_DATA sleep_status_t sleep_status; - -PRIVILEGED_DATA ftdf_ext_address_t u_ext_address; - -static void ad_ftdf_sleep(void) -{ - ftdf_critical_var(); - ftdf_enter_critical(); - REG_SET_BIT(CRG_TOP, PMU_CTRL_REG, FTDF_SLEEP); // go sleep - ftdf_exit_critical(); - - // don't go-go before I sleep - while (REG_GETF(CRG_TOP, SYS_STAT_REG, FTDF_IS_DOWN) == 0x0) { - - } -#if FTDF_DBG_BLOCK_SLEEP_ENABLE - hw_gpio_set_inactive(FTDF_DBG_BLOCK_SLEEP_GPIO_PORT, FTDF_DBG_BLOCK_SLEEP_GPIO_PIN); -#endif -} - -void ad_ftdf_wake_up_internal(bool sync) -{ - if ( sleep_status != BLOCK_SLEEPING ) { - return; - } - - ftdf_critical_var(); - ftdf_enter_critical(); - /* Wake up power domains */ - REG_CLR_BIT(CRG_TOP, PMU_CTRL_REG, FTDF_SLEEP); // go wake up - ftdf_exit_critical(); - - // don't go-go before I sleep - while (REG_GETF(CRG_TOP, SYS_STAT_REG, FTDF_IS_UP) == 0x0) { - - } -#if FTDF_DBG_BLOCK_SLEEP_ENABLE - hw_gpio_configure_pin(FTDF_DBG_BLOCK_SLEEP_GPIO_PORT, FTDF_DBG_BLOCK_SLEEP_GPIO_PIN, - HW_GPIO_MODE_OUTPUT, HW_GPIO_FUNC_GPIO, true); -#endif - - /* Power on and configure RF */ -#if dg_configRF_ADAPTER - ad_rf_request_on(false); -#else - hw_rf_request_on(false); -#endif - - /* Apply trim values */ - sys_tcs_apply(tcs_ftdf); - -#if dg_configRF_ADAPTER - ad_rf_request_recommended_settings(); -#else - hw_rf_request_recommended_settings(); -#endif - - - if (sync) { - ftdf_init_lmac( ); - sleep_status = BLOCK_ACTIVE; - } else { - /* Wake up FTDF block */ - sleep_status = BLOCK_WAKING_UP; - ftdf_wakeup(); -#if defined(FTDF_NO_CSL) && defined(FTDF_NO_TSCH) - ad_ftdf_wake_up_ready(); -#endif - } - -} - -void ad_ftdf_wake_up_async(void) -{ - ad_ftdf_wake_up_internal(false); -} - -void ad_ftdf_wake_up_sync(void) -{ - ad_ftdf_wake_up_internal(true); -} - -void sleep_when_possible(uint8_t explicit_request, uint32_t sleep_time ) -{ - ftdf_boolean_t block_sleep = FTDF_FALSE; - - if ((!AD_FTDF_SLEEP_WHEN_IDLE && !explicit_request) || sleep_status != BLOCK_ACTIVE) { - return; - } - - ftdf_usec_t us; - - - ftdf_critical_var(); - ftdf_enter_critical(); -#ifdef FTDF_PHY_API - if (explicit_request && (REG_GETF(FTDF, FTDF_LMAC_CONTROL_STATUS_REG, LMACREADY4SLEEP) == 0)) { - - /* clear a previous interrupt */ - FTDF->FTDF_LMAC_CONTROL_DELTA_REG = REG_MSK(FTDF, FTDF_LMAC_CONTROL_DELTA_REG, LMACREADY4SLEEP_D); - - /* Enable (unmask) interrupt */ - REG_SET_BIT(FTDF, FTDF_LMAC_CONTROL_MASK_REG, LMACREADY4SLEEP_M); - us = 0; - } else { - us = ftdf_can_sleep(); - } -#else - us = ftdf_can_sleep(); -#endif - /* Try to sleep as much as needed (if sleep_time is 0, then sleep as much as possible). - * Otherwise, sleep as much as possible. */ - if ( explicit_request == FTDF_TRUE ) { - if (sleep_time && us > sleep_time) - us = sleep_time; - } - - if (us > ( WUP_LATENCY / 1000000) + AD_FTDF_SLEEP_COMPENSATION) { - // Subtract sleep compensation from the sleep time, compensating for delays - us -= AD_FTDF_SLEEP_COMPENSATION; - - block_sleep = ftdf_prepare_for_sleep(us); - - if (block_sleep) { - // FTDF ready to sleep, disable clocks - sleep_status = BLOCK_SLEEPING; - explicit_sleep = explicit_request; -#if FTDF_USE_SLEEP_DURING_BACKOFF - ftdf_sdb_fsm_sleep(); -#endif /* FTDF_USE_SLEEP_DURING_BACKOFF */ -#if dg_configUSE_FTDF_DDPHY == 1 - ftdf_ddphy_save(); -#endif /* dg_configUSE_FTDF_DDPHY */ - ad_ftdf_sleep(); - } else { -#if FTDF_USE_SLEEP_DURING_BACKOFF - ftdf_sdb_fsm_abort_sleep(); -#endif /* FTDF_USE_SLEEP_DURING_BACKOFF */ - } - } - ftdf_exit_critical(); - if (block_sleep) { -#if dg_configRF_ADAPTER - ad_rf_request_off(false); -#else - hw_rf_request_off(false); -#endif - } -} - -/** - * @brief Initialization function of FTDF adapter - */ -void ad_ftdf_init(void) -{ - /* Wake up power domains */ - GLOBAL_INT_DISABLE(); - REG_CLR_BIT(CRG_TOP, PMU_CTRL_REG, FTDF_SLEEP); // go wake up - GLOBAL_INT_RESTORE(); - - // don't go-go before I sleep - while (REG_GETF(CRG_TOP, SYS_STAT_REG, FTDF_IS_UP) == 0x0) { - - } - -#if FTDF_DBG_BLOCK_SLEEP_ENABLE - hw_gpio_configure_pin(FTDF_DBG_BLOCK_SLEEP_GPIO_PORT, FTDF_DBG_BLOCK_SLEEP_GPIO_PIN, - HW_GPIO_MODE_OUTPUT, HW_GPIO_FUNC_GPIO, true); -#endif - GLOBAL_INT_DISABLE(); - REG_SET_BIT(CRG_TOP, CLK_RADIO_REG, FTDF_MAC_ENABLE); // on - REG_SETF(CRG_TOP, CLK_RADIO_REG, FTDF_MAC_DIV, 0); // divide by 1 - GLOBAL_INT_RESTORE(); - - /* Power on and configure RF */ -#if dg_configRF_ADAPTER - ad_rf_request_on(false); -#else - hw_rf_request_on(false); -#endif - - /* Apply trim values */ - sys_tcs_apply(tcs_ftdf); - -#if dg_configRF_ADAPTER - ad_rf_request_recommended_settings(); -#else - hw_rf_request_recommended_settings(); -#endif - - ftdf_set_sleep_attributes( AD_FTDF_LP_CLOCK_CYCLE, AD_FTDF_WUP_LATENCY ); - -#ifdef FTDF_PHY_API - ad_ftdf_init_phy_api(); -#else - ad_ftdf_init_mac_api(); -#endif -} - -void ad_ftdf_sleep_cb(ftdf_usec_t sleep_time ) -{ - sleep_when_possible( FTDF_TRUE, sleep_time ); -} - -#if FTDF_DBG_BUS_ENABLE -void ad_ftdf_dbg_bus_gpio_config(void) -{ - -#if FTDF_DBG_BUS_USE_PORT_4 == 1 - - hw_gpio_set_pin_function(HW_GPIO_PORT_4, HW_GPIO_PIN_0, HW_GPIO_MODE_OUTPUT, - HW_GPIO_FUNC_FTDF_DIAG); - hw_gpio_set_pin_function(HW_GPIO_PORT_4, HW_GPIO_PIN_1, HW_GPIO_MODE_OUTPUT, - HW_GPIO_FUNC_FTDF_DIAG); - hw_gpio_set_pin_function(HW_GPIO_PORT_4, HW_GPIO_PIN_2, HW_GPIO_MODE_OUTPUT, - HW_GPIO_FUNC_FTDF_DIAG); - hw_gpio_set_pin_function(HW_GPIO_PORT_4, HW_GPIO_PIN_3, HW_GPIO_MODE_OUTPUT, - HW_GPIO_FUNC_FTDF_DIAG); - hw_gpio_set_pin_function(HW_GPIO_PORT_4, HW_GPIO_PIN_4, HW_GPIO_MODE_OUTPUT, - HW_GPIO_FUNC_FTDF_DIAG); - hw_gpio_set_pin_function(HW_GPIO_PORT_4, HW_GPIO_PIN_5, HW_GPIO_MODE_OUTPUT, - HW_GPIO_FUNC_FTDF_DIAG); - hw_gpio_set_pin_function(HW_GPIO_PORT_4, HW_GPIO_PIN_6, HW_GPIO_MODE_OUTPUT, - HW_GPIO_FUNC_FTDF_DIAG); - hw_gpio_set_pin_function(HW_GPIO_PORT_4, HW_GPIO_PIN_7, HW_GPIO_MODE_OUTPUT, - HW_GPIO_FUNC_FTDF_DIAG); - - -#else - hw_gpio_set_pin_function(HW_GPIO_PORT_1, HW_GPIO_PIN_4, HW_GPIO_MODE_OUTPUT, - HW_GPIO_FUNC_FTDF_DIAG); - hw_gpio_set_pin_function(HW_GPIO_PORT_1, HW_GPIO_PIN_5, HW_GPIO_MODE_OUTPUT, - HW_GPIO_FUNC_FTDF_DIAG); - hw_gpio_set_pin_function(HW_GPIO_PORT_1, HW_GPIO_PIN_6, HW_GPIO_MODE_OUTPUT, - HW_GPIO_FUNC_FTDF_DIAG); - hw_gpio_set_pin_function(HW_GPIO_PORT_1, HW_GPIO_PIN_7, HW_GPIO_MODE_OUTPUT, - HW_GPIO_FUNC_FTDF_DIAG); -#if FTDF_DBG_BUS_USE_SWDIO_PIN - /* - * Note that this pin has a conflict with SWD. Disable the debugger in order to use this - * pin. - */ - hw_gpio_set_pin_function(HW_GPIO_PORT_0, HW_GPIO_PIN_6, HW_GPIO_MODE_OUTPUT, - HW_GPIO_FUNC_FTDF_DIAG); -#endif - hw_gpio_set_pin_function(HW_GPIO_PORT_0, HW_GPIO_PIN_7, HW_GPIO_MODE_OUTPUT, - HW_GPIO_FUNC_FTDF_DIAG); -#if FTDF_DBG_BUS_USE_GPIO_P1_3_P2_2 - /* - * Note that these pins have a conflict with the pins used for UART by default. Configure - * UART on different pins if you would like to use the pins below for diagnostics. - */ - hw_gpio_set_pin_function(HW_GPIO_PORT_1, HW_GPIO_PIN_3, HW_GPIO_MODE_OUTPUT, - HW_GPIO_FUNC_FTDF_DIAG); - hw_gpio_set_pin_function(HW_GPIO_PORT_2, HW_GPIO_PIN_3, HW_GPIO_MODE_OUTPUT, - HW_GPIO_FUNC_FTDF_DIAG); -#endif -#endif /* FTDF_DBG_BUS_USE_PORT_4 == 1 */ -} -#endif /* FTDF_DBG_BUS_ENABLE */ -#endif diff --git a/third_party/dialog/DialogSDK/interfaces/ftdf/src/ad_ftdf.h b/third_party/dialog/DialogSDK/interfaces/ftdf/src/ad_ftdf.h deleted file mode 100644 index b432d7a9f..000000000 --- a/third_party/dialog/DialogSDK/interfaces/ftdf/src/ad_ftdf.h +++ /dev/null @@ -1,94 +0,0 @@ -/** - \addtogroup INTERFACES - \{ - \addtogroup FTDF - \{ - */ - -/** - **************************************************************************************** - * - * @file ad_ftdf.h - * - * @brief FTDF Adapter internal header file - * - * Copyright (c) 2016, Dialog Semiconductor - * All rights reserved. - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. Neither the name of the copyright holder nor the names of its contributors - * may be used to endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, - * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, - * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED - * OF THE POSSIBILITY OF SUCH DAMAGE. - * - * - **************************************************************************************** - */ - -#ifndef AD_FTDF_H -#define AD_FTDF_H - -#ifndef FTDF_PHY_API -#include "FreeRTOS.h" -#include "queue.h" -#include "task.h" -#endif - -#include "ftdf.h" -#include "ad_ftdf_config.h" - -typedef enum { - BLOCK_ACTIVE = 0, BLOCK_SLEEPING, BLOCK_WAKING_UP -} sleep_status_t; - -extern sleep_status_t sleep_status; -extern ftdf_ext_address_t u_ext_address; -extern ftdf_boolean_t explicit_sleep; - -void ad_ftdf_init_mac_api(void); -void ad_ftdf_init_phy_api(void); - -void ad_ftdf_wake_up_async(void); -void ad_ftdf_wake_up_sync(void); - -void sleep_when_possible( uint8_t explicit_request, uint32_t sleep_time ); - -#if FTDF_DBG_BUS_ENABLE -/** - * \brief Configures GPIO pins for the FTDF debug bus - * - * Debug bus uses the following (fixed) GPIO pins: - * - * bit 0: HW_GPIO_PORT_1, HW_GPIO_PIN_4 - * bit 1: HW_GPIO_PORT_1, HW_GPIO_PIN_5 - * bit 2: HW_GPIO_PORT_1, HW_GPIO_PIN_6 - * bit 3: HW_GPIO_PORT_1, HW_GPIO_PIN_7 - * bit 4: HW_GPIO_PORT_0, HW_GPIO_PIN_6 - * bit 5: HW_GPIO_PORT_0, HW_GPIO_PIN_7 - * bit 6: HW_GPIO_PORT_1, HW_GPIO_PIN_3 - * bit 7: HW_GPIO_PORT_2, HW_GPIO_PIN_3 - */ -void ad_ftdf_dbg_bus_gpio_config(void); -#endif /* FTDF_DBG_BUS_ENABLE */ - -#endif /* AD_FTDF_H */ -/** - \} - \} - \} - */ diff --git a/third_party/dialog/DialogSDK/interfaces/ftdf/src/ad_ftdf_phy_api.c b/third_party/dialog/DialogSDK/interfaces/ftdf/src/ad_ftdf_phy_api.c deleted file mode 100644 index 098817ec3..000000000 --- a/third_party/dialog/DialogSDK/interfaces/ftdf/src/ad_ftdf_phy_api.c +++ /dev/null @@ -1,164 +0,0 @@ -/** - **************************************************************************************** - * - * @file ad_ftdf_phy_api.c - * - * @brief FTDF FreeRTOS Adapter - * - * Copyright (c) 2016, Dialog Semiconductor - * All rights reserved. - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. Neither the name of the copyright holder nor the names of its contributors - * may be used to endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, - * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, - * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED - * OF THE POSSIBILITY OF SUCH DAMAGE. - * - * - **************************************************************************************** - */ -#ifdef CONFIG_USE_FTDF - -#ifdef FTDF_PHY_API - -#include -#include - -#include "sdk_defs.h" -#include "ad_ftdf.h" -#include "ad_ftdf_phy_api.h" -#include "internal.h" -#if FTDF_DBG_BUS_ENABLE -#include "hw_gpio.h" -#endif /* FTDF_DBG_BUS_ENABLE */ - -#ifndef OS_FREERTOS -static unsigned long uxCriticalNesting = 0xaaaaaaaa; - -void vPortEnterCritical( void ) -{ - portDISABLE_INTERRUPTS(); - uxCriticalNesting++; - __asm volatile( "dsb" ); - __asm volatile( "isb" ); -} - -/*-----------------------------------------------------------*/ - -void vPortExitCritical( void ) -{ - - uxCriticalNesting--; - if ( uxCriticalNesting == 0 ) - { - portENABLE_INTERRUPTS(); - } -} -#endif /* !OS_FREERTOS */ - -/** - * @brief ftdf_gen_irq interrupt service routine - */ -void FTDF_GEN_Handler( void) -{ - ftdf_confirm_lmac_interrupt(); - ftdf_event_handler(); -} -/** - * @brief ftdf_wakup_irq interrupt service routine - */ -void FTDF_WAKEUP_Handler( void) -{ - ad_ftdf_wake_up_async(); -} - -void ad_ftdf_set_ext_address( ftdf_ext_address_t address) -{ - u_ext_address = address; -} - -ftdf_ext_address_t ad_ftdf_get_ext_address( void) -{ - return u_ext_address; -} - -void ad_ftdf_wake_up_ready( void) -{ -} - -ftdf_status_t ad_ftdf_send_frame_simple( ftdf_data_length_t frameLength, - ftdf_octet_t *frame, - ftdf_channel_number_t channel, - ftdf_pti_t pti, - ftdf_boolean_t csmaSuppress) -{ - ftdf_critical_var(); - ftdf_enter_critical(); - if (ftdf_tx_in_progress == FTDF_TRUE) { - ftdf_exit_critical(); - return FTDF_TRANSPARENT_OVERFLOW; - } - ftdf_tx_in_progress = FTDF_TRUE; - ftdf_exit_critical(); - - if (sleep_status == BLOCK_SLEEPING) { - /* Wake-up the block */ - ad_ftdf_wake_up_async(); -#if FTDF_DBG_BUS_ENABLE - ftdf_check_dbg_mode(); -#endif /* FTDF_DBG_BUS_ENABLE */ - sleep_status = BLOCK_ACTIVE; - } - return ftdf_send_frame_simple(frameLength, frame, channel, pti, csmaSuppress); -} - - -void ad_ftdf_sleep_when_possible( ftdf_boolean_t allow_deferred_sleep) -{ - sleep_when_possible(allow_deferred_sleep, 0); -} - -void ad_ftdf_wake_up(void) -{ - if (sleep_status == BLOCK_SLEEPING) { - /* Wake-up the block */ - ad_ftdf_wake_up_async(); -#if FTDF_DBG_BUS_ENABLE - ftdf_check_dbg_mode(); -#endif /* FTDF_DBG_BUS_ENABLE */ - sleep_status = BLOCK_ACTIVE; - } - -} - -void ad_ftdf_init_phy_api(void) -{ - NVIC_ClearPendingIRQ(FTDF_WAKEUP_IRQn); - NVIC_EnableIRQ(FTDF_WAKEUP_IRQn); - - NVIC_ClearPendingIRQ(FTDF_GEN_IRQn); - NVIC_EnableIRQ(FTDF_GEN_IRQn); - sleep_status = BLOCK_ACTIVE; -#ifndef OS_FREERTOS - uxCriticalNesting = 0; -#endif - - ftdf_reset(1); -} -#endif /* FTDF_PHY_API */ -#endif diff --git a/third_party/dialog/DialogSDK/interfaces/ftdf/src/common.c b/third_party/dialog/DialogSDK/interfaces/ftdf/src/common.c deleted file mode 100644 index 4f7342079..000000000 --- a/third_party/dialog/DialogSDK/interfaces/ftdf/src/common.c +++ /dev/null @@ -1,5217 +0,0 @@ -/** - **************************************************************************************** - * - * @file common.c - * - * @brief Common FTDF functions - * - * Copyright (c) 2016, Dialog Semiconductor - * All rights reserved. - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. Neither the name of the copyright holder nor the names of its contributors - * may be used to endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, - * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, - * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED - * OF THE POSSIBILITY OF SUCH DAMAGE. - * - * - **************************************************************************************** - */ - -#include -#include - -#include -#include "internal.h" -#include "sdk_defs.h" - -#ifdef CONFIG_USE_FTDF -#if dg_configCOEX_ENABLE_CONFIG -#include "hw_coex.h" -#endif -typedef struct { - void *addr; - uint8_t size; - void (*getFunc)(void); - void (*setFunc)(void); -} pib_attribute_def_t; - -typedef struct { - pib_attribute_def_t attribute_defs[FTDF_NR_OF_PIB_ATTRIBUTES + 1]; -} pib_attribute_table_h; - -ftdf_pib_t ftdf_pib __attribute__ ((section(".retention"))); - -#if FTDF_FP_BIT_MODE == FTDF_FP_BIT_MODE_AUTO -#if FTDF_FPPR_DEFER_INVALIDATION -static struct { - ftdf_address_mode_t addr_mode; - ftdf_pan_id_t pan_id; - ftdf_address_t addr; -} ftdf_fppr_pending __attribute__ ((section(".retention"))); -#endif /* FTDF_FPPR_DEFER_INVALIDATION */ -#endif /* FTDF_FP_BIT_MODE == FTDF_FP_BIT_MODE_AUTO */ - -#ifndef FTDF_LITE -const ftdf_channel_number_t page_0_channels[FTDF_NR_OF_CHANNELS] = { - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26 }; -const ftdf_channel_descriptor_t channel_descriptors[1] = { - { 0, 16, (ftdf_channel_number_t*)page_0_channels } }; -const ftdf_channel_descriptor_list_t channels_supported = { - 1, (ftdf_channel_descriptor_t*)channel_descriptors }; -#endif - -const pib_attribute_table_h pib_attribute_table = { - .attribute_defs[FTDF_PIB_EXTENDED_ADDRESS].addr = &ftdf_pib.ext_address, - .attribute_defs[FTDF_PIB_EXTENDED_ADDRESS].size = sizeof(ftdf_pib.ext_address), - .attribute_defs[FTDF_PIB_EXTENDED_ADDRESS].getFunc = ftdf_get_ext_address, - .attribute_defs[FTDF_PIB_EXTENDED_ADDRESS].setFunc = ftdf_set_ext_address, - .attribute_defs[FTDF_PIB_ACK_WAIT_DURATION].addr = &ftdf_pib.ack_wait_duration, - .attribute_defs[FTDF_PIB_ACK_WAIT_DURATION].size = 0, - .attribute_defs[FTDF_PIB_ACK_WAIT_DURATION].getFunc = ftdf_get_ack_wait_duration, - .attribute_defs[FTDF_PIB_ACK_WAIT_DURATION].setFunc = NULL, -#ifndef FTDF_LITE - .attribute_defs[FTDF_PIB_ASSOCIATION_PAN_COORD].addr = &ftdf_pib.associated_pan_coord, - .attribute_defs[FTDF_PIB_ASSOCIATION_PAN_COORD].size = sizeof(ftdf_pib.associated_pan_coord), - .attribute_defs[FTDF_PIB_ASSOCIATION_PAN_COORD].getFunc = NULL, - .attribute_defs[FTDF_PIB_ASSOCIATION_PAN_COORD].setFunc = NULL, - .attribute_defs[FTDF_PIB_ASSOCIATION_PERMIT].addr = &ftdf_pib.association_permit, - .attribute_defs[FTDF_PIB_ASSOCIATION_PERMIT].size = sizeof(ftdf_pib.association_permit), - .attribute_defs[FTDF_PIB_ASSOCIATION_PERMIT].getFunc = NULL, - .attribute_defs[FTDF_PIB_ASSOCIATION_PERMIT].setFunc = NULL, - .attribute_defs[FTDF_PIB_AUTO_REQUEST].addr = &ftdf_pib.auto_request, - .attribute_defs[FTDF_PIB_AUTO_REQUEST].size = sizeof(ftdf_pib.auto_request), - .attribute_defs[FTDF_PIB_AUTO_REQUEST].getFunc = NULL, - .attribute_defs[FTDF_PIB_AUTO_REQUEST].setFunc = NULL, - .attribute_defs[FTDF_PIB_BATT_LIFE_EXT].addr = &ftdf_pib.batt_life_ext, - .attribute_defs[FTDF_PIB_BATT_LIFE_EXT].size = sizeof(ftdf_pib.batt_life_ext), - .attribute_defs[FTDF_PIB_BATT_LIFE_EXT].getFunc = NULL, - .attribute_defs[FTDF_PIB_BATT_LIFE_EXT].setFunc = NULL, - .attribute_defs[FTDF_PIB_BATT_LIFE_EXT_PERIODS].addr = &ftdf_pib.batt_life_ext_periods, - .attribute_defs[FTDF_PIB_BATT_LIFE_EXT_PERIODS].size = sizeof(ftdf_pib.batt_life_ext_periods), - .attribute_defs[FTDF_PIB_BATT_LIFE_EXT_PERIODS].getFunc = NULL, - .attribute_defs[FTDF_PIB_BATT_LIFE_EXT_PERIODS].setFunc = NULL, - .attribute_defs[FTDF_PIB_BEACON_PAYLOAD].addr = &ftdf_pib.beacon_payload, - .attribute_defs[FTDF_PIB_BEACON_PAYLOAD].size = sizeof(ftdf_pib.beacon_payload), - .attribute_defs[FTDF_PIB_BEACON_PAYLOAD].getFunc = NULL, - .attribute_defs[FTDF_PIB_BEACON_PAYLOAD].setFunc = NULL, - .attribute_defs[FTDF_PIB_BEACON_PAYLOAD_LENGTH].addr = &ftdf_pib.beacon_payload_length, - .attribute_defs[FTDF_PIB_BEACON_PAYLOAD_LENGTH].size = sizeof(ftdf_pib.beacon_payload_length), - .attribute_defs[FTDF_PIB_BEACON_PAYLOAD_LENGTH].getFunc = NULL, - .attribute_defs[FTDF_PIB_BEACON_PAYLOAD_LENGTH].setFunc = NULL, - .attribute_defs[FTDF_PIB_BEACON_ORDER].addr = &ftdf_pib.beacon_order, - .attribute_defs[FTDF_PIB_BEACON_ORDER].size = 0, - .attribute_defs[FTDF_PIB_BEACON_ORDER].getFunc = NULL, - .attribute_defs[FTDF_PIB_BEACON_ORDER].setFunc = NULL, - .attribute_defs[FTDF_PIB_BEACON_TX_TIME].addr = &ftdf_pib.beacon_tx_time, - .attribute_defs[FTDF_PIB_BEACON_TX_TIME].size = sizeof(ftdf_pib.beacon_tx_time), - .attribute_defs[FTDF_PIB_BEACON_TX_TIME].getFunc = NULL, - .attribute_defs[FTDF_PIB_BEACON_TX_TIME].setFunc = NULL, - .attribute_defs[FTDF_PIB_BSN].addr = &ftdf_pib.bsn, - .attribute_defs[FTDF_PIB_BSN].size = sizeof(ftdf_pib.bsn), - .attribute_defs[FTDF_PIB_BSN].getFunc = NULL, - .attribute_defs[FTDF_PIB_BSN].setFunc = NULL, - .attribute_defs[FTDF_PIB_COORD_EXTENDED_ADDRESS].addr = &ftdf_pib.coord_ext_address, - .attribute_defs[FTDF_PIB_COORD_EXTENDED_ADDRESS].size = sizeof(ftdf_pib.coord_ext_address), - .attribute_defs[FTDF_PIB_COORD_EXTENDED_ADDRESS].getFunc = NULL, - .attribute_defs[FTDF_PIB_COORD_EXTENDED_ADDRESS].setFunc = NULL, - .attribute_defs[FTDF_PIB_COORD_SHORT_ADDRESS].addr = &ftdf_pib.coord_short_address, - .attribute_defs[FTDF_PIB_COORD_SHORT_ADDRESS].size = sizeof(ftdf_pib.coord_short_address), - .attribute_defs[FTDF_PIB_COORD_SHORT_ADDRESS].getFunc = NULL, - .attribute_defs[FTDF_PIB_COORD_SHORT_ADDRESS].setFunc = NULL, - .attribute_defs[FTDF_PIB_DSN].addr = &ftdf_pib.dsn, - .attribute_defs[FTDF_PIB_DSN].size = sizeof(ftdf_pib.dsn), - .attribute_defs[FTDF_PIB_DSN].getFunc = NULL, - .attribute_defs[FTDF_PIB_DSN].setFunc = NULL, - .attribute_defs[FTDF_PIB_GTS_PERMIT].addr = &ftdf_pib.gts_permit, - .attribute_defs[FTDF_PIB_GTS_PERMIT].size = 0, - .attribute_defs[FTDF_PIB_GTS_PERMIT].getFunc = NULL, - .attribute_defs[FTDF_PIB_GTS_PERMIT].setFunc = NULL, -#endif /* !FTDF_LITE */ - .attribute_defs[FTDF_PIB_MAX_BE].addr = &ftdf_pib.max_be, - .attribute_defs[FTDF_PIB_MAX_BE].size = sizeof(ftdf_pib.max_be), - .attribute_defs[FTDF_PIB_MAX_BE].getFunc = NULL, - .attribute_defs[FTDF_PIB_MAX_BE].setFunc = ftdf_set_max_be, - .attribute_defs[FTDF_PIB_MAX_CSMA_BACKOFFS].addr = &ftdf_pib.max_csma_backoffs, - .attribute_defs[FTDF_PIB_MAX_CSMA_BACKOFFS].size = sizeof(ftdf_pib.max_csma_backoffs), - .attribute_defs[FTDF_PIB_MAX_CSMA_BACKOFFS].getFunc = NULL, - .attribute_defs[FTDF_PIB_MAX_CSMA_BACKOFFS].setFunc = ftdf_set_max_csma_backoffs, - .attribute_defs[FTDF_PIB_MAX_FRAME_TOTAL_WAIT_TIME].addr = &ftdf_pib.max_frame_total_wait_time, - .attribute_defs[FTDF_PIB_MAX_FRAME_TOTAL_WAIT_TIME].size = sizeof(ftdf_pib.max_frame_total_wait_time), - .attribute_defs[FTDF_PIB_MAX_FRAME_TOTAL_WAIT_TIME].getFunc = ftdf_get_max_frame_total_wait_time, - .attribute_defs[FTDF_PIB_MAX_FRAME_TOTAL_WAIT_TIME].setFunc = ftdf_set_max_frame_total_wait_time, - .attribute_defs[FTDF_PIB_MAX_FRAME_RETRIES].addr = &ftdf_pib.max_frame_retries, - .attribute_defs[FTDF_PIB_MAX_FRAME_RETRIES].size = - sizeof(ftdf_pib.max_frame_retries), - .attribute_defs[FTDF_PIB_MAX_FRAME_RETRIES].getFunc = NULL, - .attribute_defs[FTDF_PIB_MAX_FRAME_RETRIES].setFunc = NULL, - .attribute_defs[FTDF_PIB_MIN_BE].addr = &ftdf_pib.min_be, - .attribute_defs[FTDF_PIB_MIN_BE].size = sizeof(ftdf_pib.min_be), - .attribute_defs[FTDF_PIB_MIN_BE].getFunc = NULL, - .attribute_defs[FTDF_PIB_MIN_BE].setFunc = ftdf_set_min_be, -#ifndef FTDF_LITE - .attribute_defs[FTDF_PIB_LIFS_PERIOD].addr = &ftdf_pib.lifs_period, - .attribute_defs[FTDF_PIB_LIFS_PERIOD].size = 0, - .attribute_defs[FTDF_PIB_LIFS_PERIOD].getFunc = NULL, - .attribute_defs[FTDF_PIB_LIFS_PERIOD].setFunc = NULL, - .attribute_defs[FTDF_PIB_SIFS_PERIOD].addr = &ftdf_pib.sifs_period, - .attribute_defs[FTDF_PIB_SIFS_PERIOD].size = 0, - .attribute_defs[FTDF_PIB_SIFS_PERIOD].getFunc = NULL, - .attribute_defs[FTDF_PIB_SIFS_PERIOD].setFunc = NULL, -#endif - .attribute_defs[FTDF_PIB_PAN_ID].addr = &ftdf_pib.pan_id, - .attribute_defs[FTDF_PIB_PAN_ID].size = sizeof(ftdf_pib.pan_id), - .attribute_defs[FTDF_PIB_PAN_ID].getFunc = ftdf_getpan_id, - .attribute_defs[FTDF_PIB_PAN_ID].setFunc = ftdf_setpan_id, -#ifndef FTDF_LITE - .attribute_defs[FTDF_PIB_PROMISCUOUS_MODE].addr = &ftdf_pib.promiscuous_mode, - .attribute_defs[FTDF_PIB_PROMISCUOUS_MODE].size = sizeof(ftdf_pib.promiscuous_mode), - .attribute_defs[FTDF_PIB_PROMISCUOUS_MODE].getFunc = NULL, - .attribute_defs[FTDF_PIB_PROMISCUOUS_MODE].setFunc = NULL, - .attribute_defs[FTDF_PIB_RESPONSE_WAIT_TIME].addr = &ftdf_pib.response_wait_time, - .attribute_defs[FTDF_PIB_RESPONSE_WAIT_TIME].size = sizeof(ftdf_pib.response_wait_time), - .attribute_defs[FTDF_PIB_RESPONSE_WAIT_TIME].getFunc = NULL, - .attribute_defs[FTDF_PIB_RESPONSE_WAIT_TIME].setFunc = NULL, -#endif /* !FTDF_LITE */ - .attribute_defs[FTDF_PIB_RX_ON_WHEN_IDLE].addr = &ftdf_pib.rx_on_when_idle, - .attribute_defs[FTDF_PIB_RX_ON_WHEN_IDLE].size = sizeof(ftdf_pib.rx_on_when_idle), - .attribute_defs[FTDF_PIB_RX_ON_WHEN_IDLE].getFunc = ftdf_get_rx_on_when_idle, - .attribute_defs[FTDF_PIB_RX_ON_WHEN_IDLE].setFunc = ftdf_set_rx_on_when_idle, -#ifndef FTDF_LITE - .attribute_defs[FTDF_PIB_SECURITY_ENABLED].addr = &ftdf_pib.security_enabled, - .attribute_defs[FTDF_PIB_SECURITY_ENABLED].size = sizeof(ftdf_pib.security_enabled), - .attribute_defs[FTDF_PIB_SECURITY_ENABLED].getFunc = NULL, - .attribute_defs[FTDF_PIB_SECURITY_ENABLED].setFunc = NULL, -#endif /* !FTDF_LITE */ - .attribute_defs[FTDF_PIB_SHORT_ADDRESS].addr = &ftdf_pib.short_address, - .attribute_defs[FTDF_PIB_SHORT_ADDRESS].size = sizeof(ftdf_pib.short_address), - .attribute_defs[FTDF_PIB_SHORT_ADDRESS].getFunc = NULL, - .attribute_defs[FTDF_PIB_SHORT_ADDRESS].setFunc = ftdf_set_short_address, -#ifndef FTDF_LITE - .attribute_defs[FTDF_PIB_SUPERFRAME_ORDER].addr = &ftdf_pib.superframe_order, - .attribute_defs[FTDF_PIB_SUPERFRAME_ORDER].size = 0, - .attribute_defs[FTDF_PIB_SUPERFRAME_ORDER].getFunc = NULL, - .attribute_defs[FTDF_PIB_SUPERFRAME_ORDER].setFunc = NULL, - .attribute_defs[FTDF_PIB_SYNC_SYMBOL_OFFSET].addr = &ftdf_pib.sync_symbol_offset, - .attribute_defs[FTDF_PIB_SYNC_SYMBOL_OFFSET].size = 0, - .attribute_defs[FTDF_PIB_SYNC_SYMBOL_OFFSET].getFunc = NULL, - .attribute_defs[FTDF_PIB_SYNC_SYMBOL_OFFSET].setFunc = NULL, - .attribute_defs[FTDF_PIB_TIMESTAMP_SUPPORTED].addr = &ftdf_pib.timestamp_supported, - .attribute_defs[FTDF_PIB_TIMESTAMP_SUPPORTED].size = 0, - .attribute_defs[FTDF_PIB_TIMESTAMP_SUPPORTED].getFunc = NULL, - .attribute_defs[FTDF_PIB_TIMESTAMP_SUPPORTED].setFunc = NULL, - .attribute_defs[FTDF_PIB_TRANSACTION_PERSISTENCE_TIME].addr = &ftdf_pib.transaction_persistence_time, - .attribute_defs[FTDF_PIB_TRANSACTION_PERSISTENCE_TIME].size = sizeof(ftdf_pib.transaction_persistence_time), - .attribute_defs[FTDF_PIB_TRANSACTION_PERSISTENCE_TIME].getFunc = NULL, - .attribute_defs[FTDF_PIB_TRANSACTION_PERSISTENCE_TIME].setFunc = NULL, - .attribute_defs[FTDF_PIB_ENH_ACK_WAIT_DURATION].addr = &ftdf_pib.enh_ack_wait_duration, - .attribute_defs[FTDF_PIB_ENH_ACK_WAIT_DURATION].size = sizeof(ftdf_pib.enh_ack_wait_duration), - .attribute_defs[FTDF_PIB_ENH_ACK_WAIT_DURATION].getFunc = ftdf_get_enh_ack_wait_duration, - .attribute_defs[FTDF_PIB_ENH_ACK_WAIT_DURATION].setFunc = ftdf_set_enh_ack_wait_duration, - .attribute_defs[FTDF_PIB_IMPLICIT_BROADCAST].addr = &ftdf_pib.implicit_broadcast, - .attribute_defs[FTDF_PIB_IMPLICIT_BROADCAST].size = sizeof(ftdf_pib.implicit_broadcast), - .attribute_defs[FTDF_PIB_IMPLICIT_BROADCAST].getFunc = ftdf_get_implicit_broadcast, - .attribute_defs[FTDF_PIB_IMPLICIT_BROADCAST].setFunc = ftdf_set_implicit_broadcast, - .attribute_defs[FTDF_PIB_SIMPLE_ADDRESS].addr = &ftdf_pib.simple_address, - .attribute_defs[FTDF_PIB_SIMPLE_ADDRESS].size = sizeof(ftdf_pib.simple_address), - .attribute_defs[FTDF_PIB_SIMPLE_ADDRESS].getFunc = NULL, - .attribute_defs[FTDF_PIB_SIMPLE_ADDRESS].setFunc = ftdf_set_simple_address, - .attribute_defs[FTDF_PIB_DISCONNECT_TIME].addr = &ftdf_pib.disconnect_time, - .attribute_defs[FTDF_PIB_DISCONNECT_TIME].size = sizeof(ftdf_pib.disconnect_time), - .attribute_defs[FTDF_PIB_DISCONNECT_TIME].getFunc = NULL, - .attribute_defs[FTDF_PIB_DISCONNECT_TIME].setFunc = NULL, - .attribute_defs[FTDF_PIB_JOIN_PRIORITY].addr = &ftdf_pib.join_priority, - .attribute_defs[FTDF_PIB_JOIN_PRIORITY].size = sizeof(ftdf_pib.join_priority), - .attribute_defs[FTDF_PIB_JOIN_PRIORITY].getFunc = NULL, - .attribute_defs[FTDF_PIB_JOIN_PRIORITY].setFunc = NULL, - .attribute_defs[FTDF_PIB_ASN].addr = &ftdf_pib.asn, - .attribute_defs[FTDF_PIB_ASN].size = sizeof(ftdf_pib.asn), - .attribute_defs[FTDF_PIB_ASN].getFunc = NULL, - .attribute_defs[FTDF_PIB_ASN].setFunc = NULL, - .attribute_defs[FTDF_PIB_NO_HL_BUFFERS].addr = &ftdf_pib.no_hl_buffers, - .attribute_defs[FTDF_PIB_NO_HL_BUFFERS].size = sizeof(ftdf_pib.no_hl_buffers), - .attribute_defs[FTDF_PIB_NO_HL_BUFFERS].getFunc = NULL, - .attribute_defs[FTDF_PIB_NO_HL_BUFFERS].setFunc = NULL, - .attribute_defs[FTDF_PIB_SLOTFRAME_TABLE].addr = &ftdf_pib.slotframe_table, - .attribute_defs[FTDF_PIB_SLOTFRAME_TABLE].size = 0, - .attribute_defs[FTDF_PIB_SLOTFRAME_TABLE].getFunc = NULL, - .attribute_defs[FTDF_PIB_SLOTFRAME_TABLE].setFunc = NULL, - .attribute_defs[FTDF_PIB_LINK_TABLE].addr = &ftdf_pib.link_table, - .attribute_defs[FTDF_PIB_LINK_TABLE].size = 0, - .attribute_defs[FTDF_PIB_LINK_TABLE].getFunc = NULL, - .attribute_defs[FTDF_PIB_LINK_TABLE].setFunc = NULL, - .attribute_defs[FTDF_PIB_TIMESLOT_TEMPLATE].addr = &ftdf_pib.timeslot_template, - .attribute_defs[FTDF_PIB_TIMESLOT_TEMPLATE].size = sizeof(ftdf_pib.timeslot_template), - .attribute_defs[FTDF_PIB_TIMESLOT_TEMPLATE].getFunc = NULL, -#ifdef FTDF_NO_TSCH - .attribute_defs[FTDF_PIB_TIMESLOT_TEMPLATE].setFunc = NULL, -#else - .attribute_defs[FTDF_PIB_TIMESLOT_TEMPLATE].setFunc = ftdf_set_timeslot_template, -#endif /* FTDF_NO_TSCH */ - .attribute_defs[FTDF_PIB_HOPPINGSEQUENCE_ID].addr = &ftdf_pib.hopping_sequence_id, - .attribute_defs[FTDF_PIB_HOPPINGSEQUENCE_ID].size = sizeof(ftdf_pib.hopping_sequence_id), - .attribute_defs[FTDF_PIB_HOPPINGSEQUENCE_ID].getFunc = NULL, - .attribute_defs[FTDF_PIB_HOPPINGSEQUENCE_ID].setFunc = NULL, - .attribute_defs[FTDF_PIB_CHANNEL_PAGE].addr = &ftdf_pib.channel_page, - .attribute_defs[FTDF_PIB_CHANNEL_PAGE].size = sizeof(ftdf_pib.channel_page), - .attribute_defs[FTDF_PIB_CHANNEL_PAGE].getFunc = NULL, - .attribute_defs[FTDF_PIB_CHANNEL_PAGE].setFunc = NULL, - .attribute_defs[FTDF_PIB_NUMBER_OF_CHANNELS].addr = &ftdf_pib.number_of_channels, - .attribute_defs[FTDF_PIB_NUMBER_OF_CHANNELS].size = sizeof(ftdf_pib.number_of_channels), - .attribute_defs[FTDF_PIB_NUMBER_OF_CHANNELS].getFunc = NULL, - .attribute_defs[FTDF_PIB_NUMBER_OF_CHANNELS].setFunc = NULL, - .attribute_defs[FTDF_PIB_PHY_CONFIGURATION].addr = &ftdf_pib.phy_configuration, - .attribute_defs[FTDF_PIB_PHY_CONFIGURATION].size = sizeof(ftdf_pib.phy_configuration), - .attribute_defs[FTDF_PIB_PHY_CONFIGURATION].getFunc = NULL, - .attribute_defs[FTDF_PIB_PHY_CONFIGURATION].setFunc = NULL, - .attribute_defs[FTDF_PIB_EXTENTED_BITMAP].addr = &ftdf_pib.extended_bitmap, - .attribute_defs[FTDF_PIB_EXTENTED_BITMAP].size = sizeof(ftdf_pib.extended_bitmap), - .attribute_defs[FTDF_PIB_EXTENTED_BITMAP].getFunc = NULL, - .attribute_defs[FTDF_PIB_EXTENTED_BITMAP].setFunc = NULL, - .attribute_defs[FTDF_PIB_HOPPING_SEQUENCE_LENGTH].addr = &ftdf_pib.hopping_sequence_length, - .attribute_defs[FTDF_PIB_HOPPING_SEQUENCE_LENGTH].size = sizeof(ftdf_pib.hopping_sequence_length), - .attribute_defs[FTDF_PIB_HOPPING_SEQUENCE_LENGTH].getFunc = NULL, - .attribute_defs[FTDF_PIB_HOPPING_SEQUENCE_LENGTH].setFunc = NULL, - .attribute_defs[FTDF_PIB_HOPPING_SEQUENCE_LIST].addr = ftdf_pib.hopping_sequence_list, - .attribute_defs[FTDF_PIB_HOPPING_SEQUENCE_LIST].size = sizeof(ftdf_pib.hopping_sequence_list), - .attribute_defs[FTDF_PIB_HOPPING_SEQUENCE_LIST].getFunc = NULL, - .attribute_defs[FTDF_PIB_HOPPING_SEQUENCE_LIST].setFunc = NULL, - .attribute_defs[FTDF_PIB_CURRENT_HOP].addr = &ftdf_pib.current_hop, - .attribute_defs[FTDF_PIB_CURRENT_HOP].size = sizeof(ftdf_pib.current_hop), - .attribute_defs[FTDF_PIB_CURRENT_HOP].getFunc = NULL, - .attribute_defs[FTDF_PIB_CURRENT_HOP].setFunc = NULL, - .attribute_defs[FTDF_PIB_DWELL_TIME].addr = &ftdf_pib.dwell_time, - .attribute_defs[FTDF_PIB_DWELL_TIME].size = sizeof(ftdf_pib.dwell_time), - .attribute_defs[FTDF_PIB_DWELL_TIME].getFunc = NULL, - .attribute_defs[FTDF_PIB_DWELL_TIME].setFunc = NULL, - .attribute_defs[FTDF_PIB_CSL_PERIOD].addr = &ftdf_pib.csl_period, - .attribute_defs[FTDF_PIB_CSL_PERIOD].size = sizeof(ftdf_pib.csl_period), - .attribute_defs[FTDF_PIB_CSL_PERIOD].getFunc = NULL, - .attribute_defs[FTDF_PIB_CSL_PERIOD].setFunc = NULL, - .attribute_defs[FTDF_PIB_CSL_MAX_PERIOD].addr = &ftdf_pib.csl_max_period, - .attribute_defs[FTDF_PIB_CSL_MAX_PERIOD].size = sizeof(ftdf_pib.csl_max_period), - .attribute_defs[FTDF_PIB_CSL_MAX_PERIOD].getFunc = NULL, - .attribute_defs[FTDF_PIB_CSL_MAX_PERIOD].setFunc = NULL, - .attribute_defs[FTDF_PIB_CSL_CHANNEL_MASK].addr = &ftdf_pib.csl_channel_mask, - .attribute_defs[FTDF_PIB_CSL_CHANNEL_MASK].size = sizeof(ftdf_pib.csl_channel_mask), - .attribute_defs[FTDF_PIB_CSL_CHANNEL_MASK].getFunc = NULL, - .attribute_defs[FTDF_PIB_CSL_CHANNEL_MASK].setFunc = NULL, - .attribute_defs[FTDF_PIB_CSL_FRAME_PENDING_WAIT_T].addr = &ftdf_pib.csl_frame_pending_wait, - .attribute_defs[FTDF_PIB_CSL_FRAME_PENDING_WAIT_T].size = sizeof(ftdf_pib.csl_frame_pending_wait), -#ifdef FTDF_NO_CSL - .attribute_defs[FTDF_PIB_CSL_FRAME_PENDING_WAIT_T].getFunc = NULL, - .attribute_defs[FTDF_PIB_CSL_FRAME_PENDING_WAIT_T].setFunc = NULL, -#else - .attribute_defs[FTDF_PIB_CSL_FRAME_PENDING_WAIT_T].getFunc = ftdf_get_csl_frame_pending_wait, - .attribute_defs[FTDF_PIB_CSL_FRAME_PENDING_WAIT_T].setFunc = ftdf_set_csl_frame_pending_wait, -#endif /* FTDF_NO_CSL */ - .attribute_defs[FTDF_PIB_LOW_ENERGY_SUPERFRAME_SUPPORTED].addr = &ftdf_pib.low_energy_superframe_supported, - .attribute_defs[FTDF_PIB_LOW_ENERGY_SUPERFRAME_SUPPORTED].size = sizeof(ftdf_pib.low_energy_superframe_supported), - .attribute_defs[FTDF_PIB_LOW_ENERGY_SUPERFRAME_SUPPORTED].getFunc = NULL, - .attribute_defs[FTDF_PIB_LOW_ENERGY_SUPERFRAME_SUPPORTED].setFunc = NULL, - .attribute_defs[FTDF_PIB_LOW_ENERGY_SUPERFRAME_SYNC_INTERVAL].addr = &ftdf_pib.low_energy_superframe_sync_interval, - .attribute_defs[FTDF_PIB_LOW_ENERGY_SUPERFRAME_SYNC_INTERVAL].size = sizeof(ftdf_pib.low_energy_superframe_sync_interval), - .attribute_defs[FTDF_PIB_LOW_ENERGY_SUPERFRAME_SYNC_INTERVAL].getFunc = NULL, - .attribute_defs[FTDF_PIB_LOW_ENERGY_SUPERFRAME_SYNC_INTERVAL].setFunc = NULL, -#endif /* !FTDF_LITE */ - .attribute_defs[FTDF_PIB_PERFORMANCE_METRICS].addr = &ftdf_pib.performance_metrics, - .attribute_defs[FTDF_PIB_PERFORMANCE_METRICS].size = sizeof(ftdf_pib.performance_metrics), - .attribute_defs[FTDF_PIB_PERFORMANCE_METRICS].getFunc = ftdf_get_lmac_pm_data, - .attribute_defs[FTDF_PIB_PERFORMANCE_METRICS].setFunc = NULL, -#ifndef FTDF_LITE - .attribute_defs[FTDF_PIB_USE_ENHANCED_BEACON].addr = &ftdf_pib.use_enhanced_becaon, - .attribute_defs[FTDF_PIB_USE_ENHANCED_BEACON].size = sizeof(ftdf_pib.use_enhanced_becaon), - .attribute_defs[FTDF_PIB_USE_ENHANCED_BEACON].getFunc = NULL, - .attribute_defs[FTDF_PIB_USE_ENHANCED_BEACON].setFunc = NULL, - .attribute_defs[FTDF_PIB_EB_IE_LIST].addr = &ftdf_pib.eb_ie_list, - .attribute_defs[FTDF_PIB_EB_IE_LIST].size = sizeof(ftdf_pib.eb_ie_list), - .attribute_defs[FTDF_PIB_EB_IE_LIST].getFunc = NULL, - .attribute_defs[FTDF_PIB_EB_IE_LIST].setFunc = NULL, - .attribute_defs[FTDF_PIB_EB_FILTERING_ENABLED].addr = &ftdf_pib.eb_filtering_enabled, - .attribute_defs[FTDF_PIB_EB_FILTERING_ENABLED].size = sizeof(ftdf_pib.eb_filtering_enabled), - .attribute_defs[FTDF_PIB_EB_FILTERING_ENABLED].getFunc = NULL, - .attribute_defs[FTDF_PIB_EB_FILTERING_ENABLED].setFunc = NULL, - .attribute_defs[FTDF_PIB_EBSN].addr = &ftdf_pib.eb_sn, - .attribute_defs[FTDF_PIB_EBSN].size = sizeof(ftdf_pib.eb_sn), - .attribute_defs[FTDF_PIB_EBSN].getFunc = NULL, - .attribute_defs[FTDF_PIB_EBSN].setFunc = NULL, - .attribute_defs[FTDF_PIB_EB_AUTO_SA].addr = &ftdf_pib.eb_auto_sa, - .attribute_defs[FTDF_PIB_EB_AUTO_SA].size = sizeof(ftdf_pib.eb_auto_sa), - .attribute_defs[FTDF_PIB_EB_AUTO_SA].getFunc = NULL, - .attribute_defs[FTDF_PIB_EB_AUTO_SA].setFunc = NULL, - .attribute_defs[FTDF_PIB_EACK_IE_LIST].addr = &ftdf_pib.e_ack_ie_list, - .attribute_defs[FTDF_PIB_EACK_IE_LIST].size = sizeof(ftdf_pib.e_ack_ie_list), - .attribute_defs[FTDF_PIB_EACK_IE_LIST].getFunc = NULL, - .attribute_defs[FTDF_PIB_EACK_IE_LIST].setFunc = NULL, - .attribute_defs[FTDF_PIB_KEY_TABLE].addr = &ftdf_pib.key_table, - .attribute_defs[FTDF_PIB_KEY_TABLE].size = sizeof(ftdf_pib.key_table), - .attribute_defs[FTDF_PIB_KEY_TABLE].getFunc = NULL, - .attribute_defs[FTDF_PIB_KEY_TABLE].setFunc = NULL, - .attribute_defs[FTDF_PIB_DEVICE_TABLE].addr = &ftdf_pib.device_table, - .attribute_defs[FTDF_PIB_DEVICE_TABLE].size = sizeof(ftdf_pib.device_table), - .attribute_defs[FTDF_PIB_DEVICE_TABLE].getFunc = NULL, - .attribute_defs[FTDF_PIB_DEVICE_TABLE].setFunc = NULL, - .attribute_defs[FTDF_PIB_SECURITY_LEVEL_TABLE].addr = &ftdf_pib.security_level_table, - .attribute_defs[FTDF_PIB_SECURITY_LEVEL_TABLE].size = sizeof(ftdf_pib.security_level_table), - .attribute_defs[FTDF_PIB_SECURITY_LEVEL_TABLE].getFunc = NULL, - .attribute_defs[FTDF_PIB_SECURITY_LEVEL_TABLE].setFunc = NULL, - .attribute_defs[FTDF_PIB_FRAME_COUNTER].addr = &ftdf_pib.frame_counter, - .attribute_defs[FTDF_PIB_FRAME_COUNTER].size = sizeof(ftdf_pib.frame_counter), - .attribute_defs[FTDF_PIB_FRAME_COUNTER].getFunc = NULL, - .attribute_defs[FTDF_PIB_FRAME_COUNTER].setFunc = NULL, - .attribute_defs[FTDF_PIB_MT_DATA_SECURITY_LEVEL].addr = &ftdf_pib.mt_data_security_level, - .attribute_defs[FTDF_PIB_MT_DATA_SECURITY_LEVEL].size = sizeof(ftdf_pib.mt_data_security_level), - .attribute_defs[FTDF_PIB_MT_DATA_SECURITY_LEVEL].getFunc = NULL, - .attribute_defs[FTDF_PIB_MT_DATA_SECURITY_LEVEL].setFunc = NULL, - .attribute_defs[FTDF_PIB_MT_DATA_KEY_ID_MODE].addr = &ftdf_pib.mt_data_key_id_mode, - .attribute_defs[FTDF_PIB_MT_DATA_KEY_ID_MODE].size = sizeof(ftdf_pib.mt_data_key_id_mode), - .attribute_defs[FTDF_PIB_MT_DATA_KEY_ID_MODE].getFunc = NULL, - .attribute_defs[FTDF_PIB_MT_DATA_KEY_ID_MODE].setFunc = NULL, - .attribute_defs[FTDF_PIB_MT_DATA_KEY_SOURCE].addr = &ftdf_pib.mt_data_key_source, - .attribute_defs[FTDF_PIB_MT_DATA_KEY_SOURCE].size = sizeof(ftdf_pib.mt_data_key_source), - .attribute_defs[FTDF_PIB_MT_DATA_KEY_SOURCE].getFunc = NULL, - .attribute_defs[FTDF_PIB_MT_DATA_KEY_SOURCE].setFunc = NULL, - .attribute_defs[FTDF_PIB_MT_DATA_KEY_INDEX].addr = &ftdf_pib.mt_data_key_index, - .attribute_defs[FTDF_PIB_MT_DATA_KEY_INDEX].size = sizeof(ftdf_pib.mt_data_key_index), - .attribute_defs[FTDF_PIB_MT_DATA_KEY_INDEX].getFunc = NULL, - .attribute_defs[FTDF_PIB_MT_DATA_KEY_INDEX].setFunc = NULL, - .attribute_defs[FTDF_PIB_DEFAULT_KEY_SOURCE].addr = &ftdf_pib.default_key_source, - .attribute_defs[FTDF_PIB_DEFAULT_KEY_SOURCE].size = sizeof(ftdf_pib.default_key_source), - .attribute_defs[FTDF_PIB_DEFAULT_KEY_SOURCE].getFunc = NULL, - .attribute_defs[FTDF_PIB_DEFAULT_KEY_SOURCE].setFunc = NULL, - .attribute_defs[FTDF_PIB_PAN_COORD_EXTENDED_ADDRESS].addr = &ftdf_pib.pan_coord_ext_address, - .attribute_defs[FTDF_PIB_PAN_COORD_EXTENDED_ADDRESS].size = sizeof(ftdf_pib.pan_coord_ext_address), - .attribute_defs[FTDF_PIB_PAN_COORD_EXTENDED_ADDRESS].getFunc = NULL, - .attribute_defs[FTDF_PIB_PAN_COORD_EXTENDED_ADDRESS].setFunc = NULL, - .attribute_defs[FTDF_PIB_PAN_COORD_SHORT_ADDRESS].addr = &ftdf_pib.pan_coord_short_address, - .attribute_defs[FTDF_PIB_PAN_COORD_SHORT_ADDRESS].size = sizeof(ftdf_pib.pan_coord_short_address), - .attribute_defs[FTDF_PIB_PAN_COORD_SHORT_ADDRESS].getFunc = NULL, - .attribute_defs[FTDF_PIB_PAN_COORD_SHORT_ADDRESS].setFunc = NULL, - .attribute_defs[FTDF_PIB_FRAME_COUNTER_MODE].addr = &ftdf_pib.frame_counter_mode, - .attribute_defs[FTDF_PIB_FRAME_COUNTER_MODE].size = sizeof(ftdf_pib.frame_counter_mode), - .attribute_defs[FTDF_PIB_FRAME_COUNTER_MODE].getFunc = NULL, - .attribute_defs[FTDF_PIB_FRAME_COUNTER_MODE].setFunc = NULL, - .attribute_defs[FTDF_PIB_CSL_SYNC_TX_MARGIN].addr = &ftdf_pib.csl_sync_tx_margin, - .attribute_defs[FTDF_PIB_CSL_SYNC_TX_MARGIN].size = sizeof(ftdf_pib.csl_sync_tx_margin), - .attribute_defs[FTDF_PIB_CSL_SYNC_TX_MARGIN].getFunc = NULL, - .attribute_defs[FTDF_PIB_CSL_SYNC_TX_MARGIN].setFunc = NULL, - .attribute_defs[FTDF_PIB_CSL_MAX_AGE_REMOTE_INFO].addr = &ftdf_pib.csl_max_age_remote_info, - .attribute_defs[FTDF_PIB_CSL_MAX_AGE_REMOTE_INFO].size = sizeof(ftdf_pib.csl_max_age_remote_info), - .attribute_defs[FTDF_PIB_CSL_MAX_AGE_REMOTE_INFO].getFunc = NULL, - .attribute_defs[FTDF_PIB_CSL_MAX_AGE_REMOTE_INFO].setFunc = NULL, - .attribute_defs[FTDF_PIB_TSCH_ENABLED].addr = &ftdf_pib.tsch_enabled, - .attribute_defs[FTDF_PIB_TSCH_ENABLED].size = 0, - .attribute_defs[FTDF_PIB_TSCH_ENABLED].getFunc = NULL, - .attribute_defs[FTDF_PIB_TSCH_ENABLED].setFunc = NULL, -#ifdef FTDF_NO_CSL - .attribute_defs[FTDF_PIB_LE_ENABLED].addr = &ftdf_pib.le_enabled, - .attribute_defs[FTDF_PIB_LE_ENABLED].size = 0, - .attribute_defs[FTDF_PIB_LE_ENABLED].getFunc = NULL, - .attribute_defs[FTDF_PIB_LE_ENABLED].setFunc = NULL, -#else - .attribute_defs[FTDF_PIB_LE_ENABLED].addr = &ftdf_pib.le_enabled, - .attribute_defs[FTDF_PIB_LE_ENABLED].size = sizeof(ftdf_pib.le_enabled), - .attribute_defs[FTDF_PIB_LE_ENABLED].getFunc = NULL, - .attribute_defs[FTDF_PIB_LE_ENABLED].setFunc = ftdf_set_le_enabled, -#endif /* FTDF_NO_CSL */ -#endif /* !FTDF_LITE */ - .attribute_defs[FTDF_PIB_CURRENT_CHANNEL].addr = &ftdf_pib.current_channel, - .attribute_defs[FTDF_PIB_CURRENT_CHANNEL].size = sizeof(ftdf_pib.current_channel), - .attribute_defs[FTDF_PIB_CURRENT_CHANNEL].getFunc = ftdf_get_current_channel, - .attribute_defs[FTDF_PIB_CURRENT_CHANNEL].setFunc = ftdf_set_current_channel, -#ifndef FTDF_LITE - .attribute_defs[FTDF_PIB_CHANNELS_SUPPORTED].addr = (void*)&channels_supported, - .attribute_defs[FTDF_PIB_CHANNELS_SUPPORTED].size = 0, - .attribute_defs[FTDF_PIB_CHANNELS_SUPPORTED].getFunc = NULL, - .attribute_defs[FTDF_PIB_CHANNELS_SUPPORTED].setFunc = NULL, -#endif /* !FTDF_LITE */ - .attribute_defs[FTDF_PIB_TX_POWER_TOLERANCE].addr = &ftdf_pib.tx_power_tolerance, - .attribute_defs[FTDF_PIB_TX_POWER_TOLERANCE].size = sizeof(ftdf_pib.tx_power_tolerance), - .attribute_defs[FTDF_PIB_TX_POWER_TOLERANCE].getFunc = NULL, - .attribute_defs[FTDF_PIB_TX_POWER_TOLERANCE].setFunc = NULL, - .attribute_defs[FTDF_PIB_TX_POWER].addr = &ftdf_pib.tx_power, - .attribute_defs[FTDF_PIB_TX_POWER].size = sizeof(ftdf_pib.tx_power), - .attribute_defs[FTDF_PIB_TX_POWER].getFunc = NULL, - .attribute_defs[FTDF_PIB_TX_POWER].setFunc = NULL, - .attribute_defs[FTDF_PIB_CCA_MODE].addr = &ftdf_pib.cca_mode, - .attribute_defs[FTDF_PIB_CCA_MODE].size = sizeof(ftdf_pib.cca_mode), - .attribute_defs[FTDF_PIB_CCA_MODE].getFunc = NULL, - .attribute_defs[FTDF_PIB_CCA_MODE].setFunc = NULL, -#ifndef FTDF_LITE - .attribute_defs[FTDF_PIB_CURRENT_PAGE].addr = &ftdf_pib.current_page, - .attribute_defs[FTDF_PIB_CURRENT_PAGE].size = 0, - .attribute_defs[FTDF_PIB_CURRENT_PAGE].getFunc = NULL, - .attribute_defs[FTDF_PIB_CURRENT_PAGE].setFunc = NULL, - .attribute_defs[FTDF_PIB_MAX_FRAME_DURATION].addr = &ftdf_pib.max_frame_duration, - .attribute_defs[FTDF_PIB_MAX_FRAME_DURATION].size = 0, - .attribute_defs[FTDF_PIB_MAX_FRAME_DURATION].getFunc = NULL, - .attribute_defs[FTDF_PIB_MAX_FRAME_DURATION].setFunc = NULL, - .attribute_defs[FTDF_PIB_SHR_DURATION].addr = &ftdf_pib.shr_duration, - .attribute_defs[FTDF_PIB_SHR_DURATION].size = 0, - .attribute_defs[FTDF_PIB_SHR_DURATION].getFunc = NULL, - .attribute_defs[FTDF_PIB_SHR_DURATION].setFunc = NULL, -#endif /* !FTDF_LITE */ - .attribute_defs[FTDF_PIB_TRAFFIC_COUNTERS].addr = &ftdf_pib.traffic_counters, - .attribute_defs[FTDF_PIB_TRAFFIC_COUNTERS].size = 0, - .attribute_defs[FTDF_PIB_TRAFFIC_COUNTERS].getFunc = ftdf_get_lmac_traffic_counters, - .attribute_defs[FTDF_PIB_TRAFFIC_COUNTERS].setFunc = NULL, -#ifndef FTDF_LITE - .attribute_defs[FTDF_PIB_LE_CAPABLE].addr = &ftdf_pib.le_capable, - .attribute_defs[FTDF_PIB_LE_CAPABLE].size = 0, - .attribute_defs[FTDF_PIB_LE_CAPABLE].getFunc = NULL, - .attribute_defs[FTDF_PIB_LE_CAPABLE].setFunc = NULL, - .attribute_defs[FTDF_PIB_LL_CAPABLE].addr = &ftdf_pib.ll_capable, - .attribute_defs[FTDF_PIB_LL_CAPABLE].size = 0, - .attribute_defs[FTDF_PIB_LL_CAPABLE].getFunc = NULL, - .attribute_defs[FTDF_PIB_LL_CAPABLE].setFunc = NULL, - .attribute_defs[FTDF_PIB_DSME_CAPABLE].addr = &ftdf_pib.dsme_capable, - .attribute_defs[FTDF_PIB_DSME_CAPABLE].size = 0, - .attribute_defs[FTDF_PIB_DSME_CAPABLE].getFunc = NULL, - .attribute_defs[FTDF_PIB_DSME_CAPABLE].setFunc = NULL, - .attribute_defs[FTDF_PIB_RFID_CAPABLE].addr = &ftdf_pib.rfid_capable, - .attribute_defs[FTDF_PIB_RFID_CAPABLE].size = 0, - .attribute_defs[FTDF_PIB_RFID_CAPABLE].getFunc = NULL, - .attribute_defs[FTDF_PIB_RFID_CAPABLE].setFunc = NULL, - .attribute_defs[FTDF_PIB_AMCA_CAPABLE].addr = &ftdf_pib.amca_capable, - .attribute_defs[FTDF_PIB_AMCA_CAPABLE].size = 0, - .attribute_defs[FTDF_PIB_AMCA_CAPABLE].getFunc = NULL, - .attribute_defs[FTDF_PIB_AMCA_CAPABLE].setFunc = NULL, -#endif /* !FTDF_LITE */ - .attribute_defs[FTDF_PIB_METRICS_CAPABLE].addr = &ftdf_pib.metrics_capable, - .attribute_defs[FTDF_PIB_METRICS_CAPABLE].size = 0, - .attribute_defs[FTDF_PIB_METRICS_CAPABLE].getFunc = NULL, - .attribute_defs[FTDF_PIB_METRICS_CAPABLE].setFunc = NULL, -#ifndef FTDF_LITE - .attribute_defs[FTDF_PIB_RANGING_SUPPORTED].addr = &ftdf_pib.ranging_supported, - .attribute_defs[FTDF_PIB_RANGING_SUPPORTED].size = 0, - .attribute_defs[FTDF_PIB_RANGING_SUPPORTED].getFunc = NULL, - .attribute_defs[FTDF_PIB_RANGING_SUPPORTED].setFunc = NULL, -#endif /* !FTDF_LITE */ - .attribute_defs[FTDF_PIB_KEEP_PHY_ENABLED].addr = &ftdf_pib.keep_phy_enabled, - .attribute_defs[FTDF_PIB_KEEP_PHY_ENABLED].size = sizeof(ftdf_pib.keep_phy_enabled), - .attribute_defs[FTDF_PIB_KEEP_PHY_ENABLED].getFunc = ftdf_get_keep_phy_enabled, - .attribute_defs[FTDF_PIB_KEEP_PHY_ENABLED].setFunc = ftdf_set_keep_phy_enabled, - .attribute_defs[FTDF_PIB_METRICS_ENABLED].addr = &ftdf_pib.metrics_enabled, - .attribute_defs[FTDF_PIB_METRICS_ENABLED].size = sizeof(ftdf_pib.metrics_enabled), - .attribute_defs[FTDF_PIB_METRICS_ENABLED].getFunc = NULL, - .attribute_defs[FTDF_PIB_METRICS_ENABLED].setFunc = NULL, -#ifndef FTDF_LITE - .attribute_defs[FTDF_PIB_BEACON_AUTO_RESPOND].addr = &ftdf_pib.beacon_auto_respond, - .attribute_defs[FTDF_PIB_BEACON_AUTO_RESPOND].size = sizeof(ftdf_pib.beacon_auto_respond), - .attribute_defs[FTDF_PIB_BEACON_AUTO_RESPOND].getFunc = NULL, - .attribute_defs[FTDF_PIB_BEACON_AUTO_RESPOND].setFunc = NULL, - .attribute_defs[FTDF_PIB_TSCH_CAPABLE].addr = &ftdf_pib.tsch_capable, - .attribute_defs[FTDF_PIB_TSCH_CAPABLE].size = 0, - .attribute_defs[FTDF_PIB_TSCH_CAPABLE].getFunc = NULL, - .attribute_defs[FTDF_PIB_TSCH_CAPABLE].setFunc = NULL, - .attribute_defs[FTDF_PIB_TS_SYNC_CORRECT_THRESHOLD].addr = &ftdf_pib.ts_sync_correct_threshold, - .attribute_defs[FTDF_PIB_TS_SYNC_CORRECT_THRESHOLD].size = sizeof(ftdf_pib.ts_sync_correct_threshold), - .attribute_defs[FTDF_PIB_TS_SYNC_CORRECT_THRESHOLD].getFunc = NULL, - .attribute_defs[FTDF_PIB_TS_SYNC_CORRECT_THRESHOLD].setFunc = NULL, -#endif /* !FTDF_LITE */ - .attribute_defs[FTDF_PIB_BO_IRQ_THRESHOLD].addr = &ftdf_pib.bo_irq_threshold, - .attribute_defs[FTDF_PIB_BO_IRQ_THRESHOLD].size = sizeof(ftdf_pib.bo_irq_threshold), - .attribute_defs[FTDF_PIB_BO_IRQ_THRESHOLD].getFunc = ftdf_get_bo_irq_threshold, - .attribute_defs[FTDF_PIB_BO_IRQ_THRESHOLD].setFunc = ftdf_set_bo_irq_threshold, - .attribute_defs[FTDF_PIB_PTI_CONFIG].addr = &ftdf_pib.pti_config, - .attribute_defs[FTDF_PIB_PTI_CONFIG].size = sizeof(ftdf_pib.pti_config), - .attribute_defs[FTDF_PIB_PTI_CONFIG].getFunc = NULL, - .attribute_defs[FTDF_PIB_PTI_CONFIG].setFunc = ftdf_set_pti_config, - .attribute_defs[FTDF_PIB_LINK_QUALITY_MODE].addr = &ftdf_pib.link_quality_mode, - .attribute_defs[FTDF_PIB_LINK_QUALITY_MODE].size = sizeof(ftdf_pib.link_quality_mode), - .attribute_defs[FTDF_PIB_LINK_QUALITY_MODE].getFunc = NULL, - .attribute_defs[FTDF_PIB_LINK_QUALITY_MODE].setFunc = NULL, -}; - -ftdf_boolean_t ftdf_transparent_mode __attribute__ ((section(".retention"))); -ftdf_bitmap32_t ftdf_transparent_mode_options __attribute__ ((section(".retention"))); -#if FTDF_DBG_BUS_ENABLE -ftdf_dbg_mode_t ftdf_dbg_mode __attribute__ ((section(".retention"))); -#endif -#if dg_configUSE_FTDF_DDPHY == 1 -uint16_t ftdf_ddphy_cca_reg __attribute__ ((section(".retention"))); -#endif -#ifndef FTDF_LITE -ftdf_buffer_t ftdf_req_buffers[FTDF_NR_OF_REQ_BUFFERS] __attribute__ ((section(".retention"))); -ftdf_queue_t ftdf_req_queue __attribute__ ((section(".retention"))); -ftdf_queue_t ftdf_free_queue __attribute__ ((section(".retention"))); -ftdf_pending_t ftdf_tx_pending_list[FTDF_NR_OF_REQ_BUFFERS] __attribute__ ((section(".retention"))); -ftdf_pending_tl_t ftdf_tx_pending_timer_list[FTDF_NR_OF_REQ_BUFFERS] __attribute__ ((section(".retention"))); -ftdf_pending_tl_t *ftdf_tx_pending_timer_head __attribute__ ((section(".retention"))); -ftdf_time_t ftdf_tx_pending_timer_lt __attribute__ ((section(".retention"))); -ftdf_time_t ftdf_tx_pending_timer_time __attribute__ ((section(".retention"))); -#endif /* !FTDF_LITE */ -#ifndef FTDF_PHY_API -ftdf_msg_buffer_t *ftdf_req_current __attribute__ ((section(".retention"))); -#endif -ftdf_size_t ftdf_nr_of_retries __attribute__ ((section(".retention"))); -#if FTDF_USE_SLEEP_DURING_BACKOFF -static ftdf_sdb_t ftdf_sdb __attribute__ ((section(".retention"))); -#endif /* FTDF_USE_SLEEP_DURING_BACKOFF */ -#ifndef FTDF_LITE -ftdf_boolean_t ftdf_is_pan_coordinator __attribute__ ((section(".retention"))); -ftdf_time_t ftdf_start_csl_sample_time __attribute__ ((section(".retention"))); -ftdf_rx_address_admin_t ftdf_rxa[FTDF_NR_OF_RX_ADDRS] __attribute__ ((section(".retention"))); -#endif /* !FTDF_LITE */ -ftdf_boolean_t ftdf_tx_in_progress __attribute__ ((section(".retention"))); -#ifndef FTDF_LITE -#ifndef FTDF_NO_CSL -ftdf_peer_csl_timing_t ftdf_peer_csl_timing[FTDF_NR_OF_CSL_PEERS] __attribute__ ((section(".retention"))); -ftdf_boolean_t ftdf_old_le_enabled __attribute__ ((section(".retention"))); -ftdf_time_t ftdf_rz_time __attribute__ ((section(".retention"))); -ftdf_short_address_t ftdf_send_frame_pending __attribute__ ((section(".retention"))); -#endif /* FTDF_NO_CSL */ -#endif /* !FTDF_LITE */ -uint32_t ftdf_cur_time[2] __attribute__ ((section(".retention"))); -ftdf_lmac_counters_t ftdf_lmac_counters __attribute__ ((section(".retention"))); -ftdf_frame_header_t ftdf_fh; -#ifndef FTDF_LITE -ftdf_security_header ftdf_sh; -ftdf_assoc_admin_t ftdf_aa; -#endif /* !FTDF_LITE */ - -#if dg_configCOEX_ENABLE_CONFIG -/* Packet traffic information used when FTDF is in RX enable. */ -static ftdf_pti_t ftdf_rx_pti __attribute__ ((section(".retention"))); -#endif -static void send_confirm(ftdf_status_t status, ftdf_msg_id_t msg_id); - -void ftdf_reset(int set_default_pib) -{ - if (set_default_pib) { - /* Reset PIB values to their default values */ - memset(&ftdf_pib, 0, sizeof(ftdf_pib)); - - ftdf_pib.ext_address = FTDF_GET_EXT_ADDRESS(); - ftdf_pib.ack_wait_duration = 0x36; -#ifndef FTDF_LITE - ftdf_pib.auto_request = FTDF_TRUE; - ftdf_pib.beacon_order = 15; - ftdf_pib.dsn = ftdf_pib.ext_address & 0xff; - ftdf_pib.bsn = ftdf_pib.ext_address & 0xff; - ftdf_pib.eb_sn = ftdf_pib.ext_address & 0xff; - ftdf_pib.coord_short_address = 0xffff; -#endif /* !FTDF_LITE */ - ftdf_pib.max_be = 5; - ftdf_pib.max_csma_backoffs = 4; - ftdf_pib.max_frame_total_wait_time = 1026; /* see asic_vol v40.100.2.30 PR2540 */ - ftdf_pib.max_frame_retries = 3; - ftdf_pib.min_be = 3; -#ifndef FTDF_LITE - ftdf_pib.lifs_period = 40; - ftdf_pib.sifs_period = 12; -#endif /* !FTDF_LITE */ - ftdf_pib.pan_id = 0xffff; -#ifndef FTDF_LITE - ftdf_pib.response_wait_time = 32; -#endif /* !FTDF_LITE */ - ftdf_pib.short_address = 0xffff; -#ifndef FTDF_LITE - ftdf_pib.superframe_order = 15; - ftdf_pib.timestamp_supported = FTDF_TRUE; - ftdf_pib.transaction_persistence_time = 0x1f4; - ftdf_pib.enh_ack_wait_duration = 0x360; - ftdf_pib.eb_auto_sa = FTDF_AUTO_FULL; -#endif /* !FTDF_LITE */ - ftdf_pib.current_channel = 11; - ftdf_pib.cca_mode = FTDF_CCA_MODE_1; -#ifndef FTDF_LITE - ftdf_pib.max_frame_duration = FTDF_TBD; - ftdf_pib.shr_duration = FTDF_TBD; - ftdf_pib.frame_counter_mode = 4; -#endif /* !FTDF_LITE */ - ftdf_pib.metrics_capable = FTDF_TRUE; -#ifndef FTDF_LITE - ftdf_pib.beacon_auto_respond = FTDF_TRUE; -#endif /* !FTDF_LITE */ - ftdf_pib.performance_metrics.counter_octets = 4; /* 32 bit counters */ -#ifndef FTDF_LITE - ftdf_pib.join_priority = 1; - ftdf_pib.slotframe_table.slotframe_entries = ftdf_slotframe_table; - ftdf_pib.link_table.link_entries = ftdf_link_table; - ftdf_pib.timeslot_template.ts_cca_offset = 1800; - ftdf_pib.timeslot_template.ts_cca = 128; - ftdf_pib.timeslot_template.ts_tx_offset = 2120; - ftdf_pib.timeslot_template.ts_rx_offset = 1020; - ftdf_pib.timeslot_template.ts_rx_ack_delay = 800; - ftdf_pib.timeslot_template.ts_tx_ack_delay = 1000; - ftdf_pib.timeslot_template.ts_rx_wait = 2200; - ftdf_pib.timeslot_template.ts_ack_wait = 400; - ftdf_pib.timeslot_template.ts_rx_tx = 192; - ftdf_pib.timeslot_template.ts_max_ack = 2400; - ftdf_pib.timeslot_template.ts_max_ts = 4256; - ftdf_pib.timeslot_template.ts_timeslot_length = 10000; - ftdf_pib.ts_sync_correct_threshold = 220; - ftdf_pib.hopping_sequence_length = 16; - int i; - for (i = 0; i < FTDF_PTIS; i++) { - ftdf_pib.pti_config.ptis[i] = 0; - } -#ifdef FTDF_NO_CSL - ftdf_pib.le_capable = FTDF_FALSE; -#else - ftdf_pib.le_capable = FTDF_TRUE; -#endif /* FTDF_NO_CSL */ -#ifdef FTDF_NO_TSCH - ftdf_pib.tsch_capable = FTDF_FALSE; -#else - ftdf_pib.tsch_capable = FTDF_TRUE; -#endif /* FTDF_NO_TSCH */ - - int n; - - for (n = 0; n < FTDF_MAX_HOPPING_SEQUENCE_LENGTH; n++) { - ftdf_pib.hopping_sequence_list[n] = n + 11; - } -#endif /* !FTDF_LITE */ - - ftdf_transparent_mode = FTDF_FALSE; -#ifndef FTDF_LITE - ftdf_is_pan_coordinator = FTDF_FALSE; -#endif /* !FTDF_LITE */ - ftdf_lmac_counters.fcs_error_cnt = 0; - ftdf_lmac_counters.tx_std_ack_cnt = 0; - ftdf_lmac_counters.rx_std_ack_cnt = 0; - -#ifndef FTDF_LITE - memset(ftdf_pib.default_key_source, 0xff, 8); -#endif /* !FTDF_LITE */ - ftdf_pib.bo_irq_threshold = FTDF_BO_IRQ_THRESHOLD; - ftdf_pib.link_quality_mode = FTDF_LINK_QUALITY_MODE_RSSI; - } - - ftdf_init_queues(); - - FTDF->FTDF_LMACRESET_REG = REG_MSK(FTDF, FTDF_LMACRESET_REG, LMACRESET_CONTROL) | - REG_MSK(FTDF, FTDF_LMACRESET_REG, LMACRESET_RX) | - REG_MSK(FTDF, FTDF_LMACRESET_REG, LMACRESET_TX) | - REG_MSK(FTDF, FTDF_LMACRESET_REG, LMACRESET_AHB) | - REG_MSK(FTDF, FTDF_LMACRESET_REG, LMACRESET_OREG) | - REG_MSK(FTDF, FTDF_LMACRESET_REG, LMACRESET_TSTIM) | - REG_MSK(FTDF, FTDF_LMACRESET_REG, LMACRESET_SEC) | - REG_MSK(FTDF, FTDF_LMACRESET_REG, LMACRESET_COUNT) | - REG_MSK(FTDF, FTDF_LMACRESET_REG, LMACRESET_TIMCTRL) | - REG_MSK(FTDF, FTDF_LMACRESET_REG, LMACGLOBRESET_COUNT); - - uint32_t wait = 0; - - while (REG_GETF(FTDF, FTDF_LMAC_CONTROL_STATUS_REG, LMACREADY4SLEEP) == 0) { - wait++; - } - - REG_SETF(FTDF, FTDF_WAKEUP_CONTROL_OS_REG, WAKEUPTIMERENABLE_CLEAR, 1); - - while (REG_GETF(FTDF, FTDF_LMAC_CONTROL_STATUS_REG, WAKEUPTIMERENABLESTATUS)) {} - - REG_SETF(FTDF, FTDF_WAKEUP_CONTROL_OS_REG, WAKEUPTIMERENABLE_SET, 1); - - while ((REG_GETF(FTDF, FTDF_LMAC_CONTROL_STATUS_REG, WAKEUPTIMERENABLESTATUS)) == 0) {} - -#ifndef FTDF_LITE - int n; - -#ifndef FTDF_NO_CSL - for (n = 0; n < FTDF_NR_OF_CSL_PEERS; n++) { - ftdf_peer_csl_timing[n].addr = 0xffff; - } - - ftdf_old_le_enabled = FTDF_FALSE; - ftdf_wake_up_enable_le = FTDF_FALSE; - ftdf_send_frame_pending = 0xfffe; -#endif /* FTDF_NO_CSL */ -#endif /* !FTDF_LITE */ - ftdf_tx_in_progress = FTDF_FALSE; - - ftdf_init_cur_time64(); -#ifndef FTDF_NO_TSCH - ftdf_init_tsch_retries(); - ftdf_init_backoff(); -#endif /* FTDF_NO_TSCH */ - -#ifndef FTDF_LITE - for (n = 0; n < FTDF_NR_OF_RX_ADDRS; n++) { - ftdf_rxa[n].addr_mode = FTDF_NO_ADDRESS; - ftdf_rxa[n].dsn_valid = FTDF_FALSE; - ftdf_rxa[n].bsn_valid = FTDF_FALSE; - ftdf_rxa[n].ebsn_valid = FTDF_FALSE; - } - -#ifndef FTDF_NO_TSCH - for (n = 0; n < FTDF_NR_OF_NEIGHBORS; n++) { - ftdf_neighbor_table[n].dst_addr = 0xffff; - } -#endif /* FTDF_NO_TSCH */ -#endif /* !FTDF_LITE */ -#if FTDF_USE_SLEEP_DURING_BACKOFF - ftdf_sdb_fsm_reset(); -#endif /* FTDF_USE_SLEEP_DURING_BACKOFF */ - ftdf_init_lmac(); - -#ifndef FTDF_NO_CSL - ftdf_rz_time = REG_GETF(FTDF, FTDF_SYMBOLTIMESNAPSHOTVAL_REG, SYMBOLTIMESNAPSHOTVAL); -#endif /* FTDF_NO_CSL */ - -#if dg_configUSE_FTDF_DDPHY == 1 - ftdf_ddphy_set(0); -#endif -} - - -#ifndef FTDF_LITE -void ftdf_cleanup_queues(void) -{ - while (!ftdf_is_queue_empty(&ftdf_req_queue)) { - ftdf_msg_buffer_t *request = ftdf_dequeue_req_tail(&ftdf_req_queue); - if (request) { - ad_ftdf_rel_msg_data(request); - } - } - - int n; - for (n = 0; n < FTDF_NR_OF_REQ_BUFFERS; n++) { - while (!ftdf_is_queue_empty(&ftdf_tx_pending_list[n].queue)) { - ftdf_msg_buffer_t *request = ftdf_dequeue_req_tail(&ftdf_tx_pending_list[n].queue); - if (request) { - ad_ftdf_rel_msg_data(request); - } - } - } -} -#endif /* !FTDF_LITE */ - -#ifndef FTDF_PHY_API -void ftdf_process_reset_request(ftdf_reset_request_t *reset_request) -{ -#ifndef FTDF_LITE - ftdf_cleanup_queues(); -#endif - ftdf_reset(reset_request->set_default_pib); - ftdf_reset_confirm_t* resetConfirm = - (ftdf_reset_confirm_t*) FTDF_GET_MSG_BUFFER(sizeof(ftdf_reset_confirm_t)); - - resetConfirm->msg_id = FTDF_RESET_CONFIRM; - resetConfirm->status = FTDF_SUCCESS; - - FTDF_REL_MSG_BUFFER((ftdf_msg_buffer_t*)reset_request); - - FTDF_RCV_MSG((ftdf_msg_buffer_t*)resetConfirm); -} -#endif /* FTDF_PHY_API */ - -void ftdf_init_lmac(void) -{ - ftdf_pib_attribute_t pib_attribute; - - for (pib_attribute = 1; pib_attribute <= FTDF_NR_OF_PIB_ATTRIBUTES; pib_attribute++) { - if (pib_attribute_table.attribute_defs[pib_attribute].setFunc != NULL) { - pib_attribute_table.attribute_defs[pib_attribute].setFunc(); - } - } - - if (ftdf_transparent_mode == FTDF_TRUE) { - ftdf_enable_transparent_mode(FTDF_TRUE, ftdf_transparent_mode_options); - } - -#ifndef FTDF_LITE - if (ftdf_is_pan_coordinator) { - REG_SETF(FTDF, FTDF_GLOB_CONTROL_0_REG, ISPANCOORDINATOR, 1); - } -#endif /* !FTDF_LITE */ - REG_SETF(FTDF, FTDF_LMAC_CONTROL_3_REG, CCAIDLEWAIT, 192); - - FTDF->FTDF_TX_CLEAR_OS_REG = REG_MSK(FTDF, FTDF_TX_CLEAR_OS_REG, TX_FLAG_CLEAR); - - uint32_t phy_params = 0; - REG_SET_FIELD(FTDF, FTDF_PHY_PARAMETERS_2_REG, PHYTXSTARTUP, phy_params, FTDF_PHYTXSTARTUP); - REG_SET_FIELD(FTDF, FTDF_PHY_PARAMETERS_2_REG, PHYTXLATENCY, phy_params, FTDF_PHYTXLATENCY); - REG_SET_FIELD(FTDF, FTDF_PHY_PARAMETERS_2_REG, PHYTXFINISH, phy_params, FTDF_PHYTXFINISH); - REG_SET_FIELD(FTDF, FTDF_PHY_PARAMETERS_2_REG, PHYTRXWAIT, phy_params, FTDF_PHYTRXWAIT); - FTDF->FTDF_PHY_PARAMETERS_2_REG = phy_params; - - phy_params = 0; - REG_SET_FIELD(FTDF, FTDF_PHY_PARAMETERS_3_REG, PHYRXSTARTUP, phy_params, FTDF_PHYRXSTARTUP); - REG_SET_FIELD(FTDF, FTDF_PHY_PARAMETERS_3_REG, PHYRXLATENCY, phy_params, FTDF_PHYRXLATENCY); - REG_SET_FIELD(FTDF, FTDF_PHY_PARAMETERS_3_REG, PHYENABLE, phy_params, FTDF_PHYENABLE); - FTDF->FTDF_PHY_PARAMETERS_3_REG = phy_params; - - - REG_SETF(FTDF, FTDF_FTDF_CM_REG, FTDF_CM, - (FTDF_MSK_TX_CE | FTDF_MSK_RX_CE | FTDF_MSK_SYMBOL_TMR_CE)); - - uint32_t rx_mask = REG_MSK(FTDF, FTDF_RX_MASK_REG, RXSOF_M) | - REG_MSK(FTDF, FTDF_RX_MASK_REG, RX_OVERFLOW_M) | - REG_MSK(FTDF, FTDF_RX_MASK_REG, RX_BUF_AVAIL_M) | - REG_MSK(FTDF, FTDF_RX_MASK_REG, RXBYTE_M); - FTDF->FTDF_RX_MASK_REG = rx_mask; - - FTDF->FTDF_LMAC_MASK_REG = REG_MSK(FTDF, FTDF_LMAC_MASK_REG, RXTIMEREXPIRED_M); - - uint32_t lmac_ctrl_mask = REG_MSK(FTDF, FTDF_LMAC_CONTROL_MASK_REG, SYMBOLTIMETHR_M) | - REG_MSK(FTDF, FTDF_LMAC_CONTROL_MASK_REG, SYMBOLTIME2THR_M) | - REG_MSK(FTDF, FTDF_LMAC_CONTROL_MASK_REG, SYNCTIMESTAMP_M); - FTDF->FTDF_LMAC_CONTROL_MASK_REG = lmac_ctrl_mask; - - FTDF->FTDF_TX_FLAG_CLEAR_M_0_REG |= REG_MSK(FTDF, FTDF_TX_FLAG_CLEAR_M_0_REG, TX_FLAG_CLEAR_M); - FTDF->FTDF_TX_FLAG_CLEAR_M_1_REG |= REG_MSK(FTDF, FTDF_TX_FLAG_CLEAR_M_1_REG, TX_FLAG_CLEAR_M); - -#if FTDF_FP_BIT_MODE == FTDF_FP_BIT_MODE_AUTO - ftdf_fppr_reset(); - ftdf_fppr_set_mode(FTDF_TRUE, FTDF_FALSE, FTDF_FALSE); -#else - ftdf_fppr_set_mode(FTDF_FALSE, FTDF_TRUE, FTDF_TRUE); -#endif /* #if FTDF_FP_BIT_MODE == FTDF_FP_BIT_MODE_AUTO */ -#if FTDF_USE_SLEEP_DURING_BACKOFF - /* Unmask long BO interrupt. */ - REG_SETF(FTDF, FTDF_LMAC_MASK_REG, CSMA_CA_BO_THR_M, 1); -#else /* FTDF_USE_SLEEP_DURING_BACKOFF */ - /* Set BO threshold. */ - REG_SETF(FTDF, FTDF_LMAC_CONTROL_11_REG, CSMA_CA_BO_THRESHOLD, FTDF_BO_IRQ_THRESHOLD); - - /* Mask long BO interrupt. */ - REG_SETF(FTDF, FTDF_LMAC_MASK_REG, CSMA_CA_BO_THR_M, 0); -#endif /* FTDF_USE_SLEEP_DURING_BACKOFF */ -#if FTDF_USE_LPDP == 1 - ftdf_lpdp_enable(FTDF_TRUE); -#endif /* #if FTDF_USE_LPDP == 1 */ -} - -#ifdef FTDF_PHY_API -ftdf_pib_attribute_value_t *ftdf_get_value(ftdf_pib_attribute_t pib_attribute) -{ - - if ((pib_attribute <= FTDF_NR_OF_PIB_ATTRIBUTES) && - (pib_attribute_table.attribute_defs[pib_attribute].addr != NULL)) { - - /* Update PIB attribute with current LMAC status if a getFunc is defined */ - if (pib_attribute_table.attribute_defs[pib_attribute].getFunc != NULL) { - pib_attribute_table.attribute_defs[pib_attribute].getFunc(); - } - - return pib_attribute_table.attribute_defs[pib_attribute].addr; - } - - return NULL; -} - -ftdf_status_t ftdf_set_value(ftdf_pib_attribute_t pib_attribute, const ftdf_pib_attribute_value_t *pib_attribute_value) -{ - if ((pib_attribute <= FTDF_NR_OF_PIB_ATTRIBUTES) && - (pib_attribute_table.attribute_defs[pib_attribute].addr != NULL)) { - - if (pib_attribute_table.attribute_defs[pib_attribute].size != 0) { - memcpy(pib_attribute_table.attribute_defs[pib_attribute].addr, - pib_attribute_value, - pib_attribute_table.attribute_defs[pib_attribute].size); - - /* Update LMAC with new PIB attribute value if a setFunc is defined */ - if (pib_attribute_table.attribute_defs[pib_attribute].setFunc != NULL) { - pib_attribute_table.attribute_defs[pib_attribute].setFunc(); - } - - return FTDF_SUCCESS; - - } else { - return FTDF_READ_ONLY; - } - } - - return FTDF_UNSUPPORTED_ATTRIBUTE; -} - -#else /* FTDF_PHY_API */ -void ftdf_process_get_request(ftdf_get_request_t *get_request) -{ - ftdf_get_confirm_t *get_confirm = - (ftdf_get_confirm_t*) FTDF_GET_MSG_BUFFER(sizeof(ftdf_get_confirm_t)); - ftdf_pib_attribute_t pib_attribute = get_request->pib_attribute; - - get_confirm->msg_id = FTDF_GET_CONFIRM; - get_confirm->pib_attribute = pib_attribute; - - if ((pib_attribute <= FTDF_NR_OF_PIB_ATTRIBUTES) && - (pib_attribute_table.attribute_defs[pib_attribute].addr != NULL)) { - - /* Update PIB attribute with current LMAC status if a getFunc is defined */ - if (pib_attribute_table.attribute_defs[pib_attribute].getFunc != NULL) { - pib_attribute_table.attribute_defs[pib_attribute].getFunc(); - } - - get_confirm->status = FTDF_SUCCESS; - get_confirm->pib_attribute_value = - pib_attribute_table.attribute_defs[pib_attribute].addr; - - } else { - get_confirm->status = FTDF_UNSUPPORTED_ATTRIBUTE; - } - - FTDF_REL_MSG_BUFFER((ftdf_msg_buffer_t*)get_request); - - FTDF_RCV_MSG((ftdf_msg_buffer_t*)get_confirm); -} - -void ftdf_process_set_request(ftdf_set_request_t *set_request) -{ - ftdf_set_confirm_t *set_confirm = - (ftdf_set_confirm_t*) FTDF_GET_MSG_BUFFER(sizeof(ftdf_set_confirm_t)); - ftdf_pib_attribute_t pib_attribute = set_request->pib_attribute; - - set_confirm->msg_id = FTDF_SET_CONFIRM; - set_confirm->pib_attribute = pib_attribute; - - if ((pib_attribute <= FTDF_NR_OF_PIB_ATTRIBUTES) && - (pib_attribute_table.attribute_defs[pib_attribute].addr != NULL)) { - - if (pib_attribute_table.attribute_defs[pib_attribute].size != 0) { - - set_confirm->status = FTDF_SUCCESS; - memcpy(pib_attribute_table.attribute_defs[pib_attribute].addr, - set_request->pib_attribute_value, - pib_attribute_table.attribute_defs[pib_attribute].size); - - /* Update LMAC with new PIB attribute value if a setFunc is defined */ - if (pib_attribute_table.attribute_defs[pib_attribute].setFunc != NULL) { - pib_attribute_table.attribute_defs[pib_attribute].setFunc(); - } - - } else { - set_confirm->status = FTDF_READ_ONLY; - } - - } else { - set_confirm->status = FTDF_UNSUPPORTED_ATTRIBUTE; - } - - FTDF_REL_MSG_BUFFER((ftdf_msg_buffer_t*)set_request); - - FTDF_RCV_MSG((ftdf_msg_buffer_t*)set_confirm); -} - -void ftdf_send_comm_status_indication(ftdf_msg_buffer_t *request, - ftdf_status_t status, - ftdf_pan_id_t pan_id, - ftdf_address_mode_t src_addr_mode, - ftdf_address_t src_addr, - ftdf_address_mode_t dst_addr_mode, - ftdf_address_t dst_addr, - ftdf_security_level_t security_level, - ftdf_key_id_mode_t key_id_mode, - ftdf_octet_t *key_source, - ftdf_key_index_t key_index) -{ - ftdf_comm_status_indication_t *comm_status = - (ftdf_comm_status_indication_t*) FTDF_GET_MSG_BUFFER(sizeof(ftdf_comm_status_indication_t)); - - comm_status->msg_id = FTDF_COMM_STATUS_INDICATION; - comm_status->pan_id = pan_id; - comm_status->src_addr_mode = src_addr_mode; - comm_status->src_addr = src_addr; - comm_status->dst_addr_mode = dst_addr_mode; - comm_status->dst_addr = dst_addr; - comm_status->status = status; - comm_status->security_level = security_level; - comm_status->key_id_mode = key_id_mode; - comm_status->key_index = key_index; - - uint8_t n; - - if (security_level != 0) { - if (key_id_mode == 0x2) { - for (n = 0; n < 4; n++) { - comm_status->key_source[n] = key_source[n]; - } - } else if (key_id_mode == 0x3) { - for (n = 0; n < 8; n++) { - comm_status->key_source[n] = key_source[n]; - } - } - } -#ifndef FTDF_LITE - if (request && ((request->msg_id == FTDF_ORPHAN_RESPONSE) || - (request->msg_id == FTDF_ASSOCIATE_RESPONSE))) { - - if (ftdf_req_current == request) { - ftdf_req_current = NULL; - } - - FTDF_REL_MSG_BUFFER(request); - FTDF_RCV_MSG((ftdf_msg_buffer_t*)comm_status); -#if FTDF_FP_BIT_MODE == FTDF_FP_BIT_MODE_AUTO - ftdf_fp_fsm_clear_pending(); -#endif /* FTDF_FP_BIT_MODE == FTDF_FP_BIT_MODE_AUTO */ - ftdf_process_next_request(); - return; - } -#endif /* !FTDF_LITE */ - FTDF_RCV_MSG((ftdf_msg_buffer_t*)comm_status); -} -#endif /* FTDF_PHY_API */ - -#ifndef FTDF_LITE -ftdf_octet_t* ftdf_add_frame_header(ftdf_octet_t *tx_ptr, - ftdf_frame_header_t *frame_header, - ftdf_data_length_t msdu_length) -{ - uint8_t frame_version; - uint8_t long_frame_control = 0x00; - ftdf_boolean_t pan_id_compression = FTDF_FALSE; - ftdf_bitmap8_t options = frame_header->options; - ftdf_boolean_t secure = options & FTDF_OPT_SECURITY_ENABLED; - ftdf_boolean_t frame_pending = options & FTDF_OPT_FRAME_PENDING; - ftdf_boolean_t ack_tx = options & FTDF_OPT_ACK_REQUESTED; - ftdf_boolean_t pan_id_present = options & FTDF_OPT_PAN_ID_PRESENT; - ftdf_boolean_t seq_nr_suppressed = options & FTDF_OPT_SEQ_NR_SUPPRESSED; - ftdf_boolean_t ies_included = options & FTDF_OPT_IES_PRESENT; - ftdf_frame_type_t frame_type = frame_header->frame_type; - ftdf_address_mode_t dst_addr_mode = frame_header->dst_addr_mode; - ftdf_address_mode_t src_addr_mode = frame_header->src_addr_mode; - ftdf_pan_id_t dstpan_id = frame_header->dst_pan_id; - - if (frame_type == FTDF_MULTIPURPOSE_FRAME) { - - if (options & (FTDF_OPT_SECURITY_ENABLED | FTDF_OPT_ACK_REQUESTED | - FTDF_OPT_PAN_ID_PRESENT | FTDF_OPT_IES_PRESENT | - FTDF_OPT_SEQ_NR_SUPPRESSED | FTDF_OPT_FRAME_PENDING)) { - - long_frame_control = 0x08; - } - - /* Frame control field byte 1 */ - *tx_ptr++ = 0x05 | long_frame_control | dst_addr_mode << 4 | src_addr_mode << 6; - - if (long_frame_control) { - /* Frame control field byte 2 */ - *tx_ptr++ = (pan_id_present ? 0x01 : 0x00) | - (secure ? 0x02 : 0x00) | - (seq_nr_suppressed ? 0x04 : 0x00) | - (frame_pending ? 0x08 : 0x00) | - (ack_tx ? 0x40 : 0x00) | - (ies_included ? 0x80 : 0x00); - } - - } else { - // if (panIdPresent || iesIncluded || seqNrSuppressed || (options & FTDF_OPT_ENHANCED) || ftdf_pib.tsch_enabled) - if (pan_id_present || ies_included || seq_nr_suppressed || (options & FTDF_OPT_ENHANCED)) { - frame_version = 0x02; - } else { - - if (secure || (msdu_length > FTDF_MAX_MAC_SAFE_PAYLOAD_SIZE)) { - frame_version = 0x01; - } else { - frame_version = 0x00; - } - } - - if (frame_version < 0x02) { - if ((dst_addr_mode != FTDF_NO_ADDRESS) && - (src_addr_mode != FTDF_NO_ADDRESS) && - (dstpan_id == frame_header->src_pan_id)) { - - pan_id_compression = FTDF_TRUE; - } - - } else { - pan_id_compression = pan_id_present; - } - - /* Frame control field byte 1 */ - *tx_ptr++ = (frame_type & 0x7) | - (secure ? 0x08 : 0x00) | - (frame_pending ? 0x10 : 0x00) | - (ack_tx ? 0x20 : 0x00) | - (pan_id_compression ? 0x40 : 0x00); - - /* Frame control field byte 2 */ - *tx_ptr++ = (seq_nr_suppressed ? 0x01 : 0x00) | - (ies_included ? 0x02 : 0x00) | - (dst_addr_mode << 2) | - (frame_version << 4) | - (src_addr_mode << 6); - } - - if (!seq_nr_suppressed) { - *tx_ptr++ = frame_header->sn; - } - - ftdf_boolean_t add_dstpan_id = FTDF_FALSE; - - if (frame_type == FTDF_MULTIPURPOSE_FRAME) { - if (pan_id_present) { - add_dstpan_id = FTDF_TRUE; - } - - } else { - - if (frame_version < 0x02) { - if (dst_addr_mode != FTDF_NO_ADDRESS) { - add_dstpan_id = FTDF_TRUE; - } - - } else { - - /* See Table 2a "PAN ID Compression" of IEEE 802.15.4-2011 for more details */ - if (((src_addr_mode == FTDF_NO_ADDRESS) && - (dst_addr_mode == FTDF_NO_ADDRESS) && pan_id_compression) || - ((src_addr_mode == FTDF_NO_ADDRESS) && - (dst_addr_mode != FTDF_NO_ADDRESS && !pan_id_compression)) || - ((src_addr_mode != FTDF_NO_ADDRESS) && - (dst_addr_mode != FTDF_NO_ADDRESS && !pan_id_compression))) { - - add_dstpan_id = FTDF_TRUE; - } - } - } - - if (add_dstpan_id) { - ftdf_octet_t *pan_idPtr = (ftdf_octet_t*)&dstpan_id; - - *tx_ptr++ = *pan_idPtr++; - *tx_ptr++ = *pan_idPtr; - } - - ftdf_address_t dst_addr = frame_header->dst_addr; - - if (dst_addr_mode == FTDF_SIMPLE_ADDRESS) { - *tx_ptr++ = dst_addr.simple_address; - } else if (dst_addr_mode == FTDF_SHORT_ADDRESS) { - ftdf_octet_t* short_address_ptr = (ftdf_octet_t*)&dst_addr.short_address; - - *tx_ptr++ = *short_address_ptr++; - *tx_ptr++ = *short_address_ptr; - } else if (dst_addr_mode == FTDF_EXTENDED_ADDRESS) { - ftdf_octet_t* ext_address_ptr = (ftdf_octet_t*)&dst_addr.ext_address; - int n; - - for (n = 0; n < 8; n++) { - *tx_ptr++ = *ext_address_ptr++; - } - } - - ftdf_boolean_t add_srcpan_id = FTDF_FALSE; - - if (frame_type != FTDF_MULTIPURPOSE_FRAME) { - if (frame_version < 0x02) { - if ((src_addr_mode != FTDF_NO_ADDRESS) && !pan_id_compression) { - add_srcpan_id = FTDF_TRUE; - } - - } else { - - /* See Table 2a "PAN ID Compression" of IEEE 802.15.4-2011 for more details */ - if ((src_addr_mode != FTDF_NO_ADDRESS) && (dst_addr_mode == FTDF_NO_ADDRESS) && - !pan_id_compression) { - - add_srcpan_id = FTDF_TRUE; - } - } - } - - if (add_srcpan_id) { - ftdf_octet_t* pan_idPtr = (ftdf_octet_t*)&frame_header->src_pan_id; - - *tx_ptr++ = *pan_idPtr++; - *tx_ptr++ = *pan_idPtr; - } - - if (src_addr_mode == FTDF_SIMPLE_ADDRESS) { - *tx_ptr++ = ftdf_pib.simple_address; - } - else if (src_addr_mode == FTDF_SHORT_ADDRESS) { - ftdf_octet_t* short_address_ptr = (ftdf_octet_t*)&ftdf_pib.short_address; - - *tx_ptr++ = *short_address_ptr++; - *tx_ptr++ = *short_address_ptr; - } - else if (src_addr_mode == FTDF_EXTENDED_ADDRESS) { - ftdf_octet_t* ext_address_ptr = (ftdf_octet_t*)&ftdf_pib.ext_address; - int n; - - for (n = 0; n < 8; n++) { - *tx_ptr++ = *ext_address_ptr++; - } - } - - return tx_ptr; -} -#endif /* !FTDF_LITE */ - -ftdf_pti_t ftdf_get_rx_pti(void) -{ -#if dg_configCOEX_ENABLE_CONFIG - ftdf_pti_t rx_pti; - ftdf_critical_var(); - ftdf_enter_critical(); - rx_pti = ftdf_rx_pti; - ftdf_exit_critical(); - - return rx_pti; -#else - return 0; -#endif -} - -#ifdef FTDF_PHY_API -void ftdf_rx_enable(ftdf_time_t rx_on_duration) -{ -#if dg_configCOEX_ENABLE_CONFIG && !FTDF_USE_AUTO_PTI - /* We do not force decision here. It will be automatically made when FTDF begins - * transaction. - */ - hw_coex_update_ftdf_pti((hw_coex_pti_t) ftdf_get_rx_pti(), NULL, false); -#endif - - ftdf_set_link_quality_mode(); - - REG_SETF(FTDF, FTDF_LMAC_CONTROL_OS_REG, RXENABLE, 0); - REG_SETF(FTDF, FTDF_LMAC_CONTROL_0_REG, RXONDURATION, rx_on_duration); - REG_SETF(FTDF, FTDF_LMAC_CONTROL_OS_REG, RXENABLE, 1); -} -#else -void ftdf_process_rx_enable_request(ftdf_rx_enable_request_t *rx_enable_request) -{ - ftdf_set_link_quality_mode(); - - REG_SETF(FTDF, FTDF_LMAC_CONTROL_OS_REG, RXENABLE, 0); - REG_SETF(FTDF, FTDF_LMAC_CONTROL_0_REG, RXONDURATION, rx_enable_request->rx_on_duration); - REG_SETF(FTDF, FTDF_LMAC_CONTROL_OS_REG, RXENABLE, 1); - - ftdf_rx_enable_confirm_t *rx_enable_confirm = - (ftdf_rx_enable_confirm_t *) FTDF_GET_MSG_BUFFER(sizeof(ftdf_rx_enable_confirm_t)); - - rx_enable_confirm->msg_id = FTDF_RX_ENABLE_CONFIRM; - rx_enable_confirm->status = FTDF_SUCCESS; - - FTDF_REL_MSG_BUFFER((ftdf_msg_buffer_t *)rx_enable_request); - FTDF_RCV_MSG((ftdf_msg_buffer_t *)rx_enable_confirm); -} -#endif /* FTDF_PHY_API */ - -ftdf_octet_t *ftdf_get_frame_header(ftdf_octet_t *rx_buffer, - ftdf_frame_header_t* frame_header) -{ - ftdf_frame_type_t frame_type = *rx_buffer & 0x07; - uint8_t frame_version = 0x00; - ftdf_bitmap8_t options = 0; - ftdf_address_mode_t dst_addr_mode; - ftdf_address_mode_t src_addr_mode; - ftdf_boolean_t pan_id_compression = FTDF_FALSE; - ftdf_boolean_t pan_id_present = FTDF_FALSE; - - if (frame_type == FTDF_MULTIPURPOSE_FRAME) { - dst_addr_mode = (*rx_buffer & 0x30) >> 4; - src_addr_mode = (*rx_buffer & 0xc0) >> 6; - - /* Check Long Frame Control */ - if (*rx_buffer & 0x08) { - rx_buffer++; - - pan_id_present = *rx_buffer & 0x01; - - if (*rx_buffer & 0x02) { - options |= FTDF_OPT_SECURITY_ENABLED; - } - - if (*rx_buffer & 0x04) { - options |= FTDF_OPT_SEQ_NR_SUPPRESSED; - } - - if (*rx_buffer & 0x08) { - options |= FTDF_OPT_FRAME_PENDING; - } - - if (*rx_buffer & 0x40) { - options |= FTDF_OPT_ACK_REQUESTED; - } - - if (*rx_buffer & 0x80) { - options |= FTDF_OPT_IES_PRESENT; - } - - frame_version = 0x00; - - frame_header->frame_version = FTDF_FRAME_VERSION_E; - - rx_buffer++; - } else { - rx_buffer++; - } - - } else { - - if (*rx_buffer & 0x08) { - options |= FTDF_OPT_SECURITY_ENABLED; - } - - if (*rx_buffer & 0x10) { - options |= FTDF_OPT_FRAME_PENDING; - } - - if (*rx_buffer & 0x20) { - options |= FTDF_OPT_ACK_REQUESTED; - } - - pan_id_compression = *rx_buffer & 0x40; - - rx_buffer++; - - frame_version = (*rx_buffer & 0x30) >> 4; - - if (frame_version == 0x02) { - if (*rx_buffer & 0x01) { - options |= FTDF_OPT_SEQ_NR_SUPPRESSED; - } - - if (*rx_buffer & 0x02) { - options |= FTDF_OPT_IES_PRESENT; - } - - frame_header->frame_version = FTDF_FRAME_VERSION_E; - } else if (frame_version == 0x01) { - frame_header->frame_version = FTDF_FRAME_VERSION_2011; - } else if (frame_version == 0x00) { - frame_header->frame_version = FTDF_FRAME_VERSION_2003; - } else { - frame_header->frame_version = FTDF_FRAME_VERSION_NOT_SUPPORTED; - return rx_buffer; - } - - dst_addr_mode = (*rx_buffer & 0x0c) >> 2; - src_addr_mode = (*rx_buffer & 0xc0) >> 6; - - rx_buffer++; - } - - if ((options & FTDF_OPT_SEQ_NR_SUPPRESSED) == 0) { - frame_header->sn = *rx_buffer++; - } - - ftdf_boolean_t has_dstpan_id = FTDF_FALSE; - - if (frame_type == FTDF_MULTIPURPOSE_FRAME) { - has_dstpan_id = pan_id_present; - } else { - - if (frame_version < 0x02) { - if (dst_addr_mode != FTDF_NO_ADDRESS) { - has_dstpan_id = FTDF_TRUE; - } - - } else { - - if (((src_addr_mode == FTDF_NO_ADDRESS) && - (dst_addr_mode == FTDF_NO_ADDRESS) && pan_id_compression) || - ((src_addr_mode == FTDF_NO_ADDRESS) && - (dst_addr_mode != FTDF_NO_ADDRESS) && !pan_id_compression) || - ((src_addr_mode != FTDF_NO_ADDRESS) && - (dst_addr_mode != FTDF_NO_ADDRESS) && !pan_id_compression)) { - - has_dstpan_id = FTDF_TRUE; - } - } - } - - if (has_dstpan_id) { - ftdf_octet_t *pan_id_ptr = (ftdf_octet_t*)&frame_header->dst_pan_id; - - *pan_id_ptr++ = *rx_buffer++; - *pan_id_ptr = *rx_buffer++; - } - - if (dst_addr_mode == FTDF_SIMPLE_ADDRESS) { - frame_header->dst_addr.simple_address = *rx_buffer++; - } else if (dst_addr_mode == FTDF_SHORT_ADDRESS) { - ftdf_octet_t *short_address_ptr = (ftdf_octet_t*)&frame_header->dst_addr.short_address; - - *short_address_ptr++ = *rx_buffer++; - *short_address_ptr = *rx_buffer++; - } else if (dst_addr_mode == FTDF_EXTENDED_ADDRESS) { - ftdf_octet_t *ext_address_ptr = (ftdf_octet_t*)&frame_header->dst_addr.ext_address; - int n; - - for (n = 0; n < 8; n++) { - *ext_address_ptr++ = *rx_buffer++; - } - } - - ftdf_boolean_t has_srcpan_id = FTDF_FALSE; - - if (frame_version < 0x02 && frame_type != FTDF_MULTIPURPOSE_FRAME) { - if (src_addr_mode != FTDF_NO_ADDRESS && !pan_id_compression) { - has_srcpan_id = FTDF_TRUE; - } - - } else { - - if ((src_addr_mode != FTDF_NO_ADDRESS) && (dst_addr_mode == FTDF_NO_ADDRESS) && - !pan_id_compression) { - - has_srcpan_id = FTDF_TRUE; - } - } - - if (has_srcpan_id) { - ftdf_octet_t *pan_id_ptr = (ftdf_octet_t*)&frame_header->src_pan_id; - - *pan_id_ptr++ = *rx_buffer++; - *pan_id_ptr = *rx_buffer++; - } else { - frame_header->src_pan_id = frame_header->dst_pan_id; - } - - if (src_addr_mode == FTDF_SIMPLE_ADDRESS) { - frame_header->src_addr.simple_address = *rx_buffer++; - } else if (src_addr_mode == FTDF_SHORT_ADDRESS) { - ftdf_octet_t *short_address_ptr = - (ftdf_octet_t*)&frame_header->src_addr.short_address; - - *short_address_ptr++ = *rx_buffer++; - *short_address_ptr = *rx_buffer++; - } else if (src_addr_mode == FTDF_EXTENDED_ADDRESS) { - ftdf_octet_t* ext_address_ptr = (ftdf_octet_t*)&frame_header->src_addr.ext_address; - int n; - - for (n = 0; n < 8; n++) { - *ext_address_ptr++ = *rx_buffer++; - } - } - - frame_header->frame_type = frame_type; - frame_header->options = options; - frame_header->dst_addr_mode = dst_addr_mode; - frame_header->src_addr_mode = src_addr_mode; - - return rx_buffer; -} - -#ifndef FTDF_LITE -void ftdf_process_next_request(void) -{ -#ifndef FTDF_NO_TSCH - if (ftdf_pib.tsch_enabled) { - ftdf_msg_buffer_t *request = ftdf_tsch_get_pending(ftdf_tsch_slot_link->request); - - ftdf_tsch_slot_link->request = NULL; - - ftdf_schedule_tsch(request); - - return; - } -#endif /* FTDF_NO_TSCH */ - - while (ftdf_req_current == NULL) { - ftdf_msg_buffer_t *request = ftdf_dequeue_req_tail(&ftdf_req_queue); - - if (request) { - ftdf_process_request(request); - } else { - break; - } - } -} -#endif /* !FTDF_LITE */ - -static void process_rx_frame(int read_buf) -{ - static ftdf_pan_descriptor_t pan_descriptor; - static ftdf_address_t pend_addr_list[7]; - - ftdf_frame_header_t *frame_header = &ftdf_fh; -#ifndef FTDF_LITE - ftdf_security_header *security_header = &ftdf_sh; -#endif /* !FTDF_LITE */ - - uint8_t pend_addr_spec = 0; - - ftdf_octet_t *rx_buffer = - (ftdf_octet_t*) (&FTDF->FTDF_RX_FIFO_0_0_REG) + (read_buf * FTDF_BUFFER_LENGTH); - ftdf_octet_t *rx_ptr = rx_buffer; - ftdf_data_length_t frameLen = *rx_ptr++; - - if (ftdf_transparent_mode) { - if (ftdf_pib.metrics_enabled) { - ftdf_pib.performance_metrics.rx_success_count++; - } - - uint32_t rx_meta_1 = 0; - - ftdf_bitmap32_t status = FTDF_TRANSPARENT_RCV_SUCCESSFUL; - - switch (read_buf) { - case 0: - rx_meta_1 = FTDF->FTDF_RX_META_1_0_REG; - break; - case 1: - rx_meta_1 = FTDF->FTDF_RX_META_1_1_REG; - break; - case 2: - rx_meta_1 = FTDF->FTDF_RX_META_1_2_REG; - break; - case 3: - rx_meta_1 = FTDF->FTDF_RX_META_1_3_REG; - break; - case 4: - rx_meta_1 = FTDF->FTDF_RX_META_1_4_REG; - break; - case 5: - rx_meta_1 = FTDF->FTDF_RX_META_1_5_REG; - break; - case 6: - rx_meta_1 = FTDF->FTDF_RX_META_1_6_REG; - break; - case 7: - rx_meta_1 = FTDF->FTDF_RX_META_1_7_REG; - break; - default: - OS_ASSERT(0); - } - - status |= rx_meta_1 & REG_MSK(FTDF, FTDF_RX_META_1_0_REG, CRC16_ERROR) ? - FTDF_TRANSPARENT_RCV_CRC_ERROR : 0; - status |= rx_meta_1 & REG_MSK(FTDF, FTDF_RX_META_1_0_REG, RES_FRM_TYPE_ERROR) ? - FTDF_TRANSPARENT_RCV_RES_FRAMETYPE : 0; - status |= rx_meta_1 & REG_MSK(FTDF, FTDF_RX_META_1_0_REG, RES_FRM_VERSION_ERROR) ? - FTDF_TRANSPARENT_RCV_RES_FRAME_VERSION : 0; - status |= rx_meta_1 & REG_MSK(FTDF, FTDF_RX_META_1_0_REG, DPANID_ERROR) ? - FTDF_TRANSPARENT_RCV_UNEXP_DST_PAN_ID : 0; - status |= rx_meta_1 & REG_MSK(FTDF, FTDF_RX_META_1_0_REG, DADDR_ERROR) ? - FTDF_TRANSPARENT_RCV_UNEXP_DST_ADDR : 0; - -#ifdef FTDF_PASS_ACK_FRAME - FTDF_RCV_FRAME_TRANSPARENT(frameLen, rx_ptr, status, - REG_GET_FIELD(FTDF, FTDF_RX_META_1_0_REG, QUALITY_INDICATOR, rx_meta_1)); -#endif /* FTDF_PASS_ACK_FRAME */ - -#if FTDF_TRANSPARENT_USE_WAIT_FOR_ACK - if ((ftdf_transparent_mode_options & FTDF_TRANSPARENT_WAIT_FOR_ACK)) { - - ftdf_get_frame_header(rx_ptr, frame_header); - - if ((frame_header->frame_type == FTDF_ACKNOWLEDGEMENT_FRAME) && - (status == FTDF_TRANSPARENT_RCV_SUCCESSFUL)) { - -#ifndef FTDF_PHY_API - while (REG_GETF(FTDF, FTDF_TX_FLAG_S_0_REG, TX_FLAG_STAT)) {} - - /* It is required to call FTDF_processTxEvent here because an RX ack - * generates two events. The RX event is raised first, then after - * an IFS the TX event is raised. However, the ftdf_process_next_request - * requires that both events have been handled. */ - ftdf_process_tx_event(); -#endif /* !FTDF_PHY_API */ - - ftdf_sn_t SN = REG_GETF(FTDF, FTDF_TX_META_DATA_1_0_REG, MACSN); - -#ifdef FTDF_PHY_API - ftdf_critical_var(); - ftdf_enter_critical(); - if (ftdf_tx_in_progress && (frame_header->sn == SN)) { - ftdf_exit_critical(); - return; - } - - ftdf_exit_critical(); -#else - if (ftdf_req_current && (frame_header->sn == SN)) { - - ftdf_transparent_request_t *transparent_request = - (ftdf_transparent_request_t*)ftdf_req_current; - - ftdf_critical_var(); - ftdf_enter_critical(); - ftdf_req_current = NULL; - ftdf_exit_critical(); - FTDF_SEND_FRAME_TRANSPARENT_CONFIRM(transparent_request->handle, - FTDF_TRANSPARENT_SEND_SUCCESSFUL); - - FTDF_REL_MSG_BUFFER((ftdf_msg_buffer_t *)transparent_request); - - return; - } -#endif /* FTDF_PHY_API */ - } - } -#endif /* FTDF_TRANSPARENT_USE_WAIT_FOR_ACK */ -#ifndef FTDF_PASS_ACK_FRAME - FTDF_RCV_FRAME_TRANSPARENT(frameLen, rx_ptr, status, - REG_GET_FIELD(FTDF, FTDF_RX_META_1_0_REG, QUALITY_INDICATOR, rx_meta_1)); -#endif /* !FTDF_PASS_ACK_FRAME */ - - return; - } - -#ifndef FTDF_LITE - rx_ptr = ftdf_get_frame_header(rx_ptr, frame_header); - -#if FTDF_FP_BIT_MODE == FTDF_FP_BIT_MODE_MANUAL - if (frame_header->options & FTDF_OPT_ACK_REQUESTED) { - int n; - ftdf_boolean_t address_found = FTDF_FALSE; - for (n = 0; n < FTDF_NR_OF_REQ_BUFFERS; n++) { - if (ftdf_tx_pending_list[n].addr_mode == frame_header->src_addr_mode && - ftdf_tx_pending_list[n].pan_id == frame_header->src_pan_id) { - if (frame_header->src_addr_mode == FTDF_SHORT_ADDRESS) { - if (ftdf_tx_pending_list[n].addr.short_address == frame_header->src_addr.short_address) { - address_found = FTDF_TRUE; - break; - } - } else if (frame_header->src_addr_mode == FTDF_EXTENDED_ADDRESS) { - if (ftdf_tx_pending_list[n].addr.ext_address == frame_header->src_addr.ext_address) { - address_found = FTDF_TRUE; - break; - } - } else { - // Invalid srcAddrMode - return; - } - } - } - if (address_found) { - ftdf_fppr_set_mode(FTDF_FALSE, FTDF_TRUE, FTDF_TRUE); - } else { - ftdf_fppr_set_mode(FTDF_FALSE, FTDF_TRUE, FTDF_FALSE); - } - } -#endif - - if (frame_header->frame_version == FTDF_FRAME_VERSION_NOT_SUPPORTED) { - return; - } -#if defined(FTDF_NO_CSL) && defined(FTDF_NO_TSCH) - else if ((frame_header->frame_version == FTDF_FRAME_VERSION_E) || - (frame_header->frame_type == FTDF_MULTIPURPOSE_FRAME)) { - - return; - } -#endif /* FTDF_NO_CSL && FTDF_NO_TSCH */ - - ftdf_frame_type_t frame_type = frame_header->frame_type; - ftdf_boolean_t duplicate = FTDF_FALSE; - - if (((frame_header->options & FTDF_OPT_SEQ_NR_SUPPRESSED) == 0) && - (frame_header->src_addr_mode != FTDF_NO_ADDRESS)) { - - ftdf_time_t timestamp; - ftdf_sn_sel sn_sel = FTDF_SN_SEL_DSN; - ftdf_boolean_t drop; - - switch(read_buf) { - case 0: - timestamp = REG_GETF(FTDF, FTDF_RX_META_0_0_REG, RX_TIMESTAMP); - break; - case 1: - timestamp = REG_GETF(FTDF, FTDF_RX_META_0_1_REG, RX_TIMESTAMP); - break; - case 2: - timestamp = REG_GETF(FTDF, FTDF_RX_META_0_2_REG, RX_TIMESTAMP); - break; - case 3: - timestamp = REG_GETF(FTDF, FTDF_RX_META_0_3_REG, RX_TIMESTAMP); - break; - case 4: - timestamp = REG_GETF(FTDF, FTDF_RX_META_0_4_REG, RX_TIMESTAMP); - break; - case 5: - timestamp = REG_GETF(FTDF, FTDF_RX_META_0_5_REG, RX_TIMESTAMP); - break; - case 6: - timestamp = REG_GETF(FTDF, FTDF_RX_META_0_6_REG, RX_TIMESTAMP); - break; - case 7: - timestamp = REG_GETF(FTDF, FTDF_RX_META_0_7_REG, RX_TIMESTAMP); - break; - default: - OS_ASSERT(0); - } - - if ((ftdf_pib.tsch_enabled || (frame_header->frame_version == FTDF_FRAME_VERSION_E)) && - (frame_header->options & FTDF_OPT_ACK_REQUESTED)) { - - drop = FTDF_FALSE; - } else { - drop = FTDF_TRUE; - } - - if (frame_type == FTDF_BEACON_FRAME) { - sn_sel = (frame_header->frame_version == FTDF_FRAME_VERSION_E) ? - FTDF_SN_SEL_EBSN : FTDF_SN_SEL_BSN; - } - - uint8_t i; - - for (i = 0; i < FTDF_NR_OF_RX_ADDRS; i++) { - - /* Check if entry is empty or matches */ - if ((ftdf_rxa[i].addr_mode == FTDF_NO_ADDRESS) || - ((ftdf_rxa[i].addr_mode == frame_header->src_addr_mode) && - (((frame_header->src_addr_mode == FTDF_SHORT_ADDRESS) && - (frame_header->src_addr.short_address == ftdf_rxa[i].addr.short_address)) || - ((frame_header->src_addr_mode == FTDF_EXTENDED_ADDRESS) && - (frame_header->src_addr.ext_address == ftdf_rxa[i].addr.ext_address))))) { - - break; - } - } - - if (i < FTDF_NR_OF_RX_ADDRS) { - if (ftdf_rxa[i].addr_mode != FTDF_NO_ADDRESS) { - switch (sn_sel) { - case FTDF_SN_SEL_DSN: - - if (ftdf_rxa[i].dsn_valid == FTDF_TRUE) { - if (frame_header->sn == ftdf_rxa[i].dsn) { - if (ftdf_pib.metrics_enabled) { - ftdf_pib.performance_metrics.duplicate_frame_count++; - } - - if (drop) { - return; - } - - duplicate = FTDF_TRUE; - } - } else { - ftdf_rxa[i].dsn_valid = FTDF_TRUE; - } - - ftdf_rxa[i].dsn = frame_header->sn; - break; - case FTDF_SN_SEL_BSN: - - if (ftdf_rxa[i].bsn_valid == FTDF_TRUE) { - if (frame_header->sn == ftdf_rxa[i].bsn) { - if (ftdf_pib.metrics_enabled) { - ftdf_pib.performance_metrics.duplicate_frame_count++; - } - - if (drop) { - return; - } - - duplicate = FTDF_TRUE; - } - } else { - ftdf_rxa[i].bsn_valid = FTDF_TRUE; - } - - ftdf_rxa[i].bsn = frame_header->sn; - break; - case FTDF_SN_SEL_EBSN: - - if (ftdf_rxa[i].ebsn_valid == FTDF_TRUE) { - if (frame_header->sn == ftdf_rxa[i].eb_sn) { - if (ftdf_pib.metrics_enabled) { - ftdf_pib.performance_metrics.duplicate_frame_count++; - } - - if (drop) { - return; - } - - duplicate = FTDF_TRUE; - } - } else { - ftdf_rxa[i].ebsn_valid = FTDF_TRUE; - } - - ftdf_rxa[i].eb_sn = frame_header->sn; - break; - } - } else { - ftdf_rxa[i].addr_mode = frame_header->src_addr_mode; - ftdf_rxa[i].addr = frame_header->src_addr; - - switch (sn_sel) { - case FTDF_SN_SEL_DSN: - ftdf_rxa[i].dsn_valid = FTDF_TRUE; - ftdf_rxa[i].dsn = frame_header->sn; - break; - case FTDF_SN_SEL_BSN: - ftdf_rxa[i].bsn_valid = FTDF_TRUE; - ftdf_rxa[i].bsn = frame_header->sn; - break; - case FTDF_SN_SEL_EBSN: - ftdf_rxa[i].ebsn_valid = FTDF_TRUE; - ftdf_rxa[i].eb_sn = frame_header->sn; - break; - } - } - - ftdf_rxa[i].timestamp = timestamp; - } else { - /* find oldest entry and overwrite it */ - ftdf_time_t cur_time = - REG_GETF(FTDF, FTDF_SYMBOLTIMESNAPSHOTVAL_REG, SYMBOLTIMESNAPSHOTVAL); - ftdf_time_t delta, greatest_delta = 0; - uint8_t entry = 0; - - for (i = 0; i < FTDF_NR_OF_RX_ADDRS; i++) { - delta = cur_time - ftdf_rxa[i].timestamp; - - if (delta > greatest_delta) { - greatest_delta = delta; - entry = i; - } - } - - ftdf_rxa[entry].addr_mode = frame_header->src_addr_mode; - ftdf_rxa[entry].addr = frame_header->src_addr; - - switch (sn_sel) { - case FTDF_SN_SEL_DSN: - ftdf_rxa[entry].bsn_valid = FTDF_FALSE; - ftdf_rxa[entry].ebsn_valid = FTDF_FALSE; - ftdf_rxa[entry].dsn_valid = FTDF_TRUE; - ftdf_rxa[entry].dsn = frame_header->sn; - break; - case FTDF_SN_SEL_BSN: - ftdf_rxa[entry].dsn_valid = FTDF_FALSE; - ftdf_rxa[entry].ebsn_valid = FTDF_FALSE; - ftdf_rxa[entry].bsn_valid = FTDF_TRUE; - ftdf_rxa[entry].bsn = frame_header->sn; - break; - case FTDF_SN_SEL_EBSN: - ftdf_rxa[entry].dsn_valid = FTDF_FALSE; - ftdf_rxa[entry].bsn_valid = FTDF_FALSE; - ftdf_rxa[entry].ebsn_valid = FTDF_TRUE; - ftdf_rxa[entry].eb_sn = frame_header->sn; - break; - } - } - } - - if (frame_header->options & FTDF_OPT_SECURITY_ENABLED) { - rx_ptr = ftdf_get_security_header(rx_ptr, frame_header->frame_version, security_header); - } else { - security_header->security_level = 0; - security_header->key_id_mode = 0; - } - - ftdf_ie_list_t* header_ie_list = NULL; - ftdf_ie_list_t* payload_ie_list = NULL; - int mic_length = ftdf_get_mic_length(security_header->security_level); - -#if !defined(FTDF_NO_CSL) || !defined(FTDF_NO_TSCH) - if (frame_header->options & FTDF_OPT_IES_PRESENT) { - rx_ptr = ftdf_get_ies(rx_ptr, rx_buffer + (frameLen - mic_length - FTDF_FCS_LENGTH), - &header_ie_list, &payload_ie_list); - } -#endif /* !FTDF_NO_CSL || !FTDF_NO_TSCH */ - - /* Get start of private data (needed to unsecure a frame) */ - if (frame_type == FTDF_MAC_COMMAND_FRAME) { - - frame_header->command_frame_id = *rx_ptr++; - - } else if (frame_type == FTDF_BEACON_FRAME) { - - pan_descriptor.coord_addr_mode = frame_header->src_addr_mode; - pan_descriptor.coord_pan_id = frame_header->src_pan_id; - pan_descriptor.coord_addr = frame_header->src_addr; - pan_descriptor.channel_number = REG_GETF(FTDF, FTDF_LMAC_CONTROL_1_REG, PHYRXATTR_CN) + 11; - pan_descriptor.channel_page = 0; - - switch (read_buf) { - case 0: - pan_descriptor.timestamp = REG_GETF(FTDF, FTDF_RX_META_0_0_REG, RX_TIMESTAMP); - pan_descriptor.link_quality = REG_GETF(FTDF, FTDF_RX_META_1_0_REG, QUALITY_INDICATOR); - break; - case 1: - pan_descriptor.timestamp = REG_GETF(FTDF, FTDF_RX_META_0_1_REG, RX_TIMESTAMP); - pan_descriptor.link_quality = REG_GETF(FTDF, FTDF_RX_META_1_1_REG, QUALITY_INDICATOR); - break; - case 2: - pan_descriptor.timestamp = REG_GETF(FTDF, FTDF_RX_META_0_2_REG, RX_TIMESTAMP); - pan_descriptor.link_quality = REG_GETF(FTDF, FTDF_RX_META_1_2_REG, QUALITY_INDICATOR); - break; - case 3: - pan_descriptor.timestamp = REG_GETF(FTDF, FTDF_RX_META_0_3_REG, RX_TIMESTAMP); - pan_descriptor.link_quality = REG_GETF(FTDF, FTDF_RX_META_1_3_REG, QUALITY_INDICATOR); - break; - case 4: - pan_descriptor.timestamp = REG_GETF(FTDF, FTDF_RX_META_0_4_REG, RX_TIMESTAMP); - pan_descriptor.link_quality = REG_GETF(FTDF, FTDF_RX_META_1_4_REG, QUALITY_INDICATOR); - break; - case 5: - pan_descriptor.timestamp = REG_GETF(FTDF, FTDF_RX_META_0_5_REG, RX_TIMESTAMP); - pan_descriptor.link_quality = REG_GETF(FTDF, FTDF_RX_META_1_5_REG, QUALITY_INDICATOR); - break; - case 6: - pan_descriptor.timestamp = REG_GETF(FTDF, FTDF_RX_META_0_6_REG, RX_TIMESTAMP); - pan_descriptor.link_quality = REG_GETF(FTDF, FTDF_RX_META_1_6_REG, QUALITY_INDICATOR); - break; - case 7: - pan_descriptor.timestamp = REG_GETF(FTDF, FTDF_RX_META_0_7_REG, RX_TIMESTAMP); - pan_descriptor.link_quality = REG_GETF(FTDF, FTDF_RX_META_1_7_REG, QUALITY_INDICATOR); - break; - default: - /* Unsupported register index occurred */ - OS_ASSERT(0); - } - - ftdf_octet_t* superframe_spec_ptr = (ftdf_octet_t*)&pan_descriptor.superframe_spec; - *superframe_spec_ptr++ = *rx_ptr++; - *superframe_spec_ptr = *rx_ptr++; - - uint8_t gts_spec = *rx_ptr++; - - pan_descriptor.gts_permit = (gts_spec & 0x08) ? FTDF_TRUE : FTDF_FALSE; - uint8_t gts_descr_count = gts_spec & 0x7; - - if (gts_descr_count != 0) { - /* GTS is not supported, so just skip the GTS direction and GTS list - * fields if present */ - rx_ptr += (1 + (3 * gts_descr_count)); - } - - pend_addr_spec = *rx_ptr++; - uint8_t nr_of_short_addrs = pend_addr_spec & 0x07; - uint8_t nr_of_ext_addrs = (pend_addr_spec & 0x70) >> 4; - - int n; - - for (n = 0; n < (nr_of_short_addrs + nr_of_ext_addrs); n++) { - if (n < nr_of_short_addrs) { - - ftdf_octet_t* short_address_ptr = - (ftdf_octet_t*)&pend_addr_list[n].short_address; - *short_address_ptr++ = *rx_buffer++; - *short_address_ptr = *rx_buffer++; - - } else { - - ftdf_octet_t* ext_address_ptr = - (ftdf_octet_t*)&pend_addr_list[n].ext_address; - int m; - - for (m = 0; m < 8; m++) { - *ext_address_ptr++ = *rx_buffer++; - } - } - } - } else if ((frame_type == FTDF_ACKNOWLEDGEMENT_FRAME) && - (security_header->security_level != 0)) { - - if (ftdf_req_current) { - switch (ftdf_req_current->msg_id) { - case FTDF_DATA_REQUEST: - { - ftdf_data_request_t *data_request = - (ftdf_data_request_t*)ftdf_req_current; - - frame_header->src_pan_id = data_request->dst_pan_id; - frame_header->src_addr_mode = data_request->dst_addr_mode; - frame_header->src_addr = data_request->dst_addr; - break; - } - case FTDF_POLL_REQUEST: - { - ftdf_poll_request_t *poll_request = - (ftdf_poll_request_t*)ftdf_req_current; - - frame_header->src_pan_id = poll_request->coord_pan_id; - frame_header->src_addr_mode = poll_request->coord_addr_mode; - frame_header->src_addr = poll_request->coord_addr; - break; - } - case FTDF_ASSOCIATE_REQUEST: - { - ftdf_associate_request_t *associate_request = - (ftdf_associate_request_t*)ftdf_req_current; - - frame_header->src_pan_id = associate_request->coord_pan_id; - frame_header->src_addr_mode = associate_request->coord_addr_mode; - frame_header->src_addr = associate_request->coord_addr; - break; - } - case FTDF_DISASSOCIATE_REQUEST: - { - ftdf_disassociate_request_t *disassociate_request = - (ftdf_disassociate_request_t*)ftdf_req_current; - - frame_header->src_pan_id = disassociate_request->device_pan_id; - frame_header->src_addr_mode = - disassociate_request->device_addr_mode; - frame_header->src_addr = disassociate_request->device_address; - break; - } - case FTDF_ASSOCIATE_RESPONSE: - { - ftdf_associate_response_t *associate_response = - (ftdf_associate_response_t*)ftdf_req_current; - - frame_header->src_addr_mode = FTDF_EXTENDED_ADDRESS; - frame_header->src_addr.ext_address = - associate_response->device_address; - break; - } - } - } - } - - ftdf_status_t status = ftdf_unsecure_frame(rx_buffer, rx_ptr, frame_header, security_header); - - if (status != FTDF_SUCCESS) { - if (ftdf_pib.metrics_enabled) { - ftdf_pib.performance_metrics.security_failure_count++; - } - - FTDF_REL_DATA_BUFFER((ftdf_octet_t*)payload_ie_list); - - /* Since unsecure of acknowledgement frame is always successful, - * nothing special has to be done to get the address information correct. */ - ftdf_send_comm_status_indication(ftdf_req_current, status, - ftdf_pib.pan_id, - frame_header->src_addr_mode, - frame_header->src_addr, - frame_header->dst_addr_mode, - frame_header->dst_addr, - security_header->security_level, - security_header->key_id_mode, - security_header->key_source, - security_header->key_index); - - if ((frame_type == FTDF_ACKNOWLEDGEMENT_FRAME) && ftdf_req_current) { - - send_confirm(FTDF_NO_ACK, ftdf_req_current->msg_id); - - ftdf_process_next_request(); - } - - return; - } - - if (ftdf_pib.metrics_enabled && frame_type != FTDF_ACKNOWLEDGEMENT_FRAME) { - ftdf_pib.performance_metrics.rx_success_count++; - } - -#ifndef FTDF_NO_TSCH - if (ftdf_pib.tsch_enabled && frame_type != FTDF_ACKNOWLEDGEMENT_FRAME) { - ftdf_time_t timestamp; - - switch (read_buf) { - case 0: - timestamp = REG_GETF(FTDF, FTDF_RX_META_0_0_REG, RX_TIMESTAMP); - break; - case 1: - timestamp = REG_GETF(FTDF, FTDF_RX_META_0_1_REG, RX_TIMESTAMP); - break; - case 2: - timestamp = REG_GETF(FTDF, FTDF_RX_META_0_2_REG, RX_TIMESTAMP); - break; - case 3: - timestamp = REG_GETF(FTDF, FTDF_RX_META_0_3_REG, RX_TIMESTAMP); - break; - case 4: - timestamp = REG_GETF(FTDF, FTDF_RX_META_0_4_REG, RX_TIMESTAMP); - break; - case 5: - timestamp = REG_GETF(FTDF, FTDF_RX_META_0_5_REG, RX_TIMESTAMP); - break; - case 6: - timestamp = REG_GETF(FTDF, FTDF_RX_META_0_6_REG, RX_TIMESTAMP); - break; - case 7: - timestamp = REG_GETF(FTDF, FTDF_RX_META_0_7_REG, RX_TIMESTAMP); - break; - default: - /* Unsupported register index occurred */ - OS_ASSERT(0); - } - - ftdf_correct_slot_time(timestamp); - } -#endif /* FTDF_NO_TSCH */ - - switch (frame_type) { - case FTDF_ACKNOWLEDGEMENT_FRAME: - if (ftdf_pib.metrics_enabled) { - if (ftdf_nr_of_retries == 0) { - ftdf_pib.performance_metrics.tx_success_count++; - } else if (ftdf_nr_of_retries == 1) { - ftdf_pib.performance_metrics.retry_count++; - } else { - ftdf_pib.performance_metrics.multiple_retry_count++; - } - } - - if (frame_header->frame_version == FTDF_FRAME_VERSION_E) { - ftdf_pib.traffic_counters.rx_enh_ack_frm_ok_cnt++; - } - break; - case FTDF_BEACON_FRAME: - ftdf_pib.traffic_counters.rx_beacon_frm_ok_cnt++; - break; - case FTDF_DATA_FRAME: - ftdf_pib.traffic_counters.rx_data_frm_ok_cnt++; - break; - case FTDF_MAC_COMMAND_FRAME: - ftdf_pib.traffic_counters.rx_cmd_frm_ok_cnt++; - break; - case FTDF_MULTIPURPOSE_FRAME: - ftdf_pib.traffic_counters.rx_multi_purp_frm_ok_cnt++; - break; - } - - if (frame_type == FTDF_ACKNOWLEDGEMENT_FRAME) { - - while (REG_GETF(FTDF, FTDF_TX_FLAG_S_0_REG, TX_FLAG_STAT)) {} - - /* It is required to call ftdf_process_tx_event here because an RX ack generates two events - * The RX event is raised first, then after an IFS the TX event is raised. However, - * the ftdf_process_next_request requires that both events have been handled. */ - ftdf_process_tx_event(); - - ftdf_sn_t SN = REG_GETF(FTDF, FTDF_TX_META_DATA_1_0_REG, MACSN); - - if (ftdf_req_current && frame_header->sn == SN) { -#ifndef FTDF_NO_CSL - if (ftdf_pib.le_enabled == FTDF_TRUE) { - ftdf_time_t timestamp; - - switch (read_buf) { - case 0: - timestamp = REG_GETF(FTDF, FTDF_RX_META_0_0_REG, RX_TIMESTAMP); - break; - case 1: - timestamp = REG_GETF(FTDF, FTDF_RX_META_0_1_REG, RX_TIMESTAMP); - break; - case 2: - timestamp = REG_GETF(FTDF, FTDF_RX_META_0_2_REG, RX_TIMESTAMP); - break; - case 3: - timestamp = REG_GETF(FTDF, FTDF_RX_META_0_3_REG, RX_TIMESTAMP); - break; - case 4: - timestamp = REG_GETF(FTDF, FTDF_RX_META_0_4_REG, RX_TIMESTAMP); - break; - case 5: - timestamp = REG_GETF(FTDF, FTDF_RX_META_0_5_REG, RX_TIMESTAMP); - break; - case 6: - timestamp = REG_GETF(FTDF, FTDF_RX_META_0_6_REG, RX_TIMESTAMP); - break; - case 7: - timestamp = REG_GETF(FTDF, FTDF_RX_META_0_7_REG, RX_TIMESTAMP); - break; - default: - /* Unsupported register index occurred */ - OS_ASSERT(0); - } - - ftdf_set_peer_csl_timing(header_ie_list, timestamp); - } -#endif /* FTDF_NO_CSL */ - -#ifndef FTDF_NO_TSCH - if (ftdf_pib.tsch_enabled == FTDF_TRUE) { - ftdf_correct_slot_time_from_ack(header_ie_list); - - ftdf_tsch_retry_t* tsch_retry = - ftdf_get_tsch_retry(ftdf_get_request_address(ftdf_req_current)); - - tsch_retry->nr_of_retries = 0; - ftdf_tsch_slot_link->request = NULL; - } -#endif /* FTDF_NO_TSCH */ - - switch (ftdf_req_current->msg_id) { - case FTDF_DATA_REQUEST: - { - ftdf_time_t timestamp = REG_GETF(FTDF, FTDF_TX_RETURN_STATUS_0_0_REG, TXTIMESTAMP); - ftdf_num_of_backoffs_t num_of_backoffs = REG_GETF(FTDF, FTDF_TX_RETURN_STATUS_1_0_REG, CSMACANRRETRIES); - - ftdf_send_data_confirm((ftdf_data_request_t*)ftdf_req_current, - FTDF_SUCCESS, - timestamp, - SN, - num_of_backoffs, - payload_ie_list); - break; - } - case FTDF_POLL_REQUEST: - { - if (!(frame_header->options & FTDF_OPT_FRAME_PENDING)) { - ftdf_send_poll_confirm((ftdf_poll_request_t*)ftdf_req_current, - FTDF_NO_DATA); - } - break; - } - case FTDF_ASSOCIATE_REQUEST: - { - ftdf_assoc_admin_t* assoc_admin = &ftdf_aa; - - if ((assoc_admin->fast_a == FTDF_TRUE) || (assoc_admin->data_r == FTDF_FALSE)) { - uint32_t timestamp = - REG_GETF(FTDF, FTDF_SYMBOLTIMESNAPSHOTVAL_REG, SYMBOLTIMESNAPSHOTVAL); - - REG_SETF(FTDF, FTDF_SYMBOLTIME2THR_REG, SYMBOLTIME2THR, - (timestamp + ftdf_pib.response_wait_time * FTDF_BASE_SUPERFRAME_DURATION)); - - } else if (!(frame_header->options & FTDF_OPT_FRAME_PENDING)) { - - ftdf_send_associate_confirm((ftdf_associate_request_t*)ftdf_req_current, - FTDF_NO_DATA, - 0xffff); - } - break; - } - case FTDF_ASSOCIATE_RESPONSE: - { - ftdf_associate_response_t* assoc_resp = - (ftdf_associate_response_t*)ftdf_req_current; - - ftdf_address_t src_addr, dst_addr; - src_addr.ext_address = ftdf_pib.ext_address; - dst_addr.ext_address = assoc_resp->device_address; - - ftdf_send_comm_status_indication(ftdf_req_current, FTDF_SUCCESS, - ftdf_pib.pan_id, - FTDF_EXTENDED_ADDRESS, - src_addr, - FTDF_EXTENDED_ADDRESS, - dst_addr, - assoc_resp->security_level, - assoc_resp->key_id_mode, - assoc_resp->key_source, - assoc_resp->key_index); - break; - } - case FTDF_ORPHAN_RESPONSE: - { - ftdf_orphan_response_t* orphan_resp = - (ftdf_orphan_response_t*)ftdf_req_current; - - ftdf_address_t src_addr, dst_addr; - src_addr.ext_address = ftdf_pib.ext_address; - dst_addr.ext_address = orphan_resp->orphan_address; - - ftdf_send_comm_status_indication(ftdf_req_current, FTDF_SUCCESS, - ftdf_pib.pan_id, - FTDF_EXTENDED_ADDRESS, - src_addr, - FTDF_EXTENDED_ADDRESS, - dst_addr, - orphan_resp->security_level, - orphan_resp->key_id_mode, - orphan_resp->key_source, - orphan_resp->key_index); - break; - } - case FTDF_DISASSOCIATE_REQUEST: - { - ftdf_send_disassociate_confirm((ftdf_disassociate_request_t*)ftdf_req_current, - FTDF_SUCCESS); - break; - } - case FTDF_REMOTE_REQUEST: - { - ftdf_remote_request_t* remote_request = - (ftdf_remote_request_t*)ftdf_req_current; - - if (remote_request->remote_id == - FTDF_REMOTE_PAN_ID_CONFLICT_NOTIFICATION) { - - ftdf_send_sync_loss_indication(FTDF_PAN_ID_CONFLICT, - security_header); - } - - ftdf_req_current = NULL; - break; - } - } - - if (ftdf_req_current->msg_id != FTDF_DATA_REQUEST) { - /* for data request the application owns the memory */ - FTDF_REL_DATA_BUFFER((ftdf_octet_t*)payload_ie_list); - } - - ftdf_process_next_request(); - } else { - FTDF_REL_DATA_BUFFER((ftdf_octet_t*)payload_ie_list); - } - } else if (((frame_header->frame_version == FTDF_FRAME_VERSION_E) || ftdf_pib.tsch_enabled) && - (frame_header->options & FTDF_OPT_ACK_REQUESTED)) { - -#if !defined(FTDF_NO_CSL) || !defined(FTDF_NO_TSCH) - static ftdf_frame_header_t afh; - ftdf_frame_header_t *ack_frame_header = &afh; - - ack_frame_header->frame_type = FTDF_ACKNOWLEDGEMENT_FRAME; - ack_frame_header->options = - (frame_header->options & (FTDF_OPT_SECURITY_ENABLED | FTDF_OPT_SEQ_NR_SUPPRESSED)) | - FTDF_OPT_ENHANCED; - - if ((ftdf_pib.le_enabled == FTDF_TRUE) || (ftdf_pib.tsch_enabled == FTDF_TRUE) || - (ftdf_pib.e_ack_ie_list.nr_of_ie != 0)) { - - ack_frame_header->options |= FTDF_OPT_IES_PRESENT; - } - - ack_frame_header->dst_addr_mode = FTDF_NO_ADDRESS; - ack_frame_header->src_addr_mode = FTDF_NO_ADDRESS; - ack_frame_header->sn = frame_header->sn; - - ftdf_octet_t *tx_ptr = (ftdf_octet_t*) &FTDF->FTDF_TX_FIFO_2_0_REG; - - /* Skip PHY header (= MAC length) */ - tx_ptr++; - - tx_ptr = ftdf_add_frame_header(tx_ptr, ack_frame_header, 0); - - if (frame_header->options & FTDF_OPT_SECURITY_ENABLED) { - security_header->frame_counter = ftdf_pib.frame_counter; - security_header->frame_counter_mode = ftdf_pib.frame_counter_mode; - - tx_ptr = ftdf_add_security_header(tx_ptr, security_header); - } - -#ifndef FTDF_NO_CSL - if (ftdf_pib.le_enabled == FTDF_TRUE) { - static ftdf_octet_t phase_and_period[4]; - static ftdf_ie_descriptor_t cslIE = { 0x1a, 4, { phase_and_period } }; - static ftdf_ie_list_t cslIEList = { 1, &cslIE }; - ftdf_time_t curTime = - REG_GETF(FTDF, FTDF_SYMBOLTIMESNAPSHOTVAL_REG, SYMBOLTIMESNAPSHOTVAL); - - ftdf_time_t delta = - curTime - (ftdf_start_csl_sample_time - ftdf_pib.csl_period * 10); - - *(ftdf_period_t*)(phase_and_period + 0) = (ftdf_period_t)(delta / 10); - *(ftdf_period_t*)(phase_and_period + 2) = ftdf_pib.csl_period; - - tx_ptr = ftdf_add_ies(tx_ptr, &cslIEList, &ftdf_pib.e_ack_ie_list, FTDF_FALSE); - } -#endif /* FTDF_NO_CSL */ - -#ifndef FTDF_NO_TSCH - if (ftdf_pib.tsch_enabled == FTDF_TRUE) { - ftdf_time_t rx_timestamp; - - switch (read_buf) { - case 0: - rx_timestamp = REG_GETF(FTDF, FTDF_RX_META_0_0_REG, RX_TIMESTAMP); - break; - case 1: - rx_timestamp = REG_GETF(FTDF, FTDF_RX_META_0_1_REG, RX_TIMESTAMP); - break; - case 2: - rx_timestamp = REG_GETF(FTDF, FTDF_RX_META_0_2_REG, RX_TIMESTAMP); - break; - case 3: - rx_timestamp = REG_GETF(FTDF, FTDF_RX_META_0_3_REG, RX_TIMESTAMP); - break; - case 4: - rx_timestamp = REG_GETF(FTDF, FTDF_RX_META_0_4_REG, RX_TIMESTAMP); - break; - case 5: - rx_timestamp = REG_GETF(FTDF, FTDF_RX_META_0_5_REG, RX_TIMESTAMP); - break; - case 6: - rx_timestamp = REG_GETF(FTDF, FTDF_RX_META_0_6_REG, RX_TIMESTAMP); - break; - case 7: - rx_timestamp = REG_GETF(FTDF, FTDF_RX_META_0_7_REG, RX_TIMESTAMP); - break; - default: - /* Unsupported register index occurred */ - OS_ASSERT(0); - } - - tx_ptr = ftdf_add_corr_time_ie(tx_ptr, rx_timestamp); - } -#endif /* FTDF_NO_TSCH */ - - if (!ftdf_pib.le_enabled && !ftdf_pib.tsch_enabled) { - tx_ptr = ftdf_add_ies(tx_ptr, NULL, &ftdf_pib.e_ack_ie_list, FTDF_FALSE); - } - - ftdf_send_ack_frame(frame_header, security_header, tx_ptr); -#endif /* !FTDF_NO_CSL || !FTDF_NO_TSCH */ - - if (duplicate) { - FTDF_REL_DATA_BUFFER((ftdf_octet_t*)payload_ie_list); - return; - } - } - - if ((frame_type == FTDF_DATA_FRAME) || (frame_type == FTDF_MULTIPURPOSE_FRAME)) { - ftdf_data_length_t payload_length = - frameLen - (rx_ptr - rx_buffer) + 1 - mic_length - FTDF_FCS_LENGTH; - - if (ftdf_req_current && (ftdf_req_current->msg_id == FTDF_POLL_REQUEST)) { - ftdf_poll_request_t *poll_request = (ftdf_poll_request_t*)ftdf_req_current; - - if ((frame_header->src_addr_mode == poll_request->coord_addr_mode) && - (frame_header->src_pan_id == poll_request->coord_pan_id) && - (((frame_header->src_addr_mode == FTDF_SHORT_ADDRESS) && - (frame_header->src_addr.short_address == poll_request->coord_addr.short_address)) || - ((frame_header->src_addr_mode == FTDF_EXTENDED_ADDRESS) && - (frame_header->src_addr.ext_address = poll_request->coord_addr.ext_address)))) { - - if (payload_length == 0) { - ftdf_send_poll_confirm(poll_request, FTDF_NO_DATA); - } else { - ftdf_send_poll_confirm(poll_request, FTDF_SUCCESS); - } - } - } else if (ftdf_req_current && (ftdf_req_current->msg_id == FTDF_ASSOCIATE_REQUEST) && - (payload_length == 0)) { - - send_confirm(FTDF_NO_DATA, FTDF_ASSOCIATE_REQUEST); - } - - if (payload_length != 0) { - ftdf_link_quality_t mpdu_link_quality; - ftdf_time_t timestamp; - - switch (read_buf) { - case 0: - mpdu_link_quality = REG_GETF(FTDF, FTDF_RX_META_1_0_REG, QUALITY_INDICATOR); - timestamp = REG_GETF(FTDF, FTDF_RX_META_0_0_REG, RX_TIMESTAMP); - break; - case 1: - mpdu_link_quality = REG_GETF(FTDF, FTDF_RX_META_1_1_REG, QUALITY_INDICATOR); - timestamp = REG_GETF(FTDF, FTDF_RX_META_0_1_REG, RX_TIMESTAMP); - break; - case 2: - mpdu_link_quality = REG_GETF(FTDF, FTDF_RX_META_1_2_REG, QUALITY_INDICATOR); - timestamp = REG_GETF(FTDF, FTDF_RX_META_0_2_REG, RX_TIMESTAMP); - break; - case 3: - mpdu_link_quality = REG_GETF(FTDF, FTDF_RX_META_1_3_REG, QUALITY_INDICATOR); - timestamp = REG_GETF(FTDF, FTDF_RX_META_0_3_REG, RX_TIMESTAMP); - break; - case 4: - mpdu_link_quality = REG_GETF(FTDF, FTDF_RX_META_1_4_REG, QUALITY_INDICATOR); - timestamp = REG_GETF(FTDF, FTDF_RX_META_0_4_REG, RX_TIMESTAMP); - break; - case 5: - mpdu_link_quality = REG_GETF(FTDF, FTDF_RX_META_1_5_REG, QUALITY_INDICATOR); - timestamp = REG_GETF(FTDF, FTDF_RX_META_0_5_REG, RX_TIMESTAMP); - break; - case 6: - mpdu_link_quality = REG_GETF(FTDF, FTDF_RX_META_1_6_REG, QUALITY_INDICATOR); - timestamp = REG_GETF(FTDF, FTDF_RX_META_0_6_REG, RX_TIMESTAMP); - break; - case 7: - mpdu_link_quality = REG_GETF(FTDF, FTDF_RX_META_1_7_REG, QUALITY_INDICATOR); - timestamp = REG_GETF(FTDF, FTDF_RX_META_0_7_REG, RX_TIMESTAMP); - break; - default: - OS_ASSERT(0); - } - - ftdf_send_data_indication(frame_header, - security_header, - payload_ie_list, - payload_length, - rx_ptr, - mpdu_link_quality, - timestamp); - } -#ifndef FTDF_NO_CSL - else if ((header_ie_list->nr_of_ie == 1) && (header_ie_list->ie[0].id == 0x1d)) { - ftdf_period_t rz_time = *(uint16_t*)header_ie_list->ie[0].content.raw; - - ftdf_critical_var(); - ftdf_enter_critical(); - - ftdf_time_t cur_time = - REG_GETF(FTDF, FTDF_SYMBOLTIMESNAPSHOTVAL_REG, SYMBOLTIMESNAPSHOTVAL); - - ftdf_rz_time = cur_time + (ftdf_time_t)rz_time * 10 + 260; /* 260 length of max frame in symbols */ - - ftdf_time_t csl_period = ftdf_pib.csl_period * 10; - ftdf_time_t delta = ftdf_rz_time - ftdf_start_csl_sample_time; - - /* A delta larger than 0x80000000 is assumed a negative delta */ - while (delta < 0x80000000) { - ftdf_start_csl_sample_time += csl_period; - delta = ftdf_rz_time - ftdf_start_csl_sample_time; - } - - REG_SETF(FTDF, FTDF_LMAC_CONTROL_8_REG, MACCSLSTARTSAMPLETIME, - ftdf_start_csl_sample_time); - - ftdf_exit_critical(); - - FTDF_REL_DATA_BUFFER((ftdf_octet_t*)payload_ie_list); - } -#endif /* FTDF_NO_CSL */ - else { - FTDF_REL_DATA_BUFFER((ftdf_octet_t*)payload_ie_list); - } - } else if (frame_type == FTDF_MAC_COMMAND_FRAME) { - ftdf_process_command_frame(rx_ptr, frame_header, security_header, payload_ie_list); - } else if (frame_type == FTDF_BEACON_FRAME) { - ftdf_octet_t* superframe_spec_ptr = (ftdf_octet_t*)&pan_descriptor.superframe_spec; - superframe_spec_ptr++; - - if (ftdf_is_pan_coordinator) { - if ((frame_header->src_pan_id == ftdf_pib.pan_id) && (*superframe_spec_ptr & 0x40)) { - - FTDF_REL_DATA_BUFFER((ftdf_octet_t*)payload_ie_list); - ftdf_send_sync_loss_indication(FTDF_PAN_ID_CONFLICT, - security_header); - - return; - } - } else if (ftdf_pib.associated_pan_coord) { - if ((frame_header->src_pan_id == ftdf_pib.pan_id) && (*superframe_spec_ptr & 0x40) && - (((frame_header->src_addr_mode == FTDF_SHORT_ADDRESS) && - (frame_header->src_addr.short_address != ftdf_pib.coord_short_address)) || - ((frame_header->src_addr_mode == FTDF_EXTENDED_ADDRESS) && - (frame_header->src_addr.ext_address != ftdf_pib.coord_ext_address)))) { - - FTDF_REL_DATA_BUFFER((ftdf_octet_t*)payload_ie_list); - ftdf_sendpan_id_conflict_notification(frame_header, security_header); - return; - } - } - - ftdf_data_length_t beacon_payload_length = - frameLen - (rx_ptr - rx_buffer) + 1- mic_length - FTDF_FCS_LENGTH; - - if ((ftdf_pib.auto_request == FTDF_FALSE) || (beacon_payload_length != 0)) { - ftdf_time_t timestamp; - - switch (read_buf) { - case 0: - timestamp = REG_GETF(FTDF, FTDF_RX_META_0_0_REG, RX_TIMESTAMP); - break; - case 1: - timestamp = REG_GETF(FTDF, FTDF_RX_META_0_1_REG, RX_TIMESTAMP); - break; - case 2: - timestamp = REG_GETF(FTDF, FTDF_RX_META_0_2_REG, RX_TIMESTAMP); - break; - case 3: - timestamp = REG_GETF(FTDF, FTDF_RX_META_0_3_REG, RX_TIMESTAMP); - break; - case 4: - timestamp = REG_GETF(FTDF, FTDF_RX_META_0_4_REG, RX_TIMESTAMP); - break; - case 5: - timestamp = REG_GETF(FTDF, FTDF_RX_META_0_5_REG, RX_TIMESTAMP); - break; - case 6: - timestamp = REG_GETF(FTDF, FTDF_RX_META_0_6_REG, RX_TIMESTAMP); - break; - case 7: - timestamp = REG_GETF(FTDF, FTDF_RX_META_0_7_REG, RX_TIMESTAMP); - break; - default: - /* Unsupported register index occurred */ - OS_ASSERT(0); - } - - ftdf_beacon_notify_indication_t* beacon_notify_indication = - (ftdf_beacon_notify_indication_t*) FTDF_GET_MSG_BUFFER( - sizeof(ftdf_beacon_notify_indication_t)); - - beacon_notify_indication->msg_id = FTDF_BEACON_NOTIFY_INDICATION; - beacon_notify_indication->bsn = frame_header->sn; - beacon_notify_indication->pan_descriptor = &pan_descriptor; - beacon_notify_indication->pend_addr_spec = pend_addr_spec; - beacon_notify_indication->addr_list = pend_addr_list; - beacon_notify_indication->sdu_length = beacon_payload_length; - beacon_notify_indication->sdu = FTDF_GET_DATA_BUFFER(beacon_payload_length); - beacon_notify_indication->eb_sn = frame_header->sn; - beacon_notify_indication->beacon_type = - frame_header->frame_version == FTDF_FRAME_VERSION_E ? - FTDF_ENHANCED_BEACON : FTDF_NORMAL_BEACON; - beacon_notify_indication->ie_list = payload_ie_list; - beacon_notify_indication->timestamp = timestamp; - - memcpy(beacon_notify_indication->sdu, rx_ptr, beacon_payload_length); - - FTDF_RCV_MSG((ftdf_msg_buffer_t*)beacon_notify_indication); - - } else if (ftdf_req_current && (ftdf_req_current->msg_id == FTDF_SCAN_REQUEST)) { - - FTDF_REL_DATA_BUFFER((ftdf_octet_t*)payload_ie_list); - ftdf_add_pan_descriptor(&pan_descriptor); - - } else { - FTDF_REL_DATA_BUFFER((ftdf_octet_t*)payload_ie_list); - } - } -#if FTDF_USE_LPDP -#if FTDF_FP_BIT_TEST_MODE - if (ftdf_lpdp_is_enabled() && !ftdf_req_current && (frame_type == FTDF_DATA_FRAME)) { - ftdf_process_tx_pending(frame_header, security_header); - } -#else /* FTDF_FP_BIT_TEST_MODE */ - if (!ftdf_req_current && frame_type == FTDF_DATA_FRAME) { - ftdf_process_tx_pending(frame_header, security_header); - } -#endif /* FTDF_FP_BIT_TEST_MODE */ -#endif /* FTDF_USE_LPDP */ -#ifndef FTDF_NO_TSCH - if (ftdf_pib.tsch_enabled == FTDF_TRUE) { - ftdf_schedule_tsch(NULL); - } -#endif /* FTDF_NO_TSCH */ -#endif /* !FTDF_LITE */ -} - -void ftdf_process_rx_event(void) -{ - if (REG_GETF(FTDF, FTDF_RX_EVENT_REG, RXSOF_E)) { -#ifdef SIMULATOR - REG_CLR_BIT(FTDF, FTDF_RX_EVENT_REG, RXSOF_E); -#else - FTDF->FTDF_RX_EVENT_REG = REG_MSK(FTDF, FTDF_RX_EVENT_REG, RXSOF_E); -#endif - } - - if (REG_GETF(FTDF, FTDF_RX_EVENT_REG, RXBYTE_E)) { -#ifdef SIMULATOR - REG_CLR_BIT(FTDF, FTDF_RX_EVENT_REG, RXBYTE_E); -#else - FTDF->FTDF_RX_EVENT_REG = REG_MSK(FTDF, FTDF_RX_EVENT_REG, RXBYTE_E); -#endif - } - - if (REG_GETF(FTDF, FTDF_RX_EVENT_REG, RX_OVERFLOW_E)) { - // No API defined to report this error to the higher layer, so just clear it. -#ifdef SIMULATOR - REG_CLR_BIT(FTDF, FTDF_RX_EVENT_REG, RX_OVERFLOW_E); -#else - FTDF->FTDF_RX_EVENT_REG = REG_MSK(FTDF, FTDF_RX_EVENT_REG, RX_OVERFLOW_E); -#endif - } - - if (REG_GETF(FTDF, FTDF_RX_EVENT_REG, RX_BUF_AVAIL_E)) { - int read_buf = REG_GETF(FTDF, FTDF_RX_CONTROL_0_REG, RX_READ_BUF_PTR); - int write_buf = REG_GETF(FTDF, FTDF_RX_STATUS_REG, RX_WRITE_BUF_PTR); - - while (read_buf != write_buf) { - process_rx_frame(read_buf % 8); - read_buf = (read_buf + 1) % 16; - } - - REG_SETF(FTDF, FTDF_RX_CONTROL_0_REG, RX_READ_BUF_PTR, read_buf); - -#ifdef SIMULATOR - REG_CLR_BIT(FTDF, FTDF_RX_EVENT_REG, RX_BUF_AVAIL_E); -#else - FTDF->FTDF_RX_EVENT_REG = REG_MSK(FTDF, FTDF_RX_EVENT_REG, RX_BUF_AVAIL_E); -#endif - } - - if (REG_GETF(FTDF, FTDF_LMAC_EVENT_REG, EDSCANREADY_E)) { -#ifdef SIMULATOR - REG_CLR_BIT(FTDF, FTDF_LMAC_EVENT_REG, EDSCANREADY_E); -#else - FTDF->FTDF_LMAC_EVENT_REG = REG_MSK(FTDF, FTDF_LMAC_EVENT_REG, EDSCANREADY_E); -#endif - -#ifndef FTDF_LITE - ftdf_msg_buffer_t *request = ftdf_req_current; - - if (request->msg_id == FTDF_SCAN_REQUEST) { - ftdf_scan_ready((ftdf_scan_request_t*)request); - } -#endif /* !FTDF_LITE */ - } - - if (REG_GETF(FTDF, FTDF_LMAC_EVENT_REG, RXTIMEREXPIRED_E)) { -#ifdef SIMULATOR - REG_CLR_BIT(FTDF, FTDF_LMAC_EVENT_REG, RXTIMEREXPIRED_E); -#else - FTDF->FTDF_LMAC_EVENT_REG = REG_MSK(FTDF, FTDF_LMAC_EVENT_REG, RXTIMEREXPIRED_E); -#endif - - if ( ftdf_pib.metrics_enabled ) { - ftdf_pib.performance_metrics.rx_expired_count++; - } -#ifndef FTDF_LITE -#ifndef FTDF_NO_TSCH - if (ftdf_pib.tsch_enabled) { - ftdf_schedule_tsch(NULL); - } else -#endif /* FTDF_NO_TSCH */ - if (ftdf_req_current) { - ftdf_msg_id_t msg_id = ftdf_req_current->msg_id; - - if (msg_id == FTDF_POLL_REQUEST) { - ftdf_send_poll_confirm((ftdf_poll_request_t*)ftdf_req_current, - FTDF_NO_DATA); - } else if (msg_id == FTDF_SCAN_REQUEST) { - ftdf_scan_ready((ftdf_scan_request_t*)ftdf_req_current); - } else if (msg_id == FTDF_ASSOCIATE_REQUEST) { - ftdf_send_associate_confirm((ftdf_associate_request_t*)ftdf_req_current, - FTDF_NO_DATA, - 0xffff); - } - } -#endif /* !FTDF_LITE */ - } - - if (REG_GETF(FTDF, FTDF_LMAC_EVENT_REG, CSMA_CA_BO_THR_E)) { -#ifdef SIMULATOR - REG_CLEAR_BIT(FTDF, FTDF_LMAC_EVENT_REG, CSMA_CA_BO_THR_E); -#else - FTDF->FTDF_LMAC_EVENT_REG = REG_MSK(FTDF, FTDF_LMAC_EVENT_REG, CSMA_CA_BO_THR_E); - -#if FTDF_USE_SLEEP_DURING_BACKOFF - if (ftdf_pib.metrics_enabled) { - ftdf_pib.performance_metrics.bo_irq_count++; - } - ftdf_sdb_fsm_backoff_irq(); -#endif /* FTDF_USE_SLEEP_DURING_BACKOFF */ - } -#endif -} - -static void send_confirm(ftdf_status_t status, ftdf_msg_id_t msg_id) -{ - - switch (msg_id) { -#ifndef FTDF_LITE - case FTDF_DATA_REQUEST: - { - ftdf_data_request_t* data_request = (ftdf_data_request_t*)ftdf_req_current; - - ftdf_time_t timestamp = REG_GETF(FTDF, FTDF_TX_RETURN_STATUS_0_0_REG, TXTIMESTAMP); - ftdf_sn_t sn = REG_GETF(FTDF, FTDF_TX_META_DATA_1_0_REG, MACSN); - ftdf_num_of_backoffs_t num_of_backoffs = REG_GETF(FTDF, FTDF_TX_RETURN_STATUS_1_0_REG, CSMACANRRETRIES); - - ftdf_send_data_confirm(data_request, status, timestamp, sn, num_of_backoffs, NULL); - - break; - } - - case FTDF_POLL_REQUEST: - if (status != FTDF_SUCCESS) { - ftdf_send_poll_confirm((ftdf_poll_request_t*)ftdf_req_current, status); - } - - break; - case FTDF_ASSOCIATE_REQUEST: - if (status != FTDF_SUCCESS) { - ftdf_send_associate_confirm((ftdf_associate_request_t*)ftdf_req_current, - status, - 0xffff); - } - - break; - case FTDF_ASSOCIATE_RESPONSE: - if (status != FTDF_SUCCESS) { - ftdf_associate_response_t *assoc_resp = - (ftdf_associate_response_t*)ftdf_req_current; - - ftdf_address_t src_addr, dst_addr; - src_addr.ext_address = ftdf_pib.ext_address; - dst_addr.ext_address = assoc_resp->device_address; - - ftdf_send_comm_status_indication(ftdf_req_current, status, - ftdf_pib.pan_id, - FTDF_EXTENDED_ADDRESS, - src_addr, - FTDF_EXTENDED_ADDRESS, - dst_addr, - assoc_resp->security_level, - assoc_resp->key_id_mode, - assoc_resp->key_source, - assoc_resp->key_index); - } - - break; - case FTDF_ORPHAN_RESPONSE: - if (status != FTDF_SUCCESS) { - ftdf_orphan_response_t *orphan_resp = - (ftdf_orphan_response_t*)ftdf_req_current; - - ftdf_address_t src_addr, dst_addr; - src_addr.ext_address = ftdf_pib.ext_address; - dst_addr.ext_address = orphan_resp->orphan_address; - - ftdf_send_comm_status_indication(ftdf_req_current, status, - ftdf_pib.pan_id, - FTDF_EXTENDED_ADDRESS, - src_addr, - FTDF_EXTENDED_ADDRESS, - dst_addr, - orphan_resp->security_level, - orphan_resp->key_id_mode, - orphan_resp->key_source, - orphan_resp->key_index); - } - - break; - case FTDF_DISASSOCIATE_REQUEST: - if (status != FTDF_SUCCESS) { - ftdf_send_disassociate_confirm( - (ftdf_disassociate_request_t*)ftdf_req_current, status); - } - - break; - case FTDF_SCAN_REQUEST: - if (status != FTDF_SUCCESS) { - ftdf_send_scan_confirm((ftdf_scan_request_t*)ftdf_req_current, status); - } - - break; - case FTDF_BEACON_REQUEST: - ftdf_send_beacon_confirm((ftdf_beacon_request_t*)ftdf_req_current, status); - break; - case FTDF_REMOTE_REQUEST: - ftdf_req_current = NULL; - break; -#endif /* !FTDF_LITE */ - case FTDF_TRANSPARENT_REQUEST: - { -#ifndef FTDF_PHY_API - ftdf_transparent_request_t *transparent_request = - (ftdf_transparent_request_t*)ftdf_req_current; -#endif - ftdf_bitmap32_t transparent_status = 0; - - switch (status) { - case FTDF_SUCCESS: - transparent_status = FTDF_TRANSPARENT_SEND_SUCCESSFUL; - break; - case FTDF_CHANNEL_ACCESS_FAILURE: - transparent_status = FTDF_TRANSPARENT_CSMACA_FAILURE; - break; -#if FTDF_TRANSPARENT_WAIT_FOR_ACK - case FTDF_NO_ACK: - transparent_status = FTDF_TRANSPARENT_NO_ACK; - break; -#endif - } - - if (ftdf_pib.metrics_enabled) { - ftdf_pib.performance_metrics.tx_success_count++; - } -#ifdef FTDF_PHY_API - ftdf_critical_var(); - ftdf_enter_critical(); - ftdf_tx_in_progress = FTDF_FALSE; - ftdf_exit_critical(); - - FTDF_SEND_FRAME_TRANSPARENT_CONFIRM(NULL, transparent_status); -#else - - ftdf_req_current = NULL; - - FTDF_SEND_FRAME_TRANSPARENT_CONFIRM(transparent_request->handle, transparent_status); - - FTDF_REL_MSG_BUFFER((ftdf_msg_buffer_t*)transparent_request); -#ifndef FTDF_LITE - ftdf_process_next_request(); -#endif /* !FTDF_LITE */ - -#endif /* FTDF_PHY_API */ - break; - } - } -} - -void ftdf_process_tx_event(void) -{ - volatile uint32_t *tx_flag_state; - ftdf_status_t status = FTDF_SUCCESS; - -#if dg_configCOEX_ENABLE_CONFIG && !FTDF_USE_AUTO_PTI - /* Restore Rx PTI in case the Tx transaction that just ended interrupted an Rx-always-on - * transaction. */ - hw_coex_pti_t tx_pti; - hw_coex_update_ftdf_pti(ftdf_get_rx_pti(), &tx_pti, true); -#endif - - if (REG_GETF(FTDF, FTDF_TX_FLAG_CLEAR_E_1_REG, TX_FLAG_CLEAR_E)) { -#ifdef SIMULATOR - REG_CLR_BIT(FTDF, FTDF_TX_FLAG_CLEAR_E_1_REG, TX_FLAG_CLEAR_E); -#else - FTDF->FTDF_TX_FLAG_CLEAR_E_1_REG = REG_MSK(FTDF, FTDF_TX_FLAG_CLEAR_E_1_REG, TX_FLAG_CLEAR_E); -#endif - - if (REG_GETF(FTDF, FTDF_TX_RETURN_STATUS_1_1_REG, CSMACAFAIL)) { - if (ftdf_pib.metrics_enabled) { - ftdf_pib.performance_metrics.tx_fail_count++; - } - - status = FTDF_CHANNEL_ACCESS_FAILURE; - } - } - - if (REG_GETF(FTDF, FTDF_TX_FLAG_CLEAR_E_0_REG, TX_FLAG_CLEAR_E)) { -#ifdef SIMULATOR - REG_CLR_BIT(FTDF, FTDF_TX_FLAG_CLEAR_E_0_REG, TX_FLAG_CLEAR_E); -#else - FTDF->FTDF_TX_FLAG_CLEAR_E_0_REG = REG_MSK(FTDF, FTDF_TX_FLAG_CLEAR_E_0_REG, TX_FLAG_CLEAR_E); -#endif - } else { - return; - } - -#ifndef FTDF_PHY_API - ftdf_tx_in_progress = FTDF_FALSE; - - if (ftdf_req_current == NULL) { - return; - } -#else - ftdf_critical_var(); - ftdf_enter_critical(); - - if (ftdf_tx_in_progress == FTDF_FALSE) { - ftdf_exit_critical(); - - return; - } - - ftdf_exit_critical(); -#endif -#if FTDF_USE_SLEEP_DURING_BACKOFF - ftdf_sdb_fsm_tx_irq(); -#endif /* FTDF_USE_SLEEP_DURING_BACKOFF */ - ftdf_boolean_t ack_tx = REG_GETF(FTDF, FTDF_TX_META_DATA_0_0_REG, ACKREQUEST); - - if (status == FTDF_SUCCESS) { - ftdf_frame_type_t frame_type = REG_GETF(FTDF, FTDF_TX_META_DATA_0_0_REG, FRAMETYPE); - - switch (frame_type) { - case FTDF_BEACON_FRAME: - ftdf_pib.traffic_counters.tx_ceacon_frm_cnt++; - break; - case FTDF_DATA_FRAME: - ftdf_pib.traffic_counters.tx_data_frm_cnt++; - break; - case FTDF_MAC_COMMAND_FRAME: - ftdf_pib.traffic_counters.tx_cmd_frm_cnt++; - break; - case FTDF_MULTIPURPOSE_FRAME: - ftdf_pib.traffic_counters.tx_multi_purp_frm_cnt++; - break; - } - -#ifndef FTDF_LITE -#ifndef FTDF_NO_TSCH - ftdf_tsch_retry_t *tsch_retry = NULL; - - if (ftdf_pib.tsch_enabled) { - tsch_retry = ftdf_get_tsch_retry(ftdf_get_request_address(ftdf_req_current)); - } -#endif /* FTDF_NO_TSCH */ -#endif /* !FTDF_LITE */ - if (REG_GETF(FTDF, FTDF_TX_RETURN_STATUS_1_0_REG, ACKFAIL)) { -#ifndef FTDF_LITE -#ifndef FTDF_NO_TSCH - if (ftdf_pib.tsch_enabled) { - tsch_retry->nr_of_retries++; - ftdf_tsch_slot_link->request = NULL; - status = ftdf_schedule_tsch(ftdf_req_current); - - if (status == FTDF_SUCCESS) { - /* If ftdf_req_current is not equal to NULL the retried - * request will be queued rather then send again */ - ftdf_req_current = NULL; - } - - } else -#endif /* FTDF_NO_TSCH */ -#endif /* !FTDF_LITE */ - - if (ftdf_nr_of_retries < ftdf_pib.max_frame_retries) { - ftdf_nr_of_retries++; -#ifndef FTDF_LITE -#ifndef FTDF_NO_CSL - if (ftdf_pib.le_enabled) { - ftdf_set_peer_csl_timing(NULL, 0); - - ftdf_critical_var(); - ftdf_enter_critical(); - - ftdf_time_t cur_time = - REG_GETF(FTDF, FTDF_SYMBOLTIMESNAPSHOTVAL_REG, SYMBOLTIMESNAPSHOTVAL); - - ftdf_tx_in_progress = FTDF_TRUE; - REG_SETF(FTDF, FTDF_LMAC_CONTROL_8_REG, MACCSLSTARTSAMPLETIME, - cur_time + 5); - REG_SETF(FTDF, FTDF_LMAC_CONTROL_7_REG, MACWUPERIOD, - ftdf_pib.csl_max_period); - - REG_SETF(FTDF, FTDF_TX_SET_OS_REG, TX_FLAG_SET, - ((1 << FTDF_TX_DATA_BUFFER) | (1 << FTDF_TX_WAKEUP_BUFFER))); - - ftdf_exit_critical(); - - } else -#endif /* FTDF_NO_CSL */ -#endif /* !FTDF_LITE */ - { -#if dg_configCOEX_ENABLE_CONFIG && !FTDF_USE_AUTO_PTI - hw_coex_update_ftdf_pti(tx_pti, NULL, true); -#endif - REG_SETF(FTDF, FTDF_TX_SET_OS_REG, TX_FLAG_SET, (1 << FTDF_TX_DATA_BUFFER)); - } - - return; - - } else { - - if (ftdf_pib.metrics_enabled) { - ftdf_pib.performance_metrics.tx_fail_count++; - } - - status = FTDF_NO_ACK; - } - - } else if (REG_GETF(FTDF, FTDF_TX_RETURN_STATUS_1_0_REG, CSMACAFAIL)) { -#ifndef FTDF_LITE -#ifndef FTDF_NO_TSCH - if (ftdf_pib.tsch_enabled) { - tsch_retry->nr_of_cca_retries++; - - if (tsch_retry->nr_of_cca_retries < ftdf_pib.max_csma_backoffs) { - - ftdf_tsch_slot_link->request = NULL; - status = ftdf_schedule_tsch(ftdf_req_current); - - if (status == FTDF_SUCCESS) { - /* If ftdf_req_current is not equal to NULL the - * retried request will be queued rather then send again */ - ftdf_req_current = NULL; - } - - } else { - status = FTDF_CHANNEL_ACCESS_FAILURE; - } - } else -#endif /* FTDF_NO_TSCH */ -#endif /* !FTDF_LITE */ - { - status = FTDF_CHANNEL_ACCESS_FAILURE; - } - - if (ftdf_pib.metrics_enabled && status != FTDF_SUCCESS) { - ftdf_pib.performance_metrics.tx_fail_count++; - } - - } else { - - if (ack_tx == FTDF_FALSE && ftdf_pib.metrics_enabled) { - ftdf_pib.performance_metrics.tx_success_count++; - } - -#ifndef FTDF_LITE -#ifndef FTDF_NO_TSCH - if (ftdf_pib.tsch_enabled) { - tsch_retry->nr_of_cca_retries = 0; - } -#endif /* FTDF_NO_TSCH */ -#endif /* !FTDF_LITE */ - } - } - -#ifndef FTDF_PHY_API - if (((ack_tx == FTDF_FALSE) || (status != FTDF_SUCCESS)) && ftdf_req_current) { - send_confirm(status, ftdf_req_current->msg_id); -#ifndef FTDF_LITE - ftdf_process_next_request(); -#endif /* !FTDF_LITE */ - } - -#else - if (ftdf_tx_in_progress) { - send_confirm(status, FTDF_TRANSPARENT_REQUEST); - } -#endif -} - -void ftdf_process_symbol_timer_event(void) -{ -#ifdef FTDF_PHY_API - if (REG_GETF(FTDF, FTDF_LMAC_CONTROL_DELTA_REG, LMACREADY4SLEEP_D)) { - FTDF->FTDF_LMAC_CONTROL_DELTA_REG = REG_MSK(FTDF, FTDF_LMAC_CONTROL_DELTA_REG, LMACREADY4SLEEP_D); - - /* If lmac ready 4 sleep, call respective callback, after disabling the interrupt */ - if (REG_GETF(FTDF, FTDF_LMAC_CONTROL_STATUS_REG, LMACREADY4SLEEP) == 1) { - REG_CLR_BIT(FTDF, FTDF_LMAC_CONTROL_MASK_REG, LMACREADY4SLEEP_M); - FTDF_LMACREADY4SLEEP_CB(FTDF_TRUE, 0); - } - } -#endif - - /* sync timestamp event */ - if (REG_GETF(FTDF, FTDF_LMAC_CONTROL_DELTA_REG, SYNCTIMESTAMP_E)) { -#ifdef SIMULATOR - REG_CLR_BIT(FTDF, FTDF_LMAC_CONTROL_DELTA_REG, SYNCTIMESTAMP_E); -#else - FTDF->FTDF_LMAC_CONTROL_DELTA_REG = REG_MSK(FTDF, FTDF_LMAC_CONTROL_DELTA_REG, SYNCTIMESTAMP_E); -#endif - - REG_SETF(FTDF, FTDF_TIMER_CONTROL_1_REG, SYNCTIMESTAMPENA, 0); -#ifndef FTDF_LITE -#ifndef FTDF_NO_CSL - ftdf_old_le_enabled = FTDF_FALSE; - - if (ftdf_wake_up_enable_le) { - ftdf_pib.le_enabled = FTDF_TRUE; - ftdf_set_le_enabled(); - ftdf_wake_up_enable_le = FTDF_FALSE; - } -#endif /* FTDF_NO_CSL */ - -#ifndef FTDF_NO_TSCH - if (ftdf_wake_up_enable_tsch) { - ftdf_set_tsch_enabled(); - } -#endif /* FTDF_NO_TSCH */ - - ftdf_restore_tx_pending_timer(); -#endif /* !FTDF_LITE */ - FTDF_WAKE_UP_READY(); - } - - /* miscellaneous event - * - Non-TSCH mode: association timer - * - TSCH mode: next active link timer */ - if (REG_GETF(FTDF, FTDF_LMAC_CONTROL_DELTA_REG, SYMBOLTIME2THR_E)) { -#ifdef SIMULATOR - REG_CLR_BIT(FTDF, FTDF_LMAC_CONTROL_DELTA_REG, SYMBOLTIME2THR_E); -#else - FTDF->FTDF_LMAC_CONTROL_DELTA_REG = REG_MSK(FTDF, FTDF_LMAC_CONTROL_DELTA_REG, SYMBOLTIME2THR_E); -#endif - -#ifndef FTDF_LITE -#ifndef FTDF_NO_TSCH - if (ftdf_pib.tsch_enabled) { - ftdf_tsch_process_request(); - } else -#endif /* FTDF_NO_TSCH */ - if (ftdf_req_current && (ftdf_req_current->msg_id == FTDF_ASSOCIATE_REQUEST)) { - ftdf_assoc_admin_t* assoc_admin = &ftdf_aa; - - /* macResponseWaitTime expired */ - assoc_admin->data_r = FTDF_TRUE; - - ftdf_send_associate_data_request(); - } -#endif /* !FTDF_LITE */ - } - - /* pending queue symbol timer event */ - if (REG_GETF(FTDF, FTDF_LMAC_CONTROL_DELTA_REG, SYMBOLTIMETHR_E)) { -#ifdef SIMULATOR - REG_CLR_BIT(FTDF, FTDF_LMAC_CONTROL_DELTA_REG, SYMBOLTIMETHR_E); -#else - FTDF->FTDF_LMAC_CONTROL_DELTA_REG = REG_MSK(FTDF, FTDF_LMAC_CONTROL_DELTA_REG, SYMBOLTIMETHR_E); -#endif - -#ifndef FTDF_LITE - ftdf_remove_tx_pending_timer(NULL); -#endif /* !FTDF_LITE */ - } -} - -#ifndef FTDF_LITE -ftdf_status_t ftdf_send_frame(ftdf_channel_number_t channel, - ftdf_frame_header_t *frame_header, - ftdf_security_header *security_header, - ftdf_octet_t *tx_ptr, - ftdf_data_length_t payload_size, - ftdf_octet_t *payload) -{ - ftdf_octet_t *tx_buf_ptr = (ftdf_octet_t*) &FTDF->FTDF_TX_FIFO_0_0_REG; - - ftdf_data_length_t mic_length = ftdf_get_mic_length(security_header->security_level); - ftdf_data_length_t phy_payload_size = - (tx_ptr - tx_buf_ptr) - 1 + payload_size + mic_length + FTDF_FCS_LENGTH; - - if (phy_payload_size > (FTDF_BUFFER_LENGTH - 1)) { - return FTDF_FRAME_TOO_LONG; - } - - *tx_buf_ptr = phy_payload_size; - - ftdf_octet_t* priv_ptr = tx_ptr; - - int n; - - for (n = 0; n < payload_size; n++) { - *tx_ptr++ = *payload++; - } - - ftdf_status_t status = ftdf_secure_frame(tx_buf_ptr, priv_ptr, frame_header, security_header); - - if (status != FTDF_SUCCESS) { - return status; - } - - ftdf_bitmap8_t options = frame_header->options; - - uint32_t meta_data_0 = 0; - - REG_SET_FIELD(FTDF, FTDF_TX_META_DATA_0_0_REG, FRAME_LENGTH, meta_data_0, phy_payload_size); - REG_SET_FIELD(FTDF, FTDF_TX_META_DATA_0_0_REG, PHYATTR_DEM_PTI, meta_data_0, ((ftdf_pib.cca_mode & 0x3) | 0x08)); - REG_SET_FIELD(FTDF, FTDF_TX_META_DATA_0_0_REG, PHYATTR_CN, meta_data_0, (channel - 11)); - REG_SET_FIELD(FTDF, FTDF_TX_META_DATA_0_0_REG, PHYATTR_RF_GPIO_PINS, meta_data_0, (ftdf_pib.tx_power & 0x07)); - REG_SET_FIELD(FTDF, FTDF_TX_META_DATA_0_0_REG, FRAMETYPE, meta_data_0, frame_header->frame_type); - - REG_SET_FIELD(FTDF, FTDF_TX_META_DATA_0_0_REG, CSMACA_ENA, meta_data_0, 1); - REG_SET_FIELD(FTDF, FTDF_TX_META_DATA_0_0_REG, ACKREQUEST, meta_data_0, - ((options & FTDF_OPT_ACK_REQUESTED) ? 1 : 0)); - REG_SET_FIELD(FTDF, FTDF_TX_META_DATA_0_0_REG, CRC16_ENA, meta_data_0, 1); - - FTDF->FTDF_TX_META_DATA_0_0_REG = meta_data_0; - - uint32_t meta_data_1 = 0; - REG_SET_FIELD(FTDF, FTDF_TX_META_DATA_1_0_REG, MACSN, meta_data_1, frame_header->sn); - FTDF->FTDF_TX_META_DATA_1_0_REG = meta_data_1; - - uint32_t tmp = FTDF->FTDF_LMAC_CONTROL_5_REG; - REG_SET_FIELD(FTDF, FTDF_LMAC_CONTROL_5_REG, PHYCSMACAATTR_DEM_PTI, tmp, (ftdf_pib.cca_mode & 0x3)); - REG_SET_FIELD(FTDF, FTDF_LMAC_CONTROL_5_REG, PHYCSMACAATTR_CN, tmp, (channel - 11)); - REG_SET_FIELD(FTDF, FTDF_LMAC_CONTROL_5_REG, PHYCSMACAATTR_CALCAP, tmp, 0); - REG_SET_FIELD(FTDF, FTDF_LMAC_CONTROL_5_REG, PHYCSMACAATTR_RF_GPIO_PINS, tmp, 0); - REG_SET_FIELD(FTDF, FTDF_LMAC_CONTROL_5_REG, PHYCSMACAATTR_HSI, tmp, 0); - FTDF->FTDF_LMAC_CONTROL_5_REG = tmp; - -#ifndef FTDF_NO_CSL - if (ftdf_pib.le_enabled == FTDF_TRUE) { - if (frame_header->dst_addr_mode != FTDF_SHORT_ADDRESS) { - return FTDF_NO_SHORT_ADDRESS; - } - - /* Clear CSMACA of data frame buffer */ - REG_SETF(FTDF, FTDF_TX_META_DATA_0_0_REG, CSMACA_ENA, 0); - - tx_ptr = tx_buf_ptr = (ftdf_octet_t*) &FTDF->FTDF_TX_FIFO_1_0_REG; - - *tx_ptr++ = 0x0d; - *tx_ptr++ = 0x2d; - *tx_ptr++ = 0x81; - *tx_ptr++ = frame_header->sn; - *(ftdf_pan_id_t*)tx_ptr = frame_header->dst_pan_id; - tx_ptr += 2; - *(ftdf_short_address_t*)tx_ptr = frame_header->dst_addr.short_address; - tx_ptr += 2; - *tx_ptr++ = 0x82; - *tx_ptr++ = 0x0e; - - meta_data_0 = 0; - REG_SET_FIELD(FTDF, FTDF_TX_META_DATA_0_1_REG, FRAME_LENGTH, meta_data_0, 0x0d); - REG_SET_FIELD(FTDF, FTDF_TX_META_DATA_0_1_REG, PHYATTR_DEM_PTI, meta_data_0, ((ftdf_pib.cca_mode & 0x3) | 0x08)); - REG_SET_FIELD(FTDF, FTDF_TX_META_DATA_0_1_REG, PHYATTR_CN, meta_data_0, (channel - 11)); - REG_SET_FIELD(FTDF, FTDF_TX_META_DATA_0_1_REG, PHYATTR_RF_GPIO_PINS, meta_data_0, (ftdf_pib.tx_power & 0x07)); - REG_SET_FIELD(FTDF, FTDF_TX_META_DATA_0_1_REG, FRAMETYPE, meta_data_0, FTDF_MULTIPURPOSE_FRAME); - REG_SET_FIELD(FTDF, FTDF_TX_META_DATA_0_1_REG, CSMACA_ENA, meta_data_0, 1); - REG_SET_FIELD(FTDF, FTDF_TX_META_DATA_0_1_REG, CRC16_ENA, meta_data_0, 1); - FTDF->FTDF_TX_META_DATA_0_1_REG = meta_data_0; - - uint32_t meta_data_1 = 0; - REG_SET_FIELD(FTDF, FTDF_TX_META_DATA_1_1_REG, MACSN, meta_data_1, frame_header->sn); - FTDF->FTDF_TX_META_DATA_1_1_REG = meta_data_1; - -#if FTDF_USE_AUTO_PTI - FTDF->FTDF_TX_PRIORITY_1_REG |= REG_MSK(FTDF, FTDF_TX_PRIORITY_1_REG, ISWAKEUP); -#else - FTDF->FTDF_TX_PRIORITY_1_REG = REG_MSK(FTDF, FTDF_TX_PRIORITY_1_REG, ISWAKEUP); -#endif - } -#endif /* FTDF_NO_CSL */ - -#ifndef FTDF_NO_CSL - if (ftdf_pib.le_enabled == FTDF_TRUE) { - ftdf_time_t cur_time = - REG_GETF(FTDF, FTDF_SYMBOLTIMESNAPSHOTVAL_REG, SYMBOLTIMESNAPSHOTVAL); - ftdf_time_t delta = cur_time - ftdf_rz_time; - - if (delta > 0x80000000) { - - /* Receiving an wakeup frame sequence, delay sending until RZ has passed. */ - ftdf_send_frame_pending = frame_header->dst_addr.short_address; - - } else { - - ftdf_time_t wakeup_start_time; - ftdf_period_t wakeup_period; - - ftdf_critical_var(); - ftdf_enter_critical(); - - ftdf_get_wakeup_params(frame_header->dst_addr.short_address, - &wakeup_start_time, &wakeup_period); - - ftdf_tx_in_progress = FTDF_TRUE; - REG_SETF(FTDF, FTDF_LMAC_CONTROL_8_REG, MACCSLSTARTSAMPLETIME, - wakeup_start_time); - REG_SETF(FTDF, FTDF_LMAC_CONTROL_7_REG, MACWUPERIOD, wakeup_period); - - REG_SETF(FTDF, FTDF_TX_SET_OS_REG, TX_FLAG_SET, - ((1 << FTDF_TX_DATA_BUFFER) | (1 << FTDF_TX_WAKEUP_BUFFER))); - - ftdf_exit_critical(); - } - - } else -#endif /* FTDF_NO_CSL */ - if (!ftdf_pib.tsch_enabled) { - REG_SETF(FTDF, FTDF_TX_SET_OS_REG, TX_FLAG_SET, (1 << FTDF_TX_DATA_BUFFER)); - } - - return FTDF_SUCCESS; -} - -#if !defined(FTDF_NO_CSL) || !defined(FTDF_NO_TSCH) -ftdf_status_t ftdf_send_ack_frame(ftdf_frame_header_t *frame_header, - ftdf_security_header *security_header, - ftdf_octet_t *tx_ptr) -{ - ftdf_octet_t *tx_buf_ptr = ((ftdf_octet_t*) &FTDF->FTDF_TX_FIFO_2_0_REG); - ftdf_data_length_t mic_length = ftdf_get_mic_length(security_header->security_level); - ftdf_data_length_t phy_payload_size = - (tx_ptr - tx_buf_ptr) - 1 + mic_length + FTDF_FCS_LENGTH; - - *tx_buf_ptr = phy_payload_size; - - ftdf_status_t status = ftdf_secure_frame(tx_buf_ptr, - tx_ptr, - frame_header, - security_header); - - if (status != FTDF_SUCCESS) { - return status; - } - - uint32_t meta_data_0 = 0; - - REG_SET_FIELD(FTDF, FTDF_TX_META_DATA_0_2_REG, FRAME_LENGTH, meta_data_0, phy_payload_size); - REG_SET_FIELD(FTDF, FTDF_TX_META_DATA_0_2_REG, PHYATTR_DEM_PTI, meta_data_0, ((ftdf_pib.cca_mode & 0x3) | 0x08)); - REG_SET_FIELD(FTDF, FTDF_TX_META_DATA_0_2_REG, PHYATTR_CN, meta_data_0, REG_GETF(FTDF, FTDF_LMAC_CONTROL_1_REG, PHYRXATTR_CN)); - REG_SET_FIELD(FTDF, FTDF_TX_META_DATA_0_2_REG, PHYATTR_RF_GPIO_PINS, meta_data_0, (ftdf_pib.tx_power & 0x07)); - REG_SET_FIELD(FTDF, FTDF_TX_META_DATA_0_2_REG, FRAMETYPE, meta_data_0, FTDF_ACKNOWLEDGEMENT_FRAME); - REG_SET_FIELD(FTDF, FTDF_TX_META_DATA_0_2_REG, CRC16_ENA, meta_data_0, 1); - - FTDF->FTDF_TX_META_DATA_0_2_REG = meta_data_0; - - uint32_t meta_data_1 = 0; - REG_SET_FIELD(FTDF, FTDF_TX_META_DATA_1_2_REG, MACSN, meta_data_1, frame_header->sn); - FTDF->FTDF_TX_META_DATA_1_2_REG = meta_data_1; - -#if FTDF_USE_AUTO_PTI - REG_SETF(FTDF, FTDF_TX_PRIORITY_2_REG, TX_PRIORITY, 1); -#else - FTDF->FTDF_TX_PRIORITY_2_REG = 1; -#endif - -#ifndef FTDF_NO_TSCH - if (ftdf_pib.tsch_enabled) { - - ftdf_critical_var(); - ftdf_enter_critical(); - - ftdf_period_t tx_ack_delay_val = - REG_GETF(FTDF, FTDF_MACTSTXACKDELAYVAL_REG, MACTSTXACKDELAYVAL); - - if (tx_ack_delay_val > 20) { - REG_SETF(FTDF, FTDF_TX_SET_OS_REG, TX_FLAG_SET, (1 << FTDF_TX_ACK_BUFFER)); - } - - ftdf_exit_critical(); - - } else - #endif /* FTDF_NO_TSCH */ - { - REG_SETF(FTDF, FTDF_TX_SET_OS_REG, TX_FLAG_SET, (1 << FTDF_TX_ACK_BUFFER)); - } - - ftdf_pib.traffic_counters.tx_enh_ack_frm_cnt++; - - return FTDF_SUCCESS; -} -#endif /* !FTDF_NO_CSL || !FTDF_NO_TSCH */ -#endif /* !FTDF_LITE */ - -void ftdf_send_transparent_frame(ftdf_data_length_t frame_length, - ftdf_octet_t *frame, - ftdf_channel_number_t channel, - ftdf_pti_t pti, - ftdf_boolean_t cmsa_suppress) -{ - uint32_t meta_data_0 = 0; - uint32_t tmp; - -#if FTDF_TRANSPARENT_USE_WAIT_FOR_ACK - ftdf_boolean_t use_ack = FTDF_FALSE; - //ftdf_frame_header_t *frame_header = &ftdf_fh; - ftdf_frame_header_t frame_header; - ftdf_sn_t sn; -#endif - -#if FTDF_TRANSPARENT_USE_WAIT_FOR_ACK - if (ftdf_transparent_mode_options & FTDF_TRANSPARENT_WAIT_FOR_ACK) { - ftdf_get_frame_header(frame, &frame_header); - if (frame_header.options & FTDF_OPT_ACK_REQUESTED) { - use_ack = FTDF_TRUE; - } - sn = frame_header.sn; - } -#endif - - tmp = 0; - REG_SET_FIELD(FTDF, FTDF_TX_PRIORITY_0_REG, PTI_TX, tmp, pti); - REG_SET_FIELD(FTDF, FTDF_TX_PRIORITY_0_REG, TX_PRIORITY, tmp, 1); - FTDF->FTDF_TX_PRIORITY_0_REG = tmp; - - REG_SET_FIELD(FTDF, FTDF_TX_META_DATA_0_0_REG, FRAME_LENGTH, meta_data_0, frame_length); - REG_SET_FIELD(FTDF, FTDF_TX_META_DATA_0_0_REG, PHYATTR_DEM_PTI, meta_data_0, (ftdf_pib.cca_mode & 0x3) | 0x08); - REG_SET_FIELD(FTDF, FTDF_TX_META_DATA_0_0_REG, PHYATTR_CN, meta_data_0, (channel - 11)); - REG_SET_FIELD(FTDF, FTDF_TX_META_DATA_0_0_REG, PHYATTR_RF_GPIO_PINS, meta_data_0, (ftdf_pib.tx_power & 0x07)); - REG_SET_FIELD(FTDF, FTDF_TX_META_DATA_0_0_REG, FRAMETYPE, meta_data_0, (*frame & 0x7)); - REG_SET_FIELD(FTDF, FTDF_TX_META_DATA_0_0_REG, CSMACA_ENA, meta_data_0, ((cmsa_suppress) ? 0 : 1)); - -#if FTDF_TRANSPARENT_USE_WAIT_FOR_ACK - REG_SET_FIELD(FTDF, FTDF_TX_META_DATA_0_0_REG, ACKREQUEST, meta_data_0, (use_ack ? 1 : 0)); -#endif - REG_SET_FIELD(FTDF, FTDF_TX_META_DATA_0_0_REG, CRC16_ENA, meta_data_0, - ((ftdf_transparent_mode_options & FTDF_TRANSPARENT_ENABLE_FCS_GENERATION) ? 1 : 0)); - - FTDF->FTDF_TX_META_DATA_0_0_REG = meta_data_0; - - uint32_t meta_data_1 = 0; -#if FTDF_TRANSPARENT_USE_WAIT_FOR_ACK - if (use_ack) { - REG_SET_FIELD(FTDF, FTDF_TX_META_DATA_1_0_REG, MACSN, meta_data_1, sn); - } else { - REG_SET_FIELD(FTDF, FTDF_TX_META_DATA_1_0_REG, MACSN, meta_data_1, 0); - } -#else - REG_SET_FIELD(FTDF, FTDF_TX_META_DATA_1_0_REG, MACSN, meta_data_1, 0); -#endif - FTDF->FTDF_TX_META_DATA_1_0_REG = meta_data_1; - - tmp = FTDF->FTDF_LMAC_CONTROL_5_REG; - REG_SET_FIELD(FTDF, FTDF_LMAC_CONTROL_5_REG, PHYCSMACAATTR_DEM_PTI, tmp, (ftdf_pib.cca_mode & 0x3)); - REG_SET_FIELD(FTDF, FTDF_LMAC_CONTROL_5_REG, PHYCSMACAATTR_CN, tmp, (channel - 11)); - REG_SET_FIELD(FTDF, FTDF_LMAC_CONTROL_5_REG, PHYCSMACAATTR_CALCAP, tmp, 0); - REG_SET_FIELD(FTDF, FTDF_LMAC_CONTROL_5_REG, PHYCSMACAATTR_RF_GPIO_PINS, tmp, (ftdf_pib.tx_power & 0x07)); - REG_SET_FIELD(FTDF, FTDF_LMAC_CONTROL_5_REG, PHYCSMACAATTR_HSI, tmp, 0); - FTDF->FTDF_LMAC_CONTROL_5_REG = tmp; - -#if dg_configCOEX_ENABLE_CONFIG && !FTDF_USE_AUTO_PTI - hw_coex_update_ftdf_pti((hw_coex_pti_t)pti, NULL, true); -#else - // REG_SETF(FTDF, FTDF_TX_PRIORITY_0_REG, PTI_TX, pti); -#endif - REG_SETF(FTDF, FTDF_TX_SET_OS_REG, TX_FLAG_SET, (1 << FTDF_TX_DATA_BUFFER)); -} - -void ftdf_init_queues(void) -{ -#ifndef FTDF_LITE - ftdf_init_queue(&ftdf_free_queue); - ftdf_init_queue(&ftdf_req_queue); - - int n; - - for (n = 0; n < FTDF_NR_OF_REQ_BUFFERS; n++) { - ftdf_queue_buffer_head(&ftdf_req_buffers[n], &ftdf_free_queue); - - ftdf_tx_pending_list[n].addr.ext_address = 0xFFFFFFFFFFFFFFFFLL; - ftdf_tx_pending_list[n].addr_mode = FTDF_NO_ADDRESS; - ftdf_tx_pending_list[n].pan_id = 0xFFFF; - ftdf_init_queue(&ftdf_tx_pending_list[n].queue); - - ftdf_tx_pending_timer_list[n].free = FTDF_TRUE; - ftdf_tx_pending_timer_list[n].next = NULL; - } - - ftdf_tx_pending_timer_head = ftdf_tx_pending_timer_list; - ftdf_tx_pending_timer_time = 0; -#endif /* !FTDF_LITE */ -#ifndef FTDF_PHY_API - ftdf_req_current = NULL; -#endif -} - -#ifndef FTDF_LITE -void ftdf_init_queue(ftdf_queue_t *queue) -{ - queue->head.next = (ftdf_buffer_t*)&queue->tail; - queue->head.prev = NULL; - queue->tail.next = NULL; - queue->tail.prev = (ftdf_buffer_t*)&queue->head; -} - -void ftdf_queue_buffer_head(ftdf_buffer_t *buffer, ftdf_queue_t *queue) -{ - ftdf_buffer_t *next = queue->head.next; - - queue->head.next = buffer; - next->header.prev = buffer; - buffer->header.next = next; - buffer->header.prev = (ftdf_buffer_t*)&queue->head; -} - -ftdf_buffer_t *ftdf_dequeue_buffer_tail(ftdf_queue_t *queue) -{ - ftdf_buffer_t *buffer = queue->tail.prev; - - if (buffer->header.prev == NULL) { - return NULL; - } - - queue->tail.prev = buffer->header.prev; - buffer->header.prev->header.next = (ftdf_buffer_t*)&queue->tail; - - return buffer; -} - -ftdf_status_t ftdf_queue_req_head(ftdf_msg_buffer_t *request, ftdf_queue_t *queue) -{ - ftdf_buffer_t *buffer = ftdf_dequeue_buffer_tail(&ftdf_free_queue); - - if (buffer == NULL) { - return FTDF_TRANSACTION_OVERFLOW; - } - - ftdf_buffer_t *next = queue->head.next; - - queue->head.next = buffer; - next->header.prev = buffer; - buffer->header.next = next; - buffer->header.prev = (ftdf_buffer_t*)&queue->head; - buffer->request = request; - - return FTDF_SUCCESS; -} - -ftdf_msg_buffer_t *ftdf_dequeue_req_tail(ftdf_queue_t *queue) -{ - ftdf_buffer_t *buffer = queue->tail.prev; - - if (buffer->header.prev == NULL) { - return NULL; - } - - queue->tail.prev = buffer->header.prev; - buffer->header.prev->header.next = (ftdf_buffer_t*)&queue->tail; - - ftdf_msg_buffer_t *request = buffer->request; - - ftdf_queue_buffer_head(buffer, &ftdf_free_queue); - - return request; -} - -ftdf_msg_buffer_t *ftdf_dequeue_by_handle(ftdf_handle_t handle, ftdf_queue_t *queue) -{ - ftdf_buffer_t *buffer = queue->head.next; - - while (buffer->header.next != NULL) { - if (buffer->request && buffer->request->msg_id == FTDF_DATA_REQUEST && - ((ftdf_data_request_t*)buffer->request)->msdu_handle == handle) { - buffer->header.prev->header.next = buffer->header.next; - buffer->header.next->header.prev = buffer->header.prev; - - ftdf_msg_buffer_t *request = buffer->request; - - ftdf_queue_buffer_head(buffer, &ftdf_free_queue); - - return request; - } - - buffer = buffer->header.next; - } - - return NULL; -} - -ftdf_msg_buffer_t *ftdf_dequeue_by_request(ftdf_msg_buffer_t *request, ftdf_queue_t *queue) -{ - ftdf_buffer_t *buffer = queue->head.next; - - while (buffer->header.next != NULL) { - if (buffer->request == request) { - buffer->header.prev->header.next = buffer->header.next; - buffer->header.next->header.prev = buffer->header.prev; - - ftdf_msg_buffer_t *req = buffer->request; - - ftdf_queue_buffer_head(buffer, &ftdf_free_queue); - - return req; - } - - buffer = buffer->header.next; - } - - return NULL; -} - -ftdf_boolean_t ftdf_is_queue_empty(ftdf_queue_t *queue) -{ - if (queue->head.next->header.next == NULL) { - return FTDF_TRUE; - } else { - return FTDF_FALSE; - } -} - -static ftdf_pending_tl_t *ftdf_find_free_pending_timer(void) -{ - uint8_t i; - - for (i = 0; i < FTDF_NR_OF_REQ_BUFFERS; i++) { - if (ftdf_tx_pending_timer_list[i].free == FTDF_TRUE) { - break; - } - } - - return &ftdf_tx_pending_timer_list[i]; -} - -void ftdf_add_tx_pending_timer(ftdf_msg_buffer_t *request, uint8_t pendListNr, ftdf_time_t delta, - void (*func)(ftdf_pending_tl_t*)) -{ - ftdf_critical_var(); - ftdf_enter_critical(); - - ftdf_pending_tl_t *ptr = ftdf_tx_pending_timer_head; - ftdf_time_t timestamp = REG_GETF(FTDF, FTDF_SYMBOLTIMESNAPSHOTVAL_REG, - SYMBOLTIMESNAPSHOTVAL); - - if (ptr->free == FTDF_FALSE) { - while (ptr) { - ptr->delta -= timestamp - ftdf_tx_pending_timer_lt; - ptr = ptr->next; - } - } - - ftdf_tx_pending_timer_lt = timestamp; - ptr = ftdf_tx_pending_timer_head; - - if (ptr->free == FTDF_TRUE) { - ptr->free = FTDF_FALSE; - ptr->next = NULL; - ptr->request = request; - ptr->delta = delta; - ptr->pend_list_nr = pendListNr; - ptr->func = func; - - REG_SETF(FTDF, FTDF_SYMBOLTIMETHR_REG, SYMBOLTIMETHR, delta + timestamp); - ftdf_tx_pending_timer_time = delta + timestamp; - ftdf_exit_critical(); - return; - } - - if (ptr->delta > delta) { - ftdf_tx_pending_timer_head = ftdf_find_free_pending_timer(); - ftdf_tx_pending_timer_head->free = FTDF_FALSE; - ftdf_tx_pending_timer_head->next = ptr; - ftdf_tx_pending_timer_head->request = request; - ftdf_tx_pending_timer_head->delta = delta; - ftdf_tx_pending_timer_head->pend_list_nr = pendListNr; - ftdf_tx_pending_timer_head->func = func; - - REG_SETF(FTDF, FTDF_SYMBOLTIMETHR_REG, SYMBOLTIMETHR, delta + timestamp); - ftdf_tx_pending_timer_time = delta + timestamp; - ftdf_exit_critical(); - - return; - } else if (ptr->delta == delta) { - delta++; - } - - ftdf_pending_tl_t *prev; - - while (ptr->next) { - prev = ptr; - ptr = ptr->next; - - if (ptr->delta == delta) { - delta++; - } - - if (prev->delta < delta && ptr->delta > delta) { - prev->next = ftdf_find_free_pending_timer(); - prev->next->next = ptr; - ptr = prev->next; - ptr->free = FTDF_FALSE; - ptr->request = request; - ptr->delta = delta; - ptr->pend_list_nr = pendListNr; - ptr->func = func; - - ftdf_exit_critical(); - - return; - } - } - - ptr->next = ftdf_find_free_pending_timer(); - ptr = ptr->next; - ptr->free = FTDF_FALSE; - ptr->next = NULL; - ptr->request = request; - ptr->delta = delta; - ptr->pend_list_nr = pendListNr; - ptr->func = func; - - ftdf_exit_critical(); -} - -void ftdf_remove_tx_pending_timer(ftdf_msg_buffer_t *request) -{ - ftdf_critical_var(); - ftdf_enter_critical(); - - ftdf_pending_tl_t *ptr = ftdf_tx_pending_timer_head; - ftdf_time_t timestamp = - REG_GETF(FTDF, FTDF_SYMBOLTIMESNAPSHOTVAL_REG, SYMBOLTIMESNAPSHOTVAL); - - if (ptr->free == FTDF_TRUE) { - REG_SETF(FTDF, FTDF_SYMBOLTIMETHR_REG, SYMBOLTIMETHR, timestamp - 1); - ftdf_tx_pending_timer_time = timestamp - 1; - ftdf_exit_critical(); - - return; - } - - while (ptr) { - ptr->delta -= timestamp - ftdf_tx_pending_timer_lt; - ptr = ptr->next; - } - - ftdf_tx_pending_timer_lt = timestamp; - ptr = ftdf_tx_pending_timer_head; - - if (!request || ptr->request == request) { - if (ptr->next) { - ftdf_pending_tl_t *temp = ptr; - - if (ptr->next->delta < 75) { - while (temp) { - temp->delta += 75; - temp = temp->next; - } - } - - REG_SETF(FTDF, FTDF_SYMBOLTIMETHR_REG, SYMBOLTIMETHR, - timestamp + ptr->next->delta); - ftdf_tx_pending_timer_time = timestamp + ptr->next->delta; - ftdf_tx_pending_timer_head = ptr->next; - - ptr->free = FTDF_TRUE; - ptr->next = NULL; - } else { - REG_SETF(FTDF, FTDF_SYMBOLTIMETHR_REG, SYMBOLTIMETHR, timestamp - 1); - ftdf_tx_pending_timer_time = timestamp - 1; - - ptr->free = FTDF_TRUE; - ptr->next = NULL; - } - - ftdf_exit_critical(); - - if (!request) { - if (ptr->func) { - ptr->func(ptr); - } - } - - return; - } - - ftdf_pending_tl_t *prev = ptr; - - while (ptr->next) { - prev = ptr; - ptr = ptr->next; - - if (ptr->request == request) { - prev->next = ptr->next; - ptr->free = FTDF_TRUE; - ptr->next = NULL; - - ftdf_exit_critical(); - - return; - } - } - - REG_SETF(FTDF, FTDF_SYMBOLTIMETHR_REG, SYMBOLTIMETHR, timestamp - 1); - ftdf_tx_pending_timer_time = timestamp - 1; - ftdf_exit_critical(); -} - -void ftdf_restore_tx_pending_timer(void) -{ - REG_SETF(FTDF, FTDF_SYMBOLTIMETHR_REG, SYMBOLTIMETHR, ftdf_tx_pending_timer_time); -} - -ftdf_boolean_t ftdf_get_tx_pending_timer_head(ftdf_time_t *time) -{ - ftdf_pending_tl_t *ptr = ftdf_tx_pending_timer_head; - - if (ptr->free == FTDF_TRUE) { - return FTDF_FALSE; - } - - *time = ftdf_tx_pending_timer_time; - - return FTDF_TRUE; -} - -#ifndef FTDF_NO_TSCH -void ftdf_process_keep_alive_timer_exp(ftdf_pending_tl_t *ptr) { - ftdf_remote_request_t *remote_request = (ftdf_remote_request_t*)ptr->request; - - remote_request->msg_id = FTDF_REMOTE_REQUEST; - remote_request->remote_id = FTDF_REMOTE_KEEP_ALIVE; - remote_request->dst_addr = ftdf_neighbor_table[ptr->pend_list_nr].dst_addr; - - ftdf_process_remote_request(remote_request); -} -#endif /* FTDF_NO_TSCH */ - -void ftdf_send_transaction_expired(ftdf_pending_tl_t *ptr) -{ - ftdf_msg_buffer_t *req = - ftdf_dequeue_by_request(ptr->request, - &ftdf_tx_pending_list[ptr->pend_list_nr].queue); - - if (!req) { - return; - } - - if (ftdf_is_queue_empty(&ftdf_tx_pending_list[ptr->pend_list_nr].queue)) { -#ifndef FTDF_NO_TSCH - if (ftdf_pib.tsch_enabled) { - ftdf_tx_pending_list[ptr->pend_list_nr].addr.short_address = 0xfffe; - } else -#endif /* FTDF_NO_TSCH */ - { -#if FTDF_FP_BIT_MODE == FTDF_FP_BIT_MODE_AUTO - if (ftdf_tx_pending_list[ptr->pend_list_nr].addr_mode == FTDF_SHORT_ADDRESS) { - uint8_t entry, short_addr_idx; - ftdf_boolean_t found = ftdf_fppr_lookup_short_address( - ftdf_tx_pending_list[ptr->pend_list_nr].addr.short_address, &entry, - &short_addr_idx); - ASSERT_WARNING(found); - ftdf_fppr_set_short_address_valid(entry, short_addr_idx, FTDF_FALSE); - } else if (ftdf_tx_pending_list[ptr->pend_list_nr].addr_mode == FTDF_EXTENDED_ADDRESS) { - uint8_t entry; - ftdf_boolean_t found = ftdf_fppr_lookup_ext_address( - ftdf_tx_pending_list[ptr->pend_list_nr].addr.ext_address, &entry); - ASSERT_WARNING(found); - ftdf_fppr_set_ext_address_valid(entry, FTDF_FALSE); - } else { - ASSERT_WARNING(0); - } -#endif /* FTDF_FP_BIT_MODE == FTDF_FP_BIT_MODE_AUTO */ - ftdf_tx_pending_list[ptr->pend_list_nr].addr_mode = FTDF_NO_ADDRESS; - } - } - - switch (req->msg_id) { - case FTDF_DATA_REQUEST: - { - ftdf_data_request_t *data_request = (ftdf_data_request_t*)req; - - ftdf_send_data_confirm(data_request, FTDF_TRANSACTION_EXPIRED, 0, 0, 0, NULL); - - break; - } - case FTDF_ASSOCIATE_REQUEST: - { - ftdf_associate_request_t* associate_request = (ftdf_associate_request_t*)req; - - ftdf_send_associate_confirm(associate_request, FTDF_TRANSACTION_EXPIRED, 0xffff); - - break; - } - case FTDF_ASSOCIATE_RESPONSE: - { - ftdf_associate_response_t *assoc_resp = (ftdf_associate_response_t*)req; - - ftdf_address_t src_addr, dst_addr; - src_addr.ext_address = ftdf_pib.ext_address; - dst_addr.ext_address = assoc_resp->device_address; - - ftdf_send_comm_status_indication(req, FTDF_TRANSACTION_EXPIRED, - ftdf_pib.pan_id, - FTDF_EXTENDED_ADDRESS, - src_addr, - FTDF_EXTENDED_ADDRESS, - dst_addr, - assoc_resp->security_level, - assoc_resp->key_id_mode, - assoc_resp->key_source, - assoc_resp->key_index); - - break; - } - case FTDF_DISASSOCIATE_REQUEST: - { - ftdf_disassociate_request_t* dis_req = (ftdf_disassociate_request_t*)req; - - ftdf_send_disassociate_confirm(dis_req, FTDF_TRANSACTION_EXPIRED); - - break; - } - case FTDF_BEACON_REQUEST: - { - ftdf_beacon_request_t* beacon_request = (ftdf_beacon_request_t*)req; - - ftdf_send_beacon_confirm(beacon_request, FTDF_TRANSACTION_EXPIRED); - - break; - } - } -} - -#ifndef FTDF_NO_TSCH -void ftdf_reset_keep_alive_timer(ftdf_short_address_t dst_addr) -{ - uint8_t n; - - for (n = 0; n < FTDF_NR_OF_NEIGHBORS; n++) { - if (ftdf_neighbor_table[n].dst_addr == dst_addr) { - break; - } - } - - if (n == FTDF_NR_OF_NEIGHBORS) { - return; - } - - ftdf_remove_tx_pending_timer((ftdf_msg_buffer_t*)&ftdf_neighbor_table[n].msg); - - ftdf_time_t ts_timeslot_length = (ftdf_time_t)ftdf_pib.timeslot_template.ts_timeslot_length - / 16; - ftdf_time_t delta = ts_timeslot_length * ftdf_neighbor_table[n].period; - - ftdf_add_tx_pending_timer((ftdf_msg_buffer_t*)&ftdf_neighbor_table[n].msg, n, delta, - ftdf_process_keep_alive_timer_exp); -} -#endif /* FTDF_NO_TSCH */ -#endif /* !FTDF_LITE */ - -void ftdf_enable_transparent_mode(ftdf_boolean_t enable, - ftdf_bitmap32_t options) -{ -#ifndef FTDF_LITE - if ((ftdf_pib.le_enabled == FTDF_TRUE) || (ftdf_pib.tsch_enabled == FTDF_TRUE)) { - return; - } -#endif /* !FTDF_LITE */ - - - ftdf_transparent_mode = enable; - ftdf_transparent_mode_options = options; - - uint32_t tmp = FTDF->FTDF_RX_CONTROL_0_REG; - - if (enable) { - REG_SET_FIELD(FTDF, FTDF_RX_CONTROL_0_REG, MACALWAYSPASSFRMTYPE, tmp, - (options & FTDF_TRANSPARENT_PASS_ALL_FRAME_TYPES)); - REG_SET_FIELD(FTDF, FTDF_RX_CONTROL_0_REG, DISRXACKREQUESTCA, tmp, - (options & FTDF_TRANSPARENT_AUTO_ACK ? 0 : 1)); - REG_SET_FIELD(FTDF, FTDF_RX_CONTROL_0_REG, MACALWAYSPASSCRCERROR, tmp, - (options & FTDF_TRANSPARENT_PASS_CRC_ERROR ? 1 : 0)); - REG_SET_FIELD(FTDF, FTDF_RX_CONTROL_0_REG, MACALWAYSPASSRESFRAMEVERSION, tmp, - (options & FTDF_TRANSPARENT_PASS_ALL_FRAME_VERSION ? 1 : 0)); - REG_SET_FIELD(FTDF, FTDF_RX_CONTROL_0_REG, MACALWAYSPASSWRONGDPANID, tmp, - (options & FTDF_TRANSPARENT_PASS_ALL_PAN_ID ? 1 : 0)); - REG_SET_FIELD(FTDF, FTDF_RX_CONTROL_0_REG, MACALWAYSPASSWRONGDADDR, tmp, - (options & FTDF_TRANSPARENT_PASS_ALL_ADDR ? 1 : 0)); - REG_SET_FIELD(FTDF, FTDF_RX_CONTROL_0_REG, MACALWAYSPASSBEACONWRONGPANID, tmp, - (options & FTDF_TRANSPARENT_PASS_ALL_BEACON ? 1 : 0)); - REG_SET_FIELD(FTDF, FTDF_RX_CONTROL_0_REG, MACALWAYSPASSTOPANCOORDINATOR, tmp, - (options & FTDF_TRANSPARENT_PASS_ALL_NO_DEST_ADDR ? 1 : 0)); - } else { - REG_SET_FIELD(FTDF, FTDF_RX_CONTROL_0_REG, MACALWAYSPASSFRMTYPE, tmp, 0); - REG_SET_FIELD(FTDF, FTDF_RX_CONTROL_0_REG, DISRXACKREQUESTCA, tmp, 0); - REG_SET_FIELD(FTDF, FTDF_RX_CONTROL_0_REG, MACALWAYSPASSCRCERROR, tmp, 0); - REG_SET_FIELD(FTDF, FTDF_RX_CONTROL_0_REG, MACALWAYSPASSRESFRAMEVERSION, tmp, 0); - REG_SET_FIELD(FTDF, FTDF_RX_CONTROL_0_REG, MACALWAYSPASSWRONGDPANID, tmp, 0); - REG_SET_FIELD(FTDF, FTDF_RX_CONTROL_0_REG, MACALWAYSPASSWRONGDADDR, tmp, 0); - REG_SET_FIELD(FTDF, FTDF_RX_CONTROL_0_REG, MACALWAYSPASSBEACONWRONGPANID, tmp, 0); - REG_SET_FIELD(FTDF, FTDF_RX_CONTROL_0_REG, MACALWAYSPASSTOPANCOORDINATOR, tmp, 0); - } - - FTDF->FTDF_RX_CONTROL_0_REG = tmp; -} - -#if FTDF_DBG_BUS_ENABLE -void ftdf_check_dbg_mode(void) -{ - REG_SET_MASKED(FTDF, FTDF_DEBUGCONTROL_REG, 0xFF, ftdf_dbg_mode); - if (ftdf_dbg_mode) { - FTDF_DBG_BUS_GPIO_CONFIG(); - } -} - -void ftdf_set_dbg_mode(ftdf_dbg_mode_t dbg_mode) -{ - ftdf_dbg_mode = dbg_mode; - ftdf_check_dbg_mode(); -} -#endif /* FTDF_DBG_BUS_ENABLE */ - -#ifndef FTDF_LITE -#ifndef FTDF_NO_CSL -void ftdf_set_peer_csl_timing(ftdf_ie_list_t *header_ie_list, ftdf_time_t time_stamp) -{ - if (ftdf_req_current->msg_id != FTDF_DATA_REQUEST) { - /* Only use the CSL timing of data frame acks */ - return; - } - - ftdf_data_request_t* data_request = (ftdf_data_request_t*)ftdf_req_current; - ftdf_short_address_t dst_addr = data_request->dst_addr.short_address; - - if ((data_request->dst_addr_mode != FTDF_SHORT_ADDRESS) || (dst_addr == 0xffff)) { - return; - } - - int n; - - /* Search for an existing entry */ - for (n = 0; n < FTDF_NR_OF_CSL_PEERS; n++) { - if (ftdf_peer_csl_timing[n].addr == dst_addr) { - break; - } - } - - if (header_ie_list == NULL) { - if (n < FTDF_NR_OF_CSL_PEERS) { - /* Delete entry */ - ftdf_peer_csl_timing[n].addr = 0xffff; - } - - return; - } - - int ie_nr = 0; - - while (ie_nr < header_ie_list->nr_of_ie && header_ie_list->ie[ie_nr].id != 0x1a) { - ie_nr++; - } - - if (ie_nr == header_ie_list->nr_of_ie) { - return; - } - - if (n == FTDF_NR_OF_CSL_PEERS) { - /* Search for an empty entry */ - for (n = 0; n < FTDF_NR_OF_CSL_PEERS; n++) { - if (ftdf_peer_csl_timing[n].addr == 0xffff) { - break; - } - } - } - - if (n == FTDF_NR_OF_CSL_PEERS) { - /* No free entry, search for the least recently used entry */ - ftdf_time_t max_delta = 0; - int lru = 0; - - for (n = 0; n < FTDF_NR_OF_CSL_PEERS; n++) { - ftdf_time_t delta = time_stamp - ftdf_peer_csl_timing[n].time; - - if (delta > max_delta) { - max_delta = delta; - lru = n; - } - } - - n = lru; - } - - ftdf_period_t phase = (*(ftdf_period_t*)(header_ie_list->ie[0].content.raw + 0)); - ftdf_period_t period = (*(ftdf_period_t*)(header_ie_list->ie[0].content.raw + 2)); - - ftdf_peer_csl_timing[n].addr = dst_addr; - ftdf_peer_csl_timing[n].time = time_stamp - (phase * 10); - ftdf_peer_csl_timing[n].period = period; -} - -void ftdf_get_wakeup_params(ftdf_short_address_t dst_addr, ftdf_time_t *wakeup_start_time, - ftdf_period_t *wakeup_period) -{ - int n; - - for (n = 0; n < FTDF_NR_OF_CSL_PEERS; n++) { - if (ftdf_peer_csl_timing[n].addr == dst_addr) { - break; - } - } - - ftdf_time_t cur_time = REG_GETF(FTDF, FTDF_SYMBOLTIMESNAPSHOTVAL_REG, - SYMBOLTIMESNAPSHOTVAL); - - if (dst_addr == 0xffff || - n == FTDF_NR_OF_CSL_PEERS) { - *wakeup_start_time = cur_time + 5; - *wakeup_period = ftdf_pib.csl_max_period; - - return; - } - - ftdf_time_t peer_time = ftdf_peer_csl_timing[n].time; - ftdf_time_t peer_period = ftdf_peer_csl_timing[n].period * 10; - ftdf_time_t delta = cur_time - peer_time; - - if (delta > (uint32_t)(ftdf_pib.csl_max_age_remote_info * 10)) { - *wakeup_start_time = cur_time + 5; - *wakeup_period = ftdf_pib.csl_max_period; - - return; - } - - ftdf_time_t w_start = peer_time + (((delta / peer_period) + 1) * peer_period) - - ftdf_pib.csl_sync_tx_margin; - delta = w_start - cur_time; - - /* A delta larger than 0x80000000 is assumed a negative delta */ - if ((delta < 3) || (delta > 0x80000000)) { - w_start += peer_period; - } - - *wakeup_period = (ftdf_pib.csl_sync_tx_margin / 10) * 2; - *wakeup_start_time = w_start; -} - -void ftdf_set_csl_sample_time(void) -{ - ftdf_time_t csl_period = ftdf_pib.csl_period * 10; - - ftdf_critical_var(); - ftdf_enter_critical(); - - ftdf_time_t cur_time = REG_GETF(FTDF, FTDF_SYMBOLTIMESNAPSHOTVAL_REG, SYMBOLTIMESNAPSHOTVAL); - ftdf_time_t delta = (cur_time - ftdf_start_csl_sample_time); - - /* A delta larger than 0x80000000 is assumed a negative delta, in this case the sample time - * does not need to be updated. */ - if (delta < 0x80000000) { - if (delta < csl_period) { - ftdf_start_csl_sample_time += csl_period; - - if (delta < 3) { - /* To avoid to set the CSL sample time to a time stamp in the past - * set it to a sample period later if the next sample would be - * within 3 symbols. */ - ftdf_start_csl_sample_time += csl_period; - } - - } else { - - ftdf_start_csl_sample_time = - ftdf_start_csl_sample_time + ((delta / csl_period) + 1) * csl_period; - } - - REG_SETF(FTDF, FTDF_LMAC_CONTROL_8_REG, MACCSLSTARTSAMPLETIME, ftdf_start_csl_sample_time); - } - - ftdf_exit_critical(); -} -#endif /* FTDF_NO_CSL */ -#endif /* !FTDF_LITE */ - -ftdf_time64_t ftdf_get_cur_time64(void) -{ - ftdf_time_t new_time = REG_GETF(FTDF, FTDF_SYMBOLTIMESNAPSHOTVAL_REG, SYMBOLTIMESNAPSHOTVAL); - - if (new_time < ftdf_cur_time[0]) { - ftdf_cur_time[1]++; - } - - ftdf_cur_time[0] = new_time; - - return *(ftdf_time64_t*)ftdf_cur_time; -} - -void ftdf_init_cur_time64(void) -{ - ftdf_cur_time[0] = REG_GETF(FTDF, FTDF_SYMBOLTIMESNAPSHOTVAL_REG, SYMBOLTIMESNAPSHOTVAL); - ftdf_cur_time[1] = 0; -} - -void ftdf_get_ext_address(void) -{ - uint32_t *ext_address = (uint32_t*)&ftdf_pib.ext_address; - - ext_address[0] = REG_GETF(FTDF, FTDF_GLOB_CONTROL_2_REG, AEXTENDEDADDRESS_L); - ext_address[1] = REG_GETF(FTDF, FTDF_GLOB_CONTROL_3_REG, AEXTENDEDADDRESS_H); -} - -void ftdf_set_ext_address(void) -{ - uint32_t *ext_address = (uint32_t*)&ftdf_pib.ext_address; - - REG_SETF(FTDF, FTDF_GLOB_CONTROL_2_REG, AEXTENDEDADDRESS_L, ext_address[0]); - REG_SETF(FTDF, FTDF_GLOB_CONTROL_3_REG, AEXTENDEDADDRESS_H, ext_address[1]); -} - -void ftdf_get_ack_wait_duration(void) -{ - ftdf_pib.ack_wait_duration = REG_GETF(FTDF, FTDF_MACACKWAITDURATION_REG, MACACKWAITDURATION); -} - -#ifndef FTDF_LITE -void ftdf_get_enh_ack_wait_duration(void) -{ - ftdf_pib.enh_ack_wait_duration = REG_GETF(FTDF, FTDF_MACENHACKWAITDURATION_REG, - MACENHACKWAITDURATION); -} - -void ftdf_set_enh_ack_wait_duration(void) -{ - REG_SETF(FTDF, FTDF_MACENHACKWAITDURATION_REG, MACENHACKWAITDURATION, - ftdf_pib.enh_ack_wait_duration); -} - -void ftdf_get_implicit_broadcast(void) -{ - ftdf_pib.implicit_broadcast = REG_GETF(FTDF, FTDF_RX_CONTROL_0_REG, MACIMPLICITBROADCAST); -} - -void ftdf_set_implicit_broadcast(void) -{ - REG_SETF(FTDF, FTDF_RX_CONTROL_0_REG, MACIMPLICITBROADCAST, ftdf_pib.implicit_broadcast); -} -#endif /* !FTDF_LITE */ - -void ftdf_set_short_address(void) -{ - REG_SETF(FTDF, FTDF_GLOB_CONTROL_1_REG, MACSHORTADDRESS, ftdf_pib.short_address); -} - -#ifndef FTDF_LITE -void ftdf_set_simple_address(void) -{ - REG_SETF(FTDF, FTDF_GLOB_CONTROL_0_REG, MACSIMPLEADDRESS, ftdf_pib.simple_address); -} -#endif /* !FTDF_LITE */ - -void ftdf_get_rx_on_when_idle(void) -{ - ftdf_pib.rx_on_when_idle = REG_GETF(FTDF, FTDF_LMAC_CONTROL_0_REG, RXALWAYSON); -} - -void ftdf_set_rx_on_when_idle(void) -{ -#if dg_configCOEX_ENABLE_CONFIG && !FTDF_USE_AUTO_PTI - /* We do not force decision here. It will be automatically made when FTDF begins - * transaction. - */ - hw_coex_update_ftdf_pti((hw_coex_pti_t)ftdf_get_rx_pti(), NULL, false); -#endif /* dg_configCOEX_ENABLE_CONFIG && !FTDF_USE_AUTO_PTI */ - ftdf_set_link_quality_mode(); - REG_SETF(FTDF, FTDF_LMAC_CONTROL_OS_REG, RXENABLE, 0); - REG_SETF(FTDF, FTDF_LMAC_CONTROL_0_REG, RXALWAYSON, ftdf_pib.rx_on_when_idle); - REG_SETF(FTDF, FTDF_LMAC_CONTROL_OS_REG, RXENABLE, 1); - -} - -void ftdf_getpan_id(void) -{ - ftdf_pib.pan_id = REG_GETF(FTDF, FTDF_GLOB_CONTROL_1_REG, MACPANID); -} - -void ftdf_setpan_id(void) -{ - REG_SETF(FTDF, FTDF_GLOB_CONTROL_1_REG, MACPANID, ftdf_pib.pan_id); -} - -void ftdf_get_current_channel(void) -{ - ftdf_pib.current_channel = (REG_GETF(FTDF, FTDF_LMAC_CONTROL_1_REG, PHYRXATTR_CN)) + 11; -} - -void ftdf_set_current_channel(void) -{ - uint32_t phy_ack_attr = 0; - - REG_SETF(FTDF, FTDF_LMAC_CONTROL_1_REG, PHYRXATTR_CN, (ftdf_pib.current_channel - 11)); - - ftdf_set_link_quality_mode(); - REG_SET_FIELD(FTDF, FTDF_LMAC_CONTROL_4_REG, PHYACKATTR_DEM_PTI, phy_ack_attr, 0x08); - REG_SET_FIELD(FTDF, FTDF_LMAC_CONTROL_4_REG, PHYACKATTR_CN, phy_ack_attr, - (ftdf_pib.current_channel - 11)); - REG_SET_FIELD(FTDF, FTDF_LMAC_CONTROL_4_REG, PHYACKATTR_RF_GPIO_PINS, phy_ack_attr, - (ftdf_pib.tx_power & 0x07)); - - FTDF->FTDF_LMAC_CONTROL_4_REG = phy_ack_attr; -} - -void ftdf_set_tx_power(void) -{ - /* Just like setCurrentChannel, this sets pyAckAttr */ - uint32_t phy_ack_attr = 0; - - REG_SET_FIELD(FTDF, FTDF_LMAC_CONTROL_4_REG, PHYACKATTR_DEM_PTI, phy_ack_attr, 0x08); - REG_SET_FIELD(FTDF, FTDF_LMAC_CONTROL_4_REG, PHYACKATTR_CN, phy_ack_attr, - (ftdf_pib.current_channel - 11)); - REG_SET_FIELD(FTDF, FTDF_LMAC_CONTROL_4_REG, PHYACKATTR_RF_GPIO_PINS, phy_ack_attr, - (ftdf_pib.tx_power & 0x07)); - - FTDF->FTDF_LMAC_CONTROL_4_REG = phy_ack_attr; -} - -void ftdf_get_max_frame_total_wait_time(void) -{ - ftdf_pib.max_frame_total_wait_time = REG_GETF(FTDF, FTDF_LMAC_CONTROL_3_REG, MACMAXFRAMETOTALWAITTIME); -} - -void ftdf_set_max_frame_total_wait_time(void) -{ - REG_SETF(FTDF, FTDF_LMAC_CONTROL_3_REG, MACMAXFRAMETOTALWAITTIME, ftdf_pib.max_frame_total_wait_time); -} - -void ftdf_set_max_csma_backoffs(void) -{ -#ifndef FTDF_LITE - if ((ftdf_pib.le_enabled == FTDF_FALSE) && (ftdf_pib.tsch_enabled == FTDF_FALSE)) -#endif /* !FTDF_LITE */ - { - REG_SETF(FTDF, FTDF_TX_CONTROL_0_REG, MACMAXCSMABACKOFFS, ftdf_pib.max_csma_backoffs); - } -} - -void ftdf_set_max_be(void) -{ - REG_SETF(FTDF, FTDF_TX_CONTROL_0_REG, MACMAXBE, ftdf_pib.max_be); -} - -void ftdf_set_min_be(void) -{ -#ifndef FTDF_LITE - if ((ftdf_pib.le_enabled == FTDF_FALSE) && (ftdf_pib.tsch_enabled == FTDF_FALSE)) -#endif /* !FTDF_LITE */ - { - REG_SETF(FTDF, FTDF_TX_CONTROL_0_REG, MACMINBE, ftdf_pib.min_be); - } -} - -#ifndef FTDF_LITE -#ifndef FTDF_NO_CSL -void ftdf_set_le_enabled(void) -{ - REG_SETF(FTDF, FTDF_LMAC_CONTROL_7_REG, MACCSLSAMPLEPERIOD, 66); - REG_SETF(FTDF, FTDF_LMAC_CONTROL_9_REG, MACCSLDATAPERIOD, 66); - REG_SETF(FTDF, FTDF_LMAC_CONTROL_10_REG, MACCSLMARGINRZ, 1); - - if (ftdf_pib.le_enabled) { - REG_SETF(FTDF, FTDF_TX_CONTROL_0_REG, MACMAXCSMABACKOFFS, 0); - REG_SETF(FTDF, FTDF_TX_CONTROL_0_REG, MACMINBE, 0); - - if (ftdf_old_le_enabled == FTDF_FALSE) { - - if (ftdf_wake_up_enable_le == FTDF_FALSE) { - ftdf_start_csl_sample_time = - REG_GETF(FTDF, FTDF_SYMBOLTIMESNAPSHOTVAL_REG, SYMBOLTIMESNAPSHOTVAL); - ftdf_set_csl_sample_time(); - - } else { - - REG_SETF(FTDF, FTDF_LMAC_CONTROL_8_REG, MACCSLSTARTSAMPLETIME, - ftdf_start_csl_sample_time); - } - } - - } else { - - REG_SETF(FTDF, FTDF_TX_CONTROL_0_REG, MACMAXCSMABACKOFFS, ftdf_pib.max_csma_backoffs); - REG_SETF(FTDF, FTDF_TX_CONTROL_0_REG, MACMINBE, ftdf_pib.min_be); - } - - REG_SETF(FTDF, FTDF_GLOB_CONTROL_0_REG, MACLEENABLED, ftdf_pib.le_enabled); - - ftdf_old_le_enabled = ftdf_pib.le_enabled; -} - -void ftdf_get_csl_frame_pending_wait(void) -{ - ftdf_pib.csl_frame_pending_wait = REG_GETF(FTDF, FTDF_LMAC_CONTROL_9_REG, MACCSLFRAMEPENDINGWAITT); -} - -void ftdf_set_csl_frame_pending_wait(void) -{ - REG_SETF(FTDF, FTDF_LMAC_CONTROL_9_REG, MACCSLFRAMEPENDINGWAITT, - ftdf_pib.csl_frame_pending_wait); -} -#endif /* FTDF_NO_CSL */ -#endif /* !FTDF_LITE */ - -void ftdf_get_lmac_pm_data(void) -{ - ftdf_pib.performance_metrics.fcs_error_count = - REG_GETF(FTDF, FTDF_MACFCSERRORCOUNT_REG, MACFCSERRORCOUNT) + - ftdf_lmac_counters.fcs_error_cnt; -} - -void ftdf_get_lmac_traffic_counters(void) -{ - ftdf_pib.traffic_counters.tx_std_ack_frm_cnt = - REG_GETF(FTDF, FTDF_MACTXSTDACKFRMCNT_REG, MACTXSTDACKFRMCNT) + - ftdf_lmac_counters.tx_std_ack_cnt; - - ftdf_pib.traffic_counters.rx_std_ack_frm_ok_cnt = - REG_GETF(FTDF, FTDF_MACRXSTDACKFRMOKCNT_REG, MACRXSTDACKFRMOKCNT) + - ftdf_lmac_counters.rx_std_ack_cnt; -} - -void ftdf_get_keep_phy_enabled(void) -{ - ftdf_pib.keep_phy_enabled = REG_GETF(FTDF, FTDF_LMAC_CONTROL_0_REG, KEEP_PHY_EN); -} - -void ftdf_set_keep_phy_enabled(void) -{ - REG_SETF(FTDF, FTDF_LMAC_CONTROL_0_REG, KEEP_PHY_EN, ftdf_pib.keep_phy_enabled); -} - -void ftdf_set_bo_irq_threshold(void) -{ - REG_SETF(FTDF, FTDF_LMAC_CONTROL_11_REG, CSMA_CA_BO_THRESHOLD, ftdf_pib.bo_irq_threshold); -} -void ftdf_get_bo_irq_threshold(void) -{ - ftdf_pib.bo_irq_threshold = REG_GETF(FTDF, FTDF_LMAC_CONTROL_11_REG, CSMA_CA_BO_THRESHOLD); -} -void ftdf_set_pti_config(void) -{ - REG_SETF(FTDF, FTDF_TX_PRIORITY_0_REG, PTI_TX, ftdf_pib.pti_config.ptis[FTDF_PTI_CONFIG_TX]); - REG_SETF(FTDF, FTDF_TX_PRIORITY_1_REG, PTI_TX, ftdf_pib.pti_config.ptis[FTDF_PTI_CONFIG_TX]); - REG_SETF(FTDF, FTDF_TX_PRIORITY_2_REG, PTI_TX, ftdf_pib.pti_config.ptis[FTDF_PTI_CONFIG_RX]); - REG_SETF(FTDF, FTDF_LMAC_CONTROL_0_REG, PTI_RX, ftdf_pib.pti_config.ptis[FTDF_PTI_CONFIG_RX]); -} - -#ifndef FTDF_LITE -#ifndef FTDF_NO_TSCH -void ftdf_set_timeslot_template(void) -{ - REG_SETF(FTDF, FTDF_TSCH_CONTROL_0_REG, MACTSTXACKDELAY, - ftdf_pib.timeslot_template.ts_tx_ack_delay); - REG_SETF(FTDF, FTDF_TSCH_CONTROL_0_REG, MACTSRXWAIT, ftdf_pib.timeslot_template.ts_rx_wait); - REG_SETF(FTDF, FTDF_TSCH_CONTROL_2_REG, MACTSRXACKDELAY, - ftdf_pib.timeslot_template.ts_rx_ack_delay); - REG_SETF(FTDF, FTDF_TSCH_CONTROL_2_REG, MACTSACKWAIT, - ftdf_pib.timeslot_template.ts_ack_wait); - REG_SETF(FTDF, FTDF_TSCH_CONTROL_1_REG, MACTSRXTX, (ftdf_pib.timeslot_template.ts_rx_tx - - FTDF_PHYTRXWAIT - FTDF_PHYTXSTARTUP - FTDF_PHYTXLATENCY)); -} -#endif /* FTDF_NO_TSCH */ -#endif /* !FTDF_LITE */ - -#if FTDF_FP_BIT_MODE == FTDF_FP_BIT_MODE_AUTO -/************************************ FPPR common functions ***************************************/ -#ifndef FTDF_LITE - -ftdf_boolean_t ftdf_fp_fsm_short_address_new(ftdf_pan_id_t panId, ftdf_short_address_t short_address) -{ - uint8_t entry; - uint8_t short_addr_idx; - - if (ftdf_fppr_get_free_short_address(&entry, &short_addr_idx) == FTDF_FALSE) { - return FTDF_FALSE; - } - - ftdf_fppr_set_short_address(entry, short_addr_idx, short_address); - ftdf_fppr_set_short_address_valid(entry, short_addr_idx, FTDF_TRUE); - - return FTDF_TRUE; -} - -ftdf_boolean_t ftdf_fp_fsm_rxt_address_new(ftdf_pan_id_t panId, ftdf_ext_address_t ext_address) -{ - uint8_t entry; - - if (ftdf_fppr_get_free_ext_address(&entry) == FTDF_FALSE) { - return FTDF_FALSE; - } - - ftdf_fppr_set_ext_address(entry, ext_address); - ftdf_fppr_set_ext_address_valid(entry, FTDF_TRUE); - - return FTDF_TRUE; -} - -void ftdf_fp_fsm_short_address_last_frame_pending(ftdf_pan_id_t pan_id, ftdf_short_address_t short_address) { -#if FTDF_FPPR_DEFER_INVALIDATION - ftdf_fppr_pending.addr_mode = FTDF_SHORT_ADDRESS; - ftdf_fppr_pending.pan_id = pan_id; - ftdf_fppr_pending.addr.short_address = short_address; -#else /* FTDF_FPPR_DEFER_INVALIDATION */ - uint8_t entry; - uint8_t short_addr_idx; - ftdf_boolean_t found = ftdf_fppr_lookup_short_address(short_address, &entry, &short_addr_idx); - ASSERT_WARNING(found); - ftdf_fppr_set_short_address_valid(entry, short_addr_idx, FTDF_FALSE); -#endif /* FTDF_FPPR_DEFER_INVALIDATION */ -} - -void ftdf_fp_fsm_ext_address_last_frame_pending(ftdf_pan_id_t pan_id, ftdf_ext_address_t ext_address) { -#if FTDF_FPPR_DEFER_INVALIDATION - ftdf_fppr_pending.addr_mode = FTDF_EXTENDED_ADDRESS; - ftdf_fppr_pending.pan_id = pan_id; - ftdf_fppr_pending.addr.ext_address = ext_address; -#else /* FTDF_FPPR_DEFER_INVALIDATION */ - uint8_t entry; - ftdf_boolean_t found = ftdf_fppr_lookup_ext_address(ext_address, &entry); - ASSERT_WARNING(found); - ftdf_fppr_set_ext_address_valid(entry, FTDF_FALSE); -#endif /* FTDF_FPPR_DEFER_INVALIDATION */ -} - -void ftdf_fp_fsm_clear_pending(void) -{ -#if FTDF_FPPR_DEFER_INVALIDATION - int n; - if (ftdf_fppr_pending.addr_mode == FTDF_NO_ADDRESS) { - return; - } - if (ftdf_fppr_pending.addr_mode == FTDF_SHORT_ADDRESS) { - for (n = 0; n < FTDF_NR_OF_REQ_BUFFERS; n++) { - if (ftdf_tx_pending_list[n].addr_mode == FTDF_SHORT_ADDRESS) { - if ((ftdf_tx_pending_list[n].pan_id == ftdf_fppr_pending.pan_id) && - (ftdf_tx_pending_list[n].addr.short_address == - ftdf_fppr_pending.addr.short_address)) { - return; - } - } - } - // Address not found. - uint8_t entry; - uint8_t short_addr_idx; - ftdf_boolean_t found = ftdf_fppr_lookup_short_address( - ftdf_fppr_pending.addr.short_address, &entry, &short_addr_idx); - ASSERT_WARNING(found); - ftdf_fppr_set_short_address_valid(entry, short_addr_idx, FTDF_FALSE); - } else if (ftdf_fppr_pending.addr_mode == FTDF_EXTENDED_ADDRESS) { - for (n = 0; n < FTDF_NR_OF_REQ_BUFFERS; n++) { - if (ftdf_tx_pending_list[n].addr_mode == FTDF_EXTENDED_ADDRESS) { - if (ftdf_tx_pending_list[n].addr.ext_address == - ftdf_fppr_pending.addr.ext_address) { - return; - } - } - } - // Address not found. - uint8_t entry; - ftdf_boolean_t found = ftdf_fppr_lookup_ext_address(ftdf_fppr_pending.addr.ext_address, - &entry); - ASSERT_WARNING(found); - ftdf_fppr_set_ext_address_valid(entry, FTDF_FALSE); - } else { - - } - ftdf_fppr_pending.addr_mode = FTDF_NO_ADDRESS; -#endif /* FTDF_FPPR_DEFER_INVALIDATION */ -} - -#endif /* #ifndef FTDF_LITE */ -/*********************************** FPPR low-level access ****************************************/ -void ftdf_fppr_reset(void) -{ - unsigned int i; - for (i = 0; i < FTDF_FPPR_TABLE_ENTRIES; i++) { - *REG_GET_ADDR_INDEXED(FTDF, FTDF_SIZE_AND_VAL_0_REG, 0x10, i) = 0; - } -} - -ftdf_short_address_t ftdf_fppr_get_short_address(uint8_t entry, uint8_t short_addr_idx) -{ - ASSERT_WARNING(entry < FTDF_FPPR_TABLE_ENTRIES); - switch (short_addr_idx) { - case 0: - return (ftdf_short_address_t) - *REG_GET_ADDR_INDEXED(FTDF, FTDF_LONG_ADDR_0_0_REG, 0x10, entry) & - 0x0000ffff; - case 1: - return (ftdf_short_address_t) - (*REG_GET_ADDR_INDEXED(FTDF, FTDF_LONG_ADDR_0_0_REG, 0x10, entry) >> 16) & - 0x0000ffff; - case 2: - return (ftdf_short_address_t) - *REG_GET_ADDR_INDEXED(FTDF, FTDF_LONG_ADDR_1_0_REG, 0x10, entry) & - 0x0000ffff; - case 3: - return (ftdf_short_address_t) - (*REG_GET_ADDR_INDEXED(FTDF, FTDF_LONG_ADDR_1_0_REG, 0x10, entry) >> 16) & - 0x0000ffff; - default: - ASSERT_WARNING(0); - } -} - -void ftdf_fppr_set_short_address(uint8_t entry, uint8_t short_addr_idx, - ftdf_short_address_t short_address) -{ - ASSERT_WARNING(entry < FTDF_FPPR_TABLE_ENTRIES); - uint32_t val32; - volatile uint32_t *long_addr_reg; - switch (short_addr_idx) { - case 0: - long_addr_reg = REG_GET_ADDR_INDEXED(FTDF, FTDF_LONG_ADDR_0_0_REG, 0x10, entry); - val32 = *long_addr_reg; - val32 &= 0xffff0000; - val32 |= (short_address & 0x0000ffff); - *long_addr_reg = val32; - break; - case 1: - long_addr_reg = REG_GET_ADDR_INDEXED(FTDF, FTDF_LONG_ADDR_0_0_REG, 0x10, entry); - val32 = *long_addr_reg; - val32 &= 0x0000ffff; - val32 |= (short_address & 0x0000ffff) << 16; - *long_addr_reg = val32; - break; - case 2: - long_addr_reg = REG_GET_ADDR_INDEXED(FTDF, FTDF_LONG_ADDR_1_0_REG, 0x10, entry); - val32 = *long_addr_reg; - val32 &= 0xffff0000; - val32 |= (short_address & 0x0000ffff); - *long_addr_reg = val32; - break; - case 3: - long_addr_reg = REG_GET_ADDR_INDEXED(FTDF, FTDF_LONG_ADDR_1_0_REG, 0x10, entry); - val32 = *long_addr_reg; - val32 &= 0x0000ffff; - val32 |= (short_address & 0x0000ffff) << 16; - *long_addr_reg = val32; - break; - default: - ASSERT_WARNING(0); - } -} - -ftdf_boolean_t ftdf_fppr_get_short_address_valid(uint8_t entry, uint8_t short_addr_idx) -{ - ASSERT_WARNING(entry < FTDF_FPPR_TABLE_ENTRIES); - ASSERT_WARNING(short_addr_idx < 4); - uint32_t val32 = *REG_GET_ADDR_INDEXED(FTDF, FTDF_SIZE_AND_VAL_0_REG, 0x10, entry); - return ((val32 & (REG_MSK(FTDF, FTDF_SIZE_AND_VAL_0_REG, SHORT_LONGNOT) | (1 << short_addr_idx))) == - (REG_MSK(FTDF, FTDF_SIZE_AND_VAL_0_REG, SHORT_LONGNOT) | (1 << short_addr_idx))) ? - FTDF_TRUE : FTDF_FALSE; -} - -void ftdf_fppr_set_short_address_valid(uint8_t entry, uint8_t short_addr_idx, - ftdf_boolean_t valid) -{ - ASSERT_WARNING(entry < FTDF_FPPR_TABLE_ENTRIES); - ASSERT_WARNING(short_addr_idx < 4); - volatile uint32_t *reg_val = REG_GET_ADDR_INDEXED(FTDF, FTDF_SIZE_AND_VAL_0_REG, 0x10, entry); - if (valid) { - *reg_val |= REG_MSK(FTDF, FTDF_SIZE_AND_VAL_0_REG, SHORT_LONGNOT) | (1 << short_addr_idx); /* Also indicate short address. */ - } else { - *reg_val &= ~(1 << short_addr_idx); - } -} - -ftdf_ext_address_t ftdf_fppr_get_ext_address(uint8_t entry) -{ - ftdf_ext_address_t ext_address; - ASSERT_WARNING(entry < FTDF_FPPR_TABLE_ENTRIES); - ext_address = (ftdf_ext_address_t) - (*REG_GET_ADDR_INDEXED(FTDF, FTDF_LONG_ADDR_1_0_REG, 0x10, entry)) << 32; - ext_address |= (ftdf_ext_address_t) - (*REG_GET_ADDR_INDEXED(FTDF, FTDF_LONG_ADDR_0_0_REG, 0x10, entry)); - - return ext_address; -} - -void ftdf_fppr_set_ext_address(uint8_t entry, ftdf_ext_address_t ext_address) -{ - ASSERT_WARNING(entry < FTDF_FPPR_TABLE_ENTRIES); - *REG_GET_ADDR_INDEXED(FTDF, FTDF_LONG_ADDR_0_0_REG, 0x10, entry) = (uint32_t) ext_address; - *REG_GET_ADDR_INDEXED(FTDF, FTDF_LONG_ADDR_1_0_REG, 0x10, entry) = (uint32_t) (ext_address >> 32); -} - -ftdf_boolean_t ftdf_fppr_get_ext_address_valid(uint8_t entry) -{ - return (REG_GETF_INDEXED(FTDF, FTDF_SIZE_AND_VAL_0_REG, VALID_SA, 0x10, entry) == 0x1) ? - FTDF_TRUE : FTDF_FALSE; -} - -void ftdf_fppr_set_ext_address_valid(uint8_t entry, ftdf_boolean_t valid) -{ - ASSERT_WARNING(entry < FTDF_FPPR_TABLE_ENTRIES); - if (valid) { - /* Also indicate ext address. */ - *REG_GET_ADDR_INDEXED(FTDF, FTDF_SIZE_AND_VAL_0_REG, 0x10, entry) = 0x1; - } else { - *REG_GET_ADDR_INDEXED(FTDF, FTDF_SIZE_AND_VAL_0_REG, 0x10, entry) = 0x0; - } -} - -ftdf_boolean_t ftdf_fppr_get_free_short_address(uint8_t *entry, uint8_t *short_addr_idx) -{ - int i, j; - uint32_t size_and_val; - int empty_entry; - bool empty_found = false, non_empty_found = false; - for (i = 0; i < FTDF_FPPR_TABLE_ENTRIES; i++) { - size_and_val = *REG_GET_ADDR_INDEXED(FTDF, FTDF_SIZE_AND_VAL_0_REG, 0x10, i); - if (size_and_val == 0x1) { - /* Check if there is a valid extended address. */ - continue; - } else if ((size_and_val & REG_MSK(FTDF, FTDF_SIZE_AND_VAL_0_REG, SHORT_LONGNOT)) == 0) { - /* There is an invalid extended address, ignore SA valid bits */ - size_and_val = 0; - } else { - /* There is a SA. We are interested in bits V0 - V3. */ - size_and_val &= 0xf; - } - - /* Check if entire entry is free. */ - if (size_and_val == 0) { - /* We prefer to use partially full entries. Make note of this and - * continue. */ - if (!empty_found) { - empty_entry = i; - empty_found = true; - } - continue; - } - /* Check for free short address entries. */ - size_and_val = (~size_and_val) & 0xf; - j = 0; - while (size_and_val) { - if (size_and_val & 0x1) { - non_empty_found = true; - break; - } - size_and_val >>= 1; - j++; - } - if (non_empty_found) { - break; - } - } - if (non_empty_found) { - *entry = i; - *short_addr_idx = j; - } else if (empty_found) { - *entry = empty_entry; - *short_addr_idx = 0; - } else { - return FTDF_FALSE; - } - return FTDF_TRUE; -} - -ftdf_boolean_t ftdf_fppr_get_free_ext_address(uint8_t * entry) -{ - int i; - uint32_t size_and_val; - bool found = false; - for (i = 0; i < FTDF_FPPR_TABLE_ENTRIES; i++) { - size_and_val = *REG_GET_ADDR_INDEXED(FTDF, FTDF_SIZE_AND_VAL_0_REG, 0x10, i); - /* Check if there is no valid extended or short address. */ - if (!size_and_val || (size_and_val == REG_MSK(FTDF, FTDF_SIZE_AND_VAL_0_REG, SHORT_LONGNOT))) { - found = true; - break; - } - } - if (found) { - *entry = i; - } else { - return FTDF_FALSE; - } - return FTDF_TRUE; -} - -ftdf_boolean_t ftdf_fppr_lookup_short_address(ftdf_short_address_t short_addr, uint8_t *entry, - uint8_t *short_addr_idx) -{ - uint8_t i; - uint32_t size_and_val; - uint32_t saPart; - for (i = 0; i < FTDF_FPPR_TABLE_ENTRIES; i++) { - size_and_val = *REG_GET_ADDR_INDEXED(FTDF, FTDF_SIZE_AND_VAL_0_REG, 0x10, i); - /* Check if there is a valid short address. */ - if (!(size_and_val & REG_MSK(FTDF, FTDF_SIZE_AND_VAL_0_REG, SHORT_LONGNOT)) || - !(size_and_val & REG_MSK(FTDF, FTDF_SIZE_AND_VAL_0_REG, VALID_SA))) { - continue; - } - saPart = REG_GETF_INDEXED(FTDF, FTDF_LONG_ADDR_0_0_REG, EXP_SA_L, 0x10, i); - if (size_and_val & 0x1) { - if (short_addr == (ftdf_short_address_t) (saPart & 0x0000ffff)) { - *entry = i; - *short_addr_idx = 0; - return FTDF_TRUE; - } - } - if (size_and_val & 0x2) { - if (short_addr == (ftdf_short_address_t) ((saPart >> 16) & 0x0000ffff)) { - *entry = i; - *short_addr_idx = 1; - return FTDF_TRUE; - } - } - saPart = REG_GETF_INDEXED(FTDF, FTDF_LONG_ADDR_1_0_REG, EXP_SA_H, 0x10, i); - if (size_and_val & 0x4) { - if (short_addr == (ftdf_short_address_t) (saPart & 0x0000ffff)) { - *entry = i; - *short_addr_idx = 2; - return FTDF_TRUE; - } - } - if (size_and_val & 0x8) { - if (short_addr == ((ftdf_short_address_t) (saPart >> 16) & 0x0000ffff)) { - *entry = i; - *short_addr_idx = 3; - return FTDF_TRUE; - } - } - } - return FTDF_FALSE; -} - -ftdf_boolean_t ftdf_fppr_lookup_ext_address(ftdf_ext_address_t ext_addr, uint8_t *entry) -{ - uint8_t i; - uint32_t size_and_val; - uint32_t ext_addr_hi, ext_addr_lo; - ext_addr_hi = (uint32_t) ((ext_addr >> 32) & 0xffffffff); - ext_addr_lo = (uint32_t) (ext_addr & 0xffffffff); - for (i = 0; i < FTDF_FPPR_TABLE_ENTRIES; i++) { - size_and_val = *REG_GET_ADDR_INDEXED(FTDF, FTDF_SIZE_AND_VAL_0_REG, 0x10, i); - /* Check if there is a valid extended address. */ - if (size_and_val != 0x1) { - continue; - } - if ((ext_addr_lo == REG_GETF_INDEXED(FTDF, FTDF_LONG_ADDR_0_0_REG, EXP_SA_L, 0x10, i)) && - (ext_addr_hi == REG_GETF_INDEXED(FTDF, FTDF_LONG_ADDR_1_0_REG, EXP_SA_H, 0x10, i))) { - *entry = i; - return FTDF_TRUE; - } - } - return FTDF_FALSE; -} - -#endif /* FTDF_FP_BIT_MODE == FTDF_FP_BIT_MODE_AUTO */ - -void ftdf_fppr_set_mode(ftdf_boolean_t match_fp, ftdf_boolean_t fp_override, ftdf_boolean_t fp_force) -{ - REG_SETF(FTDF, FTDF_LMAC_CONTROL_3_REG, ADDR_TAB_MATCH_FP_VALUE, match_fp ? 1 : 0); - REG_SETF(FTDF, FTDF_LMAC_CONTROL_3_REG, FP_OVERRIDE,fp_override ? 1 : 0); - REG_SETF(FTDF, FTDF_LMAC_CONTROL_3_REG, FP_FORCE_VALUE, fp_force ? 1 : 0); -} - -#if FTDF_FP_BIT_TEST_MODE -void ftdf_fppr_get_mode(ftdf_boolean_t *match_fp, ftdf_boolean_t *fp_override, ftdf_boolean_t *fp_force) -{ - *match_fp = REG_GETF(FTDF, FTDF_LMAC_CONTROL_3_REG, ADDR_TAB_MATCH_FP_VALUE) ? FTDF_TRUE : FTDF_FALSE; - *fp_override = REG_GETF(FTDF, FTDF_LMAC_CONTROL_3_REG, FP_OVERRIDE) ? FTDF_TRUE : FTDF_FALSE; - *fp_force = REG_GETF(FTDF, FTDF_LMAC_CONTROL_3_REG, FP_FORCE_VALUE) ? FTDF_TRUE : FTDF_FALSE; -} -#endif // FTDF_FP_BIT_TEST_MODE - -void ftdf_lpdp_enable(ftdf_boolean_t enable) -{ - REG_SETF(FTDF, FTDF_LMAC_CONTROL_3_REG, FTDF_LPDP_ENABLE, enable ? 1 : 0); -} - -#if FTDF_FP_BIT_TEST_MODE -ftdf_boolean_t ftdf_lpdp_is_enabled(void) -{ - return REG_GETF(FTDF, FTDF_LMAC_CONTROL_3_REG, FTDF_LPDP_ENABLE) ? FTDF_TRUE : FTDF_FALSE; -} -#endif - -#if FTDF_USE_SLEEP_DURING_BACKOFF - -static inline void ftdf_sdb_save_state(void) -{ - volatile uint32_t *tx_fifo_ptr = &FTDF->FTDF_TX_FIFO_0_0_REG; - uint32_t * dstPtr = (uint32_t *) ftdf_sdb.buffer; - uint8_t word_length_rem; - - ftdf_sdb.nr_of_backoffs = REG_GETF(FTDF, FTDF_LMAC_CONTROL_STATUS_REG, CSMA_CA_NB_STAT); - - /* Read first 4 bytes. */ - *dstPtr++ = *tx_fifo_ptr++; - - ASSERT_WARNING((ftdf_sdb.buffer[0] >= 3) && (ftdf_sdb.buffer[0] < FTDF_BUFFER_LENGTH)); - /* The length is the buffer length excluding the length byte itself */ - word_length_rem = (ftdf_sdb.buffer[0] + 4) / 4 - 1; /* 1 word we already read */ - - while (word_length_rem--) { - *dstPtr++ = *tx_fifo_ptr++; - } - - ftdf_sdb.metadata_0 = FTDF->FTDF_TX_META_DATA_0_0_REG; - ftdf_sdb.metadata_1 = FTDF->FTDF_TX_META_DATA_1_0_REG; - - ftdf_sdb.phy_csma_ca_attr = FTDF->FTDF_LMAC_CONTROL_5_REG; -} - -static inline void ftdf_sdb_resume(void) -{ - volatile uint32_t *tx_fifo_ptr = &FTDF->FTDF_TX_FIFO_0_0_REG; - uint32_t * src_ptr = (uint32_t *) ftdf_sdb.buffer; - - uint8_t word_length_rem; - - REG_SETF(FTDF, FTDF_LMAC_CONTROL_11_REG, CSMA_CA_NB_VAL, ftdf_sdb.nr_of_backoffs); - - REG_SETF(FTDF, FTDF_LMAC_CONTROL_OS_REG, CSMA_CA_RESUME_SET, 1); - - ASSERT_WARNING((ftdf_sdb.buffer[0] >= 3) && (ftdf_sdb.buffer[0] < FTDF_BUFFER_LENGTH)); - - /* The length is the buffer length excluding the length byte itself */ - word_length_rem = (ftdf_sdb.buffer[0] + 4) / 4; - - while (word_length_rem--) { - *tx_fifo_ptr++ = *src_ptr++; - } - - REG_SET_MASKED(FTDF, FTDF_LMAC_CONTROL_5_REG, - (REG_MSK(FTDF, FTDF_LMAC_CONTROL_5_REG, PHYCSMACAATTR_DEM_PTI) | - REG_MSK(FTDF, FTDF_LMAC_CONTROL_5_REG, PHYCSMACAATTR_CN) | - REG_MSK(FTDF, FTDF_LMAC_CONTROL_5_REG, PHYCSMACAATTR_CALCAP) | - REG_MSK(FTDF, FTDF_LMAC_CONTROL_5_REG, PHYCSMACAATTR_RF_GPIO_PINS) | - REG_MSK(FTDF, FTDF_LMAC_CONTROL_5_REG, PHYCSMACAATTR_HSI)), ftdf_sdb.phy_csma_ca_attr); - - FTDF->FTDF_TX_META_DATA_0_0_REG = ftdf_sdb.metadata_0; - - FTDF->FTDF_TX_META_DATA_1_0_REG = ftdf_sdb.metadata_1; - - REG_SETF(FTDF, FTDF_TX_SET_OS_REG, TX_FLAG_SET, - (REG_GETF(FTDF, FTDF_TX_SET_OS_REG, TX_FLAG_SET) | (1 << FTDF_TX_DATA_BUFFER))); -} - -static inline void ftdf_sdb_reset(void) -{ - REG_SETF(FTDF, FTDF_LMAC_CONTROL_OS_REG, CSMA_CA_RESUME_CLEAR, 1); -} - -static inline void ftdf_sdb_set_cca_retry_time(void) -{ - ftdf_time_t timestamp = REG_GETF(FTDF, FTDF_SYMBOLTIMESNAPSHOTVAL_REG, SYMBOLTIMESNAPSHOTVAL); - ftdf_time_t bo_stat = REG_GETF(FTDF, FTDF_LMAC_CONTROL_STATUS_REG, CSMA_CA_BO_STAT) * - FTDF_UNIT_BACKOFF_PERIOD; - ftdf_sdb.cca_retry_time = timestamp + bo_stat; -} - -void ftdf_sdb_fsm_reset(void) { - ftdf_sdb_reset(); - ftdf_sdb.state = FTDF_SDB_STATE_INIT; -} - -void ftdf_sdb_fsm_backoff_irq(void) -{ -#if !defined(FTDF_NO_CSL) || !defined(FTDF_NO_TSCH) - if (ftdf_pib.le_enabled || ftdf_pib.tsch_enabled) { - return; - } -#endif - switch (ftdf_sdb.state) { - case FTDF_SDB_STATE_RESUMING: - ftdf_sdb_reset(); - case FTDF_SDB_STATE_INIT: - case FTDF_SDB_STATE_BACKING_OFF: - ftdf_sdb_set_cca_retry_time(); - ftdf_sdb.state = FTDF_SDB_STATE_BACKING_OFF; - break; - default: - ASSERT_WARNING(0); - } -} - -void ftdf_sdb_fsm_sleep(void) -{ -#if !defined(FTDF_NO_CSL) || !defined(FTDF_NO_TSCH) - if (ftdf_pib.le_enabled || ftdf_pib.tsch_enabled) { - return; - } -#endif - switch (ftdf_sdb.state) { - case FTDF_SDB_STATE_BACKING_OFF: - ftdf_sdb_save_state(); - ftdf_sdb.state = FTDF_SDB_STATE_WAITING_WAKE_UP_IRQ; - break; - case FTDF_SDB_STATE_INIT: - break; - default: - ASSERT_WARNING(0); - } -} - -void ftdf_sdb_fsm_abort_sleep(void) -{ -#if !defined(FTDF_NO_CSL) || !defined(FTDF_NO_TSCH) - if (ftdf_pib.le_enabled || ftdf_pib.tsch_enabled) { - return; - } -#endif - switch (ftdf_sdb.state) { - case FTDF_SDB_STATE_BACKING_OFF: - ftdf_sdb.state = FTDF_SDB_STATE_INIT; - break; - case FTDF_SDB_STATE_INIT: - case FTDF_SDB_STATE_WAITING_WAKE_UP_IRQ: - case FTDF_SDB_STATE_RESUMING: - break; - default: - ASSERT_WARNING(0); - } -} - -void ftdf_sdb_fsm_wake_up_irq(void) -{ -#if !defined(FTDF_NO_CSL) || !defined(FTDF_NO_TSCH) - if (ftdf_pib.le_enabled || ftdf_pib.tsch_enabled) { - return; - } -#endif - switch (ftdf_sdb.state) { - case FTDF_SDB_STATE_WAITING_WAKE_UP_IRQ: - ftdf_sdb.state = FTDF_SDB_STATE_RESUMING; - break; - case FTDF_SDB_STATE_INIT: - break; - default: - ASSERT_WARNING(0); - } -} - -void ftdf_sdb_fsm_wake_up(void) -{ -#if !defined(FTDF_NO_CSL) || !defined(FTDF_NO_TSCH) - if (ftdf_pib.le_enabled || ftdf_pib.tsch_enabled) { - return; - } -#endif - switch (ftdf_sdb.state) { - case FTDF_SDB_STATE_RESUMING: - ftdf_sdb_resume(); - break; - case FTDF_SDB_STATE_WAITING_WAKE_UP_IRQ: - break; - case FTDF_SDB_STATE_INIT: - break; - default: - ASSERT_WARNING(0); - } -} - -void ftdf_sdb_fsm_tx_irq(void) -{ -#if !defined(FTDF_NO_CSL) || !defined(FTDF_NO_TSCH) - if (ftdf_pib.le_enabled || ftdf_pib.tsch_enabled) { - return; - } -#endif - switch (ftdf_sdb.state) { - case FTDF_SDB_STATE_RESUMING: - ftdf_sdb_reset(); - ftdf_sdb.state = FTDF_SDB_STATE_INIT; - break; - case FTDF_SDB_STATE_BACKING_OFF: - ftdf_sdb.state = FTDF_SDB_STATE_INIT; - break; - case FTDF_SDB_STATE_INIT: - break; - default: - ASSERT_WARNING(0); - } -} - -ftdf_usec_t ftdf_sdb_get_sleep_time(void) -{ - ftdf_usec_t sleep_time = ~((ftdf_usec_t) 0); -#if !defined(FTDF_NO_CSL) || !defined(FTDF_NO_TSCH) - if (ftdf_pib.le_enabled || ftdf_pib.tsch_enabled) { - return sleep_time; - } -#endif - switch (ftdf_sdb.state) { - case FTDF_SDB_STATE_INIT: - if ((REG_GETF(FTDF, FTDF_LMAC_CONTROL_STATUS_REG, LMACREADY4SLEEP) == 0) || ftdf_req_current) { - sleep_time = 0; - } else { - sleep_time = ~((ftdf_usec_t) 0); - } - break; - case FTDF_SDB_STATE_BACKING_OFF: - { - ftdf_time_t currentTime = REG_GETF(FTDF, FTDF_SYMBOLTIMESNAPSHOTVAL_REG, SYMBOLTIMESNAPSHOTVAL); - if (currentTime <= ftdf_sdb.cca_retry_time) { - sleep_time = (ftdf_sdb.cca_retry_time - currentTime) * 16; - } else { - sleep_time = (1 << 31) - (currentTime + ftdf_sdb.cca_retry_time) * 16; - } - if (sleep_time > 256 * FTDF_UNIT_BACKOFF_PERIOD * 16) { - /* We have exceeded the CCA retry time. Abort sleep and wait for Tx IRQ. */ - sleep_time = 0; - } - break; - } - case FTDF_SDB_STATE_RESUMING: - sleep_time = 0; - break; - case FTDF_SDB_STATE_WAITING_WAKE_UP_IRQ: - sleep_time = ~((ftdf_usec_t) 0); - break; - default: - ASSERT_WARNING(0); - } - return sleep_time; -} - -#endif /* FTDF_USE_SLEEP_DURING_BACKOFF */ - -#if dg_configUSE_FTDF_DDPHY == 1 -void ftdf_ddphy_set(uint16_t cca_reg) -{ - ftdf_critical_var(); - ftdf_enter_critical(); - /* We use the critical section here as protection for the global variable and the HW sleep - * state. */ - ftdf_ddphy_cca_reg = cca_reg; - /* Apply immediately if block is up. */ - if (REG_GETF(CRG_TOP, PMU_CTRL_REG, FTDF_SLEEP) == 0x0) { - FTDF_DPHY->DDPHY_CCA_REG = ftdf_ddphy_cca_reg; - } - ftdf_exit_critical(); -} - -void ftdf_ddphy_restore(void) -{ - if (ftdf_ddphy_cca_reg) { - /* Apply immediately if block is up. */ - ftdf_critical_var(); - ftdf_enter_critical(); - ASSERT_WARNING(REG_GETF(CRG_TOP, PMU_CTRL_REG, FTDF_SLEEP) == 0x0); - FTDF_DPHY->DDPHY_CCA_REG = ftdf_ddphy_cca_reg; - ftdf_exit_critical(); - } -} - -void ftdf_ddphy_save(void) -{ - /* Apply immediately if block is up. */ - ftdf_critical_var(); - ftdf_enter_critical(); - ASSERT_WARNING(REG_GETF(CRG_TOP, PMU_CTRL_REG, FTDF_SLEEP) == 0x0); - ftdf_ddphy_cca_reg = FTDF_DPHY->DDPHY_CCA_REG; - ftdf_exit_critical(); -} -#endif -#endif /* CONFIG_USE_FTDF */ diff --git a/third_party/dialog/DialogSDK/interfaces/ftdf/src/data.c b/third_party/dialog/DialogSDK/interfaces/ftdf/src/data.c deleted file mode 100644 index f9444241d..000000000 --- a/third_party/dialog/DialogSDK/interfaces/ftdf/src/data.c +++ /dev/null @@ -1,621 +0,0 @@ -/** - **************************************************************************************** - * - * @file data.c - * - * @brief FTDF data send/receive functions - * - * Copyright (c) 2016, Dialog Semiconductor - * All rights reserved. - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. Neither the name of the copyright holder nor the names of its contributors - * may be used to endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, - * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, - * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED - * OF THE POSSIBILITY OF SUCH DAMAGE. - * - * - **************************************************************************************** - */ - -#include - -#include -#include "internal.h" - -#ifdef CONFIG_USE_FTDF -#ifndef FTDF_LITE -void ftdf_process_data_request(ftdf_data_request_t *data_request) -{ -#ifndef FTDF_NO_TSCH - if (ftdf_pib.tsch_enabled && ftdf_tsch_slot_link->request != data_request) { - ftdf_status_t status; - - if ((data_request->dst_addr_mode == FTDF_SHORT_ADDRESS) && !data_request->indirect_tx) { - status = ftdf_schedule_tsch((ftdf_msg_buffer_t*) data_request); - - if (status == FTDF_SUCCESS) { - return; - } - - } else { - status = FTDF_INVALID_PARAMETER; - } - - ftdf_send_data_confirm(data_request, status, 0, 0, 0, NULL); - - return; - } -#endif /* FTDF_NO_TSCH */ - - int queue; - ftdf_address_mode_t dst_addr_mode = data_request->dst_addr_mode; - ftdf_pan_id_t dst_pan_id = data_request->dst_pan_id; - ftdf_address_t dst_addr = data_request->dst_addr; - - /* Search for an existing indirect queue */ - for (queue = 0; queue < FTDF_NR_OF_REQ_BUFFERS; queue++) { - - if (dst_addr_mode == FTDF_SHORT_ADDRESS) { - - if ((ftdf_tx_pending_list[queue].addr_mode == dst_addr_mode) && - (ftdf_tx_pending_list[queue].addr.short_address == dst_addr.short_address)) { - break; - } - - } else if (dst_addr_mode == FTDF_EXTENDED_ADDRESS) { - - if ((ftdf_tx_pending_list[queue].addr_mode == dst_addr_mode) && - (ftdf_tx_pending_list[queue].addr.ext_address == dst_addr.ext_address)) { - break; - } - } - } - - if (data_request->indirect_tx) { - ftdf_status_t status = FTDF_SUCCESS; - - if (queue < FTDF_NR_OF_REQ_BUFFERS) { - /* Queue request in existing queue */ - status = ftdf_queue_req_head((ftdf_msg_buffer_t*) data_request, - &ftdf_tx_pending_list[queue].queue); - - if (status == FTDF_SUCCESS) { - ftdf_add_tx_pending_timer((ftdf_msg_buffer_t*) data_request, queue, - (ftdf_pib.transaction_persistence_time * - FTDF_BASE_SUPERFRAME_DURATION), - ftdf_send_transaction_expired); - return; - } - } - - if ((dst_addr_mode != FTDF_EXTENDED_ADDRESS) && (dst_addr_mode != FTDF_SHORT_ADDRESS)) { - status = FTDF_INVALID_PARAMETER; - } - - if (status != FTDF_SUCCESS) { - /* Queueing of indirect transfer was not successful */ - ftdf_send_data_confirm(data_request, status, 0, 0, 0, NULL); - - return; - } -#if FTDF_FP_BIT_MODE == FTDF_FP_BIT_MODE_AUTO - uint8_t entry, short_addr_idx; - if (dst_addr_mode == FTDF_SHORT_ADDRESS) { - if (ftdf_fppr_get_free_short_address(&entry, &short_addr_idx) == FTDF_FALSE) { - goto transaction_overflow; - } - } else if (dst_addr_mode == FTDF_EXTENDED_ADDRESS) { - if (ftdf_fppr_get_free_ext_address(&entry) == FTDF_FALSE) { - goto transaction_overflow; - } - } else { - status = FTDF_INVALID_PARAMETER; - } -#endif - /* Search for an empty indirect queue */ - for (queue = 0; queue < FTDF_NR_OF_REQ_BUFFERS; queue++) { - if (ftdf_tx_pending_list[queue].addr_mode == FTDF_NO_ADDRESS) { - ftdf_tx_pending_list[queue].addr_mode = dst_addr_mode; - ftdf_tx_pending_list[queue].pan_id = dst_pan_id; - ftdf_tx_pending_list[queue].addr = dst_addr; - - status = ftdf_queue_req_head((ftdf_msg_buffer_t*) data_request, - &ftdf_tx_pending_list[queue].queue); - - if (status == FTDF_SUCCESS) { -#if FTDF_FP_BIT_MODE == FTDF_FP_BIT_MODE_AUTO - if (dst_addr_mode == FTDF_SHORT_ADDRESS) { - ftdf_fppr_set_short_address(entry, short_addr_idx, dst_addr.short_address); - ftdf_fppr_set_short_address_valid(entry, short_addr_idx, FTDF_TRUE); - } else if (dst_addr_mode == FTDF_EXTENDED_ADDRESS) { - ftdf_fppr_set_ext_address(entry, dst_addr.short_address); - ftdf_fppr_set_ext_address_valid(entry, FTDF_TRUE); - } else { - ASSERT_WARNING(0); - } -#endif /* FTDF_FP_BIT_MODE == FTDF_FP_BIT_MODE_AUTO */ - ftdf_add_tx_pending_timer((ftdf_msg_buffer_t*) data_request, - queue, - (ftdf_pib.transaction_persistence_time * - FTDF_BASE_SUPERFRAME_DURATION), - ftdf_send_transaction_expired); - - return; - } else { - break; - } - } - } - - /* Did not find an existing or an empty queue */ -#if FTDF_FP_BIT_MODE == FTDF_FP_BIT_MODE_AUTO - transaction_overflow: -#endif - ftdf_send_data_confirm(data_request, FTDF_TRANSACTION_OVERFLOW, 0, 0, 0, NULL); - - return; - } - - if (ftdf_req_current == NULL) { - ftdf_req_current = (ftdf_msg_buffer_t*) data_request; - } else { - if (ftdf_queue_req_head((ftdf_msg_buffer_t*) data_request, &ftdf_req_queue) == - FTDF_TRANSACTION_OVERFLOW) { - - ftdf_send_data_confirm(data_request, FTDF_TRANSACTION_OVERFLOW, 0, 0, 0, NULL); - } - - return; - } - - ftdf_frame_header_t *frame_header = &ftdf_fh; - ftdf_security_header *security_header = &ftdf_sh; - - frame_header->frame_type = data_request->send_multi_purpose ? FTDF_MULTIPURPOSE_FRAME : FTDF_DATA_FRAME; - - ftdf_boolean_t frame_pending; - - if (queue < FTDF_NR_OF_REQ_BUFFERS) { - frame_pending = FTDF_TRUE; - } else { - frame_pending = FTDF_FALSE; - } - - frame_header->options = - (data_request->security_level > 0 ? FTDF_OPT_SECURITY_ENABLED : 0) | - (data_request->ack_tx ? FTDF_OPT_ACK_REQUESTED : 0) | - (frame_pending ? FTDF_OPT_FRAME_PENDING : 0) | - ((data_request->frame_control_options & FTDF_PAN_ID_PRESENT) ? FTDF_OPT_PAN_ID_PRESENT : 0) | - ((data_request->frame_control_options & FTDF_IES_INCLUDED) ? FTDF_OPT_IES_PRESENT : 0) | - ((data_request->frame_control_options & FTDF_SEQ_NR_SUPPRESSED) ? FTDF_OPT_SEQ_NR_SUPPRESSED : 0); - - if (ftdf_pib.le_enabled || ftdf_pib.tsch_enabled) { - frame_header->options |= FTDF_OPT_ENHANCED; - } - - frame_header->src_addr_mode = data_request->src_addr_mode; - frame_header->src_pan_id = ftdf_pib.pan_id; - frame_header->dst_addr_mode = data_request->dst_addr_mode; - frame_header->dst_pan_id = data_request->dst_pan_id; - frame_header->dst_addr = data_request->dst_addr; - - security_header->security_level = data_request->security_level; - security_header->key_id_mode = data_request->key_id_mode; - security_header->key_index = data_request->key_index; - security_header->key_source = data_request->key_source; - security_header->frame_counter = ftdf_pib.frame_counter; - security_header->frame_counter_mode = ftdf_pib.frame_counter_mode; - -#ifndef FTDF_NO_TSCH - if (ftdf_pib.tsch_enabled) { - frame_header->sn = ftdf_process_tsch_sn((ftdf_msg_buffer_t*)data_request, - ftdf_pib.dsn, - &data_request->requestSN); - } else -#endif /* FTDF_NO_TSCH */ - { - frame_header->sn = ftdf_pib.dsn; - } - - ftdf_octet_t *tx_ptr = (ftdf_octet_t*) &FTDF->FTDF_TX_FIFO_0_0_REG + - (FTDF_BUFFER_LENGTH * FTDF_TX_DATA_BUFFER); - - /* Skip PHY header (= MAC length) */ - tx_ptr++; - - ftdf_data_length_t msdu_length = data_request->msdu_length; - - tx_ptr = ftdf_add_frame_header(tx_ptr, frame_header, msdu_length); - - tx_ptr = ftdf_add_security_header(tx_ptr, security_header); - -#if !defined(FTDF_NO_CSL) || !defined(FTDF_NO_TSCH) - if (data_request->frame_control_options & FTDF_IES_INCLUDED) { - tx_ptr = ftdf_add_ies(tx_ptr, - data_request->header_ie_list, - data_request->payload_ie_list, - data_request->msdu_length); - } -#endif /* !FTDF_NO_CSL || !FTDF_NO_TSCH */ - - ftdf_status_t status = ftdf_send_frame(ftdf_pib.current_channel, - frame_header, - security_header, - tx_ptr, - data_request->msdu_length, - data_request->msdu); - - if (status != FTDF_SUCCESS) { - ftdf_send_data_confirm(data_request, status, 0, 0, 0, NULL); - ftdf_req_current = NULL; - - return; - } - - ftdf_nr_of_retries = 0; - - if (frame_header->sn == ftdf_pib.dsn) { - ftdf_pib.dsn++; - } -} - -void ftdf_send_data_confirm(ftdf_data_request_t *data_request, - ftdf_status_t status, - ftdf_time_t timestamp, - ftdf_sn_t dsn, - ftdf_num_of_backoffs_t num_of_backoffs, - ftdf_ie_list_t *ack_payload) -{ - FTDF_REL_DATA_BUFFER(data_request->msdu); - - ftdf_data_confirm_t *data_confirm = - (ftdf_data_confirm_t*) FTDF_GET_MSG_BUFFER(sizeof(ftdf_data_confirm_t)); - - data_confirm->msg_id = FTDF_DATA_CONFIRM; - data_confirm->msdu_handle = data_request->msdu_handle; - data_confirm->status = status; - data_confirm->timestamp = timestamp; - data_confirm->num_of_backoffs = num_of_backoffs; - data_confirm->dsn = dsn; - data_confirm->ack_payload = ack_payload; - - if (ftdf_req_current == (ftdf_msg_buffer_t*)data_request) { - ftdf_req_current = NULL; - } - - FTDF_REL_MSG_BUFFER((ftdf_msg_buffer_t*) data_request); - FTDF_RCV_MSG((ftdf_msg_buffer_t*) data_confirm); -#if FTDF_FP_BIT_MODE == FTDF_FP_BIT_MODE_AUTO - ftdf_fp_fsm_clear_pending(); -#endif /* FTDF_FP_BIT_MODE == FTDF_FP_BIT_MODE_AUTO */ - ftdf_process_next_request(); -} - -void ftdf_send_data_indication(ftdf_frame_header_t *frame_header, - ftdf_security_header *security_header, - ftdf_ie_list_t *payload_ie_list, - ftdf_data_length_t msdu_length, - ftdf_octet_t *msdu, - ftdf_link_quality_t mpdu_link_quality, - ftdf_time_t timestamp) -{ - ftdf_data_indication_t *data_indication = - (ftdf_data_indication_t*) FTDF_GET_MSG_BUFFER(sizeof(ftdf_data_indication_t)); - - ftdf_octet_t *msdu_buf = FTDF_GET_DATA_BUFFER(msdu_length); - ftdf_octet_t *buf_ptr = msdu_buf; - - int n; - - for (n = 0; n < msdu_length; n++) { - *msdu_buf++ = *msdu++; - } - - data_indication->msg_id = FTDF_DATA_INDICATION; - data_indication->src_addr_mode = frame_header->src_addr_mode; - data_indication->src_pan_id = frame_header->src_pan_id; - data_indication->src_addr = frame_header->src_addr; - data_indication->dst_addr_mode = frame_header->dst_addr_mode; - data_indication->dst_pan_id = frame_header->dst_pan_id; - data_indication->dst_addr = frame_header->dst_addr; - data_indication->msdu_length = msdu_length; - data_indication->msdu = buf_ptr; - data_indication->mpdu_link_quality = mpdu_link_quality; - data_indication->dsn = frame_header->sn; - data_indication->timestamp = timestamp; - data_indication->security_level = security_header->security_level; - data_indication->key_id_mode = security_header->key_id_mode; - data_indication->key_index = security_header->key_index; - data_indication->payload_ie_list = payload_ie_list; - - if (data_indication->key_id_mode == 0x2) { - for (n = 0; n < 4; n++) { - data_indication->key_source[n] = security_header->key_source[n]; - } - } else if (data_indication->key_id_mode == 0x3) { - for (n = 0; n < 8; n++) { - data_indication->key_source[n] = security_header->key_source[n]; - } - } - - FTDF_RCV_MSG((ftdf_msg_buffer_t*) data_indication); -} - -void ftdf_process_poll_request(ftdf_poll_request_t *poll_request) -{ - if (ftdf_req_current == NULL) { - ftdf_req_current = (ftdf_msg_buffer_t*) poll_request; - } else { - if (ftdf_queue_req_head((ftdf_msg_buffer_t*) poll_request, &ftdf_req_queue) == - FTDF_TRANSACTION_OVERFLOW) { - ftdf_send_poll_confirm(poll_request, FTDF_TRANSACTION_OVERFLOW); - } - - return; - } - - ftdf_frame_header_t *frame_header = &ftdf_fh; - ftdf_security_header *security_header = &ftdf_sh; - - frame_header->frame_type = FTDF_MAC_COMMAND_FRAME; - frame_header->options = - (poll_request->security_level > 0 ? FTDF_OPT_SECURITY_ENABLED : 0) | FTDF_OPT_ACK_REQUESTED; - - if (ftdf_pib.short_address < 0xfffe) { - frame_header->src_addr_mode = FTDF_SHORT_ADDRESS; - frame_header->src_addr.short_address = ftdf_pib.short_address; - } else { - frame_header->src_addr_mode = FTDF_EXTENDED_ADDRESS; - frame_header->src_addr.ext_address = ftdf_pib.ext_address; - } - - frame_header->src_pan_id = ftdf_pib.pan_id; - frame_header->dst_addr_mode = poll_request->coord_addr_mode; - frame_header->dst_pan_id = poll_request->coord_pan_id; - frame_header->dst_addr = poll_request->coord_addr; - - security_header->security_level = poll_request->security_level; - security_header->key_id_mode = poll_request->key_id_mode; - security_header->key_index = poll_request->key_index; - security_header->key_source = poll_request->key_source; - security_header->frame_counter = ftdf_pib.frame_counter; - security_header->frame_counter_mode = ftdf_pib.frame_counter_mode; - - ftdf_octet_t *tx_ptr = (ftdf_octet_t*) &FTDF->FTDF_TX_FIFO_0_0_REG + (FTDF_BUFFER_LENGTH * FTDF_TX_DATA_BUFFER); - - /* Skip PHY header (= MAC length) */ - tx_ptr++; - - frame_header->sn = ftdf_pib.dsn; - - tx_ptr = ftdf_add_frame_header(tx_ptr, frame_header, 1); - - tx_ptr = ftdf_add_security_header(tx_ptr, security_header); - - *tx_ptr++ = FTDF_COMMAND_DATA_REQUEST; - - ftdf_status_t status = ftdf_send_frame(ftdf_pib.current_channel, - frame_header, - security_header, - tx_ptr, - 0, - NULL); - - if (status != FTDF_SUCCESS) { - ftdf_send_poll_confirm(poll_request, status); - return; - } - - ftdf_nr_of_retries = 0; - ftdf_pib.dsn++; -} - -void ftdf_send_poll_confirm(ftdf_poll_request_t *poll_request, ftdf_status_t status) -{ - ftdf_poll_confirm_t *poll_confirm = (ftdf_poll_confirm_t*) FTDF_GET_MSG_BUFFER(sizeof(ftdf_poll_confirm_t)); - - poll_confirm->msg_id = FTDF_POLL_CONFIRM; - poll_confirm->status = status; - - if (ftdf_req_current == (ftdf_msg_buffer_t*)poll_request) { - ftdf_req_current = NULL; - } - - FTDF_REL_MSG_BUFFER((ftdf_msg_buffer_t*) poll_request); - FTDF_RCV_MSG((ftdf_msg_buffer_t*) poll_confirm); - - ftdf_process_next_request(); -} - -void ftdf_process_purge_request(ftdf_purge_request_t *purge_request) -{ - ftdf_handle_t msdu_handle = purge_request->msdu_handle; - ftdf_status_t status = FTDF_INVALID_HANDLE; - - int n; - - for (n = 0; n < FTDF_NR_OF_REQ_BUFFERS; n++) { - ftdf_msg_buffer_t *request = - ftdf_dequeue_by_handle(msdu_handle, &ftdf_tx_pending_list[n].queue); - - if (request) { - ftdf_data_request_t *data_request = (ftdf_data_request_t*) request; - - if (data_request->indirect_tx == FTDF_TRUE) { - ftdf_remove_tx_pending_timer(request); -#if FTDF_FP_BIT_MODE == FTDF_FP_BIT_MODE_AUTO - if (ftdf_tx_pending_list[n].addr_mode == FTDF_SHORT_ADDRESS) { - uint8_t entry, shortAddrIdx; - ftdf_boolean_t found = ftdf_fppr_lookup_short_address( - ftdf_tx_pending_list[n].addr.short_address, &entry, - &shortAddrIdx); - ASSERT_WARNING(found); - ftdf_fppr_set_short_address_valid(entry, shortAddrIdx, FTDF_FALSE); - } else if (ftdf_tx_pending_list[n].addr_mode == FTDF_EXTENDED_ADDRESS) { - uint8_t entry; - ftdf_boolean_t found = ftdf_fppr_lookup_ext_address( - ftdf_tx_pending_list[n].addr.ext_address, &entry); - ASSERT_WARNING(found); - ftdf_fppr_set_ext_address_valid(entry, FTDF_FALSE); - } else { - ASSERT_WARNING(0); - } -#endif /* FTDF_FP_BIT_MODE == FTDF_FP_BIT_MODE_AUTO */ - if (ftdf_is_queue_empty(&ftdf_tx_pending_list[n].queue)) { - ftdf_tx_pending_list[n].addr_mode = FTDF_NO_ADDRESS; - } - } - - FTDF_REL_DATA_BUFFER(data_request->msdu); - FTDF_REL_MSG_BUFFER((ftdf_msg_buffer_t*) data_request); - - status = FTDF_SUCCESS; - - break; - } - } - - ftdf_purge_confirm_t *purge_confirm = - (ftdf_purge_confirm_t*) FTDF_GET_MSG_BUFFER(sizeof(ftdf_purge_confirm_t)); - - purge_confirm->msg_id = FTDF_PURGE_CONFIRM; - purge_confirm->msdu_handle = msdu_handle; - purge_confirm->status = status; - - FTDF_REL_MSG_BUFFER((ftdf_msg_buffer_t*) purge_request); - FTDF_RCV_MSG((ftdf_msg_buffer_t*) purge_confirm); -} -#endif /* !FTDF_LITE */ - -#ifdef FTDF_PHY_API -ftdf_status_t ftdf_send_frame_simple(ftdf_data_length_t frame_length, - ftdf_octet_t *frame, - ftdf_channel_number_t channel, - ftdf_pti_t pti, - ftdf_boolean_t csma_suppress) -{ - - ftdf_octet_t *fp = frame; - - if ((frame_length > 127) || (ftdf_transparent_mode != FTDF_TRUE)) { - return FTDF_INVALID_PARAMETER; - } - - ftdf_octet_t *tx_ptr = - (ftdf_octet_t*) &FTDF->FTDF_TX_FIFO_0_0_REG + (FTDF_BUFFER_LENGTH * FTDF_TX_DATA_BUFFER); - - /* This data copy could/should be optimized using DMA */ - *tx_ptr++ = frame_length; - - int n; - - for (n = 0; n < frame_length; n++) { - *tx_ptr++ = *fp++; - } - - ftdf_critical_var(); - ftdf_enter_critical(); - ftdf_nr_of_retries = 0; - ftdf_exit_critical(); - ftdf_send_transparent_frame(frame_length, - frame, - channel, - pti, - csma_suppress); - - return FTDF_SUCCESS; -} - - - -#else /* !FTDF_PHY_API */ -void ftdf_process_transparent_request(ftdf_transparent_request_t *transparent_request) -{ - ftdf_data_length_t frame_length = transparent_request->frame_length; - - if ((frame_length > 127) || (ftdf_transparent_mode != FTDF_TRUE)) { - FTDF_SEND_FRAME_TRANSPARENT_CONFIRM(transparent_request->handle, - FTDF_INVALID_PARAMETER); - - FTDF_REL_MSG_BUFFER((ftdf_msg_buffer_t*) transparent_request); - - return; - } - - if (ftdf_req_current == NULL) { - ftdf_req_current = (ftdf_msg_buffer_t*) transparent_request; - } else { -#ifndef FTDF_LITE - if (ftdf_queue_req_head((ftdf_msg_buffer_t*) transparent_request, &ftdf_req_queue) == - FTDF_TRANSACTION_OVERFLOW) { -#endif /* !FTDF_LITE */ - FTDF_SEND_FRAME_TRANSPARENT_CONFIRM(transparent_request->handle, - FTDF_TRANSPARENT_OVERFLOW); - - FTDF_REL_MSG_BUFFER((ftdf_msg_buffer_t*) transparent_request); -#ifndef FTDF_LITE - } -#endif /* !FTDF_LITE */ - return; - } - - ftdf_octet_t *tx_ptr = - (ftdf_octet_t*) &FTDF->FTDF_TX_FIFO_0_0_REG + (FTDF_BUFFER_LENGTH * FTDF_TX_DATA_BUFFER); - - *tx_ptr++ = frame_length; - - ftdf_octet_t *frame = transparent_request->frame; - - int n; - - for (n = 0; n < frame_length; n++) { - *tx_ptr++ = *frame++; - } - - ftdf_send_transparent_frame(frame_length, - transparent_request->frame, - transparent_request->channel, - transparent_request->pti, - transparent_request->cmsa_suppress); - ftdf_nr_of_retries = 0; -} - -void ftdf_send_frame_transparent(ftdf_data_length_t frame_length, - ftdf_octet_t *frame, - ftdf_channel_number_t channel, - ftdf_pti_t pti, - ftdf_boolean_t cmsa_suppress, - void *handle) -{ - ftdf_transparent_request_t *transparent_request = - (ftdf_transparent_request_t*) FTDF_GET_MSG_BUFFER(sizeof(ftdf_transparent_request_t)); - - transparent_request->msg_id = FTDF_TRANSPARENT_REQUEST; - transparent_request->frame_length = frame_length; - transparent_request->frame = frame; - transparent_request->channel = channel; - transparent_request->pti = pti; - transparent_request->cmsa_suppress = cmsa_suppress; - transparent_request->handle = handle; - - ftdf_process_transparent_request(transparent_request); -} - -#endif /* FTDF_PHY_API */ -#endif /* CONFIG_USE_FTDF */ diff --git a/third_party/dialog/DialogSDK/interfaces/ftdf/src/ftdfInfo.h b/third_party/dialog/DialogSDK/interfaces/ftdf/src/ftdfInfo.h deleted file mode 100755 index cc4831aa4..000000000 --- a/third_party/dialog/DialogSDK/interfaces/ftdf/src/ftdfInfo.h +++ /dev/null @@ -1,15 +0,0 @@ -#ifndef FTDFINFO_H_ -#define FTDFINFO_H_ - -/* - * The FTDF release name (version) is listed below, and manually maintained. - * The build time is automatically generated. - */ -#define FTDF_ARCHITECTURE_VERSION 1 -#define FTDF_BRANCH_VERSION 0 -#define FTDF_LOAD_VERSION 32 - -const char *ftdf_get_umac_rel_name( void ); -const char *ftdf_get_umac_build_time( void ); - -#endif /* FTDFINFO_H_ */ diff --git a/third_party/dialog/DialogSDK/interfaces/ftdf/src/internal.h b/third_party/dialog/DialogSDK/interfaces/ftdf/src/internal.h deleted file mode 100644 index 028637857..000000000 --- a/third_party/dialog/DialogSDK/interfaces/ftdf/src/internal.h +++ /dev/null @@ -1,723 +0,0 @@ -/** - **************************************************************************************** - * - * @file internal.h - * - * @brief Internal header file - * - * Copyright (c) 2016, Dialog Semiconductor - * All rights reserved. - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. Neither the name of the copyright holder nor the names of its contributors - * may be used to endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, - * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, - * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED - * OF THE POSSIBILITY OF SUCH DAMAGE. - * - * - **************************************************************************************** - */ - -#define FTDF_TBD 0 - -#define FTDF_FCS_LENGTH 2 -#define FTDF_BUFFER_LENGTH 128 -#ifndef FTDF_NR_OF_REQ_BUFFERS -#define FTDF_NR_OF_REQ_BUFFERS 96 -#endif -#define FTDF_NR_OF_RX_BUFFERS 8 -#define FTDF_NR_OF_CHANNELS 16 -#define FTDF_NR_OF_SCAN_RESULTS 16 -#define FTDF_NR_OF_CSL_PEERS 16 -#define FTDF_MAX_HEADER_IES 8 -#define FTDF_MAX_PAYLOAD_IES 4 -#define FTDF_MAX_SUB_IES 8 -#define FTDF_MAX_IE_CONTENT 128 -#define FTDF_NR_OF_RX_ADDRS 16 -#define FTDF_NR_OF_NEIGHBORS 16 - -#define FTDF_TX_DATA_BUFFER 0 -#define FTDF_TX_WAKEUP_BUFFER 1 -#define FTDF_TX_ACK_BUFFER 2 - -#define FTDF_OPT_SECURITY_ENABLED 0x01 -#define FTDF_OPT_FRAME_PENDING 0x02 -#define FTDF_OPT_SEQ_NR_SUPPRESSED 0x04 -#define FTDF_OPT_ACK_REQUESTED 0x08 -#define FTDF_OPT_IES_PRESENT 0x10 -#define FTDF_OPT_PAN_ID_PRESENT 0x20 -#define FTDF_OPT_ENHANCED 0x40 - -#define FTDF_MSK_RX_CE 0x00000002 -#define FTDF_MSK_SYMBOL_TMR_CE 0x00000008 -#define FTDF_MSK_TX_CE 0x00000010 - -#define FTDF_TX_FLAG_CLEAR_M_0_REG_INTV 0x20 -#define FTDF_TX_FLAG_CLEAR_E_0_REG_INTV 0x20 -#define FTDF_TX_PRIORITY_0_REG_INTV 0x20 -#define FTDF_RX_META_1_0_REG_INTV 0x10 -#define FTDF_TX_FLAG_S_0_REG_INTV 0x20 -#define FTDF_TX_RETURN_STATUS_1_0_REG_INTV 0x10 -#define FTDF_TX_META_DATA_0_0_REG_INTV 0x10 -#define FTDF_TX_RETURN_STATUS_1_0_REG_INTV 0x10 -#define FTDF_TX_META_DATA_1_0_REG_INTV 0x10 - -// The maximum time in symbols that is takes to process request. After succesful -// processing a request the TX buffer is fully initialized and ready to be sent. -#define FTDF_TSCH_MAX_PROCESS_REQUEST_TIME 35 - -// The maximum time in symbols needed to search for the next slot for which a -// TX or RX needs to be done -#define FTDF_TSCH_MAX_SCHEDULE_TIME 30 - -#define ftdf_process_request ftdf_snd_msg - -typedef struct { - ftdf_ext_address_t ext_address; - ftdf_period_t ack_wait_duration; -#ifndef FTDF_LITE - ftdf_boolean_t associated_pan_coord; - ftdf_boolean_t association_permit; - ftdf_boolean_t auto_request; - ftdf_boolean_t batt_life_ext; - ftdf_num_of_backoffs_t batt_life_ext_periods; - ftdf_octet_t beacon_payload[FTDF_MAX_BEACON_PAYLOAD_LENGTH]; - ftdf_size_t beacon_payload_length; - ftdf_order_t beacon_order; - ftdf_time_t beacon_tx_time; - ftdf_sn_t bsn; - ftdf_ext_address_t coord_ext_address; - ftdf_short_address_t coord_short_address; - ftdf_sn_t dsn; - ftdf_boolean_t gts_permit; -#endif /* !FTDF_LITE */ - ftdf_be_exponent_t max_be; - ftdf_size_t max_csma_backoffs; - ftdf_period_t max_frame_total_wait_time; - ftdf_size_t max_frame_retries; - ftdf_be_exponent_t min_be; -#ifndef FTDF_LITE - ftdf_period_t lifs_period; - ftdf_period_t sifs_period; -#endif /* !FTDF_LITE */ - ftdf_pan_id_t pan_id; -#ifndef FTDF_LITE - ftdf_boolean_t promiscuous_mode; /* Not supported. Use transparent mode instead */ - ftdf_size_t response_wait_time; -#endif /* !FTDF_LITE */ - ftdf_boolean_t rx_on_when_idle; -#ifndef FTDF_LITE - ftdf_boolean_t security_enabled; -#endif /* !FTDF_LITE */ - ftdf_short_address_t short_address; -#ifndef FTDF_LITE - ftdf_size_t superframe_order; - ftdf_period_t sync_symbol_offset; - ftdf_boolean_t timestamp_supported; - ftdf_period_t transaction_persistence_time; - ftdf_period_t enh_ack_wait_duration; - ftdf_boolean_t implicit_broadcast; - ftdf_simple_address_t simple_address; - ftdf_period_t disconnect_time; - ftdf_priority_t join_priority; - ftdf_asn_t asn; - ftdf_boolean_t no_hl_buffers; - ftdf_slotframe_table_t slotframe_table; - FTDF_LinkTable link_table; - ftdf_timeslot_template_t timeslot_template; - ftdf_hopping_sequence_id_t hopping_sequence_id; - ftdf_channel_page_t channel_page; - ftdf_channel_number_t number_of_channels; - ftdf_bitmap32_t phy_configuration; - ftdf_bitmap8_t extended_bitmap; - ftdf_length_t hopping_sequence_length; - ftdf_channel_number_t hopping_sequence_list[FTDF_MAX_HOPPING_SEQUENCE_LENGTH]; - ftdf_length_t current_hop; - ftdf_period_t dwell_time; - ftdf_period_t csl_period; - ftdf_period_t csl_max_period; - ftdf_bitmap32_t csl_channel_mask; - ftdf_period_t csl_frame_pending_wait; - ftdf_boolean_t low_energy_superframe_supported; - ftdf_boolean_t low_energy_superframe_sync_interval; -#endif /* !FTDF_LITE */ - ftdf_performance_metrics_t performance_metrics; -#ifndef FTDF_LITE - ftdf_boolean_t use_enhanced_becaon; - ftdf_ie_list_t eb_ie_list; - ftdf_boolean_t eb_filtering_enabled; - ftdf_sn_t eb_sn; - ftdf_auto_sa_t eb_auto_sa; - ftdf_ie_list_t e_ack_ie_list; - ftdf_boolean_t tsch_enabled; - ftdf_boolean_t le_enabled; -#endif /* !FTDF_LITE */ - ftdf_channel_number_t current_channel; - ftdf_tx_power_tolerance_t tx_power_tolerance; - ftdf_dbm tx_power; - ftdf_cca_mode_t cca_mode; -#ifndef FTDF_LITE - ftdf_channel_page_t current_page; - ftdf_period_t max_frame_duration; - ftdf_period_t shr_duration; - ftdf_key_table_t key_table; - ftdf_device_table_t device_table; - ftdf_security_level_table_t security_level_table; - ftdf_frame_counter_t frame_counter; - ftdf_security_level_t mt_data_security_level; - ftdf_key_id_mode_t mt_data_key_id_mode; - ftdf_octet_t mt_data_key_source[8]; - ftdf_key_index_t mt_data_key_index; - ftdf_octet_t default_key_source[8]; - ftdf_ext_address_t pan_coord_ext_address; - ftdf_short_address_t pan_coord_short_address; - ftdf_frame_counter_mode_t frame_counter_mode; - ftdf_period_t csl_sync_tx_margin; - ftdf_period_t csl_max_age_remote_info; -#endif /* !FTDF_LITE */ - ftdf_traffic_counters_t traffic_counters; -#ifndef FTDF_LITE - ftdf_boolean_t le_capable; - ftdf_boolean_t ll_capable; - ftdf_boolean_t dsme_capable; - ftdf_boolean_t rfid_capable; - ftdf_boolean_t amca_capable; -#endif /* !FTDF_LITE */ - ftdf_boolean_t metrics_capable; -#ifndef FTDF_LITE - ftdf_boolean_t ranging_supported; -#endif /* !FTDF_LITE */ - ftdf_boolean_t keep_phy_enabled; - ftdf_boolean_t metrics_enabled; -#ifndef FTDF_LITE - ftdf_boolean_t beacon_auto_respond; - ftdf_boolean_t tsch_capable; - ftdf_period_t ts_sync_correct_threshold; -#endif /* !FTDF_LITE */ - ftdf_nr_backoff_periods_t bo_irq_threshold; - ftdf_pti_config_t pti_config; - ftdf_link_quality_mode_t link_quality_mode; -} ftdf_pib_t; - -typedef uint8_t ftdf_frame_version_t; -#define FTDF_FRAME_VERSION_2003 0 -#define FTDF_FRAME_VERSION_2011 1 -#define FTDF_FRAME_VERSION_E 2 -#define FTDF_FRAME_VERSION_NOT_SUPPORTED 3 - -typedef struct { - ftdf_frame_type_t frame_type; - ftdf_frame_version_t frame_version; - ftdf_bitmap8_t options; - ftdf_sn_t sn; - ftdf_address_mode_t src_addr_mode; - ftdf_pan_id_t src_pan_id; - ftdf_address_t src_addr; - ftdf_address_mode_t dst_addr_mode; - ftdf_pan_id_t dst_pan_id; - ftdf_address_t dst_addr; - ftdf_command_frame_id_t command_frame_id; -} ftdf_frame_header_t; - -typedef struct { - ftdf_security_level_t security_level; - ftdf_key_id_mode_t key_id_mode; - ftdf_key_index_t key_index; - ftdf_frame_counter_mode_t frame_counter_mode; - ftdf_octet_t *key_source; - ftdf_frame_counter_t frame_counter; -} ftdf_security_header; - -typedef struct { - ftdf_boolean_t fast_a; - ftdf_boolean_t data_r; -} ftdf_assoc_admin_t; - -typedef uint8_t ftdf_sn_sel; -#define FTDF_SN_SEL_DSN 0 -#define FTDF_SN_SEL_BSN 1 -#define FTDF_SN_SEL_EBSN 2 - -typedef struct { - ftdf_address_mode_t addr_mode; - ftdf_address_t addr; - ftdf_time_t timestamp; - ftdf_boolean_t dsn_valid; - ftdf_sn_t dsn; - ftdf_boolean_t bsn_valid; - ftdf_sn_t bsn; - ftdf_boolean_t ebsn_valid; - ftdf_sn_t eb_sn; -} ftdf_rx_address_admin_t; - -struct ftdf_buffer_; - -typedef struct { - struct ftdf_buffer_ *next; - struct ftdf_buffer_ *prev; -} ftdf_buffer_header_t; - -typedef struct ftdf_buffer_ { - ftdf_buffer_header_t header; - ftdf_msg_buffer_t *request; -} ftdf_buffer_t; - -typedef struct { - ftdf_buffer_header_t head; - ftdf_buffer_header_t tail; -} ftdf_queue_t; - -typedef struct { - ftdf_address_t addr; - ftdf_address_mode_t addr_mode; - ftdf_pan_id_t pan_id; - ftdf_queue_t queue; -} ftdf_pending_t; - -typedef struct _ftdf_pending_tl_ { - struct _ftdf_pending_tl_ *next; - ftdf_boolean_t free; - ftdf_msg_buffer_t *request; - ftdf_time_t delta; - uint8_t pend_list_nr; - void (* func)(struct _ftdf_pending_tl_*); -} ftdf_pending_tl_t; - -typedef uint8_t ftdf_remote_id; -#define FTDF_REMOTE_DATA_REQUEST 0 -#define FTDF_REMOTE_PAN_ID_CONFLICT_NOTIFICATION 1 -#define FTDF_REMOTE_BEACON 2 -#define FTDF_REMOTE_KEEP_ALIVE 3 - -typedef struct { - ftdf_msg_id_t msg_id; - ftdf_remote_id remote_id; - ftdf_short_address_t dst_addr; -} ftdf_remote_request_t; - -#ifndef FTDF_NO_CSL -typedef struct { - ftdf_short_address_t addr; - ftdf_time_t time; - ftdf_period_t period; -} ftdf_peer_csl_timing_t; -#endif /* FTDF_NO_CSL */ - -typedef uint8_t FTDF_State; -#define FTDF_STATE_UNINITIALIZED 0 -#define FTDF_STATE_IDLE 1 -#define FTDF_STATE_DATA_REQUEST 2 -#define FTDF_STATE_POLL_REQUEST 3 -#define FTDF_STATE_SCANNING 4 - -#ifndef FTDF_NO_TSCH -typedef struct { - ftdf_short_address_t nodeAddr; - ftdf_size_t nr_of_retries; - ftdf_size_t nr_of_cca_retries; - ftdf_be_exponent_t BE; -} ftdf_tsch_retry_t; - -typedef struct { - ftdf_short_address_t dst_addr; - ftdf_keep_alive_period_t period; - ftdf_remote_request_t msg; -} FTDF_NeighborEntry; -#endif /* FTDF_NO_TSCH */ - -typedef struct { - ftdf_count_t fcs_error_cnt; - ftdf_count_t tx_std_ack_cnt; - ftdf_count_t rx_std_ack_cnt; -} ftdf_lmac_counters_t; - -extern ftdf_pib_t ftdf_pib; -extern FTDF_State *FTDF_state; -extern ftdf_boolean_t ftdf_transparent_mode; -extern ftdf_bitmap32_t ftdf_transparent_mode_options; -extern ftdf_queue_t ftdf_req_queue; -extern ftdf_queue_t ftdf_freeQueue; -extern ftdf_pending_t ftdf_tx_pending_list[FTDF_NR_OF_REQ_BUFFERS]; -extern ftdf_pending_tl_t ftdf_tx_pending_timer_list[FTDF_NR_OF_REQ_BUFFERS]; -extern ftdf_pending_tl_t *ftdf_tx_pending_timer_head; -extern ftdf_time_t ftdf_tx_pending_timer_lt; -extern ftdf_time_t ftdf_tx_pending_timer_time; -extern ftdf_msg_buffer_t *ftdf_req_current; -extern ftdf_size_t ftdf_nr_of_retries; -extern ftdf_boolean_t ftdf_is_pan_coordinator; -extern ftdf_slotframe_entry_t ftdf_slotframe_table[FTDF_MAX_SLOTFRAMES]; -extern ftdf_link_entry_t ftdf_link_table[FTDF_MAX_LINKS]; -#ifndef FTDF_NO_TSCH -extern ftdf_link_entry_t *ftdf_start_links[FTDF_MAX_SLOTFRAMES]; -extern ftdf_link_entry_t *ftdf_end_links[FTDF_MAX_SLOTFRAMES]; -extern FTDF_NeighborEntry ftdf_neighbor_table[FTDF_NR_OF_NEIGHBORS]; -extern ftdf_boolean_t ftdf_wake_up_enable_tsch; -#endif /* FTDF_NO_TSCH */ -#ifndef FTDF_NO_CSL -extern ftdf_boolean_t ftdf_wake_up_enable_le; -#endif /* FTDF_NO_CSL */ -extern ftdf_lmac_counters_t ftdf_lmac_counters; - -extern ftdf_frame_header_t ftdf_fh; -extern ftdf_security_header ftdf_sh; -extern ftdf_assoc_admin_t ftdf_aa; -extern ftdf_boolean_t ftdf_tx_in_progress; -#ifndef FTDF_NO_CSL -extern ftdf_time_t ftdf_rz_time; -extern ftdf_short_address_t ftdf_send_frame_pending; -#endif /* FTDF_NO_CSL */ -extern ftdf_time_t ftdf_start_csl_sample_time; - -#ifndef FTDF_NO_TSCH -extern ftdf_link_entry_t *ftdf_tsch_slot_link; -extern ftdf_time64_t ftdf_tsch_slot_time; -extern ftdf_asn_t ftdf_tsch_slot_asn; -#endif /* FTDF_NO_TSCH */ - -void ftdf_process_data_request(ftdf_data_request_t *req); -void ftdf_process_purge_request(ftdf_purge_request_t *req); -void ftdf_process_associate_request(ftdf_associate_request_t *req); -void ftdf_process_associate_response(ftdf_associate_response_t *req); -void ftdf_process_disassociate_request(ftdf_disassociate_request_t *req); -void ftdf_process_get_request(ftdf_get_request_t *req); -void ftdf_process_set_request(ftdf_set_request_t *req); -void ftdf_process_orphan_response(ftdf_orphan_response_t *req); -void ftdf_process_reset_request(ftdf_reset_request_t *req); -void ftdf_process_rx_enable_request(ftdf_rx_enable_request_t *req); -void ftdf_process_scan_request(ftdf_scan_request_t *req); -void ftdf_process_start_request(ftdf_start_request_t *req); -void ftdf_process_poll_request(ftdf_poll_request_t *req); -#ifndef FTDF_NO_TSCH -void ftdf_process_set_slotframe_request(ftdf_set_slotframe_request_t *req); -void ftdf_process_set_link_request(ftdf_set_link_request_t *req); -void ftdf_process_tsch_mode_request(ftdf_tsch_mode_request_t *req); -void ftdf_process_keep_alive_request(ftdf_keep_alive_request_t *req); -#endif /* FTDF_NO_TSCH */ -void ftdf_process_beacon_request(ftdf_beacon_request_t *req); -void ftdf_process_transparent_request(ftdf_transparent_request_t *req); -void ftdf_process_remote_request(ftdf_remote_request_t *req); - -void ftdf_process_next_request(void); -void ftdf_process_rx_event(void); -void ftdf_process_tx_event(void); -void ftdf_process_symbol_timer_event(void); - -void ftdf_send_data_confirm(ftdf_data_request_t *data_request, - ftdf_status_t status, - ftdf_time_t timestamp, - ftdf_sn_t dsn, - ftdf_num_of_backoffs_t num_of_backoffs, - ftdf_ie_list_t *ack_payload); - -void ftdf_send_data_indication(ftdf_frame_header_t *frame_header, - ftdf_security_header *security_header, - ftdf_ie_list_t *payload_ie_list, - ftdf_data_length_t msdu_length, - ftdf_octet_t *msdu, - ftdf_link_quality_t mpdu_link_quality, - ftdf_time_t timestamp); - -void ftdf_send_poll_confirm(ftdf_poll_request_t *poll_request, ftdf_status_t status); - -void ftdf_send_scan_confirm(ftdf_scan_request_t *scan_request, ftdf_status_t status); - -void ftdf_send_beacon_notify_indication(ftdf_pan_descriptor_t *pan_descriptor); - -void ftdf_send_beacon_confirm(ftdf_beacon_request_t *beacon_request, ftdf_status_t status); - -void ftdf_send_associate_confirm(ftdf_associate_request_t *associate_request, - ftdf_status_t status, - ftdf_short_address_t assoc_short_addr); - -void ftdf_send_associate_data_request(void); - -void ftdf_send_disassociate_confirm(ftdf_disassociate_request_t *dis_req, ftdf_status_t status); - -void ftdf_send_sync_loss_indication(ftdf_loss_reason_t loss_reason, ftdf_security_header *security_header); - -void ftdf_sendpan_id_conflict_notification(ftdf_frame_header_t *frame_header, ftdf_security_header *security_header); - -void ftdf_send_comm_status_indication(ftdf_msg_buffer_t *request, - ftdf_status_t status, - ftdf_pan_id_t pan_Id, - ftdf_address_mode_t src_addr_mode, - ftdf_address_t src_addr, - ftdf_address_mode_t dst_addr_mode, - ftdf_address_t dst_addr, - ftdf_security_level_t security_level, - ftdf_key_id_mode_t key_id_mode, - ftdf_octet_t *key_source, - ftdf_key_index_t key_index); - -void ftdf_start_timer(ftdf_period_t period, void (* timer_func)(void *params), void *params); - -ftdf_octet_t *ftdf_get_tx_buf_ptr(ftdf_buffer_t *tx_buffer); - -void ftdf_set_tx_meta_data(ftdf_buffer_t *tx_buffer, - ftdf_data_length_t frame_length, - ftdf_channel_number_t channel, - ftdf_frame_type_t frame_type, - ftdf_boolean_t ack_tx, - ftdf_sn_t sn); - -ftdf_status_t ftdf_send_frame(ftdf_channel_number_t channel, - ftdf_frame_header_t *frame_header, - ftdf_security_header *security_header, - ftdf_octet_t *tx_ptr, - ftdf_data_length_t payload_size, - ftdf_octet_t *payload); - -#if !defined(FTDF_NO_CSL) || !defined(FTDF_NO_TSCH) -ftdf_status_t ftdf_send_ack_frame(ftdf_frame_header_t *frame_header, - ftdf_security_header *security_header, - ftdf_octet_t *tx_ptr); -#endif /* !FTDF_NO_CSL || !FTDF_NO_TSCH */ - -void ftdf_send_transparent_frame(ftdf_data_length_t frame_length, - ftdf_octet_t *frame, - ftdf_channel_number_t channel, - ftdf_pti_t pti, - ftdf_boolean_t cmsa_suppress); - -ftdf_octet_t *ftdf_get_rx_buffer(void); - -void ftdf_process_rx_event(void); - -ftdf_octet_t *ftdf_add_frame_header(ftdf_octet_t *tx_ptr, - ftdf_frame_header_t *frame_header, - ftdf_data_length_t msdu_length); - -ftdf_octet_t *ftdf_get_frame_header(ftdf_octet_t *rx_ptr, ftdf_frame_header_t *frame_header); - -ftdf_data_length_t ftdf_get_mic_length(ftdf_security_level_t security_level); - -ftdf_octet_t *ftdf_get_security_header(ftdf_octet_t *rx_ptr, - uint8_t frame_version, - ftdf_security_header *security_header); - -ftdf_octet_t *ftdf_add_security_header(ftdf_octet_t *tx_ptr, - ftdf_security_header *security_header); - -ftdf_status_t ftdf_secure_frame(ftdf_octet_t *buf_ptr, - ftdf_octet_t *priv_ptr, - ftdf_frame_header_t *frame_header, - ftdf_security_header *security_header); - -ftdf_status_t ftdf_unsecure_frame(ftdf_octet_t *buf_ptr, - ftdf_octet_t *priv_ptr, - ftdf_frame_header_t *frame_header, - ftdf_security_header *security_header); - -ftdf_key_descriptor_t *ftdf_lookup_key(ftdf_address_mode_t dev_addr_mode, - ftdf_pan_id_t dev_pan_id, - ftdf_address_t dev_addr, - ftdf_frame_type_t frame_type, - ftdf_key_id_mode_t key_id_mode, - ftdf_key_index_t key_index, - ftdf_octet_t *key_source); - -ftdf_device_descriptor_t *ftdf_lookup_device(ftdf_size_t nr_of_device_descriptor_handles, - ftdf_device_descriptor_handle_t *device_descriptor_handles, - ftdf_address_mode_t dev_addr_mode, - ftdf_pan_id_t dev_pan_id, - ftdf_address_t dev_addr); - -ftdf_security_level_descriptor_t *ftdf_get_security_level_descr(ftdf_frame_type_t frame_type, - ftdf_command_frame_id_t command_frame_id); - -#if !defined(FTDF_NO_CSL) || !defined(FTDF_NO_TSCH) -ftdf_octet_t *ftdf_add_ies(ftdf_octet_t *tx_ptr, - ftdf_ie_list_t *header_ie_list, - ftdf_ie_list_t *payload_ie_list, - ftdf_boolean_t with_termination_ie); - -ftdf_octet_t *ftdf_get_ies(ftdf_octet_t *rx_ptr, - ftdf_octet_t *frame_end_ptr, - ftdf_ie_list_t **header_ie_list, - ftdf_ie_list_t **payload_ie_list); -#endif /* !FTDF_NO_CSL || !FTDF_NO_TSCH */ - -#ifndef FTDF_NO_CSL -void ftdf_set_peer_csl_timing(ftdf_ie_list_t *header_ie_list, ftdf_time_t timeStamp); -void ftdf_set_csl_sample_time(void); -void ftdf_get_wakeup_params(ftdf_short_address_t dst_addr, - ftdf_time_t *wakeup_start_time, - ftdf_period_t *wakeup_period); -#endif /* FTDF_NO_CSL */ - -void ftdf_get_ext_address(void); -void ftdf_set_ext_address(void); -void ftdf_get_ack_wait_duration(void); -void ftdf_get_enh_ack_wait_duration(void); -void ftdf_set_enh_ack_wait_duration(void); -void ftdf_get_implicit_broadcast(void); -void ftdf_set_implicit_broadcast(void); -void ftdf_set_short_address(void); -void ftdf_set_simple_address(void); -void ftdf_get_rx_on_when_idle(void); -void ftdf_set_rx_on_when_idle(void); -void ftdf_getpan_id(void); -void ftdf_setpan_id(void); -void ftdf_get_current_channel(void); -void ftdf_set_current_channel(void); -void FTDF_setTXPower( void ); -void ftdf_get_max_frame_total_wait_time(void); -void ftdf_set_max_frame_total_wait_time(void); -#ifndef FTDF_NO_CSL -void ftdf_set_le_enabled(void); -void ftdf_get_csl_frame_pending_wait(void); -void ftdf_set_csl_frame_pending_wait(void); -#endif /* FTDF_NO_CSL */ -void ftdf_get_lmac_pm_data(void); -void ftdf_get_lmac_traffic_counters(void); -void ftdf_set_max_csma_backoffs(void); -void ftdf_set_max_be(void); -void ftdf_set_min_be(void); -void ftdf_get_keep_phy_enabled(void); -void ftdf_set_keep_phy_enabled(void); -void ftdf_set_bo_irq_threshold(void); -void ftdf_get_bo_irq_threshold(void); -void ftdf_set_pti_config(void); - -#ifndef FTDF_NO_TSCH -void ftdf_set_timeslot_template(void); -#endif /* FTDF_NO_TSCH */ - -void ftdf_init_lmac(void); -void ftdf_init_queues(void); -void ftdf_init_queue(ftdf_queue_t *queue); -void ftdf_queue_buffer_head(ftdf_buffer_t *buffer, ftdf_queue_t *queue); -ftdf_status_t ftdf_queue_req_head(ftdf_msg_buffer_t *request, ftdf_queue_t *queue); -ftdf_buffer_t *ftdf_dequeue_buffer_tail(ftdf_queue_t *queue); -ftdf_msg_buffer_t *ftdf_dequeue_req_tail(ftdf_queue_t *queue); -ftdf_msg_buffer_t *ftdf_dequeue_by_handle(ftdf_handle_t handle, ftdf_queue_t *queue); -ftdf_buffer_t *ftdf_dequeue_by_buffer(ftdf_buffer_t *buffer, ftdf_queue_t *queue); -ftdf_boolean_t ftdf_is_queue_empty(ftdf_queue_t *queue); - -void ftdf_add_tx_pending_timer(ftdf_msg_buffer_t *request, - uint8_t pend_list_nr, - ftdf_time_t delta, - void (* func)(ftdf_pending_tl_t*)); - -void ftdf_remove_tx_pending_timer(ftdf_msg_buffer_t *request); -void ftdf_restore_tx_pending_timer(void); -ftdf_boolean_t ftdf_get_tx_pending_timer_head(ftdf_time_t *time); -void ftdf_send_transaction_expired(ftdf_pending_tl_t *ptr); -#ifndef FTDF_NO_TSCH -void ftdf_process_keep_alive_timer_exp(ftdf_pending_tl_t *ptr); -void ftdf_reset_keep_alive_timer(ftdf_short_address_t dst_addr); -#endif /* FTDF_NO_TSCH */ - -void ftdf_process_tx_pending(ftdf_frame_header_t *frame_hader, ftdf_security_header *security_header); - -void ftdf_process_command_frame(ftdf_octet_t *rx_buffer, - ftdf_frame_header_t *frame_header, - ftdf_security_header *security_header, - ftdf_ie_list_t *payload_ie_list); - -void ftdf_scan_ready(ftdf_scan_request_t*); -void ftdf_add_pan_descriptor(ftdf_pan_descriptor_t*); -void ftdf_send_beacon_request(ftdf_channel_number_t channel); -void ftdf_send_beacon_request_indication(ftdf_frame_header_t *frame_header, ftdf_ie_list_t *payload_ie_list); -void ftdf_send_orphan_notification(ftdf_channel_number_t channel); - -#ifndef FTDF_NO_TSCH -void ftdf_set_tsch_enabled(void); -ftdf_status_t ftdf_schedule_tsch(ftdf_msg_buffer_t *request); -void ftdf_tsch_process_request(void); -ftdf_size_t ftdf_get_tsch_sync_sub_ie(void); -ftdf_octet_t *ftdf_add_tsch_sync_sub_ie(ftdf_octet_t *tx_ptr); -ftdf_short_address_t ftdf_get_request_address(ftdf_msg_buffer_t *request); -ftdf_msg_buffer_t *ftdf_tsch_get_pending(ftdf_msg_buffer_t *request); -ftdf_octet_t *ftdf_add_corr_time_ie(ftdf_octet_t *tx_ptr, ftdf_time_t rx_timestamp); -void ftdf_correct_slot_time(ftdf_time_t rx_timestamp); -void ftdf_correct_slot_time_from_ack(ftdf_ie_list_t *header_ie_list); -void ftdf_init_tsch_retries(void); -ftdf_tsch_retry_t *ftdf_get_tsch_retry(ftdf_short_address_t node_addr); -ftdf_num_of_backoffs_t ftdf_get_num_of_backoffs(ftdf_be_exponent_t be); -void ftdf_init_backoff(void); -ftdf_sn_t ftdf_process_tsch_sn(ftdf_msg_buffer_t *msg, ftdf_sn_t sn, uint8_t *priv); -#endif /* FTDF_NO_TSCH */ - -ftdf_time64_t ftdf_get_cur_time64(void); -void ftdf_init_cur_time64(void); - -#if FTDF_USE_SLEEP_DURING_BACKOFF -typedef enum -{ - FTDF_SDB_STATE_INIT = 0, - FTDF_SDB_STATE_BACKING_OFF, - FTDF_SDB_STATE_WAITING_WAKE_UP_IRQ, - FTDF_SDB_STATE_RESUMING, -} ftdf_sdb_state_t; - -typedef struct -{ - ftdf_sdb_state_t state; - ftdf_size_t nr_of_backoffs; - ftdf_time_t cca_retry_time; - ftdf_octet_t buffer[FTDF_BUFFER_LENGTH]; - uint32_t metadata_0; - uint32_t metadata_1; - uint32_t phy_csma_ca_attr; -} ftdf_sdb_t; - -void ftdf_sdb_fsm_reset(void); - -void ftdf_sdb_fsm_backoff_irq(void); - -void ftdf_sdb_fsm_sleep(void); - -void ftdf_sdb_fsm_abort_sleep(void); - -void ftdf_sdb_fsm_wake_up_irq(void); - -void ftdf_sdb_fsm_wake_up(void); - -void ftdf_sdb_fsm_tx_irq(void); - -ftdf_usec_t ftdf_sdb_get_sleep_time(void); - -#endif /* FTDF_USE_SLEEP_DURING_BACKOFF */ - -static inline void ftdf_set_link_quality_mode(void) -{ -#ifdef FTDF_PIB_LINK_QUALITY_MODE - REG_SETF(FTDF, FTDF_LMAC_CONTROL_1_REG, PHYRXATTR_DEM_PTI, - (ftdf_pib.link_quality_mode == FTDF_LINK_QUALITY_MODE_RSSI) ? 0x8 : 0); - - REG_SETF(DEM, RF_FTDF_CTRL4_REG, LQI_SCALE, 0); - - if (ftdf_pib.link_quality_mode == FTDF_LINK_QUALITY_MODE_RSSI) { - REG_SETF(DEM, RF_FTDF_CTRL4_REG, LQI_PREAMBLE_EN, 0); - REG_SETF(DEM, RF_FTDF_CTRL4_REG, LQI_CORRTH_EN, 1); - } else { - REG_SETF(DEM, RF_FTDF_CTRL4_REG, LQI_PREAMBLE_EN, 1); - REG_SETF(DEM, RF_FTDF_CTRL4_REG, LQI_CORRTH_EN, 0); - } - -#endif -} - -#if dg_configUSE_FTDF_DDPHY == 1 - -void ftdf_ddphy_restore(void); - -void ftdf_ddphy_save(void); - -#endif diff --git a/third_party/dialog/DialogSDK/interfaces/ftdf/src/main.c b/third_party/dialog/DialogSDK/interfaces/ftdf/src/main.c deleted file mode 100644 index 35a7f66a4..000000000 --- a/third_party/dialog/DialogSDK/interfaces/ftdf/src/main.c +++ /dev/null @@ -1,292 +0,0 @@ -/** - **************************************************************************************** - * - * @file main.c - * - * @brief Main FTDF functions - * - * Copyright (c) 2016, Dialog Semiconductor - * All rights reserved. - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. Neither the name of the copyright holder nor the names of its contributors - * may be used to endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, - * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, - * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED - * OF THE POSSIBILITY OF SUCH DAMAGE. - * - * - **************************************************************************************** - */ - -#include -#include - -#include "internal.h" -#include "ftdfInfo.h" - -void ftdf_get_release_info(char **lmac_rel_name, char **lmac_build_time, char **umac_rel_name, - char **umac_build_time) -{ - static char lrel_name[16]; - static char lbld_time[16]; - static char urel_name[16]; - static char ubld_time[16]; - uint8_t i; - - volatile uint32_t *ptr = &FTDF->FTDF_REL_NAME_0_REG; - uint32_t *chr_ptr = (uint32_t*)lrel_name; - - for (i = 0; i < 4; i++) { - *chr_ptr++ = *ptr++; - } - - ptr = &FTDF->FTDF_BUILDTIME_0_REG; - chr_ptr = (uint32_t*)lbld_time; - - for (i = 0; i < 4; i++) { - *chr_ptr++ = *ptr++; - } - - const char* umac_v_ptr = ftdf_get_umac_rel_name(); - - for (i = 0; i < 16; i++) { - urel_name[i] = umac_v_ptr[i]; - - if (umac_v_ptr[i] == '\0') { - break; - } - } - - umac_v_ptr = ftdf_get_umac_build_time(); - - for (i = 0; i < 16; i++) { - ubld_time[i] = umac_v_ptr[i]; - - if (umac_v_ptr[i] == '\0') { - break; - } - } - - lrel_name[15] = '\0'; - lbld_time[15] = '\0'; - urel_name[15] = '\0'; - ubld_time[15] = '\0'; - - *lmac_rel_name = lrel_name; - *lmac_build_time = lbld_time; - *umac_rel_name = urel_name; - *umac_build_time = ubld_time; -} - -void ftdf_confirm_lmac_interrupt(void) -{ - REG_SETF(FTDF, FTDF_FTDF_CM_REG, FTDF_CM, 0); -} - -void ftdf_event_handler(void) -{ - volatile uint32_t ftdf_ce = FTDF->FTDF_FTDF_CE_REG; - - if (ftdf_ce & FTDF_MSK_RX_CE) { - ftdf_process_rx_event(); - } - - if (ftdf_ce & FTDF_MSK_TX_CE) { - ftdf_process_tx_event(); - } - - if (ftdf_ce & FTDF_MSK_SYMBOL_TMR_CE) { - ftdf_process_symbol_timer_event(); - } - -#ifndef FTDF_LITE -#ifndef FTDF_NO_CSL - if (ftdf_pib.le_enabled) { - ftdf_time_t cur_time = REG_GETF(FTDF, FTDF_SYMBOLTIMESNAPSHOTVAL_REG, - SYMBOLTIMESNAPSHOTVAL); - - ftdf_time_t delta = cur_time - ftdf_rz_time; - - if (delta < 0x80000000) { - /* RZ has passed check if a send frame is pending */ - if (ftdf_send_frame_pending != 0xfffe) { - ftdf_time_t wakeup_start_time; - ftdf_period_t wakeup_period; - - ftdf_critical_var(); - ftdf_enter_critical(); - - ftdf_get_wakeup_params(ftdf_send_frame_pending, &wakeup_start_time, - &wakeup_period); - - ftdf_tx_in_progress = FTDF_TRUE; - REG_SETF(FTDF, FTDF_LMAC_CONTROL_8_REG, MACCSLSTARTSAMPLETIME, - wakeup_start_time); - REG_SETF(FTDF, FTDF_LMAC_CONTROL_7_REG, MACWUPERIOD, wakeup_period); - - REG_SETF(FTDF, FTDF_TX_SET_OS_REG, TX_FLAG_SET, - ((1 << FTDF_TX_DATA_BUFFER) | - (1 << FTDF_TX_WAKEUP_BUFFER))); - - ftdf_send_frame_pending = 0xfffe; - - ftdf_exit_critical(); - } - - if (ftdf_tx_in_progress == FTDF_FALSE) { - ftdf_set_csl_sample_time(); - } - } - } -#endif /* FTDF_NO_CSL */ -#endif /* !FTDF_LITE */ - REG_SETF(FTDF, FTDF_FTDF_CM_REG, FTDF_CM, - (FTDF_MSK_TX_CE | FTDF_MSK_RX_CE | FTDF_MSK_SYMBOL_TMR_CE)); -} - -#ifndef FTDF_PHY_API -void ftdf_snd_msg(ftdf_msg_buffer_t* msg_buf) -{ - switch (msg_buf->msg_id) { -#ifndef FTDF_LITE - case FTDF_DATA_REQUEST: - ftdf_process_data_request((ftdf_data_request_t*)msg_buf); - break; - case FTDF_PURGE_REQUEST: - ftdf_process_purge_request((ftdf_purge_request_t*)msg_buf); - break; - case FTDF_ASSOCIATE_REQUEST: - ftdf_process_associate_request((ftdf_associate_request_t*)msg_buf); - break; - case FTDF_ASSOCIATE_RESPONSE: - ftdf_process_associate_response((ftdf_associate_response_t*)msg_buf); - break; - case FTDF_DISASSOCIATE_REQUEST: - ftdf_process_disassociate_request((ftdf_disassociate_request_t*)msg_buf); - break; -#endif /* !FTDF_LITE */ - case FTDF_GET_REQUEST: - ftdf_process_get_request((ftdf_get_request_t*)msg_buf); - break; - case FTDF_SET_REQUEST: - ftdf_process_set_request((ftdf_set_request_t*)msg_buf); - break; -#ifndef FTDF_LITE - case FTDF_ORPHAN_RESPONSE: - ftdf_process_orphan_response((ftdf_orphan_response_t*)msg_buf); - break; -#endif /* !FTDF_LITE */ - case FTDF_RESET_REQUEST: - ftdf_process_reset_request((ftdf_reset_request_t*)msg_buf); - break; - case FTDF_RX_ENABLE_REQUEST: - ftdf_process_rx_enable_request((ftdf_rx_enable_request_t*)msg_buf); - break; -#ifndef FTDF_LITE - case FTDF_SCAN_REQUEST: - ftdf_process_scan_request((ftdf_scan_request_t*)msg_buf); - break; - case FTDF_START_REQUEST: - ftdf_process_start_request((ftdf_start_request_t*)msg_buf); - break; - case FTDF_POLL_REQUEST: - ftdf_process_poll_request((ftdf_poll_request_t*)msg_buf); - break; -#ifndef FTDF_NO_TSCH - case FTDF_SET_SLOTFRAME_REQUEST: - ftdf_process_set_slotframe_request((ftdf_set_slotframe_request_t*)msg_buf); - break; - case FTDF_SET_LINK_REQUEST: - ftdf_process_set_link_request((ftdf_set_link_request_t*)msg_buf); - break; - case FTDF_TSCH_MODE_REQUEST: - ftdf_process_tsch_mode_request((ftdf_tsch_mode_request_t*)msg_buf); - break; - case FTDF_KEEP_ALIVE_REQUEST: - ftdf_process_keep_alive_request((ftdf_keep_alive_request_t*)msg_buf); - break; -#endif /* FTDF_NO_TSCH */ - case FTDF_BEACON_REQUEST: - ftdf_process_beacon_request((ftdf_beacon_request_t*)msg_buf); - break; -#endif /* !FTDF_LITE */ - case FTDF_TRANSPARENT_ENABLE_REQUEST: - ftdf_enable_transparent_mode(((ftdf_transparent_enable_request_t*)msg_buf)->enable, - ((ftdf_transparent_enable_request_t*)msg_buf)->options); - FTDF_REL_MSG_BUFFER(msg_buf); - break; - case FTDF_TRANSPARENT_REQUEST: - ftdf_process_transparent_request((ftdf_transparent_request_t*)msg_buf); - break; - case FTDF_SLEEP_REQUEST: - FTDF_SLEEP_CALLBACK(((ftdf_sleep_request_t*)msg_buf)->sleep_time); - FTDF_REL_MSG_BUFFER(msg_buf); - break; -#ifndef FTDF_LITE - case FTDF_REMOTE_REQUEST: - ftdf_process_remote_request((ftdf_remote_request_t*)msg_buf); - break; -#endif /* !FTDF_LITE */ -#if FTDF_DBG_BUS_ENABLE - case FTDF_DBG_MODE_SET_REQUEST: - ftdf_set_dbg_mode(((ftdf_dbg_mode_set_request_t *) msg_buf)->dbg_mode); - FTDF_REL_MSG_BUFFER(msg_buf); - break; -#endif /* FTDF_DBG_BUS_ENABLE */ - case FTDF_FPPR_MODE_SET_REQUEST: - ftdf_fppr_set_mode(((ftdf_fppr_mode_set_request_t *) msg_buf)->match_fp, - ((ftdf_fppr_mode_set_request_t *) msg_buf)->fp_override, - ((ftdf_fppr_mode_set_request_t *) msg_buf)->fp_force); - FTDF_REL_MSG_BUFFER(msg_buf); - break; - default: - // Silenty release the message buffer - FTDF_REL_MSG_BUFFER(msg_buf); - break; - } -} - -void ftdf_send_frame_transparent_confirm(void *handle, ftdf_bitmap32_t status) -{ - ftdf_transparent_confirm_t* confirm = - (ftdf_transparent_confirm_t*) FTDF_GET_MSG_BUFFER( - sizeof(ftdf_transparent_confirm_t)); - - confirm->msg_id = FTDF_TRANSPARENT_CONFIRM; - confirm->handle = handle; - confirm->status = status; - - FTDF_RCV_MSG((ftdf_msg_buffer_t*)confirm); -} - -void ftdf_rcv_frame_transparent(ftdf_data_length_t frame_length, ftdf_octet_t *frame, - ftdf_bitmap32_t status, ftdf_link_quality_t link_quality) -{ - ftdf_transparent_indication_t *indication = - (ftdf_transparent_indication_t*) FTDF_GET_MSG_BUFFER( - sizeof(ftdf_transparent_indication_t)); - - indication->msg_id = FTDF_TRANSPARENT_INDICATION; - indication->frame_length = frame_length; - indication->status = status; - indication->frame = FTDF_GET_DATA_BUFFER(frame_length); - memcpy(indication->frame, frame, frame_length); - - FTDF_RCV_MSG((ftdf_msg_buffer_t*)indication); -} -#endif /* !FTDF_PHY_API */ diff --git a/third_party/dialog/DialogSDK/interfaces/ftdf/src/power.c b/third_party/dialog/DialogSDK/interfaces/ftdf/src/power.c deleted file mode 100644 index 4a70afdab..000000000 --- a/third_party/dialog/DialogSDK/interfaces/ftdf/src/power.c +++ /dev/null @@ -1,327 +0,0 @@ -/** - **************************************************************************************** - * - * @file power.c - * - * @brief FTDF power on/off functions - * - * Copyright (c) 2016, Dialog Semiconductor - * All rights reserved. - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. Neither the name of the copyright holder nor the names of its contributors - * may be used to endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, - * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, - * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED - * OF THE POSSIBILITY OF SUCH DAMAGE. - * - **************************************************************************************** - */ - -#include -#include -#include "internal.h" -#include "sdk_defs.h" - -#ifdef CONFIG_USE_FTDF -static ftdf_psec_t ftdf_low_power_clock_cycle __attribute__ ((section(".retention"))); -static ftdf_psec_t ftdf_wake_up_latency __attribute__ ((section(".retention"))); -/* Pre-calculated value for optimization. */ -static ftdf_usec_t ftdf_low_power_clock_cycle_u_sec __attribute__ ((section(".retention"))); -/* Pre-calculated value for optimization. */ -static ftdf_usec_t ftdf_wake_up_latency_u_sec __attribute__ ((section(".retention"))); -/* Pre-calculated value for optimization. */ -static ftdf_nr_low_power_clock_cycles_t ftdf_csmaca_wakeup_thr __attribute__ ((section(".retention"))); - -#if !defined(FTDF_NO_CSL) || !defined(FTDF_NO_TSCH) -static uint32_t ftdf_event_curr_val __attribute__ ((section(".retention"))); -static uint32_t ftdf_time_stamp_curr_val __attribute__ ((section(".retention"))); -static uint32_t ftdf_time_stamp_curr_phase_val __attribute__ ((section(".retention"))); -#endif -#ifndef FTDF_NO_CSL -ftdf_boolean_t ftdf_wake_up_enable_le __attribute__ ((section(".retention"))); -#endif /* FTDF_NO_CSL */ -#ifndef FTDF_NO_TSCH -ftdf_boolean_t ftdf_wake_up_enable_tsch; -#endif /* FTDF_NO_TSCH */ - -void ftdf_set_sleep_attributes(ftdf_psec_t low_power_clock_cycle, - ftdf_nr_low_power_clock_cycles_t wake_up_latency) -{ - ftdf_low_power_clock_cycle = low_power_clock_cycle; - ftdf_wake_up_latency = (ftdf_psec_t)wake_up_latency * low_power_clock_cycle; - ftdf_low_power_clock_cycle_u_sec = ftdf_low_power_clock_cycle / 1000000; - ftdf_wake_up_latency_u_sec = ftdf_wake_up_latency / 1000000; - ftdf_csmaca_wakeup_thr = (ftdf_nr_low_power_clock_cycles_t) - (((ftdf_psec_t) 0xffffffff * 1000000 - ftdf_wake_up_latency) / ftdf_low_power_clock_cycle); -} - -ftdf_usec_t ftdf_can_sleep(void) -{ -#ifdef FTDF_PHY_API - if (ftdf_tx_in_progress || ftdf_pib.keep_phy_enabled) { - return 0; - } -#else -#if FTDF_USE_SLEEP_DURING_BACKOFF - if (ftdf_pib.keep_phy_enabled) -#else - if (ftdf_req_current || ftdf_pib.keep_phy_enabled) -#endif /* FTDF_USE_SLEEP_DURING_BACKOFF */ - { - return 0; - } -#endif -#if FTDF_USE_SLEEP_DURING_BACKOFF - if (REG_GETF(FTDF, FTDF_SECURITY_STATUS_REG, SECBUSY) == 1) -#else /* FTDF_USE_SLEEP_DURING_BACKOFF */ - if ((REG_GETF(FTDF, FTDF_LMAC_CONTROL_STATUS_REG, LMACREADY4SLEEP) == 0) || - (REG_GETF(FTDF, FTDF_SECURITY_STATUS_REG, SECBUSY) == 1)) -#endif /* FTDF_USE_SLEEP_DURING_BACKOFF */ - { - - return 0; - } - -#ifndef FTDF_NO_CSL - if (ftdf_pib.le_enabled) { -#if FTDF_USE_SLEEP_DURING_BACKOFF - /* Abort sleep when LMAC is busy. */ - if (REG_GETF(FTDF, FTDF_LMAC_CONTROL_STATUS_REG, LMACREADY4SLEEP) == 0) { - return 0; - } -#endif /* FTDF_USE_SLEEP_DURING_BACKOFF */ - if (ftdf_tx_in_progress == FTDF_FALSE) { - ftdf_time_t cur_time = REG_GETF(FTDF, FTDF_SYMBOLTIMESNAPSHOTVAL_REG, - SYMBOLTIMESNAPSHOTVAL); - ftdf_time_t delta = cur_time - ftdf_start_csl_sample_time; - - /* A delta larger than 0x80000000 is assumed to be negative */ - /* Do not return a sleep value when CSL sample time is in the past */ - if (delta < 0x80000000) { - return 0; - } - - return (ftdf_start_csl_sample_time - cur_time) * 16; - } else { - return 0; - } - } -#endif /* FTDF_NO_CSL */ - -#ifndef FTDF_NO_TSCH - if (ftdf_pib.tsch_enabled) { -#if FTDF_USE_SLEEP_DURING_BACKOFF - /* Abort sleep when LMAC is busy. */ - if (REG_GETF(FTDF, FTDF_LMAC_CONTROL_STATUS_REG, LMACREADY4SLEEP) == 0) { - return 0; - } -#endif - ftdf_time64_t curTime64 = ftdf_get_cur_time64(); - ftdf_time64_t delta = curTime64 - ftdf_tsch_slot_time; - - /* A delta larger than 0x8000000000000000 is assumed to be negative */ - /* Do not return a sleep value when TSCH slot time is in the past */ - if (delta < 0x8000000000000000ULL) { - return 0; - } - - ftdf_usec_t sleep_time = (ftdf_usec_t)(ftdf_tsch_slot_time - curTime64); - - ftdf_time_t pend_list_time; - ftdf_time_t curTime = REG_GETF(FTDF, FTDF_SYMBOLTIMESNAPSHOTVAL_REG, SYMBOLTIMESNAPSHOTVAL); - ftdf_boolean_t pending = ftdf_get_tx_pending_timer_head(&pend_list_time); - - if (pending) { - /* A delta larger than 0x80000000 is assumed to be negative */ - /* Do not return a sleep value when pending timer time is in the past */ - if (curTime - pend_list_time < 0x80000000) { - return 0; - } - - ftdf_usec_t tmp_sleep_time = (ftdf_usec_t)(pend_list_time - curTime); - - if (tmp_sleep_time < sleep_time) { - sleep_time = tmp_sleep_time; - } - } - - if (sleep_time < FTDF_TSCH_MAX_PROCESS_REQUEST_TIME + FTDF_TSCH_MAX_SCHEDULE_TIME) { - return 0; - } - - return (sleep_time - (FTDF_TSCH_MAX_PROCESS_REQUEST_TIME + FTDF_TSCH_MAX_SCHEDULE_TIME)) * 16; - } -#endif /* FTDF_NO_TSCH */ - -#ifndef FTDF_LITE - /* Normal mode */ - int n; - - for (n = 0; n < FTDF_NR_OF_REQ_BUFFERS; n++) { - if (ftdf_tx_pending_list[n].addr_mode != FTDF_NO_ADDRESS) { - return 0; - } - } -#endif /* !FTDF_LITE */ -#if FTDF_USE_SLEEP_DURING_BACKOFF - return ftdf_sdb_get_sleep_time(); -#else /* FTDF_USE_SLEEP_DURING_BACKOFF */ - return 0xffffffff; -#endif /* FTDF_USE_SLEEP_DURING_BACKOFF */ -} - -ftdf_boolean_t ftdf_prepare_for_sleep(ftdf_usec_t sleep_time) -{ -#if !defined(FTDF_NO_CSL) || !defined(FTDF_NO_TSCH) - if (ftdf_pib.le_enabled || ftdf_pib.tsch_enabled) { - if (sleep_time < (2 * ftdf_low_power_clock_cycle_u_sec)) { - return FTDF_FALSE; - } - - // Correct sleeptime with the inaccuracy of this function - sleep_time -= (2 * ftdf_low_power_clock_cycle_u_sec); - - if (sleep_time < (ftdf_wake_up_latency_u_sec + 500)) { - return FTDF_FALSE; - } - } - -#endif - - ftdf_critical_var(); - ftdf_enter_critical(); - -#if !defined(FTDF_NO_CSL) || !defined(FTDF_NO_TSCH) - /* Capture the current value of both the event generator and the timestamp generator - and phase on the rising edge of LP_CLK */ - REG_SETF(FTDF, FTDF_LMAC_CONTROL_OS_REG, GETGENERATORVAL, 1); - -#endif - /* Save current LMAC PM counters */ - ftdf_lmac_counters.fcs_error_cnt += REG_GETF(FTDF, FTDF_MACFCSERRORCOUNT_REG, MACFCSERRORCOUNT); - ftdf_lmac_counters.tx_std_ack_cnt += REG_GETF(FTDF, FTDF_MACTXSTDACKFRMCNT_REG, MACTXSTDACKFRMCNT); - ftdf_lmac_counters.rx_std_ack_cnt += REG_GETF(FTDF, FTDF_MACRXSTDACKFRMOKCNT_REG, MACRXSTDACKFRMOKCNT); - -#if !defined(FTDF_NO_CSL) || !defined(FTDF_NO_TSCH) - - /* Wait until data is ready */ - while (REG_GETF(FTDF, FTDF_LMAC_CONTROL_DELTA_REG, GETGENERATORVAL_E) == 0) {} - - ftdf_event_curr_val = REG_GETF(FTDF, FTDF_EVENTCURRVAL_REG, EVENTCURRVAL); - ftdf_time_stamp_curr_val = REG_GETF(FTDF, FTDF_TIMESTAMPCURRVAL_REG, TIMESTAMPCURRVAL); - ftdf_time_stamp_curr_phase_val = REG_GETF(FTDF, FTDF_TIMESTAMPCURRPHASEVAL_REG, TIMESTAMPCURRPHASEVAL); - -#ifdef SIMULATOR - REG_CLR_FIELD(FTDF, FTDF_LMAC_CONTROL_DELTA_REG, GETGENERATORVAL_E, FTDF->FTDF_LMAC_CONTROL_DELTA_REG); -#else - FTDF->FTDF_LMAC_CONTROL_DELTA_REG = REG_MSK(FTDF, FTDF_LMAC_CONTROL_DELTA_REG, GETGENERATORVAL_E); -#endif - uint64_t next_wake_up_thr; -#if FTDF_USE_SLEEP_DURING_BACKOFF - uint64_t pico_sleep_time = (uint64_t)sleep_time * 1000000; - next_wake_up_thr = ( pico_sleep_time - ftdf_wake_up_latency ) / ftdf_low_power_clock_cycle; -#else /* FTDF_USE_SLEEP_DURING_BACKOFF */ - if (ftdf_pib.le_enabled || ftdf_pib.tsch_enabled) { - uint64_t picoSleepTime = (uint64_t)sleep_time * 1000000; - next_wake_up_thr = (picoSleepTime - ftdf_wake_up_latency) / ftdf_low_power_clock_cycle; - } else { - next_wake_up_thr = ftdf_csmaca_wakeup_thr; - } -#endif /* FTDF_USE_SLEEP_DURING_BACKOFF */ - - /* Set wake up threshold */ - uint32_t wake_up_int_thr = ftdf_event_curr_val + next_wake_up_thr; - /* Note that for IC revs other than A the size of WAKEUPINTTHR is 25 bits. */ - REG_SETF(FTDF, FTDF_WAKEUP_CONTROL_REG, WAKEUPINTTHR, wake_up_int_thr); - REG_SETF(FTDF, FTDF_WAKEUP_CONTROL_REG, WAKEUPENABLE, 1); -#endif - ftdf_exit_critical(); - - return FTDF_TRUE; -} - -void ftdf_wakeup(void) -{ -#ifndef FTDF_PHY_API - ftdf_critical_var(); - ftdf_enter_critical(); - - REG_SETF(FTDF, FTDF_WAKEUP_CONTROL_REG, WAKEUPENABLE, 0); - -#if !defined(FTDF_NO_CSL) || !defined(FTDF_NO_TSCH) - /* Capture the current value of both the event generator and the timestamp generator - and phase on the rising edge of LP_CLK */ - REG_SETF(FTDF, FTDF_LMAC_CONTROL_OS_REG, GETGENERATORVAL, 1); - - /* Wait until data is ready */ - while (REG_GETF(FTDF, FTDF_LMAC_CONTROL_DELTA_REG, GETGENERATORVAL_E) == 0) {} - - uint32_t event_new_curr_val = REG_GETF(FTDF, FTDF_EVENTCURRVAL_REG, EVENTCURRVAL); - -#ifdef SIMULATOR - REG_CLR_FIELD(FTDF, FTDF_LMAC_CONTROL_DELTA_REG, GETGENERATORVAL_E); -#else - FTDF->FTDF_LMAC_CONTROL_DELTA_REG = REG_MSK(FTDF, FTDF_LMAC_CONTROL_DELTA_REG, GETGENERATORVAL_E); -#endif - - /* Backward calculate the time slept */ - /* ftdf_psec_t sleep_time = ((uint64_t)(event_new_curr_val - ftdf_event_curr_val) * - ftdf_low_power_clock_cycle) + ftdf_wake_up_latency; */ - - ftdf_psec_t sleep_time; - if (event_new_curr_val >= ftdf_event_curr_val) { /* Check for wraps. */ - sleep_time = (event_new_curr_val - ftdf_event_curr_val) * ftdf_low_power_clock_cycle + - ftdf_wake_up_latency; - } else { - sleep_time = (event_new_curr_val + - (REG_MSK(FTDF, FTDF_EVENTCURRVAL_REG, EVENTCURRVAL) - ftdf_event_curr_val)) * - ftdf_low_power_clock_cycle + ftdf_wake_up_latency; - } - /* Calculate sync values */ - uint64_t new_sync_vals = ((uint64_t)ftdf_time_stamp_curr_val << 8) | - (ftdf_time_stamp_curr_phase_val & 0xff); - - new_sync_vals += (sleep_time / 62500) + 1; - - uint32_t sync_timestamp_thr = ftdf_event_curr_val + (sleep_time / ftdf_low_power_clock_cycle); - uint32_t sync_timestamp_val = (new_sync_vals & 0xffffffff00) >> 8; - uint32_t sync_timestamp_phase_val = (new_sync_vals & 0xff); - - /* Set values */ - REG_SETF(FTDF, FTDF_SYNCTIMESTAMPTHR_REG, SYNCTIMESTAMPTHR, sync_timestamp_thr); - REG_SETF(FTDF, FTDF_SYNCTIMESTAMPVAL_REG, SYNCTIMESTAMPVAL, sync_timestamp_val); - REG_SETF(FTDF, FTDF_SYNCTIMESTAMPPHASEVAL_REG, SYNCTIMESTAMPPHASEVAL, sync_timestamp_phase_val); - REG_SETF(FTDF, FTDF_TIMER_CONTROL_1_REG, SYNCTIMESTAMPENA, 1); -#endif - - ftdf_exit_critical(); - -#ifndef FTDF_NO_CSL - ftdf_wake_up_enable_le = ftdf_pib.le_enabled; - ftdf_pib.le_enabled = FTDF_FALSE; -#endif /* FTDF_NO_CSL */ - -#ifndef FTDF_NO_TSCH - ftdf_wake_up_enable_tsch = ftdf_pib.tsch_enabled; - ftdf_pib.tsch_enabled = FTDF_FALSE; -#endif /* FTDF_NO_TSCH */ -#endif /* ! FTDF_PHY_API */ - /* Init LMAC */ - ftdf_init_lmac(); -} -#endif /* CONFIG_USE_FTDF */ diff --git a/third_party/dialog/DialogTools/cli_programmer b/third_party/dialog/DialogTools/cli_programmer deleted file mode 100755 index 0db5c2e0c31725b77fda0e782541708a36c1bddc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 133800 zcma%k3t$sf7Isn^CYZOfo6-|Nkn+`2jr#|h=lolt`0^Y`kzT5zu8~%ufRy^-|xPm*EGLv zHkT+Tl(gFZqnF$MGg-jR@8DQHyYvo&Afp{~Y?o=Y%QV`V->n8Z^V=LB$HsqS4RmAE z3Xo&IfL}I`_)LDYF8_*m`KB;kd!LTD_CB|Oo8R9WgEzm;cB9d*i>Uek_u(|E-D33D z5npU3JB)8*xVFn@l;3^D(935`891YSmVd#(1-VxYykh8}xw8ii7UL#<)*X4%IMGvr zkI0ec-uOoyVEMFtAOHQMg(cC4_RW9sz{`cl78eeEp7n3VKjIK_W5VuCBWyhW4LI+y zbMp>_P4xgI^=}Xm^h^bb+~^MAE)a9F`nBlyWbnhlb~5;>9pJyG13X`Jfak0Z@N`Fg z7yh;X3j=U6dOqr)-)}ppzp#UTf9n9xe>%XkpaVQVbO7Jp0sgZ(kjwZE>i^gQJ;OWb zcS#3${?q|{R|oKCI>5iC1A59ksDE|`_)9u~ukQfQjt=VouLJli9niU`1N>b&kjvv8 z;J={*_@oZ-7k5zqlMdiCCMVPXE*;b#(Luk#4&c{xfTutB=EA@Be^+);|Emt*r*{C~ z-vK?e%O@Le5QLlzUfKb?e+T`>JE;Fg2mLPZp#Bpbz#r?N-?k3$Ki&a+X$SC!I>5iQ z1A3$m>c7}Q{p=3vUy1rI{A>TWr-S-kI-tJ+2u>!)`5n}Mp#%Ik0*?#-+W(E{p#D7_ z;QtN?PDan4JHYdP2Y6f^z$-d{Z|(s8U2^cDER^8IKJE9>QO12e%=P znd4*Jl4F}#GdjBuxMarclIattmim0O3G$Vo?bd<@_bv# z>{+u)OMIwOHl=iiPc%a1S;SP~_ss={InxD#$shqJCzeevpTVM%X_M#J=9EsJ0pi%V zZ}tqpMSs)Fk(@Y@!@_7qgPGI8l9?5H#py1pQ#NgE=S*FXsBD z%=Uv@q#cBp%tLuOSeTbLv21S1!+6iIb;HnZrKGfiiG@ZmF$eZs`m%NsQ7z z17!Kg`q>pe+sp*LAcqx7CeJM;0dq=c&YnlPm-z0jD4lpW3ASN~rL*Rt8nk4NZSK9~ z34zmQ&-LAX@2ts?E@U+;g=jF=PtNM3_~*_jEd{gY&nfqn+RDKHDQKdTD}*D1QA9PtuYmqgtRks`c(pKQgt`hN%?66vm3-6rd! z0DpGzpUuW~jSK($XP0-i*)nYX*bskq^f?#b=DMm^d3g^T@Z_MJuqPjX3d@)-wyTZ& z-$cH%?Rq2MThw>hMjQDvMLykjhmrT4#r`_kN{zhUe_Epdw*O8h8Dg!JEmHc2X$QG% z3rM;MVnRu?240cs7|}frDX*zeyJODG8{}Hq8R(+RFT^u)rb6#NPr7{L}>0W~;Qo zB@4XT0ylMo#WfcAX_op+EO4v8U21{%vebXg0_U3A{99&$pKb#2U2B1#VSzVT;AdLk zYb@|g3w(nGewGEk#R5Ou0&lgz&#}N&3*5Sx-*17RXQ|(2fuC=I+ulyYXb4T!2-{-z_(c7S6Se# z7WmZ`xN3n9x4`#X;Q1DKn+1N21#bIaQva{Dz%wlH0t?(}fx9j6Obh%v3*2RakFdb| zTi_lGJlg^~Ds7K+Q<-n?pCcQj9>;e?U`(@!%>QjIe^V3+UwZ`$+?`-Dn%x@6+p3Kw5YYigb zjd{9uZJEfYF;ADSEfx7APa{uPuGNVA0p{t#wMvoS%{*PVRw42`nWxLvCW-tv%+pnC z#Uj6n`EJY?i2OR{>9VzKkzdI?UA5*C`8ww5qBW<;|BrdPX3Zw@Z!k}ntnEJzK);un zrz_T4MgCdl>4LQlBL4*QbiG=G$Un+FU9PrF(UBD zejW34Sz5NpuVkLCN^^;P9rJWinp5Qe$2?t=W)t~0n5Rq9_WvQ|&pcg`)++MPGEWzz zZ4mh=ZQjx!pdAb;_M&#!(PuHSViu|9Mr%TZ)ME-8( z=}NRoB7ZycbRk-?$lt;|U58d6@;5L~m!V~g{B_LJRcJ1ezlwRf2+b+-gPEsm&}<@q z3G;Lb+Ww&FJ-zxHFGfx+wZ4mjM%+vI14IA8TO}bVf^6QwVDc7<^ekJo> z=3OFR$2?8C<`nt=F;7#j*+l*g=4ryU{YQlSnWyR2T1Ea@=4rCE4amF4ui)IQqd|1v z>K^AFTcrG2fBqG2+c@P|l+ZD9)z6u*k5lAudOzy1tOT<%0LW=jufdFqE-0S`wtwmFPvEv_GD#L<_`3itRUqd z@FUhw>I3OX^+(hKXj!OXL2l&EOnct8g&w(NeNj05V>ZZ*+;7i0BrPwt=N(()jJK9D7W9bKTgVE0Y)pr%KmWO8I|ma~3Ml0Rw_kZYY$ zRG)cef@|tqfCkpbwN)qx4?FlBNX6JLMkGQ){)G-W7#rBC<)8~W+~cnxtImajdeCo+ z766%gB{;90%5K9w=CYjbM=!quB&cVi9Ml!V$_ZuA%27A^IE#k2q3M-C9sL1Xs=hUq zL!Syd)Q2$VwBJ~&SCfbpT{ z&9Jw6&-*xm!aas@q~ZK#Hkk(Wq6sQKNG`pm<9nTjbhJ9YyNGX;j_=_Fz88T{?E>0z z_7o`_|0F9r<-ia7i^mqVG;A0Mv9>f$5??LO^9pS0r>OXA*&wM;5NI*U`q*m!0@WEO z53I(Q9B4aLR(8!#yQ`^|#hmEB-W6q0yjAK`Nmwm&X8p#tPN**{E9J)B*UI({^2Rnl z8dEROcoQ1SO0(X6r_sJL|LfMi*q%CV99pUi!T7tH9nApQ4>mFWlLPsgkD-F^`~(TT z$3>n00n3$L@eOxr_oE5u*5>NpKyz%2tQ>^VTf$zIpHl2zHDF-tMX)HIa3|U%*NPv& zkh&=-FqvLW(--k(x$1sGQGFX3ru?Mlz-fEJBQEQp)h&rue^^@`h3l8YH)aDvUHTvc zow^Iq@ckJ;mmZ2sp{Jm`Icw`rM|s^oqq~)?GS`VJ-9v|@(7U2a-T6epdZg$@R=F_~ zReFckN})}9m5Z!Z9$=L*E>t-;v`Gr>*Q*S)R=JH;M)XIOEKV}s2*_DmH_Te)3RFRP zZU;jj|GUYs=5mlX+#t_}Rv3Cg-ALjxp}P?q0V>yxwnD!E6g?Do(8F&~R9z&Kt*!p9 zphTs9(r;`t1asok$u5<$e?K7I8%7ctg^r!^$@;A)Oqgek#+ag?|r>3&K~el7j0ffJosq_eWf0$qGUOWGBf=dKTun-hu?FZ=)k`*q7z< zh9Ai4FNg2U${vN85>$vFv{ef7jIQ!(c%$)vxGS$IkwSk1N_XW#`wS`csGdwKmqLs5 zWG9<{L6lQ|#c2R|mE#9rm4XM+Hp&^jA|napZJj7*bF!xYJURSewjMD|{RK?JsBQ)W zWTh}0bbAp66dPa}-(KagT7YluQr&JvIj6nKA+MsL*AQKMl$HQg=%C;M62j?kC1e~4 zp#rQxEM=0c5=fz1Yd%LH1!bujDnsYws5561>HX|iWW(^(a^B}sun2{fSJ|Wx*R@Jv zR!bod-)+M2mYFVt<65v^A5R6oiDnwUwK32<$}6yHnn!81L^Ws%>l>vxSaFIV`q05w z{WnKxI#zI9ZZQ6K5=_gnqFVwO;;}LKT%hwgzEAJ)C&Adl0_`buYT&0aFj@k?6p8^! zlx8Bq(aaBI)W>gAfXi6v}F4PQtf#BW8l3w+6oQ6nx*KT;Tf#38nBdZ4E&_)$S0KN3n| z_m)DZ==U7a&=#dtU%~APU5uedGBf<3tV?XvUf_a?3=^tSC~H3;6cc_vsf9%;{WYP2 z=&ue5rSROALYL_8P0`Rw=V>YJ!e+aNM7!QCg_)w=+!NY;P3=j@cZ}KY2GK58yAIz` zdL4tCvxS z_L4zki7~J$Lqv&iMCN>Rk1JBX6pOrZ!kj9Hxud2!$k#}*T~=0ml^=1E{c+i&!Lxga2yC&C~V|LdPXY&Y-tdm@u7_~zhJ zV2T$U>J91zYt(0vf`pugWzcsE683>c3D*1@PO1h_p3~5tK(z?n6^8amp*!K%W8nn< z+_z$P;_LS8I|sE%z+Y9pTT^qud3}Ah%4q@Bj8VVAcE8djs0(df(B%$Y?;wEhP=Gb= z&P{!7ZYa0XSeFH+nTxK!q8}h?DieQ+CFvLl!o`3Q()h6@Jqv8dBG!{d4`Wl0->mb< z-=8~7aAZ#Perz2oO?rCAPsE8(@W}>n%mw5%V9RYf9k+uH5CKx^T!WKzoB}#x4PZ); zJ=n&m-DJyn{Fd>YrsL_E9FJ_l(n}n5*r)0u@V}ir z-D7h$={}GXEPOts%E>tn*yM2UECimu2jDyX^X2ee8H`GQ6fR+hI>b`r64vOaG}ClU z$5t+km>}x^K)UWtg(y!#;HsYYRSn zDFqqmh&bX*B;@cNB7OuvR+D2FikjUKysnn>*8486%(M9~aaRt{8t5Bin2~+z_8SFr zR!gBmpb#1oyFm8?;U2erb|PPnVV37`vN(1Bkg%_AX}KrM9&GS+A3o6kq8rZf&|xM`LG&IzPzvo5g%pMq`kHB7AcuD8j*~)=l_vGp>r6R(f=XB%`*Q!^!a!SH z9%{=lT^N7ac`{*``qcH46ZPq>A5UPQE(grZuRlIfZVz@;KcUiZx{aX(=RlGayXYQ|`N(q<L-kdGIs% zCuI0N5{zrN;`=qb9Jwn)3eARq18tL}M|c`wZ>Ud48TQ|?h0&es!lh6-Gm>~3H4sVI zeZ@t}c6VTpJ!flCcu-Y5>=vfr6|-CVfk^Lj5H=JAnlqHmft5HKh`E*YcMosC z=ac>wSjlu34ilk-I@7R@Qm_*`gi*f}krsG#*ZPF9YDn@3hZfz@ZESo}zagg_)UA`y zuWk>YpgsIjpO*cTt{>+WA|43m+fhGqqrGlt(h36cJ7~c;;>K2?5&g}uRGf6A^w+o! z{av2uuLks~r5*Rz<8ju{PSl^k`olV^A6*Zs#L9#C5eawTcp41& zq6P54=v4S`H5bzgs#M)75RJ{s#=@lfb7Vv?xKEvsZ;3#B7egnX@(L+Fy*3fTs7WcR zGP;KmuUbXQ+S&1h*`aFh;Cv3l=D>k;fw56m`W}P83xKx0!~B6&b&N@wBc4L_(^$Qo zzkKhc)ftC`dwjPB^?QRfU7rq-y&=@kY0zY_KQ;dQ|Kj(VVjPSfFjfBF{9XgW|KIrC zmfN1+7r~EW)?5tAjgaw_?4+020^Ruk;`eM+JPE%yw4BIqAFH06-!HLxJAN0Qw7Smk zdsx36zfTt=pN!w*U=I_9Ff$pUy~BBHL}=$jpZ#YkE0w0Ioi_Ot2soh7vkGXG-O6hJcx8ux?$zgdC>sITXrUvW>AMrG=w@7Dr#NE(4;!7McddDD`K=FV^Xci z-fvIP?~eFAf)wcdmV&Qhkiv$%fJFPq_$;F)14D$*<0zbBRMNvm;UBjXmzd{Lu#UJG zSiFsdveKjMWf+})wQ#FV{#hKhCE7C9*O2Le)!@_VXr#~EYcK=UPk=c^rl@CUy`;Vk zV7*sJ!AbeKLtQ&kaC6 zn0gr3NuVEXO^HB6wdlv|CuyEo?|Q>ml%?8r0X`InF7O7{4hmeRY(L ziw55CET>a_6t0?aaDd>Ta!3ZgIH4-8O zbE?@e0=RDy><^GPTp}!vX!;ebf*i(yZ;{eml=ra|+ze{P91-Di_>N4`3#Zb*MOE}7 z)?GLyxzz0F0wmm(584ow8*zFe*Gs(^rvC_hC}Wh)c+su=Op1%YLANwxST^-WYX&2V zh7A~xa!4J5eGCfGW}?*>PQ8H!>!u#WW?43I{}B5|>UlU5BbmE43(;j;CbHPDfm-&M z+z5HJ^B)cjOU&c!6XJy)IjqkMTKc?q!mg=blJvl;Y|}m_)`|KUyb7k$A$1>GVK4I@ zK}GB(JwEL5T?6p7TaSl2!dDCR;ChWQv?^g#*mLWSx%E7e6oV8&l+uVzjM2b>7~)Da zz#?tEZr_dg-Wsuq_+AgS=@P#A8Xf4{|6lt0aPpk3ti(xVifhZ&U0WX5cL95D$G&FZ z5bW!3vQLD=9=Imy{Z@D5&+u^5ag1r4wCz(%*(r7kxrK<+Htd84sB*bB|H5!Oj^Tat zaW3VKTz_1wAqsO28OsRu&ab$67l*B1coq41Q}}^{`t-=zb__l%n3HVY4?X?X(zT%?taG}yII6@?kEP>&L8gDBIJG2c>gri zkBn*`?>C_Zjnf@p2#?zeIb!*-%`GhB_WH!~V|p@>f@h7ORcwvb9`O8FIWCvP8FJ%p z8#YcLK(#mc04C%#jKWT4@F19ni%_^^mN?7oM2f}XvCd-5v86hTrO?wzAQHDPyn!q( zirkr%;Z^pGicDGM^oFlCkdT%2=tbxTSZTDUO<{ZN+-6i4;%l|toA2Ur>s9mQdS)=+;kMbrT|z`pTuk%3fnwSrJMI zQ~7Ti7S0x7Wv_v85>|E?60oxAS?YRNAR5^V0ZB2kbI`I#X%QMjBXeA(X-e!j`@ArI3t&3IgnK_saD0Jj zC}1Wo0a|QaUYLykP_O-j{_RUKp{rJrIhHwHBXc8Sukes+B~%;t5qr~h6yO4mGFAA} zN;E>@aB9dR7V(#*EbC(P1hOpOm=I$$CfVneo$rxvc zV%*aEYU7?x*x5*1=u25^&K12HG3ehhTCv`gLVraP>s+XH;}EMLUxFb2i-j))xvcJF z)rk7q%!}y$d9XEg)F@FlI;*uOHB8iC9J*)L%@y0^OFG(G4B? zPU1DA1Bo-HE4Jqw;?8ufv2$ z$ITpA)!hsTJ^)EJ^_MG!Rb1^WR$8*Rs++LlfN(#rHD;+=XPu=%^cB0ftcLbb7{WyS zpZ^kCh^ZoO+1`PQG>Qj5p`Sral53f+!k^uP`t9ZyJWVfl&< zgiImQ8j{WPD2CGND`JofoQNGV`%!ZF6r68>tbASfDP7+IT@;Nq{faQz#4E5hqx76aKLIPpzE!eZK>ojy2ix~DD zd(~ojcwFq#Bvn$-uk2J~P!4Wxy#z`~yv%~5NU@&wq zPw3tOi|$K(3>8F^2VBN(-x`Z(c7qDU5C1a!vMHa3O#iFPg;6RVbj$yF87EQP zH{PxMikmwh@Wy!TjHJJS$;2kx)vPj<)I1OVV#%a>@=7um-J%ES@i9(FRGeXFa4O?& z1}^Iu{fB!z{!WUA?wy19VHjn2!tEZ8AL~EXPp;pOLAz8(hxNrU7P-_;f-r-M4 zFoQh0I)yqG+QSOZ_#Q(wPr0!2U-I2enTfqE`Tm{Oj>JM9!vB%0i6iPjKJ+i11r-bRq^A;k00LHcTK-a{P{Gc z(HohQ)~GpOudDaL6;-?(%CzdAM-A04g&4>Si3Z(SO;bAlCuI?~sBcISABvcsU3fp3n6g;wGev z!q*llIO_f-*3*bhX4$H{!NS%iVUbhXZ@+&BnujFdHR=})IIx0j zf!Y>DZn1k2-er0ftjp9#p&(vbelO(ZEQ(avM>Kn|y#(s#PACeW8S5eTVT|!yj~+W8 z@?3|({0vfkSIn1Ui2M-H?X@Fc<2$7&Q6W||;Lr*R2C7knrLNisU0v7g85W0<;Pi!> zq)&`Py-Lvs&EGJ*<9?M_RS>VVey* z2YLl7PXP!)TdY?Sj*(#t03KFaeg=lKQhGn#eQ1@-|2-Q7d9PM_csvMkD-AO4ODg+g zeb89fA6}aD<{j`&MZ*F+c5Bkzva+GfeYnBqk|j@DW$s=6t@41wV%(UxvT}qIqaWvk z*mvak@%$ZSp?)T2$?zLkcYL!Rsl0qX$Rv%mJAI3O<)U}!`$v5Q<0!`ID~HzNbvy%PO{{cpL^kuIS-R2u}QaiJAvI|^DaCM zA|lQ=RuMUk0BjzZuil0d?M9FQFZbf`d?;#>vR?{4@dw5d5>$IAH&~einjd-aR4km- z8c>zE?@!CNz!DyNvZe`3AO%+l4LVq#afKUbzEtzbHD0i5mVz&^EVPx=$Tu2(9RY7$ zH`Fr&t(mAR;$u=TwoZN61_M3bND1ubPwKbOAyKf}Kb93gW}bHQ^G3bpQL_Tcg7DJS zdentOA2|vh{x5K3Qt&TSc186nzt^2^4h@uGckv1~Cli{Bxi!>ArAZR)jsJZ|GrZ4s!Tf#!cPT!%_6n0xv?@@9~{N-cjDX z7>l;JKAo6yqG01b7L-H6xPXUI0gJh3Nb&l2Oc*#8eGa4yLv+b+jI-%G) zlxr+fBbb`RR31|sn7W)PL0>oI74pY;ZI*q9%Om$&u4O7QHM5>LcgG}|m6)BCW z2~6!^s+y@UnW|-KJyR-EjZ9^ZN9uj1WTxI?Y5`OKVCprdo?&VWQ-5J9V**kkriz)m zpD7{1dzcb@p30OM$6ZXdvfdb`vTsAGh^Ypqu4T%0J5s}#%4OfMFZ z>r7QL^`aTgU{{0XTrQ_mAi6;oRXo6poMgw13scOp_HOo@4<)gjf$(whmJGzqCf zrdpZ0nknaGq;i<5X6j<58kjndDfw=sdWlk|x-zwasW>rDC_(BsrnWE@L#lq#l%ye9 zM`c;h?l-W~5)`S;thB~b=@nM$Uy7nPS!n@NFERBRQ%^HhQ-)N8sVz(en981t)V)kq zFf|(~8f0ue;O@Uze_=xl@i{{9=!NBp%hpoRPiG&_|Ia^kx8+p-xq>dm@eBaMtzdaU z{^ErOj{;PS>Ue*{5detqGh`F~;!%*E@E7l)MEHw;BcV9XPqh8wcZPoj@K>bA+WrP> z`%z|lk7$2JqWzQB_C6GXdK*gV5S{9e7%`}iz1%lJeG_@1IKBl)umnx8Q&l7S#|?-i z{p+B}3Hrr8F*kX+PpmlZM(Y;Go%m#PoeSMSNz&gHNcEqAlw+t;_W(Ft&x!~n-X+$g zC=&j%+3_b-wKY2?5UGx_wvD{e;|uIpyiHsPuXJ3|p1`V(13Dp9Ei5Wy_&pTXLtJRo z`;jU(Fj220QExKqVdZYr8%cbQM7^sM_3~KntVF#w;@but(EH`{|LC+gE1jFDG?B<^ zQ7Nz{uI)c8s{Ha&N|j4kh4YtHK0%d~^8@TJv{97~M*oU>;sH*CE8J%uYP`I|hbIOO znNL8JVaeAUcc1VCWvO`P^+~99LKQh56QaBiB|;VX%3Q_q;!=w88GI&0nfmYm?vJEH zt@P(6lJU&HNfv@1ECSivie9H9p*V6xua{bTja73VM4J-Bwc@po zCMN~2IhyHWG~d0*(QL(MVl>)7O!}JWx2g2rEa<)7O7GX4>Ri9_q1VeydM_08J}&Tv zQ}BLy95OTYGkP$EZvEbN^b7=(y6iX@{isJ;?hG99Nue{@!vgypDbz!x((qVvCz0xe zdG>n8 z9T2LXhq3DVE1@daGwf@m-q)JHn|;0duITF>0L;DudSCwpNbl>@V_*aC1D%%I&-d)- zJ#?b?^Dk5r>!uzWnp)=ZbF3Fh)LVpl(c$D906-6h1ET9eH+_&71Hiv1pS@IfQDBPW3;@w)2--w% zNYO$6m7@25poM)MpN0EFj3H#f}2cbmHOr#l(b{LM=!( zJ6?Mp-8Va4#+MyEHln6lL&|Xf4@6kb+m4byuRwcf@18+DRN0PZb>{(5J^P8Ck1o`Q zj4Jc=Dj%>4H-q&mx3J1YqskajC4UL3aQ&;o*Na-}O-6;mI*$3o;Y#3WU`%k1QAN^m zj1@Q<>mCGtfdjrO!>ID}5fIx#TZc!^Mv7A`eA5%z5K9>TDX<8a2g4(=5ztvy=4bd$ zl>=Su$@L~+P60`rUygLjEu95U>=EN}-)uRsCwQJ1jaY!8Sv?@Y~iVS_}ue&I?hQ!!#}SLHMSK}~XZ zJkg;Sw|=lsl(Q%1q`m2c?HymPtZc*93(iLp*miO0Kd310Phbn!T4?hP0sf-EAiKGP z!+!X{$d&}as9mI7pW)vm##N-ua>iOx$Nz`E>0pc>JGQj1%8vM##@G)QnTMQA2>rO@ zt|H@MMRLW;PjkOqyr%}6|K9K-=#Cc~@rc}R!%Z(av{oOme@JXm4c=%`6z(DgAA`nt zuYS;3q;!^oPa`7-X4wVH zrlSYoC3@e@0xz+Baw0aIF&vM5FUHTxU^4b@=fce<`Q=soPVu6|#D0_C8GAEXj;`1& z_JmPx*)J5EI{nROJrfUk8hliH;&cLMzj&5yH-_)Qy#Q}`N|v)w`J^bY=hULWu^!UH zIAMgw7ebW+TDtp#Lo?hqcO9Y_Y`eeBPwZ<)hNk0=kXP9Vzx?#d0_ln70SBb|O@SkJ zcVGj!+F*C*HO}ASQ5r^-G~5swz8dXp)tw+1Jj$!Su#8)@Eqr#pPbEvF_wUE-TaCHe z(oJ22QtACM-Q>vJbd0hMyO%hD=%!vN;3K*fMtq&Sxuy4U$#iv5cW@;y{5az^VL8S%9JL*4iK?rW(m8WU)@X)H7^3dw7Z_}*erbX=S=vEAx zE#?rTfW2@s{Tmax4ITb0r)<&Y<}?J3_7R6Q3H~!dJ1ic%b(sksqw!r_**58sEl7se zOQ8+;R`8aJeC6&yi@h-Kxb*NMR4!E7Jj$`c0j+(vNkMulNCxbiSI?8>jQUO{5^p3O zjtDmfZ~%sDXj6dF8&1!v9fT%?M&`5@R34uwUB6P{%Uv zrs#ftNUYB=y>hWDoGzkoe-30MTLe_&QI6Cf1;?XwWPI2feXIY8$35s<8;z-<-uG|o z{IKYI;AbFCypzw9h0B$ANtVuhrFWJTd=DsjFDMfix^PeZ0}e%uIw2bfAQMwzXq6jJ z1>^k;=~?r-h109###UER*Jdwo^Wd5CddVCgoZF2c4)Xvk*^H4V*ryHw99Mu^hfh?t zxTWixaihmx)VMdpT|E*9{`>r&8q9JBR;5`Pw%V??LDTS#7x`+uq35AHFlO4M{z;}u zU|Oz)Y3kHBNkb)uqu)o=pNGZyA#A4@zqlV`VNNisKZ-zo4^WB8M^0fU{dO>2oEhR) zUOiu1&!G5h@Ea~d3JyT2`$NhFocsK|5m~gNBI4+4B9>d*t zmG)y|y#W0({MtTs$?Lj2ajS@IPn?PP&*j+?AQo8`O79;FUC)pgP|<6v!mn)L9)5C-3taAr~=VO4YXsPBRL=p@V|^@G=heoF7(*cqlYU5Mx^WM1Nbis67MbDbCcVGfw6X6&`>d}h zz|sx=TbN1pCUnMP5$>9!I+?#VZdAfw<4lLAQ|bt8dq9aO_z7TM&Q?5n4f0mIMHK0~ z#L#cN`UYnVBhx*3YN6!$5f|j>E!4t)fmU33%GZK7Wzxy~s*yJVB z957CufPvy{4gpJnm_J3zA^oPI&T!p@!ZbLsU)(0B6m0XA<3$~y6GnlA`mSMnoMGu_ z$n!JQ)>p+*)v2%zBh&R)aJUf`C~=eOzn}siKX!ubW^rbyJ^&Ej!~w#sH<3a3(V7zp ze-Zji!js`ZjW)d)@4ZO^l>G(OS2n5{)g$f7{>HtTjjFStdVZ(sk!gtDAU7qy4v3TS zb=dJnN}lIW>Q^@~RPgn}ayb*F1@qmo9Uw8Isiqdozj*9mV*Re&u{@=JIqcB>g4ci^ z!sU&Ocq`&rC@~@vQmG^mO3s2%;#bxlZ~Z}&>ch#1@Hag#a*uGE4*yA%6B$RQyMr8 zMkk-@1Vako4;*=*S9FoH2c2w%!o-U+Vjt^zu8((ZV!Wu|mE-#zr?$#wWgUj;ink{D zuU}nN4vSHUTjB`)O?q)5!#9bCYfnL4jnPfO6)_rD+F4NU{s?Q&xat7qc&x#H2Kswu zFk@_p-P@5+dRgGH#t)8K@ciRv(Xhd|}R7_pN*) zf?gwMk9ZtFcbiTr$o*2~b8L#iXU4S`K$9^Km237qy zJV}X!9eX0A6_4ibjba$_c=04YPS_{~e?WuE{F%@u8?IWMD+P}NP^h%7Xgw*qLZI^? zKsncqdkcAR;nKtZLj%5@V?fMZdAytS2&35RBUAEiRYz?uEdTi-joh+=-^xB1gMNIP zGSWM9KqCkn3&N_7*inXEFwDXcU(1~^k=+W+$6hd1km(;?nZFLw#XeGZRKnXR_;Q*f z^&GMhpr|)Oji4sPr|tk_wa%!Sl)rr&SStvAga^Yo&t28uqpUG)BVtlr4q#F}hi;<% zmD0q%?_)q)jkFlNc0A!S&;#IQU+F8j@dL#5at* z$(^R8A<^wf11iS0rOF>2{jSh{7A)X9ZD~(63N$Te zZDHt;Fi=u(gB@ya?l*rUMWhlg+L7>s@iCl-J>!l@W>oG11s5I1!Ln36r)$@6Bt+fcfmO5m38f@&vTF=1#e<)5hLl-eQgZkO%P<# z&HBAqkzqL=C=9Lj7v#hPjcM*cLmEht9=;R}l~3K_vG3VJoBTacu`oO~WGlqGfVYIx z-^p9)k9w4q;h}$Z=lT9-^ZzflvNFFbx!}9f6A6~vY{%{H#@4hIu8I_!-P%dm>{hVW z9c_V$(1wZW&-h?>Ju4e#NiS8$W726oIr(cU^IwNv*?eCC|DTCJ_II%9&?AP6+HOch z3T+2kOl~lZEP4;R6~ZXNNh!DnMV0xJiAM^?z=Xm`a9V=af|JrZRM5(nnt~5^w3*3; zB8iWbZsC7qAk*eD`s%IAskVgISSy7BKEBb*k7xC{2DGJheo2X7zO1tEpb1D)V6 z2bkb5N2DGGceMYZ3HJYPt>uMk-H0lm!?)o?MtX!hR(y=lFtlnR=PaXVT>tzp$__Pk zQnpETeK_$F_)&_!9gZbQx?^^F%OC_Fa% zjhHXA2#-9E_IXYI>u6clA!EEfM!Z*z?{!2aTrF;R4kcSmQ>w?8fn9$DR;P;>1PJ>} zbW2dL7Omp3&-I5yKGvfu>;Z9(tq2MGF-^AzFa&s$3}3>Z4$8-I;}rHz-$jm20!V!Z z1S2lgpKQfO+YI3F14kW8aceAk^LaLeaIgzfsIwi~6&|IR4cNVLwwt z7rXN|&cEM?19O1G9a+KFV!UqUL7)*HXtnyqvy2{v|H#lsY>cB0>hhZ{!d_Q@*4en(Po}fnSVPp64PK4X|J6%+vh5s zHQV3fkRR@Ao8=liqS-MLDZ2Ix@GaL)o#w*NGWzZX;4A@f&8?VRQtB!PzzIO@7~QEe zO=F&Tva2$GKR`CT7p?Xd{0O0|Y|iYD)Q2Ee}oP+OiMGsN$!ME?wzBoL`?u!wX0b-i>Gk>mNdAS81>MyH316;OWlD@xEx z+zLA?h)3Ds50tOC2o?(mNFJtcG`7Rw9&)z2>uoOl^gtKr4eaKn*w=#S?+d`)Y#*=< zZ@0Lx>KH4yrICBR_PzF)vO8X!>(1LTe=;1wx{9>mV@iOSkL;UFehy;PkFCOY^ zD;%&NPj!!o48O=-)kb)sbiFFu_ZHgmC^1R(1tKJ8yV=M7W$tVm;Jl5!rLJ;xTGJU)tr3j?JUl*AEI#18brax9b zOX2@o-vlrR?{+LwHsiVQZaN-}Z!q{TqHg6Ia(^h~@sln9X{3sNzN_kM^V$zU3|hPx zGi}HGbte-;YCK`=@8O-OjCH64%6bT+zw!VcTUWkPy(ZtWik5=7$j%>x(1ntzUP}$6 zz#tTE{y`}BQYfb;;}6iC?^eEce`v^MIEXA9@C)4gh{(`EZfy2IF4*<$4%vJs+jke* z@jl7#K))fIC}ner*cVopJ*^9;_9-D8#Q9eL58(*=h9wI(9i66tU})9NBs8z7_6Q{7 zkqX;l|4GQ}KZd-XPt{MXqN{$EL0ihMUM>K5{oz_X9e`U5W3&3h5oJojjfj&VGi5zC zG5XldGZkTvxuK1R=6dUkraF#R8u^X=n4;>-rS6#nR#yFPCwRm+bs&!q1tR34(kpFp zClB5fjO3JaOT82U!tz zybDZXZ&vS<&(_C_@zxr*0>mSM3+xPS)u)sH)Y#3YzlJ<>-MA@?{aYB{BZUKwyCXv{ zM{9T0aT`WaD2@D0wy#7Fx1fhY`(eD{R7msa{8a{a&BhsuDa1_x7tc?!RR=_?7Y8pv z=au>IKu@@G#X}fkUsO?7Y)B1MjD>I*GuA_FmEgS{V|V6ZlUaJ0@dKBymtu1iTS$Gn zNe@?GVpitgM$A(14^oj>+ci7JRs!s4IF?xU?gR{&6?h=)abW!9d^b7@p8N%?{nc`$Bi8EOUG4&CX!6m(WabO52FG(T6bK)nk7Z zXb(Mz@+y?;4A8CzuELy6+BNuA%bx^dQ~vZ9iNz<@N}m{hBhxe(=ded%6MWMO_4kHk za=wZsg%3Zdp&^Q^hm7IwTHN&vQ`AR51y-N_(`g9s{#Q&{Z2hVgD0Fi!>{H((o$z%Z zJ%Mkrq}*>|oV#9_-XBrZU5~NF)e!2(Hq#!!r9l~2KY)o-Q;A-4HX%;AX#*{zvH|zW zP#%asDFsi#99}p&5Pu%~(MX!(mHt9+6NoR7f?WZwkrv+o+5_=tYbV`<3)o_xrS_^> z2={Z5m!+FmY8%lY!LO?Ln-o;=TeOlEGhVEUUjYj7oChFfz_(7oasjJ#&LK+f%hf&& zl+t4ioC5JDYWD-T?*ZyZ?GS8Y#O_Jp55)hFf-eHq!qPzecT^ann5qsI9korIN@ngIoEcKiYn+iD3A zj|doa>vg#Ri?;Hz$hT08W=El@OMrGEg@NCZ`4t^&XCR~ZTf2yPvDYN*c~jJSbLO!}`_LJ@Fa7zdH_W z`-jJ5u)58xZcnM+NmNf`^|`%q!j9@rR!=vpJ5s855!E}h`il=e1(#K1IV$S2V9ks$JLEvV{qvs@bd&q)-v;^zX~k_3!L%`gZ|Y0Jq@5A$YrYP@D4^4!j^d_Ia0XiX+1jG&x?J&+sBMGR7V_ zk}f^f2o-#CC0~*d-01(5`*HNxIDsFc-|dt_Ytan`IzhbfzmlB-%Wc3Sw)5~nO4M_n zu{QMMxg*Cli6Wj!Mhg;!uS(0uW)(=weOaF7LWixn@Kjs%I2=Tc&2m?dv-A79>TzlO z9#K86Q{+}a)5S$NWn5=Mdtra_qRJ!Vq|j{;uN)aCt+*l^`v-;6HMU^~EkxFy1?2OmpGs*pc=35>`O1jG$>%{@>>5`ho}V{7!7E;Q_i9Z76g{*k53X zTjXiDzw8uY@npOzf0TiT5`b8QCO~%ShU_v7*>yK$=QLyo>V)jFY<{^2t0crnuAHrP zL?K6J+l9Q;S0-btU5IJEn;|x8orjk2E4;qFXN*n?TXxNcbPILU0>%%$EP&#O^x223b-{o zGZj!6U62YG8V#fZE{rZt1@x>H&XDJHro9k!`F>e(ok`PmRG#E~W%MtF=$GArHoFx3 zkSXlG9#DQ+b`Q?~iUhxHP?C2?L!S@98q1A8y1acGq~&YnuKVSBDo`91S{v*o^POhDWwcirH{(O2WnT!Oo9kd-dA8R!`HCGfl5H#hKm zn&{Sld7!yV;Kw$cM5@@-Y_t2atGh7M%{ZPsyHV|F98cDAyXRn2U~fj%r$|+5j7rLC z`2LtmWo302kXAk3uB>cSGaGk1t4DSc4XVeR=bFDPt56O!YSsZ4V@NJk#$Z#1BnG>) zzhy`mBS&!ntjWd24wi7tfQjV@86@}JKz5lUHRBie_#)+qTUj4{hNA2YYQ^H2FCg4( z%*7L~2pxP?4nHY=H%ofDL3*Nbz#6H(0o)mNR@`0rldY(#}D47c(rAYj|Fdy1lzH#G&C@$P8yt`G|2?b}w=_+x+Q4tQkhfZ*UyR;8ep z{Fv+Qy5Ak8CRlh&b!kIhzt2q;VyWg1r@6!TrAL;<5s_3KKYmS`ZC=(uyX}uI`NywC zIy3SJOY&JDJ+cTxF#H6DRH*DNke+N7V|ucoz_s5mxdTVja5=08qSb?_%iqfDzP`Md3ZjUH!ZPtR~y?*7+{JF*3aGjgg@jxCd-2D*4ijMYNO8f@i4p z3idj=1md&c8K{;g-e0wuRWj5`kLso3#dO)?HOQZ-VKnh5`}r&Y?>(Js{482F`ht~{ zEvp0($ANOp+Id1oM~zw2gde`>5@>Bxnj80uX(I)Biw@7-E5{0|aTeaFb#q5KU#h)X zIZ9)rdUm7M6EAofg8bkWEYO|<_vjyrO15EdBj*rye$Vm@z;V!6gmopje8U0!_Yq?N z;!$_3ayUY-vRQrD7-Z{oZik{(%#)s39D*}scF04eUb6e`U;U*po4(VY0*glQ=O!UVXPup@gG0$1w2 z@kT8;`gk$pe(|IQ_q<%33vy&+x@`Yl&TEt&_E2#@Bx?$lpJHd>eCSAT{CX+p>-)u> zu`A>3hI;cZ#AEyEl}AqVx8fpGuJr!+G+aA6Vy!ZNn|cq{huA`ERQq72hK@iuIK(${ zKO@Ir52QViHC$XbLs*bqfsdTYWgf+sH5j@x)T7ME@*<`wrVUanfKV+lBhA-gUM)v%!i9nDog+RpIA=jQZA zKx|BJ{Mt}p)ilf0PVP5iye?zBJ2e$DHsr0~7iO@@6<4PNV{Dn~dkB($4dtc!e?Yx5h=D1NHFGbdO-Z?rPRHHixO;}N#MtJ+qTbpb&l=qOgk?WK zTaOd1B>EcnxH@v4CosGXr5x1baon{OfuDLAUTnyfAh+bCYOV*R<#^AUC`@kis}7^u z8K|(p!8=c`#@39kD%hbG;dgn(Yg~<87v2Z!tbRT~Ag#{l(-V6sj z>VGd`orS&RC9-|BJfO+{UCe2&AL!~{LR%dA@yy9H5KW*feMBcp6RcyOvc_13IvxE8 zYDGcyop@o&1Ow!(tHygb1YGr?D`jQv^U&<9O=C5**bKDH=kfF zVqVO|T&pBdSuKu5*n_^~3k`LiuKv~^HVE4S@z}?;f8*EcT6$V-HzfWM5^=2#sakAq z$763;7<Nvi(&aI^mgY1ptB)gmrAf2kOg;0%VB`qS2H$100}?p;&?cRMH;2p-02 zto#x;n#4_bLt*a+d9Z^iT$>M=9M-vZ2N08M%gBV)xLw%f#LE}`pS9=U5OCMR!75Zw za*)^Um%`|ewC+ex|itzLZhiQF5Q!o7DdIyv`pvD5|cUTe>4U99mw)xp_H#zKKja)yf2f2>f_KQ4%QZ1wkTBD<6)@jYoRQ1J=p* zFTM6X1`c(ZXah6OhPiV2etn*w(B=Stmtb+vWbf)cqc^-@b1a%;vSpinl^+mT&?PSW znY|isU>krKf2CRu*3g7CV%R#{vjc6|0DYT6Y)kWXcYlZt;rA2kBE#jstbH(vZa zDq|Zz+m7EdL_NJ);-0DMFshw~GFm^K#^gm*n4|7$Yd=BA;-4|~S*be}DjO5Xz9G=o zNeWGZ*{em|h$l1eDeuc5AHEha8>JDLgI3}^T85jn`W`WVqQwiao&KK(D3$zwm0>%5 z@FE6#{Z0X<7Dr!vf}fZL1G^zfUup*$PxX|noH9fc_~k&5I9LjP$+(p-Tlr2tyd}^o zdGlI}q>-zN0)O<99+{28oUJ(xm|q~>0cX@;&-q-=TjSp^-cb7ny1=Ul&r_hEUwZ_S){Q1T0Yim*(YyFCLCytHxl@5t;( zN9MCKX(4WE47n4>ig^d5AfJ2@V*velr4irG`!KJj5XLb@iqiz_D+87$V0hsb>NOd# zP6C!LV7!#Uw&?=q5HMbWBg`RSodxU>1J+re0 z#{5X;yNUcM%wNg;DI(vU`HPwFF7iE?r!#Z(5cyM??*iR(oSM@lbhw`SrCxslXFB3N z@hTkM6%4+R+PZKSwBFU(KNXMR{K}J%a}rfK@ARr&^r|Jo@8cfH?ZlOIhn-06moq`(f4{?GM*WLpJ&jo3N zfHEasl9ha|lwt9(P58q3OxW?Y$ag_1DpH+Op8vx>F3cl-2Vv9w92PdtVcat0I@4al z<7Kutb-PVN6-hsXx92VKo_-Y1V2r=5BrYZtq=fExEeC@EK-O^0${hq?HV!d@sVTaWaqrc_YhTf=`L|8kO;}uT}HeD&krccJRdhGF2&cxBIpV8qpcT(RrK7G_nUdu~Cpij!wuG0{QDKOTsJ%Za5U04@ zA8@Ke+ZbpsxH1{T@G#;(pe*5p7oIIG@12F9OkWs3%Z^}j0gERK?=#AwjN0vt^rR;Qws`UDDvm{2|s<=Sm#1SpOTBw+qCFyjWRb{6y&`}vHgv>y0SN27c3{D>aBC-lXYqA!`$my1eteK`cS zSjM>TaEiY0#nurop{Q3{`Ax5K_p!8kP0>&R% zP>PEn@V<&#)cA7-Y((RpOcwM5@B(EE>t1Nuly17RTx?O60jSoW8sgF|N!@{yS&}Ij zK!Qk%C20b}|Ene0rK?lYlIZ&|>N_7>^y!MZLVlOu1^LxMI2I;{p|MFj5;62?+*uZV zYMUck|8gfQnEN z>r*=QDMQz%FEJ8UJ()hOINKsBX>oIkK21;R(_1KLr%zBNyzSPLm6?GuU8kT-;+ZHY z5%mdAv&&E>B>U+}Cz2QG$xI|KwrEntexXUS97%spcte;jInujQwr`RfcXyYoR<1!e zYF8`07S(D%;R&jhJOz_N-=IRujsoq}9qST$wMyMyAvEKw+abTZAs&lf4S|{`^(rLv z>L>LW9{M)?(`t38-ufA~&O&Qd+G*(3p}>VfZ)dbJtlT24Z*Mzq(f z>vhc667xFf7?u*+`P3`JKlP+Oy^TsWJhz6(j?Iz&BZg=p@zEWLCHcd9~}&|A#k{u>eJTw zf6w}J>zr7Mn_^Wxmg?svs<%;uZJq0$1(sT*u?Msv)!*csnu9(lRaR;Z5S-~>kbN83cK+sJy@N&Upc^_+zR~(&h~RtO-|(%` z-_$+Fl<+sC$MiS6p~?49pK#(Fb~Hd8DAPP&hgD0D>uFPx)1PIy}#MikJV~?hLCgHtq?;1y7GV6`||jx zifsRz4MGCxD2ON^7YLFF2??8k1Zn7y4hCfvRG1L5kYGqc(hUI-!z7WkG02QM!;GU( z$7Rr&QQR<~?8xG{0HOvELELT=5yS=D(!cLHRd?y669nITpWh!ZAEj>JTXm}H)H$cl zId!Vag0!h$S=pQ7crf5S;I5S1y+hk33cpH)$Dy#6^pPZzE-1@8fDp0!g?8dnP|0QZ zrc=oeCo!%rKolCqcnq^S9|(OUSHR97*e5Xfm^OMN8`>}Ci_Z9=?L#I*|AhYWo*;|> z=E^@nXG9nS{0XBN4WU6k4IFL#ESSbw*eNhtKn97Vg(S7Xc$uck!@vL)c`^W9EQdSB zLKlApRFf{o>U3eNT8S6U?ru7?;WO{RpP_msWy#62nW9{baO3F*~(YqO^xfcS32+ zcUV%)=iC`X&v*r;wBz`wlgv(h_f9fM=6a@ua`Z_N^fFXH9zc*cfGkMQxDuK4`5=nu zfm($C z>j0jhjW@U-3nm0jJ67f42q8fV7QSd(>ZM(`S?J}FJf@dFPsX_Py4{anzVQ;h{Eh6} zKiR5udf6Cdp_kdB^et5SQw*N=&Ou2p>rhzOIc(pqKq>77eAMaXPxx-3mu7lt8v)rj z36SprWJ52N`h$(=WdSk;pqBvVZ7S%F=;ah}Vv(WI+)7(D`Q~^M(d`>y*ODr#+qEe+ zK`*l~{N_|cdPG0)f;mp`%}EzTvQ8-ODHmqf>Lg;ZYTIIbK_L;ssLh9h@2_NtyUH=z zR-;z>Gx}|@jQ6v-Jl_A92)qu=_Z#mJ%_<*syY{X2mhmnYrSqxuw?Mvj^aDBGJHOD! zy9e2|e?}>78$Rme{S>~lUAs!igR2Fk9t7zbK%()Dv&e()cowryM;hrB$gb-bycH~d2A1(wxs|r+V7v|>A3BhHkoL#44r07F%B)sy`vaPXus$p*NMFn_S6l3kbDv0oVJuG)A^sgr zHkxG-7<&y{Sr!R|Mi}vpSw}mA}^++l=gdk)afS|-@SHYezAin{Os8G zv$$RFOaSCt0h#Ejn}wdDiHhu~p6yqCDI3J&^s_wJcX}m=l8EQHKkibt3HZ`1YBEjUE8VP^w0HtcjW&9j&H189-2O8SQSbYCWuQS}WVqmG~! z3whIh?dEj&J(dN4yywWXF1)?3Ym-Ic8>leRqqcRwr0z8+%ldW-sa#7?NP80BbmI2l zv-b%=B)mb#qCxWB3}UC>h#%;IM>f0AWb!i$5&Fq&ZtI8RQQcfr2Z~>XkKk57`x4Nw zH;NuR;H40y3kVMW_W@20J(B^4XYw;^F=##4&*$mUQDfMA|MN6lE5weT02cb0bipS~ zoaP$Cs~_{Y6V;Gp3^1=ofkiGQWeoQDNg#u=Huo353m1*SCCdtI>)OY#fMtI%30U`x zX7j28Uct^F7(ZVzJCRWh`Fk!6Fu6YS5ld5^Tu*83j}Th@J;tW}PB%09-~Xfir%uuj zdHiq8;6X`E!=UU3MlA&N_%ZAJdIUJ9nQ}hX+9d_;(xOG_c2xQSl-BOrD=8=!g-Jf{ zEW`Zj)2>A+Z4N%_Bs31+c^|x-Uw8hF+p*aRNaFzs0f^qKG1|JmO}e)r3YLt0QL#S1 zit`l3p6fT+XroCsfSf!7%EQoAP6lUL`uXZnWBhq{NOL>hhN15jiGQGnpF~e+{NDo* zCKZdE+y^Dvpa9#-Ef_*m54ZUF{(%oo=2;?yU+Xt^Kxw~*t$&CzB9hje$9I0n#L{FL zs;{-B7ORe2ldW2H8ZwyDkSR;I>q^&I=<55KJf5e$uq^n#0p#1%&v#b43~R3j zUDb)w&r|7~D^^mOQRm{qh0eAMacD{zCw&zI~o=tKyi-wDXm3G#8! z9MKv1hD?8f@CStAowgO3c|Y6cQM88DOO)+OWuHP>?GJB>RskX5UKeU6d9>W8YztCc ziOYsA_o(aU)eA45t>Vom(o9(NX`^x(u zY66pr;yR7IHz33_%6))hA>cfVIlmJ+>%bFWvpc3gw<{}$tO~=TwME7%qkS+ z<#TN{dXAOzV(Z?QaOw|VNseuV9_{CEod0xYB|nR@n)f!WStmb^#|?mtjjwwU`)2o? zvu{1u!;V1-B>Vt<4kE>BTz}%%xM`ru-pJ`;oZuezn_({XF ziHD~beo=o$uM2l|ri>V&(d$B75u0d;WIUIw_y+FX>!1Q>?E_pJ&Y&2F3hJn{bRQE9 zff-sk1p88Hl*IDgc0i{A-oyj^4Aq4Z9=$Hg^#~n_I$GI8bkOhz&2g)sC-P2i9^D}X zY}b4TllC_1tw|n6jlqijTB1;B%e!wuknxxpDm{@5-g9Mk`Ydm48$m-E>fVRFh3VimH ziN=4T5{bn}8~!5v1{LQzY@{5v%7Gw(igQu987w5o zsZ)Gzm9}+;wAcA)A1L8TKKA~rj+!AaI|R!AjjrGZa@PpfHX9;VA+B>ZB0F6JYLXwL zJXzRCaVS0LbFDX^Rc%>()bl!eq3UN8*?+e^=_HLiB+-UVoSpK?lMn4so&7>%oc$I#(Zuuq*^fB_ zd+Uid`ERgBEsn+W?4?sUc||+!ZO8+b3;Ewu3$T*_?nNBqAtl7UV<91Sp({1X%kg*- z5@H?-LmFL;^Yj3K&)@n=`;L%fIU3JcACND_F(TOCQO^k=LGBY2*N&{j!Cn=`0U)^A&Pd2M@GFT3rip>n_7=G=`R7_ieAKB%tv zjT3Ls5BmQ7w$XN53iMeTQO>Xj8Mc@JzTc)IL#q&QnQ`k7!p{dG^n4J4TZd3_JcuB8 zw&gBAL!I1Xb0U5jv5Ldb+Nvmq6S$-M)jpFt2CZ}=5XD&OOsR+Z(2cndr&nA43I zZ%_9RMnclnq|`%XhsymzFXDrmfY$xDt}KlqYw>bIgV(!{#XN%Z+obao%@O`4S(T6SUfkcv1wDHsHGP zPN)!DNpapC4q^2iqHE33#$fEt-}J&008u-|hsQtCBW;li!gf)*Vl>*_8TX1}7KUu@ zB2@^MTi-ht1Vy_(N%~$MUHpZ;f`Y$a531N6thJry^HrxHw(yrw_x-GwG;Ef1Upphn zi^VnHtAuecoGD_1j=?YJFCApZVxGporo%O(xXb;h%RTWdyWGk9G$24f4%pum%!!M& z9%u)8Y_CnBzNh10-k=NVddFs6&s`<@{khq1?aHY{6R!uM!{~eZ@RRO`M3;Bbyn5dL z-fZWPQ9r#J_XDO>ed-#U?m6l3d_otdVj|y*;BQRq2{p;*hC`Fy!#iNKHz)G6eyna7 zP>Df`7K4O&UFZ`v$!~D(4TNt}(r&v6`QRLX+x00e%a82m>NYaoU2iY{D#(2g0jL`a zNCp(`Fi3tQ*hK*%Uwsq@3+xJe0PIG8pd`#^^8laD_xK9ihK}Vw^mg^biGl6}8cFByA6+T^SUq?VEhy zRdFtH18$)xrwTAGX+iJX<8WfqClFyZ$+r!o!NGY{xG7Uh0J5QU9rDh?H$ghjGQ;4= zM2MB6lc>oJ57k|ZioK(dXJgP}yTZKD5Mc~?*P7%ohAM{qAW#dS$GqVvfH2-RNKE`p zt91;;;j`c&a{5Di$Kg(-V`PC)Fz$S|69p9EKpO0WPw{xyhoDO5u5HwLMlG1#)1ZYw z5Y zAkWbXuL?Fn%=k`6vT|p2dYIzEVqHY7{m96mg$K)jxYKojGuG3__u*$KgZn5tUOOQO zW9h>2y9k#btiwh-_O8-=M*AI zQqqC>dXRg#6lwt5@R~SX&+8|DrGF1LFDu{S+LaRkq;{zisYMG`;)`Qv1Eq8TPTi$w z#QH8~OJp-9z*<8;zQ=)6F>Nr8P5$x2GxsMw=&ZGROlSvy3s8IwF87cXrW+EEgdhNum*XeQJYv2Az<K1h5dFj zW}quHIyk@|6SqZUsEmol3(#}j0N4ED0a*q4WG5to*{{K1k@-@WQCw0qwHqwNKpNS?6$~??k97l3!T|qA7_UjD-;WOC) zHN7T&@O8bhDYs8D60MFXO0wq97#FNKL4IJXCF5H2(r0Kppj=yJ2Y}HQ0Yz0?HvRyP z6=9%&S#voAY9P$>*|UDQpH8?3aXCR;&bXr}ce&;uTA_7~9WDrtgZ8@aM8|!akQiEq zb4$btB-+Pl7cGt*1Xm%&dcY|s+I7<1aq}RQ)3)M0x$#}s@wx^M^XJjgt!kVe3FC-H z%&J$2GjsPD@@(^U1ZtrK<*p+F)=&-32O5GcI1T^M=A}Vwf_i)n4{0m$Oypte-_tga z0svMewM2%3b7feU5%!m8YG?l9#_=XpTe$dDzj*@v`tc{~hWm}plj+x&__ethPw4J3 zJbSipUWs4r8npfNjR$%=W(&O8Kp#nJ@E&b@ z-NeN9qgfp5vTGTQN-G!1V~e$ZiM+FRJPqqUWeZK~&Wb}A+C!dwwZ%tp?MRUA?n$U` z1I63TF6P<1FKVrYo^=TFd7Dt{O$PIj#h zjik>Zwaz2uKLjld$ET_=lthj5a9x=SS-&$h@=jFZIRWOyH3}@gJIMJsG@Rr%g zklR5={pTR<_cuUpyCJuaY9D-0Xn^ZNs~txa=Fx0b*J9S&{00rlEf{=oSXCc-gC^j< zU*K5`Y_j~;j=mkB-2LR6v%df)2!RLrwpreecn>=Dyn)8=4DEPl?WACAZALe}oj_Zj zGk9HlV=#ZY8LvBf>409(etNw?ye6b{^wJ*W+IjpKjDjq)y!W6oA-~}|T~BRX{~;P< z-U7*UOQNGDto^mvlT6MGix`8uxkdw%VOKq=W3+bO4&DQzrFnDnDuP;boAo5COAk(qvY10^2NRw*D_EZ z&UHS;3a@S5Go;-)s$+z;LjgxYS~zv3CVI^GjyX{AF5~vRIs}7d@xwteeEoaJ7}z+U zS#&-TD}?E%24Je*!zjGd3~rtR87 z@7?2*4o|3^>ytklI)R?ce^kYJa-;~PRqO~#r!!KIlwNPAwV|N$9|yQUOwZcha7?y; zLKe2RIxq(fKZAqQOS>Rjd(12_vVIugI$r)mFZXBs9Y<;3Q0r=o%V=JUc@$%CcJF%H zteT(D7N-E+a2%>hzA-y1`%`Yj!_Z5(Sz~Djsw(}2>G>zftCx26 zOSz#dE$F=lm!OwgI(WmgYf}UG2ILqD;~6AJi-_%j3LF!@EQ*iI#3|sm`#AbfRH@y= zHDMYT)%op`HEY6w5b0#U{75UacU@0wYl*n9!Cp6P3Fg6UG?@u%6Fs5&@9fkkimz0Q zAXGl5I%o#pZmWXcEUscCUp$SS;fuFb9YJYKdNjnkg@w~}iGIa-`5HRMvp;Qb-HI+& zZAs7KGryBTV%`-dorwn4okD@;t()%OI;YvX$~kBq-J}GR@7ffEzM(U9l%2)vrZFU5 zm*ITYnaClBmQD_+;Ju4dx9oAM!yWRN`P*$(-0|u|=r(5;n_8zan^?BO@*tlC^yv76t zRIo_7g4j=wJMP(Awcqnz?UEq-&d|^xmksB434cRq6zMnVL0^~(j-Q3CJpm-wy0M}A z3ytE(h5r0pG9e7REy3rTu+pz=?f|CH>XCskXRD&Pb@8Dieb{V#pg0$Br}h>g>DEO`EY1w znD!A0CGBSoVKWBLP;5U3=0TBg!+64OMQK}Q51^dgsAv@h3#iD=H~7WULoN=SQ8o2? zE(NOz?n<(cQ;VR&}CV2z^ zXb++}o3Fqa+BcHpPD>d{-LoEfg^)a3)lx!=8U2OwG{{{r3ZQe>i#Ub63!0?$A@{dZ zL+2~UcwfQjZtjLAXvHEQ%}TschwlkzexR{~t3pvG`mux!J-G;TgA8eDZ@e$;0o&cQ z_D$x(Dx|gJO>^TCVNVEy;U0Wsg}XN2qC&&;mDWO6c=M!QBKfL6+YMl{naOkoSp(wz5XO>@MMv#5wIa7N9(tK7liix%wyV zFHhb>ziNg&MMZIr1rjX5yr;Ec3%9IY3SHH51*m~&kJNGfxV2z3P*=t|8eaFO)(p8- zz{*0RU3Jc19@t)qzmDF&5Aue@+HR}96rEsE0pBz3fAC7P z%uKaWI}D5yqleS&nUbZUrlsX;%$oX%B=0p$W4%y&75oF(NjM5SR(nJ*jO*$xg`N4| z`xQQem5DjFs$A+gD}59gY`d?Rev^D)zQ%Yx2XHWp9ufx<*zpT54-H3!70LI+^~UHX zV00%D`{4u87msck;OGO_p*%SS-xXUGy|oS%#-j(7G){uil+R>WwD$puZzeDggTW=e z%?@^X59`T8-iYC`eHV%LEK3{Pecyoy87bPm42f3cYdYx|ahhkm=;%Bn@IX>-*}v*Q z!9K4SFcAMn!i>d9E<#?l?gUOKx|Ih&zULJwuhEG777vCYQ4~~15{1HBtP({!FoZ-o z)4D{lRbCD#n7a*qQJ=4Mxw6G`%HNNCRQJW4LD!{FN&TEU1);J-`x$m4?bdu19L0JK z2%(Hf5~7)9vUfPX;N{~m7U3Jm8I!;(uhw{1h%X*|5iiKirLQZXNTMH{H-8E!xqg6{ z5|WGKN{A580iaob3DE-X<+~ah(lV^=U~$>A!&V)Ex*%S~b&=j8WFkwp5zvIo;smPG zMj^kyKg}ZlCe~b5*rSQ2fMbm*q-z=Ih}P>S^kUNQ3#6APkK!Md^S}o+VV%$%cE;M* zlcLka9fDp!Mj$YV{jQyG2hixBF_{(->-|>$M=;ukuIlrO?*B+SpZ|m9%y002d`hUd zRo($ykX@df(35d<8-Al}Q+Y3z3+C`l4n5KZaaXh!f_S2CF6wb0P58131EurjSI~{l z%a<|SokJ~ZzX26rt7p;ROFI6F`0^E`E%N2__!wxWPZu*i)IT&jX^+sK-?s<1PbB>r zLHJu+Uj!us&sxLRkY!Kdhw#7EbT|Z>#S%KNC-1|v zv7S5%ZM3W>@5dCVub-c!W&UU^@@j7a(GxI7gyHHa+y{lLk$CCQSVo`L!ZNxI7D9~A z8^*12;KC_hKR;pdE$xRSAqR~eA+^4W*Mlbv|JMC54h!l8ZTfBEVYnNj`7-fMYf1V4 z`ye7HvI^GXD~o9GjGCUmFb7SFQBWUk_zXg1(fz%8D6j z-CAA_aqQUbtQ|wn^1TYK9}_DlAE1Y>E6jOLCK@)Jiy_YYxtk7n~955v=oiQ^6WO@=4S0Q&Oi0FiSozU&P9_)0SRU&Ax$A=;F0 z_+w?|Ig)>PE94*U5BCnh)Xp;?O5VlGp>dnx~3tn(vt=$$|;yvIax-fD;%&o=P^Og%A}XbjZqoj@P<<3sH@$?#MI zN?d{uphx`Z6zW}wAEcw4K#M886gA>}hJ9@UnsQ=1 zqtR9v5UzgGcyL7^Y*fba+*UK><1Vb|pFrY$9a}SnUmWGaQO?l!8n*eZf7++w=(Szl zdPB#+QEYGHfkUh4MvAXOaZ8{(x?wQU3swg_^*Efc6dNa(hAEbLW(1m#CVzxT5Ks46 z0MO8m{21LQj+Kx36goSCY@2FL<9oxGz?G-=c7BEMjH@l*n zhn-bWY86#c+>s4~R;361A+gT-$Pm*x0>{f#VM`EV2JkHH)A&Ud7nfXk_Fe} zhqfvXvkb-S(BQN-GBhaKKo*d$-u^Y(s^(*CnpEkep~Pro=y@E;p5bx4>H^2{+5Z0x zZhN;DP>_R9Cf5EVG&9;Y*hnvz>1%IHb?h;m-oghZ$S(nDG`yj^MOZS zbhDir$C%SeAf7K)RZY`kW@dWn2}9bOY>(;(_m^pAj!%|Y~De}ovd94{525LzQ&Z0o`j zI~izOK`{}{qh^q)y(QD@l&N{d&1-lqV`vWHkpz4Wlt1AlyPux$78`i+q&_&O5w#`xFkQ$8mE?ov{w*mVKD~tH!x<#n(->i0K3slY z`EUc8aWV3t6je2s4}BzWcPHL9qUOR~fUhimAoDIfaD479>&$cMI+ z$08r7g8z2;a6RZxy2u`QhtNXuVSJAk5)?`cxneB^5C7dz(X7yG!^MNyg=oN4&Q z=s+bRp?@H4(S`bVe3WjnOv`F1;L#e_m@8)|o8x9U?`OdN*6=dC5W|5|5USe~Gnx#& z5Sev`CgY5<(9TN1(6`W6lcBGa87RiYVCbQg$HLH50d}6$&hd|iHHXV}8Lnv&@gn|y zv@Z;wQnQ8aLWomiq_+NtM+z*xsH@J>)4(22u1|oPUqtH826f=;-|k&+s1z{(VaF?`(sAAHb6}evJ5+<5K(sVzHrD zTY%+K!OhCK;dp3Dk=j)kMUf`soBHRSl9b#;N(MQi;W{ziB{M8SYJ_B)q*x(8-@%_{NcN;4 zJqlxm{7g`Qd~&siLcr+2YvgBwA_Ka^K+t;W`{ZYWB1^Zil%}JJh))QL&IXQ{wpJ!s ziBGLEfvxi2kh56$(d`4WM?MH{KMYdq+t#Jl9E_R43oq|xULdJ8uZu3VXFXUio|o z!slY-b1CVTE=nuL7*;4)o4(>l9FJ~zHDxN#DvvDr~Sv@T6Vd*`P1` z^xDt|(Q-IN^sx3Rp6zhi4s#;rFBT5gXszxj3vMh@+NxZTwpEA8!AgZ}l@!lPbcwLy z_HYG8*C{HTNYzVYdZu_9Q#?P%{p9(vCi!?+Z=AqEpKPi1&Jf&Vh`SQQJ@vJvq44hX zrj1x#oV9saxWaXKU1&>ZFV9DK3Cryyu2uXpT04Nj!5Y$o0K{{K17AC7qb_I4$J(x~ z@~u!*412hf|775&n|uUWgAn%%TN)*zN31!Pc6;6F*$bt=1dASyFeQkV=IEh~t@24w zCy9{W6`U zrI*3!J&xBC$%SF(uVmMNHBzc^=cgS@d;Iw{MgV&&Q228^p*1Ph*_WXvcuQ-ii^WD7 z+6w$e9tz&$r5P+2q+xfa=LBT8t@2^K28meZxxatO&%vB-?$i7uaL=o=r?fA&5n4}y za~{5wI0x4#0V?7^V=x}r+Z4bb?Ab=kmb7N+xJH$9ijeOmE~E zqTE^G?Pjk|zfAGoiX6Cq$7oN_T4zYb7Ft^67J29Lcc~wL8!Y5+PzdC29d;bCHUcV4 zJ+J(|70icQRWFPNVR!u=RSNlg0yL;^6PpRbphNU?tG zM?cNX7-OUFBuH5)d{1dlY$2>*NqUEN3pUNbjImWdN_Ba%5hMFDNh-x%OHl&J31r2FfA?bx@dZID8K@4TQ(8~4s)eyOy1v|x%@>a2?dbR)|zW zDFlM{seg@C>`@d2(T4V^Us5|p>{I`d_o*YJ*r)zAWxzi5gK4!l2UU0>2mc0~fNt>Y z*^Pbb!Bu+#?Ni4_YTXL|BSani>(~UXeX)_`A8m$yxC4e4Cw~4LtR_Xpp2l8qop=8L ziMA4?4N1XR8iWd)y3XtUW~)ThknTBi!IEMIsuGjd8H=PCBc;Fyk^&?t5C+g0T;314 zbxDyT^CTn1=b`xAfj*nM+IX3Rpg~d~Qxr0Je?caTvPR`m^{vvD#*jo|NJ2Z~G>_VG zys@-p|M^kfe-2zX2}|h#B9kb0y{4o5n)ZZp_b3Y|PRB=Bn%muRrU9*u(O-7b`a+qY z*go>#z=Y&;oto`$d>DPe)W!Q7Wk|IH+2syWbg8q9b0Q>u{MrqIDn>0(qSPtd7UYEX6Pj%e&#S!JpzTm*H*6-%=&w{($8C5a7M%Y*x0(@ zoF4bN_RIz`ScteLjNo3YQ`%GOX_c~$mW*lNCf#36YCth$A7R($oq&I}iIJEgzflSqRZh}2L1A-697l4YJD zNWp(B|LC(R|HjB11kED<&iTtfD*rzr|3GBA{Ch=5`890?$_GMTS!Cc8WFQ%c{UXK( zRz*e_A1Fd!mn);ugMdN>9KHsl_S?it^SC@ISL$1qD+9UKix`DLq2 z(d`{t2KV3B{%1@Izgq5p^}RtnE4D-BYeDYswq)Bx*#gP^m+(QC`|skJB;GPZ;!T0r z(|*^6ls`XzE9BqzbO;v?yx{|cT2=tR=Jg_4QR&O_Potm;L{`Av28GUVH5HrL>>`SS z@{s-)M4=RIAT&uAr2MQ1)^ra=&qx6JYm8z!^-)kJb35#!-&tg0z~xjNh^bxQu63E{ zH;))m7uX$*05H-C8yb4>dMfLKUkQD1A1pc?Tx2IJ(AC?vE{SdHg&&aB?b=7j5J;79 zA7^nNA)RoV&6(X4Q-w+H^EHYts)Ss$T9AGcP3VQNb&&m1WY-1bI4SlB}=PKVdbzZ#Vl8X58=F^_zLTK3vJ`k z!g(L#K$(z=C4M85TL*3^A8P z;0)g@&_L}?P?OH7E1PZHN%5Tav)~FtFN#x9tIns!n)4lK6R9tyNO{d!;th=xOe!{G zxbT@V=fE*H!kHzQkvt@4B!k&1x4~^eE6>DV&DNdIS~Yx&$L~=HF?;Pon7pU7Z=YrU zqVqhS#wIkJ=aJ(1&Q|qLaJQ6i`%Xc=VNb?KNVNwsBD&%?ofhm=q9XkyrKWo_u0=%` zqxfZ@s^*H{VkwvwkYKVHz5|h4mv2jD9v4!n_;sSsrsB6;<{)UM;&=Khf9W<0(;Tf* z=w~V!mM?F~5TwCMYov3*P37Gb_?3qHySc-BswEy96BlX__2P5Kos!D zV>E^ry09-~+#w<3y7})9ho7(@)K2jZv_V|d6a@3X=?;xpuK41&@;U#dBchUGs@a~l zZzSWAVu@!!x^-je##{K`LDwPP@+=X|>{n*H|3;mqq}cKkA5>%s6BxbdN;!;6|q+vEn*HqK}8EVs#Z_kM%1 zH`_zOX5zfrU3d=%Je@a-z3AHGzD8d0Yvel2}gbF~*wpKG4h>9dN$CY?2RLRNpTJ+_9XWLwpAyz{2xAEHBu z7U3ECr`Qzaod9>SqqaE6I|BHTMMWqWN{itwcs=%XL3`gF)a>8kjYTfeU}$g!xBW8=u<-` z>VT%h6GJ44APOwnK$Wp{pi`N@(XIehv>2V8M&VWIF_D2y1?f5NYw`o^g*32)=Of`i zP81{@keB^?&;Z%XOFxlg~D?D~0w8$|-f3#wNqPNVKsSQyp#B zpkn_SmDELRP}XNa^2N-k9Z*&C8TEQJiFA=`ky>ZeV_z6j?QW}CA!pQW^x2$IX{n5$ z5Hxc}eS|Vu>;-bP_}L51T*=)LiVde_C8$K&3yxq*Ja#MoXA=i>b-!LpyaKPC7HtHq$> zzq!32{VCQhL6&$3>HKDy25aGw&kPD$!HyCc%OkQG^J1AL+j{*CPOZM1?Cf*T7LetSJO=`LqU>y zY#Ys^!E`TFNRv%1BvM&|`tNLc8sLQdgrvnofSoO)aP3)WoH_-l;+aO1v*KzzhFXxDL4k=kUN58_Umuj-*Ok&Nye`qc$9{O;@9svjUfrNzvX#k zX(@jF-ymBWEz@Yx^>ObK6f^l%*RRD9u;?tIYsSY0x>oFi0;GFo&ERKb8f?i#0aPqQ z1Q=4SDJXgeUduRk+U!UIWIhCmh=qNKp70hIzv4;Tj&4G(dAmYPTI5Mh@{b3hnET3b zDCd{q+JvtgvAy{dyh1?=@eLOjkQnx$9{*mEy#7N~30inPj)Hj*@#5KIASTYyjb2n3vEQiK^Aq;lG{XS32P^f6Fv{Hegm~06a-M(t;BLrQ%Rr-K)VSfw0i-}?*LEdSsf4`;CUPe zcs`0IEnDk3x~U!DY3V4Nv_I*401g6RFLXVU&<1{XhCO{)`p>iVMm zM;y88@ce|+R!8Bq)ul1B&%Vniema6aab_KcsL;BARLIJjO(%BlMX&93#Y=E5=(oTq zV|5cfC2iU1=r&u?Mw|pTWkzv&X)NKF%pwHH*(z^EQ#Vh9D@scQT=~8W&JD(U-lSHJ z8nCk+5mpQauNl79lSqY@!MC6`nzzHXm3T#C`7FJmI+1xo)|Z=WVX4g7)`7?S=SW=m*$xjZgXlBjT3G6%nv0{<#yPc_KE}e|L1I5)izKd z`3Z156i~FQVl+_AowTDy?^7s1cA03&&V00RxTwli$u;Bb!qvcri6boyEyMj6a{z=9 zz~{2scj4L={2_(U5GTv*N`aRj!iD0QHeeW(O?22S&33n-UK+NU5If#K;vcS`T9}r# zgB$7GdMtETD4b{*iidDh4_!_Yi-VY)IK-0}0UnR`?D4=J@8vs)S9Ix$(`^Yt7wrJ{ z49u{T%T=6OP#aI_l=QgIu*ZMvFCi@d z;sF*L{#`g)u@Zfvv-9cV4P4G>_jUSETz=5tK0$)f(j*K2f3qEw2}w#h@CcPVSn1MwPP?VXCYXWi$Gw0_h?#vPwy;NLf z8O22 zR41q0oHixxrW@&VgpyN|S(>9xnldp>6{Rhu@(UMc7UXBEnc3OsBr@wSO7oZGn7;~g z3g^1=B9w%L0i`8b1Av;0yv)Mvf}E1lge+x_J6G+Qtj5MJECQ%&;u7POsbi;5?_D{C zu2Pk{fu|9w0X;j@m8r(|MqeY8tRia_(re zx1|_cmzkL{OYm=+I9if!WQPL!8 zY1q}$;+(Af+Mn9+W(YcG8sx(KWVByqZSl9PAgic&aRwL9FU`oA zU+j{<401JyTml5SXAl}JKT9$fiB~#5STne?N(Bh!(fq>PB9=dtm5?Km?aG`3G&Un? zg*jVojp`X1Jgo*VF=VO?tiCY66hmp@k%0NAQPw;Jl6f!f#&I`|h|q-#!%~xJ)J0#i z)!58Z)PkPmmK4obftonW_u|Z~+aZa>8`(@og~%P4iA`t$xy9f*!NmzGF((+aBtNHA zEzFV9BuC9J1ak9<=;WVH@_IRu64ioY=jN2CE(igJCZvTQQ&A-W#)d!}`2u&x(%*pG zY4iuu+C3i~QRCHIcVQNDpdUqY?@HArIVDAE5t_TGNY%?wFGckQnWcFckh#Ra=o<4O z(X<-Nte)vo6U+J}4l7gp=?^kjV%fNHaS1KKVZKmfv+{DXZYQ>PtIVBLfZqv$Ou6z4 zA$bGgO2@xR@>0G~XG(JlaBqtu8)~9q< zgaR?i?9*iW#mt$|CvhMIqLhrL)Z`(|Epn5zga#nBf~?F!V~!zZAs>@dNp5BqW;yF8 z z2&rTJr+s2`^n&LBR&BD0Xqx3K&0Hv0QRbDID4%FLWoV*OU;?w`wzNGkHn>)X2P$Fe zFx4&5KEk_22NN#|Z^i`HUv-z}7tR&MGt|X44viW|$TP#+rj->I+D0I)~VkPQG(g|CsDBe{T zPeqy(Y>TM$->PtsaS>wA3PFLsTsD@M!g4E!6*54F`>WR+_ zSlh%B0K>e8DPTUNHW>{vzm=}ziPuLFfN9XYiy-2Q3LyYU5V*mlCNnWE5?a6&H^7mT zo9Qla2}YF7&jRa`zw;zK1PlMoM;3lpcim}rVbm@c`93Nl+_Cx$6T&0SnvKq@>0 zU1rH*=ut!l**UOUvP)H~6ur(Ca97wtaFD+7h{^!!!-Nkse~e(8f2r*-nQ0F^a-8?NGvwVsZWBu@LPu`$wiIj zW@&@2JkFma#Q36is6k@V)%hX7REF-SPE5Orl^T-|xZhLD0(8B# z2AXKOfUdU&&_GLTUDu_c=yq%11WE*J>bgGBt4?`~^5A2jaq3I7*E&z=A`QivoK*{x z5Y~yT;+yFR^j6{2Yk~iM9ep=ZU|Fqc ziN602-GMR9Z_kHrg>uFFsnJ}H{uxWYDN?XuWUA1yh17&nR8#^VQm*Q-m(gGR;>DOK zFct706@;-dQd%2gql>irM&R)N+c(!6WnN) zp&_sa1C11-ytUaQ)9{B0Xf#ovUb(UWn-{MOv!K!!a<>y&1vVY(IhHhpZeq@xq-F<# zxu}SIH?6e}z2Rm-xqymR>MANO&dCOr1%CVuMu{K?1Es8LiMz0nwBA(57#ep=o(&cQpt342qqbsTT&{u)(hPnGhp`3bh$FK^7<0D6Xrqd z!t@jGiA-TCwFXiw1gf!xMFO4uK@Zl}NeeO#i@V)=VLvAvvuG2!*Esuw+I=1ZZ8Prz+Pw)9%a8qAtt9}BhV z9syXo!WW?nOKH`&hF9>Si>Kkt0&=P9eu386sx^RMImi-7A>GwM4HrK8k#a>6jxNDe zw~eHw7xr?Aej9l)z{N!7B7<0bAQF)UL5^Z^b$-tLqLRfb>{0_b;gJ3a7X1M$5(>zs zXg)3GX7?v)h6QJMR;VRJP}D>$^NMopT{a-_HHF|=+Cd9TaOP4ZhFBP|w%5oDQ=W1VX`8T3IVRv)7Q6i*sw1Va9Hozg1+G}I z!nA~CW!=dqh#PfTR=psT#R{~j)x?VdT#8o+C*5VJ%ji<9y3+Im_o_M<%XQQZ(Vsjp z0isIub`ekT8oPC11W_AIL~WGY4LsUJZWkS73Jy>n*bvQNYvRwq5jgJ zpi{D`3>H$wLUJso7%13rTt_jjv4G9-KXr*hh|Fx7xhU&E`lo6BF=;n8%PsQ{3Y0(nrqq`54-S++HRZ;X$!TMol;QRa z36y_gx_#=nnqJHq4cECZ~9v*@Hssr zWkyQC_8=x9VE$d)Im@F+!nhLbhDaDEn*l{qx`@u>D5l+OiE7xW9tLpkq*B=raPtjB#>sfeA#< z8C~2Dp05LwgV9f+7Z@YqH+DQRbN@tyvWY!&+$DdrA%`Y#ZeG4dC_*;5Xr#@nJC~(i zWSxqw!!8LWu1WhCyxE+96=dZU6u=OsxD0jg#{m``?R(0XP zQVAUC46G3e;u5y0iC;lqh?=u<8KN0kmjvt4Bek5EF5qiv-4PS2@=xN^7?7cZ{h5gn zOyQlS2tXvq6IfCNXJjr!L@h_<#)7iRiegkG#u-_mRgzL^G?qJ}*K0Ho+&O9l(-_5N zmLd*FkK9gB(?D|+7iDrZ8TOg#(7`&xTY5@>`m4+Q0MAkd_RRj8NNQ3kA?^ZdWIXHD z@efg#-am3U{VH##@M!X)3X?EnF@BCvj}1~nn5WARe}a!VjG4ldOXjoBJVBjKYu4XoZQ2S>zw$83hCB!vL+k6jbYSmk?)>dz5HFn684F6A-D< zv?im)CVg;^{M_j>8j~B;6h@PH4=!u~?F$#P?(mgPH}oC!0qInX5KqDb)@)#nOykHO zwHJcqT^X6h`Q!=hrF%9>c=3J$c%$L{gZZIHI?9#%0a)COP$wp3Bo4qoL)2Ix5RuR{ zresdh1L)KYI09D;xprt`V%!Lw-bOVIiA2k-ZBfVGG+}TeL*kf@|EBg18ZdES#-Lx* z-r=IT&D&Y3(kF7}x7OatKwGAoo3n`K722&JMWOC_4uDV-oj{j~yNINuAp=n%mN|K^ zkO-@yVbx(-!no$kl|BR8&D)$ z{_oY_`fwTI`E4ybEe<61a}`&d^k*J7GW&abS3iV>5cd@-43_m9Wec-ZF4U zyb3rN_~{%cuggr(!;r+p#6kF9OozgELW&YxG_+FMJmXjnnr(MuXDH-ov-%+yvPR6L<(Sf$^NI>*mS*2R zb53dT%+ke}yXVgoOM0a5vh8G9EHt7p96B`L8I#4AwdVt=ohy~d81IZ-S=spH^8 zDV;ebB{el=^33t+`GvP<+&m;HFR1qX zPFef}j1?_SWBVE;79L@rU=s<{eN1YZZdXw+MvKJDP)QnwH9#7rpQ9Tyhaf0F>KTRs zhY^6kX81Dc$K)7k2_}|tIT9jC_-7!E)SyB5XD|=w5IhYXDw^lF&qBDZ{nkv;ENGjU z0y!o_?2f_yI>QZl{&rd2=*4BUTatn_a(K9UB_$*!Bqk)OnF!$IZYuhI6%pKT-S!Bh znzj$hzoz@H0&SOwP{dqbIzrJWlMxDu8{S4`da3yxy$9}fi!+1!IEp{9NHEQ9b~o|| zfq62_$OzL{kq8nO3G{)ccoV4D&qWH;Z9?IhrR0=l(wZ3BJcYL#n&XVw5YBG+WqTS} zqS=n3h0Q&F`efJqiww$%P=umm!a$4Uf;shq90(>jvvwM_K<_zp$G;FzC4+q9`(#C6 z(=G3dFe-GF$*nPBitu|++dt%VVZ1NV^NT1lzxR|MZKN#?#(T5Pa@1*KByWT;vdFc0 zzmN)Sf0er#_(1{P(^dqd4C}=7QiM;*Em+o=1|zEl0r9*WMp4$z7|oRXXvY7gga{oE zqknf{_|WmV>H^E@_3dp^E?SPq#Pf{HY&m}HyjRuUWVaTTloGEO<>r#(Lj191Dxcx_ z=0Cw5)N4hdeSibY_;r)Vq2}8m=A+C@RCFU`vF`JeYaYBqt!Gb#JaP&)7|sA-qyuND zii%xb*!h+?nBPT2OyLHz<%}(Pawj3AF6=J@D)yI%EpK8rhwvAg4)1YIQ0;Rd0}yqx zV3M+Ej?jb*Uxtv!@Wsg)C2(0~ZcZWOZUL6tN{UJpJ#L_YB9C}-5nvP+r*cajjC9)6 zos-@4Ey>uX??@t3{6G@`6to2ZQUt1tGGP(G^+v`3WI!=?)?nBBXTsMfI=Q)#Ep6IGsPC#{ zaii}fR!VXfxbw-7HpYr0d3d;#X@$2J7A?ZgTSGWu<9Mk%H#a{kpR^K*W^A#?lBlt# zT#sy5+_JbB6Nf!%@X%pN@rg-_cuX`O2gXAi5pM^{M^a18M-<}>P^gTzNs0V+=&(e) zQ|O6=7|@4Ql1D%t;k~hfkBpyLd1#oVSCNAz|C~sHt%GDU&-z6V%B$ zu9C%+3uLJ)4mZK8?3bAWqIjRJ$kZG@IUfB=NYz8+=i*|^z1Xc=itX3%jTDl13zZTl zU2uQR?p{cL19ew{oWizJY&8;I20782tR;7zC^y<~04rqWV9O0WZshE-GKqcc4J^HA z9~?{%2sUy}{h9(|-PuC;08YA+xq~VYqnY*4wpHxQ&fz`Ua=V;SFWTe=p%=48iEs;3 zlaa9!*vIb|nB3H5REj77h;Au$sEdL7$70TOH6fpa`Y)vo5i|L)Sa1l;;Em~AB)HbU zKP9$Z)IT%os|}Od{pE@s^V{C{?Y!b4PiA=^e=z%zfz^kjo~Zk9@m1dUj#VGr|L1<` z>)LHx`uwuC@pWJPq5I}l+0n0bKclXl=UlMK`Q~T`qN*2uh z`@T;@My4JJz2TRt4*PF^IpWD5*StKWVD$@Q-rw`;;n6?5_ODM0>Ib@K9!+_t!}}lJ zlDzMq|4KY~^$6voN#&D1*xfmE@8*}keW_>f9WUPemj^ezV|#LA-6M6uvEkKW87~}c zzca=g`TUBdMFTEL&ztej?wMPY<8#-ovVXX+&4R;0uc`Z2UlaY_DNoh&3wpe~uFaF5 zZvL-92kNxH?`c~$_y@(da!tEGby*$t@v9x?-4&laKm5-H*?$O{nf3X%lWxC#PG&*3 z`ox^78+?<<#{sM}Ptw0ix|N4p=HlNNvI zvTv5Ydv8wqfuCk%zA)kKNiUCZDX%?#Jn_{7_9u^y|KP#;v?f3L~IdA%l zRYhvM1G($}>(k7)qkj14cdPdtjO(>}@7kBve6Z{Ct=3z<=+Jxwx|_# zC)d5W`LFGduM7F>{^wo8Q{OxB+@k#tUv~B3(2C9XwdhVrkKGHR8GN$A=7^y(HAW{nYHE(~izvb82N_ z(&A0|vJz2$t$cl)Z?wro0i{p_4@BWUbMDoQR*vQKEE}*x_F+=_r`T?a%V;cUE+Hr z=f3=B=bU@jcY9{aI|ZG~jz>KD)&342OsxpLaodX_!!xg*`;W7oXYZYmnxA%fQQ@fZ z^Y%Ua;jQl<%#A!c`t)`6*G_r%wWnWyPfiecB*$AzhoBP3|ZhrIA>c4c&WAPEKyquY+6t zI;_>NS;p6-#4Pkuwjxn~Qex(liPN9{QD(x<$sV8-m#XnN1}j^QFJfIgS?M#sRN+Gp z`k>RLy{{dl#ANjzI!GC39Ml60@EW_E{1tcU97QS2aly2M2d|*G&^1^cIBEchVnCrA ztAtC{%tg1WeFuy{H3QT;pk^bsOpUo#y|b@E4N%Mcvvcm4A?h-K!oylVb)Y z#|%#H)$2OFa3YnZKgXEViIfI)4Y}^aFr2N2=h%lEeX%%oZpPmmeXA~2lm$;U`p)57 z9?n~*ga6Jw)95Ql8osvCw->1s={clpkS4ZOlzOBSk*M%5*k-^%x@JqGFB+HqbiomNvyql-XmST5BZTg_oF@0fb%Z;g;YaYj@XLT7oDVnyY4vHq zMH+qv?WgzOp#Pmw{#*1PX&sJNJ&kk*j+`BRIlkir+*L?pk*-1NM7jm(45al)^N^lK zx*BP87qkm$EYdopqmfphL%--f(p5;EI3ap3($zRDT)hH#!?EPmNb8Y4iu4@PI;5+A zLHm%dK^lD}@*#~yT90%zQVk~=uA<+#w_z{+MygSY6A34FMf-5V;iE{MVLsn!`i(Ta z8`_IhMXDh!MtTl6+-yPGCBo;6?v8qp&PJ*sEkl}z`{7n2U4yIiw$OK^^+@ZHo<=$Y zHxou*g?vb3k(MDHjr1ID;VecPi|Zt-kq*N>n_G}}>4@@3SK~h4(@4XwK>i;1j&ugn zaNL}}25BtPEl8b6>ygetdKzgS(r^{tofj6Y92jDx>HAy&m7HRz;pAYx1D&a#>AJTKz z0`EwNjX=AQ&Pew8y2K#8-sj6hT4zT&q#Dw_NS$LaE=Y$tfS*42o`QZ-I?m@?i?liw z?WNyH!>>j=kg7<_($HR{YsRBpNb7DuyXZGA-`Rq6^#ru5FY37o@Q@ChgmFSzKNZHGs1K3Dlc_cH+KWe2D{49;p-QnitSN zq+MP_KBV*q_UFH#C6kq)vgn|$?c0X03Thio??Lj)f=3&D=z{SVIKQG`_&EQ$KSB0} z;YU>TxTr4UZIO$@%a!Y|yzZJoF`yJhLAMkK{*QhPydHuFdsOt@!H%dd6(QrJ)&_+n z2S-G8!8?0Y_!x+8B_02}@PF|WjlOmScT80DeZga*x~vQt6Q$OMj){uBH_RTDcy}8| z)Ub-SsZoyxg`5tGh#KaIO0-ACA`kMS%$TU~RDwtC+=2fSpKkOGLu#o%HA>Bn>N1Y& zRtDqKm-yd_e6uJYVAKYuM0L40#1W<59SYbLVdJ9`?}&;W7p23> z?+qRs)#YxYn~G4Xd2&RQ3g$pdL6y$P4E#g}@$-hJKl3dg0lSj^2mIn^8-1@E_yzye z52dW2mci~Xg)w=n`35dlh-m-5R&a?t_OySa(_B~wu50u?X^aocyC(cI4xPBMInKvN-roG> z4UxeQG=DoLGCR;q^jPq5dRxewR~mieCH+dd+oT<-Al=a*-KK)lK?rD0JOLT#uIBCF z*$_u?qb&!}j#aRsUY7Wfd<6M#onP%@ew`hBE65)b9As;qUB^WRztaj|5Z#Q#B&cm@ z^i4480p3@JIE{KB9Pe(!^$@>C5WhCBD1`+O!Mm5>!R9;U4=+%=$44Ct3h5pgAnO?< zw?72DvW<V2+6#T6 zrT!O(pYM~^K5EVd2sMQo0E!w69YI00B7yiM&C1d z7V~F1)TrQb)`^Yk`x*I$!G?a1@|k)9#!t>WvOdVQJDL;RI3BnDDC&s7{0KO#Z(!QH zI~cQJMMx_2zu@tP`X}9l*ipE7nPnP=9mv~>_T}_HIlgbB?`C~X=$!RmN7TgN83Ea5 zyr_`i?Vv~aKB7bY;Bos+eOmJS>F|*1kbn?b6Cik<+AGSI-HpEQ47xV)(FC4@#&}0S za6*CV26)+kR}3Fa2A*j=f~NuSQ(y$xOfqXt`M@M05gLM?f4ck8_T#3FNZh@7jA$5<=?f=lz}EU+3(6)_(SS z_FB)nJ?mM|^Q^Tea(Qz9S1Ix;s^R{1;)x{JU*><%^P#+JXn8U}Vm+h$X!R#-5!q%L zM7ki-wV@u$I3WqUR+%PV1NX2Nk8WC3PLCq#BP0RFl0K>ZPs_u9XCzVhjvlA>j6B}A zKr7slpaZ1Bmvc-rlWYZ@N1)3JU450g{o&wW%MQ1xA3La|jd%m!SjroUl=^mi)r zAByop3^-Ma7t&#u=fQ)>N6X)<=DR}P$#w-5A(v^q3k{HDmtipSwBGN4-f7TVI6*zW zA(!ou%cieu5C)OHAL*07lFvuxA@qa^maj4MuqFfg^O<33{a4Z(S$8GS!wNZW-BtB* zTED}fcN)ILt^W+Y5W|&EJTFGC=Mw!4;^s}qd#n0C+3gumneK)<@2-l+V(Oz&au|0;U&{0F@d=#8JZhk*|Q z4_D^MMbp2mriYq0a#8#{YWlHwDt|8k9{`=HG&STe6h6fngDB0Xfp2=E@&({&`Cyxo zYc`%{15fGwiej;T?PD>s_fmhyZVh$%u+6Z5mC25IujqHQoV$=u9~+k7Y96`h8o38} zBk=7ME9)UkF4ucttUng0XecaNu=us)kD8d z+3?DVrzp_3gI+d#?ST)6CEEyJqdxya{U=xG&vbo;QBdK%VjkBRu*&_zV&r~*5am>y zzr25GKRp3_De&X_=|wgD0i>b*r24O9Ka*Fn(@N>`b(!v}@-3zNSL8nkx)A##7sYFE zdmMPY9=Rx9z-@eb+TXL)^y$>!H%@<%=TjB!Z@1Flwd{*u)erLcgI+E6L_VXX%i}+h zea${MGX6*d#*!6ETF*D>t@rYF(Q$kq_se+yKE5ns&RNazS&?rC-C=e3OfphMw+jBeU1wb!lWIm0y z$1~#Bk>#&D-N!!jRqdhmdl~df{{sE~a{imBzhNv@az6N=C#az;m?%9BH59OS_R>gu z;orQ%?=-SLz(M%c{k;P8e4vM|8(H42gw{dj@Lj=5ptL-gd~DqM3dzs?8E!F zuxED-?I&4}gq^{Dq3DrHGFfiCjC3*V>0#?@jii zE9IBlk?t7X%T?3urT%kjkJYjtjqr;)zO)~opy~0y&rP(#@_1E^tiN(Uj@7R)Ua~#- z4;FOVUl%|xggxT1dJM%60v`lk?q9^|Me*5CxM+G8MW8q8(C-WJI1Tt$fuE_aCu9A4 zvVMv>?8dqm;O3*##=G*UcNF9hwt!9t_M$JU{r->W)N)A^&{6y-l+Np*vr;EXH~ypg z$a)j4&n*+sQS=?k2O09 zG2<&+A&?!k{YY<2!+5Cm9y{-`pm8%$)TsWb2tL~07m@E{?7{!T{vT=YbrZB#;af`Q zZ=e&!Uj2VX$H!ei0Uf2^D4hj33-D?d{#oKb8b`H0wd~+OVh5QY_JEELX9MUzELZd& ztdFYSPv$F?j*q)>g8C@qumD-#p=T4Wk|aT07u9hbozIKG3PF&#Y(6UkL+4#8J+pu_ z2?@Tu!cLOsovcS=o#r&4G{Lf}7{rv`TG0F0B1yNY?fOc3n8&hWex-w09ymHLUj#jR z27>Y&T|etpdH5#q##~8SMe*uI`{RA!R|5Z6b$qVa?}dkw<(?bgA+jW*We8Zn^*Cd( z^K!oSq8Dk~)rC&6Z&o0E4brc)O40zWgRIBO;|Te`PlH`ibsvweY!hqi9d>lSc(92)y8lS~?E>;Yj{Jo*|B7_ua<$(E zfqx!&xPeD5nm*eK`2_qC+HUot_-R(~heMKPjKR}>S_phC&YH;UIMxBk_p~I}qnu}- zX15k@XBjSXi{3MFYF z?H{>a)wEut^AC0rXP%JVWc^_u@*l(*oi;W974v1Rp5o*-PCWmVg;eH$(EGSplCsox zUa|kNI6bD}BI7G0_w;NuL9jy~ohC{2pBB^gUG?ij3M?7nez$>Rpf0J$EUFAN-wNcj z&ICWG3R`b#D0T{YihbpPXub0M<)S)AUX;m%Lo0rG?t zK=XajYre7$)&mi8@vrf}T|LnMc*R7PuldNDirZT_qs3AFll3_^iVjnB`p zl;M>5=N-`VgI>qT{E_)*RR5Ogsd|2ZyA^#g!TP1F@3elx6pRnfq`f*qPqte}{Xmz| z!=~W`)YR(9^}7r73UQ`wjz($kSpSX8FI4&I8qY7)2JQ+LtT8MEiPu4ozY+3VrKjpq zkT<)r-Z*7{>*zeghQ@b5+v=4E2>uh<&Y*NOFwA1hBQw1G z#*W($8kK`oxm_}`xi+e&T>!n(I-DI;>8bk+^12M~`(CZAUsXe;sm9LO`01f6JhXk& zrb3>sA3I;cUt`ZfjnJvod=;H7pwqEIlFSp-XLS9c_3`~fI<%i&2c6(O7=Ili41ojaei8K5qWV{VvPjYV`ZsiODJQZ7r&_7WDKFNYZsG ze@@)*lTawn(GUV|b*Z;C#Ro(|(lJ2}~B3iQj`Yz~{f(~6q|M&Xe z9{ArL`0ww5xXmdOjjAwF0u?Rv8V@%sXp*YJuB)B$Q<@rocY3A#1ect0eZNkIaPi1j zLiWIArNq_uRL`YX;yv7)_t5x3)=7c9&zjC|coWf(3+xlz5`vRq|Uxl2w=}e^^r5 zQ>dnw)Oe!YxEkM-uFzAn|Njnnwg1N#^rbqkNxV{@t5jH^!nrDRtMC>T-l4*+D%`8W zCsp{I3SUv-FID(^6@H|`FIAXiR?AmmfePoU(5=E-RCtF9x2kZj3ZGQrb1HmAg}+qc z?^XDb3cplgl0_|Fg#{{{t3tO5Z&BeLD%`5Vy()ZCh0m$*6&3zcg}+zfM=JbMg-JPT z`6?_>;anBERd|aE?@-}Z74B8xlPY{pg|Ddamn!_d3O`cemnuvW)bdqWpu)K-bgS?d z72cu3tt#BB!Y5VuoC;r2;V)JAdli19!Y@^rl&h3a{@H7gkm;CI)1ge!@Kx9RG4B)U z{}H^|tkC--bnwp*#;4OlfQ`p}({?3}rg;r|O=FJouEDOrN(eOiF4z127C!&kOMjx_ ztJ?cN;T`1a6<6Y$QQH1lRN+-uwW6AgcZzB{T-n`EyRy2ExQyLXYmU0ox(jNiG|g~_ zY-!?@P<|CtG4%fA8e+BjtThFp$u-s{#@5U>iPjK_d-`*0@~ZZ@GSAxl>-)Y?g&L{= z^<+?Y9r$NCLWd({JEvXUk|M6&_4yaZ5Myin!q}vrp(w7D!j z8FsTj)1`@Sdd2M3&9j7tdsnG(y*=AYnFIq#8$%l<2y(UQ)tFHB}@=-e4S#fbnRcKb{2qK=k0^i@k}o7m%+@&3hHzlJ0EpQ*NjI0NZXk;3l?K zcZSy0XyWA;GiVCrPgfza5}Sskk+dpO$VOA;`e@=O`mF@hIKE%f#Q(Lw%Pngz zkUfcu)-|>^5hJ9p6MepK(<>x@vUjp4&;R>7nKm}KJd$5h8qE}}*K$SdY3qDJm>MG` z*=M;a8IGQa$yx0Do^x={H=X+Vrs}XhOxEyc8onz&%Y4&WETo8M>x?mjisx)8&K76a z)WNd-&Ns*(S3N2|&FpukiGRF_DgAXX6VCJP!?^byCm)cQ27!D=Vzsv9Bu`7oVG%vM zhI@y5ud3EqH@S^2Hv0J&$)VKP=U?bU$+4`JLN(qKKJ5qFE3>Jt~yRIZm|cE z1$ANUjMowfEFQ%889OI?OxxPFo394)(X--VH2;?MMJ?DfqivA%IMrOs<> zGB_O}n!%aNf^2bgx266c#oyVAb zCjNH+OOa`!)lLdEQLQ6aED_p7E~arD7EOXfblTg*ig_ln!``E9d*r6a?(vc-24~1t zEmL6QD~F}N3Ww*fQ zOkm@uFS23H_s)?&)M~%?`&u^4l(TIPAvxysWchW)q-JpgU=Yp8W$G|ERJ`!@cUhssJ@8ZVh=U5{{6W z%vomYe31*0>0Fd+(k|KPQ+U8)w^Um9(uBrfnUUmIYO&JRC8ho&{Lb8Lt^nUG8OgHg;l_x8>Wd0vGoV zmwHR9>+8HhtKbOyI@lb{VpGI*A$>_jH0!jcq$sLC&6eavZKs(Mv0LMC>?-hHA4@8+ zMe|S7n8SNbEUlzCnsnMw;s7qCq_lgocX}+Nq%i6@C6yF)=XwibNk}Pp?XeWV9B*Ds z4`}gPFy|b*%-*Zy_q;bthF5#jV^@1q5mMxIS9z0SI;5NAWn%`wZ10IWuBFGq?lvAr zzo_~O)m#3K^RLrkXfH9~8A9}Cocmq`_z4b#>_E^W><7+OwL--vvhJ2k>0 z{zX@MbfeoA)K&c{_sqRaeAl41s!Xt!GIps?FEO+Ky>~M$GZXBB@^*IK;$7Qd5r{)m zNX|SRo9N|#u9F7mBd$gzg04-FUK$5V10p)c7|p}}pmv+>)8HoDgY znfd1;LnWI|Z*=Db|5Eae?v3tnP%7Eby}^B;sYECaZE*KA>B~0&)&>jjWhzXCHK)1w z=7E$R$5Dp_8LpX^LL(q3}RZQGJ$kyk$U-va_kv z0eSVEOrbGK3bCFQ+PkH`KTDb3HU5K(8LJRW_vT=XS5|gKuEM&$+|NM@ra-?loJsK< z;!`~PT}fy9?Zldu6y|lFc9*jfZF55YSWz#Ok5eEh#0aUBhUd?@(fUkM>oW=Uaa~p) zV<+Xb0&u{lOI&_(&Sa7$*Mf3dP7InRWFpti%(4X7_{ur zp_lue=E+8$f=gUhR&p9i9?6q@d6|Bx&!gs6=B{3DQx5X#FLCB%{C+{|NM2(s*=uQD z>0gD~|7t)V)2g-S)Y?xOTaQjIk10uyLNmsyz?LLqywW7hvq4Ra_42KvJXT7bO`RlP zQ#cc4{`MlL&(5DpuJQ`4^{%y*$uW{|@|dbk&0%5)E%#?(snq&qC?R)rMADdRSlWCvl&olz(_w zgYrKZX7a&VBjwSuj3_HvEz1z)V`*v&xtPIw*k7M_7_CZ=>Afrchx}~($bdp`i%jpe z5qi+EQ1^Hznexc7t8cuzhF{7(&R1#nYY$8b%?VtG)%>x3sqd*l@=a3}cSzH2@-p$S zU%F0kG-=zR|MiqK5zM;MH@@tZ`Z@+_Ow-Mj>#NEG40Hv?S{_{K)M52j)+M@5*sW-OP3LQ>vGrfN;X#SUzxWXyzhyH>;+3DTd9zRACdU* z5>}Pn#NoK{&N`-Ty`Krc;F{XQgg>){968KWE^;PUI0CFteULAPp45J+R4`W;V=X*% zi4j51SWI`G4)h9(yqwX|~aBD8FyN|DM%$_tccMQ4#W zw;B5A7!GsC67tX$qpi51+XjjYVjazEnu(^)&x^FLzkP|xOFi3x77&fCnHSmk`b)&t z2)Idutr2TzlR7mGmc_(f9qVbtF2 z^A}+peuCIJ(8*G3Trtx3Camol)qb}YYtt(it$7S)ADISOVP&ToyZvr1KJQY4n-yRq z$Dg|>_5H^nW7S|TC#1$zX#3wG=V;q$9|Ss$HAmskAjRhBbN(N>OppXO52P+htuD+h zZqbx+@!c0cZBQi9!Ns38FjjhJaZmkOx$t2xUEkz22DGT&67TGoLZ*JEZ9O&dK z#=P4`-*L7Tc-tLWyM6NZ_U-xX0_3!d*}~cF?9{9zyGY;uA+q)X%LDmrw%GmvH${E_ zK;rFtk<||h4`$J~51xCFzRgK8iBHz778XXIgyq)ex+cn>{=j~KX>-kpCZB%Nz6?)O z@s46dlI%2jx~3>b6wE@+v%us&x-<$E{u zGLjYxc?}532s#8U0*AmrYYP)csLP(@IDp}~f1pAr5{O;vAn|(#wpG~#Cf;@tJsnc) z*ZUIo_!MaFQ#ZpN&xJjHt!$6KhWkC9Tff2{*TIH?g>5YpNPN~X8(#p4`rBdRsK2p( z$^1Zl6;oakAn|iUQr{;R*>AC7OYl^Llw@@m1xZm_v^a2c6=_>jt+A7MrL?;GrYf?Z zv9I!yc)L{kMla;ua&i8JFye8fIAy@nZMJ*_;dt-yODaFRMvGMuCtT3~6yU5Hs0Ba{b zs*7Fc)!O-7sqf=KQh06jlV0xNwF1^A#AZe3-e|q10Cgl zu0ahyZ8*3Xk_;tpAF!arnFA&J@~X;1!~t6twl#_O4BM+18wXAN$DpZ?PWI*mldzsB zGm8{1f~AoI&)6eTUoUJm_yTrbkI#kZMi%tBWzYlR0VApKCmZyHSfADrrz?YKqmras zgqe+l1B```B-jF4dX9nW_(OoIpM>g+RG0i?Dj}C33uJo(&r}}JH7ijISkvh9=p}v$ zr?!c7U*CHbYOY1iSEJ^n+t>@e4Rt3`L+?yM>6!QXKW)%JLeTf5HwBswP4AM^_kWaB zbuD^Aj4Y@*KuBokNHu(XHR|#JSWYFCskV>PHDQG z*u|8Pvf#oYTz=icYf^O_jFuYn1$h8RoO_cP9E?8Px2dPkDIAZ7*B+wHMZz*Ku) zjJFFhSOV{d^yU}~=+sY&aWXW-G$rKy^ccqFeQit+9BWUCvG!V#spxWdxd*!07=0e< zruuR%cwrj)p7w#>qwlP3(0eO&+-?DVlaJKKJ9oD} zd<>`YOQ>H&Z(o9zVf~Yadl?%Edc9iaFTBV5Il`wrX`^?htr~Y$zH@C=-p_bb6ZHce zZT_hF>0q8%A2f(hZ!?It?FR7!z&gM>_z%jF#_?cA$-Jnpu;TQ54;#OEP@_ppGn)$w zN99*WL1t6AGZ~)CghZ1Hau|xsxc-MC^>Zfh@q!$7E|cfXY%21ao#lc-Od0bwvnhv5 z)+VPJz*mZ|(bq8CcZ-xHbO0`seiWG>BH_8IOnY8vH&U=+lFEmU%2MWND>FYFDG42I z<=W|!DfD#E5zO?EA}(s(aE8>@GO^Pnv-TW0#jo42+NXuqNc%o@4(2HWi=aVBLP$Z- zBZLqnY#gt^IHh|yCd`AUni$Bj)S50rRzY%MHYM9K#gN?`(tCR}7GF|~vC&-sOOvjQ zLORy83`&Fgib9UQ&J4k@#87=s^Co%w&O25yZLqqc#8!8c)c1}=W^mDIW}p9B;n-r% z%d}g3eaC5D*{6*B0oWed-rS~_B4oNfs-I?!eyYoPFVo{-4)I1$dQ&@ZY$Eo(@R+50 z!n~y^E2$@Axob5ngQL!rs&Ir0B{#()Oj&b8>U&MPThGisE9(=x)Hc($)B5f~(10&# ztIbV}ou+?U(jQN!={mJov7nj5i_gZWwY<8K^5_$^jb`{#NhQx#Rg+}iBpTo~$}1(c zM(9u^{TDNK^3w?W2i z1ZFrt*}IFJTB-LWR~y&1u6ujK1&(NR9;?&h}cujNpd;Y01KaXAtU?pEk0R>QJSDNo(^(De&r#D&Y|~Y`VCH| zM4_dT-(=zqahNWn(bqXi=&QyG^`f`xcn^|M?n_UXE5*hy& z;7h6>gMWqAwm`BVlD#e0Hpb!DC&?i(1~n0KpdW93f5v`-e9>tnt&@6@_G>PT^Nw8g%R=wh^V zolN&>(9O16d{W=+EIZuAXMH#4ZE)ROSxt&WTivR>y1EPxXCpJ1s0MoiVUp=P!5{IbEXmSl zWn7AWuR+sw(DfyBvpa@E_80t&)dXFUSYPm)#20-13a^c6CzTbWoS)c%qPB>_|FFB_ zeS=-tGs)3fe5?H2Ea(e9qkWa1LcI#DDkRe^QCo1OKh48jYjk>Cp2}q$E3($rzIDM> z{$->QdJfHZ1hJvg9)@-9tY{QviWmdw|G@9xsmV8a*`T@U0C`%pBef;8t7*aP)s5_S z;Ftu?wY_4&+0ZWFdPdUyV!Nf0eZXinH)Vk`rK_w7)F00_=^#0GHMN7z*^q0y9;tdr zA{8_mq_NtxUag1sDL(#?o%3dK7GGfTK`LwUo~|j7(y~0JyQ*}a(RXYU>pi>6)nwVN z&y;SZ2l zdwJ8{WRkN@%oXQ^0>^2YjJ>}zyCw}@nl{l9!bt5^>=Q73$>@X#Tz4zp63^K>s#>Wg23G;$m)^e4eMFNX=w}g`h-)oLA&;0KU=~PypG(g~m^puk9zy+fxq{ux?EfXdCGWXPTMe1616N*S*cbjgD4|xGSW=UNrXe)&59~ z*Vy`(f=;W%EGP_&t$&_i^J;}Rd9wd%!I!tElFUf%E=0-?(T0U0&VZOd+Wp+_nXxTa zpU8We$MN-ixKOCC!|?-~qmKH7pQ|JG0^whGf4IA9ZuvHS$)qSV)AYwQ4+%fvuD^o` z`)1cKoZ83>%+%-S%na3_RbO5#-9}sW;w3ItC@|oY*M>*yo(3L!lb<4NvEP;VY^6!q zD5lh$=c~$dwiRG3^jNp(IO+%J%>VK5UE*wWtd;th5^e9N{x65MnRhZ3hQf=dnRwN( zFSmbbfB&+6TuIa62|CZ`g2pd~H|9N6NqMdaJa@L0FDJzxM8i#Ou0Nfz;(gQb*>!^f2Y;cAnE^yl3_vR%fxY3Z>yhfkSw(Jf|tF z@*X~*!hz2s*{dv{rnG|lnv5|4z4eU|T= zuJ-6k|MQE#)!RR&ee%4KI+@Copi*tT*@*R8)~hOHY%8$;p;L6cav8G=7=5um`k^lA zJ*rd8kg@jzyT!g-oaS-bPGM}UbBcpGcczGDp{gwPUVZ+)d#BVC2Q=n8U3XS;`4@7? z6D#wdao^)UyzqAS4MF{ashh1+r`~&y`wdtVy`j+58<=(XPHkM*Xv|M(+_&l1n>_c{ zxtn}uVN#8+?EO3Rz^=;u?fr*xe|`U%+;{H3%bg!ALOIU-ziztAUEEl_dBf(_cRbV7 zf*kree+?P)E6P$Db=5N)H#EK&I9CweC0jclepcQgT z>PsF{pc%VZtj!W^5gDw0mVg86l7pTQ2`OtBW1H=1!+v_3tcTl$qs=?Z4C2wolBTX% zrz1viQBH~@bOe_3^TAf&UkL8FHb)oEI7f~)9&HZkLK&^-V-A+B#&)#v`5C-=d3o-5YRgc%d~S1_kMBz3qg}h9}PMFg4Sm0k~6ZB!vrz_Ghdmzl!s-REGYgF zy`8aQXETKLwCSLT)syyj8C@?rrexSZ)0VVop#7KZDrqj81=uL{eS}jOiqDu#D~sCw z&=6s-3Dho=?;rYe@N93O_jL`_nmZ!jKWv~jof-BTplsRwvv9c2BHJ=y%x&g9^0SKL z&`)7&{de1L3H^fFuvG5tz%2h8Y^r$Y!^hbDj%u#W5G0Qub{q2!x)wxBOSGrkh^Fi$ zpDmb#R9SaNn?u8WCx(Z6GyLS>Bd(+#cDBCE=U$ZeqU-Oca$@XLi_AZ8{q6JWQQTQVz9S zQUcUZp{KSU9V-Xcq=3e=aF!{+dFaWEE;oJGgrGq<=EzAp!IyRx)%Z)yXNn+!EG3RJ zg@Ab_lg~^AoL7=_=5KPUg(X*=aR9TTB+%R`*) zW*lZQD@H9HraK27?i?ALgA*aTm_^Qkk@uKGhE!8%w~m!p`m`A1GsLc1QXFg}pYkhx z%Y}21FrL_1t9-?Qg|n@}(&Mz=WLWwE44NN=5J>ckH{fCIFNBtdsb33Yv9=#+<^t08 z;hTZlIN*OG&~|sgmjcgW6L#Ud_t|^M>JZMN)GREgUR-xHWP4UPnoHWMnG*QkOCZTJ zr4Mph;k-ch7r~zjnIPE&eHq!`Vq*nI?i6?|q&^9LX@@sA_&rzN*(ZrP_uiGZrH`3y zOMmQ2I!&ePWO>x_A18W`70gX)HvgjFOXi1TY^CA8pWq!k>rcI15#PO<@C3GpUv%^H&j*s`pTC#RTiPeI&BO{nR1U`6iFJs^As0QV zfZ&4)*yMrERByYGx%Pd3yD({Odv4a+@8K*_>e*jM4v=S89^seyzmIYbM2bTsR_tTT zK81Eg=>`_FR%l_16TZ^FL2smSitTdfVNn@7D|w3#dumZlkn=F5*#Vrdg>`B?&SP*o z?DV`~QejH>sLZ6EiID9iF^EZ*dGiwf3d*O{pWX#8vpzourwuj1q^cHP6WEVZv{fXi z4=`nkQo7u<905V=z>fFxTwtU7{aoysz@Pmm$r`-sxW1FtRI*X)PwUAHFz|V22524W z8H*FTfp_(CU6W}37aakstPwpf!M>K??$-VNJ=5_yS5W_f^nk+}JSZxAn^zq#xgy24 zrBtNgorx4z(s&d#>`GSZ2w$#twZ8?nrP;UIKfjFHl+>y@yOVnSxN>|G*mnqWM?Xw$ z7CqjCVZn4cH1<@vZAxD3#wd2JobH;=nKem;`Q3HFP?4f7P>X-KZznADVlVTOW!nun zbr!Ol#GUgR0>yzBum-+{mT!{^1r9uqpHt~uF86}e_iqyCu*KE|L-MIWi+sLr7<&vj zw+TvSP=Y7Mwjod?Q+X0OZ&9h>N45G&RVqg$*3o4{F9(ygh6WCMF!b!CE>@ba^BC9a zJcLR3l?-*)9H;z7d6>3Yi|60%#Q(aWXHy?m)?e)Lpd41xV7RT*rK7LK-B+znBG2z`*(Eio1MkvJjbm;0h8Nxh2O=N9cU?JXa zLe5v!oG%Y+y-C$81DZ0woATrncxRQa!Q7>7qwS(~mE?M|1_`AE)b(Mo1SX2@fBW`tHH5%|P^}2zqI^s-?8iJwDD+ z?j(3>9WEB|e?rcL>>r_m?t*xk{qqsSLAOJx_0hy-|2?kFw@lC z{E*vg4wU%MJVc7LQH_K1iGIU1KNUq^mm~itIodsSq-c6~LF}!ENTDg(^w7NO)T#P_ z#>)Fv`d<}S`lbq!)sf0MAAwaLj$DWsLaBjCu~}AIk{;(&@o!~P2+KHqZbp=>_`eVu zjWbm|T&J<6TFvm-G>WTy_$jmSQCDhIGaJ9VeC8DER7pK^WRsH?A=o>%2;rkqw$ zA1yOq;4R)#Gc3K6^L>r3fpbsbY)ILylf2AqGo%ybihY4RV>0GhFw^KfEAeyB=j>$c z9DZx;Pq}5_rmmqPe|gZe(^SdWP0p5`ZLYsYr9N?(3GW7%Sp~Y%Vm-z9QTaoCP*PuH znD#u*m_jbL*RS4?#VpI{>&90F$pan;Fo0 zvVuL}S4FmcHl)a4DjSWR*+R%}5VEw5uqf=4b|LFfM5Mkig@Os zlU$0(960pQYtDV{m~EZ=B$Mf6+HnT9K4d?)^8mX>V{(>zaFV%xxbMKw*nXrw|LHgd zt#~!Db`6$bZOCb04jf$E1T8HOUXG7^-)5Yc=WIcqcp{G#R=HMHzQvW=tlse29Qg1o zLOFDHPIT0L0FAsDzH{uCY7IDladIa+D_KMBkn=uA!%wMIQP;Dx&Y$gN=9!)J1k@VN zAdk+^2N|oqA;W8OI_l^wco+J`#|U&Td=2}QgQ2)YvNK2qmT-xBpQ#TT>p7L*VCUaa zAF1>h_QB!*5`tt}ayMhAwinKU!C$$|W$|&a1dPX@hyShv;TZ&++f&ys>f;~on+)5Y z%2L_Z#`@6jh4L_P&wbat5Au-uF@8EkPXJ%w|K6M8F>Rn_rO9O-b|v@VWTpQp7k7&8#vPJN zF!>lOyl7)+>LF)N4l!2h7sdHCE%gLJw=6Qq{gfv6Qyuzg%38zPr>L%9`napVn-jFL z->&`h+Bwcnd~v{(x4HUGF)=LUF4-@HdYf?mRU_p1nKpXn0Ow=j15#q9<2=3}szuOJ ze()u(au>>{o8hk=z9YCfkDhJ5 z`m_Tlo3p!*;#_lPw_qjl_aT#0qnwahzW1HIC$NX;!;X`m_pv@=clmbtjB}(JXRwBM zNtBmqS;}suHoE$OU9O9e-lX_Tc)S9O={uZ>E##sL{m=M2UE375=6f(xa`Tn3?;r#Z=)4=to6 zQy^RyPi+q>t5bzVElf*{pUypx_a!;Rx*KN)^&By03Koq1UBmFm64wKqK=+L_#oQTV zv9?=}Z-MkU9miNxVrL&9*8T7YF{La#vn<}QcoSGW8~snmA>R4OF-;qDfO}liF1EDr z=|T?I4qjPf!F+MBm=_wHwA|PenljrkmHQ$GGo@V@GY!uE(rgi6YMM9}r>T833qR>z% zWDb|Wnxx|ZdlIz`+4H#tX8y)y%r-ye`TrQ&?q?iNxaV)uqU3s15OK`+&ELd^x0>lm2YSkqX?v`fV0W55xY|cgi5|mv zzm5RUha=F*wCKuC8d-lUEZ!bIJ4kE=f+qIvS~9H<9RHua%#<0J4_oz2*~Q*Rop(92 z1Fn{Hgqi2s^%f7W_HiBdpA61+=cx$mKdHZoPk}c^(~TYPfY`#6i@Q(?cz}l8{)5eH zb}$ty;d3!z%p2TEWrom+X2Hzu$mdpz9X!5w>f1YH!dO#ZYgcoc;N%HMiXHIo;6Lsa z?4AI_N6ozisGjmtF4Qhx%CcioOB+$qA>EK=moMVcOF*4Kj4 z%)Tg7;4JIK&L)RGqdoT9AyRODhZU#MegvC!mXPFS=F&Z%FC$+-`aUTUd%b`4&D1w4 z?WDZ3*AMQ&k-5z~G6WWyX1hf4A93A))35{lZgA0w9GqUrXCP1K^!(XeD6oe}eCYsF z`XhfR;v_sT2H8Vg8y74Tv^atFs{tm=w&&#BJi=EJPOxag+#%i!?ut(tGRCywc=O3f z7g}G*bK%k*#llKa6V~%=sTrJfVNfgFZvG`aymUONj{NYk`WAXh=5VZ_rQ@M8fhi^N z-Ge^=+mVwI*V zdqwKIL9#z|en-3O)G6Y?7cE3-$lqFy6J(G9mYe8{GB&Meaa!J@7sf{ z04Z%><|1Lx>5jxmvGH82IVHT;Tx;%%%;n}H$02^PNWyV*yM^}I*@5rG@IB1F)ECZ% z91lU_wbL=@Fa}9&CLsgou5p49(!;T}zQwl{-^6xPO!qK-Pt!Byj;*wIA2s7VO;CGa zO)#mQYx^er z1}O$vI6%Uy&Gq20H9fELKjhmjQeX4H%`pPaBs&^3ryL^CF+u}eSSm@4YQwSSE}rGM zuyqGM0pwF(IFw6eMPMLgO?~01+~jZN0Cq~vUVP_yk=mXUn`G;!XXXrqkc_$@bURxeMj!AyKnv0 zDO=a?>N1k}Z!R*Wdn3;^ZY8DQmA_pA-`YAL-=_=|wCLu3X{6XsfGrZNz*>N%nAoKv z!RMQWr_6!#JD%O@*m|#5+s3pxTChr;dNoF-&J(zAk#BvlgM?dM>w72`9>{umo z+!{V)OV+O8bDGvyw?eMpBK&9M#@HLYB_c)OjX4*BAMZzy-&m*0&qcU4UF?viIhBnb zX>P&!4(1x9vR@PP5cU9j=!l<6d(8n)P%74Urv;AqS@aJ2DoFe4FTHtAUY_+DaI9|V zsGn_rYP3J)G#Y50??%_5hwB$AJ^#DjjqXn(7I^Z@!6knkoF&L*qBf-Mo4xRpb$=3} zeEH^}0s87G{+#)cE4_QWYkTDWYcApJcO&1nX!oz*TCmj|`v5(468!vtXb}vMZd4A@vtt%-J8UrO zrI?3r)NuZ5kk;w^j-R^ze43f#>QyAA`Bb9Z>~kC4#ICdDY_o4QJDFK6&P>7Xuitu3 ze+n~)e(_FsT(u8sf?GR^BX&{W z>e_OOOKx@Dc8W`BbuB!_8CqS1r?}KsSK2Abp3G+bgg&#U@F^0zK1$!3PhtN(yxUS(Kl>@-t1%oHEGICqNzPSvkG@+$ukd^0QZdrZqr%`S~|JCr~To zVB{R~bF2I;%FkZ;nbsURZ-7v*3d+$W{K?h>0VJo=1t8^oRO{?G2ETVub@Akk_UXC$YbuH{Z*KkTNx zK3(RQtW$&bW(GWhkxM<*%pAz1YrO(Bfb*gUGD)mC`M+x{&-7e5n)MjZHAbVGLH(fp zyjSfCEUtI2k?X6BumK}Xiu&d8oit{Ap~*D zj%RvKi4k~we^${??flo_TPVeO)+exw$=$kMNWJwaY#2U=jZG8&)=R9V#|d@}uvSOk zS^MS+ru-tTM`LFrPO!A{2VL5pu!WhIeCp8J#ub-vKJfB%oUn^;!)Y~hfGNL(U&G*_ z@xLP+7WK1n4r&_HlbWxMk!jr7R0pw^_*}7lu8XIv9+TfFm<3W~il+Fpa?;*46tibi ze69TC7+o_~`&nO3%;R6}GYD753_`X4liuv5EK&+{f9aa+}*%7u%TjiFh+q;m11%g{G3^)9{fYf6ok(yAAdnue|G;m(FdMp*oK zwI0aOJR6>4Jir+t)LCCMBi_%<2v7gOfhj+I`|XhG{) zh9Qr`H;1Goh2#-@dIDFHe35O)`!@2vhdh5kID_z(FWY+G_6kDtqAcBN1l_Nkryq}(zqr1lJ=zxcKTIO zlannmMNK%f!Ior1+ma|WL`^c(MGt5XWU$zs%jcfSVByKcZrq6He6_!tr@MJwcE*;a zUG8rcd9l_PKc4!U^3(6+XXIz}yAB#csB@Io9X?XRps(n2Cg2dp97=QIV(`V#ZY034 z{+HKXkjMXDu0&ssr4fT1LFp{z?f)qk8yaotl(I@Wk{FWswN5$y>D>xG(Jhb9R`4a` z(uXP({M>Q)xTxS4tN6t5*48NauZ>F|TcY3_RD7b`u2~Ac*nfFFyUG;&6cta@D^RN7 zSB%5QXDay3Dt(9``HJ13;CGEH*SSc+9~g)4s8aCHkHbe7DENqqC+byty@Kyj@riye zbt(8?kHh=sEBI3?KGAQ1=?ebCap|p#75v}FrLR@fbF-9wOY~>$TqS+Sxc=!-`zK9J zPt>bR?axGfLimA#P1H3}R-&zmc#~-~cTV!?^Z2K)k_FEDmG&g^jHO9&bR|fgeR8bqp|aUCN@vd~FH-RMt%1${&098Ysar>8G<;*r z`b_~c;~V#ESwExFRXu%6-JNRe&Trf|W8HlXcild{;dU~E#{6}g{ba`N+rF`R+uaJ> zvPpTfb^WHz4flNGvdC?Cw`u)dbu@$e6u4^(EwTakE$f50-+>6;-E({0mO3(Hz5lj5 zHr3s|{x<*Z$eV~MIc}@lw5e{Jk|XiFp&rRVz3%RYdK7&R2;w$FE=8fZZu4d`qyC<| z?_U3nEn|D^|Lxg;Y;^n+V_v~J5rZD5A_O@$dQ0$10z+AYDpra7D_AFD_#X)>!Yao` zZ;APvz}WCGHvbmZDZkpH=FgX7qqp(-XXDkE_>I&=`3G62ocN%Mfc_$1S`|_qV(fK2 zBD4<@`MX#rV)XZ8Wk8&2h9pF3+Y|Y*zbs#F-03_?V`~1Gn!hwrag~Z%EgUgbu07-O8*`oV3uCVG{uf3{ee_D? zOJG{?Ft+@}?;O87UCB3IT#m2*<7)my|HstdNsg)c-^0Go*vmRLg6D$>w4_A-SGQNn zDPG;Kl>h#?_Kz?BxpDaqhLrpVLrQ+3SSB}eON?IvaSRWXRTFCkN&If`_m%wP(~pn8 zj=YrB68ZINe*Hh0|1IRDB_;A3)%?bPGXHOom-1dBf8uwKc{P7bX~qbDChDKygWr!U zzyAkyz`z3i!B@9GLFe4K{E6S4CdZWg&nE^}raC%*68SHT%ik4I%I}IO`QN-z&8PzF z